Инструменты пользователя

Инструменты сайта


bb:redbook:213

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
bb:redbook:213 [2016/09/08 09:54]
prospero78 [1. Оператор выбора CASE]
bb:redbook:213 [2016/09/08 10:05]
prospero78 [1. Оператор выбора CASE]
Строка 2: Строка 2:
  
 ==== 1. Оператор выбора CASE ==== ==== 1. Оператор выбора CASE ====
-Компонентный Паскаль предлагает инструкции выбора ''IF ELSIF ELSE'. Их можно комбинировать в произвольной последовательности и глубине. Но довольно часто случается, что выбор происходит больше, чем из одной-двух альтернатив. Бородатые компьютерщики помнят, что в начальных меню ДОСа довольно часто, для выбора пункта меню приходилось выбирать номер пункта и вводить его через клавиатуру. Так происходило интерактивное взаимодействие в эпоху чёрных экранов. Если посмотреть на исходники многих современных программ, выбор //что надо сделать// до сих пор построен именно так (хотя эта логика скрыта //плюшками//, //приблудами// и //контролами// интерфейса графического пользователя).+Компонентный Паскаль предлагает инструкции выбора ''IF ELSIF ELSE''. Их можно комбинировать в произвольной последовательности и глубине. Но довольно часто случается, что выбор происходит больше, чем из одной-двух альтернатив. Бородатые компьютерщики помнят, что в начальных меню ДОСа довольно часто, для выбора пункта меню приходилось выбирать номер пункта и вводить его через клавиатуру. Так происходило интерактивное взаимодействие в эпоху чёрных экранов. Если посмотреть на исходники многих современных программ, выбор //что надо сделать// до сих пор построен именно так (хотя эта логика скрыта //плюшками//, //приблудами// и //контролами// интерфейса графического пользователя).
  
 Так когда же нужно применять оператор выбора ''CASE''? Должно быть выполнено два условия: Так когда же нужно применять оператор выбора ''CASE''? Должно быть выполнено два условия:
Строка 10: Строка 10:
  
 Как использовать оператор ''CASE'' представлено ниже: Как использовать оператор ''CASE'' представлено ниже:
 +<code oberon2>
 +MODULE Test_case;
 +
 + IMPORT
 + Log;
 +
 + PROCEDURE SelectV (v: INTEGER);
 + BEGIN
 + Log.String("v:="); Log.Int(v); Log.Ln;
 + CASE v OF
 + 1..10: Log.String("Малое число"); Log.Ln;
 + | 11..100: Log.String("Среднее число"); Log.Ln;
 + | 101..1000: Log.String("Ого! Большое число!"); Log.Ln;
 + ELSE
 + Log.String("Нет. Это что-то не то..."); Log.Ln;
 + END;
 +
 + END SelectV;
 +
 + PROCEDURE Start*;
 + VAR
 + v: INTEGER;
 + BEGIN
 + v := 6;
 + SelectV(v);
 + v := 12;
 + SelectV(v);
 + v := 102;
 + SelectV(v);
 + v := - 1;
 + SelectV(v);
 + END Start;
 +
 +END Test_case.
 +</code>
 +Вывод:
 +<code>
 +компилируется "Test_case" 252 0
 +старый модуль Test_case выгружен
 +v := 6
 +Малое число
 +v := 12
 +Среднее число
 +v := 102
 +Ого! Большое число!
 +v := - 1
 +Нет. Это что - то не то...
 +</code>
   
 Как видно из текста модуля, количество веток с ''ELSE'' было бы драматически большим, пришлось бы написать больше кода, а значит риск совершения ошибки увеличивается. Кроме того, более компактная форма записи, позволяет сократить занимаемое место на экране, что положительно сказывается на понимании текста программы. Как видно из текста модуля, количество веток с ''ELSE'' было бы драматически большим, пришлось бы написать больше кода, а значит риск совершения ошибки увеличивается. Кроме того, более компактная форма записи, позволяет сократить занимаемое место на экране, что положительно сказывается на понимании текста программы.
bb/redbook/213.txt · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)