Рефераты. Основы программирования на языке Паскаль

f: = Ord (mes);               {в f находится 6}

h: = Ord (pred(mes));     {в h находится 5}

g: = Ord (succ(mes));     {в g находится 7}

                                                                                                          END

Интервальный тип задается диапазоном изменения констант внутри какого-либо уже имеющегося перечисляемого или стандартного типа, кроме вещественного (integer, byte, booban, char). Значение первой константы должно быть меньше значения второй константы диапазона.

Туре

Dni = 1...31;

 Litera = 'a',...,'z',

Var    Rabdni,bolndni, vuhod: dni; {могут принимать значения 1-31}

  im,ident: litera; {могут принимать значения 'A'-'Z'}

Выход за пределы диапазона вызывает программное прерывание.

Допускается задание диапазона именами констант:

Const min = 1; max = 31;

Туре Dni = min…max;

Var rabdni,boldni,vuhoddni:dni;

Для интервального типа также возможно применять функции Succ, Pred, Ord.

3. Разветвляющиеся программы

 

3.1. Общие положения


До сих пор мы рассматривали линейные программы, алгоритм которых можно было представить в виде блок-схемы (рис. 3.1)


                                       










Возможны случаи, когда программа ветвится в зависимости от какого-либо условия (см. рис. 3.2). Ветвление может быть двух направлений: по принципу условие верно – идти по одной ветви, условие ложно – по другой. В этом случае применяется оператор if. возможно ветвление сразу нескольких направлений: если k=l – идти по одной ветви, если k=2 – по другой, k=3 – по третьей и т.д. в этом случае удобнее применять оператор Case.



               




3.2. Оператор goto, раздел описания меток


Последовательное выполнение операторов в программе может быть нарушено оператором перехода. Общий вид оператора: goto метка; где метка – буква, либо цифра, либо набор букв и цифр, из которых первая – всегда буква, Например, М1, LI, NK. Метка, стоящая после goto, указывает, куда нужно пойти. Достигается это тем, что если в программе находится оператор goto метка; то в этой же программе обязательно имеется какой-либо оператор вида метка: оператор; который считается помеченным, и машина, встретив goto метка; не будет выполнять оператор, записанный после оператора goto метка; а перейдет к выполнению оператора метка: оператор;


Иллюстрация:     

 а: = b+с;

с: = sgrt (a+exp(b));

goto M1;

z: = x+y;

writeln (z);

M1: S: = P;

 


В случае, если бы не было оператора goto М1; все операторы выполнялись бы последовательно один за другим. здесь же после оператора с: =... стоит goto М1; следовательно, машина не будет выполнять z:=... и writeln..., а сразу после с: =... перейдет к выполнению оператора М: S: = Р;

Метки, применяемые в программе, должны быть описаны в разделе описания меток, который желательно ставить первым среди описаний. Выглядит раздел так: Label М1, М2, L, NK; т.е. после слова Label перечисляются через запятую все метки, которые будут применяться в данном блоке (программе). Заканчивается описание символом ';'.

Пример: составить программу, вычисляющую значения функции cos х, где начальное х = 0, следующее х = 0.01 и т.д.

          Program Prim3;      Label M;       Var      x:real;   BEGIN    x:=0;         M: writeln('x=',x,'cos x = ',cos(x));            x:=x+0.01;

            goto M; readln;      END.

Программа будет работать следующим образом: х присвоится значение 0; writeln выведет на экран текст, который указан в первых кавычках х =, далее извлечет из ячейки х значение и выведет его на экран; затем снова выведет текст cos х =, затем вычислит значение cos х и выдаст его на экран, т.е. машина выведет первую строку в виде

x = 0.0000000000Е + 00 cos х = 9.9999999999Е - 01.

После этого возьмется то х, которое было извлечено из ячейки памяти х (прежнее значение х), т.е. 0.0, к нему прибавляется величина 0.01 и результат снова занесется в ячейку памяти х так, что в х будет 0.01, после этого оператор goto m; передаст управление оператору, помеченному меткой м, т.е. оператору writeln, и машина выдаст новую строку:

x = 1.0000000000Е - 02 cos х = 9.9995000041Е - 01;

– выполнит оператор

х: =x + 0.01, получит х = 0.02;

– выведет строку

x = 2.0000000000Е - 02 cos х = 9.9980000666Е – 01;

– сделает х = 0.03 и т.д., до бесконечности, так как в данном алгоритме окончание работы не предусмотрено. Для завершения работы следует применить оператор if.

3.3. Оператор if

Общий вид: If булевское выражение then оператор else оператор;

Работа оператора: вначале вычисляется булевское выражение, значение которого в конечном итоге может быть только TRUE или FALSE. Если булевское выражение TRUE, то выполняется оператор, следующий за словом then, а затем происходит переход к оператору, следующему за if. Если булевское выражение false, то выполняется оператор, следующий за словом else, затем происходит переход к оператору, следующему за оператором if.

Замечание: после оператора, следующего за then, перед else символ ';' не ставится, так как оператор if еще здесь не закончен, а ';' ставится после окончания оператора. Возможно применение сокращенного оператора if:

If булевское выражение then оператор;

Здесь, если булевское выражение true, выполняется оператор, следующий за словом then, и происходит переход к оператору, следующему за оператором if. Если булевское выражение false, то оператор if игнорируется (вообще не выполняется), а выполняется оператор, следующий за if.

Переделаем "бесконечную" программу п. 3.2. в такую, которая остановится тогда, когда х станет равным 0.1.

          Program Prim4;       Label M;       Var      x:real;

   BEGIN    x:=0;

         M: writeln('x=',x,'  cos x = ',cos(x));

            x:=x+0.01;

            if x<=0.1 then goto M; readln;

      END.

Программа выдает результаты вычислений cos(x) для х = 0.01, 0.02, 0.03 и т.д., до 0.01.

В последней программе булевское выражение х < = 0.1. Какие бывают булевские выражения? Вообще говоря, булевское выражение после вычисления всегда истинно или ложно, т.е. TRUE или FALSE. Действительно, выражение х < = 0.1 может быть истинно, если х меньше или равно 0.1, и ложно – в противном случае. Вообще булевское выражение может строиться из булевских констант TRUE и FALSE; переменных булевского типа (в которых могут храниться TRUE или FALSE); обращений к функциям, которые возвращают TRUE или FALSE и отношений, соединенных между собой булевскими операциями и круглыми скобками.

Здесь следует расшифровать, что такое отношения и булевские операции. Примером отношения может быть приведенное выше х < = 0.01, т.е. в общем случае отношение – это два арифметических выражения, соединенных между собой операциями отношения. Операции отношения: = (равно), < >  (неравно), > (больше), > = (больше или равно), < (меньше), < = (меньше или равно).

Пример отношений:                а + b < = sin(c)

exp(p) > (cos(i) - a)/sgr(b).

Как мы уже говорили, эти отношения могут быть истинны или ложны в зависимости от конкретного значения величин, в них входящих, на момент вычисления.

Логические операции – это нам уже известные. Напомним, как они работают: or (или), and (и).

Имеется описание Var A,B: boobean;

Or – логическое сложение, читается как "или". Результат операций – истина, если или А, или В – истина, и ложь, если А и B ложны.

Например:                 А                 В                    А ог В

true                   true                    true

true                   false                   true

false                 true                    true

false                 false                   false

Замечание: данная операция аналогична арифметической OR, если TRUE заменить 1, а FALSE – 0.

АND - логическое умножение, читается "и". Результат операции – истина только тогда, когда и А, и В – истина, в остальных случаях результат – ложь.

  А                        В                     A and B

                             true                      true                     true

          true                       false                   false

          false                      true                     false

          false                      false                   false

Кроме того, удобно применять однокомпонентную операцию Not, которая вводится следующим образом: если А есть TRUE, то Not А есть FALSE и если А есть FALSE, то Not А есть TRUE.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.