Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник 357.docx
Скачиваний:
27
Добавлен:
30.04.2022
Размер:
1.75 Mб
Скачать

9.2. Правила написания функций

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

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

Правило 2. Функции должны иметь небольшие размеры (не более 100 операторов языка программирования высокого уровня) и, желательно, целиком помещаться на экране.

При росте размера функции следует разбивать ее на более мелкие функции — составные части.

Правило 3. Функция должна решать только одну задачу. Иначе говоря, все функции должны иметь четко выраженное функциональное назначение. Если нельзя кратко описать, что делает функция, следует пересмотреть структуру программы.

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

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

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

9.3. Примеры написания и использования функций

Пример 1. Функция вычисления котангенса

(реализация до функции main())

double cotan( double x )

Объявление функции cotan с типом возвращаемого значения double и формальным параметром х типа double

{

Начало функции

double ctg;

Объявление текущей переменной для результата

ctg = 1.0 / tan(x);

Вычисление тангенса с использованием вызова стандартной функции tan(x) и присваивания результата переменной ctg

return ctg;

Возращение вычисленного значения

}

Конец функции

Вариант кода без использования дополнительных переменных

double cotan( double x )

{

return 1.0 / tan(x);

}

Пример 2. Вычисление биномиальных коэффициентов

#include<stdio.h>

Описание функции:

Int fact(int k) //вычисление факториала

{

int i, j;

for(i=1, j=1; i<=k; i++) j*=i;

return j;

}// конец определения функции

/* Вычисление биномиального коэффициента

void main()

{

int n, m, nmc, nm;

while(1)

{

printf (“Введите n: ”);

scanf(“%d”, &n);

printf (“Введите m:”);

scanf(“%d”, &m);

if (m>=n && n>=m && n<10) break;

printf (“Должно быть 0<=m<=n”);

}

nm=n-m;

nmc=fact(n)/fact(m)/fact(nm);//вызов функции

printf (“\n Биномиальный коэффициент с (%d из %d) =%d”, m, n, nmc);

}// конец программы

Вариант реализации факториала через рекурсивную функцию

long faсt(int n)

{

if(n<0) return 0;

return ( (n==0) ? 1 : n*faсt(n-1) );

}

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