Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Операторы READ, DATА, RESTORE





Они организуют блок данных, считываемых в ходе выполнения программы, имеют формат:

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

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

RESTORE

Списки вводятся через ",".

Перед выполнением программы QB просматривает все операторы DATA и создаёт объединённый блок данных, в котором содержатся все данные из всех операторов DATA. При встрече первого оператора READ его переменным последовательно присваиваются значения из блока данных, следующий оператор READ своим переменным присваивает следующие данные из DATA и так далее. Когда данные в DATA закончатся, то следующей переменной READ снова присваивается первое значение из DATA и так далее. Оператор RESTORE возвращает точку считывания на начало оператора DATA, на его первое данное.

Пример:

READ A,B$,C

DATA 3.5,Gruppa,81,15,1.2E+14

READ D,E,F

RESTORE

READ K,H$,G,M

DATA 87,Sigma,1090

Результат выполнения программы:

Первый оператор READ присвоит A = 3.5, B$ = Gruppa, C = 81,

второй - присвоит D = 15, E = 1.2Е+14, F = 87,затем RESTORE переведёт точку считывания на начало блока данных и следующий READприсвоитпеременным K = 3.5, H$ = Gruppa, G = 81, M = 15.

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

Служат для вывода данных на дисплей. В QB используются операторы

Print <список> и

Print using <список форматов> <список вывода>,

где:

<список форматов> - задаёт звёздочками "*" количество знаков до и после запятой.

Пустой оператор PRINT, без списка, выводит пустую строку.

Вместо слова RRINT можно вводит знак вопроса "?", при нажатии клавиши [Enter] он заменится на PRINT автоматически.

Строка вывода символов состоит из 5 зон по 14 позиций в каждой, т.е. для каждого элемента в строке отведено 14 позиций. Шестой элемент выводится в первой позиции новой строки.

Пример:

Print А: Print "А=";А

Print

Print "А+В="; А+В

Print using "**.*"; А,В,С

При А = 3,54, В = 4, 02 и С = 24,152 на экран выйдет:

3.54 А=3.54

А+В=7.56

3.5 4.0 24.1

Разделительные знаки

· знак ": " является разделителем операторов, он действует так, как будто оператор за двоеточием записан с новой строки;

· знак "." – десятичная запятая;

· знаки ", " и "; " – разделители для любых целей;

· кавычки "" – вывод текста, заключённого между кавычками,

· апостроф " ' " – вывод комментария;

· круглые скобки "(,)" – аргумент стандартных функций;

· квадратные скобки"[,]" – аргумент массивов

Составим программу по алгоритму задачи 1 (рис. 3)

CLS ' оператор clear screen – очистка экрана

а=2.15: b=1 ' присвоение переменным а и b их значений

INPUT x ' ввод значения переменной х

у = a*x^2– b*cos(x+PI*34/180) ' вычисление значения функции у

print "y=";y ' вывод значения у на дисплей с текстом "у="

END ' конец программы

Рисунок 3 Линейная программа с оператором ввода INPUT и

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

В программе для ввода использованы операторы присваивания а=2.15, b = 1 и оператор ввода данных INPUT x.

Если входных данных много и требуется их повторное считывание, то вместо операторов присваивания удобнее применять операторы READ, DATА, RESTORE. В данном случае повторное считывание не требуется, поэтому составим ту же программу с использованием только операторов READ и DATA (рис. 4).

CLS ' очистка экрана

DATA 2.15, 1 ' ввод значений блока данных

READ a,b ' присвоение a и b их значений из блока DATA

INPUT x ' ввод значения переменной х

у = a*x^2– b*cos(x+PI*34/180) ' вычисление значения функции у

print "y=";y ' вывод значения у на дисплей с текстом "у="

END ' конец программы

Рисунок 4 Линейная программа с операторами

ввода INPUT, READ и DATA

 

Операторы условного и безусловного перехода.

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

Оператор безусловного перехода.

Общий вид оператора GOTO (идти к)

GOTO [n]

где

n – метка, к которой осуществляется безусловный переход,

Этот оператор передает управление первому оператору в строке с меткой n.

Условные операторы.

Условный оператор позволяет изменить порядок выполнения операторов в программе в зависимости от какого-либо условия.

Условный оператор имеет три структуры:

IF L THEN n

где

L – логическое выражение;

n – метка оператора, к которому осуществляется переход, если огиическое выражение имеет значение "истинно". Если логическое выражение имеет значение "ложно", то выполняется оператор, расположенный в следующей строке.

IF L THEN S

где

S – последовательность, состоящая из одного или нескольких операторов, записанных через символ ": ".

IF L THEN S1 ELZE S2

где

S1 и S2 – последовательности, состоящие из одного или нескольких операторов, записанных через символ ": ".

Порядок выполнения структурного условного оператора:

§ определяется значение логического выражения;

§ если оно имеет значение "истинно", то выполняется последовательность операторов, записанных за THEN до ключевого слова ELSE;

§ если логическое выражение имеет значение "ложно", то выполняются операторы, записанные за ELSE до конца строки.

После выполнения любой последовательности осуществляется переход к следующей строке (если в этих последовательностях нет других управляющих операторов).

Метка может содержать любые латинские символы (кроме служебных - $,! И т.п.), но начинаться обязательно должна с буквы, например, М12, m, alpha14, beta32, metka2, t, A и др. В строке, которой передаётся управление после метки обязательно ставится знак ":", например:

tochka2: …

GOTO tochka2

IF…THEN tochka2

Программы ветвления

Пример 1

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

, если х = 0

y =

1 в остальных случаях

 

Составим схему алгоритма (рис. 1):

Блок 1 – начало алгоритма.

Блок 2 - ввод численного значения переменной Х.

Блок 3 - проверяется условие х=0. Если это условие выполняется, то дальнейшее вычисление пойдет по выходу "да" и в блоке 4 вычисляется -

значение функции у=(sin (Х)/Х. Если условие Х=0 не выполняется, т.е.

значение переменной Х отлично от нуля, то дальнейшее вычисление пойдет по выходу "нет" из логического блока 2 и в блоке 5 вычисляется значение функции У=1.

В блоке 6 предусмотрен вывод значений переменных У, Х.

 

Схема алгоритма Программa, вариант 1

Начало
Х = 0
Ввод Х
Y=(sin X)/X
Y=1
Вывод Y,X
Конец
CLS

INPUT X

да IF X=0 THEN Y=SIN(X)/X ELSE Y=1

PRINT "Y=".Y,"X=".X

END

или вариант 2:

CLS

INPUT X

IF X=0 THEN Y= SIN(X)/X: GOTO М1

Y=1

M1: PRINT "Y=";Y,"X=”;X

END

 

Рисунок 1 Cхема алгоритма

Работа программы (построчно), вариант 1:

Очистка экрана.

Оператором INPUT X вводится значение аргумента Х.

Проверяется условие – если(IF) Х = 0, то(THEN) У вычисляется по формуле Y=SIN(X)/X, иначе (ELZE) У = 1.

Выводятся на экран значения У и Х.

Конец программы.

Вариант 2:

Очистка экрана.

Ввод Х.

Проверка условия – если Х=0, тогда У вычисляется по формуле Y=SIN(X)/X и оператором безусловного перехода GOTO управление передаётся метке М1, т.е. печати У и Х. Если этого перехода не сделать, то следующим оператором параметр Y переопределится, т.е.ему присвоится другое значение (Y =1), а вычисленное значение Y потеряется.

Если условие не выполняется, то программа переходит к следующему оператору У=1, к печати Y и Х и программа заканчивается (Конец)..

 

Пример 2

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

y = max {a,min{b,c}}

 

Словесный алгоритм:

По условию задачи надо найти сначала наименьшую из переменных b и с, а потом сравнить её на максимум с величиной а и результат присвоить переменной у.

Программа:

CLS

INPUT"ВВЕСТИ a,b,c";a,b,c

IF b<c THEN u=b ELSE u=c

IF a>u THEN y=a ELSE y=u

PRINT"y="; у

END

 

Работа программы (построчно):

Очистка экрана.

Ввод значений a,b,c, через запятую.

Если b<c, то новой переменной u присваивается значение b, если нет, то значение с. Таким образом, вместо b и с теперь появилась величина u, причём равная наименьшему из b и с. Затем эта u сравнивается с переменной а на максимум, т.е. находится наибольшее значение между переменными a и u. Оно присваивается переменной у, которое и выводится на печать.

 

Пример 3

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

y = max {a,b,c}

Программа:

CLS

INPUT"введите a,b,c"; a,b,c

IF a > b AND a > c THEN y = a

IF b > a AND b > c THEN y = b

IF c > a AND c > b THEN y = c

PRINT"y="; у

END

Описание программы:

для нахождения максимума последовательно сравниваются все переменные:

- если а больше b и а больше с, то у = а,

- если b больше а и b больше с, то у = b,

- если с больше а и с больше b, то у = а.

Затем значение у распечатывается и программа заканчивается.

 

Пример 4

Составить программу и вывести на печать значение функ-

ции у.

х + а, если х=10;

у = х - cz, если x<10;

x - a, если x>10.

 

Программа:

Вариант 1 Вариант 2

 

CLS INPUT a,x,c,z IF x = 10 THEN y =x + a IF x > 10 THEN y =x – c*z IF x < 10 THEN y = x - a PRINT"y="; у END CLS INPUT a,x,c,z IF x = 10 THEN y =x + a IF x > 10 THEN y =x – c*z ELSE y = x - a PRINT"y="; у END

 

В варианте №2 для второго условия можно использовать оператор IF…THEN…ELSE, т.к. после перебора вариантов х=10 и х>10 не осталось никаких вариантов, кроме х<10.

 

Операторы цикла QB

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

Арифметическими циклами называются циклы, число повторений которых известно или его можно определить. В зависимости от постановки задачи различают циклы с известным и неизвестным числом повторений (циклы с неизвестным числом повторений рассматриваются в лабораторной работе №3 "Итерационные циклы").

Циклы с известным числом повторений – это арифметические циклы, которые могут быть организованы в QB четырьмя способами:

1 С помощью условного оператора IF…THEN.

2 Оператором цикла FOR…NEXT.

3 Оператором цикла WHILE…WEND.

4 Оператором цикла DO…LOOP

Если c помощью оператора IF…THEN можно выполнять различные вычислительные процессы (ветвление программы, нахождение максимума и минимума переменных, проверка условий и др.), то операторы цикла FOR… NEXT, WHILE…WEND, DO…LOOP предназначены в среде QBASIC только для организации циклических вычислений.

Оператор FOR…NEXT имеет формат:

FOR V=A1 TO A2 STEP ∆А …(тело цикла)…NEXT V,

(для) (к) (шаг) (следующий)

где

V – имя управляющей переменной цикла;

A1 - начальное значение V;

A2 – конечное значение V;

∆A – величина приращения V.

Тело цикла - это последовательность операторов, которые выполняются многократно (в цикле).

Этот оператор удобен тем, что в одной строке указываются и начальное А1, и конечное А2 значения, и шаг приращения ∆А. Если STEP ∆А в операторе не указан, то шаг ∆А автоматически принимается равным 1.

Оператор WHILE…WEND имеет формат:

WHILE L<=A2 …(тело цикла)……WEND.

While переводится как "пока", а WEND – это сокращение слов while end, т.е. "конец while"

Оператор DO…LOOP имеет формат:

DO…(тело цикла)…LOOP UNTIL V>A2

(делать) (петля) (до)

или DO UNTIL V>A2 …(тело цикла)…LOOP

 

Цикл WHILE…WEND является циклом "Пока", а цикл DO…LOOP – циклом "До".

В цикле "Пока" (while) вычисления повторяются, пока его условие выполняется. Особенность цикла в том, что проверка условия производится в начале цикла. Если при первой проверке условие не выполняется, то тело цикла не будет выполнено ни разу.

В цикле "До" (until) вычисления повторяются до тех пор, пока выполняется его условие. Особенность этого цикла заключается в том, что он всегда выполняется хотя бы один раз, так как первая проверка условия происходит в конце цикла, т.е. после того, как тело цикла выполнено хотя бы один раз.

Количество повторений цикла определяется по формуле

Примеры программ с циклами

Пример 1. Вычислить и вывести на печать значения функции y = x+ex sin x, если аргумент х изменяется от -1 до 2 с шагом 0,1.

Составим схему алгоритма (рис. 1).

Она работает следующим образом: в блоке 2 аргументу х присваивается начальное значение, равное -1, в блоке 3 вычисляется значение функции у при х = -1, в блоке 4 значения у и х выводится на экран. В блоке 5 аргумент получает приращение, т.е. увеличивается на 0,5, в блоке 6 выполняется проверка на достижения аргументом конечного значения, равного 2. Если аргумент х ещё не превысил конечное значение, то

 

управление передаётся блоку 3, в котором вычисляется новое значение функции у при новом значении х. Если значение х становится больше, чем 2, то вычисления прекращаются, конец программы.

По этому алгоритму можно составить четыре варианта программы.

 

 

2 х = -1
3 y = х+ехsin x
4 Вывод у,х
5 х = х + 0,5
6 x <=2
1 Начало
7 Конец


Схема алгоритма:

 

Рисунок 1 Схема алгоритма

циклической программы

Программа, вариант 1

REM Цикл с оператором IF…THEN

CLS ' очистка экрана

х =-1 ' присвоение х начального значения

m: у =х + EXP(х)*SIN(х) ' вычисление у при хнач

PRINT "у =";у, "х ="; х ' вывод на экран у и х

х =х + 0.1 ' увеличение х на шаг 0,1

IF х <= 2 THEN m ' если х ещё меньше или равен хкон, то

END ' управление передаётся по метке m, если

' нет, то следующему оператору – END

В программе варианта 1 для организации цикла использован оператор условного перехода IF…THEN (что указано в комментарии – оператор REM).

Действие каждого оператора указано в комментариях под знаком апострофа (это невыполняемая часть программы, которая записывается только для программиста). Возврат в начало цикла организован передачей управления с помощью оператора условного перехода по метке m.

Вариант 2

REM Цикл с оператором FOR…NEXT

CLS ' очистка экрана

FOR х =-1 TO 2 STEP.2 ' задание параметров цикла: хнач, хкон, шага ∆х

у =х + EXP(х)*SIN(х) ' вычисление у в цикле

PRINT "у =";у, "х ="; х ' вывод на экран у и х

NEXT x ' возврат к началу цикла

END

Описание программы:

в операторе цикла FOR…задаётся первое значении х=-1, следующим оператором вычисляется значение функции у, затем оно распечатывается на экране (оператор PRINT) вместе со значением х, потом оператор NEXT x передаёт управление назад, оператору FOR…, где к величине х прибавляется шаг, т.е число 0,2, новое значение х составляет -0,8, в следующем операторе вычисляется значение у при х=-0,8, распечатывается, вновь производится возврат в оператор FOR…, вновь увеличивается аргумент х на 0,2 и становится равным 0,6 и т.д. Последний раз цикл выполнится при х=2, а потом, т.к. заданный интервал х[-1;2] уже просчитан, программа переходит к следующему оператору, т.е.END – конец программы.

Вариант 3

REM Цикл с оператором WHILE…WEND

CLS ' очистка экрана

х = -1 ' задание начального значения: хнач = -1

WHILE x <= 2 ' проверка условия: пока х ещё <= хкон = 2

у =х + EXP(х)*SIN(х) ' вычисление у в цикле

PRINT "у =";у, "х ="; х ' вывод на экран у и х

х = х + 0.2 ' увеличение х на шаг 0.2

WEND ' возврат к началу цикла - WHILE…

END

Описание программы:

Начальное значение х = -1 задаётся до тела цикла WHILE…WEND,

затем в операторе WHILE проверяется достижение конца цикла х = 2. Поскольку х = -1 ещё меньше, чем 2, то программа переходит к следующему оператору, где вычисляется значение у при первом х = -1. затем оно и значение х распечатываются (на экране), потом значение х увеличивается на шаг (х = х + 0.1) и оператор WEND передаёт управление оператору WHILE, где снова проверяется, достигло ли новое значение х = -0,8 значения 2. Т.к. -0,8 ещё меньше 2, то вычисляется у при этом значении х = -0,8,распечатывается вместе с х, снова х увеличивается на шаг 0,2, затем WEND возвращает управление началу цикла, где WEND вновь проверяет х = -0,6 на достижение хкон = 2 и т.д.

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

Вариант 4

REM Цикл с оператором DO…LOOP

CLS ' очистка экрана

х = -1 ' задание начального значения: хнач = -1

DO

у =х + EXP(х)*SIN(х) ' вычисление у в цикле

PRINT "у =";у, "х ="; х ' вывод на экран у и х

х = х + 0.2 ' увеличение х на шаг 0.2

LOOP UNTIL x > 2 ' проверка превышения конца цикла х > 2

END

Описание программы:

До тела цикла вводится хнач= -1, потом следует оператор "Делать" – что именно: вычислять у, распечатывать его и аргумент х. Затем идёт проверка: делать петлю до того, как величина х станет больше хкон. В условии проверки должен стоять знак ">", чтобы цикл был просчитан и при последнем значении х = хкон. Если записать LOOP UNTIL x = 2, то последним значением х, которое будет до х = 2, является х = 1,8, т.е. при х = хкон= 2 цикл просчитан не будет. Если записать LOOP UNTIL x < 2, то все значения х окажутся меньше хкон и цикл просчитается только один раз, при х = хнач= -1, затем он увеличится на шаг и станет равным -0,8, но это значение является значением до х = 2, поэтому "петля" на слово DO делаться не будет. Поэтому, для того, чтобы цикл был

просчитан и при конечном значении аргумента х, в условии LOOP UNTIL должен быть только знак ">".

Структура программы такая же, как и для цикла WHILE…WEND, т.е. до тела цикла вводится начальное значение х = -1, а в теле цикла вычисляется и выводится у, а также задаётся приращение аргумента х = х + 0,1, но:

· проверка достижения хкон выполняется в конце цикла, поэтому он обязательно будет просчитан хотя бы один раз (при х = хнач),

· в условии проверки достижения конечного значения должен стоять знак ">", чтобы цикл был просчитан и при последнем значении аргумента.

Вариант 5

REM Цикл с оператором DO UNTIL…LOOP

CLS ' очистка экрана

х = -1 ' задание начального значения: хнач = -1

DO UNTIL x > 2 ' проверка превышения конца цикла х > 2

у =х + EXP(х)*SIN(х) ' вычисление у в цикле

PRINT "у =";у, "х ="; х ' вывод на экран у и х

х = х + 0.2 ' увеличение х на шаг 0.2

LOOP

END

Работа программы происходит также, как и в варианте 4, но, поскольку проверка конца цикла производится в его начале, то он тоже может быть не выполнен ни разу (как и в цикле WHILE…WEND).

Пример 2 Вычислить с помощью оператора цикла и вывести на печать сумму всех значений у = sin3х, где х изменяется от 1 до 10 с шагом 0.1.

S =

Программа

REM цикл For…Next

CLS

S = 0 ' задание начального значения суммы S

FOR x = 1 TO 10 STEP.1 ' ввод параметров цикла

Y = SIN(х)^3 ' вычисление у = sin3x

S = S + Y ' прибавление текущего у к предыдущему S







Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...

Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...

Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.