Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
bILYeT_NOV_Ye.docx
Скачиваний:
71
Добавлен:
09.06.2015
Размер:
658.19 Кб
Скачать

24…Понятие подпрограммы, назначение подпрограмм, использование подпрограмм.

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

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

Описать подпрограмму –

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

и записать последовательность операторов, реализующих вспомогательный алгоритм.

Достоинства использования подпрограмм

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

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

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

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

25…Подпрограммы в С/С++, функции, возвращающие значение и не возвращающие значение, примеры.

В С/С++ существует один тип подпрограмм – функции. Но функции здесь реализуются так, что они могут выдавать один результат и тогда обращением к ним является указатель функции (имя функции, за которым в ( ) через запятую фактические параметры). В этом случае указатель функции – операнд в выражении или элемент списка вывода.

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

C=n!*(m!*(n-m)!)

# include <stdio.h>

void pfakt (int k,int *f) {

int j; *f=1;

for (j=2; j<=k; j++)

*f=*f*j;

return ;

}

void main (void) {

int n,m,c;

int f1, f2, f3;

print (“\n введите два исходных целых числа”);

scanf (“%d%d”, &n, &m);

pfact (n, &f1);

pfact (n, &f2);

pfact (n-m, &f3);

c=f1/f2/f3;

print (“\nc=%d”, c);

}

26…Передача параметров в подпрограмму, параметры входные и выходные, параметры , передаваемые по значению и по адресу.

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

Передача параметров – подстановка фактических параметров вместо формальных при обращении к подпрограмме.

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

Существует 2 способа передачи параметров – по значению и по адресу.

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

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

В С/С++ параметры по адресу могут передаваться с помощью указателей и с помощью ссылок.

Формальные параметры делятся на входные и выходные.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]