2.21M
Category: programmingprogramming

Структурированный тип данных – множество. Операции над множествами

1.

Основа алгоритмизации и
программирования
«Структурированный тип данных – множество. Операции над
множествами»
Практическое занятие
Лекция
Кафедра цифровой экономики
Гринева Е.С.,преподаватель
14 декабря 2022 г.

2.

Цель занятия:
2
Изучить:
Подпрограммы
Структура подпрограмм
Описание процедур и функций. Формальные параметры
Область действия имен
Использование процедур и функций на примере

3.

Подпрограммы
Понятие подпрограмма встречается во многих языках программирования, т.к.
является основным средством структурирования языка. Очень часто в
программах встречаются однотипные участки, которые выполняют одни и те
же вычисления с различными данными. Такие части программ целесообразно
выполнять с помощью подпрограмм.
Использование подпрограмм позволяет:
сделать основную программу более наглядной и компактной;
уменьшить объем используемой памяти ЭВМ;
сократить время написания и отладки программы, т.к. различные
подпрограммы могут быть написаны различными людьми параллельно.
Таким образом, подпрограмма – это часть операторов программы,
выделенных в группу, оформленную в виде отдельной конструкции.
Вызов подпрограммы, т.е. выполнение действий, заданных в подпрограмме,
может быть произведен в некоторой точке программы посредством указания
имени этой подпрограммы.
3

4.

Структура подпрограмм
Структура подпрограмм почти в точности повторяет структуру всей Pascal-программы.
При описании подпрограммы в общем случае необходимо задать три основные
компоненты:
интерфейс подпрограммы, т.е. информацию, необходимую для ее вызова;
локальный контекст подпрограммы – совокупность описаний рабочих объектов, с
которыми осуществляются действия;
сами действия (операторы), составляющие смысл подпрограммы.
Интерфейс подпрограммы содержится в заголовке и говорит о том, что
именно делает подпрограмма.
Две остальные компоненты называются телом подпрограммы и содержат
информацию о том, как выполняется подпрограммой то, что описано в ее заголовке.
В языке Pascal выделяют два вида подпрограмм: процедуры и функции. Различия
процедур и функций заключается в назначении и способе их использования.
Функции нужны для вычисления нового значения некоторого выражения, и вызов
функции должен быть операндом в выражении.
4
Процедуры
служат для задания последовательности действий и определения новых
значений переменных в программе. Вызов процедуры играет роль оператора.

5.

Описание процедур и функций. Формальные параметры
Заголовок процедуры:
PROCEDURE <имя> (список формальных параметров);
Заголовок функции:
FUNCTION <имя> (список формальных параметров) : <тип результата>;
Тело подпрограммы – это блок, состоящий из двух частей: описание объектов и группа
операторов. Более полный общий вид процедуры (общий вид функции отличается
только заголовком):
Procedure <имя> (список формальных параметров);
{раздел описания переменных}
begin
{операторы}
end;
Здесь <имя> — имя процедуры.
Раздел
описаний,
как
и
в
основной
программе,
разделы Label, Const, Type, Var и раздел процедур и функций.
5
может
включать

6.

Параметры процедур бывают двух типов:
параметры-значения (входные параметры или параметры, передаваемые по
значению);
параметры-переменные (выходные параметры). Эти параметры используются для
передачи некоторых значений, вычисленных в подпрограмме, обратно в программу.
Список переменных1: тип1; список переменных2: тип2;
Соответственно описание выходных параметров выглядит следующим образом:
Var Список переменных1: тип1; Var список переменных2: тип2;
Вызов процедуры в основной программе имеет следующий вид:
<имя процедуры> (список фактических параметров); Function <имя> (список
формальных параметров): тип;
Функции имеют несколько отличительных особенностей:
Функция имеет только один результат выполнения (но может иметь несколько входных
параметров, выходных параметров у функции нет).
Результат обозначается именем функции. Поэтому в разделе операторов функции
обязательно должен присутствовать оператор присваивания, в левой части
которого стоит имя этой функции.
6
Вызов
функции в основной программе осуществляется непосредственно в
выражениях по ее имени с указанием фактических параметров

7.

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

8.

8

9.

Области видимости объектов
Имена объектов, описанных в некотором блоке, считаются известными в пределах данного
блока, включая и все вложенные блоки.
Имена объектов, описанные в блоке, должны быть уникальными в пределах данного блока и
могут совпадать с именами объектов из других блоков.
Если в некотором блоке описан объект, имя которого совпадает с именем объекта, описанного в
объемлющем блоке, то последнее становится недоступным в данном блоке (экранировка).
Механизм передачи параметров
В заголовке подпрограммы может быть задан список формальных параметров. Каждый
параметр, заданный в заголовке, считается локальным в данной подпрограмме.
Идентификаторы формальных параметров можно считать условными обозначениями
реальных (фактических) параметров, которые будут переданы в подпрограмму при её
вызове.Внимание: Типы формальных параметров должны обязательно обозначаться
идентификаторами.
Недопустимо:
Procedure InCorrect (Var A: Array [1..10] of Byte);
Нужно:
Type
MyArray = Array [1..10] of Byte;
Procedure Correct (Var A: MyArray);
9

10.

Допустимы по крайней мере три способа задания формальных параметров:
a. параметры, перед которыми отсутствует служебное слово Var и за которыми следует
идентификатор типа;
b. параметр, перед которым Var и далее тип;
c. параметр со словом Var и не имеющие типа.
Параметры - значения.
Наиболее распространенный и простой способ. Параметр - обычная локальная
переменная. Может использовать выражение. Любые действия внутри подпрограммы
никак не отражаются на значениях переменной вне подпрограммы.
Параметры - переменные.
Передаются по ссылке. Способ используется, когда необходимо передать некоторое
значение в точку вызова подпрограммы. В случае Var - формальные параметры считаются
синонимами соответствующих фактических параметров. При этом фактические параметры
должны быть переменными (не выражениями) того же типа, что и формальные параметры
Безтиповые параметры.
Var Ident, где Ident - идентификатор формального параметра.
Фактический параметр, соответствующий формальному нетипизированному, должен
представлять собой переменную любого типа (но не выражение).
Единственным способом использования таких параметров является “наделение” их
определённым
типом.
10

11.

• 5. Предварительные и внешние описания подпрограмм
Как правило, телом процедуры является блок, но есть несколько исключений из данного правила.
Две подпрограммы, описанные на одном уровне, содержат взаимные вызовы друг друга.
Procedure A(X,Y: Real);
Begin
......
B (2, 2);
......
End;
Procedure B (A,B: Integer);
Begin
......
A (1.5, 2.8);
......
End;
11
Решением этой проблемы является механизм предварительных описаний. Предварительное описание содержит
заголовок подпрограммы, а вместо тела записывается служебное слово Forward. В этом случае заголовок полного
описания может быть записан без списка параметров и (для функций) без типа результата.
Procedure A(X,Y: Real): Forward;
Procedure B(A,B: Integer): Forward;
.........
Procedure A;
Begin
........
End;
Procedure B;
Begin
........
End;

12.

В случае предварительного описания подпрограммы далее в тексте должно обязательно
содержаться её определяющее описание, даже если нигде в программе не встречается
вызов этой подпрограммы.
Подпрограмма или группа подпрограмм разработана вне системы Турбо-Паскаля, на
другом языке, и необходимо использовать её в данной Pascal-программе.
Внешнее описание. Объектный код подпрограммы содержится в OBJ- файле.
В Pascal-программе необходимо описать заголовок подключаемой подпрограммы, после
которого должно идти слово external, и указать имя файла, содержащего
подпрограмму: {$L <имя .OBJ-файла>}
{$L ABC.OBJ}
Procedure A(C,D,E: Real); External;
Procedure B(I,F,J: Integer); Extenal
12

13.

Домашние задание
(Задание на самоподготовку)
1 выполнить задания несделанные во время
практики
13
English     Русский Rules