Вход/Регистрация
Язык Си - руководство для начинающих
вернуться

Д. МАРТИН

Шрифт:

int exp;

{

 double answer;

if(exp > 0)

{

for(answer = 1.0; exp > 0; exp --) answer * = base;

return(answer);

}

 else if(base != 0)

{

 for(answer = 1.0; exp < 0; exp++ ) answer /= base;

return(answer);

}

 else /* base = 0 иеxp <= 0 */

{

 printf(" Нельзя возводить 0 в %d стeпень!\n", exp);

return(0);

 }

}

Необходимо отметить здесь несколько моментов.

Первый: самым главным является то, что мы должны описать тип функции! Переменная answer имеет тип double, следовательно, сама функция power тоже должна быть типа double, так как ей присваивается величина, возвращаемая оператором return. Почему, спросите вы, мы не описывали тип функции раньше? Дело в том, что по умолчанию в языке Си функция имеет тип int (для большинства функций это так), если не указано что-то иное.

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

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

Мы можем воспользоваться тем же драйвером при условии, что тип функции power там тоже описан.

/* проверка возведения в степень*/

main

{

double x;

double power; /* это пример oписания функции */

x = power(2.0, 3);

printf(" %.0f \n", x);x = power(-3.0, 3);

printf(" %.0f\n" , x);x = power(4.0, -2);

printf(" %.4f\n", x);x = power(5.0, 10);

print f ("%.0f \n", x);

}

На этот раз результаты работы программы выглядят вполне удовлетворительно.

8

– 27

0.0625

9765625

Данный пример побуждает нас ввести следующий короткий раздел.

ОПИСАНИЕ ТИПОВ ФУНКЦИЙ

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

1. Описать тип функции в ее определении:

char pun(ch, n) /* функция возвращает символ */

int n;

char ch; 

float raft(num) /* функция возвращает величину типа float */

int num;

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

main

{

char rch, pun;

float raft;

}

Запомните! Если функция возвращает величину не типа int, указывайте тип функции там, где она определяется, и там, где она используется.

Резюме: функции

1. Форма записи

Типичное определение функции имеет следующий вид:

имя (список аргументов)

описание аргументов

тело функции

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

Пример:

diff(x, у) /* имя функции и список аргументов */

ini x, у; /* описание аргументов */

  • Читать дальше
  • 1
  • ...
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: