Ararım seni her yerde...

Temel Kütüphane Fonksiyonları

Giriş

Bu kısımda, C Programlama Dili'nde sık kullanılan ve diğer bölümlerde yararlanacağımız kütüphane fonksiyonlarının bazıları işlenecektir. Kütüphane fonksiyonu C dilinde önceden tanımlanmış hazır fonksiyonlarıdır. C dilinde birçok iş bu fonksiyonlarla yapılmaktadır.

Her kütüphane fonksiyonu bir başlık dosyasında tanımlanmıştır. Bu yüzden bir kütüphane fonksiyonunu kullanmadan önce, onun hangi başlık dosyası ile kullanılması gerektiğini bilmelisiniz.


5.1 Matematiksel Fonksiyonlar (math.h)

Matematiksel fonksiyonların hemen hemen hepsi double veri tipindedir. Bu fonksiyonlardan biri program içinde kullanılacaksa math.h başlık dosyası program içine eklenmelidir. En çok kullanılan matematiksel fonksiyonlar Tablo 5.1'de listelenmiştir.

Tablo 5.1: math.h kütüphanesinde tanımlı bazı fonksiyonlar
Fonksiyon Bildirimi Açıklama Örnek Sonuç
int abs(int x); x tamsayısının mutlak değerini hesaplar abs(-4) 4
double fabs(double x); x gerçel sayısının mutlak değerini hesaplar fabs(-4.0) 4.000000
int floor(double x); x'e (x'den büyük olmayan) en yakın tamsayıyı gönderir abs(-0.5) -1
int ceil(double x); x'e (x'den küçük olmayan) en yakın tamsayıyı gönderir ceil(-0.5) 0
double sqrt(double x); pozitif x sayısının karekökünü hesaplar sqrt(4.0) 2.000000
double pow(double x, double y); xy değerini hesaplar pow(2., 3.) 8.000000
double log(double x); pozitif x sayısının doğal logaritmasını hesaplar, ln(x) log(4.0) 1.386294
double log10(double x); pozitif x sayısının 10 tabanındaki logaritmasını hesaplar log10(4.0) 0.602060
double sin(double x); radyan cinsinden girilien x sayısının sinüs değerini hesaplar sin(3.14) 0.001593
double cos(double x); radyan cinsinden girilien x sayısının kosinüs değerini hesaplar cos(3.14) -0.999999
double tan(double x); radyan cinsinden girilien x sayısının tanjant değerini hesaplar tan(3.14) -0.001593
double asin(double x); sinüs değeri x olan açıyı gönderir. Açı -pi/2 ile pi/2 arasındadır. asin(0.5) 0.523599
double acos(double x); cosinüs değeri x olan açıyı gönderir. Açı -pi/2 ile pi/2 arasındadır. acos(0.5) 1.047198
double atan(double x); tanjant değeri x olan açıyı gönderir. Açı -pi/2 ile pi/2 arasındadır. atan(0.5) 0.463648


NOT
Bir programda math.h kütüphanesi kullanılacakca, GCC derleyicisi -lm seçeneği ile birlikte kullanılmalıdır.
Örneğin test.c içinde math.h'i kullanıyorsa derleme: gcc -lm test.c -o test
şeklinde yapılmalıdır. Aksi halde bir hata mesajı ile karşılaşılır.


Trigonometrik (sin, cos, tan) fonksiyonlar kendisine parametre olarak gelen değeri radyan olarak kabul eder ve sonucu hesaplar. Eğer açılar derece cinsinden hesaplanması gerekiyorsa şu dönüşüm kullanılanılabilir:
   radyan = (3.141593/180.0) * derece; 

Program 5.1: sin(), cos(), and tan() fonksiyonlarının kullanımı
01: 
02: 
03: 
04: 
05: 
06: 
07: 
08: 
09: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
/* 05prg01.c
   30 dercelik açının sinüs, kosinüs, tanjant ve kotanjant değerleri */

#include <stdio.h>
#include <math.h>

#define PI      3.141593

int main()
{
   double aci = 30.0;

   aci *= PI/180.0;    /* radyana çevir */

   puts("30 derecenin");
   printf("sinusu    : %lf\n", sin(aci));
   printf("kosinusu  : %lf\n", cos(aci));
   printf("tanjanti  : %lf\n", tan(aci));
   printf("kotanjanti: %lf\n", 1.0/tan(aci));

 return 0;
}

ÇIKTI

30 derecenin
sinusu    : 0.500000
kosinusu  : 0.866025
tanjanti  : 0.577350
kotanjanti: 1.732051



5.2 Standart Kütüphane Fonksiyonları (stdlib.h)
Standart kütüphanede, programı sonlandıran, dinamik bellek yönetiminde kullanılan veya rastgele sayı üretme vb. işlevleri yerine getiren bir çok fonksiyon mevcuttur. Bu kısımda, bunlardan bir kaçı Tablo 5.2'de listelenmiştir.
Tablo 5.2: stdlib.h kütüphanesinde tanımlı bazı fonksiyonlar
Fonksiyon Bildirimi Açıklama Örnek Sonuç
int atoi(const char *s); Bir karakter topluluğunu tamsayıya çevirir atoi("-12345") -12345
long atol(const char *s); Bir karakter topluluğunu uzun tamsayıya çevirir atol("1234567890") 1234567890
double atof(const char *s); Bir karakter topluluğunu gercel sayıya çevirir atof("-123.546") -123.456
void exit(int durum); Programı sonlandırarak kontrolü işletim sistemine geri verir. exit(1) -
int rand(void); 0 ile RAND_MAX arasında rastgele sayı üretir.
RAND_MAX, stdlib.h içinde tanımlanmış bir sembolik sabittir
rand() 50485132
max(a,b) stdlib.h'de tanımlanmış iki sayıdan en büyüğünü bulan makro fonksiyon max(5, 9) 9
min(a,b) stdlib.h'de tanımlanmış iki sayıdan en küçüğünü bulan makro fonksiyon min(5, 9) 5


Program 5.2: rand() fonksiyonu kullanımı
01: 
02: 
03: 
04: 
05: 
06: 
07: 
08: 
09: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
/* 05prg02.c
   0-100 arasında 10 tane rasgele sayı üretir */

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int   i, ri;

   for(i=1; i<=10; i++)
   {
      ri = rand() % 100;             /* 0-100 arası tamsayı   */
      printf("\%d\t%d\n",i,ri);
   }
   puts("10 tane rasgele sayi uretildi.");

return 0;
}

ÇIKTI

1       83
2       86
3       77
4       15
5       93
6       35
7       86
8       92
9       49
10      21


5.3 Karakter Üzerinde İşlem Yapan Fonksiyonlar (ctype.h)

Tablo 5.3: ctype.h Kütüphanesinde tanımlı fonksiyonlar
Fonksiyon Bildirimi Açıklama Örnek Sonuç
isalpha(c) c bir harf ise 0 dan farklı, değilse 0 gönderir isalpha('a') 8
isalnum(c) c A-Z, a-z veya 0-9 arasında ise 0 dan farklı, değilse 0 gönderir isalnum('a') 1
isascii(c) c bir ASCII karakter ise 0 dan farklı, değilse 0 gönderir isascii('a') 1
isdigit(c) c bir rakam ise 0 dan farklı, değilse 0 gönderir isdigit('4') 2
islower(c) c a-z arasında ise 0 dan farklı, değilse 0 gönderir islower('P') 0
isupper(c) c A-Z arasında ise 0 dan farklı, değilse 0 gönderir islower('P') 4
toascii(c) c sayısı ile verilen ASCII koda sahip karakteri elde eden makro toascii(65) A
tolower(c) c karakterini küçük harfe çevirir tolower('D') d
toupper(c) c karakterini büyük harfe çevirir toupper('b') B


Program 5.3: ctype.h kütüphansinde bulunan bazı makroların kullanımı
01: 
02: 
03: 
04: 
05: 
06: 
07: 
08: 
09: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
/* 05prg03.c 
   ASCII kodları 32-127 arasında olan karakterler üzerinde 
   ctype.h kütüphanesinde tanımlı bazı makroların kullanımı */

#include <stdio.h>
#include <ctype.h>

int main(void)
{
   int  i;
   char c;

   for(i=32; i<127; i++)
   {
     c = toascii(i);
     printf("%d\t%c\t%c\t%d\n", i,c,tolower(c),isdigit(c));
   }

 return 0;
}

ÇIKTI

32                      0
33      !       !       0
34      "       "       0
35      #       #       0
36      $       $       0
37      %       %       0
38      &       &       0
39      '       '       0
40      (       (       0
41      )       )       0
42      *       *       0
43      +       +       0
44      ,       ,       0
45      -       -       0
46      .       .       0
47      /       /       0
48      0       0       1
49      1       1       1
50      2       2       1
51      3       3       1
52      4       4       1
53      5       5       1
54      6       6       1
55      7       7       1
56      8       8       1
57      9       9       1
58      :       :       0
59      ;       ;       0
60      <       <       0
61      =       =       0
62      >       >       0
63      ?       ?       0
64      @       @       0
65      A       a       0
66      B       b       0
67      C       c       0
68      D       d       0
69      E       e       0
70      F       f       0
71      G       g       0
72      H       h       0
73      I       i       0
74      J       j       0
75      K       k       0
76      L       l       0
77      M       m       0
78      N       n       0
79      O       o       0
80      P       p       0
81      Q       q       0
82      R       r       0
83      S       s       0
84      T       t       0
85      U       u       0
86      V       v       0
87      W       w       0
88      X       x       0
89      Y       y       0
90      Z       z       0
91      [       [       0
92      \       \       0
93      ]       ]       0
94      ^       ^       0
95      _       _       0
96      `       `       0
97      a       a       0
98      b       b       0
99      c       c       0
100     d       d       0
101     e       e       0
102     f       f       0
103     g       g       0
104     h       h       0
105     i       i       0
106     j       j       0
107     k       k       0
108     l       l       0
109     m       m       0
110     n       n       0
111     o       o       0
112     p       p       0
113     q       q       0
114     r       r       0
115     s       s       0
116     t       t       0
117     u       u       0
118     v       v       0
119     w       w       0
120     x       x       0
121     y       y       0
122     z       z       0
123     {       {       0
124     |       |       0
125     }       }       0
126     ~       ~       0


Hiç yorum yok:

Yorum Gönder