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. |
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