Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Использование библиотечных функций



Библиотечными назы­ваются вспомогательные функции, хранящиеся в отдельных фай­лах. Стандартные библиотеки входят в стандартный комплект си­стемы программирования на Си/Си++. Кроме того, программист может создавать собственные библиотеки функций. Ранее уже го­ворилось о том, что для использования стандартных функций не­обходимо подключать к программе заголовочные файлы соответ­ствующих библиотек. Делается это с помощью директивы претранслятора #include с указанием имени заголовочного файла. Например, #include <stdio.h>. Все заголовочные файлы имеют расширение h (от английского header). Теперь должно быть понят­но, что эти файлы содержат прототипы функций библиотеки. На стадии претрансляции происходит подстановка прототипов перед основной функцией, после чего компилятор в состоянии контро­лировать правильность обращения к функциям. Сами программы, реализующие функции, хранятся в форме объектного кода и под­ключаются к основной программе на стадии редактирования свя­зей (при работе компоновщика).

Рассмотрим программу решения следующей задачи: зная де­картовы координаты вершин выпуклого четырехугольника, вы­числить его площадь.

Математическое решение этой задачи следующее. Обозначим координаты вершин четырехугольника так: (x1, y1), (x2, y2), (xЗ, y3), (x4, y4). Площадь четырехугольника можно вычислить как сумму площадей двух треугольников. В свою очередь, площадь каж­дого треугольника вычисляется по формуле Герона. Для применения формулы Герона нужно найти длины сторон. Длина стороны меж­ду первой и второй вершинами вы­числяется по формуле:

L12 = (x1-x2)2 + (y1-y2)2

Рис – 2

Аналогично вычисляются дли­ны других отрезков.

Таким образом, для решения основной задачи - вычисления площади четырехугольника - тре­буется вспомогательный алгоритм вычисления площади треугольни­ка, для которого, в свою очередь,

необходим вспомогательный алгоритм вычисления длины отрезка по координатам концов. Ниже приведена программа решения поставленной задачи.

Пример 11:

//Площадь выпуклого четырехугольника

#include <iostream.h>

#include <math.h>

#include <conio.h>

typedef double D; //Переименование типа double

D Line (D, D, D, D); //Прототип функции Line

D Geron (D, D, D, D, D, D); // Прототип функции Geron

//Основная функция

void main ()

{ D х1,у1,х2,у2,х3,у3,х4,у4,31234;

clrscr ();

cout<<"х1="; cin>>х1; cout<<"у1="; cin>>у1;

cout<<"х2="; cin>>х2; cout<<"у2="; cin>>у2;

cout<<"х3="; cin>>х3; cout<<"у3="; cin>>у3;

cout<<"х4="; cin>>х4; cout<<"у4="; cin>>у4;

31234=Geron(х1,у1,х2,у2,хЗ,уЗ) +Geron(х1,у1,х3,у3,х4,у4);

cout<<"Площадь четырехугольника="<<S1234;

}

//Определение функции Line

D Line (D а, D b, D с,D d)

{return sqrt ((а-с) * (а-с) + (b-d) * (b-d)); }

//Определение функции Geron

D Geron (D а1, D а2, D b1, D b2, D с1, D с2)

{D р,аb,bс,са;

аb=Line (а1,а2,b1,b2); bс=b1пе(b1,b2,с1,с2);

ca=Line (с1,с2,а1,а2);

р= (аb+bс+са) /2;

return sqrt (р*(р—аb)*(р—bс)*(р—са));

}

В этой программе используются функции из трех стандартных библиотек с заголовочными файлами iostream.h, math.h и conio.h. С первыми двумя мы уже встречались раньше. Третья биб­лиотека (файл conio.h) содержит функции, предназначенные для управления

выводом на экран в символьном режиме. Она является аналогом модуля CRT в Турбо Паскале. В программе из этой биб­лиотеки используется функция clrscr () - очистка экрана.

Еще одним новым элементом в приведенной программе явля­ется строка typedef double D;

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

Обратим внимание на еще одно обстоятельство. В функции Geron имеются обращения к функции Line, а в основной функции - обращение только к функции Geron. Для компилятора важно, чтобы перед вызывающей функцией присутствовал или прототип, или оп­ределение вызываемой функции. Поэтому если из данной програм­мы убрать прототип функции Line, то ошибки не будет. Но если одновременно с этим поменять местами определения функций Line и Geron, то компилятор выдаст сообщение об ошибке.





Дата публикования: 2014-11-02; Прочитано: 1119 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...