- •Содержание
- •Рекомендации к проведению лабораторных работ
- •Комментарии в тексте программы
- •Компиляция и запуск программы на выполнение
- •Переменные и константы
- •Операторы и выражения
- •Оператор присваивания
- •Арифметические операции
- •Логические операции
- •Составной оператор 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
17
Рисунок 1.1. – Классификация стандартных типов данных Delphi
Простой тип
При работе с простыми типами данных предполагается, что:
1.все действия с данными простого типа являются точными;
2.действия выполняются по обычным правилам арифметики;
3.вычисление прерывается, если результат оказывается за границами допустимого подмножества.
Втаблицах 1.1. – 1.4 вы найдете описание целого, символьного, логического и действительного типов данных.
Таблица 1.1. Целые числа
Тип |
Диапазон значений |
Размер в байтах |
|
|
|
|
|
Int64 |
–263 .. 263–1 |
8 |
|
Integer (Longint) |
–2147483648 .. 2147483647 |
4 |
|
Smallint |
–32768 .. 32767 |
2 |
|
Shortint |
–128 .. 127 |
1 |
|
Byte |
0 |
.. 255 |
1 |
Word |
0 |
.. 65535 |
2 |
Cardinal (LongWord) |
0 |
.. 4294967295 |
4 |
Таблица 1.2. Символьный тип данных
|
Тип |
Кодировка |
Размер в байтах |
|
|
|
|
|
Char (AnsiChar) |
ANSI |
1 |
|
WideChar |
UNICODE |
2 |
|
|
|
|
18
Таблица 1.3. Логический тип данных
Тип |
Диапазон значений |
Размер в байтах |
|
|
|
|
|
Boolean |
0 – false; 1 – true; |
1 |
|
ByteBool |
от 0 |
до 255, где 0 – false, 1..255 – true |
1 |
WordBool |
от 0 |
до 65535, где 0 – false, 1..65535 – true |
2 |
LongBool |
от 0 |
до 4294967295, где 0 – false, 1..4294967295 – true |
4 |
Действительные (вещественные) типы данных предназначены для работы со значениями, содержащими не только целую, но и дробную часть.
Таблица 1.4. Действительные типы данных
Тип |
Диапазон значений |
Количество знаков |
Размер в байтах |
|
|
|
|
Real48 |
2.9 x 10–39 .. 1.7 x 1038 |
11–12 |
6 |
Single |
.5 x 10–45 .. 3.4 x 1038 |
7–8 |
4 |
Double (Real) |
5.0 x 10–324 .. 1.7 x 10308 |
15–16 |
8 |
Extended |
3.6 x 10–4951 .. 1.1 x 104932 |
19–20 |
10 |
Comp |
–263+1 .. 263 –1 |
19–20 |
8 |
Currency |
-922337203685477.5808.. |
19–20 |
8 |
|
922337203685477.5807 |
|
|
Перечислимые типы данных
Перечислимые типы относятся к типу данных, определяемых программистом. Перечислимый тип данных задаётся списком имён.
type TypeName = (Value1, Value2,..., ValueN);
Числа, логические и символьные константы не могут быть элементом перечислимого типа. В качестве примера представим перечислимый тип, соответствующий дням недели:
type TypeWeekDay =(Mon, Tu, We, Th, Fr, Sa, Su); //. . .
var WDay1, WDay2 : TypeWeekDay; begin
WDay1 : =Mon;
WDay2 : =Tu; end;
Особенность перечислимого типа в том, что каждому его элементу соответствует порядковый номер, начиная с 0. Наличие порядкового номера позволяет проводить операции сравнения.
if WDay1<WDay2 then …
Поддиапазонны
Переменная, входящая в поддиапазон, может принимать значения только в пределах границ диапазона.
type TSubIntegerRange = 10 .. 100; type TSubCharRange = ’A’ .. ’Z’;
. . .
var IntValue : TSubIntegerRange; CharValue : TSubCharRange;
. . .
MyValue :=50; CharValue := 'X';
Исходя из примера, переменная IntValue сможет хранить целочисленные значения от 10 до 100, а переменная CharValue – прописные латинские символы от “A” до “Z”.