
- •Часть 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. Общие сведения о языке паскаль
Язык Паскаль (назван в честь Блеза Паскаля (1623 - 1662 гг.), выдающегося французского математика и философа) разработан 1968 - 1971 гг. Никлаусом Виртом (Швейцария). Первоначально создавался для обучения программированию. Сейчас широко используется среди программистов.
Паскаль имеет ряд преимуществ:
– благодаря компактности, удачному описанию, лёгок в изучении;
– отражает фундаментальные и наиболее важные идеи алгоритмов в очевидной и лёгко воспринимаемой форме, что предоставляет программисту средства, помогающие проектировать программы;
– позволяет чётко реализовать идеи структурного программирования и структурной организации данных;
– язык Паскаль сыграл большую роль в развитии методов аналитического доказательства правильности программ, позволил перейти к автоматической проверке;
– повысилась надёжность разработанных программ за счёт требований языка Паскаль к описанию переменных (при компилировании без выполнения).
1.1. Алфавит языка. Идентификаторы и зарезервированные слова
Набор символов языка Паскаль является подмножеством набора символов кода ASCII, в котором используются следующие символы:
– прописные и строчные буквы латинского алфавита (не различаются), а
также символ подчеркивания, который используется наравне с буквами;
– цифры от 0 до 9;
– специальные символы: #, $, ', (, ), *, +, ,, -, ., /, :, ;, <, >, =, @, [, ], ^, {, };
– символ пробела.
Идентификаторы используются для обозначения имен переменных, констант, типов, процедур, функций, модулей, программ и представляют собой последовательность букв, цифр и символа подчеркивания. Первым символом должна быть буква или символ подчеркивания.
Пример правильной записи идентификатора:
Program1, PeremX, _a2.
Пример ошибочной записи: 1_Program, Perem X, a!2.
Часто вместо слова «идентификатор» используется термин «имя». Различают стандартные идентификаторы и идентификаторы пользователя. Стандартным идентификаторам разработчики заранее приписывают определенный смысл, например, обозначение типов данных (Integer, Boolean и т. п.), констант (False, True, Maxint), функций (Abs, Sqr), процедур (Read, Write). Идентификаторы пользователя задаются программистом и служат для обозначения определенных им объектов.
Зарезервированные слова служат для определенной цели и имеют один- единственный фиксированный смысл. В Паскале имеются следующие зарезервированные слова:
And Goto Program
Asm If Record
Array Implementation Repeat
Begin In Set
Case Inherited Shl
Const Inline Shr
Constructor Interface String
Destructor Label Then
Div Library To
Do Mod Type
Downto Nil Unit
Else Not Until
End Object Uses
Exports Of Var
File Or While
For Packed With
Function Procedure Xor
2. Данные в паскале. Простые типы данных
Решение любой задачи на ЭВМ сводится к определенным действиям над данными с целью получения конечного результата. Под данными понимают представление фактов или идей в формализованном виде, пригодном для передачи и обработки в процессе, реализуемом на ЭВМ.
В программе данные представляют собой значения констант или переменных. Переменными называют элементы данных, которые могут менять свои значения в процессе выполнения программы. Константы – это элементы данных, значения которых известны заранее и в ходе выполнения программы не меняются. На рис. 2.1 приведена структура типов данных языка Паскаль.
Типы данных определяют множество значений, которые могут принимать объекты программы (переменные, константы, функции, выражения), и множество операций, допустимых над этими значениями.