
- •Міністерство освіти і науки україни
- •Лабораторная робота №1 «Строковые переменные»
- •Работа со строковыми переменными
- •Вопросы на защиту:
- •Лабораторная робота №2 «Сортировка выбором»
- •Вопросы на защиту:
- •Лабораторная робота №3 «Стандарт оформления кода. Построение блок-схем.»
- •Вопросы на защиту:
- •Лабораторная робота №4 «Передача массивов в подпрограммы»
- •Вопросы на защиту:
- •Додаток а
Вопросы на защиту:
Что такое блок-схема?
Ответ: ____________________________________________ __________________________________________________ __________________________________________________
Для чего нужны блок-схемы?
Ответ: ____________________________________________ __________________________________________________ __________________________________________________
Нужно ли «топить» строчку находящуюся в цикле, если она всего одна и цикл обошёлся без операторских скобок? Почему?
Ответ: ____________________________________________ __________________________________________________ __________________________________________________
Какой цели служит форматирование кода программы?
Ответ: ____________________________________________ __________________________________________________ __________________________________________________
Работу написал Работу проверил
Лабораторная робота №4 «Передача массивов в подпрограммы»
Тема работы: передача массивов в подпрограммы в качестве параметра.
Цель работы: научиться передавать массивы в качестве параметров подпрограмм.
Теоретический материал
Подпрограммы – это участки кода, имеющие собственное имя и вызываемые из основной программы в любой момент времени, служащие для многократного исполнения однотипных задач, без необходимости повторно переписывать готовый код. Они бывают двух видов – функции и процедуры.
Параметры подпрограммы – это значения, переданные этим подпрограммам из основной программы, которым внутри подпрограммы присваивается уникальное имя, что позволяет сделать подпрограмму универсальной и использовать для обработки разных данных (переменных, массивов и прочего).
Функции отличаются от процедур тем, что не только выполняют заданные в них действия, но по окончании выполнения выдают какой-либо результат, в виде данных заданного типа.
Подпрограммы пишутся ДО тела основной программы, однако ПОСЛЕ настроек (задания констант, переменных и прочего). Вызывать подпрограммы можно как из основной программы, так и из другой подпрограммы, однако во втором случае вызываемая подпрограмма должна быть написана до вызывающей.
Формат описания подпрограмм имеет вид:
для процедур:
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);
Такой способ позволяет передавать в качестве параметра массивы с любым количеством измерений и многомерные массивы можно передать только так. Недостатком же этого способа является то, что количество измерений и размеры передаваемых массива должны совпадать с принимаемым массивом, т.е. этим способом в подпрограмму можно передать лишь одинаковые массивы.
Задание:
Создать три одномерных и три двумерных массива. Заполнить и выдать на экран их с помощью подпрограмм. Для обработки одномерных массивов использовать первый способ передачи массивов, а для обработки двумерных – второй. При этом, одномерные массивы должны быть разных размеров, а двумерные состоять из 3 строк по 15 столбцов.
Написать отчёт, который должен содержать титульный лист, текст программы, её блок-схему и ответы на контрольные вопросы со следующей страницы.