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

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


bb:redbook:213

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
bb:redbook:213 [2016/09/08 10:03]
prospero78 [1. Оператор выбора CASE]
bb:redbook:213 [2016/09/08 10:08]
prospero78 [2. Ключевые слова модуля]
Строка 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'' было бы драматически большим, пришлось бы написать больше кода, а значит риск совершения ошибки увеличивается. Кроме того, более компактная форма записи, позволяет сократить занимаемое место на экране, что положительно сказывается на понимании текста программы.
Строка 16: Строка 64:
 ==== 2. Ключевые слова модуля ====  ==== 2. Ключевые слова модуля ==== 
 Таких слов на данный момент рассмотрено три: Таких слов на данный момент рассмотрено три:
-  - MODULE [NameModule];  -- обязательное ключевое слово с именем модуля. По другому компилятор никак не сможет определить к чему относится программный текст. +  - ''MODULE'' [NameModule];  -- обязательное ключевое слово с именем модуля. По другому компилятор никак не сможет определить к чему относится программный текст. 
-  - END [NameModule]. -- обязательное ключевое слово с именем модуля. По другому компилятор никак не сможет определить, где заканчивается программный код. Нельзя забывать, что за концом программного текста ещё могут быть различные элементы, как-то: коммандер (а то и не один), данные для ввода, данные для компиляции, заметки типа TODO или краткие примеры правильного использования. Кроме того, можно вставить ссылки на документацию по модулю или смежные темы. +  - ''END'' [NameModule]. -- обязательное ключевое слово с именем модуля. По другому компилятор никак не сможет определить, где заканчивается программный код. Нельзя забывать, что за концом программного текста ещё могут быть различные элементы, как-то: коммандер (а то и не один), данные для ввода, данные для компиляции, заметки типа **TODO** или краткие примеры правильного использования. Кроме того, можно вставить ссылки на документацию по модулю или смежные темы. 
-  - BEGIN -- необязательное ключевое слово уровня модуля. Обычно, код размещённый после него -- исполняется для служебных целей во время загрузки самого модуля. По возможности, не стоит использовать это логическое пространство для кода. С высокой вероятностью, это будет плохим решением. +  - ''BEGIN'' -- необязательное ключевое слово уровня модуля. Обычно, код размещённый после него -- исполняется для служебных целей во время загрузки самого модуля. По возможности, не стоит использовать это логическое пространство для кода. С высокой вероятностью, это будет плохим решением. 
-  - CLOSE -- необязательное ключевое слово уровня модуля. Обычно, код размещённый после него -- исполняется для служебных целей во время выгрузки самого модуля. Эта возможность используется ещё реже, чем BEGIN, так что с ещё большей вероятностью использование этой секции будет ещё более плохим решением.+  - ''CLOSE'' -- необязательное ключевое слово уровня модуля. Обычно, код размещённый после него -- исполняется для служебных целей во время выгрузки самого модуля. Эта возможность используется ещё реже, чем ''BEGIN'', так что с ещё большей вероятностью использование этой секции будет ещё более плохим решением.
  
-Читатели знакомые, например, с python, обратят своё внимание, что это очень похоже на специальные методы классов __init__ и __del__. И такое сходство будет не случайно. Вспоминаем, что основная единица компиляции в КП -- модуль! И понятие модуля органически совмещается с понятием класса. [↑]+Читатели знакомые, например, с **python**, обратят своё внимание, что это очень похоже на специальные методы классов ''__init__'' и ''__del__''. И такое сходство будет не случайно. Вспоминаем, что основная единица компиляции в КП -- //модуль//! И понятие //модуля// органически совмещается с понятием //класса//. И всё же, надо помнить, что ''BEGIN'' и ''CLOSE'' относятся к модулю, а не классу (которых в **python** в одном модуле может быть несколько, хотя сами же питонёры к такой практике относятся не очень хорошо).
   
   
bb/redbook/213.txt · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)