- •1. Структура (состав) языка
- •2. Алфавит
- •3. Лексическая структура языка
- •4. Структура программной единицы
- •5. Стиль записи программ на языке Паскаль
- •6. Типы данных в Паскале
- •6.3 Классификация типов данных в Турбо Паскале
- •6.4 Порядковые типы
- •6.4.2 Булевский (логический) тип
- •Repeat тело_цикла until (логическое_выражение);
- •6.4.3 Целые типы Выделяют целые типы ------------- со знаком – shortint, integer, longint)
- •1 Группа функций:
- •2 Группа функций:
- •3 Группа функций:
- •6.4.4 Перечисляемый тип.
- •6.4.6 Символьный тип
- •6.5 Вещественные типы.
- •7. Выражения в языке Паскаль.
- •10. Вычисление по формулам.
- •10.1 Оператор присваивания .
- •10.2 Характер использования переменных в математике и в программах.
- •10.3 Бесконечности
- •10.4 Нестандартные операции
- •6.6 Строки
- •1) Операции присваивания и сравнения.
- •3) Заполнение строки одним символом
- •4) Стандартные функции и процедуры для работы со строками:
- •5) Подпрограммы преобразования из строкового представления в числовое и наоборот:
- •8. Совместимость и преобразование типов.
- •Совместимость типов
- •8.2 Тип результата арифметических выражений.
- •8.3 Преобразование (приведение) типов и значений.
- •8.3.1 Явное преобразование (приведение) типов.
- •8.3.2 Неявное преобразование или приведение типов.
- •9. Простейший ввод-вывод на Паскале
- •Стандартные файлы Input и Output
- •9.2 Процедуры ввода информации (с клавиатуры.
- •9.3 Процедуры вывода в тр.
- •10. Вычисление по формулам (продолжение)
- •10.6. Уточнение многоместных (n - арных) операций
- •11. Средства языка Паскаль для циклов с известным числом повторений.
- •12. Табулирование функций
- •13. Разветвляющиеся алгоритмы
- •13.1 Таблица ситуаций и команда выбора.
- •13.2 Средства языка Паскаль для программирования разветствляющихся алгоритмов
- •13.4 Описание ситуаций
- •13.5 Запись команды выбора (case) (уточнение таблицы ситуаций) с помощью набора команд ветвления
- •13.6 Запись последовательных команд ветвления в случае, когда соседние зависимые ситуации имеют общие признаки.
- •13.6.1 Восходящий подход
- •13.6.2 Нисходящий подход
- •14. Циклы с неизвестным числом повторений
- •15. Структурированные типы данных. Массивы
- •15.1 Классификация (особенности) структурированных типов данных
- •15. 2. Определение массива
- •15.3 Объявление массива на Турбо Паскале
- •15.4 Хранение элементов массива. Доступ к элементам и частям массива
- •15.5 Уточнение команд обработки массива
- •16. Правила разработки цикла
- •15. 6 Действия над массивами
- •17. Множества.
- •17.1 Множества в Паскале и в математике. Сходства и различия между ними.
- •17.2 Объявление множества на Паскале
- •17.3 Присваивание значений множествам. Конструктор множества
- •17.4 Операции над множествами.
- •17.5 Сравнение множеств.
- •17.6 Применение множеств.
- •18. Вспомогательные алгоритмы (подпрограммы).
- •18.1 Три способа записи повторяющихся команд
- •18.2 Понятие блока
- •18.3 Объекты подпрограммы (то, над чем выполняются действия).
- •18.4 Свойства локальных и глобальных объектов
- •Свойства глобальных объектов:
- •18.5 Выделение памяти под локальные и глобальные переменные
- •18.6 Передача параметров в подпрограммы.
- •Фактические параметры
- •18.7 Подпрограммы, возвращающие значение (функции)
- •18.8 Особенности использования процедур и функций в Турбо Паскале
- •18.9. Побочный эффект (side effect)
- •18.10 Опережающее определение процедур и функций.
- •18.11 Рекурсия и итерация.
- •18.12 Процедуры и функции как параметры.
- •18.13 Директивы подпрограмм
- •Директива forward
- •Директивы far и near
- •Директива external
- •Директива assembler
- •Директива inline
- •Директива interrupt
- •Отладка и тестирование программ, содержащих подпрограммы
- •18.14.1 Нисходящее тестирование и подпрограммы-заглушки
- •18.14.2 Восходящее тестирование и программы-тестеры
- •18.14.3 Рекомендации по отладке программ, содержащих подпрограммы
- •18.14.4 Использование отладчика для трассировки процедур
- •18.14.5 Область действия идентификаторов и переменные в окне Watch
- •18.15. Получение доступа а параметрам командной строки, запуск внешних программ.
- •19. Записи.
- •19.1 Понятие записи. Объявление записи в программе.
- •19.2 Доступ к полям записи.
- •19.3 Оператор with
- •19.4 Действия над записями
- •19.5 Записи с вариантами
- •Замечание1:Порядок частей – именно такой, как показано: фиксированная часть всегда первая (или единственная)
- •19.6 Типизированные константы - записи
- •20. Модули (Unit)
- •20.1 Что такое модуль?
- •20.2 Зачем нужны модули и какие есть средства, аналогтчные (в какой-то мере) модулям
- •Интерфейсная секция
- •Секция реализации
- •Секция инициализации
- •Подключение других модулей к данному (модулю)
- •20.4 Ссылки на описания модуля
- •Пример создания модуля
- •Использование модулей. Режимы Compile, Build и Make при компиляции модулей
- •Косвенные и перекрестные ссылки на модули
- •Пример модуля (стек)
- •Модули и большие программы
15.4 Хранение элементов массива. Доступ к элементам и частям массива
О доступе к элементам массива:
Var
a: array [1..5] of byte;
b: array [1..3, 1..5] of byte;
Столбцы
Строки
увеличение адреса (увеличение индекса)
-
а1
a2
a3
a4
а5
а[3]
увеличение номера колонки
-
увеличение номера строки
b11
b12
b13
b14
b15
1-я строка
b21
b22
b23
b24
b25
2-я строка
b31
b32
b33
b34
b35
3-я строка
b[3,2]
строка столбец
В памяти элементы массива b занимают непрерывную область и располагаются в следующем порядке:
b11, b12, b13, b14, b15, b21, b22, b23, b24, b25, b31, b32, b33, b34, b35
1-я строка 2-я строка 3-я строка
Как видно из рисунка сверху, в памяти элементы массива хранятся по строкам (эту последовательность надо знать, когда массив надо описать как типизированную константу).
Доступ к элементом массива в общем случае выполняется с использованием имени массива и индексов, записанных в квадратных скобках.
Индекс - порядковый номер элемента массива. Если одномерный - индекс - порядковый номер абсолютный. Если двумерный - первый индекс относится к строке, второй - к столбцу.
В общем случае индексом может быть выражение, значение которого должно быть совместимо по присваиванию с типом индекса, указанным при объявлении.
Правило относительно определения типа элемента массива: тип элемента массива определяется количеством индексов, которые указываются для этого элемента после имени массива.
Элемент массива
B[1,2] - byte;
B[1] - array [1..5] of byte;
Подмассив (первая строка массива)
B – массив целиком
Особенностями хранения массива в памяти является следующее:
Все компоненты массива располагаются в памяти в порядке возрастания индексов.
Компоненты в памяти располагаются так, что занимают в памяти непрерывную область.
В случае многомерных массивов их элементы располагаются в памяти таким образом, что при движении по элементам массива в направлении возрастания адресов наиболее быстро увеличивается самый правый индекс (элементы массива хранятся по строкам).
Другими словами: массивы хранятся в памяти по строкам. Об этом нужно помнить при инициализации массивов как типизированных констант.
Const
a: array [1..2, 1..3] of byte = ((1,2), (3,4), (5,6)); - неправильно
b: array [1..2, 1..3] of byte = ((1, 2, 3), (4, 5, 6)); - правильно
При задании начального значения массива как типизированной константы, начальное значение заключается в круглые скобки (внешние), причем внутри внешних круглых скобок может быть еще несколько пар круглых скобок. Самая внешняя пара круглых скобок соответствует массиву в целом. Внутри этой самой внешней пары должно быть столько пар круглых скобок (со значениями), сколько имеется элементов по самой левой размерности. Внутри каждой пары внутренних (после внешних) скобок должно быть еще столько пар скобок (со значениями), сколько элементов имеется по более правой размерности, и т. д. Число элементов в самых внутренних скобках должно быть равно числу элементов по самой правой размерности.
с: array [1..2, 1..3, 1..4] of byte = (((1, 2, 3, 4), (1, 2, 3, 4), (1, 2, 3, 4)),
((1, 2, 3, 4), (1, 2, 3, 4), (1, 2, 3, 4))) 2 тройки, в каждой тройке по 4
элемента
3 четверки
