|
|
|
|
|
|
|
|
страницы:
1
2
3
4
5
6
Текущая страница: 1
|
|
ТЕМА: ТурбоПаскаль7.0 Логические операторы и операторы цикла. Отладка программ.
Укороченная форма оператора if В операторе if часть, начинающаяся словом else, может отсутствовать. Часть, следующая за словом then, выполняется, если логическое условие, стоящее после слова if, имеет значение true. Если это логическое выражение имеет значение false, непосредственно выполняется оператор, следующий за if. Наша программа может быть переписана с применением укороченной формы оператора if. Алгоритм сводится к последовательности проверок попадания переменной Аде в различные диапазоны значений. Приведем измененный текст программы: Program Dialog; {расширенный диалог — второй вариант) const Question =' What is your name?'; Rep(y1 = 'Паскаль — прост, но первый компилятор Паскаля был написан на Паскале'; Reply21 = 'Вас ждет удивительное путешествие'; Reply22 = 'сквозь джунгли особенностей и возможностей языка'; Reply3 = 'Паскаль — разумный компромисс между желательным и эффективным'; Reply4 = 'Паскаль академически элегантен'; var Name: string; Age: byte; begin WriteLn(Question); ReadLn(Name); {Ввод имени} WriteLn('Hello,', Name,'!'); {Вывод приветствия} WriteLn('How old are you?'); {Вопрос о возрасте} ReadLn(Age); {Ввод возраста} if 12 < Age then WriteLn(Reply1 ); if (12 <= Age) and (Age < 20) then begin WriteLn (Reply21); WriteLn (Reply22) end; if (20 <= Age) and (Age < 40) then WriteLn(Reply3); if Age >= 40 then WriteLn(Reply4) end. Алгоритмически этот вариант решения задачи с использованием сокращенной формы оператора if существенно слабее первого варианта, в котором использовалась полная форма. При исполнении программы будут проверены все четыре условия, даже если при первой проверке найдено окончательное решение. Однако этот алгоритм не имеет вложенных друг в друга операторов и поэтому проще для понимания.
Оператор выбора case Оператор if — один из наиболее часто используемых структурных элементов языка — обеспечивает ветвление алгоритма только на два направления. Вместе с тем ясно, что первый алгоритм решения задачи удачнее выражает ее сущность. Для реализации подобных алгоритмов необходим оператор множественного ветвления (выбора из нескольких ветвей команд). Таким оператором в Паскале является оператор выбора case. Общий вид этого оператора: case <селектор> of < альтернатива 1 > : < оператор 1>; < альтернатива 2>:< оператор 2 >; < альтернатива N >: < оператор N > else < оператор части Else> end; Case и of — зарезервированные слова, которые являются отличительным признаком оператора множественного ветвления. Селектор — это переменная или выражение порядкового типа. В зависимости от значения данного выражения или переменной происходит ветвление программы. После заголовка оператора идет перечисление различных альтернатив, по которым может выполняться программа. Альтернативы отделяются друг от друга точкой с запятой. Альтернатива состоит из метки, двоеточия и исполняемого оператора данной альтернативы. Используемая в операторе case метка может состоять из констант и диапазонов. Диапазоны значений в Паскале — это два крайних значения, написанные через двоеточие. Такая запись эквивалентна перечислению всех целых чисел в данном диапазоне. В общем случае метка может состоять из различных констант и диапазонов, разделенных запятыми, например, допустима такая метка: 4, 8..10, 12, 14.. 16. В качестве селектора нельзя использовать логические результаты сравнения чисел (условия), поэтому использованные в операторах if неравенства здесь неприменимы. Часть оператора case, состоящая из слова else и последнего альтернативного варианта, является необязательной, она выполняется в том случае, если вычисленный в программе селектор не соответствует ни одной из перечисленных выше альтернатив. Если эта часть оператора case отсутствует, а селектор не подходит ни под одну из альтернатив, то оператор case не выполнит никаких действий. Завершается оператор case обязательным словом end; Пример. С использованием оператора case наша программа приобретает следующий вид Program Dialog; const Question =' What is your name?'; Replyl = 'Паскаль — прост, но первый компилятор Паскаля был написан на Паскале'; Reply21 = 'Вас ждет удивительное путешествие'; Reply22 = 'сквозь джунгли особенностей и возможностей языка'; ReplyS = 'Паскаль — разумный компромисс между желательным и эффективным'; Reply4 = 'Паскаль академически элегантен'; var Name: string; Age: byte; begin WriteLn(Question); ReadLn(Name); WriteLn('Hello,', Name,'!'); WriteLn('Howold are you?'); ReadLn(Age); case Age of 0..11 :WriteLn(Reply1); 12..19 : begin WriteLn (Reply21); WriteLn (Reply22) end; 20..39: WriteLn(Reply3); 40..150:WriteLn(Reply4) else WriteLn('Bbi ошиблись при вводе') end end. Переменная Age играет роль селектора. В зависимости от значения данной переменной происходит дальнейшее ветвление программы. В нашем примере в качестве альтернатив применяются диапазоны значений, поскольку нельзя использовать результаты сравнения чисел, как в предыдущей программе. Исходные неравенства заменены диапазонами. Например, проверка логического условия Age < 12 заменена проверкой принадлежности диапазону 0..11.
Текущая страница: 1
|
|
|
|
|
Предмет: Информатика
|
|
Тема: ТурбоПаскаль 7.0 |
|
Ключевые слова: операторы, ТурбоПаскаль, комп-ры, 7.0, Логические операторы цикла постусловие предусловие, постусловие, ТурбоПаскаль 7.0, Программирование и комп-ры, Программирование, Логические, цикла, предусловие |
|
|
|
|
|
|
|
|