Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_ОАиП.doc
Скачиваний:
17
Добавлен:
01.04.2025
Размер:
5.06 Mб
Скачать

Лабораторная работа №20.

Тема: Использование подпрограмм для структурного метода реализация программирования.

Цель: Решение задач в виде отдельных подпрограмм, для упрощения отладки и возможной модификации программ.

Подпрограмма представляет собой самостоятельную программную единицу, обращение к которой осуществляется по имени.

Логически законченные части программы оформляются в виде подпрограмм. Они нужны для того, чтобы упростить структуру программы и облегчить ее отладку.

Подпрограмма — это фрагмент кода, к которому можно обратиться по имени. Она описывается один раз, а вызываться может столько раз, сколько необходимо. Одна и та же подпрограмма может обрабатывать различные данные, переданные ей в качестве аргументов. В Паскале имеется два вида подпрограмм: процедуры и функции. Они определяются в соответствующих разделах описания до начала блока исполняемых операторов.

Само по себе описание не приводит к выполнению подпрограммы. Для того чтобы подпрограмма выполнилась, ее надо вызвать. Вызов записывается в том месте программы, где требуется получить результаты работы подпрограммы. Подпрограмма вызывается по имени, за которым следует список аргументов в круглых скобках. Если аргументов нет, скобки не нужны. Список аргументов при вызове как бы накладывается на список параметров, замещая его, поэтому они должны, попарно соответствовать друг другу.

Подобно тому, как можно при вычислении по одной и той же формуле получить разные результаты, подставляя разные значения аргументов, при каждом вызове подпрограммы можно передавать ей разные данные. Важно только, чтобы их количество и тип соответствовали тому, что требуется подпрограмме для работы.

Структура процедуры аналогична структуре основной программы: в ней есть заголовок, разделы описаний и операторов:

procedure имя (список параметров): { заголовок }

разделы описаний

begin

раздел операторов

end;

Задача. Даны два массива целых чисел. Оформить ввод и вывод элементов в виде процедуры и найти максимальный элемент каждого массива с помощью функции.

uses crt;

type mas=array[1..35] of integer;

var a,b:mas;

maxA,maxB,i:integer;

procedure WWOD(var d:mas;n:byte);

begin for i:=1 to n do

d[i]:=random(100);

end;

procedure WIWOD(var d:mas;n:byte);

begin writeln ('Massiv');

for i:=1 to n do

write(d[i]:5);

end;

function Max(var d:mas;n:byte):integer;

var p:integer;

begin p:=d[1];

for i:=2 to n do

if d[i]>p then p:=d[i];

max:=p;

end;

begin clrscr;

randomize;

WWOD(a,20);

WWOD(b,35);

writeln;

WIWOD(a,20);

maxA:=Max(a,20);

writeln('Maksimal A=',maxA);

writeln;

WIWOD(b,35);

maxB:=Max(b,35);

writeln('Maksimal B=',maxB);

readln;

end.

В отчете по лабораторным работам написать комментарии к отдельным блокам программы.

Задачи для самостоятельного решения.

Даны два массива из 10 целых чисел каждый. Определить, в каком из них больше положительных элементов.

Дана целочисленная прямоугольная матрица. Определить:

  1. количество строк, не содержащих ни одного нулевого элемента (оформить в виде функции);

  2. максимальное из чисел, встречающихся в заданной матрице более одного раза (оформить в виде процедуры).

Рекомендации: Размерности массивов следует задать именованными константами. Все необходимые данные должны передаваться подпрограммам в качестве параметров; все величины, используемые только внутри подпрограмм, должны быть описаны как локальные. Использование глобальных переменных в подпрограммах не допускается. Вывод результатов работы подпрограмм должен выполняться в главной программе.