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

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

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

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

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

Обратиться к подпрограмме - значит указать её имя с конкретными значениями параметров в данной точке вызывающей(основной) программы.

Параметры указанные в описании называются формальными

Указанные в обращении называются фактическими.

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

1) по значению.

2) По адресу.

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

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

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

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

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

Фактические параметры должны соответствовать формальным по количеству, типу и порядку следования потому что вычисл. зн. факт пар-тов и замещ пар-тов... ????????????

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

Использование подпрограммы делает структуру программы более понятной.

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

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

Подпрограммы позволяют повторно использовать ранее разрешенные подпрограммы ?????

29 билет. Подпрограммы в C/С++, функции возвращающие значение и не возвращающие значение, примеры.

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

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

Задача:

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,l;

int f1,f2,f3

int f1,f2,f3 // n!,m!,(n-m)!

printf ("\n введите два исходных целых числа");

scanf ("%d%d",&n,&m);

pfakt (n,&f1);

pfakt (m;&f2);

pfakt (n-m,&f3);

C= f1/f2/f3; printf ("\n c=%d",c);

}

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

Пример с помощью функции возвращающей значение.

#include <stdio.h>

int fakt (int k) {

int j,f=1;

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

return f;

}

void name (void) {

int n,m,l;

printf ("\n введите 2 целых числа");

scanf ("%d%d,&n,&m);

c=fakt(n)/fakt(m)/fakt(n-m);

printf ("\n c=%d",c);

}