Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Управляющие операторы и рекомендации к их использованию

Рассмотрим далее управляющие конструкции, рекомендуемые при программировании на языке Турбо Паскаль 7.0.
Часть из этих операторов являются собственно операторами языка Паскаль, а часть - операторами вызова стандартных процедур модуля System.

К первым относятся: оператор перехода, пустой оператор, составной оператор, условные операторы, оператор выбора, оператор повторения с параметром, оператор повторения с предусловием, оператор повторения с постусловием.

Ко вторым: оператор завершения выполнения программы, оператор завершения выполнения подпрограммы, оператор задержки выполнения программы, операторы повторения цикла и выхода из цикла.

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

 

Оператор перехода

Оператор перехода, имеющий вид:

goto <метка>,

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

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

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

 

Операторы приостановки и завершения исполнения

Модули системы Турбо Паскаль (версии 7.0) как бы восполняют "неразвитость" языка Паскаль, в частности, его управляющих средств, предоставляя в распоряжение пользователя набор системных подпрограмм, вызов которых в пользовательской программе привносит гибкость и разнообразие средств управления, свойственные другим развитым языкам программирования. Рассмотрим здесь операторы вызова таких системных процедур, которые выполняют функции управления.

Группу таких операторов составляют операторы приостановки и завершения исполнения. К ним относятся операторы Delay, Exit и Halt.

Оператор Delay(Ms: word) задает задержку выполнения программы в Ms миллисекунд. Этот оператор используют в основном для задержки некоторого состояния экрана для его рассмотрения.

Оператор Halt(ExitCode: word) завершает выполнение программы. ExitCode - код завершения (при его отсутствии считается равным нулю). Оператор Halt полезно использовать с параметром, идентифицирующим завершенную ветвь программы. Перед завершением естественно выдавать также, некоторое идентифицирующее сообщение.

Оператор Exit завершает исполнение текущего блока, т.е. осуществляет выход из подпрограммы или основной программы (в последнем случае равносилен Halt).

Оператор Exit широко используется для задания выхода из подпрограммы при завершении ее ветвей, конец которых не совпадает с текстовым концом подпрограммы. С его помощью можно завершать ветви подпрограммы, не используя оператора перехода на конец этой подпрограммы, и избегать построения сложно организованных (вложенных) условных операторов.

 

Пустой оператор

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

 

Составной оператор

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

 

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

Условные операторы служат для задания ветвящихся алгоритмов. Различают два вида условных операторов:

if <условие> then < операторl>;
if <условие> then < операторl> else <оператор2>;

Условие — выражение логического типа. Если его значение истинно, то выполняется оператор1 в противном случае выполняется оператор2 (в условном операторе первого вида считается, что таковым является пустой оператор). Один условный оператор может входить в состав другого (в позиции оператор1 или оператор2). При сильно ветвящихся алгоритмах может возникнуть большая вложенность условных операторов (причем как с альтернативой Else, так и без нее). Из-за этого программа становится ненаглядной, трудно читаемой, запутывается логика алгоритма, что нередко приводит к ошибкам.

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

if В1 then if В2 then S1 else S2

Расставив "скобки" составного оператора, его можно трактовать как один из вариантов:

if В1 then begin if В2 then SI else S2 end
if B1 then begin if B2 then SI end else S2

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

Рекомендации к правильному применению условных операторов для программирования сильно ветвящихся алгоритмов и использующие его демонстрационные задачи приводятся в конце этой главы.

 

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

Оператор выбора является удобным средством для обработки ситуаций с несколькими исходами. Он включает в себя несколько альтернативных операторов, выбор между которыми производится на основе вычисления выражения (одного из порядковых типов), называемого селектором. Каждому из альтернативных операторов предшествует список возможных значений выражения-селектора.

Формат оператора выбора:

case < выражение-селектор > of
<список1> : < операторl>;
<список2> : < оператор2>;
- - - - -  -  - - - -  - -  
<списокМ> : < операторN>;
{ else < оператор>}
end;

Каждый из списков может содержать одно или несколько (перечисленных через запятую) значений или интервалов значений выражения- селектора. Выполнение оператора выбора состоит в вычислении выражения-селектора и выборе для исполнения того из содержащихся в нем альтернативных операторов, в списке которого это значение находится. Если это значение нигде не указано, то выполняется оператор, находящийся после else. Фрагмент else <оператор> по синтаксису не обязателен в операторе выбора.

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

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

var А : array['A'..'Z'] of integer;
for i := 1 to Length(st) do { цикл просмотра заданной строки}
case st[i] of
'. ' : nl := nl + l;
',' : n2:=n2+l;
':' : n3 := n3+l;
';' : n4 := n4+1;
'A'..'Z': A[s] := A[s] + 1;
else end {case};

 

Рекомендации к правильному применению оператора выбора для программирования сильно ветвящихся алгоритмов и использующие его демонстрационные задачи приводятся в конце этой главы.




 

Комментарии:


Добавить свой комментарий:


Введите значение:
 









   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru