Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_2_изд_испр.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

7.3.1. Определения процедур

C

Формат функции:

[<тип>] <имя>([<описания_параметров>])<блок>

В блоке обязательно присутствие инструкции вида return <выражение>, значение которого возвращается в точку вызова. Его обычно называют возвращаемым значением функции. <тип> в заголовке функции указывает тип возвращаемого значения. Если тип значения в инструкции return не совпадает с типом в заголовке, то производится автоматическое преобразование его к типу заголовка. Если <тип> отсутствует, то транслятор подставляет int.

Примеры.

float MinFun(float x[ ], int n){

int i, j;

float MinValue;

................

return 2*MinValue+5;

}

Определение функции: Вызов:

double Max(double a, double b){ y=Max(cos(x), sin(x));

double y;

if(a>b){

y=a;

}else{

y=b;

}

return y;

}

Basic

Формат функции:

function <имя_функции>([<описания_параметров>]) as <тип>

инструкции

<имя_функции>=<выражение>

end function

Возвращаемое значение непосредственно присваивается имени функции.

Примеры.

function Minfun(x( ) as single, n as integer) as single

dim i as integer, j as integer, MinValue as single, y as single

................................................................................

MinValue=2*y+5

end function

Определение функции Вызов

function Max(a as double, b as double) as double y=Max(cos(x), sin(x));

dim y as double;

if a>b then

y=a

else

y=b

end if

Max=y

end function

C

По понятиям языка C подпрограмма – это функция, не возвращающая значения. Для указания типа возвращаемого значения в этом случае используется ключевое слово void (пустой, не возвращающий значение).

Пример.

void fun(void){

………….

[return;]

........……

}

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

Пример(подпрограмма). Вызов:

/* Умножение матрицы на вектор */ Matrix(a, b, c, m, n);

void Matrix(double p[10][10], /* Исходная матрица */

double q[10], /* Исходный вектор */

double s[10], /* Вектор-результат */

int l, /* Число строк */

int k){ /* Число столбцов */

int i, j;

for(i=0; i<l; i++){

for(s[ i ]=j=0; j<k; j++){

s[ i ]+=p[ i ][ j ]*q[ j ];

}

}

} /* End Matrix */

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

void main([<параметры>])

<блок>

Параметры используются редко, поэтому обычно имеем:

void main(void){

............

}

Basic

Формат подпрограммы:

sub <имя_подпрограммы>([<описания_параметров>])

..................................

exit sub

..................................

end sub

Для возвращения в точку вызова используется инструкция exit sub. Если возврат производится в конце процедуры, то употребление инструкции exit sub не нужно.

Пример (подпрограмма). Вызов:

' Умножение матрицы на вектор call Matrix(a, b, c, m, n);

sub Matrix(p(9,9) as double, _

q(9) as double, _

s(9) as double, _

l as integer, _

k as integer)

dim i as integer, j as integer

for i=0 to l-1

s( i )=0

for j=0 to k-1

s( i )=s( i )+p( i )( j )*q( j )

next j

next i

end sub

В языке Basic операционная система передает управление либо объекту программы, называемому формой, либо главной процедуре Sub Main.