На лекциях процедуры, функции, модули уже прочитаны




НазваниеНа лекциях процедуры, функции, модули уже прочитаны
Дата публикации17.10.2016
Размер9,76 Kb.
ТипЛекция

ProcUnit.doc Процедуры, функции, модули стр. из

Занятия 7, 8. Процедуры и функции, модули

– Основные понятия (этот файл), на лекциях процедуры, функции, модули уже прочитаны.

– Рассмотреть примеры (mas3-spec.doc и ProFUn.doc)
Часть 1. ОСНОВЫ РАЗРАБОТКИ ПРОЦЕДУР
1.1. Понятие процедуры
Процедура – одно из фундаментальных средств нисходящего структурного программирования; это средство абстракции и расширения возможностей языка.

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


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



Суть процедуры

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



Форма процедуры

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


Вызывающий алгоритм


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


^ Исходные данные, или аргументы, и выходные данные, или результаты процедуры, при описании процедуры могут быть представлены в специфическом виде - в виде параметров – как описание и перечисление «мест», куда при выполнении процедуры должны быть подставлены фактически обрабатываемые данные.

Как параметры описываются исходные данные (аргументы) и выходные данные (результаты) процедуры.
Параметры, присутствующие в описании процедуры, называются формальными.

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

Параметры процедуры:

Формальные
и
фактические




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



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

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

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



Локальные
объекты
процедуры

Глобальные
объекты



Межмодульный
интерфейс



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


Выполнение
процедуры


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

Имена и связь
формальных
и фактических
параметров




1.3. Виды процедур

По месту размещения описания процедуры выделяют внутренние и внешние процедуры

В общем случае возможен один из двух вариантов:

– процедура описана вне вызывающего модуля;

– процедура описана внутри вызывающего модуля.

От способа размещения зависит способ компиляции программы.

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

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

^ Внешняя процедура оформляется как отдельная программная единица (модуль в приведенном выше смысле) и может быть скомпилирована отдельно от модуля, содержащего вызов процедуры.

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

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

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

Часть 2. ^ КОДИРОВАНИЕ ПРОЦЕДУР НА ЯЗЫКЕ PASCAL
2.1. Синтаксис описания процедур
Процедура общего вида.




procedure <имя процедуры>(<список формальных параметров>); {  заголовок процедуры }

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

процедур и функций – как и для программы }

const {раздел может отсутствовать}

<описание локальных констант>

type {раздел может отсутствовать}

<описание локальных типов>

var {раздел может отсутствовать}

<описание локальных переменных>
<описание внутренних процедур и функций> {раздел может отсутствовать}
begin {раздел операторов обязателен}

<операторы>

end;
Вызов процедуры общего вида располагается в списке операторов вызывающей программы и выглядит так:

<имя процедуры>(<список фактических параметров>);
Функция.




{ заголовок функции }

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

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

процедур и функций – как и для программы }

const {раздел может отсутствовать}

<описание локальных констант>

type {раздел может отсутствовать}

<описание локальных типов>

var {раздел может отсутствовать}

<описание локальных переменных>
<описание внутренних процедур и функций> {раздел может отсутствовать}
begin {раздел операторов обязателен}

<операторы>

<имя функции>:=<возвращаемое значение>; {либо Result := <возвращаемое значение> }

end;
Возвращаемое значение должно быть простого типа. Оно присваивается имени функции или стандартной переменной Result, имеющейся у каждой функции. Хороший стиль предполагает наличие единственного такого присваивания в конце раздела операторов (для нерекурсивных процедур). О рекурсивных процедурах речь пойдет в следующем семестре.
Вызов функции располагается в арифметическом или логическом выражении в вызывающей программе выглядит так:
<имя функции>(<список фактических параметров>)
в качестве операнда арифметического или логического выражения:
<переменная>:=<имя функции>(<список фактических параметров>);

{переменной присваивается возвращаемое функцией значение}
или
<переменная>:=<имя функции>(<список фактических параметров>) + 3*sin(x);

{переменной присваивается возвращаемое функцией значение}
или
<переменная>:=(n>0) and <имя функции>(<список фактических параметров>);

{переменной присваивается возвращаемое функцией значение}
или
if <имя функции>(<список фактических параметров>) then …

{возвращаемое функцией значение используется в качестве логического выражения}
^ Имена процедуры и функции подчиняются правилам для имен всех идентификаторов – начинается с латинской буквы или знака подчеркивания и может состоять только из букв латинского алфавита, цифр и знаков подчеркивания.
^ Список формальных параметров состоит из списка имен параметров, обычно с указанием их типов и иногда значений по умолчанию. Разделителем описаний является «;».

Перед параметрами, получающими начальное значения извне, которые НЕ будут изменяться в теле процедуры, обычно ставится слово const. Это параметры-константы.

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

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

Перед параметрами, которые НЕ получают начальное значения извне и изменения которых в теле процедуры должны отразиться в вызывающей программе ставиться out. Это тоже параметры-переменные. Для статических переменных действует аналогично var, для динамических – при передаче параметра память, выделенная для переменной освобождается.
^ Список фактических параметров является списком имен переменных, арифметических или логических выражений, по типам и количеству соответствующих параметрам из списка формальных параметров. Разделителем описаний является запятая.
Списки параметров могут отсутствовать, и тогда процедура является процедурой без параметров. В этом случае пустые скобки тоже можно опустить.
2.2. Передача параметров-констант, параметров-значений и параметров-переменных.

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

Правила подстановки следующие:

формальный параметр

фактический параметр

параметр-константа (const)

выражение

параметр-значение

выражение

параметр-переменная
(var, out)

переменная

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

Передача параметра по значению:

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

2) При передаче параметров-констант для их обработки создается локальная константа, в которую копируется значение из фактического параметра. Значение константы нельзя менять в теле процедуры. Соответствующий фактический параметр не меняется. В отличие от параметров-значений параметры-константы пользовательских типов (массив, запись, строки) используются для генерации компилятором более оптимального кода для передачи этих параметров (могут передаваться и по ссылке – решает компилятор). Параметры-константы базовых типов на эффективность передачи не влияют, но больше говорят о характере использования такого параметра.

Передача параметра по ссылке:

При передаче параметров-переменных перед выполнением процедуры устанавливается ссылка на переменную-фактический параметр; иначе говоря, в процедуру передается адрес фактического параметра. Все действия процедуры, таким образом, выполняются над фактическим параметром. Если начальное значение фактического параметра должно быть использовано в процедуре, то параметр следует передавать с var. Если указать перед параметром out, то память, выделенная для переданной динамической переменной будет освобождена (nil) при входе в процедуру, а для статической переменной указание out аналогично var.

Следовательно, выходные параметры процедуры необходимо специфицировать как параметры-переменные (передавать по ссылке с var или out). А входные – как параметры-значения или параметр-константы (передавать по значению).

Следствие. Как var можно описывать входные массивы-параметры с целью экономии памяти (чтоб не копировать значения всех элементов в локальную переменную).

^ Файловые переменные тоже следует передавать с var.

Достоинства процедур и функций:

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

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

Цикл сокращает код за счет
введения параметра i

Функция тоже сокращает код (в программе остается только ее вызов) и появляется возможность повторного использования за счет введения параметров nx и X (одна функция вместо двух)

Readln(A[1]);

Readln(A[2]);

Readln(A[3]);

Readln(A[4]);

Readln(A[5]);

Readln(A[6]);

Readln(A[7]);

Readln(A[8]);

Readln(A[9]);

Readln(A[10]);


For i:=1 to 10 do

Readln(A[i]);


Function ^ SumA:real;

Var i:byte; S: real;

Begin

S:=0;

For i:=1 to na do S:=S+A[i];

SumA:=S;

End;

Function SumB:real;

Var i:byte; S: real;

Begin

S:=0;

For i:=1 to nb do S:=S+B[i];

SumB:=S;

End;

Вызовы в программе:

SA:=SumA;

SB:=SumB;

Type

Massiv = array [1..10] of real;

Function Sum(const nx:byte;

var X: massiv):real;

Var i:byte; S: real;

Begin

S:=0;

For i:=1 to nx do S:=S+X[i];

Sum:=S;

End;
Вызовы в программе:

SA:=Sum(na, A);

SB:=Sum(nb, B);

2.3. Построение интерфейсов для параметров пользовательских типов.

Глобальные типы и константы
Отметим следующее важнейшее синтаксическое правило при описании процедур: в спецификациях формальных параметров принципиально указываются только имена типов:



. . . <список идентификаторов>:<имя типа> . . .

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

По определению, этот тип по отношению к процедуре будет глобальным.

К этому же типу должны принадлежать и фактические параметры в вызове процедуры.

Про определение типов можете прочитать в файле Types1.doc.
Часть 3. ^ ВНУТРЕННИЕ И ВНЕШНИЕ ПРОЦЕДУРЫ. МОДУЛИ
3.1. Внутренние процедуры

При описании внутренних процедур описания глобальных объектов размещаются в соответствующих разделах главной программы (program), описания процедур – в разделе процедур, а вызов процедур – в разделе операторов.
3.2. Строение модуля

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

1) заголовок модуля – unit. Каждый модуль должен начинаться со строки, объявляющей, что данный блок текста является модулем, и задающей имя этого модуля. Имя модуля всегда должно соответствовать имени его файла, и наоборот. Например, если имя файла unit1.pas, то имя модуля unit1.

2) описание интерфейса. Второй функциональной строкой в модуле должен быть оператор interface. Все описания, сделанные между этой строкой и оператором implementation данного модуля, доступны извне и может быть использовано другими программами и модулями. Именно в этой части описываются константы, типы, процедуры и функции, которые должны быть доступны основной программе или другим модулям. Для процедур и функций в этом разделе помещаются только их заголовки!

3) раздел реализации. Следует за описанием интерфейса и начинается с оператора implementation, расположенного в отдельной строке. В этом разделе помещают полные описания (заголовки + тела) процедур и функций, упомянутых в разделе interface данного модуля. Кроме того, здесь могут быть описаны константы, типы, переменные, процедуры и функции, которые будут доступны только в пределах этого модуля.

Структура типичного модуля:
Unit unit1; {файл, значит, unit1.pas }

Interface

uses <список используемых модулей>
{описания, доступные извне:}

const <описания констант>

type <описание типов>
<заголовки процедур и функций>

Implementation

<полные описания процедур и функций, заголовки которых размещены в разделе interface>

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

4) раздел инициализации. Начинается со слова initialization и содержит программный текст, необходимый для начала работы с этим модулем. Этот текст будет выполнен только один раз – перед началом выполнения основной программы.

5) раздел завершения. Начинается с ключевого слова finalization и располагается после раздела инициализации. Этот раздел содержит программный код, необходимый для завершения работы модуля. Этот код будет выполнен только один раз – при завершении работы программы.

Разделы инициализации и завершения подключаемых модулей выполняются в порядке, в котором эти модули открываются компилятором (т.е. первый модуль в описании uses основной программы, первый модуль в описании uses раздела interface этого модуля и т.д.).

Полная структура программного модуля:

Unit <имя модуля>;
interface

uses <список используемых модулей>

{описания, доступные извне:}

const <описания констант>

type <описание типов>

var <описание переменных>
<заголовки процедур и функций>
implementation

uses <список используемых модулей>
{описания, доступные внутри модуля:}

const <описания констант>

type <описание типов>

var <описание переменных>

<локальные для модуля процедуры и функции>
<полные описания процедур и функций, заголовки которых размещены в разделе interface>
initialization

<операторы инициализации>

finalization

<операторы завершения>

end.
Для подключения модулей используется раздел uses, в котором указывается список их имен через запятую. В модуле может быть два описания uses: одно в разделе interface, другое – в разделе implementation.

Иногда возникают ситуации, когда один модуль, например, unit1, использует другой модуль, например, unit2, который в свою очередь использует unit1. Наличие таких взаимных (циклических) ссылок говорит о просчетах, допущенных при проектировании структуры приложения. Эту проблему можно решить созданием третьего модуля, куда следует поместить необходимые для работы обоих модулей константы, типы, переменные, процедуры и функции. Если это невозможно, можно разместить в одном модуле ссылку на второй модуль в разделе interface, а во втором модуле – в разделе implementation.

3.2.1. Один модуль (unit) с процедурами.
При описании внешних процедур описания глобальных объектов размещаются в соответствующих разделах внутри раздела interface модуля (unit), там же размещаются заголовки процедур, а описания процедур – в разделе implementation модуля (unit), а вызовы процедур остаются в разделе операторов вызывающей программы. В главной программе (program) указывается имя используемого модуля в разделе uses.

Пример:

^ Программа без модуля

Программа
с подключенным модулем


Модуль с константами, типами, процедурами и функциями.

Program prog1;

{$APPTYPE CONSOLE}
^ Const

nmax=20;

Type

ma = array[1..nmax] of shortint;
Procedure psum(const n: byte;

var a: ma;

out S:integer);

Var i: byte;

Begin

S:=0;

For i:=1 to n do S:=S+a[i];

End;
Function fsum(const n: byte;

var a: ma): integer;

Var i: byte; S:integer;

Begin

S:=0;

For i:=1 to n do S:=S+A[i];

Fsum:=S

End;
^ Var a: ma; i: byte; sum:integer;
Begin

Write(‘n=’); readln(n);

Writeln(‘A(’,n,’):’);

For i:=1 to n do read(a[i]);

Readln;
Writeln(‘procedure psum’);

Psum(n, a, sum);

Writeln(‘sum = ’, sum);
Writeln(‘function fsum’);

Sum:=fsum(n, a);

Writeln(‘sum = ’, sum);
Write(‘Press Enter’); readln;

End.

Program prog2;

{$APPTYPE CONSOLE}

Uses unit1;

{все константы, типы, процедуры и

функции в отдельном модуле (unit)}


^ Var a: ma; i: byte; sum:integer;
Begin

Write(‘n=’); readln(n);

Writeln(‘A(’,n,’):’);

For i:=1 to n do read(a[i]);

Readln;
Writeln(‘procedure psum’);

Psum(n, a, sum);

Writeln(‘sum = ’, sum);
Writeln(‘function fsum’);

Sum:=fsum(n, a);

Writeln(‘sum = ’, sum);
Write(‘Press Enter’); readln;

End.

Unit unit1;

Interface
Const

nmax=20;

Type

ma = array[1..nmax] of shortint;
Procedure psum(const n: byte;

var a: ma;

out S:integer);

Function fsum(const n: byte;

var a: ma): integer;

Implementation
Procedure psum;

Var i: byte;

Begin

S:=0;

For i:=1 to n do S:=S+a[i];

End;
Function fsum;

Var i: byte; S:integer;

Begin

S:=0;

For i:=1 to n do S:=S+A[i];

Fsum:=S

End;
End.

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


3.2.2. Несколько модулей с процедурами.

При описании внешних процедур описания глобальных объектов размещаются в соответствующих разделах раздела interface отдельно выделенного модуля (unit), который содержит только эти описания и пустую реализационную часть implementation, описания процедур – в разделах implementation отдельных модулей (unit), их заголовки в разделах interface этих модулей (unit), вызовы процедур остаются, как и для внутренних процедур, в разделе операторов вызывающей программы (program). В программе и модулях указываются имена используемых модулей в разделе uses.

Пример:

^ Программа без модуля

Программа
с подключенными модулями


Модули с константами и типами, процедурами, функциями.

^ Program prog1;

{$APPTYPE CONSOLE}
Const

nmax=20;

Type

ma = array[1..nmax] of shortint;
Procedure psum(const n: byte;

var a: ma;

out S:integer);

Var i: byte;

Begin

S:=0;

For i:=1 to n do S:=S+a[i];

End;
Function fsum(const n: byte;

var a: ma): integer;

Var i: byte; S:integer;

Begin

S:=0;

For i:=1 to n do S:=S+A[i];

Fsum:=S

End;
^ Var a: ma; i: byte; sum:integer;
Begin

Write(‘n=’); readln(n);

Writeln(‘A(’,n,’):’);

For i:=1 to n do read(a[i]);

Readln;
Writeln(‘procedure psum’);

Psum(n, a, sum);

Writeln(‘sum = ’, sum);
Writeln(‘function fsum’);

Sum:=fsum(n, a);

Writeln(‘sum = ’, sum);
Write(‘Press Enter’); readln;

End.

Program prog3;

{$APPTYPE CONSOLE}

Uses unitTyp, unitProc, unitFun;

{все константы, типы, процедуры и

функции в отдельных модулях (unit)}

^ Var a: ma; i: byte; sum:integer;
Begin

Write(‘n=’); readln(n);

Writeln(‘A(’,n,’):’);

For i:=1 to n do read(a[i]);

Readln;
Writeln(‘procedure psum’);

Psum(n, a, sum);

Writeln(‘sum = ’, sum);
Writeln(‘function fsum’);

Sum:=fsum(n, a);

Writeln(‘sum = ’, sum);
Write(‘Press Enter’); readln;

End.

Unit unitTyp;

Interface
Const

nmax=20;

Type

ma = array[1..nmax] of shortint;
Implementation
End.


Unit unitProc;

Interface

Uses unitTyp;
Procedure psum(const n: byte;

var a: ma;

out S:integer);

Implementation
Procedure psum;

Var i: byte;

Begin

S:=0;

For i:=1 to n do S:=S+a[i];

End;
End.

Unit unitFun;

Interface

Uses unitTyp;
Function fsum(const n: byte;

var a: ma): integer;

Implementation
Function fsum;

Var i: byte; S:integer;

Begin

S:=0;

For i:=1 to n do S:=S+A[i];

Fsum:=S

End;
End.


Связи между модулями:


Создать модуль

File  New  Unit или

File  New  Other  New  Unit
Добавить/удалить существующий модуль в/из проект

Project  Add to Project

Project  Remove from Project
Вставить uses – вручную или

File  Use Unit…
Расширение файла модуля – PAS
Компиляция


EXE


DPR

PAS

DCU



http://grechkinapv.narod.ru

Похожие:

На лекциях процедуры, функции, модули уже прочитаны iconКонспект урока по информатике. Класс: 11. Тема: «Процедуры и функции»
В языках программирования вспомогательные алгоритмы называются подпрограммами. В паскале различаются две разновидности подпрограмм:...
На лекциях процедуры, функции, модули уже прочитаны iconРекурсия
В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции...
На лекциях процедуры, функции, модули уже прочитаны iconФункции в языке Си Определение и вызов функций
Мощность языка си во многом определяется легкостью и гибкостью в определении и использовании функций в си-программах. В отличие от...
На лекциях процедуры, функции, модули уже прочитаны iconПроцедуры и функции
Для их решения используйте как пройденный материал, так и материал ниже следующих занятий
На лекциях процедуры, функции, модули уже прочитаны iconПрактическое задание на поиск информации в глобальной компьютерной сети Интернет. Билет №2
Основы алгоритмического программирования(типы данных, операторы, функции, процедуры и т д.)
На лекциях процедуры, функции, модули уже прочитаны iconТема: Процедуры и функции
Подпрограмма – это повторяющаяся группа операторов, оформленная в виде самостоятельной программной единицы. Она записывается однократно,...
На лекциях процедуры, функции, модули уже прочитаны iconСписок вопросов к экзамену по курсу "Дискретная математика" мат мех.,...
Функции, сохраняющие константы. Самодвойственные функции. Монотонные функции. Линейные функции. Критерий полноты: теорема Поста
На лекциях процедуры, функции, модули уже прочитаны iconКраткий курс лекций "Основы программирования на языке Паскаль" |
Введение | Основные понятия | Основная структура программы | Цикл "ДО" | Цикл "С параметром" | Строковые операции | Определение типов...
На лекциях процедуры, функции, модули уже прочитаны iconПодпрограмма должна быть описана (объявлена) до того, как она будет...
В языке Паскаль существуют подпрограммы двух видов: процедуры и функции. Структура подпрограммы аналогична структуре всей программы....
На лекциях процедуры, функции, модули уже прочитаны iconГеометрические преобразования
Бласти определения функции ставит в соответствие некоторое число f(X) – значение функции f в точке Х. В геометрии рассматриваются...
Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
dopoln.ru
Главная страница