- •Практикум по Турбо Паскалю
- •Первые занятия Первое знакомство с системой программирования Турбо Паскаль
- •Команды редактора
- •Задания
- •Режим помощи
- •Первая программа
- •Простейшие линейные программы
- •Арифметический квадрат. Абсолютная величина
- •Запуск программы
- •Сохранение программы
- •Выход из системы программирования Турбо Паскаль
- •Целый и логический типы данных Условный оператор
- •Логический тип данных
- •Условный оператор
- •Вложенные операторы условия
- •Целый тип данных. Цикл с параметром
- •Цикл с параметром (разбор на примере)
- •Работа с окнами. Метод пошагового выполнения программ
- •Работа с окнами
- •Решение задач с использованием цикла с параметром
- •Вопросы для обсуждения
- •Трассировка примера
- •Цикл с постусловием
- •Алгоритм Евклида
- •Вложенные циклы
- •Решение задач с использованием циклов с условием
- •Простые типы данных
- •Задания
- •Решение задач
- •Вещественный тип данных
- •Задание
- •Решение задач
- •Ограниченный, перечисляемый типы данных. Оператор варианта
- •Ограниченный тип данных
- •Оператор варианта
- •Перечисляемый тип данных
- •Решение задач
- •Описание переменных, констант и типов Раздел описания констант
- •Раздел описания переменных
- •Раздел описания типов
- •Решение задач
- •Преобразование типов. Совместимость типов
- •Задания
- •Решение задач
- •Решение задач
- •Контрольные работы Контрольная работа №1
- •Контрольная работа №2
- •Основы Паскаля
- •X y22m размер gamma alfa r15
- •Процедуры и функции
- •Описание процедур и функций
- •Файловый тип
- •Описание файлового типа
- •Подпрограммы
- •Процедура Assign
- •Процедура Reset
- •Процедура Rewrite
- •Процедура Write
- •Процедура Close
- •Функция FileSize
- •Функция FilePos
- •Текстовые файлы
- •Описание текстового файла
- •Консоль
- •Устройства
- •Соответствие текстовых файлов и логических устройств
- •Операции над текстовыми файлами
- •Процедура Assign
- •Процедура Reset
- •Процедура Rewrite
- •Процедура Append
- •Процедура Close
- •Функция Eof
- •Функция SeekEof
- •Блочные файлы Описание типа блочного файла
- •Процедура BlockRead
- •Процедура BlockWrite
- •Операции ввода-вывода
- •Регулярные типы данных Одномерные массивы. Работа с элементами
- •Способы задания одномерных массивов
- •Работа с элементами массива (разбор на примерах)
- •Методы работы с элементами одномерного массива Изменение значения некоторых элементов
- •Создание массива
- •Работа с несколькими массивами
- •Удаление элементов из одномерного массива Удаление элемента
- •Вставка элементов в одномерный массив Вставка одного элемента
- •Вставка нескольких элементов
- •Перестановка элементов массива
- •Перестановка части массива
- •Найти сумму элементов
- •Работа с несколькими массивами
- •Двумерный массив. Работа с элементами Изменение значений некоторых элементов, удовлетворяющих заданному свойству
- •Заполнение двумерного массива по правилу.
- •Вставка и удаление элементов двумерного массива
- •Перестановка элементов массива
- •Комбинированный тип данных (записи)
Процедуры и функции
Исключительно широко распространена такая форма повторяемости, когда одна и та же последовательность действий должна выполняться на различных этапах обработки информации. В алгоритмах такого рода в различных местах встречаются фрагменты, одинаковые по выполняемым действиям и различающиеся только в значениях исходных данных. При составлении программы по такому алгоритму приходится задавать одну и ту же группу операторов, соответствующую каждому из повторяющихся фрагментов. Для более эффективного программирования подобных повторений в языке введено понятие подпрограммы. Повторяющаяся группа операторов оформляется в виде самостоятельной программной единицы - подпрограммы, записывается однократно, а в соответствующих местах программы обеспечивается лишь обращение к ней (ссылка). На рисунке 1 дана иллюстрация этого понятия, где ПП - повторяющаяся группа операторов (подпрограмма); Т1, Т2, Т3, Т4 - неповторяющиеся участки программы.
Использование аппарата подпрограмм позволяет сократить объем и улучшить структуру программы с точки зрения наглядности и читаемости, уменьшить вероятность ошибок и облегчить процесс отладки программы. Разложение программы на взаимосвязанные, но замкнутые компоненты дает возможность выполнять разработку отдельных подпрограмм разным программистам и более или менее независимо друг от друга. Кроме того, подпрограмма может быть рассмотрена как самостоятельный модуль (со своими входными и выходными данными), что позволяет использовать ее в общем, иерархическом подходе при конструировании алгоритма и программы по принципам нисходящего проектирования.
В языке PASCAL подпрограммы реализуются в виде процедур и функций, которые вводятся в программу с помощью своего описания.
Описание процедур и функций
Процедуры описываются в специальном разделе описательной части программы вслед за разделом переменных. Любая процедура состоит, аналогично программе, из заголовка процедуры и блока. Заголовок процедуры представляет собой:
PROCEDURE <ИМЯ> (<СПИСОК-ПАРАМЕТРОВ>);
где PROCEDURE - служебное слово; ИМЯ - имя процедуры, определяемое в соответствии с общими правилами построения идентификаторов; СПИСОК-ПАРАМЕТРОВ - перечень имен для обозначения исходных данных и результатов работы с указанием их типов. Параметры, перечисленные в списке, называются формальными. Допускается описание процедуры, не содержащей формальных параметров:
PROCEDURE <ИМЯ>;
Содержательная часть процедуры представляет собой блок и состоит, следовательно, из раздела описаний (меток, констант, типов, переменных, процедур и функций) и раздела операторов, представляющего собой составной оператор BEGIN-END. Заканчивается блок процедуры точкой с запятой.
Пример 1
Оформить в виде процедуры алгоритм вычисления степени y = xn с натуральным показателем n:
PROCEDURE STEP1 (N: INTEGER; X: REAL; VAR Y: REAL); VAR I : INTEGER; BEGIN Y:=1; FOR I:=1 TO N DO Y:=Y*X END;
В заголовке процедуры с именем STEP1 перечислены параметры N, X, определяющие исходные данные процедуры, и параметр Y, обозначающий значение искомой степени - результат выполнения процедуры. Указан также тип всех формальных параметров.
Тело процедуры (блок) состоит:
из описательной части, где определена переменная I, необходимая и имеющая смысл только внутри данной процедуры и называемая локальной переменной (значение локальной переменной недоступно в основной программе);
из составного оператора BEGIN-END, реализующего алгоритм вычисления степени действительного числа с натуральным показателем.
Пример 2
Оформите алгоритм вычисления степени y = xn в виде процедуры без параметров:
PROCEDURE STEP2; VAR I : INTEGER; BEGIN Y:=1; FOR I:=1 TO N DO Y:= Y*X
END;
В этом случае процедура STEP2 не содержит списка формальных параметров и работает с локальной переменной I, описанной в блоке процедуры, и переменными X, N, Y, которые должны быть описаны в программе, содержащей описание данной процедуры. Переменные X, N, Y называются глобальными по отношению к процедуре STEP2. Значения глобальных переменных доступны и могут быть использованы в любой точке основной программы (в частности, внутри данной процедуры).
Функция - это подпрограмма, результат выполнения которой есть единственное скалярное значение, присваиваемое имени этой функции. Следовательно, функции являются частным случаем процедур и принципиально отличаются от них тем, что, во-первых, результат выполнения функции - одно значение, а процедуры - одно или несколько; во-вторых, результат выполнения функции передается в основную программу как значение имени этой функции, а результаты выполнения процедуры - как значения ее параметров.
Описание функции аналогично описанию процедуры и состоит из заголовка и блока. Заголовок функции имеет вид:
FUNCTION <ИМЯ> (<СПИСОК-ПАРАМЕТРОВ>): <ТИП>;
где FUNCTION - служебное слово; ИМЯ - имя функции; СПИСОК-ПАРАМЕТРОВ - перечень формальных параметров (исходных данных) с указанием их типов; ТИП - тип результата: значение, которое должно приобретать имя функции. Допускается описание функции без параметров:
FUNCTION <ИМЯ> : <ТИП>;
В содержательной части подпрограммы-функции имени функции должно быть присвоено некоторое значение (значение ответа), т.е. имя хотя бы один раз должно присутствовать в левой части некоторого оператора присваивания.
Пример 3
Оформите в виде функции алгоритм вычисления степени y = xn:
FUNCTION STEP3 (N:INTEGER; X:REAL): REAL ; VAR I : INTEGER; Y : REAL; BEGIN Y:=1; FOR I:=1 TO N DO Y:=Y*X; STEP3:=Y END;
В заголовке функции с именем STEP3 перечислены параметры N, X, определяющие её исходные данные. Результат выполнения функции (значение локальной переменной Y) присваивается её имени STEP3. Тип результата (тип функции) - REAL, который указывается в заголовке функции при её описании.
Введение локальной переменной Y не обязательно, но придает описанию функции более наглядный вид
