Всё для Учёбы — студенческий файлообменник
бесплатно
doc

Лекция «Программирование на языке высокого уровня» по Программированию (Иванько А. Ф.)

Программирование на языке высокого уровня, ч.1

Типы данных в языке Паскаль

Простые типы данных

1) Целочисленные данные (INTEGER): 1, 2, -3, -345

2) Данные вещественного типа (REAL) могут представляться:

- с плавающей точкой (128.384)

- с фиксированной точкой (1.28384Е+02)

3) Символьные(Char): ‘А’

4) Строковые данные (STRING): ‘www.hi’

5) Булевские/логические(BOOLEAN): true, false

6) Указатели (см.далее)

Данные перечисляемого типа

Эти данные делают программу более наглядной и облегчают ее отладку. Фактически данные перечисляемого типа определяют имена для констант 1, 2, 3, … Они определяются следующим образом:

: (К1, К2,…, Кn),

где: К1, К2,… - константы или имена данных перечисляемого типа

Данные перечисляемого типа определяются в разделе описания переменных, они фактически задают имена для целочисленных значений 0, 1, …, n-1

Данные ограниченного типа

Определяют некоторый диапазон возможных значений переменных. Описываются следующим образом:

Var : К1..Кn;

где: К1, К2,… - константы определяемого диапазона

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

Примечание:

К данным перечисляемого типа можно применять функции:

PRED(x) – для указанного значения х выдает предыдущий элемент

SUCC(x) - для указанного значения х выдает следующий элемент

ORD(x) - выдает порядковый номер элемента

Данные регулярного типа (массивы)

Это последовательность элементов одного и того же типа. Каждый массив имеет размерность(существуют одномерные, двухмерные,…, n-мерные).

Одномерный массив называют вектором, двухмерный - матрицей, трехмерный – кубом.

Массивы определяются в разделе описания переменных следующим образом :

Var : Array [тип индекса 1, тип индекса 2,.., тип индекса n] of ;

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

Const N=10; M=10;

Var A: Array [1..N, 1..M] of real;

Записи

Запись – это совокупность одного типа или данных разных типов. Представляет собой структуру данных, в которых содержится информация о каком-либо обьекте. Каждая структура имеет поля как правило различного типа. В языке Паскаль запись определяется следующей конструкцией:

RECORD END. Список полей состоит из следующих конструкций:

: ; : ; … Доступ к полям записи осуществляется через имя переменной в качестве префикса и последующим через точку именем поля. При определении записи иногда используют запись с вариантами. В этом случае в качестве описания различных вариантов значения поля используется конструкция:

Оператор WITH

Используется для упрощения доступа к полям записи.

WITH , , …, Do ,

где переменная 1, .., переменная n - это имена переменных записей(переменных комбинированного типа)

оператор – один оператор, в котором осуществляется доступ к полям указанных переменных, причем префикс такой переменной допускается.Как правило оператор является составным(begin…end)

Множества

В Паскале множеством называется некое множество элементов базового порядкового типа. При этом в базовом типе множества должно быть не больше 256 элементов, которые нумеруются от 0 до 255. Множество задается конструкцией:

Set of Тип – базовый тип множества – порядковый

Пример: type

ALFA = set of ‘A’…’Z’;

OPER = set of (‘plus’,’min’,…,’umn’);

Digits = set of 0…9;

Конкретная переменная типа множества может быть задана перечислением:

Var

Index: digital = [0,2,4,6,8];

. . . begin

index = [1,3,5];

Над переменными типа множества можно осуществлять следующие операции:

‘*’ - пересечение

‘+ ‘– обьединение

‘ –‘ – разность

Кроме того над множествами можно осуществлять операции спавнение и принадлежности элементов множества. При этом a/arr[max] then max:=i;

if arr[i] Project/Options/Directories/Conditionals defines.

Этот способ автоматически вставляет директиву DEFINE Debug во все модули. В противном случае в ручную. На компиляцию в отладочном режиме и в общем режиме могут влиять другие параметры Delphi – Project/Options/Compiler. Наиболее важные из них – Optimization – управляет оптимизацией компилятора. В большинстве случаев устанавливают оптимизацию, однако если вы считаете, что из-зи оптимизации получаются ошибки, можно ее отключить. Для того чтобы включить или выключить эту опцию можно локализовать директивы.

{ $O+} – включена, { $O-} – выключена.

StackFrames – если эта опция включена, компилятор всегда включает в функцию код для генерации кадра стека, даже если код не использует стек. { $W+} { $W-}

Range Checking – проверка диапозона. Перехватывет ошибки вызванные выходом за пределы массива или строки. Как правило это нужно анализировать программно. Поэтому в коммерческой версии этот флаг как правило отключают. { $R+} { $R-}

Assertions – опция позволяет вставлять проверки в код программы на корректность тех или иных условий. В отладочном коде это проверки производятся, а в окончательном они исключаются (как правило проверки аргументов функций) { $С+} { $С-}

Overlow Checking – проверка на переполнение. Позволяет выяснить не является ли результат выполнения целочисленной операции слишком большим для размещения его в целочисленной переменной. Подобно опции Range Checking данная операция полезна при отладке и в комерческой версии отключается. { $Q+} { $Q-}

Использование директивы Assert (выражение)

Оператор Assert проверяет логическое выражение на истину и ложь. Если выражение окажется ложным, то на экран будет выдано окно с сообщением об ошибке при этом сообщение выглядит следующим образом: Assertionfailure (D:\Pascal\f.PAS line 28), где f.PAS – файл в котором ошибка, line 28 – на какой строке. Если выражение истина, то никаких сообщений не выдается. Если установлен ключ $C+ или в параметрах компилятора Assertion установлена галочка (ON), то оператор Assert, где бы он не встречался в программе будет проверять условие, будет выполняться. Если Assert – OFF, то во всей программе все операторы будут игнорироваться и исключаться из программы. Обычно для использования оператора Assert в программу включают следующий код:

{ $IFDEF Debug} (Assertion ON)

{ ELSE} (Assertion OFF)

{ $ENDIF}

Как правило Assert используется внутри функций или процедур для проверки корректности параметров. Пример:

Procedure sum (count: integer);

Begin Assert (count>0);

. .

. end; Выражение может быть любым допустимым выражением языка Pascal. Однако всегда следует помнить, что в конечной версии операторы Assert игнорируются точно также как и игнорируются все функции в операторе Assert и это необходимо учитывать в специфических случаях. Пусть в программе имеется функция, которая подсчитывает сколько раз она была вызвана

Function CountMe: integer;

Const ReferenceCount: integer = 0;

Begin

Inc (ReferenceCount);

Result:= ReferenceCount;

End; . . Assert (CountMe

Показать полностью…
Похожие документы в приложении