Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторки (основы программирования).docx
Скачиваний:
24
Добавлен:
02.02.2015
Размер:
377 Кб
Скачать

Вопросы на защиту:

Что такое блок-схема?

Ответ: ____________________________________________ __________________________________________________ __________________________________________________

Для чего нужны блок-схемы?

Ответ: ____________________________________________ __________________________________________________ __________________________________________________

Нужно ли «топить» строчку находящуюся в цикле, если она всего одна и цикл обошёлся без операторских скобок? Почему?

Ответ: ____________________________________________ __________________________________________________ __________________________________________________

Какой цели служит форматирование кода программы?

Ответ: ____________________________________________ __________________________________________________ __________________________________________________

Работу написал Работу проверил

Лабораторная робота №4 «Передача массивов в подпрограммы»

  1. Тема работы: передача массивов в подпрограммы в качестве параметра.

  1. Цель работы: научиться передавать массивы в качестве параметров подпрограмм.

  1. Теоретический материал

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

Параметры подпрограммы – это значения, переданные этим подпрограммам из основной программы, которым внутри подпрограммы присваивается уникальное имя, что позволяет сделать подпрограмму универсальной и использовать для обработки разных данных (переменных, массивов и прочего).

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

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

Формат описания подпрограмм имеет вид:

для процедур:

procedure имя процедуры (параметры);

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

begin

исполняемая часть процедуры

end;

для функций:

function имя функции (параметры):тип результата;

раздел описаний функции

begin

исполняемая часть функции

end;

примеры:

procedure One (var a,b: integer);

var temp: integer;

begin

temp:=a;

a:=b;

b:=temp;

end;

function Tow (a,b,c: integer;): real;

const K=3;

begin

Tow:=(a+b+c)/K;

End;

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

Пример: One (i,j);

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

Примеры:

c:=Tow(i,j,k);

c:=a+b+Tow(i,j,k);

write(Tow(i,j,k));

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

Существует два способа передать массив в качестве параметра подпрограммы. У каждого из них свои достоинства и недостатки, поэтому выбирать способ нужно с умом.

Первый способ – безразмерный (динамический) массив. Записывается он так:

Procedure One (Arr: array of integer);

Как Вы видите, размерность массива здесь не указана и таким образом, она будет подобрана автоматически, в зависимости от передаваемого массива. Это очень удобно, поскольку позволяет использовать этот способ для передачи в одну процедуру массивов разного размера.

Недостатком такого способа является то, что его нельзя использовать для многомерных массивов, этим способом можно передать лишь одномерный массив. Другой недостаток – это сбивание нумерации элементов. Поскольку номера ни первого ни последнего элемента не заданы, Pascal назначает из автоматически и делает он это начиная с нуля. Таким образом, если нумерация Вашего массива была от 1 до N, то после передачи в подпрограмму она станет от 0 да N-1. Это нужно не забывать и учитывать.

Второй способ – это создание нового типа переменной! В параметрах программы (после const но до var), можно создавать свой тип переменной, сделав его массивом заданного размера. Делается это так:

Type Имя_типа = array [1..N,1..M] of real

После этого Вы объявляете массив присваивая ему уже этот, новый тип и не указывая размерность:

Mas: Имя_типа

Если представить, что имя типа мы задали Massiv, то объявление подпрограммы будет выглядеть так:

Procedure One (Arr: massiv);

Такой способ позволяет передавать в качестве параметра массивы с любым количеством измерений и многомерные массивы можно передать только так. Недостатком же этого способа является то, что количество измерений и размеры передаваемых массива должны совпадать с принимаемым массивом, т.е. этим способом в подпрограмму можно передать лишь одинаковые массивы.

Задание:

  1. Создать три одномерных и три двумерных массива. Заполнить и выдать на экран их с помощью подпрограмм. Для обработки одномерных массивов использовать первый способ передачи массивов, а для обработки двумерных – второй. При этом, одномерные массивы должны быть разных размеров, а двумерные состоять из 3 строк по 15 столбцов.

  2. Написать отчёт, который должен содержать титульный лист, текст программы, её блок-схему и ответы на контрольные вопросы со следующей страницы.