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.


 

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

21748. Передовые методы организации работ по добыче полезного ископаемого 66 KB
  Структура рабочих мест на участке: начальник участка – 1 чел.; заместитель начальника участка – 1 чел.; геолог – 1 чел.; маркшейдер – 1 чел.
21750. Организация и планирование ремонта оборудования 24 KB
  Основными задачами ремонтных работ на шахте являются: обеспечение безаварийной и безопасной работы оборудования; сохранности состояния устойчивой работоспособности; продление срока службы оборудования; увеличение производительности и степени использования оборудования во времени срок службы и производительность оборудования должны соответствовать расчетным. Ремонтные работы и обслуживание должны быть организованы так чтобы они обеспечивали квалифицированный уход за оборудованием в процессе эксплуатации а также систематический осмотр и...
21751. Системы и виды ремонта шахтного оборудования 25.5 KB
  Эта система представляет собой комплекс циклически повторяющихся технических и организационных мероприятий предусматривающих проведение запланированных профилактических работ по осмотру уходу и надзору с устранением встречающихся неисправностей а также ремонтов частично или полностью восстанавливающих работоспособность оборудования. Профилактические работы составляют сущность технического обслуживания оборудования и транспортных средств между ремонтами. Ремонт оборудования кроме стационарных установок должен сводиться к...
21752. Ремонтные нормативы и графики плановых осмотров и ремонта оборудования 22.5 KB
  Непосредственными ремонтными нормативами являются: длительность ремонтного цикла межремонтные периоды продолжительность простоя в ремонте структура ремонтного цикла. Длительность ремонтного цикла – это промежуток времени в часах между двумя плановокапитальными ремонтами. Структура ремонтного цикла – это определенная схема чередования видов ремонта на протяжении ремонтного цикла. Структура ремонтного цикла строится на основе группировки деталей и узлов по срокам их службы износостойкости.
21753. Организация производства. Основные понятия и определения 27 KB
  Организация производства – это комплекс мероприятий направленных на рациональное сочетание процессов труда с вещественными элементами производства средствами производства и расходными материалами производства в пространстве и времени с целью увеличения эффективности производственного процесса т. При определении организации производства следует разделять: Организацию предприятия как производственной системы на длительный срок. Особенности горного предприятия и анализ их влияния на организацию производства: Высокая...
21754. Классификация штата работающих на шахте 40.5 KB
  Рабочие трудящиеся занятые непосредственно на добыче угля на рабочих местах участков и цехов обслуживающих или создающих условия для протекания производственного процесса . Младший обслуживающий персонал трудящиеся занятые уборкой и отоплением помещений обслуживанием рабочих и руководящего персонала к ним относятся уборщицы дворники кубовщицы гардеробщицы рассыльные шоферы легковых машин и служебных автобусов. Ученики лица которые обучаются на предприятии под руководством рабочих и служащих рабочим профессиям или...
21755. Организация табельного учета 24.5 KB
  Табельный учет выполняет следующие функции: контроль за своевременной явкой рабочих и служащих на работу фиксирование опозданий и невыходов; проверку нахождения на местах работы работников учтенных в числе явившихся на работу; проверку правильности использования внутрисменных обеденных перерывов; контроль за своевременностью ухода работников с работы по окончании смены; контроль за временными уходами с работы по разрешению администрации а также учет работников находящихся в отпусках командировках выполняющих...
21756. Режим работы шахты и ее участков 25 KB
  Под режимом работы понимают степень использования основных фондов и производственных мощностей во времени. Режим работы – одна из важнейших сторон организации производства характеризующая продолжительность использования средств труда при определенной интенсивности смены суток года во времени. Режим работы устанавливается для производственных единиц ее участковцехов отдельных бригад и рабочих.