- •Федеральное агентство по образованию
- •Структурированные типы данных. Классификация
- •Массивы Определение массива
- •Обращение к элементу массива. Хранение элементов массива. Доступ к элементам массива
- •Действия над массивами
- •Поиск элемента (одномерного ) массива Поиск среди неупорядоченных элементов массива
- •Поиск среди упорядоченных элементов массива
- •Сортировка элементов (одномерного) массива
- •Линейная сортировка (сортировка отбором)
- •Сортировка методом пузырька
- •5 4 3 1 2
- •5 4 3 2 1 Метод быстрой сортировки с разделением
- •Множества
- •Объявление множеств
- •Представление в памяти переменной типа множество
- •Операторы для работы с множествами Проверка принадлежности элемента множеству
- •Операции над множествами
- •Сравнение множеств
- •Применение множеств
- •Процедуры и структурное программирование
- •Преимущества структурного программирования
- •Планирование структурированной программы
- •Метод программирования сверху вниз
- •Определение процедуры
- •Передача управления при вызовах процедур и функций
- •Функции: подпрограммы,возвращающие единственный результат
- •Понятие блока
- •Область действия и время жизни переменных
- •Особенности локальных переменных
- •Особенности глобальных переменных
- •Особенности использования процедур и функций в турбо паскале
- •Опережающее определение процедур и функций
- •Рекурсия и итерация
- •Процедуры и функции как параметры
- •Директивы подпрограмм
- •Отладка и тестирование программ, содержащих подпрограммы
- •Нисходящее тестирование и подпрограммы-заглушки
- •Восходящее тестирование и программы-тестеры
- •Рекомендации по отладке программ, содержащих подпрограммы
- •Использование отладчикадля трассировки процедур
- •Запуск внешних программ
- •Стандартные модули
- •Модуль Crt
- •Модуль Graph
- •Функции
- •Текстовые файлы
- •Нетипизированные файлы
- •Типизированные файлы
- •Прямой доступ
- •Дополнительные функции работы с файлами
- •Обработка ошибок ввода-вывода
- •Указатели и динамические переменные Статические и динамические переменные
- •Адресация памяти в Турбо Паскале
- •Карта памяти Турбо Паскаля
- •Указатели
- •Операция для получения адреса
- •Функции для работы с адресами
- •Процедуры для работы с указателями
- •Присваивание значений указателям
- •Организация ссылок
- •Динамические структурированные переменные Динамические записи
- •Динамические массивы
- •Массивы размером более 64 кбайт
- •Строки с завершающим нулем (asciiz)
- •Процедуры и функции модуля strings
- •Указатели на процедуры и функции
- •Динамические структуры данных
- •Линейные списки
- •60 Лекции по курсу «Языки программирования» Часть II
Структурированные типы данных. Классификация
Практически все типы, рассмотренные до этого, кроме строкового, были скалярными, которые обладали следующими особенностями:
с именем скалярной переменной обычно было связано только одно значение;
неделимость этого значения (без специальных ухищрений в целом значении вы не можете обратиться напрямую к отдельному биту).
В Турбо Паскале кроме скалярных типов данных имеются структурированные типы данных, для которых под одним именем объединяются сразу несколько значений и вы можете работать с каждым из этих значений, используя обобщенное имя структурированной переменной. Разделяются структурированные типы по следующим признакам:

Метод доступа показывает, как вы можете обращаться к компонентам объекта. При прямом методе доступа вы можете обращаться к любой компоненте объекта или переменной независимо от других. При последовательном методе доступа вы можете обращаться к компоненте следующим образом: обратиться к i-ой компоненте можно только после обращения к (i-1) - ой.
Массивы Определение массива
Массив – это структурированный тип данных, в котором число элементов фиксировано при объявлении, тип компонентов массива одинаков, и имеется возможность прямого доступа к каждой отдельной компоненте объекта через индекс (порядковый номер).
Хорошим примером массива является улица, состоящая из домов




58 59 60
... ...
Гагарина, 59
Каждый компонент имеет номер (номер дома). Обращение к каждой отдельной компоненте массива происходит с использованием обобщения имени и индекса. На псевдокоде этот индекс можно написать, где хотите <Гагарина, 59; Гагарина (59)>.
На Турбо Паскале для записи индекса используются квадратные скобки: A[i]
Синтаксическая диаграмма:

ОПИСАНИЕ СИНТАКСИСА:
-
type
тип-массив = array [тип_индекса] of тип_элемента;
Пример: type
TypeArray = array[1.. 5] of Char;
Интерпретация: Здесь идентификатор тип-массив описывает набор элементов массива; каждый элемент предназначен для содержания значения, принадлежащего типу тип_элемента. Тип_индекса может представлять собой любой из стандартных порядковых типов Char или Boolean, перечислимый тип либо тип-диапазон. Причем для каждого значения типа_индекса имеется по одному элементу массива.
Тип_элемента указывает, к какому типу относится каждый из элементов массива. Как видно все элементы массива относятся к одному типу данных.
Примечание 1: Стандартные типы Real и Integer и LongInt не могут быть использованы в качестве типа_индекса. Однако тип-диапазон, созданный на основе Integer, для этой цели нам подходит. Integer и LongInt не подходит потому, что массив с таким типом индекса оказался бы чересчур обширным (по одному элементу на каждое значение типа). A Real — потому что это не порядковый тип.
Примечание 2: Тип_элементов может представлять собой любой (порядковый) стандартный или созданный пользователем тип (массив, запись).
Если компонентой массива является массив, то будут получаться следующие длинные записи:
Тип_элементов
массива

V
ar
a: array [1..2] of array [1..3] of real;
В данном случае объявляется массив из 2 элементов, где каждый элемент представляет собой массив из 3 элементов. Такую запись на Паскале сокращают следующим образом:
Var
a: array [1..2, 1..3] of real; - многомерный (двухмерный) массив.
Для таких многомерных массивов при их описании описывается тип индекса, необходимый для доступа по каждой размерности массива, или по каждой координате массива.
