Основы программирования на языке Паскаль. Основные понятия алгоритмического языка Паскаль. Учебное пособие для самостоятельной работы по дисциплине «И
.pdfописание констант, описание типов данных, описание переменных, описание процедур и функций, операторы языка, составляющие обязательный раздел программы. Оформление процедур и функций аналогично.
5.2.Раздел объявления модулей
При использовании в программе стандартных библиотечных модулей этот раздел обязателен.
Формат:
USES < имена модулей>; Например:
USES PRINTER, CRT, GRAPH;
5.3.Раздел объявления меток
Вэтом разделе перечисляются метки, которые будут использоваться для организации передачи управления между операторами программы. Этот раздел помечается ключевым словом LABEL. Например,
label 1, 2, 50, 100, 9999, m1;
Метка – целое число, включающее от 1 до 4 цифр(без знака) или идентификатор.
5.4.Раздел объявления констант
Вэтом разделе определяются все синонимы локальных констант программы. Раздел помечается ключевым словом CONST. Например,
const
i=-314;
g = +9.8;
title =’ ОБЪЯВЛЕНИЕ’;
5.5.Раздел объявления типов
Описание типов данных делается с той целью, чтобы описав однажды все возможные типы данных, которые будут использоваться в программе, можно было делать привязку различных переменных одного типа к его синониму (смотри описание переменных ). Раздел начинается с ключевого слова TYPE.
Например, |
|
|
type (* |
описание типов данных *) |
|
(* |
строка *) |
|
line: packed array [ 1.. 80] of char; |
||
(* |
перечисление |
*) |
day: (monday, tuesday, wednesday, thursday, friday, saturday, sumday); person: (‘Иванов’,’Петров’,’Сидоров’,’Ковалев’);
41
5.6. Раздел объявления переменных
Этот раздел связывает их с определенным типом данных. Он начинается с ключевого слова VAR, а далее следует перечисление всех идентификаторов переменных с привязкой их к типам данных
Например,
var (* описание переменных *) a,b,c: real; i,j,k: integer;
d:char; person: boolean;
5.7.Раздел объявления процедур и функций
Процедуры и функции представляют собой подпрограммы, которые по отношению к главной программе могут быть как внутренними, то есть входить в ее состав, так и внешними, скомпилированными и отредактированными отдельно от главной программы. Внешние подпрограммы хранятся в библиотеках, а в главной программе осуществляется только их вызов с помощью операторов вызова.
Правила оформления процедур и функций аналогичны правилам оформления программ.
Заголовком процедуры служит ключевое слово PROCEDURE. За ним следует имя этой процедуры, оформляемое в соответствии с правилами написания идентификаторов, причем если предполагается оформлять внешнюю процедуру, то программист должен помнить, что имя должно быть не более чем шестисимвольным и символ подчеркивания во внешних именах не допускается. В круглых скобках после имени процедуры делается перечисление формальных параметров, вместо которых при вызове процедуры ей будут передаваться действительные значения параметров. За заголовком процедуры следуют те же разделы описаний, которые были рассмотрены для программы.
Функция – это подпрограмма, результатом работы которой является единственный параметр. Вызов функции поэтому может входить в состав выражения. Правила описания функции аналогичны правилам описания процедуры. Заголовок функции состоит из ключевого слова FUNCTION и имени функции с указанием формальных параметров функции и их типов.
Описание процедур и функций, внутренних по отношению к главной программе, может быть сделано как перед блоками основной программы (в разделе описаний процедур и функций), так и следом за основной программой. Например,
|
Program proba1; |
|
(* |
разделы описаний меток, констант, типов, переменных *) |
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
|
|
(* |
раздел описаний процедур и функций |
*) |
42
|
Procedure line (x,y,z); |
|
|
type |
|
|
t:integer; |
|
|
l:char; |
|
|
var |
|
|
x,y,i,j : t; |
|
|
z : l; |
|
|
begin |
|
|
for i:=x to j:=y |
do write(z); |
|
end; |
|
(* |
главная программа *) |
|
|
begin |
|
|
. . . . . . . . . . . . . |
|
|
. . . . . . . . . . . . . |
|
|
end; |
|
(* |
описание функции |
*) |
|
function max (x,y : real): real; |
|
|
begin |
|
if x > y then max:= x;
end;
5.8. Раздел операторов
Операторы языка составляют тело программы. Оно структурируется в блоки. Каждый блок начинается с ключевого слова BEGIN и заканчивается словом END. Блоки могут следовать друг за другом или входить один в другой. Последние называют вложенными. Например,
PROGRAM IT_IS_MY ;
(* разделы * )
begin |
(* операторы языка * ) |
begin |
(* операторы языка *) |
end; |
|
begin |
(* операторы языка*) |
begin |
(* операторы языка *) |
end |
|
end |
|
end.
Глубина вложенности блоков практически не ограничивается. Однако информационно и алгоритмически они должны быть правильно оформлены.
43
Заключение
Предложенная последовательность изложения материала, многочисленные поясняющие примеры, доступность изложения позволяют учащимся самостоятельно изучить вопросы программирования вычислительных и информационных задач.
Учебное пособие ориентировано на обучающихся, знакомых с некоторыми основами программирования на уровне среднего образования, определяется базовым обучением по программированию и не ставит целью изучение и анализ каких-либо сложных аспектов использования алгоритмического языка Паскаль. Служит для повышения уровня владения языком в объеме, позволяющем использовать приобретенные знания при составлении программ. Приведены примеры и упражнения для отработки навыков программирования.
Пособие предназначено в большей степени для самостоятельной работы, но может быть полезно для проведения аудиторных занятий при обучении программированию на языке Паскаль в рамках освоения дисциплины «Информатика» студентами всех направлений подготовки.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1.Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика. Учебное пособие.
М.: Академия, 2004. – 848 с.
2.Информатика: учебник / под ред. Н.В. Макаровой. – М: Финансы и ста-
тистика, 2008. – 766 с.
3.Окулов С.М. Основы программирования. - М.: БИНОМ, 2013. – 440 с.
4.Кудинов Ю.И. Пащенко Ф.Ф. Основы современной информатики. –
М: Лань, 2010. – 256 с.
5.Основы алгоритмизации вычислительных процессов. Метод. указания по курсу «Информатика» / Авдеев В.П., Гильмутдинов В.И, Кононов А.Д., Кононов А.А. – Воронеж. – ВГАСУ, 2005. – 41 с.
6.Информатика: учебное пособие / Гильмутдинов В.И, Кононов А.Д.,
Кононов А.А., 2010. – 56с.
7.Хлебников А.А. Информатика: учебник: Феникс, 2013. – 443с.
44
|
|
Приложение 1 |
|
|
Знаки пунктуации |
|
|
|
Знак |
Примечание |
|
{ |
} |
Скобки комментария |
(* |
*) |
Скобки комментария |
[ |
] |
Выделение индексов массивов, элементов множеств, размера стро- |
|
|
ки |
( |
) |
Выделение выражений, списков параметров |
|
‘ |
Апостроф для выделения символа или строковой константы |
|
:= |
Знак присваивания значения переменной, типизированной кон- |
|
|
станте или функции |
|
; |
Разделение предложений программы (операторов и объявлений) и |
|
|
Элементов списка |
|
: |
Отделение переменной или типизированной константы от типа, |
|
|
метки от оператора |
|
= |
Отделение идентификатора типа от описания типа или константы |
|
|
от ее значения |
|
, |
Разделение элементов списка |
|
.. |
Разделение границ диапазона |
|
. |
Обозначение конца программы, отделение целой части от дробной |
|
|
в вещественном числе, отделение полей в записи, отделение иден- |
|
|
тификатора от имени модуля или объекта, в котором он находится |
|
^ |
Обозначение типа – указателя, значения величины по ее указателю |
|
|
или управляющего символа (коды от 0 до 31) |
|
@ |
Обозначение адреса переменной, типизированной константы, под- |
|
|
программы, метода |
|
# |
Обозначение символа по его коду |
|
$ |
Обозначение директивы компилятора или знак шестнадцатерично- |
|
|
го числа |
45
Приложение 2
Служебные (зарезервированные) слова
Служебные |
Смысловое значе- |
Пояснения |
|
слова* |
ние |
|
|
|
|
|
|
1 |
2 |
3 |
|
|
|
|
|
AND |
и |
Логическая операция И |
|
|
|
|
|
ARRAY |
массив |
Начало типа-массив |
|
BEGIN |
начало |
Начало тела программы или |
подпро- |
|
|
граммы, начало составного оператора |
|
|
|
|
|
CASE |
вариант (выбор) |
Начало условного оператора CASE |
|
|
|
|
|
CONST |
константа |
Идентификатор раздела |
констант, |
|
|
группы параметров - констант |
|
|
|
|
|
CONSTRUC- |
конструктор |
Конструктор объекта |
|
TOR |
|
|
|
DESTRUC- |
разрушитель |
Деструктор объекта |
|
TOR |
|
|
|
DIV |
деление |
Операция деления целых чисел с по- |
|
|
|
лучением целого результата |
|
|
|
|
|
DO |
Делать (выпол- |
Признак начала оператора в цикле |
|
|
нять) |
FOR, WHILE, оператора WITH |
|
DOWNTO |
уменьшая до |
Указатель изменения параметpa цик- |
|
|
|
ла от максимального к минимальному |
|
|
|
значению |
|
ELSE |
иначе |
Секция ИНАЧЕ в условном опе- |
|
|
|
раторе IF, CASE |
|
END |
конец |
Конец тела программы, подпро- |
|
|
|
граммы, конец модуля, конец состав- |
|
|
|
ного оператора, блока на ассемблере, |
|
|
|
оператора CASE, типа - запись, объ- |
|
|
|
екта |
|
EXTERNAL |
внешний |
Директива внешней подпрограммы |
|
FILE |
Файл |
Файловый тип |
|
FOR |
для |
Начало цикла с известным числом |
|
|
|
повторений |
|
FORWARD |
опережение |
Директива заголовка подпрограммы, |
|
|
|
описанной дальше по тексту про- |
|
|
|
граммы |
|
FUNCTION |
функция |
Начало подпрограммы-функции |
|
|
|
|
|
|
|
46 |
|
GOTO |
переход на (идти к) |
Безусловный переход |
|
|
|
IF |
если |
Начало условного оператора IF |
|
|
|
IMPLEMENTAT |
реализация |
Исполнительная часть модуля |
OIN |
|
|
IN |
в |
Проверка наличия элемента в множе- |
|
|
стве |
INLINE |
встроенный |
Директива, позволяющая включить в |
|
|
программу часть, написанную на ас- |
|
|
семблере |
INTERFACE |
интерфейс |
Интерфейс модуля |
INTERRUPT |
прерывание |
Директива процедуры обработки пре- |
|
|
рываний |
LABEL |
метка |
Идентификатор раздела меток |
|
|
|
MOD |
вычисление остат- |
Остаток от деления целых чисел |
|
ка |
|
NUL |
пустой указатель |
Пустая ссылка |
NOT |
Нет (отрицание) |
Логическое отрицание |
OBJECT |
объект |
Начало типа - объект |
OF |
из |
Начало типа компонентов в опреде- |
|
|
лении массива, множества, файла, |
|
|
начало перечисления констант опера- |
|
|
тора CASE |
|
|
|
OR |
или |
Логическая операция ИЛИ |
|
|
|
PACKED |
упакованный |
Признак "упакованного" массива |
|
|
|
PROCEDURE |
процедура |
Начало подпрограммы-процедуры |
PROGRAM |
программа |
Начало программы |
RECORD |
запись |
Начало типа - запись |
|
|
|
REPEAT |
повторить |
Начало цикла REPEAT |
|
|
|
SET |
Набор (множество) |
Тип - множество |
|
|
|
SHL |
разрядный сдвиг |
Сдвиг битов влево с заполнением ну- |
|
влево |
лями освободившихся разрядов |
|
|
|
SHR |
разрядный сдвиг |
Сдвиг битов вправо с заполнением |
|
вправо |
нулями освободившихся I разрядов |
|
|
|
STRING |
строка |
Тип – строка |
|
|
|
THEN |
тогда |
Секция ТОГДА условного oперaтора |
|
|
IF |
|
|
47 |
TO |
к (до) |
Указатель, изменения параметра цик- |
|
|
ла от минимального к максимальному |
|
|
значению |
TYPE |
тип |
Идентификатор раздела типов |
|
|
|
UNIT |
модуль |
Начало модуля |
|
|
|
UNTIL |
пока |
Конец цикла REPEAT |
|
|
|
USES |
используется |
Указатель используемых модулей |
|
|
|
VAR |
переменная |
Идентификатор раздела переменных, |
|
|
группы параметров переменных |
WHILE |
пока |
Начало цикла WHILE |
|
|
|
WITH |
с |
Начало оператора над записям |
|
|
|
XOR |
исключающее |
Логическая операция |
|
|
ИСКЛЮЧАЮЩЕЕ ИЛИ |
48
Приложение 3
Коды ASCII
Код |
Символ |
Имя |
Код |
Символ |
Код |
Символ |
Код |
Символ |
|
|
|
|
|
|
|
|
|
0 |
Ctrl-@ |
NUL |
32 |
SPC |
64 |
@ |
96 |
‘ |
1 |
Ctrl-A |
SOH |
33 |
! |
65 |
A |
97 |
a |
|
||||||||
2 |
Ctrl-B |
STX |
34 |
” |
66 |
В |
98 |
b |
3 |
Ctrl-C |
ETX |
35 |
# |
67 |
С |
99 |
с |
4 |
Ctrl-D |
EOT |
36 |
$ |
68 |
D |
100 |
d |
5 |
Ctrl -E |
ENQ |
37 |
% |
69 |
E |
101 |
e |
6 |
Ctrl-F |
ACK |
38 |
& |
70 |
F |
102 |
f |
7 |
Ctrl-G |
ВEL |
39 |
' |
71 |
G |
103 |
g |
8 |
Ctrl-H |
BS |
40 |
( |
72 |
H |
104 |
h |
9 |
Ctrl-I |
HT |
41 |
) |
73 |
I |
105 |
i |
10 |
Ct rl-J |
LF |
42 |
* |
74 |
J |
106 |
j |
11 |
Ctrl-K |
VT |
43 |
+ |
75 |
К |
107 |
k |
12 |
Ctrl-L |
FF |
44 |
, |
76 |
L |
108 |
l |
13 |
Ctrl-M |
CR |
45 |
- |
77 |
M |
109 |
m |
14 |
Ctrl-N |
SO |
46 |
. |
78 |
N |
110 |
n |
15 |
Ctrl-0 |
SI |
47 |
/ |
79 |
0 |
111 |
о |
16 |
Ctrl-P |
DLE |
48 |
0 |
80 |
P |
1 12 |
p |
17 |
Ctrl -Q |
DC1 |
49 |
1 |
81 |
Q |
113 |
q |
18 |
Ctrl-R |
DC2 |
50 |
2 |
82 |
R |
114 |
r |
19 |
Ctrl-S |
DC3 |
51 |
3 |
83 |
S |
115 |
s |
20 |
Ctrl -T |
DC4 |
52 |
4 |
84 |
T |
116 |
t |
21 |
Ctrl -U |
NAK |
53 |
5 |
85 |
U |
117 |
u |
22 |
Ctrl -V |
SYN |
54 |
6 |
86 |
V |
118 |
v |
23 |
Ctrl-W |
ETB |
55 |
7 |
87 |
W |
119 |
w |
24 |
Ctrl-X |
CAN |
56 |
8 |
88 |
X |
120 |
x |
25 |
Ctrl-Y |
EM |
57 |
9 |
89 |
Y |
121 |
y |
26 |
Ctrl-Z |
SUB |
58 |
: |
90 |
Z |
122 |
z |
27 |
Ctrl-[ |
ESC |
59 |
; |
91 |
[ |
123 |
{ |
28 |
Ctrl-\ |
FS |
60 |
< |
92 |
\ |
124 |
| |
29 |
Ctrl-] |
GS |
61 |
= |
93 |
] |
125 |
} |
30 |
Ctrl-^ |
RS |
62 |
> |
94 |
^ |
126 |
~ |
31 |
Ctrl-_ |
US |
63 |
? |
95 |
_ |
127 |
DEL |
|
|
|
|
|
|
|
|
|
49
Приложение 4
Диагностика ошибок трансляции
MISSING END – пропущено служебное слово END.
INVALID CHARACTER – в строке встретился недопустимый знак. MISSING LABEL DEFINITION – отсутствует определение метки.
UNDEFINED FORWARD PROCEDURE OR FUNCTION – недопустимо исполь-
зовать процедуру или функцию прежде, чем они будут определены. MISSING BEGIN – пропущено служебное слово BEGIN.
MISSING ’.’ AT PROGRAM END – в конце программы отсутствует точка.
ALL VAR DEFINITIONS PRECEDE PROCEDURE DEFINITIONS – определе-
ния всех переменных должны находиться в программе перед определением процедур.
BAD ORIGIN FOR VARIABLE – недопустимое начальное значение для переменной.
BAD VARIABLE LIST – недопустимый список переменных. BAD TYPE – недопустимое определение типа.
BAD LABEL – недопустимая метка.
BAD FUNCTION NAME – недопустимое имя для функции. BAD PROCEDURE NAME – недопустимое имя для процедуры.
BAD FUNCTION RESULT TYPE – недопустимый тип результата функции. ‘ . ‘ UNSTEAD OF ‘ ; ‘ – точка использованa вместо точки с запятой.
MISSING ‘ ) ‘ AT END OF PARAMETR LIST – пропущена левая скобка в конце списка формальных параметров.
BAD PARAMETER – недопустимый параметр.
BAD SCALAR TYPE – недопустимый скалярный тип.
BAD SUBRANGE – недопустимое указание интервала.
BAD TYPE SPECIFICATION – недопустимое определение типа.
ARRAY INDEX TYPE ERROR – ошибка в задании типа индекса для массива. BAD RECORD – недопустимая запись.
BAD FIELD LIST – недопустимое определение списка полей.
FIELD LIST MUST BE IN PARENTHESES – список полей должен указываться в скобках.
BAD VARIANT – недопустимый вариант.
DUPLICATE FIELD NAME – повторно используется имя для поля записи. BAD CONSTANT – недопустимая константа.
LABEL NOT DELARED – используется неопределенная метка. UNDEFINED SYMBOL – неопределенный символ.
MISSING SEMI – COLOR – пропущена точка с запятой.
INYALID DECLARATION. PROBABLY MISSING END – недопустимый опе-
ратор; возможно, что пропущено служебное слово END. INYALID SYMBOL – недопустимый символ.
50
