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

Учебное пособие 748

.pdf
Скачиваний:
2
Добавлен:
30.04.2022
Размер:
567.54 Кб
Скачать

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования

«Воронежский государственный технический университет»

Кафедра систем информационной безопасности

ПОДПРОГРАММЫ И РАБОТА С ФАЙЛАМИ НА ЯЗЫКЕ ПАСКАЛЬ

МЕТОДИЧЕСКИНЕ УКАЗАНИЯ

к выполнению лабораторных работ № 9, 10 по дисциплине «Информатика» для студентов специальностей

10.05.01«Компьютерная безопасность»,

10.05.02«Информационная безопасность телекоммуникационных систем»,

10.05.03 «Информационная безопасность автоматизированных систем»

очной формы обучения

Воронеж 2019

УДК 621.3.06(07)

ББК 32.97Я7

Составители:

д-р техн. наук, проф. О. Н. Чопоров, д-р техн. наук, доц. К. А. Разинкин, канд. техн. наук, доц. Е. А. Москалева

Подпрограммы и работа с файлами на языке Паскаль: методические указания к выполнению лабораторных работ № 9– 10 по дисциплине «Информатика» для студентов специальностей 10.05.01 «Компьютерная безопасность», 10.05.02 «Информационная безопасность телекоммуникационных систем», 10.05.03 «Информационная безопасность автоматизированных систем» очной формы обучения / ФГБОУ ВО «Воронежский государственный технический университет»; сост.: О. Н. Чопоров, К. А. Разинкин, Е. А. Москалева. Воронеж: Изд-во ВГТУ, 2019. 26 с.

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

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

Методические указания подготовлены в электронном виде и содержатся в файле МУ_Информатика_ЛР_9-10.pdf.

Ил. 1. Табл. 2. Библиогр.: 9 назв.

УДК 621.3.06(07) ББК 32.97Я7

Рецензент — А. Г. Остапенко, д-р техн. наук, проф., зав. кафедрой систем информационной безопасности ВГТУ

Издается по решению учебно-методического совета Воронежского государственного технического университета

ЛАБОРАТОРНАЯ РАБОТА № 9

ПРОЦЕДУРЫ И ФУНКЦИИ

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

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

должны знать:

1)разновидности, назначение и структуру подпрограмм;

2)отличительные особенности использования процедур

ифункций;

3)механизм использования формальных параметров;

4)отличительные особенности передачи параметров в подпрограмму по значению и по ссылке;

5)стандартные процедуры и функции языка Паскаль.

ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ ДЛЯ ДОМАШНЕГО ИЗУЧЕНИЯ

1.Процедуры и функции

вязыке программирования Паскаль

Практически во всех больших программах встречаются группы одинаковых команд, которые выполняются много раз. Для того чтобы упростить вид программы, наборам таких команд присваивают имена и, когда требуется выполнить эти группы команд, указывают только их имена (вызывают по имени). Такие группы команд называют функциями или процедурами (для единообразия их называют подпрограммами).

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

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

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

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

Ипроцедура, и функция должны иметь собственное имя

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

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

Описание процедуры:

procedure имя(список формальных параметров); раздел описаний

begin

операторы end;

Описание функции:

function имя(список формальных параметров): тип возвращаемого значения;

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

операторы end;

Операторы подпрограммы, окаймленные операторными скобками begin end, называются телом этой подпрограммы.

3

Список формальных параметров вместе с окружающими скобками может отсутствовать.

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

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

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

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

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

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

параметром-значением и говорят, что он передается по значению.

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

4

Например, пусть имеется следующее описание процедуры: procedure PrintSquare(i: integer);

begin

writeln(i*i); end;

Тогда при вызове PrintSquare(5*a b) значение 5*a b будет вычислено и присвоено переменной i, после чего выпол-

нится тело процедуры.

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

Например, если описана процедура procedure Mult2(var a: integer); begin

a := a*2; end;

то после вызова Mult2(d) значение d увеличится в 2 раза.

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

Пример 1. Процедура ввода N целых чисел

Пусть в основной программе определен тип: type tArr = array [1..100] of Integer;

Процедура может иметь вид:

procedure InpInt(var Mas:tArr; N:Integer); {заголовок процедуры со списком формальных параметров}

var i : integer; {локальный параметр - параметр цикла}

5

begin

Writeln('Введите ',N,' целых чисел'); for i:=1 to N do

Readln(Mas[i])

end;

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

InpInt(M,K);

означает, что вызывается процедура InpInt для ввода K целых чисел в массив M.

Пример 2. Функция вычисления факториала числа N. function Factorial(N:Byte) : Longint;

var

Fact : Longint; i : Byte;

begin Fact:=N;

for i:=N-1 downto 2 do Fact:=Fact*i;

Factorial:=Fact

end;

Если имя функции внутри ее описания используется не в

левой части оператора присваивания, то это означает, что функция вызывает себя рекурсивно.

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

Part:=Sqr(T)/Factorial(i).

6

2. Стандартные процедуры и функции

2.1. Общие стандартные процедуры и функции

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

 

 

 

 

Таблица 1

Имя и

Процедура

Типы

Тип

 

или

возвращаемого

Действие

параметры

параметров

функция

значения

 

 

 

 

 

 

Read(a,b,...)

процедура

a,b, … —

 

вводит значения

 

 

переменные

 

с клавиатуры в

 

 

числового

 

переменные a, b

 

 

или типа

 

...

 

 

string

 

 

 

 

 

 

 

Write(a,b,...)

процедура

a,b,… — вы-

 

выводит значе-

 

 

ражения чи-

 

ния a, b, ... в ок-

 

 

слового типа

 

но вывода

 

 

или string

 

 

 

 

 

 

 

Readln(a,b,...)

процедура

a,b,… — пе-

 

вводит значения

 

 

ременные

 

с клавиатуры в

 

 

простого типа

 

переменные a, b,

 

 

или типа

 

..., и переводит

 

 

string

 

курсор на сле-

 

 

 

 

дующую строку

 

 

 

 

 

Writeln(a,b,…)

процедура

a,b,… —

 

выводит значе-

 

 

выражения

 

ния a, b, ... в ок-

 

 

простого ти-

 

но вывода и

 

 

па, типа

 

осуществляет

 

 

string или

 

переход на сле-

 

 

указатели

 

дующую строку.

 

 

 

 

Если параметры

 

 

 

 

процедуры не

 

 

 

 

указаны, то вы-

 

 

 

 

полняет только

 

 

 

 

переход на сле-

 

 

 

 

дующую строку

 

 

 

 

 

Abs(x)

функция

x — integer,

совпадает с

возвращает аб-

 

 

real

типом

солютное значе-

 

 

 

параметра

ние (модуль) x

 

 

 

 

 

 

 

7

 

 

Продолжение табл. 1

Имя и

Процедура

Типы

Тип

 

или

возвращаемого

Действие

параметры

параметров

 

функция

 

значения

 

Sqr(x)

функция

x — integer,

совпадает с

возвращает

 

 

real

типом

квадрат x

 

 

 

параметра

 

 

 

 

 

 

Sqrt(x)

функция

x — real,

совпадает с

возвращает

 

 

 

типом

квадратный ко-

 

 

 

параметра

рень из x

 

 

 

 

 

Sin(x)

функция

x — real,

совпадает с

возвращает

 

 

 

типом

синус x

 

 

 

параметра

 

 

 

 

 

 

Cos(x)

функция

x — real,

совпадает с

возвращает

 

 

 

типом

косинус x

 

 

 

параметра

 

 

 

 

 

 

Arctan(x)

функция

x — real,

совпадает с

возвращает

 

 

 

типом

арктангенс x

 

 

 

параметра

 

 

 

 

 

 

Power(x,y)

функция

x, y — real

real

возвращает x в

 

 

 

 

степени y

 

 

 

 

 

Round(x)

функция

x — real

integer

возвращает ре-

 

 

 

 

зультат округ-

 

 

 

 

ления x до бли-

 

 

 

 

жайшего целого

 

 

 

 

 

Int(x)

функция

x — real

real

возвращает

 

 

 

 

целую часть х

 

 

 

 

 

Frac(x)

функция

x — real

real

возвращает

 

 

 

 

дробную часть х

 

 

 

 

 

Ord(x)

функция

x —

integer

возвращает но-

 

 

порядкового

 

мер значения

 

 

типа

 

порядкового

 

 

 

 

типа (символа)

 

 

 

 

 

Chr(x)

функция

x — integer

char

возвращает сим-

 

 

 

 

вол с кодом х

 

 

 

 

 

8

Окончание табл. 1

Имя и

Процедура

Типы

Тип

 

или

возвращаемого

Действие

параметры

параметров

 

функция

 

значения

 

Odd(x)

функция

x — integer

boolean

возвращает True,

 

 

 

 

если х - нечет-

 

 

 

 

ное, и False в

 

 

 

 

противном слу-

 

 

 

 

чае

 

 

 

 

 

Inc(x)

процедура

x —

 

увеличивает x

 

 

порядкового

 

на 1

 

 

типа

 

 

 

 

 

 

 

Dec(x)

процедура

x —

 

уменьшает x на

 

 

порядкового

 

1

 

 

типа

 

 

 

 

 

 

 

Inc(x,n)

процедура

x — порядко-

 

увеличивает x

 

 

вого типа,

 

на n

 

 

n — целого

 

 

 

 

типа

 

 

 

 

 

 

 

Dec(x,n)

процедура

x — порядко-

 

Уменьшает x на

 

 

вого типа,

 

n

 

 

n — целого

 

 

 

 

типа

 

 

 

 

 

 

 

Pred(x)

функция

x —

совпадает с

возвращает пре-

 

 

порядкового

типом

дыдущее значе-

 

 

типа

параметра

ние порядкового

 

 

 

 

типа

 

 

 

 

 

Succ(x)

функция

x —

совпадает с

возвращает сле-

 

 

порядкового

типом

дующее значе-

 

 

типа

параметра

ние порядкового

 

 

 

 

типа

 

 

 

 

 

Random(x)

функция

x — integer

integer

возвращает слу-

 

 

 

 

чайное целое в

 

 

 

 

диапазоне от 0

 

 

 

 

до x – 1

 

 

 

 

 

Random

функция

 

real

возвращает слу-

 

 

 

 

чайное вещест-

 

 

 

 

венное в диапа-

 

 

 

 

зоне [0..1]

 

 

 

 

 

 

 

9