Программирование на языке высокого уровня, ч.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.
Список полей состоит из следующих конструкций:
<имя поля1> : <тип1>;
<имя поля2> : <тип2>;
…
Доступ к полям записи осуществляется через имя переменной в качестве префикса и последующим через точку именем поля. При определении записи иногда используют запись с вариантами. В этом случае в качестве описания различных вариантов значения поля используется конструкция:
Оператор WITH
Используется для упрощения доступа к полям записи.
WITH <переменная 1>, <переменная 2>, …,<переменная n>
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<=b озночает истину, если множество а содержится во множестве в, то же самое:
x in A – является истиной, если элемент х принадлежит множеству А
Not (x in A)- х не принадлежит множеству А
Преобразование типов
Для преобразования типа некоторой переменной к целевому типу необходимо указать имя целевого типа и далее в круглых скобках имя преобразованной переменной.
Например, чтобы преобразовать из символьного типа в целый нужно:
Ch – integer ;
integer(ch);
Инициализация данных
При объявлении когда определяются переменные в языке Паскаль можно автоматически присвоить им начальное значение. Это делается в строке описания переменных.
Var
Ch : char = ‘W’;
I : integer = 55;
S : string = ‘ABCD’;
Массивы:
Type MATR = array [1..3, 1..2] of integer;
Const Massiv : MATR = ((1,2),(3,4),(5,6));
Можно инициализировать записи:
Type Data = Record;
Day: integer;
Mount: 1..12;
Year: integer;
end;
Const curdata: Data = (Day: 9; Mount: 12; Uear: 1986);
Форматирование вывода данных процедурами WRITE и WRITELN
WRITE или WRITELN(<выражение>: <ширина поля>: <дробная часть>)
где
<выражение> - любое выражение, которое выводится на экран;
<ширина поля> - количество символов, отводящихся на экране для вывода этого выражения;
<дробная часть> - количество символов после запятой.
То же самое и для WRITE.
Стандартный ввод данных. Отличия Read от Readln
Когда пользователь вводит данные, то предварительно эти данные попадают во внутренний буфер ввода, при этом каждый элемент отделяется друг от друга на экране символом пробела, либо перевод строки, либо табуляции. После этого программа анализирует, какое количество переменных указано в процедуре ввода Read или Readln и далее присваивает эти значения из буфера ввода соответствующим переменным. Возникает проблема, как быть, если количество переменных, указанных в процедурах Read и Readln не соответствует количеству переменных, попавших в буфер ввода.
Случай 1. Количество элементов в буфере меньше количества переменных.
В этом случае программа будет ждать, пока не введете все количество символов. В этом случае Read и Readln работают одинаково и ждут данных.
Случай 2. Количество элементов в буфере больше количества переменных.
В этом случае процедура Readln считывает необходимое количество элементов, а остальные удаляет из буфера. После выполнения Readln гарантировано, что буфер ввода будет пуст.
Процедура Read после считывания необходимых элементов буфера ввода оставляет незадействованные элементы в буфере ввода. Это означает, что программа, считав данные перейдет к следующему оператору за оператором Read и выполняет далее.
Однако если в течении программы будут встречаться Read или Readln, то значения они начнут брать сначала из буфера ввода, лишь потом с клавиатуры.
Операторы управления
IF условие THEN оператор1 else оператор2 – условный оператор
FOR i=0 TO N DO оператор или FOR i=N DOWNTO 1 оператор – цикл с параметром
WHILE условие DO оператор – цикл с предусловием
REPEAT оператор UNTIL условие – цикл с постусловием
CASE – оператор варианта (выбора) позволяет по некоторому выражению, как правило, целочисленному или символьному сделать выбор и выполнить определенный блок оператора.
Case <выражение> Of
M1,M2,…,Mn: < оператор1>;
Mn+1,…, :<оператор2>;
…
else <оператор m>;
end;
где M1,M2,…,Mn – это константы или диапазоны того же типа, что и выражение в заголовке оператора CASE. Эти метки определяют те значения выражения, при которых нужно выполнить помеченный этой меткой оператор. Выражение в заголовке Case иногда называется селектором. Выполняется оператор Case следующим образом:
1)Выполняется значение селектора
2)Если значение селектора равно одной из меток варианта, то выполняется соответствующий оператор и выполнение оператора Case заканчивается.
3)Если значения селектора не равны ни одной из меток варианта выполняется оператор следующий после ключевого слова ELSE.
Замечание. В общем случае часть с оператором Else может отсутствовать. Тогда будет пустой оператор.
Процедуры и функции
Процедура – подпрограмма, которая имеет 1 или несколько входных или выходных параметров.
Подпрограмма –специальным образом оформленная группа операторов языка Паскаль, которая используется для выполнения однотипных действий в нескольких местах одной программы или в разных программах.
Функция – подпрограмма, которая имеет только 1 выходной параметр(значение функции) и 1 или несколько входных параметров. В языке Паскаль могут использоваться стандартные и пользовательские процедуры и функции.
К стандартным процедурам относятся:
- Write
- Writeln
- Read…
К стандартным функциям относятся:
Sin(x); cos(x); sqrt(x); OSD…
Пользовательские описываются самим пользователем. Любая сложная программа содержит всегда процедуры и функции. Использование процедур и функций осуществляется для того чтобы:
1)разбить большую и сложную программу на более простые модули;
2)сохранить объем памяти;
3)упростить и ускорить отладку и проектирование программы;
4)использовать ранее разработанные подпрограммы.
Для использования процедур в программе необходимо:
1)В разделе описания процедур и функций поместить описание процедур и функций(раздел Var:…).
2)В разделе операторов программы поместить оператор вызова процедуры, там где необходимо.
Процедура описывается:
Procedure <имя процедуры> (<список формальных параметров>);
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 |


