- •Курс лекций Язык программирования Turbo Pascal
- •Тема 1 «Языки программирования»
- •Тема 2 «Основные понятия языка»
- •2.1 Алфавит языка
- •2.2 Основные определения языка
- •2.3 Служебные слова
- •2.4 Стандартные имена
- •2.5 Идентификатор
- •2.5 Элементы данных
- •Тема 3 «Общая структура программы на языке Turbo Pascal»
- •3.1 Общая структура программы на Паскале.
- •3.2 Некоторые правила оформления программ
- •Тема 4 «Типы данных, выражения»
- •4.1. Типы данных
- •4.2 Целочисленные типы данных
- •4.3 Вещественные типы данных
- •4.4 Символьный тип данных
- •4.5 Булевский тип (Логический) данных
- •4.6 Перечисляемый тип.
- •4.7 Интервальный тип.
- •4.8 Выражения.
- •1. Умножение, деление;
- •3. Сложение, вычитание.
- •1) Арифметические операции;
- •2) Операции отношений;
- •3) Логические операции.
- •4.9 Объявление констант
- •4.10 Объявление переменных
- •Тема 5 «Операторы для записи линейных процессов»
- •5.1 Оператор присваивания
- •5.2 Оператор ввода числовых данных
- •5.3 Оператор вывода числовых данных
- •5.4 Вывод числовых данных с форматом и без формата
- •1. Вывод данных без формата.
- •2. Вывод данных с форматом.
- •Контрольные вопросы и задания
- •Тема 6 «Разветвляющиеся вычислительные процессы»
- •6.1 Типы разветвляющихся алгоритмов
- •6.2 Оператор выбора case
- •Тема 7 «Операторы цикла»
- •7.1. Типы циклических процессов
- •7.2 Цикл с известным числом повторений for
- •Оператор повтора for.
- •Домашнее задание:
- •7.3 Итерационные циклы
- •7.4 Оператор цикла с предварительным условием
- •7.5 Оператор цикла с последующим условием Repeat
- •Домашнее задание:
- •8.1 Модуль crt. (Процедуры и функции управления экраном)
- •8.2 Константы цветов.
- •Процедуры управления цветом.
- •Тема № 9: «Структурированные типы данных»
- •9.1. Массивы
- •9.2. Записи
- •9.2.1. Оператор присоединения
- •9.2.2. Записи с вариантами.
- •9.3. Множества
- •9.4. Строки
- •9.4.1. Основные операции
- •9.4.2. Доступ к элементам строковых данных
- •9.4.3. Пустой стринг
- •9.4.4. Функции преобразования
- •9.4.5. Стандартные процедуры и функции
- •Тема № 10: Работа с файлами
- •10.1. Доступ к файлам
- •10.1.1. Имена файлов
- •Инициация файла
- •10.2.Процедуры и функции для работы с файлами
- •10. 3. Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
- •Тема № 11: «Процедуры и функции»
- •11.1. Процедуры
- •11.2. Функции
- •Тема №12: Указатели и динамическая память.
- •12.1. Выделение и освобождение динамической памяти.
- •Тема № 13: Модули.
- •13.1.Компиляция модулей.
- •13.2. Стандартные модули.
- •13.2.1.Модуль crt.
- •13.2.2. Модуль Graph
- •13.2.3. Модуль Overlay
- •Задания для самостоятельной работы по теме «линейные алгоритмы»
- •Задания для самостоятельной работы по теме «разветвляющиеся алгоритмы»
- •Задания для самостоятельной работы по теме «циклические алгоритмы»
- •Задания для самостоятельной работы «векторы»
- •Задания для самостоятельной работы «строки»
- •Задания для самостоятельной работы «процедуры и функции»
- •Задания для самостоятельной работы «записи»
- •Задания для самостоятельной работы по теме «множества»
- •Задания для самостоятельной работы по теме «файлы»
- •Задания для самостоятельной работы по теме «модуль graph»
- •Задания для самостоятельной работы по теме «модули, определяемые пользователем»
Тема № 9: «Структурированные типы данных»
9.1. Массивы
Массив - это одномерная упорядоченная совокупность элементов некоторого типа, которые адресуются с помощью некоторого индекса. Члены этой совокупности называются элементами массива. Каждый элемент определяется именем массива и его положением в массиве. Положение элемента в массиве определяется его индексом (порядковым номером).
Упорядоченность последовательности данных заключается в том, что элементы массива располагаются в последовательных ячейках памяти.
Массивы бывают одномерные, двумерные, трехмерные, четырехмерные и т.д. Массив называется одномерным, если для получения доступа к его элементам достаточно одной индексной переменной.
Объявление одномерного массива:
VAR
Имя_массива: ARRAY[1..k] OF <Тип_данных>;
Здесь переменная k задает количество элементов в массиве, при этом значение индекса элементов лежит в интервале от 1 до k и может принимать только целые значения.
Массивы могут иметь и более одного измерения. Размерность ("мерность") массива определяет количество индексов отдельного элемента.
Объявление двумерного массива (двумерной матрицы):
Имя_массива: ARRAY [1..k1,1..k2] OF Тип_данных;
Здесь k1 задает количество строк и диапазон изменения индекса строк, k2 - количество столбцов и диапазон изменения индекса столбцов.
Объявление трехмерного массива:
Имя_массива: ARRAY[1..k1,1..k2,1..k3] OF < Тип_данных>;
Здесь k1 задает количество строк и диапазон изменения индекса строк, k2 - количество столбцов и диапазон изменения индекса столбцов, k3 - количество слоев и диапазон изменения индекса слоев.
Подобным образом описываются массивы и более высокой размерности. Ограничения на максимальное значение размерности не существует.
Обращение к отдельным элементам массива осуществляется по имени массива и последовательности его индексов, заключенных в квадратные скобки и разделенных запятой.
Упорядочение элементов многомерных массивов выполняется от внутреннего индекса к внешнему, так, например элементы двумерной матрицы упорядочены сначала по строкам, а затем по столбцам.
На примере двумерного массива А(5х6) рассмотрим ввод элементов массива и вывод их на экран в виде строк и столбцов.
Program Wwod_Wywod;
Var A : Array [1..5,1..6] of integer;
I,J : Integer;
Begin
For I:=1 to 5 do
For J:=1 to 6 do
read(A[I,J]); - считывание в цикле всех 30 элементов массива
For I:=1 to 5 do Begin
For J:=1 to 6 do Write (A[i,J]:4); - вывод в одну строку значений элементов массива вложенного цикла длиной в 4 символа.
Writeln; переход на новую строку.
End;
End.
При работе с массивами не надо забывать, что в каждый момент времени мы работаем с одним конкретным элементом массива заданного типа. Если элементов массива много, то для ввода значений часто используют функцию Random(Х), которая возвращает случайное целое число, равномерно распределенное в диапазоне от 0 до Х-1 (Х – параметр обращения). Если параметр Х опущен, то функция возвращает вещественное число в диапазоне от 0 до 1.
Program Wwod;
Var A : Array [1..8,1..10] of Integer;
I, J : Integer;
Begin
For I:=1 to 8 do
For J:=1 to 10 do A[I,J] := Random(100);
……………
End.
При решении задач массивы используются очень часто, и зачастую эти массивы необходимо отсортировать по возрастанию или по убыванию. Существуют много различных алгоритмов сортировки. Для начала рассмотрим сортировку выбором.
Сортировка выбором:
Устанавливаем номер наименьшего элемента массива и меняем местами наименьший и первый элементы массива. Затем эту процедуру повторяем над оставшимися элементами массива, до тех пор, пока остаток не сократится до одного элемента.
Работа алгоритма состоит из последовательных шагов. На каждом шаге наименьший элемент области поиска перемещается в уже отсортированную часть массива, за счет этого упорядоченная часть массива растет, а неупорядоченная сокращается на 1 элемент.
Разберем еще один алгоритм сортировки массива.
Обменная сортировка:
Как и предыдущий он состоит из отдельных шагов. На каждом шаге проходят массив от начала к концу, сравнивая пары соседних элементов. Если очередная пара нарушает требуемый порядок, ее элементы меняют местами. Шаги повторяют до тех пор, пока очередной переход не вызовет никакого обмена.
Пример.
Отсортировать массив в порядке убывания (сортировка осуществляется при помощи двух вложенных циклов)
For j:=1 to N-1 do
Begin
NEW:=MAS[N];
K:=N;
For i:=N downto j do
If MAS[i]>NEW then
Begin
K:=i;
NEW:=MAS[i]
End;
MAS[K]:=MAS[j];
MAS[J]:=NEW;
End;
