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.


 

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

54018. Индивид, индивидуальность, личность и общество как производители и носители культуры 37 KB
  Индивидом обычно называют единичного конкретного человека, рассматриваемого в качестве биосоциального существа. Понятие «человек», как правило, употребляют, желая показать принадлежность какого-либо лица к человеческому роду (Homo sapiens), а также тот факт, что данное лицо обладает всеобщими, свойственными всем людям чертами и качествами. От этих двух понятий необходимо отличать понятие «личность».
54019. Структура культуры и ее элементы 42.5 KB
  Структура культуры — строение культуры, состоящей из субстанциональных элементов (опредмечиваются в ее ценностях и нормах) и функциональных элементов (характеризуют процесс культурной деятельности, различные ее стороны и аспекты)...
54020. Лексические игры на уроках английского языка 28 KB
  Лексические игры используются в самых различных целях: при введении нового лексического материала для закрепления его в памяти учащихся и для развития их устной речи. Лексические игры преследуют следующие цели: познакомить учащихся с новыми словами и их сочетаниями; тренировать учащихся в употреблении лексике в ситуациях приближенных к естественной обстановке; активизировать речемыслительную деятельность учащихся; развивать речевую реакцию. Лексические игры сосредоточивают внимание учащихся исключительно на лексическом материале...
54023. I need a book. At the library 101.5 KB
  Teacher: Right you are. A book is a main source of knowledge. It is impossible to imagine our life without books. They play an important role in educating, upbringing and help us to get useful information. Where can we get books?
54024. Life of a Society. Inventors and Inventions 52.5 KB
  First I intended to use canvas to make tents and wagon coverings. But miners complained that their ordinary trousers wore out too quickly. So, I thought and thought and …
54025. Я вибираю життя без шкідливих звичок. Розвиток усного мовлення з теми 81.5 KB
  In 1870 the British Government adopted a law: every packet of cigarette must have a health warning on it. Now we have such a law in Ukraine. But very often a great number of modern advertisements show us beautiful girls or boys who smoke. And many teenagers want to imitate them. There are some rules, which don’t allow people to smoke in public places, such as cinemas, theatres, public transport etc.
54026. Ліквідація Української козацької держави 52.5 KB
  Мета: ознайомити учнів з подіями що передували процесу ліквідації Української козацької держави; розвивати навички роботи з історичною картою; вміння визначати причиннонаслідкові зв’язки подій; Виховувати в учнів почуття патріотизму інтересу і поваги до історичного минулого своєї держави. Після цього уроку учні зможуть: розкривати зміст термінів Малоросія наказний гетьман кріпацтво; називати прізвища видатних осіб цього часу; показувати на карті підручника територію Гетьманщини Запорозької Січі; розповідати про...