Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторный практикум по информатике

.pdf
Скачиваний:
157
Добавлен:
18.03.2015
Размер:
8.8 Mб
Скачать

обращаясь к глобальной переменной по имени или используя механизм формальных параметров.

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

Procedure treug(x,y,z:Integer;Var ss:Real; Var pp : Integer);

По своему назначению формальные параметры могут быть

параметрами-значениями и параметрами-переменными.

Параметр-значение в подпрограмму передается, а обратно не возвращается, а параметр-переменная в подпрограмме вычисляется, и в программу передается ее новое значение. Перед параметромпеременной ставится служебное слово Var. Действие слова Var распространяется до ближайшей точки с запятой, т. е. в пределах одной группы.

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

Для предотвращения нежелательных изменений глобальных переменных рекомендуется:

1.входные переменные описывать как параметры-значения;

2.избегать непосредственного использования глобальных переменных в подпрограммах;

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

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

type tArr = array[l..100] of Real;

procedure ZapolnMas (l:integer, var A: tArr; Max);

Здесь A - параметр-переменная, l - параметр значение.

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

91

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

они должны совпадать по количеству, типу и порядку следования.

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

3.3. Подпрограмма-функция

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

Основные отличия функции от процедуры:

1.Заголовок функции состоит из слова function, за которым следует имя функции, далее в круглых скобках - список формальных параметров, затем через двоеточие записывается тип функции - тип возвращаемого параметра. Функция может возвращать параметры следующих типов: любого порядкового, любого вещественного, стандартного строкового типа string, любого указателя.

2.В теле функции хотя бы раз имени функции должно быть присвоено значение: <имя функции> := <результат>; .

3.Функция вызывается в каком-нибудь выражении.

3.4. Подпрограмма-процедура

Любая процедура начинается с заголовка. В отличие от основной программы заголовок в процедуре обязателен. Общий вид заголовка:

procedure <имя процедуры>(<формальные параметры> : <тип>);

За заголовком могут идти такие же разделы, что и в основной программе. В отличие от основной программы процедура завершается точкой с запятой.

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

92

Разрешается описывать процедуры без формальных параметров, тогда организация передачи информации из программы в процедуру и обратно проводится с помощью глобальных переменных, а заголовок процедуры будет иметь более простой вид: procedure <имя процедуры>;

Для вызова процедуры из основной программы или другой подпрограммы следует записать имя процедуры и список

фактических параметров. Например:

Streug(a,b,c,s); Streug(a/b,c+5,7,s1); .

Вызов процедуры без формальных параметров осуществляется по имени.

4. Описание оборудования и используемых программных комплексов

Лабораторная работа проводится в компьютерном классе. Требования к аппаратному обеспечению: IBM-совместимые персональные компьютеры класса Pentium IV и выше, ОЗУ от 128 Мб. ПК должен быть обеспечен следующими программами: ОС

Windows 2000/XP, Microsoft Office 2010, Borland Pascal 7.0.

5. Краткое руководство по эксплуатации оборудования

При использовании оборудования необходимо:

– соблюдать общие правила нахождения в учебных лабораториях, работы с компьютером и использования программных средств;

– привести в порядок одежду;

– осмотреть рабочее место, убрать все мешающие работе предметы;

– визуально проверить правильность подключения ПЭВМ к электросети.

6. Задание

6.1. Составить программу табулирования функции на данном отрезке с данным шагом по указанному преподавателем варианту.

93

Таблица 1 Варианты задания по теме «Подпрограммы-функции»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание

 

 

 

 

 

 

 

варианта

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

x2

 

5x

 

 

 

8 на интервале

0, 2

с шагом 0.1.

 

 

 

 

 

 

 

 

 

 

 

 

2

y

 

3x

2

4

 

 

 

 

x

 

1 на интервале

0.5, 2,5 с шагом 0.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

x

 

 

 

 

x

 

 

2 на интервале

2, 2

с шагом 0.2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

y

 

7x

 

4

 

 

 

3x

5

cos x

на интервале

1.7, 1

с шагом

 

0.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

y

 

x

3

 

4x

2

 

 

 

 

 

 

x

2 на интервале

1, 1

с шагом 0.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

y

 

 

 

x

 

sin 3x на интервале

1.5, 1.5

с шагом 0.12.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

cos x

 

 

 

 

 

 

 

x на интервале

0, 3 с шагом 0.11.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

y

sin 2x

 

 

 

 

tg3x на интервале 0, 1

с шагом 0.05.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

x

2

 

 

 

 

 

 

 

 

 

x

3 на интервале

1, 2 с шагом 0.25.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

y

 

2x

 

 

sin 2x на интервале

3, 3 с шагом 0.25.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

y

5

 

 

cos3x на интервале

0, 2

с шагом 0.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

x

 

 

 

 

 

x

 

 

 

 

1 на интервале

0, 5 с шагом 0.5.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

y

 

 

 

x

 

5

 

 

 

 

 

x2 на интервале

3, 3 с шагом 0.25.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

y

 

e

x

 

1 на интервале

2, 2

с шагом 0.2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

sin x

 

 

на интервале 0, 2

с шагом 0.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

y

 

 

x

 

3

 

 

 

 

x

2

 

на интервале

6, 3 с шагом 0.5.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

y

 

 

 

sin x

 

 

 

 

cos x

 

tg x

 

на

интервале

1.2, 1.2

с

 

шагом 0.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18

y

 

e

x

 

x

 

 

 

2 на интервале

2, 2

с шагом 0.2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

y

1 tgx

2

 

 

2

 

 

на интервале

1.5, 1.5

с шагом 0.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

sin

 

x

 

 

1

 

 

 

sin x

1

3

на

интервале

1, 2

с

 

 

 

 

 

 

 

 

 

шагом 0.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

94

 

 

 

 

 

 

 

 

 

 

5.2.Составить программу определения максимального элемента двумерного массива.

5.3.Составить программу решения задачи по указанному преподавателем варианту.

 

Таблица 2

 

Варианты заданий для самостоятельного решения

 

 

Задание

варианта

 

1

Составить программу перемножения двух матриц произвольной

 

размерности, предусмотреть проверку возможности перемножения.

2

Составить программу сложения двух матриц произвольной размерности,

 

предусмотреть проверку возможности сложения.

3

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

 

строк, не содержащих ни одного нулевого элемента.

4

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

 

столбцов, не содержащих ни одного нулевого элемента.

5

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

 

столбцов, содержащих хотя бы один нулевой элемент.

6

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

 

элементов в тех строках, которые не содержат отрицательных элементов.

7

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

 

элементов в тех столбцах, которые не содержат отрицательных

 

элементов.

8

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

 

элементов в тех строках, которые содержат хотя бы один отрицательный

 

элемент.

9

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

 

элементов в тех столбцах, которые содержат хотя бы один

 

отрицательный элемент.

10

Дана квадратная матрица действительных чисел. Найти сумму модулей

 

элементов, расположенных ниже главной диагонали.

11

Дана квадратная матрица действительных чисел. Найти сумму модулей

 

элементов, расположенных выше главной диагонали.

12

Дана прямоугольная матрица действительных чисел. Найти количество

 

строк, среднее арифметическое элементов которых меньше заданной

 

величины.

13Дана прямоугольная матрица действительных чисел. Найти номер первого из столбцов, содержащих хотя бы один положительный элемент.

95

14

Найти номер первого из столбцов прямоугольной матрицы, не

 

содержащих ни одного отрицательного элемента.

15

Найти номер первой из строк прямоугольной матрицы, не содержащих

 

ни одного отрицательного элемента.

16

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

 

из столбцов, содержащих хотя бы один нулевой элемент.

17

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

 

из строк, содержащих хотя бы один нулевой элемент.

18

Дан двумерный массив целых чисел. Составить программу, которая

 

определяет, есть ли в каждой из строк массива хотя бы один элемент,

 

оканчивающейся цифрой 3. В случае положительного ответа должны

 

быть напечатаны координаты любого из таких элементов

19

Найти номер первого из столбцов прямоугольной матрицы, не

 

содержащих ни одного положительного элемента.

20Найти номер первой из строк прямоугольной матрицы, не содержащих ни одного положительного элемента.

7. Методика выполнения задания

Для выполнения задания следует воспользоваться нижеприведенными примерами и указанием.

7.1. Пример 1

Составить программу табулирования функции F x x cos x на отрезке a,b с шагом h.

Решение. Вычисление значения функции оформим в виде функции.

Program pr_3;

Var a,b,h,x : real; Function f(t : real) : real;

Begin f:=t*cos(t);

End;

Begin

Write('Введите начало и конец отрезка: '); Readln(a,b); Writeln('Введите шаг табуляции: '); Readln(h); Writeln('Аргумент Функция f(x)=x cos(x) ');

x:=a; Repeat

Writeln (x:6:3, f(x):20:3);

96

x:=x+h; Until x>b;

End.

7.2. Для реализации данного задания воспользоваться примером 2. Массив заполнить случайными действительными числами из интервала [-10;12).

Пример 2.

Составить программу, содержащую функцию нахождения максимального элемента двумерного массива.

Решение. В основной программе размерность массива n и m зададим именованными константами, определим тип – массив из n m элементов, массив этого типа и переменную для хранения максимального элемента:

Const n=5; m=8;

Type MyMass = array[l..n, 1..m] of Real; Var A : MyMass; Max : Real;

Функция в этом случае может иметь вид:

function Maximum (Var Nmax, Mmax : Byte; Var Mas : MyMass): Real;

var max_el : Real; i, j: Byte; begin

max_el := Mas[1, 1]; for i := 1 to Nmax do for j := 1 to Mmax do

if max_el < Mas[i, j] then max_el := Mas[i, j]; Maximum := max_el;

end;

Теперь для записи максимального элемента массива A в переменную Max можно использовать оператор:

Маx := Maximum (n, m, A);

Данная подпрограмма может работать только с массивами типа

MyMass.

7.3. Указание

При составлении программы для решения задачи оформить основную подпрограмму в виде функции, а подпрограммы ввода и

97

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

Пример 3. Даны два массива из N целых элементов из интервала 20, 30 . В каждом массиве найти максимальный элемент и затем сравнить их.

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

Program SravMas; {сравнение максимальных и минимальных элементов}

Const n=15;

Type massiv=Array[1..n] оf Integer; Var m1, m2 : massiv;

max1, max2 : Integer;

Procedure RandomMas(Var x:massiv); Var i:Integer;

Begin

For i:=1 To n Do x[i] := -20+Random(50);

End;

Procedure VivodMas(Var x:massiv); Var i:Integer;

Begin

For i:=1 To n Do write(x[i]:5);

End;

Procedure MaxMas(Var x:massiv; Var MX:Integer); Var i:integer;

Begin

MX:=x[1];

For i:=2 to n do

if x[i]>MX then MX:=x[i];

98

End;

Begin {основная программа}

Randomize;

RandomMas(m1); Writeln('Первый массив:'); VivodMas(m1); RandomMas(m2); Writeln('Второй массив:'); VivodMas(m2);

MaxMas(m1,max1); MaxMas(m2, max2); {вызов процедуры нахождения максимального элемента}

if max1>max2 then writeln('В 1-м массиве максимальный элемент больше и =',max1)

else if max1<max2 then writeln('Во 2-м массиве макс-й элемент больше и=',max2) else writeln('В обоих массивах максимальные равны

',max1);

End.

Контрольные вопросы

1.Дайте определение подпрограммы.

2.Приведите пример описания процедуры.

3.Приведите пример описания функции.

4.Объясните отличие процедуры от функции.

5.Какие переменные называются локальными? Чем глобальные переменные отличаются от локальных? Можно ли локальной переменной дать имя, совпадающее с именем глобальной переменной?

6.Какую роль при работе с подпрограммой выполняют фактические параметры?

7.Сколько элементов может содержать список формальных параметров? Сколько элементов должен содержать список фактических параметров?

8.Можно ли в программе формальным параметрам давать имена, совпадающие с именами фактических параметров? Почему?

9.Могут ли фактические параметры быть выражениями? А именами других процедур, функций?

10.В чем отличие параметра-переменной и параметра-значения?

99

11.Может ли в качестве параметра при вызове подпрограммы, имеющей формальный параметр-значение, выступать: переменная, выражение, константа?

12.Существуют ли ограничения на тип возвращаемого функцией значения?

8.Требования к содержанию и оформлению отчета

Отчет о проделанной работе должен содержать: - название и цель работы; - номер и условие своего варианта;

- описание основных этапов задания; - тексты разработанных программ;

- полученные при расчетах результаты (скриншоты); - анализ полученных результатов и вывод по проделанной работе;

- ответы на контрольные вопросы в соответствии с указаниями преподавателя.

9.Критерии результативности лабораторного практикума

Лабораторная работа считается выполненной, если:

-задание к лабораторной работе выполнено в полном объеме;

-студент представил тексты программ и результаты их выполнения;

-результаты выполнения программ соответствуют поставленным задачам;

-при устном ответе на 1-2 контрольных вопроса по указанию преподавателя студент демонстрирует знание основных операторов и определений изученной темы и умение применить их при решении соответствующих задач;

-представленный отчет по лабораторной работе соответствует требованиям раздела 8.

100