34855

Процедуры прерываний

Лекция

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

00 Типизированные константы Пример . c1 и c2 идентификаторы обычной и типизированной констант type тип константы данный элемент присутствует в описании только типизированной константы это и является её основной внешней отличительной особенностью; vlue значение...

Русский

2013-09-08

78 KB

0 чел.

Процедуры прерываний

Обработка <Ctrl + Break>

Прерывание исполнения программы можно вызвать нажатием комбинации клавиш Ctrl + Break (применяется, если программа «зависла»)

Процедура Break

Осуществляет принудительный выход из цикла.

Если цикл организован с помощью оператора FOR, WHILE или REPEAT, применение процедуры Break приводит к передаче управления следующему (после тела цикла) оператору. Это напоминает действие оператора GOTO, осуществляющего переход к метке, находящейся сразу после тела цикла.

При вызове процедуры Break вне цикла FOR, WHILE или REPEAT имеет место ошибка.

Процедура Continue

Осуществляет переход к следующей итерации цикла.

Если цикл организован с помощью оператора FOR, WHILE или REPEAT, применение процедуры Continue прерывает текущую итерацию и инициирует переход к следующей итерации. При вызове процедуры Continue вне цикла FOR, WHILE или REPEAT имеет место ошибка.

Процедура Exit

Осуществляет выход из текущего блока программы.

Если текущим блоком является тело программы, обращение к процедуре Exit инициирует завершение программы.

Процедура Halt(Cod)

Останавливает выполнение программы и передаёт управление операционной системе. Cod – необязательный параметр, содержащий код завершения программы.

Пример:

Найти первое отрицательное число во входном потоке из вещественных чисел (не более 100)

--------------------------------------------------------------------

Program L_6;

 Var i: integer;

        a: real;

    begin

        for i:=1 to 100 do

                 begin

                 read(a);

                  if a>=0 then continue; {при выполнении условия изменяется

                                                                               параметр цикла  и цикл  повторяется сначала}

                                 writeln(‘первое отр. число =,а:5:2’);

                                 Break      {выход из цикла}

                             end;

 end.

---------------------------------------------------------

Ответ:

4

2

1

-8

первое отр число=-8.00

----------------------------------------------------------

Типизированные константы

                                                Пример

                                     .

                                                                               .

                                               const

 Вид <идентификатор> = <значение>                 c1=value

  Вид <идентификатор> : <тип> = <значение>       c2:type=value

                                                                                .

                                                                                .

         Здесь для сравнения даны описания обычной(c1) и типизированной(c2) констант.

        c1 и c2 – идентификаторы обычной и типизированной констант

        type – тип константы, данный элемент присутствует в описании только типизированной константы – это и является её основной внешней отличительной особенностью;

       value – значение, присваиваемое константе (как типизированной, так и нетипизированной) при объявлении.

        И те и другие константы описываются в разделе описаний констант.

Константы вида <идентификатор>=<значение> изменять в программе нельзя.

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

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

Константы простых типов

Здесь всё просто. Указывается идентификатор константы, её тип и значение.

Const

     a1 : real = 6.565;

     symb : char = ’B’;

     start : integer = 10;

     rest : integer = 20;

 

Идентификаторы типизированных констант нельзя использовать в описаниях других констант, типов и переменных. Например, если, используя объявленные выше константы start и rest попробовать объявить переменную:

Var

  a : array [start .. rest] of char;

то будет зафиксирована ошибка.

Также не допускается в разделе описания констант объявлять типизированные (а также и обычные) константы списком:

Const

  symb1, symb2, symb3 : char=’B’;

Константы – строки

Пример

   c5 : string = ‘привет’;

   rl : string = ‘простые типы’;

 

Помимо идентификатора, типа и начального содержимого строки, указывается только её максимальная длина.

Если максимальная длина не указана, по умолчанию эта величина принимается равной 255 символов. Вот пара примеров:

Const

  readline : string [10] = ‘Глава’;

          AB : string [26] = ‘abcdefghijklmopqrstuvwxyz’;

Константы – массивы

В константах-массивах список констант разделяется запятыми и заключается в круглые скобки:

 mass : array [0 .. 4] of byte = (1, 2, 3, 7, 8);

vector : array [1 .. 3] of real = (1.5, 0.8, -5.4);

Массив символов может быть описан следующими эквивалентными записями:

mas : array [-1 .. 2] of char = ‘abcd’;

или

mas : array [-1 .. 2] of char = (‘a’, ’b’, ’c’, ’d’);

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

Например:

Const

 matr : array [1 .. 2, 1 .. 4] of byte = ((0, 1, 3, 5),(4, 1, 2, 3));

a : array [0 .. 1, 1 .. 2, 1 .. 3] of byte = (((0, 2, 1),(4, 3, 3)),((6, 7, 8),(12, 11, 13)));

Константы-записи

         Определение константы-записи имеет вид:

<идентификатор> : <тип записи> = (<список значений полей>);

          

 Список значений полей представляет собой список из последовательностей вида: имя поля, двоеточие и константа. Поля должны указываться в той же последовательности, в какой они перечислены в объявлении типа.

Например:

    Type

          Port = record

                    x, y : real;

      end;

   const

       s : port = (x : 1.5; y : 1.2);

Константы-множества

Описание типизированной константы-множества, помимо идентификатора константы и идентификатора типа, должно содержать перечень начальных значений, разделённых запятыми и заключённых в квадратные скобки. Если группа начальных значений образует неразрывную последовательность, она может быть представлена в виде диапазона. Вот примеры объявлений констант-множеств:

Type

   a1 : set of  1..15;

   a2 : set of char;

const

   b1 : a1 = [1, 2, 3..5, 8, 12..15];

   b2 : a2 = [‘a’, ‘d’, ‘f..i’, ‘l’];

   b3 : set of ‘0’..’9’ = [‘1’, ‘3’, ‘5’..’8’];

В этом примере в описаниях первых двух констант (b1 и b2) использованы ранее объявленные типы (a1 и a2). В описании третьей константы (b3) использован анонимный тип (set of ‘0’..’9’).

Константы – указатели

При объявлении константы–указателя для определения её значения обычно используется константное адресное выражение.

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

Рассмотрим примеры:

   Type

           p = ^byte;

    const

           pp : p = nil;

           pb : byte = 0;

           pa : p = @pb;

Здесь объявлен тип p, являющийся указателем на адрес в памяти, по которому содержатся данные типа Byte. Кроме того, объявлены три константы-указателя – pp, pa, pb. Первая константа (pp) имеет тип p и ей присвоено значение nil.

Вторая константа (pb) объявлена с типом byte, и, наконец, третья константа (pa) имеет тип p, (как и pp) и ей присвоено значение @pb .

Иными словами, pa – это указатель на адрес в памяти, по которому содержится константа pb. Здесь nil и @pbконстантные адресные выражения. (@ - оператор, позволяющий создавать указатели).

Структура программы

Любая программная единица включает следующие разделы:

<Объявление программной единицы>

{Раздел описаний}

BEGIN

{Раздел исполняемых операторов}

END.    {символ конца программной единицы} 

<Объявление программной единицы> - заголовок программы, процедуры или функции. Заголовок программы можно опускать, для процедур и функций  наличие заголовка обязательно.

{Символ конца программной единицы}- это точка для программы  или «;» для процедуры или функции.

В {разделе описаний} объявляются идентификаторы типов, объектов, констант, переменных, а также метки, процедуры и функции.

Каждый блок определяется своим ключевым словом. Структура программы имеет вид:

             PROGRAM <имя программы>;

                   USES     <список библиотечных модулей>;

                  LABEL  <список меток в основном блоке>;

                  CONST  <определение констант>;

                     TYPE

                            <определение типов>;

                     VAR

  <определение глобальных переменных>

  <определение процедур>

  <определение функций>

                  BEGIN

   <основной блок программы>

                   END.

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

                  USES CRT, DOS, GRAPH;  

производится подключение трех модулей СRТ, DOS и GRAPH.

Модуль СRТ содержит процедуры и функции для управления вывода текста на дисплей, звуковым генератором и чтения с клавиатуры. DOS содержит программы операционной системы. GRAPH содержит комплекс графических программ универсального назначения.

В блоке LABEL перечисляются через запятую метки, используемые в программной единице. Метка может содержать числовое значение от 0 до 9999 либо являться идентификатором, состоящим не более чем 63 символов. Например:

LABEL 1, 400, М1, EPS;

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

Блок CONST описывает константы двух видов:

CONST <имя1>=<константа 1>;

                       <имя2>=<константа 2>;

                 …….

или

        CONST <имяК>:<тип>=<константаК>;

                     < имяR>: <тип>=<константаR>;

                 ……..

Например:

CONST 

NI = 100;

d : real = 7.65432;

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

 

Блок ТУРЕ содержит определения вводимых программистом нестандартных  типов в следующих формах

TYPE <идентификатор>=(список компонентов);

или

TYPE <идентификатор>=<описание типа> или<имя другого типа>;

Пример:    TYPE FAMILY= (FATHER, MATHER);

Если в Паскале используются только стандартные типы, например: INTEGER, REAL, то этот блок опускается.

Блок VAR описывает имена переменных, а также имена массивов:

VAR

A1, A2.....An: <тип1>;

В1, В2.....Вn: <типК>;

<имя массива>: АRRАY [диапазон] OF <тип>;

 

где буквами А1, B1 указаны имена переменных, а <тип1>.<типК> - типы соответствующих переменных, [диапазон]  указывает начальное и конечное значения индексов массива, <тип> задает тип элементов массива.

Пример:

VAR

А, В, С: INTEGER;             {объявлены три переменные целого типа} 

   D, M: REAL:                    {объявлены две вещественные переменные}

    MASS1: ARRAY [1..10] OF REAL;      {массив из 10 чисел} 

    MASS2: ARRAY [-2..2] OF CHAR;      {массив из пяти символов}

Основной  блок программы начинается с ключевого слова BEGIN и заканчивается  END, после которого ставится точка. Основной блок содержит программу из выполняемых операторов, в которой используется все, что было объявлено и описано в разделе описаний. Пример программы, явно преобразующей вещественные числа в целые:

PROGRAM INTREAL:

VAR 

А, В, С : INTEGER;

X,Y, Z : REAL;

BEGIN

READ (X, Y);

Z:=Y+X;

A:=TRUNC(Z);               {выделение целой части} 

B:=ROUND(Z);               {* округление *}

C:=В-А;

WRITELN(‘Z=', Z, 'A=', А, 'B=', В, 'C=', С);

END.

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

Пример. Программа, вычисляющая сумму двух чисел.

Program pr1;                                        {заголовок программы}

vаг                                                       {раздел объявления переменных}

 x, y, summa: real;

 begin                                                   {тело программы} 

   Write ('Введите числа Х и Y ');      {вывод сообщения на экран}

   ReadLn (Х, Y);                                 {чтение двух чисел}

     Summa:= Х + Y;                             {определение суммы} 

       WriteLn ('Сумма чисел Х и Y равна ', Summa)   {вывод результата}

 End.


 

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

29448. Модель LM 30.14 KB
  В основе построения кривой LM лежит кейнсианская теория предпочтения ликвидности объясняющая как соотношение спроса и предложения реальных запасов денежных средств определяют ставку процента. Рассмотрим построение кривой LM на основе графического анализа равновесия денежного рынка. Графический вывод кривой LM первый способ На рис. Пересечение кривой спроса с кривой предложения денег дает нам ставку процента r1 которая уравновешивает рынок денег при данном уровне дохода Y1.
29451. Экономические отношения в системе всемирного хозяйства.Основные формы ЭО 15.16 KB
  Международные экономические отношения включают многоуровневый комплекс экономических отношений между отдельными странами их региональными объединениями и субъектами а также отдельными предприятиями транснациональными многонациональными корпорациями в системе мирового хозяйства. При рассмотрении международных экономических отношений с точки зрения науки объектом изучения становится не экономика зарубежныхстран а особенности их экономических отношений причем только наиболее часто повторяющиеся типичные характерные определяющие...
29452. Понятие критических точек инфляции. Инфляция в РБ. Степень развития инфляции 13.41 KB
  Понятие критических точек инфляции.Степень развития инфляции Крит.В условиях критической точки инфляции уменьшаются поступления в бюджет особенно прямых налогов так как они исчисляются с доходов и имущества имеющих оценку в предшествующий период.Следовательно на начальной стадии развития инфляции предприниматели и население выражают определенную веру в стабильность уровня цен.
29453. Потребление и сбережение, факторы на них влияющие 15.42 KB
  В условиях ее роста домашние хозяйства решают большую часть располагаемого дохода сберегать а меньшую тратить на потребление. Кейнсианцы полагают что определяющим фактором сбереженийинвестиций является вовсе не процентная ставка а сама величина располагаемого дохода. При этом первоначально из дохода вычитается сумма на потребление как необходимое условие воспроизводства человека а оставшаяся сумма идет на осуществление сбережений. Функция потребления показывающая зависимость величины потребительских расходов С от нескольких...
29454. Инвестиционный спрос и факторы на него влияющие. Модель S-I 56.48 KB
  Среди них определяющим фактором является ставка процента. Если перед предпринимателем стоит вопрос об увеличении инвестиций или другой альтернативе вложении свободных денег в банк для получения дохода то он не увеличит инвестиции если ставка процента в банке будет больше чем норма прибыли от инвестиций. Если ставка процента в банке высокая то возможность для получения кредита ограничена и инвестиции уменьшаются. Если ставка процента низкая то предприниматель может увеличить инвестиции.