
- •Часть 1
- •1. With elem 50
- •2.1. Если поступившая запись предшествует корневой, идти в левое 98
- •2.2. Иначе – в правое поддерево. 98
- •Введение Основные этапы решения задач на эвм
- •Языки программирования
- •Трансляторы
- •1. Общие сведения о языке паскаль
- •1.1. Алфавит языка. Идентификаторы и зарезервированные слова
- •2. Данные в паскале. Простые типы данных
- •2.1. Целочисленный тип
- •2.2. Вещественный тип
- •2.3. Логический тип
- •2.4. Символьный тип
- •2.5. Перечисляемый тип
- •Var m1, m2: metall;
- •2.6. Ограниченный (диапазонный) тип данных
- •Над значениями ограниченного типа допустимы те же операции, что и над значениями базового типа, используемыми при задании в разделе определения типов. Если, к примеру, задано определение:
- •Var y:bukva;
- •3. Операции и выражения
- •2.1. Целочисленный тип
- •3.2. Арифметические выражения и операции
- •3.3. Логические операции и выражения
- •3.4. Операции отношения
- •3.5. Стандартные функции
- •3.6. Приоритеты операций
- •4. Структура программы
- •4.1. Раздел определения констант
- •4.2. Раздел определения типов
- •4.3. Раздел описания переменных
- •V: boolen;
- •4.4. Раздел описания процедур и функций
- •4.5. Раздел операторов
- •4.6. Директивы компилятора и управляющие символы
- •5. Операторы языка паскаль
- •5.1. Оператор присваивания
- •5.2. Оператор вывода информации
- •5.3. Оператор ввода информации
- •5.4. Составной оператор
- •5.5. Условный оператор
- •5.6. Оператор варианта case
- •5.7. Операторы цикла
- •5.7.1. Оператор цикла по счетчику (цикл с параметром )
- •Иденти-фикатор перемен-ной
- •I,n:integer; {I -пар-р цикла, n - его кон.Занч.}
- •X,s,p;integer;
- •5.7.2. Оператор цикла с предусловием
- •Пример составления таблицы переменных
- •Var a,Summa:real;
- •Inc (Summa, a);
- •5.7.3. Оператор цикла с постусловием
- •X,Summa:real;
- •6. Структурированные типы данных
- •6.1. Массивы
- •I,ne:integer;
- •6.1.1. Сортировка массивов
- •Vr:char;
- •Vr : char;
- •6.2. Строки
- •6.3. Множества
- •I : byte;
- •6.4. Записи
- •With elem
- •7. Типизированные константы
- •7.1. Типизированные константы скалярных типов
- •7.2. Типизированные константы - массивы и строки
- •7.3. Типизированные константы – множества
- •Var a: hvor;
- •I, j, k, simp: byte;
- •7.4. Типизированные константы – записи
- •8. Файлы
- •8.1. Типизированные файлы
- •8.2. Текстовые файлы
- •Var f : text;
- •9. Подпрограммы
- •9.1. Процедуры и функции
- •9.2. Процедуры и функции пользователя
- •Var p: real;
- •Var p: real;
- •9.3. Параметры подпрограмм
- •Var X: real; m: integer;
- •Var I : integer;
- •10. Рекурсии
- •10.1. Рекурсивные алгоритмы и определения
- •10.2. Рекурсивные процедуры и функции
- •Var f : longint ;
- •Var a, y, z : real;
- •10.3. Виды рекурсивных процедур
- •If условие
- •If условие
- •If условие then Recur ; then begin
- •Var k : integer;
- •Var c : char;
- •Var c : char;
- •11. Графика в паскале
- •11.1. Основы работы в графическом режиме
- •11.1.1. Аппаратная и программная поддержка графики
- •11.1.2. Запуск графической системы
- •Var Driver, Mode: integer;
- •Init Graph (Driver, Mode, Path);
- •11.1.3. Обработка ошибок
- •11.1.4. Закрытие видеорежима
- •11.2. Система координат дисплея
- •11.3. Экран и окно
- •11.4. Установка цвета, заполнения и палитры
- •11.5. Построение простейших геометрических образов
- •11.6. Работа с текстом OutText (X,y:integer; txt:string) – вывести строку txt с текущего положения указателя.
- •11.7. Вывод числовых значений
- •12. Программные модули
- •12.1. Структура программного модуля
- •Interface –интерфейсные раздел («видимая» часть модуля)
- •Implementation – раздел реализации («черный ящик»)
- •Interface
- •Var X:integer;
- •Implementation
- •Interface
- •X: integer;
- •Implementation
- •12.3. Ссылки на модули
- •Unit hlp _ sr;
- •Xa, ya, xb, yb, xc, yc: integer;
- •13. Динамическая память
- •Var a1: array[1..300,1..300] of integer.
- •13.1. Адресация памяти
- •13.2. Указатели
- •13.2.1. Операции с указателями
- •13.2.2. Нетипизированные указатели
- •X: integer;
- •13.2.3. Типизированные указатели
- •13.3. Создание и уничтожение динамических переменных
- •X: real;
- •13.4. Администратор кучи
- •Heapend содержит адрес конца кучи
- •13.5. Примеры использования указателей
- •Объявление
- •Var Pr:preco;
- •14. Использование указателей для организации связанных динамических структур
- •14.1. Списки
- •14.1.1. Алгоритмы работы со списками
- •14.2. Организация стека в динамической памяти
- •Var p, st :pstack; {st - указатель на вершину стека}
- •I: integer;
- •14.3. Очереди
- •14.4. Деревья
- •14.4.1. Организация деревьев в динамической памяти
- •14.4.2. Построение полного двоичного дерева
- •I,j :I nteger; I - значение инф. Поля очередной
- •Var p,h:pstack;
- •Inc(I); {создаем новый узел – вершину}
- •Inc(j); {переместим указатель t и переход
- •14.4.3. Алгоритмы работы с двоичными упорядоченными деревьями (деревьями поиска)
- •14.4.4. Рекурсивные алгоритмы работы с двоичными деревьями
- •I, X : integer;
- •Литература
- •Часть 1. Язык программирования Паскаль
5.4. Составной оператор
Часто при некотором условии необходимо выполнить определенную последовательность операторов, а по правилам языка допускается использование только одного оператора. В этом случае последовательность операторов объединяют в один составной оператор, который воспринимается как единое целое и может располагаться в любом месте программы.
Составной оператор начинается с зарезервированного слова BEGIN и заканчивается словом END, между которыми размещаются требуемые операторы, отделенные друг от друга символом «точка с запятой». После BEGIN ставятся пробелы, а после END – символ «точка с запятой». Операторы, входящие в составной оператор, выполняются последовательно (если среди них нет операторов перехода).
П р и м е р составного оператора.
BEGIN
I:= 8;
C:=16;
WRITELN(I*C:10)
END;
5.5. Условный оператор
Условный оператор позволяет выполнить некоторый оператор только в том случае, если истинно некоторое условие (логическое выражение).
Синтаксическая диаграмма условного оператора изображена на рис. 5.1.
Рис.5.1. Синтаксическая диаграмма условного оператора
Здесь и далее на синтаксических диаграммах в овальных фигурах изображены неизменяемые части формата, в прямоугольных – определяемые пользователем. Линиями и стрелками показан возможный порядок действий в операторе.
Если логическое выражение ложно, то либо управление передается на оператор, следующий сразу за оператором IF, либо выполняется оператор, расположенный после слова ELSE.
Выражение между словами IF и THEN должно иметь тип BOOLEAN.
П р и м е р ы
IF A>B
THEN C:=D
ELSE C:=8;
IF R
THEN C:=10; {R имеет тип BOOLEAN}
IF (A>B) AND (D<>K)
THEN BEGIN
A:=B;
D:=K
END
ELSE A: =B-C+K;
П р и м е р программы расчета корней квадратного уравнения ax2+bx+c=0.
PROGRAM PRIM6;
VAR
A,B,C,D,X1,X2:REAL;
BEGIN
READLN(A,B,C);
WRITELN(’A=’, A, ’ B=’, B, ’ C=’, C);
IF SQR(B)-4*A*C<0
THEN WRITELN(’Действительных корней нет’)
ELSE BEGIN
D:=SQRT(SQR(B)-4*A*C);
X1:=(-B-D)/(2*A); X2:=(-B+D)/(2*A);
WRITELN(’корни уравнения X1=’,X1,’X2=’,X2)
END
END.
5.6. Оператор варианта case
CASE используется, когда необходимо выбрать вариант направления расчетов не из двух, а из большего числа вариантов.
Формат оператора:
CASE <выражение> OF
X1: <оператор 1>;
X2: <оператор 2>;
…
XN: <оператор N>
ELSE <оператор>
END;
Метки операторов X1, X2, … , XN представляют собой либо отдельную константу, либо список констант, перечисленных через запятые, либо диапазон. Тип выражения и констант должен быть одним и тем же. Используемые в операторе CASE метки X1, X2, … , XN не описываются в разделе описания меток и отличаются по смыслу от меток, там описанных.
Оператор выполняется следующим образом: вычисляется значение выражения, далее выполняется только тот оператор, константа выбора которого равна значению выражения. Если среди констант нет равной значению выражения, то выполняется оператор, следующий за словом ELSE (при отсутствии слова ELSE выполняется оператор, следующий за словом END). Выражение может иметь любой дискретный тип.
П р и м е р программы вывода дня недели в зависимости от значения
введенного числа
PROGRAM PRIM7;
VAR
DEN:INTEGER;
BEGIN
READLN (DEN);
CASE DEN OF
1: WRITELN (’Понедельник’);
2: WRITELN (’Вторник’);
3: WRITELN (’Среда’);
4: WRITELN (’Четверг’);
5: WRITELN (’Пятница’);
6: WRITELN (’Суббота’);
7: WRITELN (’Воскресенье’);
ELSE WRITELN (’Вы неверно ввели число’)
END
END.