- •Содержание
- •Линейные алгоритмы
- •Язык программирования Turbo Passcal
- •Типы переменных в Паскале:
- •Стандартные операции и функции от скалярных данных.
- •Структура программы на Pascal
- •Команда присваивания
- •Команды ввода и вывода
- •Справка по работе с системой Turbo Pascal
- •Условный оператор, оператор множественного выбора Алгоритмы с ветвлением
- •Ветвление в Pascal Логические выражения
- •Логические операции
- •Команды ветвления
- •1. Условный оператор if
- •2. Оператор Case.
- •3. Команда безусловного перехода goto
- •Циклы Алгоритмы с циклами
- •1. Цикл с предусловием
- •2. Цикл с постусловием.
- •Циклы в Pascal
- •1. Цикл с параметром
- •2. Цикл с предусловием.
- •3. Цикл с постусловием
- •Вложенные циклы
- •Подпрограммы
- •Функции пользователя
- •Процедуры
- •Массивы Одномерные массивы
- •Стандартные задачи обработки массивов:
- •Двумерные массивы
- •Обработка строк и символов
- •Процедуры и функции обработки строк.
- •Основные алгоритмы обработки строк
- •Графика в Pascal
- •Основные графические процедуры и функции
- •Работа с файлами
- •Процедуры и функции для работы с файлами.
Подпрограммы
Подпрограмма – это последовательность действий, которые можно выполнять в различных местах программы для различных исходных данных. Данные передаются в подпрограмму через параметры или глобальные переменные.
Существует два вида подпрограмм – функции и процедуры. Функция возвращает результат через свое имя, поэтому имя функции ставится в правой части оператора присваивания. Процедура возвращает результат через параметры, поэтому процедура является оператором.
Структура подпрограмм аналогична структуре основной программы, за исключением заголовка.
Функции пользователя
Синтаксис заголовка функции:
Function <имя функции> (описание параметров): тип;
Для передачи основной программе результата в теле функции необходимо имени функции присвоить значение вычисления.
Синтаксис функции
Function <имя_функции>(<параметры>) : <тип результата>;
Label
<метки>;
Const <константы>; раздел объявления меток, констант, типов данных,
Type <типы данных>; переменных (может отсутствовать)
Var <переменные>;
Begin
<операторы, составляющие тело функции>;
End;
Для того, чтобы значение функции было определено и передано в основную программу, в теле функции обязательно должен быть хотя бы один оператор присваивания вида:
<имя_функции>:=<значение>.
Вызов функции, определенной пользователем, осуществляется так же, как и любой стандартной функции Паскаля.
Пример 1. Создать функцию пользователя, вычисляющую х!
Program primer;
Var
x: integer; y: real;
Function Fact(x: integer): real;
Var
i: integer; f: real;
begin
f:=1;
for i:=1 to x do f:=f*i; {вычисляем произведение}
Fact:=f; {имени функции присваиваем полученное значение}
end;
begin {основная программа}
Write (‘x=’); Readln(x); {ввод значения х}
y:=Fact(x); {вызов функции с аргументом х }
Writeln(‘y=’, y:4:0); {вывод результата}
Readln;
end.
Пример 2. Вычислить, используя функцию нахождения знаменателя:
(n
слагаемых)
Program primer;
Var s: real;
i, n: integer;
Function Fakt(x: integer): real; {функция вычисления факториала}
Var
i: integer; f: real;
begin
f:=1;
for i:=1 to x do f:=f*i;
Fakt:=f;
end;
Begin
write('n= '); Readln(n); {вводим количество слагаемых суммы}
s:=0;
For i:=1 to n do {перебираем i от 1 до n}
s:=s+i/Fakt(i+1); {добавляем к сумме очередную дробь, вызывая}
{ функцию для вычисления знаменателя}
writeln('s=',s:6:4); {вывод результата}
Readln;
end.
Пример 3. Два треугольника заданы длинами своих сторон. Определить, площадь какого из них больше (создать функцию для вычисления площади треугольника по длинам его сторон).
Для
решения задачи используем формулу
Герона
,
где x,
y,
z
– стороны треугольника, p
– полупериметр)
Program primer;
var
a1, b1, с1, s1, a2, b2, с2, s2: real;
Function PlTr(x ,y, z: real): real;
Var
p: real;
Begin
p:= (x + y + z)/2; {полупериметр треугольника}
PlTr:=Sqrt(p*(p-x)*(p-y)*(p-z));
End;
BEGIN {основная программа}
Write('Cтороны 1-го треугольника:'); Readln(a1, b1, c1);
Write('Cтороны 2-го треугольника:'); Readln(a2, b2, c2);
S1:=PlTr(a1, b1, c1);{вызов функции для нахождения площади 1-го треугольника}
S2:=PlTr(a2, b2, c2);{вызов функции для нахождения площади 2-го треугольника}
if S1>S2 then Writeln(‘S1>S2’)
else if S1<S2 then Writeln(‘S1<S2’)
else Writeln(‘S1=S2’);
Readln;
END.
