- •Введение в object pascal
- •Лекция 1. Интегрированная Среда и Состав языка Object Pascal
- •1.1 Работа с окнами
- •1.2 Редактирование в Object Pascal
- •1.3 Команды меню
- •1.4 «Горячие» клавиши в Object Pascal
- •1.5 Состав языка
- •1.5.1 Алфавит и ключевые слова
- •1.5.2 Идентификаторы
- •1.5.3 Знаки операций, разделители, выражения и операторы
- •Лекция 2. Описательная часть программы
- •2.1 Структура программы
- •2.2 Описание констант
- •2.3 Описание и использование меток
- •2.4 Комментарии
- •Лекция 3. Описание переменных
- •3.1 Структура раздела описания переменных
- •3.2 Классификация типов данных
- •3.2.1 Целочисленные типы
- •3.2.2 Логический тип
- •3.2.3 Символьный тип
- •3.2.4 Вещественные типы
- •3.3 Описание типов пользователя
- •Лекция4. Выражения
- •4.1 Порядок выполнения операций
- •4.2 Выражения целого типа
- •4.3 Вещественные выражения
- •4.4 Логические выражения
- •Лекция 5. Программы Линейной структуры
- •5.1 Операторы ввода (Read, Readln)
- •5.2 Операторы вывода (Write, Writeln)
- •5.2.1 Форматирование численных значений
- •5.2.2 Вывод строковых, символьных и логических значений
- •5.2.3 Вывод вещественных значений в экспоненциальном формате
- •5.2.4 Расположение данного в поле вывода. Примеры
- •5.3 Оператор присваивания
- •5.4 Составной оператор
- •5.5 Стандартные процедуры и функции
- •5.5.1 Понятие процедуры и функции
- •5.5.2 Описание некоторых стандартных процедур и функций
- •5.5.3 Примеры программ линейной структуры
- •Лекция 6. Операторы ветвления (выбора)
- •6.1 Оператор ветвления if
- •6.2 Оператор множественного выбора (варианта) - case
- •Лекция 7. Операторы организации циклов
- •7.1 Цикл типа for
- •7.1.1 Прямая форма оператора for
- •7.1.2 Обратная форма оператора for
- •7.1.3 Советы для начинающих и примеры
- •7.2 Цикл типа While
- •7.3 Цикл типа Repeat... Until
- •7.4 Дополнительные операторы при программировании циклов
- •7.4.1 Досрочный выход из цикла - break
- •7.4.2 Переход к следующей итерации цикла - continue
- •Лекция 8. Массивы
- •8.1 Одномерные массивы
- •8.2 Сортировка одномерного массива
- •8.3 Массивы с большей размерностью
- •8.4 Констант-массивы
- •8.5 Генератор случайных чисел
- •8.5.1 Описание функции Random
- •8.5.2 Применение случайных чисел при работе с массивами
- •Лекция 9. Строки
- •9.1 Строковый тип
- •9.2 Операции над строками
- •Лекция 10. Записи и множества
- •10.1 Запись
- •10.2 Множества
- •11 Пользовательские процедуры и функции
- •11.1 Описание функции и процедуры
- •11.2 Понятие формальных и фактических параметров
- •11.3 Способы передачи параметров в подпрограмму через заголовок
- •11.4 Область видимости идентификаторов
- •12 Файлы
- •12.1 Основные понятия
- •12.2 Типизированные файлы
- •12.3 Текстовые файлы
3.2.2 Логический тип
Значениями логического типа являются встроенные идентификаторы False и True. Этот тип переменных задаётся ключевым словом Boolean. Поскольку логический тип является перечислимым, между этими значениями имеют место следующие отношения:
False < True .
Приведём пример описания переменных логического типа:
var
I, J : Boolean;
3.2.3 Символьный тип
Множеством значений этого типа являются символы, упорядоченные в соответствии с расширенным набором символов кода ASCII. Тип этих переменных задаётся ключевым словом Char.
Переменная типа Char хранит значение одного символа. В операторе присваивания задать значение символьной переменной можно тремя способами. Первый состоит в использовании символьной константы – символ между двумя одинарными кавычками. Например:
………………
Var Сh: Char;
Begin
Ch := 'F';
………………
Второй и третий способы используются, когда вы знаете числовой код символа. В этом случае с помощью функции Chr можно преобразовать числовой код в символ. Противоположной по отношению к функции Chr является функция Ord, которая возвращает код символа, являющегося её аргументом.
Согласно третьему способу, знак # и последующая за ним целая беззнаковая константа обозначают символ. Например:
……………….
Var Сh: Char;
Begin
Ch := chr(7);
Ch := #7;
………………
В этом фрагменте оба оператора присваивают символьной переменной Сh одно и то же символьное значение – звуковой сигнал (это управляющий символ).
В работе могут понадобиться значения кодов некоторых символов, которые приведены в таблице 3.1.
Таблица 3.1. Кодировка символов ASCII c кодами от 0 до 127
Код |
Вид |
Код |
Вид |
Код |
Вид |
Код |
Вид |
0 |
NUL |
32 |
SP |
64 |
@ |
96 |
` |
1 |
SOH |
33 |
! |
65 |
A |
97 |
a |
2 |
STX |
34 |
“ |
66 |
В |
98 |
b |
3 |
ЕТX |
35 |
# |
67 |
С |
99 |
с |
4 |
EOT |
36 |
$ |
68 |
D |
100 |
d |
5 |
ENQ |
37 |
% |
69 |
E |
101 |
e |
6 |
АСK |
38 |
& |
70 |
F |
102 |
f |
7 |
BEL |
39 |
‘ |
71 |
G |
103 |
g |
8 |
BS |
40 |
( |
72 |
H |
104 |
h |
9 |
НТ |
41 |
) |
73 |
I |
105 |
i |
10 |
LF |
42 |
* |
74 |
J |
106 |
j |
11 |
VT |
43 |
+ |
75 |
К |
107 |
k |
12 |
FF |
44 |
, |
76 |
L |
108 |
1 |
13 |
CR |
45 |
- |
77 |
M |
109 |
m |
14 |
SO |
46 |
. |
78 |
N |
110 |
n |
15 |
SI |
47 |
/ |
79 |
O |
111 |
o |
16 |
DLE |
48 |
0 |
80 |
P |
112 |
p |
17 |
DC1 |
49 |
1 |
81 |
Q |
113 |
q |
18 |
DC2 |
50 |
2 |
82 |
R |
114 |
г |
19 |
DC3 |
51 |
3 |
83 |
S |
115 |
s |
20 |
DC4 |
52 |
4 |
84 |
T |
116 |
t |
21 |
NAK |
53 |
5 |
85 |
U |
117 |
u |
22 |
SYN |
54 |
6 |
86 |
V |
118 |
v |
23 |
ETB |
55 |
7 |
87 |
W |
119 |
w |
24 |
CAN |
56 |
8 |
88 |
X |
120 |
X |
25 |
EM |
57 |
9 |
89 |
Y |
121 |
У |
26 |
SUВ |
58 |
: |
90 |
Z |
122 |
z |
27 |
ESС |
59 |
; |
91 |
[ |
123 |
{ |
28 |
FS |
60 |
< |
92 |
\ |
124 |
| |
29 |
GS |
61 |
= |
93 |
] |
125 |
} |
30 |
RS |
23 |
> |
94 |
^ |
126 |
~ |
31 |
US |
63 |
? |
95 |
подчёркивание_ |
127 |
DEL |
Таблица кодов символов содержит некоторое число управляющих символов, которые не имеют изображения. В этой таблице они обозначены совокупностью двух или трёх символов.
В таблице 3.2 приведены коды некоторых управляющих символов и описание действий, которые будут выполняться при выводе этих символов на любое устройство.
Таблица 3.2. Коды управляющих символов
Код |
Мнемоническое обозначение |
Действие |
7 |
BEL |
Звуковой сигнал динамика |
10 |
LF |
Перевод строки (переход на следующую строку в этой же позиции) |
12 |
FF |
Прогон страницы |
13 |
CR |
Возврат каретки (переход в начало строки) |
26 |
SUB |
Конец файла |
27 |
ESC |
Символ Escape |
Заметим, что для перехода к началу следующей строки в программе можно использовать две конструкции. Первая:
………
Writeln;
……….
Вторая конструкция:
………………
Write(#10,#13);
………………
Ниже приведён текст программы, которая по нажатой клавиши выдаёт её код согласно кодировке ASCII.
program p3_1;
uses CRT; { Подключение основной библиотеки }
Var ch : char;
begin
writeln('Чтобы остановить работу ',
' программы нажми <Esc> ' );
repeat
write('Нажми любую клавишу!');
ch := Readke; { Ожидание нажатия клавиши и ввод кода символа }
if ch = #0 then { Если 1-ый байт кода символа равен 0, то }
begin { вводим 2-ой байт, так как это функциональная клавиша }
ch := Readkey; { или комбинация клавиш }
write(#13,#10,' Это функциональная клавиша или комбинация',
' клавиш c кодом=',0,0,' ',Ord(ch));
end
else { Вариант, в котором символ не имеет графического изображения }
if Ord(ch) < 33 then write(' Символ не имеет графического',
' изображения. Его код=',Ord(ch))
else write(' Символ: ',ch,' его код=', Ord(ch));
writeln;
until ch=#27; { Условие выхода из цикла – нажата клавиша <Esc> }
end.
В этой программе используется замечательная процедура-функция Readkey, которая ожидает нажатия любой клавиши, после чего возвращает значение введённого символа.