- •Иркутский государственный университет путей сообщения кафедра “информатика” конспект лекций по дисциплине “программирование на алгоритмическом языке высокого уровня”
- •Иркутск
- •Программирование и алгоритмические языки в историческом аспекте
- •Введение в Паскаль
- •Алфавит Паскаля
- •Служебные (ключевые) слова
- •Константы
- •Запись чисел
- •Переменные
- •Типы данных
- •Стандартные функции
- •Выражения
- •Выражения целого типа
- •Выражения вещественного типа
- •3,61·109 X – 526,237 3.61e9 * X – 526.237 * Sqrt(0.2*y) Выражения логического типа
- •Операторы присваивания
- •Программа и этапы ее разработки. Структура программы
- •Var X, s : Word;
- •Комментарии
- •Ввод данных
- •Вывод данных
- •Бесформатный способ вывода
- •±D.DdddddddddE±dd
- •Форматный способ вывода
- •Структуры данных
- •Массивы
- •Var a : Array [1..2,1..3] Of Integer;
- •Error 201: Range check error
- •Var a : tMatrix;
- •Var Doska : Array [‘a’..’h’,1..8] Of Char;
- •Var Roma : Array [1..787] Of Word;
- •Var Roma : Array [-754..33] Of Word;
- •Var Ozenka : Array [1..2,1..3] Of Word;
- •Var Ozenka : Array [Fam, Predm] Of 2..5;
- •Var a: Array [1..3, 1..4, 1..5] Of Integer;
- •Var I, j: Byte;
- •Алгоритм и его свойства
- •Схемы алгоритмов
- •Базовые структуры
- •Цепочка
- •Ветвления
- •Альтернатива
- •If (условие)
- •Вариант 2 – с использованием операции конъюнкция
- •Часто встречающиея ошибки программирования:
- •Var X, y, s_left, s_right, alfa, sin_alfa, segment : Real;
- •Переключатель
- •Var Month: 1..12;
- •Бесконечные циклы
- •Циклы с предусловием
- •Var I, s : Word;
- •Var I, s, n : Word;
- •Программа
- •Var n, min, max, s, count: Word;
- •Часто встречающиея ошибки программирования:
- •Циклы с постусловием
- •Var I, s : Word;
- •Var I, s, n : Word;
- •Программа
- •Var n,min,max,s,count: Word;
- •Var k : Word;
- •X, y, s : Real;
- •Var Month: 1..12;
- •Var n, s : Word;
- •Var I, s : Word;
- •Примеры:
- •Var I, j, k : Word;
- •Var I, i_max, vector_max : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, s : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, k, m : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, s, count : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, k, min, max, i_min, i_max : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, k, i_otr, i_pol : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, k, posl : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, j, t : Integer;
- •Vector : Array [1..K] Of Integer;
- •Var I, j, t : Integer;
- •Vector : Array [1..K] Of Integer;
- •Var I, j, k : Integer;
- •Var I, j, k, posl : Integer;
- •Var I, j, k, m : Integer;
- •Var I, j, k, i_max, j_min : Word;
- •Var I, j, t : Integer;
- •V : Array [1..K] Of Integer;
- •Var I, j, m, t : Integer;
- •V : Array [1..K] Of Integer;
- •Var I, j, b, c : Word;
- •Часто встречающиея ошибки программирования:
- •Множества
- •Var r : tSymb;
- •Основные операции со множествами
- •Типизированные файлы
- •Var f_int : tFile_Int;
- •Var n : Integer;
- •Функции для работы с типизированными файлами
- •И процедуры:
- •Var n : Integer;
- •Текстовые файлы
- •Var f_text : tFile_text;
- •Программа:
- •Var stud_1 : tStudent;
- •Var student : tKadr;
- •Var coord : tCoord;
- •Ключ : ();
- •Подпрограммы
- •Подпрограммы-функции
- •Var p : Real;
- •Var s : Real;
- •Var I: Word;
- •Var a, b, c : Integer;
- •Var a, b, c : Integer;
- •Var a, b : Integer;
- •Var a, b, c: Integer;
- •Рекурсия
- •5 * 4 * Factorial(3)
- •5 * 4 * 3 * Factorial(2)
- •5 * 4 * 3 * 2 * Factorial(1)
- •Var k: Integer; Func_2
- •Var temp : Integer;
- •Особенности рекурсии:
- •Процедуры
- •Var I: Word;
- •Var I, i_min, i_max: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I, j, k: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I, j, k: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I, j, k: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I, j: Word;
- •Программные модули
- •Структура модуля
- •Interface
- •Implementation
- •Var f: Text;
- •Var p: Real;
- •Var temp: Real;
- •Компиляция модулей
- •Взаимное использование модулей
- •Ссылки и динамические переменные
- •Var a, b: tPntint;
- •X, y: tPntchar;
- •Динамические структуры данных
- •Связные списки
- •Inf: Integer;
- •Var head, q : tPoint;
- •Inf: Integer;
- •Var head, q : tPoint;
- •Добавление нового элемента в список
- •Var head, q, r: tPoint;
- •Inf: Integer;
- •Var head, q, r : tPoint;
- •Удаление элемента из списка
- •Inf: Integer;
- •Var head, q, r : tPoint;
- •Сортированные списки
- •Var head, q, r, V: tPoint;
- •Inf: Integer;
- •Var head, q, r, V : tPoint;
- •Бинарные деревья
- •Var root, q, V: tRebro;
- •Интерфейс:
- •Var root, q, V : tRebro;
- •Поиск заданного узла в дереве
- •Var root, q, V : tRebro;
- •Удаление узла из дерева
- •Var root, q, V, r : tRebro;
- •Объектно-ориентированное программирование
- •Var X, y, dx, dy: Word;
- •Var x0, y0, dx, dy: Word;
- •Var x0, y0, dx, dy, radius: Word;
- •Var x0, y0, dx, dy, radius: Word;
- •Основы алгебры логики
- •Логическая функция не (отрицание)
- •Логическая функция и (конъюнкция – логическое умножение)
- •Логическая функция или (дизъюнкция – логическое сложение)
- •Логическое следование (импликация)
- •Логическое совпадение(эквивалентность)
- •Закон исключенного третьего
- •Закон противоречия
- •Закон двойного отрицания
- •Закон контрапозиции
- •Закон расширенной контрапозиции
- •Закон перестановки посылок
- •Закон силлогизма
- •Закон де Моргана
- •Системы счисления
- •Двоичная система счисления
- •Восьмеричная система счисления
- •Шестнадцатиричная система счисления
- •Арифметические операции в двоичной системе счисления
- •1111 11 11 - Переносы
- •Арифметические операции в восьмеричной системе счисления
- •Арифметические операции в 16-ричной системе счисления
- •1. Ошибки при компиляции
- •2. Ошибки времени выполнения а) Ошибки системы ms-dos
- •Б)Ошибки ввода-вывода
- •В)Критические ошибки
- •Г)Фатальные ошибки
Var X, y, dx, dy: Word;
driver, regim: Integer;
Begin
driver:=detect; автоопределение графического драйвера
InitGraph(Driver,Regim,'C:\BP\BGI'); инициализация графического режима
SetBkColor(1); цвет фона - синий
ClearDevice; очистка экрана
SetColor(14); цвет фигур - желтый
x:=100; x и y – координаты точки
y:=150;
dx:=50; dx и dy – шаги по координатам
dy:=100;
PutPixel(x,y,14); рисуем точку желтым цветом
Delay(1000); задержка 1 сек
PutPixel(x,y,1); там же рисуем точку цветом фона
x:=x + dx; делаем шаг по координатам
y:=y + dy;
PutPixel(x,y,14); рисуем желтую точку на новом месте
Delay(1000);
ReadLn;
CloseGraph; закрываем графический режим
End.
Эта программа создана классическими методами с использованием переменных и процедур для работы с графическими объектами.
Создадим объект, включающий:
поляxиy– его координаты,
методыInit–инициализация– задание начальных значений координат,
Show– появление объекта на экране,
Hide– скрытие объекта,
Move– перемещение объекта на один шаг по координатам.
Поля объекта называются его свойствами. Для описания объектов в Паскале используется специальный типObject:
Program Tochka;
Uses CRT, Graph;
Type TPix = Object
x, y: Word; координаты точки
Procedure Init(a, b: Word); инициализация объекта: a и b – его начальные координаты
Procedure Show; появление объекта
Procedure Hide; скрытие объекта
Procedure Move(da, db: Word); перемещение объекта: da и db – шаги по координатам
End;
Procedure TPix.Init; инициализация
Begin
x:=a; x и y – глобальные переменные
y:=b; a и b – входные переменные (формальные параметры) – начальные координаты объекта
End;
Procedure TPix.Show; появление
Begin
PutPixel(x,y,14); помещаем желтую точку по координатам x и y
End;
Procedure TPix.Hide; скрытие
Begin
PutPixel(x,y,1); помещаем синюю (цвет фона) точку по координатам x и y
End;
Procedure TPix.Move; перемещение
Begin
Hide; скрытие
x:=x + da; изменение координат
y:=y + db; x и y – глобальные переменные
da и db – входные переменные (формальные параметры) – шаги по координатам
Show; появление
End;
Var x0, y0, dx, dy: Word;
driver, regim: Integer;
pixel: TPix; создаем экземпляр объекта – переменную pixel
Begin
driver:=detect; автоопределение графического драйвера
InitGraph(Driver,Regim,'C:\BP\BGI'); инициализация графического режима
SetBkColor(1); цвет фона - синий
ClearDevice; очистка экрана
SetColor(14); цвет фигур - желтый
x0:=100; x0 и y0 – начальные координаты точки
y0:=150;
dx:=50; dx и dy – шаги по координатам
dy:=40;
pixel.Init(x0, y0); инициализация точки: задаем начальные координаты точки
pixel.Show; выводим точку на экран по заданным координатам
Delay(1000); пауза в 1 сек
Pixel.Move(dx, dy); перемещаем точку на dx,dy
Delay(1000); пауза в 1 сек
ReadLn;
CloseGraph; закрываем графический режим
End.
Таким образом:
1.в объектеTPixобъединены описания его полей (свойств) и методов –инкапсуляция,
2.доступ ксвойствамобъекта возможен только через егометоды;непосредственное обращение к полям противоречит принципам объектно-ориентированного программирования!
3.поведение объекта полностью определяется ее методамиInit, Show, Hide, Move,
4.поля (свойства) объекта являютсяглобальнымипараметрами для его процедур (методов), поэтому ихне надо передаватьв эти процедуры через формальные параметры,
5.перед началом работы сэкземпляромобъекта (точкой) необходима ееинициализация– задание начальных координат точки.
Рассмотрим понятие наследования: используя объектTPix, создадим объектTRingдля рисования и перемещения окружности, добавив в новый объект полеrad– радиус окружности ипереопределивдля нее методыInit, Show, Hide, доставшиеся от родительского типа. Это означает, что в обоих типах будут использованы методы с одними и теми же именами, но с различной реализацией. Поляxиyновый объект унаследует от старого – это будут координаты центра окружности:
Type TRing = Object (TPix) объект TRing – потомок объекта TPix
rad: Word; радиус окружности
Procedure Init(a, b, r: Word); инициализация объекта: a и b – координаты его центра, r – его радиус
Procedure Show; появление объекта
Procedure Hide; скрытие объекта
End;
Procedure TRing.Init; переопределенная инициализация
Begin
x:=a; x, y, rad – глобальные переменные
y:=b; a, b, r – входные переменные (формальные параметры) –координаты центра объекта и его радиус
rad:=r;
End;
Procedure TRing.Show; переопределенное появление
Begin
SetColor(14); цвет фигуры - желтый
Circle(x,y,rad); помещаем желтую окружность по координатам x и y
End;
Procedure TRing.Hide; переопределенное скрытие
Begin
SetColor(1); цвет фигуры – синий (цвет фона)
Circle(x,y,rad); помещаем синюю окружность по координатам x и y
End;
Далее поместим головную программу: