Ders 5: 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. 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.'de listelenmiştir. Tablo 5.: 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 abs(-4) 4 double fabs(double x); x gerçel sayısının mutlak değerini fabs(-4.) 4. int floor(double x); x'e (x'den büyük olmayan) en yakın tamsayıyı gönderir abs(-.5) - int ceil(double x); x'e (x'den küçük olmayan) en yakın tamsayıyı gönderir ceil(-.5) double sqrt(double x); pozitif x sayısının karekökünü sqrt(4.) 2. double pow(double x, double y); x y değerini pow(2., 3.) 8. double log(double x); pozitif x sayısının doğal logaritmasını, ln(x) log(4.).386294 double log(double x); pozitif x sayısının tabanındaki logaritmasını log(4.).626 double sin(double x); radyan cinsinden girilien x sayısının sinüs değerini sin(3.4).593 double cos(double x); radyan cinsinden girilien x sayısının kosinüs değerini - cos(3.4).999999 double tan(double x); radyan cinsinden girilien x sayısının tanjant değerini - tan(3.4).593 double asin(double x); sinüs değeri x olan açıyı gönderir. Açı -pi/2 ile pi/2 arasındadır. asin(.5).523599 double acos(double x); cosinüs değeri x olan açıyı gönderir. Açı -pi/2 ile pi/2 acos(.5) arasındadır..4798 double atan(double x); tanjant değeri x olan açıyı gönderir. Açı -pi/2 ile pi/2 atan(.5) arasındadır..463648
Trigonometrik (sin, cos, tan) fonksiyonlar kendisine parametre olarak gelen değeri radyan olarak kabul eder ve sonucu. Eğer açılar derece cinsinden hesaplanması gerekiyorsa şu dönüşüm kullanılanılabilir: radyan = (3.4593/8.) * derece; Program 5.: sin(), cos(), and tan() fonksiyonlarının kullanımı : 2: 3: 4: 5: 6: 7: 8: 9: : : 2: 3: 4: 5: 6: 7: 8: 9: 2: 2: 22: ÇIKTI /* 5prg.c 3 dercelik açının sinüs, kosinüs, tanjant ve kotanjant değerleri */ #include <stdio.h> #include <math.h> #define PI 3.4593 int main() double aci = 3.; aci *= PI/8.; /* radyana çevir */ puts("3 derecenin"); printf("sinusu : %lf\n", sin(aci)); printf("kosinusu : %lf\n", cos(aci)); printf("tanjanti : %lf\n", tan(aci)); printf("kotanjanti: %lf\n",./tan(aci)); return ; 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. 3 derecenin sinusu :.5 kosinusu :.86625 tanjanti :.57735 kotanjanti:.7325
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 Bir karakter topluluğunu tamsayıya çevirir atoi("-2345") -2345 *s); long atol(const char *s); double atof(const char *s); void exit(int durum); int rand(void); max(a,b) min(a,b) Program 5.2: rand() fonksiyonu kullanımı : 2: 3: 4: 5: 6: 7: 8: 9: : : 2: 3: 4: 5: 6: 7: 8: 9: Bir karakter topluluğunu uzun tamsayıya çevirir atol("23456789") 23456789 Bir karakter topluluğunu gercel sayıya çevirir atof("-23.546") -23.456 Programı sonlandırarak kontrolü işletim sistemine geri verir. ile RAND_MAX arasında rastgele sayı üretir. RAND_MAX, stdlib.h içinde tanımlanmış bir sembolik sabittir stdlib.h'de tanımlanmış iki sayıdan en büyüğünü bulan makro fonksiyon stdlib.h'de tanımlanmış iki sayıdan en küçüğünü bulan makro fonksiyon /* 5prg2.c - arasında tane rasgele sayı üretir */ #include <stdio.h> #include <stdlib.h> int main() int i, ri; for(i=; i<=; i++) ri = rand() % ; /* - arası tamsayı */ printf("\%d\t%d\n",i,ri); puts(" tane rasgele sayi uretildi."); return ; exit() - rand() 548532 max(5, 9) 9 min(5, 9) 5
ÇIKTI 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 dan farklı, değilse gönderir isalpha('a') 8 isalnum(c) c A-Z, a-z veya -9 arasında ise dan farklı, değilse gönderir isalnum('a') isascii(c) c bir ASCII karakter ise dan farklı, değilse gönderir isascii('a') isdigit(c) c bir rakam ise dan farklı, değilse gönderir isdigit('4') 2 islower(c) c a-z arasında ise dan farklı, değilse gönderir islower('p') isupper(c) c A-Z arasında ise dan farklı, değilse 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ı : 2: 3: 4: 5: 6: 7: 8: 9: : : 2: 3: 4: 5: 6: 7: 8: 9: 2: /* 5prg3.c ASCII kodları 32-27 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<27; i++) c = toascii(i); printf("%d\t%c\t%c\t%d\n", i,c,tolower(c),isdigit(c)); return ;
ÇIKTI 32 33!! 34 " " 35 36 # $ # $ 37 % % 38 39 & ' & ' 4 ( ( 4 42 ) * ) * 43 + + 44,, 45 - - 46.. 47 48 / / 49 5 5 2 3 2 3 52 4 4 53 54 5 6 5 6 55 7 7 56 8 8 57 9 9 58 : : 59 6 ; < ; < 6 = = 62 63 >? >? 64 @ @ 65 66 A B a b 67 C c 68 69 D E d e 7 F f 7 72 G H g h 73 I i 74 75 J K j k 76 L l 77 M m 78 N n 79 O o 8 8 P Q p q 82 83 R S r s 84 T t 85 U u 86 87 V W v w 88 X x 89 Y y 9 Z z 9 [ [ 92 93 \ ] \ ] 94 ^ ^ 95 96 ` ` 97 a a 98 99 b c b c
d d e e 2 f f 3 g g 4 h h 5 i i 6 j j 7 k k 8 l l 9 m m n o n o 2 p p 3 q q 4 r r 5 s s 6 7 t u t u 8 9 v w v w 2 x x 2 y y 22 23 z z 24 25 26 ~ ~