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.


 

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

39900. Решение задач автоматизации процессов тестирования знаний и обработки результатов 3.09 MB
  В аналитической части описаны процессы тестирования знаний и обработки результатов. Для лучшего понятия предметной области построены модели ASIS. Произведен анализ систем схожего направления, выделены их достоинства и недостатки. Проведены выводы и приведены обоснования необходимости разработки, цели и задачи, объект и предмет исследования, определены функции, которые должны быть реализованы в разрабатываемой системе.
39901. Застройка территории микрорайона 6.34 MB
  Местоположение проектируемого микрорайона Под разработку дипломного проекта выбрана первая очередь застройки территории микрорайона предназначенной под жилую застройку. Характеристика существующих инженерных коммуникаций По периметру территории находятся объекты инженерной инфраструктуры а именно газопровод высокого давления и магистральный водопровод...
39902. Карстовые явления и процессы в Нижегородской области 2.2 MB
  В Нижегородской области карстовые процессы значительно осложняют строительство и эксплуатацию зданий и сооружений. Вследствие карстовых деформаций в разное время произошло несколько крупных аварий анализ которых показал что во всех случаях были допущены принципиальные ошибки на различных стадиях строительного освоения: выборе площадки инженерных изысканиях проектировании строительстве или эксплуатации сооружений. Карст представляет собой совокупность геологических гидрогеологических и или техногенных процессов и явлений обусловленных...
39903. Статистические методы в прикладных исследованиях 286.67 KB
  Расчет оплаты труда работников участвующих в пассивном эксперименте представим в виде таблицы: № п п Исполнитель Занятость Т ч.Охрана труда Анализ условий труда программиста. В связи с этим была создана и развивается наука о безопасности труда и жизнедеятельности человека. Охрана здоровья трудящихся обеспечение безопасности условий труда ликвидация профессиональных заболеваний и производственного травматизма составляет одну из главных забот человеческого общества.
39904. Разработка информационной системы автоматизации фронт-офисных задач в гостиничном бизнесе 2.04 MB
  АНАЛИЗ СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ MS SQL SERVER И ИНТЕГРИРОВАННОЙ СРЕДЫ РАЗРАБОТКИ BORLAND C BUILDER. Анализ системы управления базами данных. Масштабируемый доступ к базам данных. Проектирование базы данных Гостиница SRL Kiwiban.
39905. Финансы предприятия 415 KB
  Этот коэффициент характеризует степень финансового риска проекта для собственников предприятия и кредиторов и обычно анализируется банками при решении вопроса о предоставлении долгосрочного кредита; коэффициент покрытия долгосрочных обязательств отношение чистого прироста свободных средств сумма чистой прибыли после уплаты налога амортизации и чистого прироста собственных и заемных средств за вычетом осуществленных в отчетном периоде инвестиций к величине платежей по долгосрочным обязательствам погашение займов проценты по ним. Норма...
39907. Информация и информационные технологии 292.28 KB
  компьютер становится инструментом непрофессионального пользователя первые персональные компьютеры а несложные информационные системы ИС средством поддержки принятия решений. Как следствие этой проблемы создавались системы которые пользователи плохо воспринимали и несмотря на их достаточно большие возможности не использовали в полной мере. электронные технологии основным инструментарием которых становятся большие ЭВМ и создаваемые на их базе автоматизированные системы управления АСУ и информационнопоисковые системы ИПС...
39908. Возникновение и формирование проблемы внешней задолженности стран «Третьего мира» 152.5 KB
  Внешняя задолженность развивающихся стран и стран с переходной экономикой превратилась в самостоятельный объект международной политики, затрагивающей интересы практически всех государств мирового сообщества.