- •Содержание
- •Введение
- •Лабораторная работа № 1. Интерфейс среды программирования Borland Pascal 7.0
- •Установка и запуск системы
- •Интерфейс системы
- •Меню и команды
- •Пункт File:
- •Пункт Edit:
- •Пункт Search
- •Пункт Run
- •Пункт Compile
- •Пункт Debug
- •Пункт Options
- •Пункт Window
- •Пункт Help
- •Создание новой программы
- •Порядок выполнения работы
- •Лабораторная работа № 2. Линейные структуры
- •3. Стандартные арифметические функции:
- •Лабораторная работа № 3. Структуры ветвления
- •Использование средств отладки
- •1. Пошаговое выполнение программы
- •2. Просмотр значений переменных
- •3. Использование точек останова
- •Лабораторная работа № 4. Введение в циклы
- •Лабораторная работа № 5. Циклические структуры
- •Лабораторная работа № 6. Одномерные массивы
- •Лабораторная работа № 7. Многомерные массивы
- •Лабораторная работа № 8. Обработка символьных строк
- •Стандартные функции для обработки строк:
- •Лабораторная работа № 9. Функции и процедуры
- •Список литературы
Лабораторная работа № 9. Функции и процедуры
Цель работы: Приобретение навыков в построении и использовании процедур и функций.
Задачи:
понять, что такое процедура и способы ее задания;
понять, что такое функция и способы ее задания
определить, в каких случаях целесообразно использовать процедуры, а в каких - функции.
Порядок выполнения работы:
Перед выполнением работы, обязательно, прочитать конспект лекций по теме «Процедуры и функции».
Ознакомиться с представленными в лабораторной работе теоретическими сведениями.
Получить дополнительные теоретические знания из источников: [3: Глава 6], [4: Тема 8], [7: Занятие 11, 12], [10: Глава 8].
Реализовать на ЭВМ разобранные примеры.
Самостоятельно выполнить предложенные задачи.
Внимание: переходить к выполнению пунктов 4 и 5 только после тщательной проработки пунктов 1 – 3.
Основные теоретические сведения
Приступая к решению задач этого раздела, следует вспомнить, что:
для передачи данных в функцию или процедуру надо использовать только параметры (глобальные переменные, т. е. переменные, объявленные вне функции, применять не рекомендуется);
среди выполняемых инструкций функции обязательно должна быть инструкция присваивания имени функции значения функции;
тип каждого фактического параметра (константы или переменной) в инструкции вызова функции или процедуры должен быть таким же, как тип соответствующего формального параметра, указанного при объявлении функции;
если в инструкции объявления функции или процедуры перед именем формального параметра не стоит слово var, то при вызове функции или процедуры можно использовать в качестве формального параметра константу или переменную соответствующего типа. Если слово var указано, то формальным параметром может быть только переменная;
если параметры функции используются для возврата результата в программу, вызвавшую функцию, то в объявлении функции перед именем соответствующего параметра должно присутствовать слово var.
Примеры решения задач
Задача 1. Даны действительные числа a, b, c. Вычислить
Система тестов:
№ |
Значение A |
Значение B |
Значение C |
Результаты |
1 |
1 |
2 |
3 |
1 |
2 |
1 |
-2 |
-3 |
0,25 |
Решение задачи:
Program Max_X_Y;
var
a, b, c, s : Real;
function f_max(x, y : real) : real; {описание функции}
begin {начинается тело функции}
if X>y then
f_max:=x
else
f_max:=y;
end;
begin {начинается тело программы}
Writeln('Введите a, b, c ');
Read(a,b,c);
s:= (f_max(a, a+b) + f_max(a, b+c)) / (1+f_max(a+b*c, 5));
Writeln('S= ',s);
Readln;
end.
Задача 2. Даны три вектора А, В, С, заданные своими координатами. Найти сумму А*В+B*С+A*C.
Система тестов:
№ |
Значение A |
Значение B |
Значение C |
Результаты |
1 |
1,1,1 |
1,1,1 |
1,1,1 |
9 |
2 |
1,2,0 |
0,1,2 |
2,1,1 |
9 |
Решение задачи:
Program Vectors;
Type
Vect=array[1..3] of real; {объявление структуры типа вектора}
var
A,B,C:Vect;
function ProizvVect(x, y : Vect) : real;
var {объявлениелокальных переменных I и p}
i:integer; {I и p могут быть ипользаваны только в теле}
P:real; {функции}
Begin {начало тела функции}
For i:=1 to 3 do
P:=P+x[i]*y[i];
ProizvVect:=P;
end;
procedure ReadVect(var x:Vect); {процедура чтения массива}
var
i : integer;
begin
Writeln('Введите координаты вектора?');
For i:=1 to 3 do
read(x[i]);
end;
begin {начинается тело программы}
ReadVect(A);
ReadVect(B);
ReadVect(C);
Writeln('S= ', ProizvVect(A,B)+ProizvVect(B,C)+ProizvVect(A,C));
Readln;
Readln;
end.
Варианты заданий для самостоятельной работы
Даны натуральные числа n,m. Получить
S=(n!+(n-1)!+(n-2)!)/m!, n>=2;
Даны натуральные числа n. Получить
Даны три вектора А, В, С, заданные своими координатами. Найти сумму S=А+B+A+C (Описать процедуру сложения векторов).
Даны три вектора А, В, С, заданные своими координатами. Найти сумму 3А+2В+4С (Описать процедуру умножения вектора на число.).
По заданным 5-элементным вещественным массивам A, B и C вычислить:
здесь запись min – означает минимум по всем элементам массива.
По заданным 5-элементным вещественным массивам A, B и C вычислить:
здесь запись Sum(X,n) – означает сумму n первых элементов массива.
Дан четырехугольник ABCD, заданный координатами его вершин на плоскости. Найти кратчайший путь от точки A до точки С.
Дан массив 10x10 (Array[1..10, 1..10] of char)- образ экрана. Определите процедуры построения:
а) горизонтальной линии;
b) вертикальной линии.
Нарисовать два прямоугольника на «экране».
Даны числа a, b, c, ….. Выяснить в каком из них сумма цифр больше (определить функцию.)
Дан массив целых чисел x [10]. Вывести на экран представление каждого из этих чисел в двоичной системе счисления (определить функцию.)
