Matematiksel �fadeler Bir C Program�n�n Genel Yap�s� Mant�ksal �fadeler
C de Tan�ml� Veri Tipleri
Tip |
Aral�k |
Uzunluk(Byte) |
Unsigned char
char enum unsigned int short int int unsigned long long float double long double |
0 .. 255
-128 .. 127 -32,768 .. 32,767 0 .. 65,535 -32,768 .. 32,767 -32,768 .. 32,767 0 .. 4,294,967,295 -2,147,483,648 .. 2,147,483,647 3.4 * (10**-38) .. 3.4 * (10**+38) 1.7 * (10**-308) .. 1.7 * (10**+308) 3.4 * (10**-4932) .. 1.1 * (10**+4932) |
1 1 2 2 2 2 4 4 4 8 10 |
Kullan�c� Tan�ml� Veri Tipleri
Enumerated (S�ral�, Numaraland�r�lm��) Tipler
Program�n okunabilirli�ini artt�rmak i�in de�erlerin s�ral� bir k�me olarak tan�mlanmas�.
enum [tip_adi] { sabit ad� [= de�er],...} [de�i�ken listesi];
de�er:Sabite otomatik atanan de�er.
Belirtilmez ise 0'dan ba�lar. S�radaki sabit �ncesinin bir fazlas�na e�ittir.
Belirtilen tipte tan�ml� bir de�i�ken ancak listedeki de�erleri al�r.
enum renk {BEYAZ, SARI, SIYAH};
tan�mlamas� ile olu�an enum renk tipinde BEYAZ 0, SARI 1 ve SIYAH 2 de�erlerine e�it sabitlerdir.
Listedeki sabitler belirleyici olmal�d�r. Say�sal, karakter ve string bilgi yaz�lamaz.
enum renk = {"Beyaz", "Sari"}; X
enum renk = {0, 1, 2}; X
�li�kisel operat�rler tan�ml�d�r. Beyaz < Siyah, Sari > Beyaz
Bu tip de�i�kenler switch ve for deyimlerinde kontrol de�i�keni olarak kullan�labilir.
Bu tipte bir de�i�ken bilinen yap�da tan�mlan�r.
enum renk {BEYAZ, SARI, SIYAH};
enum renk a;
a de�i�keni BEYAZ, SARI ve SIYAH de�erlerinden birini alabilir.
�rnek:
Enum kullan�m�.main()
{
enum gunler {PAZAR,PAZARTESI,SALI,CARSAMBA,PERSEMBE,CUMA,CUMARTESI };
enum gunler gun;
clrscr();
for (gun = PAZAR; gun <= CUMARTESI; gun++)
printf("%d ", gun);
printf("\n");
for (gun = PAZAR; gun <= CUMARTESI; gun++)
switch (gun) {
case PAZAR: printf("Pazar"); break;
case PAZARTESI: printf("Pazartesi"); break;
case SALI: printf("Sali"); break;
case CARSAMBA: printf("Carsamba"); break;
case PERSEMBE: printf("Persembe"); break;
case CUMA: printf("Cuma"); break;
case CUMARTESI:printf("Cumartesi"); break;
} /* Case */
}
�rnek:
Sabitlere farkl� de�erler atamaenum renkler { sari = 4, mavi, kirmizi };
enum renkler i;
main()
{
i = mavi;
printf("%d \n", i);
} Program sonucunda ekrana 5 yazar.
CONST
(sabit) : De�eri program�n �al��mas� boyunca de�i�tirilemez. Kullan�m bi�imiconst tip Belirleyici=de�eri;
const float PI=3.14; UYARI: E�er tip belirtilmez ise tamsay� kabul edilir.
De�eri program�n �al��mas� boyunca de�i�tirilebilir. Kullan�m bi�imi:
Tip Belirleyici [,Belirleyici] ; int i; float alan;
4. Belirleyiciler (Identifier)
Bile�enlere isim verme. (Sabit, de�i�ken, altprogram, etiket, tipler (kullan�c� tan�ml�)).
Belirleyici nas�l olmal� veya olmamal�d�r?
Matematiksel ifadeleri g�nl�k hayattaki bi�imde bilgisayarda yazamad���m�z i�in belli bir kurallar uymam�z gerekir. Kulland���m�z matematiksel i�lemler ve anlamlar� ��yledir:
+ , - , * , / toplama, ��karma, �arpma, b�lme
% tamsay� b�lme sonucundaki kalan� verir (mod)
7. / 2 ---> 3.5 (nokta say�n�n ger�el yorumlanmas�n� sa�lar)
7 / 2 ---> 3 (say�lar int kabul edilip sonu�ta int tipine d�n��t�r�l�r)
7 % 2 ---> 1 2 % 7 ---> 2 2 / 7 ---> 0 gibi...
Matematiksel ifadeler hesaplan�rken �u ad�mlar izlenir;
1.�nce parantez i�indeki ifadeler hesaplan�r. �� i�e parantezler var ise hesaplamaya en i�teki parantezden ba�lan�r.
2. ilk �nce * , / ve % i�lemleri daha sonra + ve - i�lemleri yap�l�r.
3.�ncelik s�ras� ayn� olan i�lemlerde hesaplama soldan sa�a do�ru yap�l�r. 5./2*3 --> 7.5
6. Bir C Program�n�n Genel Yap�s�
Atama Deyimi (Assignment) printf Fonksiyonu Bi�imli Yazd�rma scanf Fonksiyonu
main()
{
sabitler ; sabitlerin tan�mlama b�l�m�
de�i�kenler; de�i�kenleri tan�mlama b�l�m�
deyimler; Program g�vdesi
}
Bir de�i�kene bir de�er vermek.
De�i�kenAd� = de�er;
x = 8 ;
y = x + 15 ;
y = (8 - x) / (2 - x) ;
�rnek : 5x2+2 fonksiyonunun x=4.8 noktas�ndaki de�erini main() { float x, y ; x = 4.8; y = 5 * x * x + 2; } |
�rnek:
Vize ve final notlar�n�ndan ge�me notu
Main() { float vize, final, ort; vize = 50; final = 60; ort = vize * 0.4 + final * 0.6; } |
�rnek: 2000 y�l�na kadar ge�en g�n say�s�main() { float gun; int yil = 2000; gun = 365 * yil; gun = gun + yil / 4; } |
Program i�inde istenen de�erleri ��kt� birimlerine g�ndermek i�in kullan�l�r. Normal kullan�m�nda ��kt� birimi olarak ekran kabul edilir. Kullan�m bi�imi:
prinf( kontrol, <parametreler>)
<kontrol> ile belirtilen bilgiye g�re parametreleri yazar. Kontrol metni iki k�s�mdan olu�ur.
printf(" sonu� = %d", k);
integer de�er yaz�lacakt�r
ekrana aynen aktar�l�r
D�n���m belirlemek i�in �nce % karakteri ve ard�ndan d�n���m�n nas�l
olaca��n� belirten karakter verilir. Bu karakterlerden baz�lar�:
d : decimal (integer)
u : unsigned decimal
c : char (tek karakter)
s : string
e : float/double say�y� bilimsel g�sterimde yaz
f : float/double say�y� [-] mmm.nnnnn bi�iminde yaz
ld : long integer
lu : unsigned long integer
Le,Lf : long double
Program par�as� Ekranda g�r�nen / imle�in konumu
i = 5 ;
printf("%d",i) ; 5
printf("'i=%d",i) ; i=5
printf("i=\n") ;i=
printf("%d",i) ; 5 alt sat�ra ge�er
printf('i=%d\n",i) ; i=5 alt sat�ra ge�er
printf("%d - %d",i, 5*i) ; 5 - 25
% karakteri ile d�n���m karakteri aras�na a�a��daki karakterler de kullan�labilir.
- : sola dayal� yaz
m : yaz�lacak de�er i�in ay�r�lan alan
n : de�erin ka� karekteri yaz�laca��
s = "ABCDEF"
printf("%10s ",s); . . . . A B C D E F
printf("%10.3s ",s); . . . . . . . A B C
x = 128.5 ;
printf("%7.2f",x) ; # 128.50
x = 85.47 ;
printf("%6.3f",x) ; 85.470
�rnek :
ax2+bx+c=0 tipi bir denklemin k�klerini veren program� yaz�n�z.Girdi : a, b ve c katsay�lar�
��kt� : denklemim k�kleri
Algoritma :
1. a, b ve c katsay�lar�n� oku.
2. Delta= de�erini hesapla.
3. x1 ve x2 de�erlerini hesapla.
4. K�kleri yaz.
Program�n kodlanmas�:
#include <stdio.h> /* printf fonksiyonu i�in */
#include <math.h> /* sqrt fonksiyonu i�in */
main()
{
float a, b, c;
float x1, x2;
float d;
a = 1;
b = -3;
c = 2;
d = b * b - 4 * a * c;
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
printf("K�kler = %f , %f",x1, x2);
}
C dilinde karek�k almak i�in bir deyim yoktur. �rnekte bunu yerine getiren C diline eklenmi� olan sqrt() fonksiyonu kullan�lm��t�r. A�a��da buna benzer art�k C derleyicilerinde standart olmu� baz� fonksiyonlar verilmi�tir. Bu fonksiyonlar math.h ba�l�k dosyas�nda tan�ml�d�r.
Fonksiyon x ,y Sonu�
abs(x) int int x'in mutlak de�eri
fabs(x) double double x'in mutlak de�eri
pow(x, y) double double x y
sqrt(x) double double x'in karek�k�
exp(x) double double ex de�eri
log(x) double double ln(x) de�eri
log10(x) double double log10(x) de�eri
ceil(x) double double x ten b�y�k ilk tamsay�
floor(x) double double x ten k���k ilk tamsay�
�rnekler:
ceil(5) = 5 ceil(5.2) = 6 ceil(-5.2) = -5
floor(5) = 5 floor(5.2) = 5 floor(-5.2) = -6
Klavyeden veri okumak i�in kullan�l�r. Yap� olarak printf fonksiyonu ile hemen hemen ayn�d�r.
Kullan�m bi�imi:
scanf( kontrol, <de�i�kenler>) �eklindedir.
Girilen karakterler <kontrol> metininde belirtilen bi�imlere g�re de�i�kenlere aktar�l�r.
De�i�kenler pointer tipinde olmal�d�r. Yani parametre olarak de�i�kenin adresi g�nderilmelidir.
Ay�r�c�lar bo�luk, tab, enter
scanf("%f %f %f ", &a, &b, &c);
int a,b,c;
float m,n;
scanf("%d", &a); Klavyeden tamsay� okur. Girilen de�er a de�i�kenine aktar�l�r.
scanf("%d %d",&a,&b); Klavyeden girilen ilk de�er a, ikinci de�er b de�i�kenine aktar�l�r.
scanf("%f %d", &m, &a); Klavyeden ilki ger�el, ikincisi tamsay� olmak �zere iki de�er okur.
�kinci dereceden denklem ��z�m�n�n yap�ld��� �rnekte katsay�lar� klavyeden okutmak istersek
scanf("%f %f %f ", &a, &b, &c);
Farkl� kullan�c� ara y�z�nde yazarsak
printf(�Katsay�lar� s�ras�yla giriniz (a b c) :� ); scanf("%f %f %f ", &a, &b, &c);
gibi bir kullan�m s�z konusudur.
Sonucu Do�ru veya Yanl�� olan ifadelerdir. Sonu� s�f�r ise yanl�� aksi halde do�ru kabul edilir.
�li�kisel operat�rler(operat�r) : iki de�er aras�ndaki ili�kiyi test etmek i�in kullan�l�r.
operat�r anlam�
> b�y�k �rnek:
>= b�y�k � e�it x=8, y=5 i�in
== e�it x > y Do�ru
< k���k x < y Yanl��
<= k���k � e�it x !=y Do�ru
!= e�it de�il
Mant�ksal operat�rler iki mant�ksal ifade aras�ndaki ili�ki �zerindeki ili�kide kullan�l�r.
Operat�r Anlam� �rnek:
&& Ve (And) (X>0) && (X>Y)
|| Veya (Or) (X>0) || (Y>0)
�fadelerde operat�rlerin y�r�t�lme s�ras�
( ) � !� *, /, %� +, -� <, <=, >=, >� = =, != � &&, || � =
�eklindedir.