Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Простые и сложные условия. Ветвление и выбор: алгоритм и реализация в Паскале.



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

Оператор перехода goto вызывает передачу управления оператору, которому предшествует метка, указанная в данном операторе перехода. Общий вид записи оператора: Goto n;

где n – метка оператора. Используемые в программе метки должны быть описаны в разделе описания меток.

При использовании оператора перехода должны соблюдаться следующие правила:

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

2. Переход извне внутрь структурного оператора (то есть переход на более глубокий уровень вложенности) может вызвать непредсказуемые эффекты, хотя компилятор не выдает сообщения об ошибке. Например, вы не должны переходить в тело цикла for.

Условные операторы позволяют выбрать для выполнения один из составных операторов (или не выбрать ни одного).

Общий вид записи оператора: If b then a; или If b then a else c;

где b – логическое выражение, a и c – операторы простые или составные.

Первый вид оператора позволяет организовать выполнение оператора а при условии, что логическое выражение имеет значение True (рисунок под буквой а), а в противном случае оператор а не выполняется, а выполняется оператор, стоящий за условным. Второй вид записи оператора позволяет производить выполнение оператора а в случае, если логическое выражение имеет значение True, и оператора с – в противном случае.

Условный оператор можно расширить за счет вложенности новых условий в операторе.

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

Case Переключатель of

Список констант1: Оператор1;

Список констант2: Оператор2;

Список константN: ОператорN

Else ОператорЕ

End

Простые и сложные условия: Способом записей условий являются логические выражения. Они бывают простые и сложные. Простое логическое выражение – это два арифметических выражения, соединенные символом отношения (<, >, =, < >, < =, > =), а сложное – это простые логические выражения, соединенные логическими операциями: Not, And, OR.

Виды циклов. Цикл с параметром: алгоритм и реализация в Паскале.

Циклической (или циклом) называют алгоритмическую конструкцию, в которой некая, идущая подряд группа действий (шагов) алгоритма может выполняться несколько раз, в зависимости от входных данных или условия задачи. Группа повторяющихся действий hi каждом шагу цикла называется телом цикла. Любая цикли­ческая конструкция содержит в себе элементы ветвящейся алгоритмической конструк­ции. Рассмотрим три типа циклических алгоритмов: цикл с параметром (который называют арифметическим циклом), цикл с предусловием и цикл с постусловием (их на­зывают итерационными).

Арифметический Цикл

В арифметическом цикле число его шагов (повторений) одно­значно определяется правилом изменения параметра, которое зада­ется с помощью начального (N) и конечного (К) значений параметра и шагом (И) его изменения. Т.е., на первом шаге цикла значение па­раметра равно N, на втором - N + h, на третьем - N + 2h и т.д. На последнем шаге цикла значение параметра не больше К, но та­кое, что дальнейшее его изменение приведет к значению, большему, чем К.

for < параметр>: =А to В do < тело цикла>

Оператор цикла с параметром применяют тогда, когда известно число повторений одного и того же действия. Начальное и конечное значения параметра цикла могут быть представлены константами, переменными или арифметическими выражениями. Рассмотрим, как выполняется оператор цикла с параметром ви­да for < параметр>: =А to В do < тело цикла>. Сначала вычисляются значения выражений А и В. Если А< =В, то < параметр> последовательно принимает значения, равные А, А+1,..., В-1, В, и для каждого из этих значений выполняется < тело цикла>. Если А> В, то < тело цикла> не будет выполнен ни разу и выполнение цикла с параметром сразу же закончится.

Оператор цикла с параметром < параметр>: =А downto В do < тело цикла> выполняется аналогичным образом, но значение < параметра> изменяется с шагом, равным -1.

 

15 . Цикл с постусловием и с предусловием: алгоритм и реализация в Паскале.

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

Для программной реализации в Turbo Pascal 7.0 циклических процессов с неизвестным числом повторений существует еще один оператор - оператор цикла с постусловием, который имеет следующий вид: repeat < onepamop 1>; < оператор2>; ... < оператор п>; until < условие>; где repeat (повторять), until (до тех пор, пока...). Этот оператор аналогичен оператору цикла с предусловием, но отличается от него тем, что проверка условия производится после очередного выполнения тела цикла. Это обеспечивает его выполнение хотя бы один раз. Обратите внимание на то, что данный оператор цикла пред­полагает наличие нескольких операторов в теле цикла, поэтому служебные слова begin и End не нужны. Последовательность операторов, входящих в тело цикла, вы­полняется один раз, после чего проверяется соблюдение условия, записанного следом за служебным словом until. Если условие не со­блюдается, цикл завершается. В противном случае - тело цикла повторяется еще раз, после чего снова проверяется соблюдение условия.

Составить программу планирования закупки товара в магазине на сумму, не превышающую заданную величину. Program pr; uses crt; var с, k, p, s: integer; begin clrscr; writeln('Пред. сумма - '); readln(p); s: =0; repeat; writeln('цена тов. и его кол '); readln(c, k); s: =s+c*k; wrightln(‘Стоимость покупки =’, s); until s> p; wrightln(‘Суммарная стоимость покупки превысила предельную сумму’); readln; end.

Цикл с предусловием.

Количество шагов цикла заранее не определено и зависит от входных данных задачи. В данной циклической структуре сначала проверяется значение условного выражения (условие) перед выпол­нением очередного шага цикла. Если значение условного выражения истинно, исполняется тело цикла. После чего управление вновь пе­редается проверке условия и т.д. Эти действия повторяются до тех пор, пока условное выражение не примет значение ЛОЖЬ. При пер­вом же несоблюдении условия цикл завершается.

Блок-схема данной конструкции представлена на рис с помощью условного блока.

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

while...do Цикл с предусловием используется для программирования процессов, в которых число повторений оператора цикла не из­вестно, а задается некоторое условие его окончания. Выполнение оператора цикла с предусловием начинается с проверки условия, записанного после слова while. Если оно соблю­дается, то выполняется < тело цикла>, а затем вновь проверяется условие и т. д. Как только на очередном шаге окажется, что усло­вие не соблюдается, то выполнение < тела цикла> прекратится.

program primer; uses crt; var m, n: longint; k: integer; {Сметчик цифр} begin clrscr; writeln('Введите N'); readln(n); т: = п; к: =0; while m< > 0 do begin к=к+1; т: =m div 10; end; writeln('B числе ‘, n, ’-‘, k, ’ цифр! '); readln; end.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-04-10; Просмотров: 1738; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.013 с.)
Главная | Случайная страница | Обратная связь