- •А.И. Газейкина Основы структурного программирования на языке Паскаль
- •Тема 1. Линейные программы 4
- •Некоторые стандартные функции языка Турбо Паскаль
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 2. Разветвляющиеся программы Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 3. Циклические программы Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 4. Обработка данных строкового типа Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 5. Система типов языка Паскаль Краткое изложение теоретического материала
- •Тема 6. Перечисляемый тип Краткое изложение теоретического материала
- •Тема 7. Тип-диапазон Краткое изложение теоретического материала.
- •Тема 8. Множество (множественный тип) Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 9. Массивы в языке Паскаль Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 10. Графика в языке Паскаль Краткое изложение теоретического материала
- •Контрольные задания
- •Тема 11. Подпрограммы в языке Паскаль Краткое изложение теоретического материала
- •Процедуры в языке Турбо Паскаль
- •Функции в языке Турбо Паскаль
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 12. Тип данных запись (Record) Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 13. Работа с файлами в языке Паскаль Краткое изложение теоретического материала
- •Текстовые файлы
- •Примеры решаемых задач
- •Типизированные файлы
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 14. Динамические переменные в языке Паскаль Краткое изложение теоретического материала Статические и динамические переменные
- •Указатели
- •Типизированные указатели
- •Нетипизированные указатели
- •Динамические структуры данных
- •Примеры решаемых задач
- •Контрольные задания
- •Список литературы
Функции в языке Турбо Паскаль
Практически все сказанное о процедурах верно и для функций. Отличие функции от процедуры состоит в том, что функция не имеет выходных параметров, она возвращает единственное значение – это значение функции. Входные параметры называются еще аргументами функции.
Описание функции
Function <имя> (<список аргументов>): <тип значения функции>; { заголовок }
<блок описания локальных данных>
Begin { начало исполняемой части функции }
<тело функции (исполняемая часть)>
End; { конец описания функции }
В теле функции обязательно должна быть команда присваивания вида:
<имя функции> := <вычисленное значение>;
которая и позволит функции возвратить вычисленное значение.
Например, опишем функцию вычисления среднего арифметического двух целых чисел:
Function middle (a, b : integer) : real;
Begin
Middle := ( a + b ) / 2
End;
В данном примере тело функции – единственный оператор присваивания, который присваивает имени функции нужное значение.
Примеры решаемых задач
Пример 1. Составить программу, которая вычислит значение выражения
am+bn+(a-b)m+n.
Вычисление степени числа оформить в виде подпрограммы.
Пояснение. Составим и сравним две программы: с использованием процедуры и функции вычисления степени числа.
Программа:
program calc_proc;
uses crt;
var a, b, m, n, s1, s2, s3, s : integer;
procedure stepen (x, y : integer; var z : integer);
{процедура возводит число x в степень y, результат записывает в z}
{т.е. в процедуре описано правило вычисления z=xy}
var i : integer; { локальная переменная для организации цикла }
begin
z := 1;
for i := 1 to y do z := z * x
end;
begin
clrscr;
write(‘Введите a, b, m, n ’);
readln(a, b, m, n);
{ три раза вызываем процедуру stepen для вычисления трех слагаемых }
stepen(a, m, s1); { вычислили s1 как am }
stepen(b, n, s2); { вычислили s2 как bn }
stepen(a-b, m+n, s3); { вычислили s3 как (a-b)m+n }
s := s1 + s2 + s3; { вычислили сумму трех слагаемых }
writeln(‘Значение выражения ’, s);
readln
end.
program calc_func;
uses crt;
var a, b, m, n, s : integer;
function stepen (x, y : integer) : integer;
{ функция возводит число x в степень y }
{ т.е. описано правило вычисления stepen = xy }
var i ,z : integer; {локальные переменные: i для организации цикла, z для вычисления произведения }
begin
z := 1;
for i := 1 to y do z := z * x;
stepen := z { присвоили имени функции вычисленное значение }
end;
begin
clrscr;
write(‘Введите a, b, m, n ’);
readln(a, b, m, n);
{ три раза вызываем функцию stepen для вычисления трех слагаемых }
s := stepen(a, m) + stepen(b, n) + stepen(a-b, m+n, s3);
writeln(‘Значение выражения ’, s);
readln
end.
Контрольные задания
Составить программу, которая вычислит площадь треугольника, заданного координатами своих вершин. Использовать формулу Герона. Вычисление расстояния между двумя точками оформить в виде процедуры или функции.
Составить программу определения НОД трех чисел (по алгоритму Евклида) с использованием процедуры нахождения НОД двух чисел (по алгоритму Евклида).
Составить программу, проверяющую гипотезу Гольдбаха. Она состоит в том, что любое четное число, большее 2, можно представить в виде суммы двух простых слагаемых. Программа должна вводить четное положительное число и выводить все его возможные представления в виде суммы двух простых слагаемых. Для определения, является ли число простым, использовать подпрограмму.
Составить программу, которая изображает на экране:
лес
аллею
из елей и берез. Рисование ели и березки оформить в виде процедур.
«Диаграммы». Составить программу, которая вводит N числовых данных и интерпретирует их в виде столбиковой, круговой, линейной диаграмм. Программа должна в алфавитно-цифровом режиме предоставлять пользователю меню – список видов диаграмм, позволять выбрать (например, ввести номер) нужной диаграммы, после чего в графическом режиме построить нужную диаграмму. Каждый из режимов работы программы (ввод данных, построение каждого вида диаграмм) оформить в виде отдельной процедуры.