Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lecton.DOC
Скачиваний:
4
Добавлен:
15.04.2019
Размер:
980.99 Кб
Скачать

5.2.18. Составные операторы, задающие последова­тельность дейст­вий

Так же как и в языке описания алгоритмов в языках про­грам­миро­ва­ния су­щест­вует три вида составных операторов: последо­ватель­ный опе­ра­тор, услов­ный оператор, оператор цикла. Услов­ный опера­тор и опе­ра­тор цик­ла могут иметь несколько разновидностей.

В языке Basic последовательный составной оператор является по­следовательностью следующих друг за другом операторов.

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

Соответствующие пары ключевых слов:

Если IF

То THEN

ИначеЕсли ELSEIF

Иначе ELSE

КонецЕсли END IF

ЦиклПока DO WHILE

КонецЦиклаПока LOOP

Смысл этих операторов полностью совпадает со смыслом аналогич­ных операторов языка записи алгоритмов. Кроме того, в языке Basic, имеются и другие рассматриваемые ниже разновидности условного и цик­лического оператора.

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

Ус­лов­ный опе­ра­тор в Basic в простейшем виде со­сто­ит как ми­ни­мум из трех строк: из на­чаль­ной стро­ки с ло­ги­че­ским вы­ра­же­ни­ем Усло­вие; од­ной или не­сколь­ких строк за­даю­щих включенную в него Груп­пуО­пе­ра­то­ров, и за­вер­шаю­щей стро­ки ви­да end   if:

If Условие then

         ГруппаОпе­ра­то­ров

end    if

Здесь, if, then, end - зарезервированные слова. С английского со­от­ветственно: если, тогда, конец. Словосочетание end   if записыва­ется че­рез один пробел. При ис­пол­не­нии такого оператора вна­ча­ле вы­чис­ля­ет­ся ло­ги­че­ское вы­ра­же­ние Условие. Ес­ли оно ис­тин­но, то вы­пол­ня­ют­ся дей­­ст­вия, за­дан­ные как ГруппаОпе­ра­то­ров. При лож­но­сти вы­ра­же­ния Усло­вие вы­пол­не­ние ГруппыОпе­ра­то­ров про­пус­ка­ет­ся.

К примеру, группа операторов:

B = A

IF  A < 0  THEN

B = -A

END  IF

эквивалентна одному оператору:

B = ABS (A)

Замечание. Отступы в составных операторах. Хотя это и не­обя­за­тель­­но, в составных операторах для на­глядности целесооб­разно ис­поль­зовать лишние пробелы для получе­ния отсту­пов начал одних ст­рок про­граммы относительно начала других строк. Так, если бы мы от­казались от отсту­пов в пре­дыдущем примере, то имели бы эк­ви­ва­лен­тную, но менее на­глядную запись

B = A

IF  A < 0  THEN

B = -A

END  IF

Отступы в составных операторах особенно важны для понима­ния боль­ших про­грамм. Рекомендуется их использовать также и для ма­лых про­грамм.

Чтобы задавать еще и действия, выполняемые при несоблюдении за­дан­ных условий, в Basic ис­поль­зуется расширенная форма услов­ного опе­ра­то­ра, именуе­мая ус­лов­ным опе­ра­тором с аль­тер­на­ти­вой. Он со­стоит как ми­ни­мум из 5 строк: из на­чаль­ной стро­ки с ло­ги­че­ским вы­ра­же­ни­ем Ус­ловие; од­ной или не­сколь­ких строк, за­даю­щих включенную в него Ос­нов­нуюГруп­пуОпе­ра­то­ров; стро­ки ви­да else; од­ной или не­сколь­ких строк, за­даю­щих вклю­ченную в него Аль­тер­на­тив­нуюГруп­пуОпе­ра­то­ров, и за­вер­шаю­щей стро­ки ви­да end   if.

if      Ус­ло­вие     then

         Ос­нов­наяГруп­паОпе­ра­то­ров

else

         Аль­тер­на­тив­наяГруппаОпе­ра­то­ров

end      if

Здесь дополнительно используется зарезервированное слово ELSE (с анг­лийского - иначе). При ис­пол­не­нии такого оператора вна­ча­ле вы­чис­ля­ет­ся ло­ги­че­ское вы­ра­же­ние Условие. Ес­ли оно ис­тин­но, то вы­пол­ня­ют­ся дей­ст­вия, за­дан­ные Ос­нов­нойГруп­пой­Опе­ра­то­ров (Аль­тер­на­тив­ная­ГруппаО­пе­ра­то­ров при этом не вы­пол­ня­ет­ся). Ес­ли же Ус­ло­вие лож­но, то, на­обо­рот, Ос­нов­наяГруп­паОпе­ра­то­ров про­пус­ка­ет­ся (ис­пол­ня­ет­ся толь­ко Аль­тер­на­тив­наяГруппаОпе­ра­то­ров).

К примеру, присвоение переменной MinAB минимального, а переменной MaxAB мак­симального из значений двух переменных A и B может быть записано в сле­дую­щих эквивалентных видах:

Форма с отступами

Форма без отступов

IF  A < B  THEN

MinAB = A

MaxAB = B

ELSE

MinAB = B

MaxAB = A

END  IF

IF  A < B  THEN

MinAB = A

MaxAB = B

ELSE

MinAB = B

MaxAB = A

END  IF

Здесь проиллюстрирована наглядность программ, получаемая за счет лишних пробе­лов (отступов) в начале операторов, включаемых в составной оператор.

Замечание. Вложенные составные операторы. Составные опера­то­ры мо­гут содержать и другие составные операторы, в которые, в свою оче­редь, мо­гут быть также вложены составные операторы, и т.д.

Например:

IF A<>0 THEN

PRINT -B/A

ELSE

LOCATE  1,1

IF B <> 0 THEN   

PRINT "решений нет"

ELSE

PRINT "решение - любое число"

END  IF

END IF

Час­то аль­тер­на­ти­ва в ус­лов­ном опе­ра­то­ре содержит только один ус­лов­ный опе­ра­то­р

В этом слу­чае мож­но вос­поль­зо­вать­ся со­кра­щен­ной фор­мой за­пи­си

else

      if   Ус­ло­вие     then

            Груп­паОпе­ра­то­ров

      end      if

end      if

elseif      Ус­ло­вие     then

      Груп­паОпе­ра­то­ров

end      if

else

      if   Ус­ло­вие     then

Груп­паОпе­ра­то­ров1

ELSE

Груп­паОпе­ра­то­ров2

      end      if

end      if

elseif      Ус­ло­вие     then

      Груп­паОпе­ра­то­ров1

ELSE

Груп­паОпе­ра­то­ров2

end      if

Здесь используется зарезервированное слово elseif, образованное слия­нием двух слов else и if. За­ме­тим, что ус­лов­ный опе­ра­тор мо­жет со­дер­жать в се­бе лю­бое ко­ли­че­ст­во та­ких со­кра­ще­ний. Такой вид условного оператора называется ус­лов­ным опе­ра­тором с аль­тер­на­ти­ва­ми.

На­при­мер, программа реше­ния линейного уравнения ax+b=0 с дей­ст­ви­тель­ными коэф­фициентами a, b:

DIM A AS SINGLE, B AS SINGLE

INPUT A,B

IF A<>0 THEN

PRINT "решением является число", -B/A

ELSEIF B<>0 THEN

PRINT "решений нет"

ELSE

PRINT "решением является любое действительное число"

END IF

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]