![](/user_photo/2706_HbeT2.jpg)
- •Содержание
- •Рекомендации к проведению лабораторных работ
- •Комментарии в тексте программы
- •Компиляция и запуск программы на выполнение
- •Переменные и константы
- •Операторы и выражения
- •Оператор присваивания
- •Арифметические операции
- •Логические операции
- •Составной оператор 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
![](/html/2706/363/html_6nPrlBqXsZ.l5CD/htmlconvd-KP4AzT9x1.jpg)
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 |
|
|
|
|
|
|
|
|
|
![](/html/2706/363/html_6nPrlBqXsZ.l5CD/htmlconvd-KP4AzT10x1.jpg)
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 |