- •Информатика
- •Введение
- •Алгоритм и программа
- •Интегрированная инструментальная среда turbo pascal 7.0.
- •Начало работы
- •Клавиатура
- •Диалоговые окна
- •Подготовка текста программы Начало работы
- •Ввод текста и внесение изменений в текст программы
- •Компиляция
- •Пробный запуск программы на выполнение
- •Буфер промежуточного хранения
- •Использование справочной системы
- •Сохранение текста программы в файле
- •Отладка программы
- •Завершение работы
- •Алфавит языка
- •Символы, используемые в идентификаторах
- •Разделители
- •Специальные символы
- •Знаки пунктуации
- •Основные типы данных
- •Описание переменных
- •Инструкция присваивания
- •Выражение
- •Тип выражения
- •Выполнение инструкции присваивания
- •Константы
- •Целые константы
- •Вещественные константы
- •Строковые и символьные константы
- •Константные выражения
- •Типизированные константы
- •Стандартные функции
- •Арифметические функции
- •Функции преобразования типа
- •Функции для величин порядкого типа
- •Ввод и вывод информации
- •Инструкции write и writeln
- •Инструкции read и readln
- •Общая структура программы
- •Раздел объявлений и соглашений
- •Заголовок
- •Глобальные директивы компилятора
- •Оператор uses
- •Объявления глобальных меток, констант, типов и переменных
- •Процедуры и функции
- •Заголовок процедуры или функции
- •Объявления локальных меток, констант, типов и переменных
- •Тело процедуры/функции
- •Основной блок программы
- •Управляющие структуры
- •Условие
- •Условный оператор if
- •Условный оператор case
- •Оператор цикла for
- •Оператор цикла repeat
- •Оператор цикла while
- •Оператор безусловного перехода goto
- •Пустой оператор
- •Составной оператор
- •Массивы
- •Объявление массива
- •Некоторые типичные действия с массивами
- •Вывод массива
- •Ввод массива
- •Сортировка массива
- •Сортировка методом прямого выбора
- •Сортировка методом прямого обмена
- •Поиск в массиве
- •Поиск минимального (максимального) элемента массива
- •Операции с матрицами
- •Сложение матриц
- •Транспонирование матрицы
- •Умножение матриц
- •Символы и строки
- •Символы
- •Массив символов
- •Функция length
- •Процедура delete
- •Функция pos
- •Функция copy
- •Процедуры и функции
- •Процедура
- •Функции
- •Параметры-процедуры и параметры-функции.
- •Процедура exit
- •Директивы подпрограмм
- •Директива forward
- •Директивы far и near
- •Директива external
- •Директива assembler
- •Директива inline
- •Директива interupt
- •Рекурсия Понятие рекурсии
- •Пример программы: поиск пути
- •Вывод в файл
- •Объявление файла
- •Назначение файла
- •Инструкции вывода в файл
- •Открытие файла для вывода
- •Ошибки открытия файла
- •Закрытие файла
- •Ввод из файла
- •Открытие файла
- •Чтение из файла
- •Конец файла и конец строки
- •Введение в структурное программирование
- •Рекомендательный библиографический список Основной:
- •Дополнительный:
Пустой оператор
Пустой оператор не выполняет еикакого действия и никак не отображается в программе ( за исключением, быть может, метки или точек с запятыми, отделяющих пустой оператор от предыдущих или последующих операторов). Он может потребоваться для осуществления на него безусловного перехода.
Составной оператор
Составной оператор представляет собой совокупность последовательно выполняемых операторов, заключенных в операторные скобки Begin и End:
Begin
< оператор 1 > ;
< оператор 2 > ;
. . . . . . . . . . . . . .
< оператор N >
End ;
Он может потребоваться в тех случаях, когда в соответствии с правилами построения конструкции языка можно использовать один оператор, а выполнить нужно несколько действий. В такой составной оператор входит ряд операторов, выполняющих требуемые действия.
Отдельные операторы внутри составного оператора отделяются друг от друга точкой с запятой. Так как завершающее составной оператор слово end не является отдельным предложением, то перед ним точку с запятой можно не ставить, в противном случае компилятор будет считать, что перед словом end стоит пустой оператор. Можно считать, что и само тело программы, т. к. оно заключено в операторные скобки begin и end, тоже является составным оператором.
Массивы
Массив - это структура данных, которую можно рассматривать как набор переменных одинакового типа, имеющих общее имя. Использование массивов существенно упрощает работу с однотипными данными, ускоряет обращение к ним и сокращает размер используемой памяти, так как все данные получают общий начальный адрес. Максимальный объём памяти, который может занимать массив, в Турбо Паскале составляет 65520 байт.
Объявление массива
Перед использованием массив, как и любая переменная, должен быть объявлен в разделе объявления переменных. В общем виде объявление массива выглядит так:
Имя : Array [ нижний _индекс. . верхний индекс ] of Тип ;
где Имя имя переменной-массива;
Array ключевое слово, обозначающее, что переменная является массивом;
нижний_индекс и верхний_индекс целые числа, определяющие диапазон изменения индексов (номеров) элементов массива и, неявно, количество элементов (размер) массива;
Тип тип элементов массива.
Пример : Var
a, b : array [1..5] of real ;
c, d : array [-7..3] of integer ;
Кроме одномерных массивов в Паскале вводятся многомерные массивы; соответственно они могут быть описаны двумя способами, например:
Var a : array [0..3] of array [5..7] of real;
или
Var a: array [0..3,5..7] of real ;
Следует соблюдать следующие правила:
1. Нижняя граница диапазона должна быть не меньше верхней.
2. Между верхней и нижней границами диапазонов ставятся две точки и не должно быть никаких пробелов.
3. У многомерных массивов диапазоны разделяются запятыми, количество измерений неограничено ( за исключением, конечно, правила о 65520 байтах).
4. Границы диапазонов находятся в пределах либо -32768..32767, либо 0..65535.
5. В качестве границ диапазонов могут использоваться не только числа, но и определенные к этому моменту константы.
Второй, более удобный и гибкий способ описания массивов, заключается в предварительном введении типов.
Например, описание массивов
Var
a, c : array [1..3] of real ;
b, d : array [5..7,1..3] of real
и Const
k1 = 1 ; k2 = 3 ; l1 = 5, l2 = 7;
Type
vector = array [k1..k2] of real ;
matrix = array [l1..l2] of vector;
Var
a, c : vector;
b, d : matrix
эквивалентны между собой.
Одномерный массив естественно сопоставить со строкой, столбцом или вектором; двумерный - с матрицей или таблицей.
Элемент одномерного массива обозначается с помощью названия массива и индекса заключенного в квадратные скобки, например a[k]; индексы элемента многомерного массива могут перечисляться в квадратных скобках через запятые или заключаться в отдельные квадратные скобки, например b[2,10] или b[2][10]. При этом b[2] представляет собой одномерный массив.
Почти все действия с массивами осуществляются поэлементно, например:
a[2] :=3;
read(b[5,6]) ;
a[2] := c[3] + d[7] ;
WriteLn(c[3] : 5 :2, c[3] - d[5] : 5 : 1);
Исключения составляют лишь присвоение всем элементам одного массива таких же значений, как у элементов другого массива и сравнение идентичности всех элементов двух массивов. Для того, чтобы эти операции были возможны, необходимо оба массива описать совместно (в одном списке), либо предварительно ввести тип и использовать при описании массивов идентификатор типа. Например:
Type
vector_1 = array[0..10] of vector ;
Var
a, b : vector_1;
Begin
a : = b;
if a = b then WriteLn(‘ массивы a и b совпадают ‘) ;
if a <> b then WriteLn (‘ массивы a и b не совпадают ‘);