- •Часть 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. Язык программирования Паскаль
1. With elem 50
DO begin 50
a:=1998; 50
b:=37.5, 50
c:=’И.И. Петров’ 50
end; 50
2. for i:=1 to 10 do 50
with tabl[i] 50
do begin 50
read(a,b); 51
readln(c) 51
end; 51
П р и м е р. Пусть запись содержит сведения о студенте и состоит из полей: личный номер студента, фамилия и инициалы, номер курса, номер группы, средние оценки за каждый год учебы. Необходимо ввести исходные данные. 51
{Ввод элементов записи} 51
const Nmax=30; 51
type Zap=Record 51
nom:byte; 51
fio:string[20]; 51
kurs, group:byte; 51
ocen:array[1..5] of real; 51
end; 51
arr_zap = array[1..Nmax] of zap; 51
var 51
list:arr_zap; 51
n:1..Nmax; 51
begin 51
write(‘Задайте количество студентов в списке …’); 51
readln(n); 51
for i:=1 to n do 51
with list[i] 51
do begin 51
write(‘Задайте личный номер студента ’); 51
readln(nom); 51
write(‘Задайте фамилию ’); 51
readln(fio); 51
write(‘курс и группа ’); 51
readln(kurs, gruppa); 51
write(‘средние оценки за каждый год ’); 51
for j:=1 to 5 51
do readln(ocen[i]); 51
readln 51
end 51
end. 51
7. ТИПИЗИРОВАННЫЕ КОНСТАНТЫ 51
Рис. 7.1. Синтаксическая диаграмма описания типизированной константы 52
7.1. Типизированные константы скалярных типов 52
7.2. Типизированные константы - массивы и строки 52
П р и м е р ы : 52
7.3. Типизированные константы – множества 53
7.4. Типизированные константы – записи 54
Рис. 7.4. Синтаксическая диаграмма типизированной константы – записи 54
8. ФАЙЛЫ 54
8.1. Типизированные файлы 55
8.2. Текстовые файлы 57
При выполнении первого варианта получим 1 2 3 4 5 58
9. ПОДПРОГРАММЫ 59
9.1. Процедуры и функции 60
9.2. Процедуры и функции пользователя 60
Q := TRIANGLE( 2, 3, 4 ); 62
9.3. Параметры подпрограмм 62
10. РЕКУРСИИ 63
10.1. Рекурсивные алгоритмы и определения 63
10.2. Рекурсивные процедуры и функции 64
10.3. Виды рекурсивных процедур 66
11. ГРАФИКА В ПАСКАЛЕ 68
11.1. Основы работы в графическом режиме 68
Begin 69
11.2. Система координат дисплея 70
11.3. Экран и окно 71
11.4. Установка цвета, заполнения и палитры 71
11.5. Построение простейших геометрических образов 72
Вывод точки: PutPixel (x, y: integer; Color: word); 72
11.6. Работа с текстом 73
11.7. Вывод числовых значений 73
12. ПРОГРАММНЫЕ МОДУЛИ 73
12.1. Структура программного модуля 74
END. 74
Модуль следует хранить в одноимённом файле с расширением PAS. 76
12.2. Трансляция модуля. «Сборка» программы 76
12.3. Ссылки на модули 77
Рис. 12.1. Ссылки на модули 77
Рмс. 12.2. Взаимные ссылки модулей 77
{Модуль hlp _ sr – вспомогательные расчёты} 77
13. ДИНАМИЧЕСКАЯ ПАМЯТЬ 78
Рис. 13.1. Распределение памяти 80
13.1. Адресация памяти 81
13.2. Указатели 81
@<Имя переменной> или функция 82
Рис. 13.2. Синтаксическая диаграмма типизированного указателя 82
13.3. Создание и уничтожение динамических переменных 83
1. Типизированные объекты 83
Рис. 13.3. Задание значения переменной, на которую ссылается указатель 84
2. Создание и уничтожение беcтиповых объектов 84
13.4. Администратор кучи 84
Рис. 13.4. Указатели кучи 84
13.5. Примеры использования указателей 85
13.5.1. Объявление 85
R^ := B^; 86
14. ИСПОЛЬЗОВАНИЕ УКАЗАТЕЛЕЙ ДЛЯ ОРГАНИЗАЦИИ СВЯЗАННЫХ ДИНАМИЧЕСКИХ СТРУКТУР 87
14.1. Списки 87
Рис. 14.1. Список в динамической памяти 87
14.2. Организация стека в динамической памяти 90
14.3. Очереди 91
Var 91
no,ko,p:poch;{no –начало очереди, ko – конец очереди} 91
Procedure putoch(n:integer);{помещает значение в очередь} 92
Procedure getoch(var n:integer);{извлек. эл-т из очереди} 92
14.4. Деревья 92
Рис. 14.2. Изображение дерева (а); структура, не являющаяся деревом (б) 93
Начальная вершина (в которую не входит стрелка) называется корнем. Вершины, из которых не выходят стрелки, – терминальные (листья) (помечены кружками). Структура, выходящая из одного узла – поддерево. Дерево, у которого из каждой вершины выходит не более двух стрелок, называется бинарным или двоичным деревом. Уровень – количество стрелок, которые нужно пройти, чтобы добраться от нулевого уровня к данной вершине. 93
Рис. 14.3. Формула в виде двоичного дерева 93
Рис. 14.5. Дерево из четырех уровней 95
Рис. 14.6. Отсортированный список 97
Рис. 14.7. Упорядоченное двоичное дерево 98
