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

Информатика 2-й семестр, ответы на билеты:

  1. Функции. Определение (описание) функции. Прототип (декларирование) функции. Параметры функции. Передача аргументов в функцию.

Функции.

Философия разработки программ в среде языка C заключается в использовании функций в качестве строительных блоков. Функция – это самостоятельный фрагмент исходного текста программы, предназначенный для конкретной задачи. Функции избавляют от повторного программирования, если в программе несколько раз нужно выполнять определенную задачу, соответствующую функцию надо создать лишь один раз, затем эта функция может использоваться во всех необходимых случаях в данной, либо любой другой программе. Наличие функций придает программе модульную структуру и облегчает чтение кода и внесение в него изменений или исправлений. Также как и математические функции, например y(x)=x2, функции в языке C принимают некоторые значения в качестве входных данных (x) и возвращают результат (y).

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

<тип возвращаемого значения> <имя функции> ( [список аргументов] );

Пример: int sum (int a, int b); /*объявление функции вычисления суммы a+b*/

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

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

Список аргументов в объявлении функции описывает входные данные и их типы. Список аргументов состоит из пар вида:

<Тип аргумента> <имя аргумента>

перечисленных через запятую.

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

Пример: int sum (int , int ); /*объявление функции вычисления суммы a+b*/

Определение функции выглядит следующим образом:

<тип возвращаемого значения> <имя функции> ( [список аргументов] )

{

[тело функции]

}

Пример:

int sum (int a, int b)

{

int sum;

sum = a+b;

return sum;

}

или

int sum (int a, int b)

{

return a+b;

}

Тело функции составляют операторы языка C.

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

int result;

int a = 5;

int b = 2;

result = sum (a,b);

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

Например, следующая программа:

int f1(int x);

void main()

{

int i=5;

printf(“%d”,f1(i));

}

int f1(int x)

{

return x*5;

}

эквивалентна программе:

int f1(int x)

{

return x*5;

}

void main()

{

int i=5;

printf(“%d”,f1(i));

}

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

Формальными называются аргументы, используемые в описании функции.

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

Например, в предыдущей программе значения формального аргумента i передаётся в функцию f1, обрабатывается там и полученное значение возвращается с помощью оператора return. Формальный же аргумент x всего лишь показывает путь обработки значений фактических аргументов.

Говоря об использовании функций необходимо упомянуть 2 основных правила:

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

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

Например, в программе:

int f1(int x)

{

x=x*6;

return x;

}

void main()

{

int a, i=5;

a=f1(i);

printf(“%d”,a);

}

в строке a=f1(i); произойдёт вызов функции f1(x) и управление перейдёт внутрь фунции. Внутри неё переданное значение 5 будет преобразовано в 5*6, т.е. 30 и это значение будет возвращено с помощью оператора return. На этом выполнение функции будет закончено и будут исполняться операторы, следующие за вызовом функции,т.е. оператор printf(…). Заметим, что хотя значение 5, переданное в функцию f1() и было модифицировано внутри неё, значение переменной i в функции main() осталось прежним, т.е. равным 5, т.к. функция f1() оперировала с копией значения переданного ей аргумента.

  1. Функции с переменным числом параметров. Передача и получение списка параметров (пример).