Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по методике и информатикеВсё в одном.doc
Скачиваний:
12
Добавлен:
25.09.2019
Размер:
1.09 Mб
Скачать
  1. Условный, безусловный переход, выбор в языках программирования.

Условные операторы предназначены для выбора одного из возможных действий в зависимости от нек-го условия. При этом одно из действий м/б пустым, т.е. отсутствовать. В качестве условия выбора исп-ся зн-е логического выр-я. В Pascal им. 2 условных оператора: if,case. Оператор условия if явл. одним из самых попул-х ср-в изменяющих естественный порядок выполнения пр-мы.

if <условие> then <опер-р1> else <опер-р2>;

Перед else ; не ставится. На блок-схеме:

Сначала проверяется условие, рез-м к0го получается зн-е булевского типа. Если зн-е истинно True, то выполняется опер-р1, указанный после слова then, если рез-т ложный False, то выпол-ся опер-р2(else). Условный оператор может быть неполным, т.е. не содержать часть «else <оператор 2>». В этом случае, если значение логического выражения равно false, условный оператор не вызывает никаких действий.

Пример: составим программу, которая определяет длину общей части двух отрезков числовой оси, заданных координатами своих концов соответственно а, b и с, d (а < b, с < d). Если отрезки имеют общую часть, то левая координата общей части отрезков m равна максимальному из чисел а и с, а правая n - минимальному из чисел b и d.

program cross; var a,b,c,d,m,n,l:real; begin

writeln('введите координаты концов отрезков') ; read(a,b,с,d) ;

writeln; if a<c then m:=c else m:=a; if b<d then n:=b else n:=d;

if m<n then l:=n-m else 1:=0; writeln("длина общей части отрезков=',1:6:2) end.

В бейсик IF <условие> THEN <оператор1> ELSE <оператор2> - условный оператор;

В Си if/else Общий вид оператора:

If(<выражение>) <оператор1>

else <оператор2>;

Оператор выбора Case обеспечивает выбор из произвольного числа имеющихся вариантов. Оператор if обеспечивает выбор 2 альтернатив.

Формат выбора Case:

case <выр-е -селектор> of

<список1>:<опер-р1>;

<списокN>:<опер-рN>

else <опер-рN+1>

end;

Опер-р Case работает след-м образом: сначала вычисл-ся зн-е выр-я-селектора, а затем обеспечивается реализация того опер-ра, константа выбора к-го соотв-ет текущему зн-ю селектора. Если ни одна из конст. не равна текущему зн-ю селектора выполняется опер-р, стоящий за словом else. Селектор д/относится к одному из целочисл-х типов, булевскому, литерному или пользоват-му. Тип констант д/совпадать с типом селектора. Правило использования Case:*зн-е выр-я переключателя селектора д/принадлежать к дискретному типу. *все конст. предшествующие оператором альтернатив д/иметь тип совмест-м с типом выр-ия. *все конст-ты в альтернативах д/б уникальны в пределах оператора варианта, т.е. он допускает повторность, диапозоны не д/пересекаться.

Пр.Case d of

1…15:Writeln(‘Перва декада’);

16…31:Writeln(‘Вторая декада’)

else Writeln(‘Ошибка’)

end;

Оператор варианта имеет следующую форму:

case <выражение> of

<список констант 1> : <оператор 1>;

<список констант 2> : <оператор 2>;

…………………………

<список констант N> : <оператор N>

end.

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

Оператор варианта вычисляет значение выражения, записанного после case. Если его значение совпадает с одной из констант в некотором списке, то выполняется оператор, стоящий после этого списка. Если значение выражения не совпало ни с одной константой во всех вариантах, то оператор варианта ничего не делает.

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

program seasons; var k:integers; begin writeln('введите номер месяца') ; readin(k);

case k of

1,2,12:writeln('зима');

3, 4,5:writeln('весна') ;

6, 7,8:writeln('лето');

9,10,11:writeln('осень') end end.

В Си В тех случаях, когда в программе необходимо произвести выбор одного из нескольких вариантов, удобно применять оператор switch. Его синтаксис:

switch (<выражение>)

{

case <константа1>: <список операторов1>;

case <константа2>: <список операторов2>;

case <константаN>: <список операторовN>;

default: <список операторов>;

}

Оператор-переключатель выполняется следующим образом. Вычисляется значение выражения в скобках, приведенного после ключевого слова switch, затем программа просматривает список меток, указанных после слов case, до тех пор, пока не находит ту, которая соответствует данному значению. Далее программа переходит к выполнению оператора, расположенного в этой строке. Если подходящей метки не найдется и если существует строка с меткой default:, то будет выполнятся оператор, помеченный этой меткой. В противном случае произойдет переход к оператору, расположенному за оператором switch.

Метки, имеющиеся в операторе switch, должны быть константами или константными выражениями (выражениями, операнды которого константы) целого или символьного типа. Запрещается использовать в качестве метки переменную. Значением выражения в скобках должна быть величина целого или символьного типа. Список операторов варианта может быть либо пустым, либо заканчиваться одним из операторов завершения (break, continue, goto, return). Если у вариантов нет общих частей, то рекомендуется каждый вариант завершать оператором break.

Также сущ-ет оператор безусловного перехода goto, к-й означает перейти к… и примен-ся в случаях, когда после выполнения нек-го оператора надо выпол-ть не след-й по порядку, а какой-либо др. отмеченный меткой оператор.

опер-р; goto M; опер-р; … M:опер-р

Данный опер-р наз. избыточным и подвергается критике, т.к. способствует созданию малопонятных и трудно воспринимаемых программ. Их необходимо применять для передачи управления только вниз по тексту пр-мы, причем расстояние перехода не д/превышать одной страницы экрана.

Паскаль - язык структурного программирования. Это означает, что программист должен выражать свои мысли очень дисциплинированно, с использованием малого числа четко оговоренных конструкций, используя как чередование их, так и вложения друг в друга. Не рекомендуется (хотя и возможно) использовать оператор перехода goto.

В Си форма записи аналогична:goto <метка>;...

<метка>: <оператор>

безусловный переход в Бейсик: GOTO <номер строки>.