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.


 

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

16283. Система проектирования электронных схем. Логические элементы 153 KB
  Лабораторная работа № Тема: Система проектирования электронных схем. Логические элементы Цель: Научиться с помощью системы EWB анализировать работу электронных схем работать с электронным знакогенератором и осциллографом. Оборудование: IBM PC Программное
16284. Исследование принципиальных электрических схем простых логических элементов (И, ИЛИ, НЕ) 47 KB
  Лабораторная работа № Тема: Исследование принципиальных электрических схем простых логических элементов И ИЛИ НЕ Цель работы: Проанализировать работу принципиальных электрических схем простых логических элементов И ИЛИ НЕ Оборудование:IBM PC Программно
16285. Анализ работы триггеров 78 KB
  Лабораторная работа № Тема: Анализ работы триггеров. Цель: С помощью системы EWB проанализировать работу триггеров. Оборудование. IBM PС. Программное обеспечение: windows ewb. Вопросы для повторения: Что такое триггер Какие бывают триггеры3.Принцип работ триггер...
16286. Анализ работы регистров 35.5 KB
  Лабораторная работа № Тема: Анализ работы регистров Цель: С помощью системы EWB проанализировать работу электронных схем регистров. Оборудование: IBM PC Программное обеспечение: WINDOWS EWB Вопросы для повторения: Что такое регистр Классификация...
16287. Исследование работы дешифраторов 34 KB
  Лабораторная работа № Тема: Исследование работы дешифраторов. Цель работы: Исследовать работу дешифраторов с помощью программы EWB. Оборудование: IBM PC. Программное обеспечение: WINDOWS EWB Вопросы для повторения: Назначение дешифраторов. Принцип действия де...
16288. Анализ работы цифровых индикаторов 42 KB
  Лабораторная работа № Тема: Анализ работы цифровых индикаторов Цель работы: Исследовать работу цифровых индикаторов с помощью программы EWB. Оборудование: IBM PC. Программное обеспечение: WINDOWS EWB. Вопросы для повторения: Что такое цифровые индик
16289. Исследование работы Постоянно запоминающего устройства(ПЗУ) в интегральном исполнении 208.5 KB
  Лабораторная работа №13 Тема: Исследование работы Постоянно запоминающего устройстваПЗУ в интегральном исполнении.. Цель работы: Исследовать работу постоянно запоминающего устройства с помощью программы EWB. Оборудование: IBM PC. Программное обеспечение: WINDOWS EWB ...
16290. Исследование принципиальных электрических схем сложных логических элементов (И – НЕ, ИЛИ – НЕ) 42 KB
  Лабораторная работа № Тема: Исследование принципиальных электрических схем сложных логических элементов И – НЕ ИЛИ – НЕ. Цель: Проанализировать работу принципиальных электрических схем сложных логических элементов И – НЕ ИЛИ – НЕ. Оборудование: IBM PC Программн
16291. Анализ работы сумматоров 55.5 KB
  Лабораторная работа № Тема: Анализ работы сумматоров. Цель работы: Исследовать работу сумматоров с помощью программы EWB. Оборудование: IBM PC. Программное обеспечение: WINDOWS EWB Вопросы для повторения: /. Что такое сумматор Чем отличается сумматор от логическог