adfun.ru
 
BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Турбо С: руководство пользователя. Часть 1
Автор ""
Размер 993495 Байт
Страница 56 из 69
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

     цикла).  Это похоже на цикл repeat...until в Паскале с одним, од-          
     нако, различием: цикл repeat выполняется дотехпор, пока его усло-          
     вие не станет истинным;  а цикл do...while выполняется пока исти-          
     на.                                                                        
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
               Функции.                                                         
     -----------------------------------------------------------------          
                                                                                
          Вы изучили, как выполняются программы, содержащие условные и          
     итеративные операторы.  Сейчас настало время задать нам вопрос: а          
     что же делать,  если я вдруг захочу  выполнить  различные  группы          
     операторов,  использующие различные наборы данных или находящиеся          
     в различных частях программы? Ответ прост: объединяйте эти группы          
     операторов в подпрограммы,  к которым вы будете обращаться по не-          
     обходимости.                                                               
                                                                                
          В Си все подпрограммы рассматриваются как функции.  Теорети-          
     чески,  каждая функция возвращает некоторое значение. Практически          
     же,  значения,  возвращаемые большинством функций игнорируются  и          
     целое  семейство новых определений языка Си (включая проект стан-          
     дарта Си,  предложенный ANSI,  и Турбо Си) позволяют описывать  и          
     использовать в языке функции типа void,  которые никогда не возв-          
     ращают значений. Никогда.                                                  
                                                                                
          В Си вы можете и описывать и определять  функцию.  Когда  вы          
     описываете  функцию,  то даете всем остальным программам (включая          
     главный модудь main) информацию о том,  каким образом должно осу-          

                         - 461,462 -
                                                                                
     ществляться обращение к этой функции.  Когда вы определяете функ-          
     цию,  вы присваиваете ей имя,  по которому к ней  будет  осущест-          
     вляться  обращение,  и  указываете,  какие конкретно действия она          
     будет выполнять.  Внимательно изучите этот модифицированный вари-          
     ант RATIO.C:                                                               
                                                                                
          #include                                                     
          #include                                                     
                                                                                
          /* Описание функций */                                                
                                                                                
          void  get_parms(float *p1, float *p2);                                
          float get_ratio(float divident, float divisor);                       
          void  put_ratio (float quotient);                                     
                                                                                
          const float INFINITY = 3.4E+38;                                       
                                                                                
          /* Главная (main) функция: стартовая точка программы */               
                                                                                
          main()                                                                
          {                                                                     
           float a,b,ratio;                                                     
                                                                                
                                                                                
            do {                                                                
      get_parms(&a,&b);        /* ввод параметров */                            
      ratio = get_ratio(a,b);  /* вычисление частного */                        
      put_ratio(ratio);        /* печать выходного результата */                
      printf("Нажми 'q' для выхода или любую клавишу для"                       
             " продолжения\n");                                                 
         } while ( getch() != 'q');                                             
          }                                                                     
          /* конец main */                                                      
                                                                                
          /* Определение функций */                                             
                                                                                
          void get_parms(float *p1, float *p2)                                  
          {                                                                     
      printf("Введите два числа: ");                                            
      scanf("%f %f", p1, p2);                                                   
          }                                                                     
                                                                                
          float get_ratio(float divident, float divisor)                        
          {                                                                     
      if (divisor == 0.0)                                                       

                         - 463,464 -
                                                                                
          return (INFINITY);                                                    
      else                                                                      
          return(divident / divisor);                                           
          }                                                                     
                                                                                
          void put_ratio(float ratio)                                           
          {                                                                     
      if (ratio == INFINITY)                                                    
         printf("Внимание! Деление на ноль!\n");                                





else printf("Результат деления двух чисел: %f\n",ratio); } Анализ программы. ----------------------------------------------------------------- Первые три строки программы - описание функций; они вводятся для того, чтобы описать как тип функций, так и порядок следования их параметров с целью контроля ошибок. Следующая строка описывает константу с плавающей точкой, ко- торой присваивается имя INFINITY (в соответствии с принятым в Си соглашением имена констант состоят из заглавных букв). Эта конс- танта имеет очень большое положительное значение - близкое к наи- большему из допустимых для типа float, и используется как флаг возникновения ситуации деления на ноль (divide-by-zero). Заметьте, что несмотря на то, что константа описана здесь, она доступна внутри всех функций (включая главную функцию). Далее следует функция main (главная функция), которая явля- ется основным телом вашей программы. Каждая программа на Си обя- зательно содержит функцию с именем main. Когда ваша программа на- чинает выполняться, вызывается функция main и дальнейшее выполнение программы продолжается под ее управлением. Когда вы- полнение функции с именем main заканчивается, то завершается и вся программа, после чего управление передается интегрированной среде Турбо Си или, если вы выполняли программу непосредственно в DOS, то монитору DOS. Функция main может быть расположена в любом месте программы, наиболее часто - это первая функция программы. Это обусловлено - 465,466 - тем, что расположение функции main в начале программы облегчает ее чтение, описание прототипов функций и различных глобальных пе- ременных. Это, в свою очередь, позволяет облегчить поиск и доку- ментирование функций во всей программе. После main следует фактическое определение трех функций, прототипы которых были описаны выше: get_parms, get_ratio и put_ratio. Рассмотрим отдельно каждое из определений. Функция get_parms. ----------------- Функция get_parms не возвращает никакого значения, так как ее тип мы определили как void. Это было сделано в связи с тем, что функция служит лишь для чтения двух значений и сохранения их в некотором месте. В каком? Сейчас дадим некоторые пояснения. Итак, мы передаем в get_parms два параметра. Эти параметры суть адреса, по которым должны быть размещены считанные функцией зна- чения. Обратите внимание! Оба параметра не являются данными типа float, но являются указателями на переменные типа float. Другими словами, мы работаем непосредственно с адресами памяти по которым размещены переменные типа float. В соответствии с этим и организовано обращение к функции из main: когда мы вызываем get_parms из main, параметрами функции являются &a и &b (адреса), а не текущие значения a и b. Заметьте также, что вся информация, используемая при обращении к функции scanf, находится непосредственно внутри функции get_parms и перед параметрами p1 и p2 не стоят знаки операций адресации. Почему? Потому, что p1 и p2 уже сами по себе адреса; они являются адреса- ми переменных a и b. Функция get_ratio. ----------------- Функция get_ratio возвращает результат (типа float) обработ- ки двух значений типа float, передаваемых ей (divident и divisor). Возвращенный функцией результат зависит от того, равно значение переменной divisor нулю или нет. Если значение divisor равно нулю, get_ratio возвращает константу INFINITY. Если нет - - 467,468 - действительное значение частного двух чисел. Обратите внимание на вид оператора return. Функция put_ratio. ----------------- Функция put_ratio не возвращает значение, т.к. ее тип объяв- лен как void. Она имеет ровно один параметр - ratio, который ис- пользуется для того, чтобы определить, какое именно сообщение следует выводить на экран дисплея. Если ratio равно INFINITY, значит значение частного двух чисел считается неопределенным, в противном случае значение ratio выводится на экран дисплея как результат работы программы.


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 [56] 57 58 59 60 61 62 63 64 65 66 67 68 69


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

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

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.