- •Содержание
 - •Рекомендации к проведению лабораторных работ
 - •Комментарии в тексте программы
 - •Компиляция и запуск программы на выполнение
 - •Переменные и константы
 - •Операторы и выражения
 - •Оператор присваивания
 - •Арифметические операции
 - •Логические операции
 - •Составной оператор begin..end
 - •Условный оператор if..then
 - •Оператор-селектор case..of
 - •Операторы обработки циклов
 - •Цикл с параметром for .. do
 - •Цикл с предусловием while..do
 - •Цикл с постусловием repeat..until
 - •Процедуры break и continue
 - •Оператор with..do
 - •Процедуры и функции
 - •Процедуры
 - •Функции
 - •1. Фундаментальные структуры данных
 - •Общее понятие типа данных
 - •Простой тип
 - •Перечислимые типы данных
 - •Поддиапазонны
 - •Строковый тип
 - •Структурные типы
 - •Массивы
 - •Записи
 - •Множества
 - •Представление структур в памяти
 - •Задание
 - •2. Работа с последовательностями, файлы
 - •Доступ к файлу
 - •Операции над файлами
 - •Окончание файла
 - •Пример работы с файлом
 - •Задание
 - •3. Анализ алгоритмов
 - •Рост функций
 - •Задание
 - •4. Простейшие методы сортировки массивов
 - •Оценка алгоритмов сортировки
 - •Шейкер-сортировка
 - •Сортировка простыми вставками
 - •Сортировка бинарными вставками
 - •Задание
 - •5. Улучшенные методы сортировки массивов
 - •Сортировка с помощью включений с уменьшающимися расстояниями (сортировка Шелла)
 - •Пирамидальная сортировка
 - •Сортировка с разделением (быстрая сортировка)
 - •Задание
 - •6. Сортировка последовательных файлов
 - •Сортировка простым слиянием
 - •Естественное слияние
 - •Задание
 - •7. Рекурсивные алгоритмы
 - •Сравнение рекурсии и итерации
 - •Задание
 - •8. Динамические структуры данных, связные списки
 - •Списки
 - •Пример создания и заполнения списка
 - •Задание
 - •9. Нелинейные структуры данных
 - •Граф
 - •Бинарное дерево
 - •Задание
 - •10. Алгоритмы на графах
 - •Алгоритмы обхода в глубину и по уровням
 - •Построение минимального остовного дерева
 - •Поиск кратчайшего пути
 - •Задание
 - •11. Поиск данных
 - •Двоичный (бинарный) поиск элемента в массиве
 - •Интерполяционный поиск элемента в массиве
 - •Алгоритм Бойера-Мура
 - •Задание
 - •12. Хеширование
 - •Отечественный стандарт хеширования
 - •Создание хеш-функции
 - •Хеш-функции для строковых значений, алгоритм Гонера
 - •Задание
 - •13. Методы сжатия текстовых данных
 - •Метод “Running”
 - •Словарные методы сжатия
 - •Алгоритм Хаффмана
 - •Задание
 - •14. Алгоритмы вывода графических примитивов
 - •Рисование отрезка
 - •Прямое вычисление координат
 - •Инкрементный алгоритм Брезенхэма
 - •Простейший алгоритм закрашивания замкнутой области
 - •Задание
 - •15. Псевдослучайные последовательности
 - •Метод середин квадратов
 - •Линейный конгруэнтный метод
 - •Генератор псевдослучайных чисел, поставляемый с системой
 - •Оценка качества генератора ПСП
 - •Задание
 - •16. Параллельные алгоритмы
 - •Пример многопоточного приложения
 - •Задание
 - •Задание на СКР
 - •Вариант 1. Клеточные автоматы
 - •Вариант 2. Раскрашивание карты
 - •Вариант 3. Крисс-кросс
 - •Вариант 4. Лабиринт
 - •Список использованной литературы
 - •Приложение A. Справочник по функциям Delphi
 - •Операции с порядковыми типами
 - •Математические функции и процедуры
 - •Генерация псевдослучайного числа
 - •Преобразование типов данных
 - •Работа с памятью
 - •Приложение Б. Компонент-сетка TStringGrid
 - •Приложение В. Компонент-диаграмма TChart
 - •Приложение Д. Элементарный поток – класс TThread
 
9
В квадратных скобках отмечен зачастую необязательный указатель на тип константы. А вот и пример определения обычных констант:
const A =  | 
	100;  | 
B =  | 
	-3.1426;  | 
C =  | 
	'Текст';  | 
Для задания значения, которое будет содержаться в обычной константе, допускается применение математических выражений и результатов, возвращаемых функциями.
const D = 500; E=D+6; F=3/Pi;
Важно знать, в каком именно месте листинга допускается объявление переменных и констант. В консольных проектах декларация осуществляется перед составным оператором begin..end.
program Project1;
{$APPTYPE  | 
	CONSOLE}  | 
	
  | 
	
  | 
uses SysUtils;  | 
	//объявление константы  | 
||
const X =  | 
	10;  | 
||
Var Y, Z : integer;  | 
	//объявление двух переменных  | 
||
begin  | 
	
  | 
	
  | 
	
  | 
Z:=X+Y;
//остальной код программы end.
Операторы и выражения
С помощью операторов выполняются определённые действия (операции) с данными различных типов. Наиболее часто используемый оператор – оператор присвоения.
Оператор присваивания
С оператором присваивания мы уже познакомились не предыдущих страницах главы. Он обозначается символами “:=”. При выполнении оператора присвоения выполняется выражение, стоящее правее данного оператора. Результат выражения присваивается переменной, находящейся левее оператора присвоения. X:=1+1; – в результате переменной X будет присвоено значение 2.
Не забывайте – Delphi строго типизированный язык. Тип переменной, стоящей слева от оператора “:=” должен быть совместимым с типом, получаемым в результате выполнения выражения. Delphi не допустит ошибок приведения типов, а для тренировки сообразительности предложу вам самостоятельно найти ошибку в следующих строках кода:
var X, Y : real; Z : integer;
begin
X:=2; Y:=3;
Z:=X+Y;
end;
Арифметические операции
Арифметические операции необходимы для математических действий с целыми и вещественными типами данных. Помимо известных ещё из курса начальной школы операторов сложения, вычитания и деления Delphi владеет операторами целочисленного деления.
Таблица 1.Основные арифметические операторы
Оператор  | 
	Операция  | 
	Тип  | 
	Возвращаемый тип  | 
	Пример  | 
	Результат  | 
  | 
	
  | 
	данных  | 
	
  | 
	
  | 
	
  | 
+  | 
	сложение  | 
	integer,  | 
	integer, real  | 
	X:=5+5.7;  | 
	10.7  | 
  | 
	
  | 
	real  | 
	
  | 
	
  | 
	
  | 
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
10
-
*
/
Div
Mod
вычитание
умножение
деление
целочисленное деление (отбрасывается десятичная часть результата)
целочисленное деление (отбрасывается целая часть результата)
integer,  | 
	integer, real  | 
	X:=6-3.5;  | 
	2.5  | 
real  | 
	integer, real  | 
	X:=2*2;  | 
	4  | 
integer,  | 
|||
real  | 
	real  | 
	X:=3/2;  | 
	1.5  | 
integer,  | 
|||
real  | 
	integer  | 
	X:=3 div 2;  | 
	1  | 
integer  | 
|||
integer  | 
	real  | 
	X:=3 mod 2;  | 
	0.5  | 
Логические операции
В результате выполнения любой из логических операций мы можем ожидать только одно значение из двух возможных: Да (True) или Нет (False).
Таблица 2. Логические операции
Выра-  | 
	Операция  | 
	Пример  | 
	Результат  | 
жение  | 
	
  | 
	
  | 
	
  | 
  | 
	
  | 
	Операции сравнения  | 
	
  | 
  | 
	
  | 
	var x : INTEGER = 6;  | 
	
  | 
=  | 
	Сравнение  | 
	X=5  | 
	FALSE  | 
<>  | 
	Неравенство  | 
	X<>5  | 
	TRUE  | 
>  | 
	Больше  | 
	X>5  | 
	TRUE  | 
<  | 
	Меньше  | 
	X<5  | 
	FALSE  | 
>=  | 
	Больше или равно  | 
	X>=5  | 
	TRUE  | 
<=  | 
	Меньше или равно  | 
	X<=5  | 
	FALSE  | 
  | 
	
  | 
	Логические выражения  | 
	
  | 
NOT Логическое отрицание.
AND Логическое умножение (конъюнкция, логическое И) для двух выражений.
OR Выполняет операцию логического ИЛИ (сложения) для двух выражений.
XOR Выполняет операцию исключающую ИЛИ для двух выражений.
x:= NOT True;  | 
	FALSE  | 
x:= NOT False;  | 
	TRUE  | 
x:= NOT Null;  | 
	NULL  | 
x:=True and True;  | 
	TRUE  | 
x:=True AND False;  | 
	FALSE  | 
x:=True AND Null;  | 
	NULL  | 
x:=False AND True;  | 
	FALSE  | 
x:=False AND False;  | 
	FALSE  | 
x:=False AND Null;  | 
	FALSE  | 
x:=Null AND True;  | 
	NULL  | 
x:=Null AND False;  | 
	FALSE  | 
x:=Null AND Null;  | 
	NULL  | 
x:=True OR True;  | 
	TRUE  | 
x:=True OR False;  | 
	FALSE  | 
x:=True OR Null;  | 
	TRUE  | 
x:=False OR True;  | 
	TRUE  | 
x:=False OR False;  | 
	FALSE  | 
x:=False OR Null;  | 
	NULL  | 
x:=Null OR True;  | 
	TRUE  | 
x:=Null OR False;  | 
	NULL  | 
x:=Null OR Null;  | 
	NULL  | 
x:=True XOR True;  | 
	FALSE  | 
x:=True XOR False;  | 
	TRUE  | 
x:=False XOR True;  | 
	TRUE  | 
x:=False XOR False;  | 
	FALSE  | 
