Оператор ввода данных INPUT
Такой переход похож на безусловный, но обладает дополнительным свойством: управление не просто передается на строку Label, но и спускается все ниже до тех пор, пока не появится строка RETURN. После этого управление передается на строку, сразу следующую за той, на которой стоял GOSUB и даже на тот оператор, который стоит на той же строке, что и GOSUB, но сразу после (GOSUB:) — двоеточия! Вообще… Читать ещё >
Оператор ввода данных INPUT (реферат, курсовая, диплом, контрольная)
Input в переводе с английского означает «ввести». Оператор служит для ввода (в таком виде — с клавиатуры) данных по запросу программы. Формат его.
INPUT ["Tekst"] [,][;] variable.
где Tekst между кавычками это тот же объект, что использовался в операторе PRINT. Однако оператор PRINT может печатать тексты несколько раз, а у INPUTа такая возможность одна и она всегда завершается именем переменной, к которой будет приписано введенное число или символьная строка. Потому текст просто обязан прокомментировать, что же вы просите ввести. Vartiable, как мы уже видели, это переменная.
Примеры:
input «vvedi argument x»; x.
или.
input «vvedi familiyu x»; x$.
В первом случае будет запрошено число, во втором — символьная величина.
Еще один пример:
input «vvedi svoyo imya «; x$.
print «Privet,»;x$;"!".
Операторы перехода GOTO и IF … THEN
Оператор GOTO происходит, очевидно, от «go to» (идти к). Формат его предъявления таков:
GOTO Label.
где Label означает метку той строки, на которую осуществляется переход. Метка может быть просто натуральным числом или символьным выражением, завершенным двоеточием, например, «nachalo:», «faktorial:» или «korni:».
Управление выполнением программы по этому оператору (или, говорят, по предъявлению этого оператора, т. е. когда оператор появится в начале строки или, после двоеточия, даже в середине ее или конце) безусловно переходит на строку помеченную меткой. Таким образом, если оператор перехода посылает на метку строки выше себя, и между такой меткой и им самим нет ничего, что может помешать управлению снова добраться до этого GOTO, то мы будем иметь классический пример зацикливания.
Если же этот оператор посылает управление куда-то ниже себя, то далее управление может подняться выше метки (или ссылки) только если в программе используется еще какой-то переход на такую (выше метки) строку.
Теперь обратимся к более активному оператору, смысл которого заключен в передаче управления или выполнении действий в зависимости от состояния условия перехода или параметра перехода.
Слово IF переводится как «если», а THEN — как «то» или «тогда». Краткий формат оператора:
IF condition THEN action.
где condition означает условие, например, raznost=1, i=2 и т. д., а action — действие (например, переход на строку с определенной меткой, или печать, или что-то еще).
Более полный формат этого оператора предусматривает множественность и условий и действий:
IF condition1 THEN.
[statementblock-1].
[ELSEIF condition2 THEN.
[statementblock-2]].
… … … …
[ELSE.
statementblock-n]].
END IF.
Или.
IF condition THEN statements [ELSE statements].
Здесь под condition1 подразумевается любое выражение, которое можно оценить как истинное (ненулевое) или ложное (нулевое).
statementblock-1.
statementblock-2.
statementblock-n.
подразумевается использование одного или более оператора на одной или более строках, а под statements подразумеваются один или более операторов, разделенных двоеточием.
Пример:
INPUT «1 or 2? «, i%.
IF i% = 1 OR i% = 2 THEN.
PRINT «OK» .
ELSE.
PRINT «Out of range» .
END IF.
Эта программка просит ввести 1 или 2. Если вы слушаетесь и вводите 1 или 2, она печатает «ОК», в противном случае сообщает вам «Вне пределов».
Возвращаясь к путешествию из Казани в Москву на аэроплане, напишем программу, которая не только запрашивает расстояние и скорость полета, но и выдает некоторые сообщения при неправдоподобии вводимых величин.
20 CLS ` polet samoleta.
print «polet samoleta».
30 input «vvedi rasstoyaniye «;s.
if s>10 000 then print «a viza est'?»: goto 30.
if s<30 then print «peshkom doidesh'!»: goto 30.
40 input «vvedi skorost' «;v.
if v>1200 then print «Gde brali MiG-24?»: goto 40.
if v<70 then print «voz'mite velosiped»: goto 40.
t=s/v.
min=(t-int (t))*60.
sec=(min-int (min))*60.
print «vremya v puti».
print int (t);"chasov", int (min);"minut"; sec; «sekund».
input «Eshcho poletaem? Da — vvedi odin. Netdrugoye chislo», ask.
if ask = 1 then goto 20.
cls.
print.
print.
print.
print «Schastlivogo puti!».
end.
Написав и отладив программу, вы освоите азы использования оператора IF… THEN.
Задача. Написать программу, которая бы решала квадратные уравнения, т. е. запрашивала значения коэффициентов уравнения и печатала его корни во всех известных случаях Решение.
nachalo: CLS `programma dlya resheniya kv. ur-ya.
print «Reshaem kvadrantoya uravneniye».
print «2».
print «ax + bx + c = 0».
input «vvedi a=»;a.
input «vvedi b=»;b.
input «vvedi c=»;c.
dskr=b2−4*a*c.
ch1=-b/(2*a):ch2=(sqr (abs (dskr))/(2*a).
if dskr>0 then gosub real.
if dskr=0 then gosub odin.
if dskr<0 then gosub compl.
input «eshcho reshem? DA=1. Net=2»; vybor.
if vybor=1 then goto nachalo.
cls.
print «spasibo za ispolzovaniye porgammy».
end.
real: print «Imeem 2 veshch. kornya,.
print «x1=»;ch1-ch2,"x2=";ch1+ch2.
return.
odin: print «Imeem 1 veshch. koren',.
print «x1=x2=»;ch1.
return.
compl: print «Imeem 2 compleksnykh kornya,.
print «x1=»;ch1;"-i*";ch2,"x2=";ch1;"+i*";ch2.
Внимательный читатель увидит здесь два новых оператора — GOSUB вместо GOTO и tot какой-то оператор RETURN. Оператор GOSUB Label не просто отсылает управление на строку с меткой Label, но и ждет затем появления своей второй половины — строки RETURN (от английского «вернуться»).
Такой переход похож на безусловный, но обладает дополнительным свойством: управление не просто передается на строку Label:, но и спускается все ниже до тех пор, пока не появится строка RETURN. После этого управление передается на строку, сразу следующую за той, на которой стоял GOSUB и даже на тот оператор, который стоит на той же строке, что и GOSUB, но сразу после (GOSUB:) — двоеточия! Вообще говоря, GOSUB происходит от GO to SUBroutine (routine = программа, subroutine = подпрограмма).
На возможный вопрос «А чего это мы END в середине программы поставили?» ответ будет таким. Оператор GOSUB… RETURN, вообще говоря, является оператором перехода на подпрограмму (т.е. относительно самостоятельный блок программы). Для того, чтобы выполнение и адресация на подпрограммы была разумной, следует выносить их НИЖЕ ОСНОВНОГО БЛОКА программы. Они (подпрограммы) становятся такими самостоятельными программками, у которых «голова» находится в теле большой программы, а «концом» является как раз оператор RETURN, который, фактически, завершает выполнение подпрограммы и возвращает управление на то место, с которого его передали вниз GOSUBом. Ниже мы приведем пример более слабого решения, в котором GOSUB не используется.
nachalo: CLS `resheniye kv. ur-ya.
print «Reshaem kv. ur-e.
print «2».
print «ax + bx + c = 0».
input «vvedi a=»;a.
input «vvedi b=»;b.
input «vvedi c=»;c.
dskr=b2−4*a*c.
ch1=-b/(2*a):ch2=(sqr (abs (dskr))/(2*a)).
if dskr>0 then.
print «2 veshch. kornya».
print «x1=»;ch1-ch2,"x2=";ch1+ch2.
elseif dskr=0 then.
print «Imeem 1 veshch. koren',.
print «x1=x2=»;ch1.
elseif dskr<0 then.
print «Imeem 2 compleksnykh kornya,.
print «x1=»;ch1;"i*";ch2,"x2=";ch1;"+i*";ch2.
input «eshcho reshem? DA=1. Net=2»; vybor.
if vybor=1 then goto nachalo.
cls.
print «spasibo za ispolzovaniye porgammy».
end.
Ура, мы поместили подпрограммы внутри программы! Увы, это лишь потому, что подпрограммы очень простенькие… Что выбирать? Ответ такой же, как и со знанием иностранных языков — нужно знать и то, и другое!