Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум Информатика.doc
Скачиваний:
31
Добавлен:
01.02.2015
Размер:
609.28 Кб
Скачать

Порядок выполнения работы

  1. Выберите метод решения задачи

  2. Выберите стандартные функции, необходимые для решения задачи

  3. Выберите форму представления данных

  4. Разработайте алгоритм решения задачи. Для ввода данных

используйте диалоговый режим или вводите с помощью генератора

случайных чисел. Результат решения задачи выведите на экран дисплея

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

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

Теоретические сведения

Условный оператор и оператор выбора

С помощью условных операторов можно выбрать один из нескольких возможных операторов.

По практическим соображениям существует два типа условных операторов.

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

  • Оператор case позволяет выбирать из любого числа возможностей.

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

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

Данный оператор выполняется следующим образом. Сначала вычисляется выражение, стоящее после служебного слова if. Результат вычисления должен иметь булевский тип (boolean).

Если такое выражение имеет значение true, оператор, следующий за then выполняется. Если же выражение имеет значение false , выполняется оператор, следующий за else.

Если оператор else и оператор за ним опускаются, в случае false осуществляется переход к следующему оператору.

Пример условного оператора:

1). IF X<Y THEN

MAX := Y

ELSE

MAX := X ;

2).

if (x>0) and (x<2) then

y := SQR(cos(x)) else y := 1 - sin(SQR(x));

Если требуется выполнить после then или else несколько операторов, они заключаются в операторные скобки begin и end, образуя тем самым составной оператор.

Перед else никогда не ставится ; ,так как это еще не конец оператора if

Пример составного (вложенного) условного оператора:

1). IF COLOR = RED THEN

BEGIN

X := COS(Y) ;

Y := ALPHA + BETA ;

COLOR := YELLOW ;

END

ELSE

BEGIN

X := SIN(Y) ;

COLOR := RED;

END;

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

Если else отсутствует, а после оператора then вновь стоит оператор if, то мы можем столкнуться с многозначностью в выражении :

if <выраж1> then if <выраж2> then <выраж1> else <выраж2>

поскольку непонятно относится else к первому или второму if.

Существует правило, согласно которому else всегда относится к последнему if, не имеющему начинающегося с else продолжения, т.е. выражение, приведенное выше понимается как:

if <выраж1> then begin if <выраж2> then <выраж1> else <выраж2> end

Примеры:

1). Найти максимальное число из трех заданных чисел. Записать в виде одного условного оператора:

if (a>b) and (a>c) then d := a else if b>c then d := b else d := c ;

2).

if x<0 then if x>y then z := x else z := y else if x<y then z := x else z :=y ;

Оператор выбора case

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

После служебного слова case стоит некоторое выражение, после of – перечисление операторов, предоставленных для выбора. Эти операторы маркируются значениями, которые может принимать выражение.

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

Значение выражения должно иметь перечисляемый тип. Если записанное после case выражение принимает значение, не встречающееся среди констант, выполняется выражение после else.

Значение селектора ограничено диапазоном -32768 ... 32767, а потому не может иметь тип word, longint или string.

После : может стоять лишь одно выражение. Если в этом случае хотят выполнить несколько операций, нужно записать их в виде составного оператора, воспользовавшись командами begin ... end.

Примеры:

1). CASE COLOR OF

RED : X := Y+2 ;

YELLOW : X := Y-2 ;

GREEN : X := Y ;

END;

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

Сначала вычисляется текущее значение переменной COLOR. Затем это значение сопоставляется (сравнивается) с константами, записанными перед операторами. При совпадении значения переменной с одной из констант будет выполнен оператор «помеченный» данной константой. На этом выполнение оператора варианта будет завершено. Если значение переменной COLOR не совпадет ни с одной константой, то данный оператор не выполнит никаких действий.

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

2). CASE (K + 1) * 2 OF

2 : ADD(A,B) ;

4 : MULTIPLY(A,B);

0 : SUBSTRACT(A,B);

ELSE

WRITELN( ‘ОШИБКА!’);

END ;

Оператор, следующий за служебным словом else, будет выполнен в том случае, если значение выражения (K + 1) * 2 не совпадет ни с одной из констант 2, 4, 0.

Кроме одиночных констант в альтернативах оператора варианта могут быть заданы списки или диапазоны значений, которые в этом случае должны разделяться символом ‘,’ (запятая), например:

3). CASE SWITCH OF

1..2 : PROC1 ;

3,4,10..20 : PROC2 ;

5,6 : PROC3

ELSE

PROC4;

END;

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

3, 4, 10, 11, 12, ... , 19, 20.