- •Информатика
- •Введение
- •Алгоритм и программа
- •Интегрированная инструментальная среда 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
- •Рекурсия Понятие рекурсии
- •Пример программы: поиск пути
- •Вывод в файл
- •Объявление файла
- •Назначение файла
- •Инструкции вывода в файл
- •Открытие файла для вывода
- •Ошибки открытия файла
- •Закрытие файла
- •Ввод из файла
- •Открытие файла
- •Чтение из файла
- •Конец файла и конец строки
- •Введение в структурное программирование
- •Рекомендательный библиографический список Основной:
- •Дополнительный:
Функция length
Функция LENGTH возвращает длину строки. У функции один параметр переменная строкового типа. Возвращаемое значение функции (целое число) количество символов, из которых состоит строка, без учета начальных и завершающих пробелов.
Например, значение length(‘Иванов’) равно 6, значение length(‘ город ‘) равно 5, так как при вычислении длины строки функция не учитывает начальные и завершающие пробелы.
Процедура delete
Процедура DELETE позволяет удалить часть строки. В общем виде обращение к процедуре выглядит так:
delete(Строка, p, n) ;
где Строка переменная строкового типа; p номер символа, с которого начинается удаляемая подстрока; n длина удаляемой подстроки.
Например, в результате выполнения инструкций
s := ‘Город Санкт-Петербург’ ;
delete(s,7,6) ;
значением переменной s будет строка ‘Город Петербург’.
Функция pos
Функция POS позволяет определить положение подстроки в строке. В общем виде обращение к функции выглядит так:
Pos(Подстрока, Строка) ;
где Подстрока строковая константа или переменная, которую надо найти в строковой константе или переменной Строка.
Например, в результате выполнения инструкции
p := pos(‘Пе’,’Санкт-Петербург’)
значение переменной p будет равно 7.
Если в строке нет искомой подстроки, то функция возвращает ноль.
Функция copy
Функция COPY позволяет выделить фрагмент строки. В общем виде обращение к функции copy выглядит так:
copy(Строка, p, n) ;
где Строка переменная строкового типа, содержащая строку, фрагмент которой надо получить; p номер первого символа в строке Строка, с которого начинается выделяемая подстрока; n длина выделяемой подстроки.
Например, в результате выполнения инструкций
st ;= ‘Инженер Иванов’ ;
fam := copy(st,9,6) ;
значением переменной fam будет строка ‘Иванов’.
Процедуры и функции
В языке Паскаль имеется две разновидности подпрограмм процедуры и функции. Структура любой подпрограммы аналогична структуре всей программы. Подпрограмма должна быть описана до того, как она будет использована в программе или другой подпрограмме.
Все параметры, которые использует подпрограмма, можно разбить на две категории: локальные параметры, объявленные внутри подпрограммы и доступные только ей самой, и глобальные объявленные в основной программе и доступные как программе, так и всем ее подпрограммам. Обмен информацией между основной программой и подпрограммой может осуществляться только с помощью глобальных параметров.
Подпрограмма может использовать глобальные параметры двояким образом: непосредственно обращаясь к глобальному параметру по его имени или используя механизм формальных параметров. Подпрограмма может непосредственно использовать любые глобальные параметры за исключением тех, которые имеют те же имена, что и ее локальные параметры.
Процедура
Процедура - независимая поименованная часть программы, предназначенная для выполнения определенных действий, которая может быть вызвана для выполнения из раздела операторов главной программы или из тела другой процедуры.
Процедура пользователя состоит из заголовка и тела процедуры и имеет следующую структуру:
Procedure < имя > ( p1,p2,...pn ) ;
< раздел описаний >
begin
< раздел операторов >
end ;
Заголовок включает в себя зарезервированное слово Procedure, идентификатор (имя) процедуры, заключенный в круглые скобки список формальных параметров ( p1, p2, ... ,pn ). Имя процедуры - идентификатор уникальный в пределах блока.
Формальные параметры - это, как правило, список, состоящий из данных двух видов - входных значений и выходных (результата). Тип каждого параметра должен быть указан. Если процедура возвращает в программу результат, то перед этим параметром должно быть поставлено зарезервированное слово Var.
Тело процедуры представляет собой локальный блок, по структуре аналогичный программе, т.е. содержит раздел описаний и раздел операторов.
Для обращения к процедуре используется оператор вызова процедуры. Он состоит из идентификатора (имени) процедуры и списка фактических параметров (аргументов), отделенных друг от друга запятыми, заключенного в круглые скобки.
Формат оператора:
< имя >( f1,f2,...fn ); ,
где f1,f2,...,fn фактические параметры.
Параметры обеспечивают режим замены, который позволяет выполнять процедуру с различными входными данными. Между фактическими параметрами в операторе вызова и формальными параметрами заголовка процедуры должно соблюдаться взаимно-однозначное соответствие. Т.е. количество, тип, порядок следования фактических параметров соответствует количеству, типу и порядку следования формальных параметров.
При вызове процедуры управление передается телу процедуры, происходит замена формальных параметров на фактические и над ними выполняются все действия, указанные в процедуре, после этого управление передается оператору следующему за оператором вызова процедуры. Процесс выполнения инструкций программы, в состав которых входит процедура, представлен на рис. 24.
Рис. 24. Выполнение инструкций программы, в состав которой включена
процедура программиста.
Следующая программа вычисляет таблицу квадратных корней чисел и для оформления таблицы использует процедуру с именем Line, которая выводит на экран строку символов.
Program Example ;
VAR
i : Integer ;
{ процедура программиста }
Procedure Line(n:integer; c:char) ;
var
i:integer ;
begin
for i:=1 to n do write(c) ;
writeln ;
end ;
BEGIN
writeln('Таблица квадратных корней') ;
line(15,'=') ;
writeln('Число Корень') ;
line(15,'=') ;
for i:=1 to 5 do
begin
writeln(i:5,' ',sqrt(i):6:3) ;
line(15,'-')
end
END.
Результат работы программы:
Для рисования двойной и одинарной линии использована одна и та же процедура Line, но вызывается она с разными фактическими параметрами. Процедура Line может рисовать линии любой длины (разумеется, ограниченных шириной экрана) и из любых символов.
Если в описании процедуры перед именем параметра стоит слово VAR, то при вызове процедуры на месте соответствующего параметра должна стоять переменная основной программы. Использование константы или выражения вызовет сообщение об ошибке во время компиляции программы.