Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Новости ИТ Программы Книги Games   Обои   Экспорт RSS E-Books
 
Поиск по сайту

TOP-10 программ
Symantec Norton Ghost 9.0
Partition Magic 8.0.2 Pro
Xilisoft 3GP Video Converter v3.1.7.0616b
Norton AntiVirus 2005
Xilisoft 3GP Video Converter v2.1.52.831b
Антивирус Касперского Personal 5.0.303 beta 2
RAR Password Cracker 4.12
ABBYY PDF Transformer v1.00.820
MP3 To Ringtone Gold v3.02
Windows Movie Maker 2.6
 
Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
 
 

   Программирование -> C / C++ -> Книга по Си


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

        Определение функции состоит из двух частей: заголовка и тела. Заголовок определяет имя функции, ее тип и формальные параметры, тело определяет действия над данными, выполняемые функцией. Возращающее функцией значение передается в вызывающюю программу опрератором return   (выражение). Значение "выражения" и есть результат функции (возращаемого значения). Если в нашей программе функция физически следует за вызывающей ее функцией main, то надо в последней объявить функцию внешней с помощью описателя extern: extern int fun(); или еще проще int fun();. В противном случае при компиляции будет выдана ошибка. Всякая функция имеет вид:     

[тип] имя([список формальных параметров])
      описания формальных параметров;
{
описания;
операторы;
}

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

  Рассмотрим пример программы возведения числа в степень. Для этого составим функцию power(t,n); В нашей реализации функция power предшествует головной программе, поэтому она предварительно не объявлена. Описание формальных параметров функции происходит в заголовке (int t,n;) Оператор int p=1;  в теле функции определяет переменную p целого типа и присваивает ей начальное значение равное 1. Выражение int p=1; в точности эквиалентно   последовательности операторов int p; p=1; Обращение к функции задает один из аргументов стнадартной функции printf в программе main. Выражение power(t,n) предписывает вызов функции. Когда программа main достигает этой точки, то все управление передается функции power. Операторы , содержащиеся в теле функции power фактически оперируютя данными. Когда достигается оператор return , осуществляется переход в ту точку программы main, из которой мы пришли в power. Значение, вычисляемое функцией power, передается в головную программу с помощью оператора return(p). В скобках в общем случае может быть любое значение.

                Прмер 2.0

/*Функция y=t**n*/
      int power(t,n);
      int t,n;
      {
int p=1;
         while(n!=0)
   {
if(n%2 !=0) p=p*t;
n=n/2;
t=t*t;
   }
return(p);
}
    /*Возведение в степень- головная программа*/
   #include <stdio.h>
   main()
{
     int a,n;
     printf("Введи a,n \n");
     scanf("%d %d",&a,&n);
     printf("%d в степени %d = %d",a,n
power(a,n));
}

      Рекурсия.

               В языке Си можно использовать рекурсивно, т.е. функция может вызывать сама себя. Простейший пример 2.1, где функция main вызывает сама себя остановить которую можно только с помощью CTRL+C  - ^С. При рекурсивном обращении к функции - создается новый экземпляр данных.

                Пример 2.1

#include <stdio.h>
main()
{
printf("проверка рекурсии \n");
main();
}

Следущий пример 2.2 использует рекурсию для вычисления k! . При первом вызове fact(i) , если не равно 1, функция порождает выражение i*fact(i-1); в свою очередь, вызов fact(i-1) производит (i-1)*fact(i-2), что вместе с ранее полученным результатом дает i*(i-1)*fact(i-2). Рекурсия закончистся, как только следующий вызов функции получит аргумент, равный еденице. Нетрудно сообразить, что в конечном счете мы получим требуемое произведение.

Прмер 2.2

#include <stdio.h>
int fact(k);
int k;
{
  if(k==1)
return(1);
  else
    return(k*fact(k-1));

}
main()
{
int i=1;
    printf("проверка рекурсии\n");
    while(i<8)
              {
printf("%d!= %d\n",i, fact(i));
i=i+1;
}
}

< Дальше >

 
Популярные книги

Windows XP для всех

Подробнее

Дизайн помещений и интерьеров в 3ds max 7 (+CD)

Подробнее

Практикум по программированию на языке Си (+CD)

Подробнее


 
Новости ИТ
09.01.2009  Exeda -- корпоративный цифровой ассистент с Android Linux
09.01.2009  Правительство Вьетнама массово переходит на Open Source
09.01.2009  Windows 7 build 7000
09.01.2009  Silicon Power представила скоростную SDHC
09.01.2009  CES 2009: RealView 360 3D Desktop Scanner - настольный 3D-сканер, один из первых в мире
09.01.2009  W90 - очень быстрый мультимедийный ноутбук ASUS «Ultimate-уровня»
09.01.2009  CES 2009: SanDisk представила семейство G3 - самых быстрых SSD-накопителей на флэш-памяти MLC
09.01.2009  ZOTAC GeForce GTX 285 и GTX 285 AMP! Edition - 3D-ускорители для геймеров на новом GPU NVIDIA
09.01.2009  Net Applications: в декабре доли Firefox и Chrome росли за счет IE
09.01.2009  Imation говорит о «новом классе» SSD и первом в отрасли полном наборе для модернизации на основе SSD
09.01.2009  Маршрутизатор D-Link Xtreme N DIR-685 может играть роль NAS, сервера печати... и цифровой фоторамки
09.01.2009  Очень тонкая фотокамера Pentax Optio P70 имеет разрешение 12 Мп
09.01.2009  pureSilicon 1TB Nitro - первый в мире 2,5-дюймовый SSD объемом 1 ТБ
09.01.2009  Дебютировали мобильные GPU ATI Mobility Radeon HD 4000
09.01.2009  NVIDIA GeForce GTX 285 и GTX 295 представлены официально
09.01.2009  Scythe выпустила процессорный кулер Mugen 2
09.01.2009  Optio E70 - новая компактная камера Pentax начального уровня
09.01.2009  Новый iPhone получит четырехъядерный процессор?
08.01.2009  FreeBSD 7.1-RELEASE -- обновление операционной системы
08.01.2009  Появилась сборка Om 2008.12 для Neo FreeRunner от bytestore
 
Полезно

 
Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100