Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции2семестр.doc
Скачиваний:
60
Добавлен:
15.04.2015
Размер:
228.35 Кб
Скачать

Организация цикла с помощью условного перехода

Цикл можно реализовать либо с помощью условного и безусловного переходов, либо с помощью только условного перехода.

В первом случае, возврат на начало тела цикла выполняется оператором безусловного перехода, а выход из цикла – оператором условного перехода. Логическое выражение в условном операторе представляет собой условие окончания цикла.

В программе при такой организации цикла требуется иметь две метки:

Start:

. . .

if A=Priznak then goto Finish;

. . .

goto Start;

Finish: . . .

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

Start:

. . .

if A<>Priznak then goto Start;

. . .

Тело итеративного цикла при таких способах построения в скобки begin ... end заключать не требуется.

Оператор итеративного цикла с предусловием

Вид оператора:

While <логическое выражение> do

<простой или составной оператор тела цикла>;

Логическое выражение – это условие продолжения цикла (выполнения тела цикла). Само тело цикла это один оператор или группа операторов (в операторных скобках begin .. end). Если в момент входа в заголовок цикла логическое выражение ложно, цикл не выполнится ни разу. На это следует обращать внимание при программировании с завершением цикла по вводу признака конца. Если ввод данных выполняется целиком в цикле, перед его началом значение вводимой в дальнейшем величины следует сделать искусственно неравным признаку конца. Например:

. . .

WriteLn(' Какое число будет обозначать слово «Конец» ?');

ReadLn(Pr);

A:=Pr+1;

While A<>Pr do

begin

WriteLn(' Введите очередное число ');

ReadLn(A);

if A<>Pr then

. . .

end;

. . .

Этому оператору в блок-схеме соответствует структура, изображенная на рисунке

Рисунок 10. Структура оператора цикла “While”

Оператор итеративного цикла с постусловием

Вид оператора:

Repeat

< операторы тела цикла>;

until <логическое выражение>;

Логическое выражение – это условие окончания цикла.

Тело цикла выполнится не менее одного раза, предварительные фиктивные значения для данных не требуются. Отметим, что тело цикла и при наличии нескольких операторов, в скобки begin .. end заключать не надо, так как Repeat и until сами выполняют роль скобок.

Как и в случаях с циклами For и While, в теле цикла можно использовать операторы continue и break, например, для работы с числами, пропуская отрицательные, можно использовать такой фрагмент программы:

. . .

WriteLn(' Какое число будет обозначать слово «Конец» ?');

ReadLn(Pr);

Repeat

WriteLn(' Введите очередное число ');

ReadLn(A);

if (A<>Pr) and (A<0) then

continue; { возврат на начало тела цикла }

. . .

until A = Pr;

. . .

Этому оператору в блок-схеме соответствует структура, изображенная на рисунке

Рисунок 11. Структура оператора цикла “ Repeat ”

  1. Глава 7. Составные типы данных

    1. Классификация составных типов

    2. Массивы Основные определения

Массивом называется совокупность однотипных простых данных, имеющих общее имя и расположенных в памяти ЭВМ подряд; обращение к элементам, составляющим массив, осуществляется с помощью индексных выражений. Количество индексов, задающих отдельный элемент массива, определяет размерность массива.

Массивы являются наименее сложными из всех составных типов и, поэтому, реализованы во всех алгоритмических языках.

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

Благодаря тому, что индекс может задаваться выражением (в частности – именем переменной), Элементы массива удобно использовать в циклах. При этом обращение к разным элементам массива выглядит одинаково: A[i].

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

Массивы бывают одномерные и многомерные. Одномерные массивы иногда называют векторами, двумерные - матрицами.

В общем случае массивом может выступать совокупность однотипных составных данных, например массив структур, массив символьных строк и т.д. Такие массивы реализованы не во всех языках (в Turbo Pascal - разрешены).

В линейной памяти ЭВМ одномерные массивы размещаются в порядке возрастания индекса, многомерные "вытягиваются в цепочку элементов" или с наиболее быстрым ростом первого индекса - "по столбцам" (в языке Фортран) или с наиболее быстрым ростом последнего индекса - "по строкам" (Паскаль).

Создание массивов с использованием описателей типов

TYPE

mas1 = array[1..100] of integer; {описатель для целочисленных

одномерных массивов длиной не более 100 элементов}

vector = array [1..30] of real; {описатель для вещественных

одномерных массивов длиной не более 20 элементов}

mas2 = array[1..8, 1..10] of Char; {описатель для символьных

двумерных массивов размерами не более 8 строк и 10 столбцов }

matrix = array[1..12] of vector; {описатель для вещественных

двумерных массивов размерами не более 10 строк и 20 столбцов.}

Последний описатель можно было бы задать без использования описателя типа vector:

matrix = array[1..12, 1..30] of real;

После задания типов, можно описать переменные таких типов:

VAR {здесь выделяется место под все массивы }

Names : mas2;

Numbers, Ages : mas1;

Day_Tempr,Day_Wind : vector;

Tempr1996 : matrix;

Создание массивов без использования специальных описателей типов

VAR Ball_Groop_1,B_M170 : array[1..30] of real; {выделение места под два одномерных вещественных массива }

B_M175 : array[1..30] of real;

Ball_Kurs : array[1:12, 1..30] of real; {выделение места под двумерный вещественный массив }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]