Интегрированная среда Turbo Pascal 7.0
Begin
Begin
<Тело процедуры>
End;
Раздел описаний может иметь такие же подразделы, как и раздел описаний основной программы (описание процедур и функций - в том числе). Однако все описанные здесь объекты "видимы" лишь в этой процедуре. Они здесь локальны также, как и имена формальных параметров. Объекты, описанные ранее в разделе описаний основной программы и не переопределенные в процедуре, называются глобальными для этой подпрограммы и доступны для использования.
Легко заметить схожесть структуры программы целиком и любой из ее процедур. Действительно, ведь и процедура и основная программа реализуют некий алгоритм, просто процедура не дает решения всей задачи. Отличие в заголовке и в знаке после End.
Формат описания функции:
Function <Имя функции> (<Имя форм. параметра 1>:<Тип>;
< Имя форм. параметра 2>:<Тип>) :
<Тип результата>;
<Раздел описаний>
<Тело функции>
End;
В теле функции обязательно должна быть хотя бы команда присвоения такого вида: <Имя функции>:=<Выражение>;
Указанное выражение должно приводить к значению того же типа, что и тип результата функции, описанный выше.
Вызов процедуры представляет в программе самостоятельный оператор:
<Имя процедуры>(<Фактический параметр 1>, < Фактический параметр 2>);
Типы фактических параметров должны быть такими же, что и у соответствующих им формальных.
Вызов функции должен входить в выражение. При вычислении значения такого выражения функция будет вызвана, действия, находящиеся в ее теле, будут выполнены, в выражение будет подставлено значение результата функции.
Отличие функции от процедуры:
1) Заголовок функции начинается со служебного слова Function и заканчивается указанием типа значения функции;
2) Раздел операторов функции должен содержать хотя бы один оператор присваивания имени функции;
3) Обращение к функции – не оператор, а выражение.
Приведем простейший пример использования подпрограммы.
Задача: "Найти максимальное из трех введенных чисел". Для решения воспользуемся описанием функции, принимающей значение максимального из двух чисел, которые передаются в нее в виде параметров.
Program Fn;
Uses Crt;
Var
A,B,C :Real; {глобальные переменные}
Function Max(x,y:Real):Real; {Описываем функцию Max с формальными параметрами x и y}
Begin
If x>y Then Max:=x Else Max:=y;
End;
Clrscr;
Begin {начало основной программы}
Writeln('Введите три числа');
Readln(A,B,C);
Writeln('Максимальным из всех является ', Max(Max(A,B),C));
End.
Обратите внимание на краткость тела основной программы и на прозрачность действий внутри функции. Формальным параметрам x и y при первом вызове передаются значения переменных А и В, а затем полученное и С.
Существует два способа передачи фактических параметров в подпрограмму: по значению и по ссылке. В первом случае значение фактического параметра при вызове подпрограммы присваивается локальной переменной, являющейся формальным параметром подпрограммы. Что бы потом ни происходило с локальной переменной, это никак не отразится на соответствующей глобальной. Для одних задач это благо, но иногда требуется произвести в подпрограмме действия над самими переменными, указанными в качестве фактических параметров. На помощь приходит второй способ. Происходит следующее: при обращении к подпрограмме не происходит формирования локальной переменной - формального параметра. Просто на время выполнения подпрограммы имя этой локальной переменной будет указывать на ту же область памяти, что и имя соответствующей глобальной переменной. Если в этом случае изменить локальную переменную, изменятся данные и в глобальной.
Передача параметров по ссылке отличается тем, что при описании подпрограммы перед именем переменной - формального параметра ставится служебное слово Var.
Еще один классический пример. Задача: "Расположить в порядке возрастания три целых числа".
Program Pr;
Uses Crt;
Var
S1,S2,S3 :Integer; {глобальные переменные}
Procedure Swap(Var A,B: Integer);
Var
C : Integer; {локальная переменная}
Begin
C:=A; A:=B; B:=C {меняем местами содержимое A и B}
End;
Begin {начало основной программы}
Clrscr;
Writeln('Введите три числа');
Readln(S1,S2,S3);
If S1>S2 Then Swap(S1,S2);
If S2>S3 Then Swap(S2,S3);
If S1>S2 Then Swap(S1,S2);
Writeln('Числа в порядке неубывания: ',S1,S2:4,S3:4)
End.
Среда программирования Турбо Паскаль 7.0 представляет собой интегрированную среду разработки компьютерных программ с использованием языка программирования Паскаль (см. рис. 4.1).
Рис. 4.1. Вид экрана интегрированной среды Турбо-Паскаля версии 7
Если Турбо Паскаль 7.0 установлен на компьютере, то на одном из его жестких дисках имеется папка TP7, в котором находятся файлы и каталоги, необходимые для работы системы. Необходимо войти в папку BIN и запустить файл turbo.exe.
В верхней части окна интегрированной среды находится строка главного меню, в которой перечислены названия меню, команды которых используются во время работы:
File | – работа с файлами (сохранение, загрузка, связь с операционной системой); |
Edit | – редактирование текущего файла (стандартные возможности встроенного текстового редактора); |
Search | – поиск и замена фрагментов текста; |
Run | – запуск программы на выполнение; |
Compile | – компиляция программы; |
Debug | – установка параметров отладки программы; |
Tools | – инструментальные программные средства. |
Options | – установка опций интегрированной среды; |
Window | – работа с окнами; |
Help | – система помощи и подсказок. |
Вход в главное меню осуществляется с помощью клавиатуры – нажать функциональную клавишу F10, с помощью мыши – щелкнуть левой кнопкой мыши на названии нужного меню.
Для начала работы с системой программирования необходимо иметь проект текста программы, который можно набирать в рабочем поле окна системы (File \ New). Встроенный текстовый редактор прост и максимально приспособлен для набора текстов программ на языке Паскаль. В нем предусмотрена специальная подсветка управляющих структур, команд. Удобна система контекстной помощи (Ctrl+Fl), которая вызовет подсказку по набираемому текущему тексту программы в любой момент и в любом месте. Впрочем, текст программы можно приготовить в любом текстовом редакторе, хранящем тексты в ASCII-кодах; необходимо лишь снабдить имя файла расширением .pas.
Если текст программы был ранее сохранен на жестком диске или дискете, то он может быть загружен в поле редактирования с помощью пункта меню File(File \ Open или F3).
После окончания формирования текста необходимо откомпилировать программу (пункт меню Compile). После удачной компиляции запуск программы осуществляется командой меню Run(Run \ Run или Ctrl+F9).
Во время компиляции программы на экране появляется специальное окно, в к тором информируется процесс компиляции. В случае обнаружения ошибки компиляция прерывается и активизируется встроенный редактор, в котором курсор указывает место ошибки. Вверху окна выводится информация по диагностике ошибки. Исправив ошибку, можно опять отправить программу на компиляцию (Alt+F9 или сразу на выполнение Ctrl+F9). После удачной компиляции программа выполняется и результаты ее работы можно просмотреть нажатием клавиш Alt+F5. В процессе компиляции выявляются лишь синтаксические ошибки. Правильность работы программы необходимо проверять специальными приемами. В интегрированной среде разработчика предусмотрен отладчик, позволяющий осуществлять трассировку программы или ее отдельных участков, прерывать выполнение в заданных точках, следить за изменениями значений различных переменных. Трассировкой называют пошаговое исполнение программы, при котором за один шаг выполняются все операторы одной строки с последующим ожиданием. Очевидно, что трассировка эффективнее работает для исходного текста, в котором в строке помещают не более одного оператора. При этом появляется возможность анализировать результаты работы каждого оператора в отдельности.
Сеанс отладки обычно начинается с команды Trace into (F7) или Step over (F8) из меню Run. Выборочная трассировка отдельных участков исходного текста осуществляется с помощью команд Breakpoints из меню Debug и Go to cursor меню Run. Для наблюдения за значениями переменных и выражений существует окно просмотра Watch в меню Debug. В нем отображаются текущие значения выбранного выражения. Сеанс отладки программы необходимо завершать командой Program reset (Ctrl+F2) из меню Run.