6.17.Kitabxana funksiyalarından istifadə edilməsi
Kitabxana funksiyaları ayrıca fayllarda saxlanılan köməkçi funksiyalardır. Proqramçı öz xüsusi kitabxana funksiyalarını da yarada bilər. Standart funksiyalardan istifadə etmək üçün uyğun kitabxanadan başlıq fayllarını proqrama qoşmaq lazımdır. Bu prosessor önü vasitə olan #include direktivi vasitəsi ilə yerinə yetirilir. Bu direktivdə başlıq faylının adı yazılır. Məsələ,
#include və ya
#include
Bu fayllarda kitabxana funksiyalarının prototipləri yerləşir.
Translyasiya mərhələsinin əvvəlində funksiyanın prototipləri əsas funksiyadan əvvəl qoyulur və bundan sonra kompilyator funksiyalara müraciətin düzgünlüyünə nəzarət edə bilər. Funksiyaları realizasiya edən proqramın özü obyekt kod şəklində olur və əsas proqrama əlaqələrin redaktə olunması (kompanovka mərhələsində) mərhələsində qoşulur.
Təpə nöqtələrinin koordinatları verilən qabarıq dördbucaqlının sahəsinin hesablanması proqramına baxaq.
Dördbucaqlının təpə nöqtələrinin koordatlarını (x1,y1), (x2,y2), (x3,y3), (x4,y4)-işarə edək. Dördbucaqlının sahəsini iki üçbucağın sahələrinin cəmi kimi hesablamaq olar. Hər üçbucağın sahəsinin hesablanmasına Heron düsturunu tətbiq edək. Heron düsturunu tətbiq etmək üçün üçbucağın tərəflərinin uzunluğunu hesablamaq lazımdır 1-ci və 2-ci təpələri birləşdirən tərəf
L =
düsturu ilə hesablanır. Oxşar olaraq digər tərəflərin uzunluqları hesablanır.
Beləliklə, əsas məsələnin həlli olan dördbucaqlının sahəsinin hesablanması üçbucaqların sahələrinin hesablanması köməkçi məsələsinə və bu da öz növbəsində uc nöqtələrinin koordinatlarına görə parçaların uzunluqlarının hesablanması köməkçi məsələsinə gətirilir. Məsələnin proqramı aşağıdaki kimi olar:
//Qabarıq dördbucaqlının sahəsi
#include
using namespace std;
#include
#include
typedef double D; //double tipinin adlandırılması
D Line(D,D,D,D); // Line funksiyasının prototipi
D Heron(D,D,D,D,D,D); //Heron funksiyasının prototipi
//əsas funksiya
int main( )
{D x1,y1, x2,y2, x3,y3, x4,y4, S1234;
clrcr ();
cout <<”x1=”; cin>>x1; cout<<”y1=”;cin>>y1;
cout<<”x2=”; cin>>x2; cout<<”y2=”;cin>>y2;
cout<<”x3=”; cin>>x3; cout<<”y3=”;cin>>y3;
cout<<”x4=”; cin>>y4; cout<<”y4=”; cin>>y4;
S1234=Heron(x1,y1, x2,y2, x3,y3)+
Heron(x1,y1, x3,y3, x4,y4);
Cout<<”Dördbucaqlının sahəsi=”<
}
//Line funksiyasının təyini
D Line (D a, D b, D c, D d)
{return sqrt ((a-c)*(a-c)+(b-d)*(b-d));}
//Heron funksiyasının təyini
D Heron (D a1, D a2, D b1, D b2, D c1, D c2)
{D p, ab, bc, ca;
ab=Line(a1, a2, b1, b2); bc=Line(b1, b2, c1, c2);
ca=Line(c1, c2, a1, a2); p=(ab+bc+ca)/2;
return sqrt (p*(p-ab)*(p-bc)*(p-ca));
}
Bu proqramda üç standart kitabxanadan-iostream, math.n, conio.h.-başlıq fayllarından istifadə edilmişdir. Bunlardan ikisi ilə artıq biz tanışıq.
Üçüncüsü (conio.h)-isə mətn rijemində ekrana çıxışı idarə etmək üçündür (Pascal dilində crt-moduluna oxşardır). Proqramda bu kitabxanadan clrscr( )-ekranı təmizləyən funksiyasından istifadə edilmişdir.
Göstərilən proqramda yeni bir element də vardır. Bu
typedef double D;-sətridir.
typedef işçi sözü tipin spesfikatorudur və tipi işarə etmək üçün tipin adının sinonimini təyin edir. Nəticədə, baxılan proqramda double sözü əvəzinə bir dənə D-hərfi yazılır. Göstərilən təsvir qlobaldır və həm əsas funksiyada, həm də köməkçi funksiyalarda təsir oblastlarına malikdir.
Bu proqramda bir cəhətə də fikir verək. Heron funksiyasında Line funksiyasına müraciət edlir. Əsas funksiyadan isə Heron funksiyasında müraciət edilir. Kompilyator üçün vacibdir ki, müraciət edən funksiyadan əvvəl ya müraciət edilən proqramın prototipi və ya özü təyin edilsin. Ona görə də proqramda Line funksiyasının prototipini götürsək səhv alınmaz. Lakin Line və Heron funksiyalarının təyin olduğu yerləri dəyişsək kompilyator səhv haqqında məlumat verər.
Dostları ilə paylaş: |