- •Сборник методических указаний к лабораторным работам
- •«Информатика»
- •Часть 2
- •Лабораторная работа №8. Обработка одномерных массивов. Работа с матрицами
- •Лабораторная работа №9. Программирование вычислительных задач с использованием подпрограмм пользователя
- •1. Цель работы:
- •2. Теоретические сведения
- •2. Теоретические сведения
- •Лабораторная работа №10 работа с файлами
- •1. Цель работы:
- •Лабораторная работа №11 модуль system
- •2. Теоретические сведения
- •Лабораторная работа №12 основные возможности модуля graph
- •2. Теоретические сведения
Лабораторная работа №9. Программирование вычислительных задач с использованием подпрограмм пользователя
1. Цель работы:
Целью работы является изучение приемов программирования вычислительных задач с использованием таких подпрограмм пользователя как функции.
2. Теоретические сведения
Любая задача решается гораздо легче, если разбить ее на части - процедуры и функции. Например, задача по созданию школьной базы данных разбивается на три процедуры: создание БД, использование данных БД, корректировка БД. В пользовательские процедуры и функции можно передавать значения и после выполнения получать результат. Сначала рассмотрим процедуры.
ПРОЦЕДУРЫ ПОЛЬЗОВАТЕЛЯ
Процедура начинается словом PROCEDURE, по структуре аналогична программе:
PROCEDURE <имя> (необязательные формальные параметры);
LABEL ...; CONST ...; TYPE ...; VAR ...;
BEGIN
<операторы>
END;
Для выполнения процедуры достаточно указать ее имя и, если они нужны, передаваемые в процедуру данные (фактические параметры), совпадающие по типу и порядку следования с требуемыми (формальными параметрами).
ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ
Функция начинается словом FUNCTION, за которым следует имя, необязательный список формальных параметров и тип возвращаемого результата:
FUNCTION <имя> (Необязательные формальные параметры) : <тип результата>;
LABEL ...; CONST ...; TYPE ...; VAR ...;
BEGIN
<операторы>
END;
В разделе операторов функции должен находиться по крайней мере один оператор, присваивающий имени функции значение. В точку вызова возвращается результат последнего присваивания.
ПАРАМЕТРЫ
Если список параметров начинается словом VAR, то они передаются из процедуры после ее выполнения и результаты присваиваются соответствующим фактическим параметрам. Если при перечислении формальных параметров VAR не указано, то эти значения передаются в процедуру.
Изучите пример:
Дополнительно:
Три золотых правила.
Глобальные и локальные переменные.
Формальные и фактические параметры.
Параметры-значения и параметры-переменные.
1. Три золотых правила:
Если надо что-то вычислить и получить в точке вызова результат используем функцию;
Если надо что-то сделать: считать данные с диска, очистить часть экрана, закрасить экран в другой цвет и т.п. используем процедуру;
При вызове процедуры или функции тип фактических параметров должен совпадать с типом формальных параметров (т.е. они должны быть согласованы).
2. Глобальные переменные (константы, типы) переменные (константы, типы), объявленные в программе вне процедуры или функции.
Локальные существуют только внутри процедуры или функции, объявленные либо в списке параметров, либо в разделе VAR внутри процедуры или функции (для констант раздел CONST, для типов TYPE).
При совпадении имен локальной и глобальной переменной используется в подпрограмме локальное имя (если в подпрограмме используется цикл FOR, то параметр цикла локальная переменная).
3. Формальные параметры описываются в заголовке объявления подпрограммы.
Фактические параметры которые подставляются на их место при вызове подпрограммы.
4. Параметры-значения локальные переменные подпрограммы, стартовые значения которых задаются при вызове подпрограммы из внешних блоков, могут изменять свои значения, но изменения только локальные.
Параметры-переменные локальные переменные подпрограммы, стартовые значения которых задаются при вызове подпрограммы из внешних блоков, могут изменять свои значения и изменения носят глобальный характер (т.е. передаются в вызывающие операторы).
Пример.
Возведение числа в квадрат, если квадрат числа больше 100, то программа возвращает значение 100.
(pr1 использует функцию, pr2использует для решения той же задачи прцедуру)
program pr1;
var flag:boolean; {flag-глобальная переменная}
function q(x:real):real; {x-локальная переменная,
парметр-значение,
формальный параметр}
const max=100; {локальная константа}
var x2:real; {x2-локальная переменная}
begin
x2:=sqr(x);
flag:=(x2>max);
if flag then x2:=max;
q:=x2;
end;
Begin
writeln(q(5),'Флаг',flag); {5-фактический параметр}
End.
program pr2;
var flag:boolean; {flag-глобальная переменная}
procedure q(x:real;var sq:real); {x-локальная переменная,
парметр-значение,
формальный параметр}
const max=100; {локальная константа}
var x2:real; {x2-локальная переменная}
begin
x2:=sqr(x);
flag:=(x2>max);
sq:=x2;
end;
var sqGlobal:real;
Begin
q(5,sqGlobal); {5-фактический параметр}
writeln(sqGlobal,'Флаг',flag);
End.
3.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Ознакомиться с теоретическими сведениями данной работы.
2. Ответить на контрольные вопросы.
3. Выполнить свой вариант задания.
4.ОФОРМЛЕНИЕ ОТЧЕТА
Отчет о работе должен содержать номер, название и цель работы, ответы на контрольные вопросы, текст программы и результат выполнения программы, представленный в виде таблицы.
5. КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Что представляют собой формальные и фактические параметры программы и как организовать их согласование?
2. В какую точку программы осуществляется выход из функции?
3. В чем различие между локальными и глобальными переменными и могут ли совпадать их имена?
4. Назвать два вида локальных переменных и описать их различие.
6. ВАРИАНТЫ ЗАДАНИЙ
№ по списку |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
№ задания |
1 |
2 |
3 |
1 |
2 |
3 |
1 |
2 |
3 |
1 |
2 |
3 |
1 |
2 |
3 |
1 |
2 |
3 |
1 |
2 |
3 |
1 |
2 |
3 |
1 |
2 |
3 |
1 |
2 |
3 |
Задание:
Написать программу, содержащую функцию, которая вычисляет объем цилиндра. Параметрами функции должны быть радиус и высота цилиндра.
Написать программу, содержащую функцию, которая возвращает процент от числа, полученного в качестве аргумента.
Написать программу, содержащую функцию, которая вычисляет факториал числа, введенного с клавиатуры.
