16831

Организация обработки данных

Лекция

Информатика, кибернетика и программирование

Лекция 4 6. Организация обработки данных Как правило в программах не удается ограничиться операторами присваивания. Для большинства реально используемых алгоритмов характерна широкая разветвленность процесса вычислений. При этом в зависимости от конкретных исходн...

Русский

2013-06-26

1.3 MB

4 чел.

Лекция 4

6. Организация обработки данных

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

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

GОТО - оператор перехода

Операторы программ располагаются в памяти и выполняются последовательно, в порядке их записи. Но могут быть ситуации (условия), когда надо пропустить группу операторов. Такие пропуски производятся в программах с помощью операторов перехода.

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

Форма оператора перехода:

GOTO метка   ;

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

Все метки, используемые в программе, должны быть объявлены в разделе LABEL. После выполнения оператора GOTO следующим выполняется оператор, метка которого совпадает с меткой, стоящей после слова GOTO, т. е. оператор, помеченный такой меткой.

Пример:

LABEL M1,M2,25;    ...

GOTO  M1; ... GOTO 25; ... GOTO M2;

M1: A:=В; ... M2: 25: С:=D;

Все метки локальны в блоке; на Паскале не допускается переход:

  1.  внутрь сложного оператора (составного, условного, варианта, цикла);
  2.  в процедуру или функцию и из процедуры или функции в вызвавшую их
    программу.

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

Составной оператор (блок) - это группа операторов, ограниченная операторными скобками BEGIN и END. Например:

BEGIN X:=Y; Y:=Z; Z:=X   END;

Точка с запятой может не быть после BEGIN и перед END. После END может быть:

  1.  пробел, если следующий оператор END или слово ELSE;
  2.  точка с запятой, если следующим является выполняемый оператор;
  3.  точка, если это конец программы.

Составной оператор используется для ограничения:

  1.  раздела операторов программ, процедур и функций;
  2.  групп  операторов  в  условных  операторах,   операторах  выбора  варианта
    и цикла.

В составном операторе могут быть другие составные операторы произвольной глубины вложенности. Например:

BEGIN ...

BEGIN ... - вложенный составной !

END;  ...   оператор

END;

Пустой оператор представляется символом ; и не вызывает никаких действий. Он может использоваться для установки метки и, в случае необходимости, после ключевых слов THEN или ELSE в операторах IF;, причем перед ELSE пустой оператор располагается по умолчанию, без символа ;. Например:

M1: ; IF ... THEN IF ... THEN ...

  ELSE  ...

{ здесь - пустой оператор - по умолчанию, без ' ; ' }

        ELSE ...

Там, где стоит многоточие, располагаются операторы.

Разветвление процесса обработки данных

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

IF - условный оператор

Условный оператор IF может иметь одну из форм: сокращенную или полную. Схема сокращенной формы оператора IF дана на рис. 4.

Рис. 4

Схема сокращенной формы условного оператора

Форма оператора:   IF  В  THEN  S   ;,

где     В - условие разветвления (принятия решения), логическое выражение или выражение отношения; S - один выполняемый оператор, простой или составной.

Простой - это один любой выполняемый оператор языка, например оператор присваивания, разветвления, цикла, ввода или вывода.

При выполнении оператора IF сначала вычисляется выражение В, затем производится анализ его результата: если В истинно (true), оператор S выполняется, если В ложно (FALSE) - пропускается. Таким образом, с помощью сокращенной формы оператора IF можно выполнить или нет оператор, стоящий после ключевого слова THEN, в зависимости от истинности или ложности анализируемого условия.

Схема полной формы условного оператора дана на рис.5.

Рис. 5

Схема полной формы условного оператора

Форма оператора:

IF  В  THEN   S1   ELSE   S2   ;

где     В - логическое выражение;

S1, S2 - один выполняемый оператор - простой или составной.

При выполнении условного оператора полной формы сначала вычисляется выражение В, затем анализируется его результат: если В истинно, выполняется оператор S1, а оператор S2 пропускается, а если В ложно, то выполняется оператор S2, a S1 пропускается. Перед ключевым словом ELSE точка с занятою не ставится. Таким образом, с помощью полной формы оператора IF можно выбрать один из двух альтернативных вариантов процесса вычислений.

Примеры:

1)IF А > В THEN X := Y ;  { Сокращенная форма IF }

2)IF X < 0 THEN Y := 1    { Полная форма IF }

          ELSE Y := 2 ;

3)IF A > В THEN BEGIN X:=0;Y:=1 END {Полная форма}

         ELSE BEGIN X:=1;Y:=0 END;{и составные операторы}

Условные операторы могут быть вложенными. Если S1 или S2 также являются операторами IF, их называют вложенными условными операторами. При этом ключевое слово ELSE связывается с ближайшим предыдущим словом THEN, которое еще не связано ни с одним ELSE. Примеры схем алгоритмов с вложенными условными операторами приведены на рис.6 и 7. Соответствующие им программы - в листингах 9 и 10.

Листинг 9. Пример для схемы на рис. 6

Уровни вложенности операторов IF:

IF A<В THEN

  IF С<D THEN

    IF E<F THEN  X:=Q               

           ELSE  X:=R   3    2      1

         ELSE X:=Y;

      ELSE X:=Z

Схема алгоритма с вложенными условными операторами

Рис. 6.

Рис. 7

Схема алгоритма с вложенными условными операторами

Листинг 10. Пример для схемы рис. 7.

Уровни вложенности операторов IF:

IF A<В THEN

        IF С<D THEN X := Y

               ELSE X := Z  2
      ELSE                          1

        IF E<F THEN X := R   

               ELSE X := Q; 1

CASE - оператор выбора варианта

Схема оператора CASE представлена на рис. 8.

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

Рис. 8

Схема оператора CASE

Форма оператора CASE:

CASE В OF

Список меток-1 : S1 ;

Список меток-2 : S2 ;

...

Список меток-N : SN ;

[ ELSE S ; ]

END ;

где     В - выражение, определяющее значение ключа (селектора);

Sl÷SN, S - один выполняемый оператор, простой или составной.

Список меток - это одна или более меток, разделенных запятыми. Метки предназначены для выбора одного из вариантов действий оператора CASE, т. е. для выбора одного из его операторов: Sl÷SN. Метки оператора CASE нельзя определять в разделе LABEL, их вообще не надо объявлять. Тип результата выражения В и тип меток должны быть идентичны. В качестве значений выражения В и меток могут быть любые ординальные типы значений: целые, логические, символьные, перечисляемые или диапазонные.

Оператор CASE может иметь сокращенную или полную форму, т. е. ключевое слово ELSE и оператор S необязательны.

Правила выполнения оператора CASE:

  1.  сначала определяется значение В;
  2.  затем оно анализируется сравнением со значением каждой метки, стоящей
    перед операторами, предназначенными для выбора; в результате анализа
    выполняется оператор, метка которого совпадает со значением В, или оператор, для которого значение В входит в диапазон значений его меток; например, В = '
    D', а перед одним из операторов стоит метка: 'А'. .'К';
    при этом '
    D' входит в диапазон 'А' .. 'К';
  3.  после выполнения одного из Sl÷SN вариантов оператора CASE  выполняется оператор, следующий после оператора CASE;

4) если значение В не совпадает ни с одной меткой CASE, то:

а) при сокращенной форме CASE (без ELSE) выполняется оператор, следующий после CASE;

б) при полной форме CASE выполняется оператор, стоящий после ключевого слова ELSE;

  1.  все метки вариантов оператора CASE должны быть различны, т. е. каждая
    из них должна быть в списке одного
    CASE один раз;
  2.  на метку вариантов оператора CASE нельзя переходить с помощью опера
    тора
    GOTO.

Пример. Ввести один из символов: 'у', 'У, 'n' или 'N'. При вводе 'у' или 'Y', вывести на экран слово 'Да', а при вводе символа 'n' или 'N' -слово ' Нет'. Если введен какой-либо другой символ, выдать соответствующее сообщение. На рис.9 приведена схема алгоритма, а в листинге 11. - программа примера с полной формой CASE.

Рис. 9

Схема алгоритма ввода и анализа 'у', 'У, 'n', 'N'

Листинг 11. Пример для схемы алгоритма рис. 9.

PROGRAM   PR_CASE;
 VAR CH : CHAR;
 BEGIN READLN(CH);

        CASE CH OF

              'Y','y': WRITELN ('Да');

              'N','n': WRITELN ('Нет');

           ELSE WRITELN ('Вы  ошиблись!');

        END

END.

На рис.10 дана схема алгоритма ввода любых символов и вывода только гласных букв; в листинге 2.12 - соответствующая ей программа. В программе примера используется операция IN и сокращенная форма оператора CASE.

Рис. 10

Схема алгоритма ввода любых символов и вывода только гласных букв

Листинг 12. Ввод любых символов и вывод гласных букв.

VAR SIM : CHAR;

   BEGIN  READLN (SIM);

         IF SIM IN ['A','E','I','0','U']  THEN

          CASE  SIM  OF

                'A' : WRITELN ('A');

                'E' : WRITELN ('E');

                'I' : WRITELN ('I');

                '0' : WRITELN ('0');

                'U' : WRITELN ('U')

          END

END.

Циклы

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

К операторам цикла относят операторы FOR, WHILE и REPEAT. Если количество повторений заранее известно, то целесообразно использовать оператор FOR. А если количество повторений определяется условиями - операторы WHILE или REPEAT.

FOR - оператор цикла с параметром

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

Рис. 11

Схема оператора wикла FOR для IK > IN и DI = +1

Форма оператора цикла FOR:

             TO

FOR I := IN          IK DO S;

            DOWNTO

             Заголовок цикла

где     I - параметр цикла, управляющая переменная, идентификатор;

IN, IK - выражения для определения начального и конечного значений I; ТО - определяет шаг изменения параметра цикла I:   DI  =  1;

DOWNTO - определяет шаг изменения параметра цикла I:  DI  =  -1;

S - один оператор, простой или составной; тело цикла.

Правила формирования и выполнения цикла FOR:

  1.  I, IN и IK могут быть любого ординального типа, в том числе целыми, логическими, перечисляемыми и диапазонными;
  2.  I, IN и IK должны быть совместимого типа;
  3.  значение I не должно изменяться операторами в теле цикла;
  4.  так как анализ конца цикла производится до выполнения тела цикла, то
    при
    IN >IK для ТО (и при IN < IK для DOWNTO) тело цикла не выполняется ни разу;
  5.  после завершения цикла FOR параметр цикла имеет значение:

а) после нормального завершения: I  =  IK;

б) при котором выполнился оператор GOTO;

  1.  значения IN и IK определяются один раз, в начале выполнения оператора
    FOR, и сохраняются во время выполнения оператора FOR;
  2.  DI определяет для I целого типа приращение значения I, а для параметров перечисляемого типа - приращение номера значения I;
  3.  для каждого I тело цикла выполняется один раз;
  4.  после каждого выполнения тела цикла к параметру цикла I добавляется его приращение DI.

Пример 1. Дано N. Определить и вывести степени "двойки" от 1 до N (N > 1) по 5 значений в строке. Схема алгоритма примера дана на рис. 12, программа - в листинге 13.

Рис. 12

Схема алгоритма вычисления и вывода степеней 'двойки'

Листинг 13. Вычисление и вывод степеней 'двойки' с использованием цикла FOR.

VAR X,I,N:INTEGER;

   BEGIN X:=1; READ(N); WRITELN('N = ', N);

      FOR I:=1 TO N DO

            BEGIN X:=X*2;  WRITE (X:10);

                  IF I MOD 5=0 THEN  WRITELN

            END

END.

Пример 2. Дан массив А на 5 вещественных значений. Надо определить и вывести сумму его положительных элементов. Схема алгоритма дана на рис.13; текст соответствующей ему программы - в листинге 14.

Листинг 14. Суммирование положительных элементов массива.

CONST A:ARRAY[1..5] OF REAL=(1,-2,3,-4,5);

VAR S:REAL; I : INTEGER;

BEGIN

   S := 0;

     FOR I:=1 TO 5 DO

           IF A[I]>0 THEN S:=S+A[I];

     WRITELN ('S=',S:12)

END.

Рис. 13

Схема алгоритма формирования и вывода суммы положительных значений элементов массива А

Пример 3. Даны А и В. Вычислить и вывести таблицу из 10 значений X и Y, где X изменяется от 0. с шагом 0,1, а значения Y определяются по формуле

Схема алгоритма примера дана на рис. 14, программа - в листинге 15

Рис.14

Схема алгоритма вычисления и вывода таблицы значений

Листинг 15. Вычисление и вывод таблицы вещественных значений.

VAR А,В,X,Y:REAL; I:INTEGER;
BEGIN X:=0.;  А:=2; В:=3;

  FOR I:=1 ТО 10 DO BEGIN

     Y:=(A+В-X)/(SIN(A)+X);

     WRITELN (X:12,' ',Y:12); X:=X+0.1;

                      END

END.

Пример 4. Дан массив А на 5 значений. Найти и вывести AMIN - минимальное значение массива и IMIN - его номер в массиве А. Схема алгоритма дана на рис. 15; программа - в листинге 16.

Рис. 15

Схема алгоритма поиска и вывода минимального значения массива и его номера

Листинг 16. Поиск и вывод минимального значения массива и его номера.

CONST A:ARRAY[1..5] OF REAL=(7,5,1,2,4);
VAR  I,IMIN:INTEGER;
BEGIN IMIN:=1;

   FOR I:=2 TO 5 DO

       IF A[I]<A[IMIN] THEN IMIN:=I;

WRITELN ('Минимальное значение A[', IMIN, '] = ',

                                    A[IMIN]:12);

END.

Пример 5. Дан массив А на 5 значений. Суммировать значения элементов массива до появления первого отрицательного элемента, т. е. значения А[1] < 0. Полученную сумму вывести. Схема алгоритма дана на рис. 16, программа - в листинге 17. Количество повторений тела цикла примера может быть от 1 до 5.

Рис. 16

Схема алгоритма суммирования значений до A[l] < О

Листинг 17. Суммирование значений элементов массива до появления A[I] < 0.

CONST A:ARRAY[1..5] OF REAL=(7,5,1,-2,4);

LABEL M;

VAR I:INTEGER;  S:REAL;

BEGIN S:=0;

    FOR I:=1 TO 5 DO BEGIN

        IF A[I] < 0 THEN GOTO M; S:=S + A[I]

                              END;

M : WRITELN (' S = ',S:12)

END.

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

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

Схема цикла WHILE представлена на рис.17

Рис. 17

Схема цикла WHILE

Форма цикла: while B(Х) do s;

                       Заголовок цикла

где    В(Х) - логическое выражение; условие завершения цикла;

S - один оператор, простой или составной; тело цикла; в нем должны быть операторы для изменения операндов логического выражения В(Х).

Тело цикла WHILE выполняется только в случае, если результат выражения В(Х) истинный; если он ложный, тело цикла не выполняется. Если результат выражения В(Х) ложный до начала первого выполнения тела цикла, то тело цикла не выполняется ни разу.

Рис. 18

Схема алгоритма деления X пополам до X <= 0.1

Пример 6. Дано X. Надо делить его пополам до тех пор, пока X будет больше ОД. Схема алгоритма дана на рис. 18, программа - в листинге 18.

Листинг 18. Деление X пополам до X <= 0.1.

VAR X : REAL;

BEGIN

READ (X);

WHILE X>0.1 DO X:=X/2;

WRITELN ('X = ',X:10);    { - вывод значения Х } END.

Пример 7. Дано N. Ввести N, определить и вывести степени "двойки" от первой степени до значений степени не более N. Схема алгоритма дана на рис. 19, программа - в листинге 19.

Рис. 19

Схема алгоритма определения и вывода степеней "двойки"

Листинг 19. Определение и вывод степеней "двойки" с использованием оператора WHILE.

PROGRAM  PR ;

VAR  X, N : INTEGER ;

BEGIN READLN (N); X := 2;

WHILE  X <= N  DO  BEGIN

                      WRITELN (X); X := X * 2;

                   END

END.

Пример 8. Дано Х и EPS - точность вычисления. Определить корень квадратный из X, используя итерационный метод Ньютона. Для этого выбирается начальное значение Y, например, равное единице или нулю. Затем определяются последующие приближения с использованием рекуррентной формулы:

;

или  Yn = Yn-1 + Vn-1;

где  

Вычисления производятся до тех пор, пока |v|   > EPS.

Схема алгоритма вычисления корня квадратного дана на рис. 2.20, программа - в листинге 20.

Рис. 20

Схема алгоритма определения и вывода корня квадратного

Листинг 20. Вычисление и вывод корня квадратного с использованием оператора WHILE.

VAR X,Y,V,EPS: REAL;
BEGIN X:=4; EPS:=1E-4;

        Y:=0; V:=1;

        WHILE  ABS(V)>EPS DO BEGIN

              Y:=Y+V; V:=(X/Y-Y)/2;

                         END;

   WRITELN ('X = ',X:10,'Y = ',Y:10);

END.

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

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

Форма цикла REPEAT:

REPEAT S

UNTIL B(X) ;

где    В(Х) - логическое выражение; условие завершения цикла;

S - один и более операторов тела цикла; в нем должно быть изменение операндов выражения В(Х).

REPEAT и UNTIL B(X) определяют начало и условие завершения цикла. Тело цикла REPEAT выполняется хотя бы один раз. После каждого выполнения тела цикла анализируется значение результата выражения В(Х): если оно ложно (false), выполнение тела цикла повторяется, если истинно (TRUE) - цикл завершается.

Рис. 21

Схема цикла REPEAT

Пример 9. Дано X > 1. Вычислить и вывести степени X до тех пор, пока вычисленное значение станет больше 108. Схема алгоритма дана на рис. 22, программа - в листинге 21.

Рис. 22

Схема алгоритма вычисления и вывода степеней X

Листинг 21. Вычисление и вывод степеней X с использованием оператора REPEAT.

PROGRAM  PR;

VAR X,Y:LONGINT;

BEGIN READ (X); {- ввод значения X с клавиатуры }

     Y:=1;   { - установка начального значения Y }
      
REPEAT { - начало цикла }

           Y:=Y * X ; {- вычисление очередного Y }

           WRITELN (Y); { - вывод очередного Y }

      UNTIL  Y > 1Е8 ;  { - анализ конца цикла } END.

Пример 10. Дано X и EPS - точность вычисления. Итерационным методом Ньютона вычислить и вывести значение корня квадратного из X. Схема алгоритма дана на рис. 23, программа - в листинге 22.

Рис. 23

Схема алгоритма вычисления и вывода корня квадратного

Листинг 22. Вычисление и вывод корня квадратного с использованием оператора REPEAT.

VAR X,Y,V,EPS:REAL;
BEGIN X:=4; EPS:=1E-4;

        Y:=1; V:=0;

     REPEAT Y:=Y+V; V:=(X/Y-Y)/2;

     UNTIL ABS(V)< EPS;

     WRITELN('X =  ',X:10,'Y = ',Y:10);

END.

Вложенные циклы

Циклы могут быть простые или вложенные (кратные, циклы в цикле). Вложенными могут быть циклы любых типов: FOR, WHILE, REPEAT. Структура вложенных циклов на примере цикла типа FOR дана в листинге 23.

Листинг 23. Уровни вложенности циклов на примере цикла FOR.

Уровни вложенности циклов:

FOR I:=1 ТО IK DO  BEGIN   ...

   FOR J:=1 TO JK DO BEGIN   ...

       FOR К:=1 TO KK DO BEGIN  ...   

                         END;   ...  3     2     3

                     END;    ...
END;

Каждый внутренний цикл должен быть полностью вложен во все внешние циклы. "Пересечения" циклов не допускаются.

Пример 11. Дана матрица А из двух строк и четырех столбцов. Определить и вывести сумму всех ее элементов. Схема алгоритма примера дана на рис. 24, программа - в листинге 24.

Рис. 24

Схема алгоритма суммирования значений элементов матрицы

Листинг 24. Определение и вывод суммы элементов матрицы.

CONST А:ARRAY [1..2,1..4] OF INTEGER = ((11,12,13,14),

                                       (21,22,23,24));

VAR I,J,S:INTEGER;

BEGIN  S:=0;

        FOR I:=1 TO 2 DO

            FOR J:=1 TO 4 DO S:=S +A[I,J];

 WRITELN('S = ',S:12)

END.

Использование перечисляемых типов данных для организации циклов

Перечисляемые данные можно использовать в операторах CASE и FOR, например для их перебора в последовательности слева направо.

Пример 12. Перебрать значения перечисляемого типа и вывести значения цвета светофоров. Схема алгоритма дана на рис. 25. Программа примера -в листинге 25. S - параметр цикла - перечисляемого типа.

Рис. 25

Схема алгоритма перебора и вывода значений цветов светофора

Листинг 25. Использование перечисляемого типа данных.

PROGRAM  ORDTYPE; {Перебор и  вывод цветов  светофора}

TYPE  SVET =(KR,GEL,ZEL); {SVET - перечисляемый тип}

VAR N : BYTE;

   S : SVET;

BEGIN

                              {ИЛИ :}

   FOR N:=0 TO 2 DO       {FOR S := KR TO ZEL DO}

       CASE SVET(N)OF      {CASE S OF}

            KR : WRITELN ('КРАСНЫЙ');

           GEL : WRITELN ('ЖЕЛТЫЙ');

           ZEL : WRITELN ('ЗЕЛЕНЫЙ');

       END

END.

В примере листинга 25 приведены 2 эквивалентные возможности обращения к значению элемента перечисляемого типа данных:

  1.  с помощью перебора N - номеров значений типа SVET и обращения к значению перечисляемого типа в виде SVET  (N);
  2.  с помощью перебора значений переменной S типа SVET оператором заголовка цикла FOR.

Дополнительные операторы аля циклов

Язык Паскаль имеет 2 стандартные процедуры: BREAK и CONTINUE. Они могут использоваться в циклах всех видов: FOR, REPEAT и WHILE. Вызовы этих процедур могут быть только в пределах тела цикла. Обе процедуры без параметров. Вызовы этих процедур можно назвать полноправными операторами языка, потому что они компилируются не в вызов подпрограмм, а в машинные команды безусловного перехода.

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

Рис. 26

Схема оператора цикла FOR с оператором BREAK

Процедура CONTINUE вызывает прекращение текущей итерации (выполнения) ближайшего охватывающего цикла и переход к анализу конца цикла и выполнению следующей итерации. Схематично переход в теле цикла FOR по CONTINUE представлен на рис.27.

Пример программы с использованием процедур BREAK и CONTINUE приведен в листинге 26. В первой части примера производится суммирование и вывод всех элементов массива А, кроме отрицательных и нулевых элементов массива. Во второй - при обнаружении первого отрицательного элемента происходит переход за тело цикла суммирования.

Листинг 26. Использование процедур BREAK и CONTINUE.

CONST  A:ARRAY [1..5] OF INTEGER=(1,2,-3,-4,5);

VAR  S,I: INTEGER;

BEGIN S:=0;{Суммирование всех элементов, кроме A[I]<=0:}

    FOR I:=1 TO 5 DO BEGIN

        IF A[I]<=0 THEN CONTINUE;

        WRITELN ('A[',I,']=', A[I]);

        S:=S+A[I];

                  END;

        WRITELN ('S = ',S); { - вывод суммы }

    S := 0; { Суммирование до первого A[I] < 0: }

    FOR I:=1 TO 5 DO  BEGIN

      IF A[I]<0 THEN BREAK;

      S := S + A[I];

    END;

  WRITELN ('S = ',S); { - вывод суммы }

END.

Рис. 27 Схема оператора цикла FOR с оператором CONTINUE

Для "перескакивания" через границы нескольких циклов надо использовать переходы с помощью оператора GOTO.

Контрольные вопросы

  1.  Что такое алгоритмический язык?
  2.  Поясните структуру языка Паскаль.
  3.  Назовите основные типы данных языка Паскаль.
  4.  Назовите основные операторы языка Паскаль.
  5.  Поясните структуру программы на языке Паскаль.
  6.  Что определяет тип данных?
  7.  Что такое идентификатор, как он формируется?
  8.  Поясните форму объявления констант и переменных.
  9.  Поясните, что такое совместимость типов данных.

Поясните основные характеристики вещественных,    целых, логических, символьных, строковых, перечислимых и диапазонных типов.

  1.  Что такое массив? Назовите его основные атрибуты.

12.Что такое запись фиксированная, вариантная? Как их объявить?

  1.  Что такое типизированная константа?
  2.  Что такое оператор присваивания?
  3.  Назовите типы выражений Паскаля и правила их написания.
  4.  Поясните назначение и правила использования оператора GOTO.
  5.  Поясните назначение,     схемы и правила использования  операторов  IF,  CASE,FOR, WHILE, REPEAT.
  6.  Поясните назначение и правила использования операторов BREAK и CONTINUE.


 

А также другие работы, которые могут Вас заинтересовать

28183. Поляризация света. Способы получения поляризованного света. Закон Малюса. Поляризационные призмы 238.5 KB
  Явление поляризации света было открыто Эразмусом Бартолинусом, датским учёным, в 1669 году. В своих опытах Бартолинус использовал кристаллы исландского шпата, имеющие форму ромбоэдра. Если на такой кристалл падает узкий пучок света, то, преломляясь
28184. Распространение света в изотропных средах. Отражение и преломление света на границе между диэлектриками. Основные законы геометрической оптики. Формулы Френеля 146 KB
  При этом падающий отражённый и преломленный лучи лежат в одной плоскости с перпендикуляром восстановленным к границе раздела сред в точке падения О. Углы соответственно углы падения отражения преломления волн. Амплитуду падающей волны разложим на составляющие Ер параллельную плоскости падения и Еs перпендикулярную плоскости падения. Для составляющих вектора Е перпендикулярных плоскости падения рисунок 3 выполняются условия в которых индексы при Е и p при Н опущены: .
28185. Линза как оптическая система. Аберрации линз 126 KB
  На рисунке 1 введены обозначения: a1 расстояние от вершины первой преломляющей поверхности до осевой точки A предмета; a´1 расстояние от вершины первой преломляющей поверхности до изображения A´ получаемого после преломления на ней; a2 расстояние от вершины второй преломляющей поверхности до точки A´; a´2 расстояние от вершины второй преломляющей поверхности до изображения A´´ построенного линзой. Для любой центрированной оптической системы выполняется условие Лагранжа Гельмгольца: ...
28186. Интерференция света. Условия возникновения стационарной интерференции света. Интерференционные схемы с делением волн по фронту (опыт Юнга, зеркало Ллойда, бизеркало Френеля, бипризма Френеля). Влияние размеров источника на интерференционную картину. Усло 159 KB
  Интерференционные схемы с делением волн по фронту опыт Юнга зеркало Ллойда бизеркало Френеля бипризма Френеля. Пусть в точках А и В рисунок 1 находятся два монохроматических источника волны от которых доходят до точки наблюдения С. Взаимное усиление или ослабление двух или большего числа волн при их наложении друг на друга при одновременном распространении в пространстве называется интерференцией волн. Интерференционная картина ИК распределение интенсивностей в области волнового поля где волны налагаются друг на друга.
28187. Интерференционные схемы с делением волн по амплитуде. Интерференция в тонких пленках. Полосы равной толщины и полосы равного наклона. Кольца Ньютона. Применение интерференции света 134 KB
  Пусть на тонкую прозрачную пластинку постоянной толщины рисунок 1 из вакуума падает волна с плоским фронтом ей соответствует пучок параллельных лучей сформированная с помощью точечного источника и линзы в фокусе которой источник находится. Так как условия распространения всех лучей падающих на пластинку в этом опыте одинаковы то для лучей и а также других пар лучей одинаковых с ними по происхождению оптическая разность хода будет одинаковой: 1 где n показатель преломления материала...
28188. Двухлучевые интерферометры. Интерферометры Рэлея, Жамена, Майкельсона, Линника. Многолучевые интерферометры (интерферометр Фабри-Перо, пластинка Люммера-Герке). Интерференционные фильтры 110 KB
  Если зеркало М1 расположено так что М´1 и М2 параллельны образуются полосы равного наклона локализованные в фокальной плоскости объектива О2 и имеющие форму концентрических колец. Если же М1 и М2 образуют воздушный клин то возникают полосы равной толщины локализованные в плоскости клина М2 М1 и представляющие собой параллельные линии. Если поверхность исследуемого образца имеет дефект в виде впадины или выступа высотой l то интерференционные полосы искривляются. Если то интерференционная полоса искривляется так что занимает...
28189. Дифракция света. Принцип Гюйгенса-Френеля. Метод зон Френеля. Дифракция света на круглом отверстии, на круглом препятствии и прямолинейном крае экрана 97.5 KB
  Дифракция света на круглом отверстии на круглом препятствии и прямолинейном крае экрана Дифракция волн от лат. diffractus разломанный преломлённый в первоначальном узком смысле огибание волнами препятствий. В современном более широком смысле под дифракцией понимают любое отклонение от законов геометрической оптики при распространении волн. При таком общем толковании дифракция волн переплетается с явлениями распространения и рассеяния волн в неоднородных средах.
28190. Дифракция света на щели. Дифракция света от многих щелей. Дифракционная решетка и ее характеристики 123 KB
  Дифракционная решетка и ее характеристики Дифракция волн от лат. diffractus разломанный преломлённый в первоначальном узком смысле огибание волнами препятствий. В современном более широком смысле под дифракцией понимают любое отклонение от законов геометрической оптики при распространении волн. Вследствие дифракции волны могут попадать в область геометрической тени.
28191. Распространение света в анизотропных средах. Двойное лучепреломление. Построение Гюйгенса для одноосных кристаллов 81.5 KB
  Даже если первичный пучок перпендикулярен к естественной грани кристалла преломленный пучок разделяется на два рисунок 2 причем один из них представляет продолжение первичного а второй уклоняется так что угол преломления отличен от нуля. При вращении кристалла необыкновенный луч перемещается вокруг обыкновенного по окружности рисунок 2. Для любого кристалла можно найти три таких направления главные направления кристалла в которых при этом . Направления перпендикулярные таким сечениям называют оптическими осями кристалла...