16831

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

Лекция

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

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

Русский

2013-06-26

1.3 MB

2 чел.

Лекция 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.


 

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

24430. Архитектура стека TCP/IP. Протокол IP. Заголовок IP-пакета. IP-адресация 238.5 KB
  Заголовок IPпакета. В его задачу входит продвижение пакета между сетями от одного маршрутизатора до другого до тех пор пока пакет не попадет в сеть назначения. Заголовок IPпакета IPпакет состоит из заголовка и поля данных. Значение длины заголовка IPпакета также занимает 4 бита и измеряется в 32 битовых словах.
24431. Протокол ARP. Протокол ICMP. Протокол UDP 124 KB
  Протокол ARP. Протокол ARP: Для определения локального адреса MAC по IPадресу используется протокол разрешения адресов Address Resolution Protocol ARP. Существует два варианта работы APR: локальная сеть с поддержкой широковещания глобальная сеть без широковещения Рассмотрим работу протокола ARP в локальных сетях с широковещанием. Для решения этой задачи протокол IP обращается к протоколу ARP.
24432. Протокол TCP. Формат заголовка TCP 135.5 KB
  Протокол TCP. Формат заголовка TCP. TCP Transmission Control Protocol гарантированный протокол транспортного уровня с предварительным установлением соединения предоставляющий приложению надёжный поток данных дающий уверенность в безошибочности получаемых данных перезапрашивающий данные в случае потери и устраняющий дублирование данных. Протокол TCP взаимодействует через межуровневые интерфейсы с ниже лежащим протоколом IP и с выше лежащими протоколами прикладного уровня или приложениями.
24433. Принципы одноадресной маршрутизации. Структура и типы записей таблицы маршрутизации. Протоколы маршрутизации 72 KB
  Принципы одноадресной маршрутизации. Структура и типы записей таблицы маршрутизации. Протоколы маршрутизации. Полученная в результате анализа информация о маршрутах дальнейшего следования пакетов помещается в таблицу маршрутизации.
24434. Функционирование NAT. Функционирование Proxy 999 KB
  Диаграммы рисуют для визуализации системы с разных точек зрения. Теоретически диаграммы могут содержать любые комбинации сущностей и отношений. Всего UML предлагает девять дополняющих друг друга диаграмм входящих в различные модели: диаграммы вариантов использования; диаграммы классов; диаграммы пакетов: диаграммы последовательностей действий; диаграммы кооперации: диаграммы деятельностей: диаграммы состояний объектов: диаграммы компонентов: диаграммы размещения. Диаграммы вариантов использования.
24435. Служба DNS. Иерархические доменные имена. Полномочные серверы DNS 107.5 KB
  Служба DNS. Полномочные серверы DNS. Служба DNS Широковещательный способ установления соответствия между символьными именами и локальными адресами хорошо работает только в небольшой локальной сети не разделенной на подсети. Таким решением стала централизованная служба DNS Domain Name System система доменных имен основанная на распределенной базе отображений доменное имя IPадрес.
24436. Назначение и возможности макросредств в ассемблере 146 KB
  Он вставляет вместо вызова команды которые соответствуют макросу. Макроопределение группа команд определяющая действие макрокоманды. При описании макрокоманды используется оператор MACRO. Макрокоманды позволяют сократить размер выполняемой программы за счет описания повторяющихся участков однажды.
24437. Теория дислокаций 231 KB
  Дефектами кристалла называют всякое нарушение трансляционной симметрии кристалла — идеальной периодичности кристаллической решётки. Различают несколько видов дефектов по размерности. А именно, бывают нульмерные (точечные), одномерные (линейные), двумерные (плоские) и трёхмерные (объемные) дефекты.
24438. Основные функции компиляторов 209 KB
  Система прерывания ОМЭВМ. Непосредственной причиной такого переключения процессора с одной программы на другую является сигнал прерывания причем характер новой программы которую процессор начинает выполнять в результате воздействия сигнала прерывания и которая называется программой обработки прерывания зависит от источника возникновения этого сигнала. В большинстве случаев возникновение сигналов прерывания не планируется в выполняемой текущей программе а является по отношению к ней независимым или внешним событием. В зависимости от...