Подпрограммы 33 Функции, определяемые пользователем 34 Работа со строковыми типами данных 36 Оператор line input 36

Вид материалаСправочник

Содержание


Команды в языке QBASIC
Оператор комментариев
Оператор присваивания
Оператор ввода данных Динамический ввод данных
Команда: INPUT"Введите коэффициент и код режима",B,KR$ Экран
Команда: INPUT"Год рождения";GR$ Экран
Команда: INPUT"Введите № школы, класс, фамилию";N,K,F$ Экран
Оператор вывода данных
Команда: PRINT"Пра";"бабушка" Экран
Команда: PRINT"Мне",K,"лет" Экран
Статический ввод данных
Команды управления ходом выполнения программы
Безусловная передача управления
Условная передача управления
Линейный формат
Линейный формат
Формат записи вложенных условных операторов
Множественный выбор (SELECT CASE)
Работа с датой и временем
Функция TIME
...
Полное содержание
Подобный материал:
1   2   3   4   5   6   7   8

Команды в языке QBASIC



Программа, написанная на любом языке программирования, представляет собой набор инструкций, описывающий процесс выполнения алгоритма задачи. Инструкции записываются по определенным правилам, предусмотренным требованиями языка. Инструкции исходной программы называются командами или операторами.

Оператор комментариев



Любую команду в программе можно снабдить поясняющим текстом - комментарием. Комментарии облегчают понимание текста программы. Комментарии можно записать двумя способами:
  1. REM произвольный текст
  2. ' произвольный текст

На ход вычислений команда REM никакого влияния не оказывает.

Например:

REM вычисление функции

' вычисление функции

Оператор присваивания


Формат:

Имя переменной = выражение

Эта команда выполняется в два шага:
  1. вычисляется значение арифметического или символьного выражения, указанного в правой части команды;
  2. это значение присваивается переменной, записанной в левой части команды.

Например:

A = Y+X/Z²

Оператор ввода данных

Динамический ввод данных


Формат:

INPUT "Сообщение", список переменных

При выполнении команды INPUT вычисления приостанавливаются и на экран дисплея выводится поясняющее сообщение, если вы его написали. В списке переменных через запятую указываются имена переменных, которые принимают вводимые данные.

Например:

Команда: INPUT"Введите коэффициент и код режима",B,KR$

Экран: Введите коэффициент и код режима

Курсор устанавливается следом за последним символом выведенного текста, и программа ожидает ввода данных. Вы должны через запятую набрать все данные и нажать клавишу {Enter}.

Если строка символов замкнута не запятой, а точкой с запятой, INPUT выводит следом за текстом символ "?" и устанавливает курсор через пробел после "?".

Например:

Команда: INPUT"Год рождения";GR$

Экран: Год рождения?_

Сообщение в INPUT можно опустить. Тогда на экран будет просто выдан знак вопроса.

Тип и количество вводимых данных должны соответствовать типу и количеству описанных переменных.

Например:

Команда: INPUT"Введите № школы, класс, фамилию";N,K,F$

Экран: Введите № школы, класс, фамилию? 2,10,Петров

Виды ошибок:
  1. Тип данных не совпадает с типом переменных.
  2. Ввели слишком много данных.



Оператор вывода данных


Формат:

PRINT список_выражений

В поле операндов через запятую или через точку с запятой перечисляются выражения, значения которых надо вывести. Значения данных выводятся с текущей позиции курсора.

1. Плотный вывод - разделитель ";"

Например:

a) Команда: PRINT"Мне";K;"лет"

Экран: Мне 16 лет (если К=16)

Перед значением числа выводится либо пробел, либо знак "минус".

b) Команда: PRINT"Пра";"бабушка"

Экран: Прабабушка

2. Зональный вывод - разделитель ","

Если указана запятая, QBASIC выводит данные по зонам, каждая зона - 14 позиций.

Например:

Команда: PRINT"Мне",K,"лет"

Экран: Мне 16 лет (если К=16)

3. Вывод в разных строках

Например:

Команда: PRINT "Зарплата"

PRINT ZP;"руб"

Экран: Зарплата

2000 руб

Пример. Даны катет прямоугольного треугольника и прилежащий угол. Определить площадь треугольника и гипотенузу. Длину и угол в радианах ввести динамически. Результат вычисления вывести в разных зонах.

INPUT"Введите катет прямоугольного треугольника и прилежащий угол";A,U

C=A/COS(U) 'Вычисление гипотенузы

B=SQR(C2-A2) 'Вычисление катета

S= 0.5*B*A 'Вычисление площади треугольника

PRINT"C=";C,"S=";S

End

Для самостоятельного решения:
  1. Кольцо задано радиусами двух окружностей. Вычислить площадь кольца. Данные задать динамически. Результат вычисления вывести в разных строках.
  2. Даны числа x, y, z. Вычислить s=x2+y/(z2+y2/(x+y)3). Данные ввести динамически.



Статический ввод данных



Если программа постоянно работает с некоторым набором числовых или символьных констант, то можно объявить такой набор блоком данных:

DATA список констант

В списке констант через запятую указываются значения констант, например:

10 DATA 5,25,19.6,30,12,"ABC"

20 DATA "BASIC","Pascal",25.9

В программе можно записать произвольное число операторов DATA. В блок данных по порядку включаются все константы и в памяти создаётся специальный указатель блока данных. Во время работы программы этот указатель содержит порядковый номер константы в блоке данных. При запуске программы указатель показывает на первую константу из блока данных.

Для присвоения значений констант из блока данных переменным используется оператор READ:

READ список переменных

В списке переменных через запятую указываются имена переменных, которым присваиваются значения констант из блока данных. Типы переменных в списке READ должны соответствовать типам констант из блока данных. Например:

READ a%, m%, t

Переменным a%, m%, t присвоятся значения 5, 25 и 19.6. Указатель перемещается на 4-ую константу. Оператор

READ c, sc%, a$

Присвоит переменным c, sc%, a$ значения 30, 12, "ABC" и указатель переместится на "BASIC" и т.д.

Как несколько раз прочитать одни и те же данные из блока данных? Для восстановления указателя блока данных используется оператор RESTORE:

RESTORE номер строки или метка

где номер строки должен указывать на оператор DATA.

Если не указан номер строки, следующий после RESTORE, READ начнет чтение с первой константы блока данных. Например:

RESTORE

READ vk%, s%

RESTORE 20

READ z1$, z2$

vk%, s% присвоятся значения 5 и 25, а переменным z1$, z2$ - значения "BASIC" и "Pascal".

Блок данных удобен в тех случаях, когда несколько раз используется одна и та же последовательность констант.

Пример. Составить программу нахождения высоты равнобедренной трапеции, у которой основания 5м и 11м, а боковая сторона 4м. Данные ввести статически.

DATA 5,11,4

READ BC,AD,AB

AE=(AD-BC)/2 'Основание треугольника

HT=SQR(AB2-AE2)

PRINT"Высота трапеции =";HT

END


Команды управления ходом выполнения программы



Очень часто, в зависимости от некоторых условий, приходится изменять последовательность выполнения команд действия.

Команды управления ходом выполнения программы делятся на три группы:
  1. Команды безусловного перехода;
  2. Команды условного перехода;
  3. Команды организации циклов.



Безусловная передача управления



Формат:

GOTO номер строки или метка

Управление передается команде, помеченной номером строки или меткой.

Например:

GOTO W



W: PRINT"Решение получено"

Примечание.В среде программистов употребление GOTO принято считать дурным тоном. Чрезмерное пристрастие к GOTO запутывает программу.

Условная передача управления



Конструкцию условной передачи управления можно записать в одном из двух форматов - блочном (в несколько строк) или линейном (в одной строке).

Линейный формат:

IF логическое выражение THEN <блок команд 1> [ELSE <блок команд 2>]

Блочный формат:

IF логическое выражение THEN

<блок команд 1>

[ELSE

<блок команд 2>]

END IF

Выполнение. Если логическое выражение принимает значение "Истина", выполняется блок команд 1, если логическое выражение - "Ложь", выполняется блок команд 2. Если ELSE отсутствует, то выполняется команда, стоящая за END IF.

Пример1

INPUT "Сколько будет 2x2 ",X

IF X=4 THEN PRINT "Правильно" ELSE PRINT "Не правильно"

END

Пример2

Вычислить значение функции Y




Линейный формат:

INPUT "Введите значение аргумента Х ",X

IF X<=1 THEN Y=X-1/2*X2+3 ELSE Y=1.05*(X-1)2

PRINT "При значении Х=";X;" функция Y=";Y

END

Блочный формат:

INPUT "Введите значение аргумента Х ",X

IF X<=1 THEN

Y=X-1/2*X2+3

ELSE

Y=1.05*(X-1)2

END IF

PRINT "При значении Х=";X;" функция Y=";Y

END

Возможна вложенность одного условного оператора в другой.

Формат записи вложенных условных операторов



IF логическое выражение THEN

<блок команд 1>

[ELSEIF логическое выражение THEN

<блок команд 2>]

……………………..

[ELSE

<блок команд n>]

END IF

Пример3

Составить программу вычисления функции:




1 вариант

IF Z<0 THEN

F=Z-5/Z2

ELSEIF Z<=1 THEN

F=Z2-1

ELSE

F=1/(1-Z)

ENDIF

PRINT "F=";F

END


2 вариант

IF Z<0 THEN F=Z-5/Z2

IF Z<=1 AND Z>=0 THEN F=Z2-1

IF Z>1 THEN F=1/(1-Z)

PRINT "F=";F

END


Для самостоятельного решения:

Составить программу определения кислотности раствора с помощью лакмусовой бумажки. Напомним, что, если бумажка окрашивается в красный цвет - раствор кислотный; синий - раствор щелочной; не меняет цвет - раствор нейтральный.

Множественный выбор (SELECT CASE)



Формат

SELECT CASE арифм_выражение или симв_выражение

CASE условие 1

<блок команд 1>

CASE условие 2

<блок команд 2>

……………….

[CASE ELSE

<блок команд n>]

END SELECT

Условие оператора CASE можно указать в одном из трех форматов:
  1. CASE константа 1, константа 2, …
  2. CASE IS знак_отношения константа
  3. CASE константа 1 TO константа 2

Константы в условии должны быть того же типа, что и выражение в SELECT CASE.

Алгоритм множественного выбора заключается в следующем:
  • вычисляется значение выражения, записанного в SELECT CASE.
  • проверяется, удовлетворяет ли это значение одному из указанных в CASE условий
  • если значение удовлетворяет какому-то условию, выполняется блок команд, следующий за данным CASE.

Пример

INPUT "Введите значение ",A

SELECT CASE A

CASE 1,5

PRINT "А равно 1 или 5"

CASE IS >5

PRINT "А больше 5"

CASE -8 TO 2.5

PRINT "А не меньше -8, но не больше 2.5"

CASE else

PRINT "Ни одно условие не выполняется"

END SELECT

После выполнения того или иного блока команд управление передается команде, следующей за END SELECT.

Работа с датой и временем


Функция DATE$

Выдается текущая дата, зарегистрированная в компьютере. Формат даты: ММ-ДД-ГГГГ.

Например

PRINT DATE$

Выведется текущая дата: 15-09-2000

Функция TIME$

Выдается текущее системное время, зарегистрированное в компьютере. Формат времени: ЧЧ:ММ:СС (часы, минуты, секунды).

Например

PRINT TIME$ , на экране выдается текущее время.

Циклы



В языке BASIC предусмотрено два основных способа организации циклов:
  • повторение блока команд заданное количество (число) раз (цикл со счетчиком);
  • циклическое повторение блока команд, пока выполняется (или не выполняется) некоторое условие.

Цикл со счетчиком (FOR…NEXT)



Этот оператор используется, когда некоторый блок команд необходимо выполнить заданное число раз.

Формат

FOR счетчик=E1 TO E2 [STEP E3]

Блок команд

NEXT счетчик

счетчик (параметр)- числовая переменная;

E1 - начальное значение счетчика;

E2 - конечное значение счетчика;

E3 - шаг изменения счетчика. По умолчанию этот шаг равен 1;

Блок команд - набор операторов, предназначенных для повторения.

Выполнение. Если E3 >0, то цикл продолжается все время, пока счетчик < или = E2. Если E3 <0, то цикл продолжается все время, пока счетчик > или = E2.

Примеры
  1. FOR I=1 TO 5

PRINT I;

NEXT I

Результат: 1 2 3 4 5

Тело цикла будет выполняться 5 раз. Шаг изменения счетчика по умолчанию равен 1.
  1. FOR I=1 TO 5 STEP 2

PRINT I;

NEXT I

Результат: 1 3 5
  1. Обратный цикл

FOR I=5 TO 1 STEP -1

PRINT I;

NEXT I

Результат: 5 4 3 2 1
  1. FOR I=5 TO 1

PRINT I;

NEXT I

Проверка выхода из цикла производится в начале цикла, поэтому цикл не выполнится ни разу.

Ограничения при использовании оператора цикла FOR … NEXT:
  1. Не изменяйте значение параметра цикла внутри цикла

FOR I=1 TO 5

I=I+1 ' НЕЛЬЗЯ!

NEXT I
  1. Никогда не передавайте управление внутрь цикла, это может привести к непредсказуемым результатам.

GOTO 10 ' НЕЛЬЗЯ!

FOR I=1 TO 5

10 INPUT A

S=S+A

NEXT I

Досрочный выход из цикла

Для цикла FOR предусмотрена возможность безусловного выхода из цикла ( до его завершения). Управление передается команде, следующей за NEXT.

Формат команды выхода:

EXIT FOR

Например

FOR I=1 TO 10

INPUT "Введите значение параметра";F

IF F=100 THEN EXIT FOR

S=S+F

NEXT I

PRINT "Значения "


Подсчет:

Сумма

Количество

Произведение

S=0

K=0

P=1

S=S+A

K=K+1

P=P*A

Пример1. Подсчитать сумму 10 значений переменной A.

S=0

FOR I=1 TO 10

INPUT "Введите значение переменной";A

S=S+A 'Подсчет суммы значений переменной A

NEXT I

PRINT "Сумма ="; S

Пример 2. Подсчитать количество положительных чисел и произведение отрицательных чисел из N введенных.

INPUT “Введите количество значений”;N

К=0

P=1

FOR I=1 TO N

INPUT "Введите значение переменной";A

IF A>0 THEN K=K+1

IF A<0 THEN P=P*A

NEXT I

PRINT"Количество положительных чисел =";K

PRINT"Произведение отрицательных чисел =";P

Домашнее задание:
  1. Подсчитать сумму положительных элементов, не превышающих значения 10 из N введенных.
  2. Подсчитать количество мальчиков, рост которых превышает 165 см и количество девочек, рост которых не превышает 165.

Практическое занятие

Пример 1. Рассчитать и вывести на печать значения функции Y=5/X при изменении аргумента X от -5 до 5 с шагом 2.

FOR X=-5 TO 5 STEP 2

Y= 5/X

PRINT "X=";X, "Y=";Y

NEXT X

Пример 2. Дан ряд чисел 100, 55, -1000, 20, 5, 8, 33, 48. Найти количество пар чисел квадрат разности которых <100.

DATA 100, 55, -1000, 20, 5, 8, 33, 48

K=0

FOR I=1 TO 8 STEP 2

READ A,B

IF (A-B)2 < 100 THEN K=K+1

NEXT I

PRINT "Количество пар чисел квадрат разности которых <100 =";K

Пример 3. Найти максимальное значение из N введенных. Вывести максимальное значение и его индекс.

INPUT "Введите количество значений";N

INPUT "Введите первое значение";A

MAX=A : IN=1

FOR I=2 TO N

PRINT "Введите "; I; "-ое значение"

INPUT A

IF A>MAX THEN MAX=A : IN=I

NEXT I

PRINT "Максимальное значение =";MAX

PRINT “Индекс максимального значения =”; IN

Домашнее задание:
  1. Определить максимальное значение среди положительных элементов из N введенных.
  2. Подсчитать значения функции f(x)=1-х2 на заданном интервале [-0,5; 0,5] с шагом 0,1.



Цикл WHILE … WEND


Формат

WHILE логическое выражение

Блок команд

WEND

Данный оператор позволяет выполнять блок команд до тех пор, пока значение логического выражения "Истина". После завершения цикла управление передается команде, следующей за WEND. Например:

WHILE PAS$<>"Петуния"

INPUT"Введите пароль";PAS$

WEND

PRINT"Добро пожаловать"

Этот цикл будет работать до тех пор, пока не будет введен правильный пароль.

В блоке команд должен присутствовать оператор, влияющий на значение логического выражения.

Например:
  1. I=0

WHILE I<=10

I=I+1 'оператор, который влияет на значение логического выражения

WEND

PRINT I

  1. Пример бесконечного цикла

I=0

WHILE I<=10

INPUT A

S=S+A

WEND

PRINT S

В блоке команд нет оператора, который бы изменял значение I.

Если при первой проверке условия окажется, что значение логического выражения - "Ложь", блок команд не будет выполнен ни разу. Например:

I=10

WHILE I<10

I=I+1

WEND

Пример 1. Вычислить сумму четных чисел в интервале от 1 до 10 включительно.

' I - четные числа

' Sum - сумма четных чисел

I=2

Sum=0

WHILE I<=10

Sum=Sum+I

I=I+2

WEND

PRINT"Сумма четных чисел в интервале от 0 до 10 =";Sum

Пример 2. В подъезде N ступенек. Сколько шагов будет сделано, если шагать через 3 ступеньки.

' KS - количество ступенек

' KH - количество шагов

INPUT "Введите количество ступенек";N

KS=0

KH=0

WHILE KS<=N

KS=KS+3

KH=KH+1

WEND

PRINT"Количество шагов=";KH

Пример 3. Известна сумма номеров страниц. Определить номер страницы.

' NS - номер страницы

' S - сумма номеров страниц

INPUT"Введите сумму номеров страниц";Q

NS=0

S=0

WHILE S
NS=NS+1

S=S+NS

WEND

PRINT"Номер страницы = ";NS


Домашнее задание:

Вычислить значения членов последовательности K=3i, где i=1, 3, 5, ..., не превышающих заданного числа N.


Вложенные циклы


Можно организовать весьма сложные повторения, используя циклы внутри циклов (Вложенные циклы).

Формат:

FOR



FOR ---------

 тело внутреннего цикла

NEXT --------



NEXT

Пример 1. Напечатать таблицу умножения до 12 в виде

1*2=2

2*2=4 и т.д.

FOR I=2 TO 12

FOR J=1 TO 12

PRINT J;”*”;I;”=”;J*I

NEXT J

NEXT I

Пример 2. Напечатать таблицу умножения до 5 в виде таблицы.

1 2 3 4 5

2 4 6 8 10 и т.д.

FOR I=2 TO 12

FOR J=1 TO 12

PRINT J*I;

NEXT J

PRINT

NEXT I

Пример 3. Напечатать все четырехзначные натуральные числа в десятичной записи которых нет двух одинаковых цифр.

FOR T=1 TO 9 ‘

FOR S=0 TO 9

FOR D=0 TO 9

FOR E=0 TO 9

IF T<>S AND T<>D AND T<>E AND S<>D AND S<>E AND D<>E THEN

M=T*1000+S*100+D*10+E

PRINT M,

ENDIF

NEXT E

NEXT D

NEXT S

NEXT T

Задание

Найти и напечатать все трехзначные числа сумма кубов которых равна самому числу. Например: 407=43+03+73=64+0+343