You are on page 1of 17

C Ders Notlar Programlama Dilleri ve C: Bilgisayarda bir ya da bir ok ilemi yaptrmak iin, ilemlere karlk gelen komutlar topluluuna

bilgisayar program denir.Bilgisayar program yazmaya yarayan bir ok programlama dili vardr.Bunlardan bazlar, Basic, GwBasic, Visual Basic, Quick Basic, Fortran, Cobol, Pascal, Delphi, C, C++, Visual C, ... gibi. C Dilinde Program Yazma ve Derleme: Her hangi bir dilde olduu gibi C dilinde de, nce dilin kurallar erevesinde, bir kelime ilemci yardmyla (rnein DOS ortamnda Edit, Windows'ta Notepad ile) programn kaynak kod dosyas yazlr, diske kaydedilir (dosya kaydedilirken dilin cinsine gre uygun bir uzant verilir; rnein Basic'te uzant bas, Pascal'da pas, C de c dir) ve programlama dilinin derleyicisi ile (rnein Pascal iin tpc.exe, C iin tcc.exe) derlenir, hatalar varsa kelime ilemci yardmyla dzeltilir ve tekrar derlenir.Bylece kendi kendine alabilir (uzants exe olan) bir dosya elde edilir.Ancak Turbo C program paketinin tc.exe program, hem kaynak kod yazmaya hem de derlemeye ve programn hatalarndan arndrmaya yarayan tmleik bir ortamdr. Haydi C de Basit Bir Program Yazp Derleyelim: rnein; ekrana "zmir Fen Lisesi" yazdran bir program yazp derleyelim. zm: tc.exe programn altrdmzda gelen ortamda aadaki kodlar yazalm ve Alt-F tularna basarak File mens altndaki Save seeneinden rnein ifl adyla kaydedelim (Turbo C otomatik olarak uzantsn c olarak kaydeder).

C de Standart Veri Tipleri: Tip Uzunluk Snr unsigned char 1 byte 0 : 255 char 1 byte -128 : 127 unsigned int 2 byte 0 : 65535 short int 2 byte -32768 : 32767 int 2 byte -32768 : 32767 unsigned long 4 byte 0 : 4 294 967 295 -2 147 483 648 : 2 147 483 647 long 4 byte float 4 byte -38 38 -3,4.10 : 3,4.10 double long double 8 byte 10 byte -1,7.10 -3,4.10 -308 : 1,7.10 308 4092

-4932

: 3,4.10

Giri k Fonksiyonlar: C de bilgisayara giri ve bilgisayardan k iin kullanlan fonksiyonlara denir.En ok kullanlan fonksiyonlardan birincisi printf(); k iin, ikincisi scanf(); giri iin kullanlr. printf() fonksiyonu: Fonksiyonun yaps aadaki gibidir: printf("k biimi karakterleri",deerler listesi); Buradaki "k biimi karakterleri" unlar olabilir: a) Aklama karakterleri: Olduu gibi ekranda grnmesini istediimiz karakterlerdir. b) Escape dzeni karakterleri: Krsrn yerini ve baz zel karakterleri yazdrmaya yarar. Bu karakterler \ ile balar. Aadaki listede bu karakterler ve anlamlar belirtilmitir. Karakter \n (new line) \r (return) \b (back space) \a (alarm, bell) \t (tab) \\ \' \" \? \0 Anlam Krsr alt satra geirir Krsr satr bana geirir Krsr bir nceki stuna eker Bip sesi vermeye yarar Krsr belirli bir miktar saa kaydrr \ koymaya yarar ' koymaya yarar " koymaya yarar ? koymaya yarar NULL karakteri

#include<stdio.h> main() {printf("zmir Fen Lisesi");} imdi de Alt-C tularna basarak programmz derleyelim.Hatamz yoksa program almaya hazr demektir.Alt-R tularna basarak programmz altrrz.Ancak program alr almaz hemen tmleik ortama geri dner.Programn almas srasnda ne yazdn grmek istersek, DOS ortamna geici olarak geebiliriz.Bunun iin Alt-F-OS shell seenei ile DOS ortamna getiimizde ekranda programn kts olan zmir Fen Lisesi yazsn grrz. Tekrar TC nin tmleik ortamna dnmek iin exit komutunu yazp (Enter) tuuna basmalyz. Diskimize dikkatlice baktmzda ad ifl olan bir ka dosya grrz: ifl.c, ifl.bak, ifl.obj, ifl.exe .te en sonuncusu olan dosya DOS ortamnda bamsz olarak alabilen ifl.exe dosyasdr.DOS ortamnda iken ifl.exe (veya sadece ifl ) yazp (Enter) tuuna basarsak veya Windows ortamnda fare ile ifl.exe stn ift tklatrsak ekranda zmir Fen Lisesi yazsn grrz.

c) k biimi belirten karakterler: Deerler listesi blmndeki deikenlerin deerlerinin ekrana yazl biimlerini belirten ifadelerdir. Bu ifadeler % ile balar. Aadaki listede bu karakterler ve anlamlar belirtilmitir. Karakter %d %ld %f %lf %e %x 1 Anlam aretli tamsay Uzun tamsay Ondalkl (reel) say Double (uzun) ondalkl say Exponantiel (stel) say Hexadecimal say
Hasan KORKMAZ zmir Fen Lisesi

C Ders Notlar %c Tek karakter %s String (karakter grubu) Deerler listesi: Deerler listesine, ekrana yazdrlacak deikenler veya ilemler yazlr. scanf() fonksiyonu: Tanmlanm deikenlerin temsil ettii bellek blgelerine deer okutmak amacyla kullanlr. Fonksiyonun yaps aadaki gibidir: scanf("giri biimi karakterleri",adresler listesi); Giri biimi karakterleri: Buradaki giri biimi karakterleri, printf() fonksiyonundaki k biimi karakterlerine karlk gelir. Adresler listesi: Bellekte atama yaplacak deikenlerin adreslerini belirtmeye yarar. Bunun iin deiken adnn nne & konur. rnek: Aadaki alt programlar sonucu ekran ktsn bulalm. a) printf("zmir"); printf("Fen"); printf("Lisesi"); b) printf("\nzmir"); printf("\nFen"); printf("\tLisesi"); zm: a) zmirFenLisesi b) zmir Fen Lisesi rnek: Girilen iki tamsaynn toplamn yazdran bir program yazalm. zm: (cprog01.c) ncelikle standart giri (input) k (output) fonksiyonlarnn tanml olduu header dosyasn (stdio.h) programa eklemeliyiz. Bunu #include deyimi yardmyla; #include<stdio.h> veya #include"stdio.h" ile yaparz. Sonra, programda kullanlacak deiken tanmlar yaplr. Deikenlerimiz a ve b gibi iki tamsay olduunu varsayalm; bu tanmlama aadaki gibi yaplr. int a,b; Artk ana fonksiyonu (ana program) yazabiliriz. main() {printf("ilk saynz");scanf("%d",&a); printf("ikinci saynz");scanf("%d",&b); printf("%d",a+b);} Buna gre programn tamam yle olmaldr: #include<stdio.h> int a,b; main() {printf("ilk saynz");scanf("%d",&a); printf("ikinci saynz");scanf("%d",&b); printf("%d",a+b);} 2

Not:1) Programn sonucunda iki saynn toplamnn bulunduunu belirtmek iin; printf("Toplam=%d",a+b); komutu yazldnda sonu daha anlalr hale gelir. rnein ilk say 67, ikinci say 13 girildiyse; programn kts; Toplam=80 gibi daha anlaml biimde grnr. Not 2) Girilen saylar ve toplam yazdrmak istersek bunu; printf("%d + %d = %d dir",a,b,a+b); biiminde yazarz. rnen ilk say 67 ikinci say 13 girildiyse ekranda; 67 + 13 = 80 dir. grlr. Not 3) Programn her altrlmasnda ekranda, daha nceden kalan grntnn silinmesini istersek, programda clrscr(); fonksiyonunu kullanrz. Not 4) Programn almas bittiinde, hemen tmleik ortama dnlr.Bu durumda ekrandaki grnty tam gremeyiz.ayet programn almasn bir tua basana kadar bekletmek istersek; bunu getch(); fonksiyonu yardmyla yaparz. Buna gre programn son durumu yle olmaldr: #include<stdio.h> int a,b; main() {clrscr();printf("ilk saynz");scanf("%d",&a); printf("ikinci saynz");scanf("%d",&b); printf("%d + %d = %d dir",a,b,a+b);getch();} C de Atama ve Matematiksel lemler: Dier programlama dillerinde olduu gibi C'de de bir deikene deer atamas ve bir ok ilem (operatr) vardr. C de deer atama; deiken=atanan_deer; biiminde yaplr. ayet ayn dee birden fazla deikene atanacaksa bunu; de1=de2=de3=...=den=atanan_deer; biimide yaplr. Atanan deer sabit olabilecei gibi, baka deikenlerin rettii bir deer de olabilir. rnek: a) a=3;b=7;c=a+b; b) a=3;b=7;a=a+5;c=a+b; c) a=3;b=7;a=a-1;b=a+b-2;c=d=a*b+b;d=d-1; atamalarnda a, b, c ve d deikenlerinin alaca son deerleri bulalm. zm: a) a=3, b=7, c=10 b) a=8, b=7, c=15 c) a=2, b=9, c=27, d=26 C de Arttrma Azaltma ve Sktrlm Atama: deiken=deiken+deer; ifadesi ile deiken in deeri deer kadar arttrlr. deiken=deiken-deer; ifadesi ile deiken in deeri deer kadar azaltlr.
Hasan KORKMAZ zmir Fen Lisesi

C Ders Notlar Bu iki atama srasyla deiken+=deer; ve deiken- =deer; ile de yaplabilir ki bu tr atamalara sktrlm atama denir. ayet zel olarak, deikenin deeri 1 arttrlacaksa bunu; ister deiken=deiken+1; ifadesi ile yapabileceimiz gibi istersek deiken++; ifadesi ile de yapabiliriz. Benzer biimde deikenin deeri 1 azaltlacaksa bunu; ister deiken=deiken-1; ifadesi ile yapabileceimiz gibi istersek deiken--; ifadesi ile de yapabiliriz. Matematiksel lemler: Aadaki tabloda, matematiksel ilemler ve C deki karlklar ile anlamlar verilmitir. lem + * / % ++ -Anlam Toplama karma arpma Blme Modl Bir arttrma Bir eksiltme

rnek: Bir programda; a, b ve c tam say deikenlerinin tanmlandn ve a ya 7, b ye -5 deerlerinin atandn varsayalm. Buna gre aadaki deikenlerin deerlerini ve ekran grntlerini bulalm. a) c=(a>b); printf("a=%d b=%d c=%d",a,b,c); b) c=(a<=b);printf("a=%d b=%d c=%d",a,b,c); c) c=(a!=b);printf("a=%d b=%d c=%d",a,b,c); d) c=(a==(2-b));printf("a=%d b=%d c=%d",a,b,c);

zm: a) a nn deeri olan 7, b nin deeri olan -5 ten byk yani doru (TRUE) olduundan, c nin deeri 1 dir.Buna gre ekranda a=7 b=-5 c=1 grlr. b) Benzer biimde 7 -5 ten kk veya eit olmadndan yani yanl (FALSE) olduundan c nin deeri 0 dr. Buna gre ekranda a=7 b=-5 c=0 grlr. c) Benzer biimde ekranda; a=7 b=-5 c=1 grlr. d) Ekranda a=7 b=-5 c=1 grlr. C de Kontrol Deyimleri: 1) if art deyimi: Yazm ekli; if(art ifadesi) {blok;} Burada art ifadesi doru yani deeri TRUE=1 ise blok; icra edilir, yanl yani deeri FALSE=0 ise blok; icra edilmez. Not: ayet blok; birden fazla fonksiyondan oluuyorsa { } (kme parantezleri arasna) alnmaldr.Ancak bir fonksiyondan oluuyorsa kme parantezleri arsna alnmasa da olur. rnek: 100 zerinden girilen bir puan iin; 45 ten kkse Kald 45 veya daha bykse Geti yazdran bir program yazalm. zm: (cprog02.c) #include<stdio.h> int puan; main() {clrscr(); printf("Puan giriniz ");scanf("%d",&puan); if(puan<45) printf("Kald"); if(puan>=45) printf("Geti");getch();} 2) if-else art deyimi: Yazm ekli; if(art ifadesi) {blok1;} else {blok2;} rnek: 100 zerinden girilen bir puan iin; 45 ten kkse Kald 45 veya daha bykse Geti yazdran bir program if-else deyimi ile yazalm. zm: (cprog03.c) #include<stdio.h> int puan; 3
Hasan KORKMAZ zmir Fen Lisesi

rnek: a) a=5;a=a+1;printf("a=%d",a); b) a=5;a++;printf("a=%d",a); c) a=5;b=-13;a++;b--;a=a-b;b=a*b; printf("a=%d b=%d",a,b); program paralarnn almas sonucu ekrandaki grntleri bulalm. zm: a) a=6 b) a=6 c) a=20 b=-280 rnek: Aadaki matematiksel ifadelerin C de karlk gelen deyimlerini yaznz. 2x-1 2 a) x=a+b b) x=a +b c) y= x+3 d) x1 = -b- b - 4ac 2a
2

zm: a) x=a+b; b) x=a*a+b; c) y=(2*x-1)/(x+3); d) x1=(-b-sqrt(b*b-4*a*c))/(2*a); Karlatrma Operatrleri: ki deikenden birinin dierinden kk olup olmadn, eit olup olmadn vs. yarayan operatrlere karlatrma operatrleri denir.Bu operatrler ve anlamlar aada verilmitir. Operatr Anlam == eittir != eit deildir < kktr > byktr <= kk veya eittir >= byk veya eittir

C Ders Notlar main() {clrscr(); printf("Puan giriniz ");scanf("%d",&puan); if(puan<45) printf("Kald"); else printf("Geti");getch();} rnek: 100 zerinden girilen bir puan iin; 45 ten kkse Baarsz; 45-54 aras ise Geer; 55-69 aras ise Orta; 70-84 aras ise yi; 85-100 aras ise Pekiyi yazdran bir program if-else deyimi ile yazalm. zm: (cprog04.c) #include<stdio.h> int puan; main() {clrscr(); printf("Puan giriniz ");scanf("%d",&puan); if(puan<45) printf("Baarsz"); else if(puan<55) printf("Geer"); else if(puan<70) printf("Orta"); else if(puan<85) printf("yi"); else if(puan<=100) printf("Pekiyi"); else printf("Ltfen (1-100 ) aras bir puan giriniz...");getch();} rnek: Klavyeden girilen iki reel say iin; + karakterine basldnda toplamn yazdran; - karakterine basldnda farkn yazdran; x karakterine basldnda arpmn yazdran; / karakterine basldnda blmn yazdran bir program if-else deyimi kullanarak yazalm. zm: (cprog05.c) #include<stdio.h> float x,y,sonuc;char kar; main() {clrscr(); printf("\n1. say = ");scanf("%f",&x); printf("\n2. say = ");scanf("%f",&y); printf("\nlemi seiniz [ + - x / ] ");scanf("%s",&kar); if(kar=='+') {sonuc=x+y;printf("%f %c %f = %f",x,kar,y,sonuc);} else if(kar=='-') {sonuc=x-y;printf("%f %c %f = %f",x,kar,y,sonuc);} else if(kar=='x') {sonuc=x*y;printf("%f %c %f = %f",x,kar,y,sonuc);} else if(kar=='/') {sonuc=x/y;printf("%f %c %f = %f",x,kar,y,sonuc);} else printf("Ltfen [ + - x / ] ilemlerinden birini seiniz...");getch();} Not 1) Sonular yazdrlrken ondalk ksm 6 haneli olarak grnr.Ondalk ksmnn uzunluunu istersek ayarlayabiliriz. rnein ondalk ksmlarn uzunluunu 3 hane olmasn istersek bunu; printf("%.3f %c %.3f = %.3f",x,kar,y,sonuc); olarak deitirilmelidir. Not 2) Programda sonular, her else-if blmnde ayr ayr printf fonksiyonu ile yazdracamza, programn sonunda tek bir printf ile de 4

yazdrabiliriz.Sylediklerimizin uygulamas olan program aadaki gibi olacaktr. (cprog06.c) #include<stdio.h> float x,y,sonuc;char kar; main() {clrscr(); printf("\n1. say = ");scanf("%f",&x); printf("\n2. say = ");scanf("%f",&y); printf("\nlemi seiniz [ + - x / ] ");scanf("%s",&kar); if(kar=='+') sonuc=x+y; else if(kar=='-') sonuc=x-y; else if(kar=='x') sonuc=x*y; else if(kar=='/') sonuc=x/y; else {printf("Ltfen [ + - x / ] den birini seiniz...");exit();} printf("%.3f %c %.3f = %.3f",x,kar,y,sonuc);getch();} 3) switch deyimi: Yazm ekli; switch(kontrol ifadesi) {case deer1:blok1;break; case deer2:blok2;break; ... case deern:blokn;break; default:blok;} rnek: Klavyeden [1-5] arasnda bir say girildiinde; 1 iin ekrana A, 2 iin ekrana B, 3 iin ekrana C, 4 iin ekrana D, 5 iin ekrana E yazan, bu deerler dnda bir deer girildiinde, Ltfen [1-5] arasnda bir say giriniz! uyars yazdran bir program switch deyimi kullanarak yazalm. zm: (cprog07.c) #include<stdio.h> int sayi; main() {clrscr();printf("[1-5] aras bir say giriniz"); scanf("%d",&sayi);switch(sayi) {case 1:printf("\nA");break; case 2:printf("\nB");break; case 3:printf("\nC");break; case 4:printf("\nD");break; case 5:printf("\nE");break; default: printf("\nLtfen [1-5] aras bir say giriniz");} getch();} rnek: Klavyeden girilen iki reel say iin; + karakterine basldnda toplamn yazdran; - karakterine basldnda farkn yazdran; x karakterine basldnda arpmn yazdran; / karakterine basldnda blmn yazdran; bir program switch deyimi kullanarak yazalm. zm: (cprog08.c) #include<stdio.h> float x,y,sonuc;char kar; main() {clrscr(); printf("\n1. say = ");scanf("%f",&x); printf("\n2. say = ");scanf("%f",&y);
Hasan KORKMAZ zmir Fen Lisesi

C Ders Notlar printf("\nlemi seiniz [ + - x / ] ");kar=getch(); switch(kar) {case '+':{sonuc=x+y;break;} case '-':{sonuc=x-y;break;} case 'x':{sonuc=x*y;break;} case '/':{sonuc=x/y;break;} default:{printf("Ltfen [ + - x / ] den birini seiniz..."); getch();exit();}} printf("%f %c %f = %f",x,kar,y,sonuc);getch();} C de Tekrarl lemler: Her hangi bir programlama dilinde olduu gibi C de de tekrarl ilemler iin dngler kullanlr. 1) For Dngs: Yazm ekli: for(deyim1;artl nerme;deyim2) {blok;} rnek: Temiz ekranda alt alta 10 tane zmir Fen Lisesi yazdran bir program yazalm. zm: (cprog09.c) #include<stdio.h> int i; main() {clrscr();for(i=1;i<=10;i++) printf("\nzmir Fen Lisesi");} rnek: 1 den istenen bir tam sayya kadar olan saylarn; a) Toplamn, b) Kareleri toplamn, c) Saylarn arpmaya gre tersleri toplamn bulduran bir program for dngs kullanarak yazalm. zm: a) (cprog10.c) #include<stdio.h> int i,son;long t; main() {clrscr();printf("Kaa kadar toplansn? "); scanf("%d",&son);t=0; for(i=1;i<=son;i++) {t=t+i;} printf("1 den %d ye kadar saylarn toplam; %ld dir",son,t);getch();} b) (cprog11.c) #include<stdio.h> int i,son;long t; main() {clrscr();printf("Kaa kadar toplansn? "); scanf("%d",&son);t=0; for(i=1;i<=son;i++) {t=t+i*i;} printf("1 den %d ye kadar saylarn kareleri toplam; %ld dir",son,t);getch();} c) (cprog12.c) Bu programda doal saylarn arpmaya gre tersleri ondalkl reel saylar olacandan, deikenleri float veya double tipinde semeliyiz. 5

#include<stdio.h> double i,son,t=0; main() {clrscr();printf("Kaa kadar toplansn? "); scanf("%lf",&son);t=0; for(i=1;i<=son;i++) {t=t+1/i;} printf("1 den %lf ye kadar saylarn arpmaya gre tersleri toplam; %lf dir",son,t);getch();} Not: Programn sonundaki; printf("1 den %lf ye kadar saylarn arpmaya gre tersleri toplam; %lf dir",son,t); yerine; printf("1 + 1/2 + ... + 1/%.0lf = %lf",son,t); yazlrsa sonu, daha estetik ve rahat anlalr bir biimde grnecektir.rnein program altrldna 5 deeri girilirse ekranda; 1 + 1/2 +... +1/5 = 2.28333 grnr. 2) while Dngs: Yazm ekli: while(artl nerme) {blok;} artl nerme doru olduka blok icra edilir. rnek: 1 den istenen bir tam sayya kadar olan saylarn; a) Toplamn, b) Kareleri toplamn, c) Saylarn arpmaya gre tersleri toplamn bulduran bir program while dngs kullanarak yazalm. zm: a) (cprog13.c) #include<stdio.h> int i,son;long t; main() {clrscr();printf("Kaa kadar toplansn? "); scanf("%d",&son);t=0; while(i<=son){t=t+i;i++;} printf("1 + 2 + ... + %d = %ld",son,t);getch();} b) (cprog14.c) #include<stdio.h> int i,son;long t; main() {clrscr();printf("Kaa kadar toplansn? "); scanf("%d",&son);t=0; while(i<=son){t=t+i*i;i++;} printf("1^2 + 2^2 + ... + %d^2 = %ld",son,t);getch();} c) (cprog15.c) Bu programda doal saylarn arpmaya gre tersleri ondalkl reel saylar olacandan, deikenleri float veya double tipinde semeliyiz. #include<stdio.h> double i=1,son,t=0; main() {clrscr();printf("Kaa kadar toplansn? "); scanf("%lf",&son);t=0; while(i<=son) {t=t+1/i;i++;} printf("1 + 1/2 + ... + 1/%.0lf = %.10lf",son,t);getch();}
Hasan KORKMAZ zmir Fen Lisesi

C Ders Notlar rnek: 1.2+2.3+3.4+ ... toplam iin; a) stenen sayda terim toplamn; b) Toplam girilen bir sayya eit ya da daha byk olduu deere kadar hesaplatp ayrca ka terim toplandn da bulduran bir program yazalm. zm: a) (cprog16.c) #include<stdio.h> long i=1,n,t=0; main() {clrscr();printf("Ka terim toplansn? ");scanf("%ld",&n); while(i<=n) {t=t+i*(i+1);i++;} printf("1.2+2.3+ ... +%ld.%ld = %ld",n,n+1,t);getch();} b) (cprog17.c) #include<stdio.h> long i=1,n,t=0; main() {clrscr();printf("Toplam kaa kadar olsun? "); scanf("%ld",&n); while(t<=n) {t=t+i*(i+1);i++;} printf("%ld terim toplam %ld",i-1,t); printf("\nYani 1.2+2.3+ ... +%ld.%ld = %ld",i-1,i,t); getch();} 3) do-while Dngs: Yazm ekli: do {blok;} while(artl nerme); Bu dngde nce blok icra edilir, sonra artl nerme test edilir, doru olduka blok icra edilir. rnek: Ekrana yan yana 5 tane * bastran bir program; a) for dngs ile; b) while dngs ile; c) while-do dngs ile yazalm. zm: a) (cprog18.c) #include<stdio.h> int i; main() {clrscr();for(i=1;i<=5;i++) printf("*");getch();} b) (cprog19.c) #include<stdio.h> int i=1; main() {clrscr();while(i<=5) {printf("*");i++;}getch();} c) (cprog20.c) #include<stdio.h> int i=1; main() {clrscr();do {printf("*");i++;} while(i<=5); getch();} rnek:

Ka kii olduu belli olmayan bir grubun, panlar klavyeden girilerek not ortalamas buldurmaya ynelik bir program yazalm. Not: Her puan giriinde Devam m? (E/H) sorusu gelecek E veya e girildiinde toplam almaya devam edilecek aksi halde ortalama bulunacak ve ekrana aadaki rnee benzer biimde yazdrlacak: rnek kt: 13 kiinin not ortalamas = 78.345 tir. zm: a) (cprog21.c) #include<stdio.h> int i;float puan,toplam;char cevap; main() {i=1;toplam=0;clrscr(); do {printf("\n%d. puan ",i); scanf("%f",&puan);toplam=toplam+puan;i++; printf("\nDevam m? (E/H)"); cevap=getch();} while(cevap=='E' ||cevap=='e'); printf("%d kiinin not ortalamas = %.3f tir." ,i-1,toplam/(i-1));getch();} 4) artsz Sapma: Bazen programn icras, belli bir noktada, programn akna aykr olarak iaretlenmi bir noktaya saptrmak istenebilir.Bu durumda goto deyiminden faydalanabiliriz. Profesyonel programclar bu deyimi pek kullanmak istemezler. Biz de dikkatli davranrsak bu komutu kullanmayabiliriz.Yine de bu deyimi renmekte fayda var... Yazm ekli: ... etiket: ... goto etiket; ... rnek: Klavyeden girilen say kadar, istenen karakteri yan yana yazdran bir program ve ayn programn tekrar almas iin Devam edelim mi? (E/H) sorusuna E veya e karakteri girilmesi durumunda programn almasn salayan bir program; a) goto deyimi kullanarak; b) do-while dngs kullanarak yazalm. zm: a) (cprog22.c) #include<stdio.h> int i,n;char kar; main() {basla:i=1;printf("\nHangi karakter? ");scanf("%s",&kar); printf("\nKa tane? ");scanf("%d",&n); for(i=1;i<=n;i++) {printf("%c",kar);} printf("\nDevam edelim mi? (E/H)");kar=getch(); if(kar=='E' || kar=='e') goto basla; printf("\n\t\t\tyi Gnler...!");getch();}

Hasan KORKMAZ zmir Fen Lisesi

C Ders Notlar b) (cprog23.c) #include<stdio.h> int i,n;char kar; main() {do {i=1;printf("\nHangi karakter? ");scanf("%s",&kar); printf("\nKa tane? ");scanf("%d",&n); for(i=1;i<=n;i++) {printf("%c",kar);} printf("\nDevam edelim mi? (E/H)");kar=getch();} while((kar=='E') || (kar=='e')); printf("\n\t\t\tyi Gnler...!");getch();} C de Diziler: Ayn tipteki veri gruplar tek bir dizi ismi ile belirtilebilir. rnein; 24 kiilik bir bir snftaki rencilerin numaralar bir program iinde kullanlmak istenseydi; her bir elemana deiken ad vermek gerekirdi. Yani bu grubu; int ogrno01,ogrno02,ogrno03,...,ogrno24; biiminde tanmlamak gerekirdi. Bu ise hem uzun hem de kullan zor olur.Bunun yerine ad ogrno olan 24 elemanl bir dizi tanmlayabiliriz.Bunu da; int ogrno[24]; tanmlamasyla yapabiliriz. Burada ogrno[0] dizinin 1. terimini, ogrno[1] dizinin 2. terimini,...,ogrno[23] ile dizinin 24. terimini belirtir.Buradaki 0,1,2,...,23 deerleine dizinin indisi denir. Dizi eitleri: Yukarda tanmlanan dizinin herhangi bir elemanna ulamak iin tek bir indis yeterlidir.Bu biimdeki dizilere bir boyutlu diziler denir.Bunun gibi iki boyutlu, boyutlu, ..., n boyutlu (ok boyutlu) dizilerden de bahsedilebilir. Bir Dizinin Tanm: tip dizi_ad[eleman says]; (bir boyutlu dizi) tip dizi_ad[eleman says1] [eleman says2]; (iki boyutlu dizi) tip dizi_ad[eleman says1] [eleman says2] [eleman says3]; ( boyutlu dizi) ... Dizinin Elemanlarna Deer Atama: a) Dizinin elemanlarna verilecek olan deerler programn almas srasnda klavyeden scanf() fonksiyonu aracl ile tanmlanabilir. b) Aadaki biimde de diziye ilk deer atamad yaplabilir; <tr> <dizi ad> [ [uzunluk] ]={d1,d2,d3,..}; Not 1) Diziler tanmlanrken uzunluk belirtilmek zorunda deildir. 2) Dizi uzunluu belirtildiinde, dizi elemanlar uzunluk tan fazla sayda olamaz. rnek: a) int puan[5]={55,80,95,45,77}; b) float agirlik[7]={55.6,77,98.345,66.7,88,95.5,77}; c) char il[10]={'','z','m','i','r'}; 7

d) char okul[20]="zmir Fen Lisesi"; rnek: lk deeri zmir Fen olan bir karakter dizisini ekrana, karakter karakter yazdran bir program yazalm a) (cprog24.c) #include<stdio.h> char okul[10]={'','z','m','i','r',' ','F','e','n'}; int i; main() {clrscr();for(i=0;i<=9;i++)printf("%c",okul[i]);getch();} b) (cprog25.c) #include<stdio.h> char okul[10]="zmir Fen"; int i; main() {clrscr();for(i=0;i<=9;i++)printf("%c",okul[i]);getch();} rnek: Ad sayi olan tamsaylardan oluan 10 elemanl bir say dizisini a) scanf() fonksiyonu ile b) ilk deer atamas ile oluturalm. zm: a) (cprog26.c) #include<stdio.h> int sayi[10],i; void main() { for (i=0;i<=9;i++) { printf("\n %d say ->",i+1);scanf("%d",&sayi[i]);} getch();} b) (cprog27.c) #include<stdio.h> int sayi[10]={7,-13,4,55,2006,-2005,0,88,99,23}; main() {clrscr();getch();} Not: Burada main() ana fonksiyonu nnde void deyimi gryoruz.Bu deyim bir deer dndrmeyen fonksiyonlarn nne konulur.Burada konulmasa da olur. rnek: Yukarda oluturulan sayi dizisinin; a) 5. elemann yazdran; b) stenen sradaki eleman yazdran; c) Dizinin toplamn ve aritmetik ortalamasn buldurup sonucu ekrana yazdran kodlar ilave ediniz. zm: a) printf("%d",sayi[4]); b) printf("\n dizinin kanc elemann istersin?(1-10)");scanf("%d",&i); printf("%d",sayi[i-1]); c) (cprog28.c) #include<stdio.h> int sayi[10],i;long top;float ort; void main () { for (i=0;i<=9;i++) { printf("\n %d say ->",i+1);scanf("%d",&sayi[i]);} top=0; for(i=0;i<=9;i++)
Hasan KORKMAZ zmir Fen Lisesi

C Ders Notlar {top=top+sayi[i];}ort=top/10;printf("\n dizinin toplam = %ld",top); printf("\n dizinin ortalamas = %.3f",ort); getch();} rnek: 5 kiilik bir renci grubunun numaralarn ogrno dizisine atayarak, srayla alt alta listeleyen bir program yazalm. zm: (cprog29.c) #include<stdio.h> int ogrno[4],i; void main () { for (i=0;i<=4;i++) { printf("\nogrno[%d] no ->",i);scanf("%d",&ogrno[i]);} printf("\n Girilen elemanlar..."); for (i=0;i<=4;i++) {printf("\n %d. renci, ogrno[%d] -> %d" ,i+1,i,ogrno[i]);} getch();} rnek: Satr ve stunlardan oluan, dikdrtgen biimindeki reel say tablolarna matris denir. rnein;

fonksiyonu ile yazdrlan ifadenin balang noktas m. stun, n. satr olacaktr.Buna gre program aadaki gibi olmaldr: (cprog31.c) #include<stdio.h> float a[2][3];int i,j; void main () /*Matrisin elemanlar giriliyor*/ { for (i=0;i<=1;i++) {for(j=0;j<=2;j++) {printf("%d. %d. ",i+1,j+1);scanf("%f",&a[i][j]);}} /*Matris grntleniyor*/ clrscr();{ for (i=0;i<=1;i++) {for(j=0;j<=2;j++) {gotoxy(7*(j+1),i+1);printf("%.2f",a[i][j]);}}getch();}} rnek: Satr ve stun says eit olan ve esas kegen zerindeki elemanlar 1 geri kalan elemanlar 0 olan kare matrise birim matris denir.Buna gre klavyeden girilen n. (n20) mertebeden bir kare matrisi yazdran bir program yazalm. zm: (cprog32.c) #include<stdio.h> int a[21][21],i,j,n; void main () /*birim matris oluturuluyor*/ {printf("Birim matrisin mertebesini gir (n<=20) -> "); scanf("%d",&n);clrscr(); { for (i=1;i<=n;i++) {for(j=1;j<=n;j++) if (i==j) a[i][j]=1; else a[i][j]=0;}} /*Matris yazdrlyor*/ for(i=1;i<=n;i++){for(j=1;j<=n;j++) {gotoxy(3*j,i);printf("%d",a[i][j]);}}getch();} Not: Programdaki /* ile */ arasndaki blm derleyici tarafndan gz nne alnmaz.Bu blm aklama amal kullanlr. rnek: Klavyeden girilen n elemanl (n<=10) bir say dizisinin; a) stenen bir sradaki elemann ekrana yazdran; b) Dizinin en byk ve en kk elemann bulup yazdran; c) stenen iki say arasndaki elemanlar toplamn bulduran; d) Diziyi kkten bye doru sralayp ekrana yazdran bir program yazalm. zm: a) (cprog33.c) #include<stdio.h> int i,j,n;float a[10],x,eb,ek; void main() {clrscr(); printf("Dizi ka elemanl olsun? (n<=10) "); scanf("%d",&n); for(i=1;i<=n;i++){printf("%d . eleman\n",i); scanf("%f",&a[i]);} printf("\ndizininin kanc elemann istersin? "); scanf("%d",&n); printf("%d . sradaki eleman %.3f dir",n,a[n]);getch();} 8
Hasan KORKMAZ zmir Fen Lisesi

matrisi 2 satr 3 stundan oluan bir matris yani 2x3 lk bir matristir. Matrisler iki boyutlu dizilere bir rnektir.rnein yukardaki matris a matrisi olsun; burada a[1][1] in deeri 1; a[1][2] in deeri -3; a[1][3] in deeri 4; a[2][1] in deeri -2; a[2][2] in deeri 0; a[2][3] in deeri 0 dr. 2x3 lk bir matrisin elemanlarn girip, matrisi ekranda grntleyen bir program yazalm. (cprog30.c) #include<stdio.h> float a[2][3];int i,j; void main () /*Matrisin elemanlar giriliyor*/ { for (i=0;i<=1;i++) {for(j=0;j<=2;j++) {printf("%d. %d. ",i+1,j+1);scanf("%f",&a[i][j]);}} /*Matris grntleniyor*/ { for (i=0;i<=1;i++) {for(j=0;j<=2;j++){printf("\t%.2f",a[i][j]);}printf("\n");} getch();}} Not: 1) Matris grntlenirken i-ie iki tane for dngs kullanlmtr.i deikeni satr saysn, j deikeni ise stun saysn tutmaktadr. { for (i=0;i<=1;i++) {for(j=0;j<=2;j++){printf("\t%.2f",a[i][j]);}printf("\n");} 2) Matrisin elemanlar ekrana yazdrlrken yazdrma formatnda \t ifadesi (bir tab atlatma) kullanlmtr. 3) i dngs tamamlandnda, bir sonraki dizi elemann satr bandan itibaren yazdrmak iin \n (new line) kullanlmtr. 4) Matrisin elemanlarn satr ve stunlar biiminde yazdrmak iin gotoxy(m,n); fonksiyonundan faydalanlabilir.Bu fonksiyondan sonra kullanlan printf

C Ders Notlar b) (cprog34.c) #include<stdio.h> int i,j,n;float a[10],x,eb,ek; void main() {ek=9999;eb=-9999;clrscr();printf("Dizi ka elemanl olsun? (n<=10) ");scanf("%d",&n); for(i=1;i<=n;i++){printf("\n%d . eleman ",i); scanf("%f",&a[i]);} for(i=1;i<=n;i++){if (ek>=a[i]) ek=a[i];if (eb<=a[i]) eb=a[i];} printf("dizinin en kk eleman %.3f en byk eleman %.3f dir",ek,eb);getch();} c) (cprog35.c) #include<stdio.h> int i,j,n;float a[10],x,eb,ek; void main() {x=0;clrscr();printf("Dizi ka elemanl olsun? (n<=10) "); scanf("%d",&n); for(i=1;i<=n;i++) {printf("%d . eleman\n",i); scanf("%f",&a[i]);} printf("\naraln alt snrn gir =");scanf("%f",&ek); printf("\naraln st snrn gir =");scanf("%f",&eb); for(i=1;i<=n;i++){if (ek<=a[i] & a[i]<=eb) then x=x+a[i];} printf("toplam = %.2f dir",x);getch();} d) (cprog36.c) #include<stdio.h> int i,j,n;float a[10],x,eb,ek; void main() {clrscr();printf("Dizi ka elemanl olsun? (n<=10) ");scanf("%d",&n); for(i=1;i<=n;i++){printf("\n%d . eleman ",i); scanf("%f",&a[i]);} for(i=1;i<=n;i++) for(j=i;j<=n;j++){if (a[i]>a[j]) {x=a[i];a[i]=a[j];a[j]=x;}} printf("...... sralanm elemalar......"); for(i=1;i<=n;i++){printf("\n%d . eleman %.3f",i,a[i]);} getch();} rnek: -1 den dan 1 e kadar 0.1 er artla (21 elemanl) a adnda bir reel say dizisine aktarp kplerini de kup adl diziye aktarp listeleyen bir program yazalm. zm: (cprog37.c) #include<stdio.h> int i,n;double x,a[22],kup[22]; main() {clrscr();x=1;for(i=1;i<=21;i++){a[i]=x;kup[i]=a[i]*a[i]*a[i];x=x+0.1;} for(i=1;i<=21;i++)printf("\n%d %.2f %.3f ",i,a[i],kup[i]); getch();} String Dizileri: C'de, dier programlama dillerinde olduu anlamda string (karakter dizisi) yoktur.Bunu programc karakterlerden oluan bir dizi olarak tanmlar.Bunu char deyimi yardmyla yaparz. 9 Fonksiyonun Yaps: fonksiyon_tipi fonksiyon_ad(parametreler) {tanmlama blou; ana blok; ... return(geri dndrlecek deer);} rnek: Ad topla olan ve girilen iki tam saynn toplamn dndren bir fonksiyon tanmlayalm.Daha sonra 7 ile -13 n toplamn bu fonksiyonu kullanarak ekrana yazdran bir program yazalm. zm: (cprog39.c) #include<stdio.h> int topla(int a,int b) {return(a+b);} main() {clrscr();printf("toplam %d",topla(7,-13)); getch();} rnek: Adlar topla, cikar,carp ve bol olan drt fonksiyon tanmlayalm yle ki parametre olarak girilen iki sayy toplasn, karsn, arpsn veya blsn ve sonucu ekranda aadaki rnee benzer yazsn: 13.000 / 7.000 = 1.857 gibi. zm: (cprog40.c) #include<stdio.h> #include<conio.h> float topla(float a,float b) {return(a+b);}
Hasan KORKMAZ zmir Fen Lisesi

rnein 10 karakterlik ad adl bir stringi; char ad[10]; deyimiyle yapabiliriz. ayet karakter dizisinden birden fazla tanmlanacaksa bunu aadaki gibi; 2 boyutlu karakter dizisi ile yapabiliriz. char dizininad[eleman_says][string_uzunluu]; rnek: Haftann gnlerini, 10 karakterlik gun adl bir string dizisine aktarp srayla listeleyen bir program yazalm. zm: (cprog38.c) #include<stdio.h> int i; char gun[7][10]; main() {clrscr();for(i=1;i<=7;i++){printf("\n%d.gn ",i); scanf("%s",gun[i]);} for(i=1;i<=7;i){printf("\n %d. gn %s",i,gun[i]);} getch();} C de Fonksiyonlar: C de alt programlarn tm bir fonksiyon olarak tanmlanr.Genelde bir fonksiyon, tanmlanan ilemleri yaptktan sonra bir deer geri dndrr.Ancak fonksiyonun bir deer dndrmesi gerekmediinde fonksiyon tipi void olarak belirtilmelidir.

C Ders Notlar float cikar(float a,float b) {return(a-b);} float carp(float a,float b) {return(a*b);} float bol(float a,float b) {return(a/b);} float x,y;char kar; main() {clrscr();printf("\nilem yaplacak ilk say ->"); scanf("%f",&x); printf("\nilem yaplacak ikinci say ->");scanf("%f",&y); printf("\nilemi seiniz +, -, x, / ->");kar=getch(); switch(kar) {case '+':printf("%.3f + %.3f = %.3f",x,y,topla(x,y));break; case '-':printf("%.3f - %.3f = %.3f",x,y,cikar(x,y));break; case 'x':printf("%.3f x %.3f = %.3f",x,y,carp(x,y));break; case '/':printf("%.3f / %.3f = %.3f",x,y,bol(x,y));break;} getch();} rnek: Ad cizgi olan ve birinci parametre says kadar , ikinci parametre karakterini yan yana ekranda grntleyen bir fonksiyon yazp kullanan bir program yazalm. zm: (cprog41.c) #include<stdio.h> void ciz(int n,char kar) {int i;for(i=1;i<=n;i++) printf("%c",kar);} main() {char kar;int n;clrscr(); printf("\nhangi karakteri kullanacaksn ->"); kar=getch();printf("%c",kar); printf("\nka defa yazdracaksn ->"); scanf("%d",&n); ciz(n,kar); getch();} rnek: a) n bir doal say olmak zere 1 den n e kadar olan saylar toplamn topla(n) fonksiyonu ile bulduran, b) Saylarn kareleri toplamn topkare(n) fonksiyonu ile bulduran, c) Saylarn karekklerinin toplamn topkarekok(n) fonksiyonu ile bulduran, d) m ve n doal saylar olmak zere m den n ye kadar olan saylarn toplamn toplamn(m,n) fonksiyonu ile bulduran, e) n doal say olmak zere n! deerini faktoryel(n) fonksiyonu ile bulduran, 1 1 1 1 f) e saysnn seriye alm; e = 0! + 1! + 2! + 3! + ... olduuna gre; x reel say olmak zere serinin ilk n+1 terimini toplayarak e saysnn yaklak deerini bulan bir e(n) fonksiyonunu faktoryel(n) fonksiyonunu kullanarak yaznz. 2 3 x x x 1 x g) e = 0! + 1! + 2! + 3! + ... serisinden faydalanarak x reel say olmak zere serinin ilk n+1 terimini kullanan e(x,n) fonksiyonu ile bulduran bir program yazalm. zm: 10

a) (cprog42.c) #include<stdio.h> long topla(long n) {long i,t=0;for(i=1;i<=n;i++) t=t+i; return(t);} main() {long x;clrscr(); printf("\n1 den kaa kadar toplam istersin? scanf("%ld",&x); printf("1+2+3+...+%ld = %ld dir.",x,topla(x)); getch();}

");

Not: Bu program altrdmzda x yerine 70 000 gibi bir deer yazldnda negatif bir deer kar ki bu yanl bir sonutur.Bunun sebebi bu toplamn long snrn tatndandr.Bunu dzeltmek iin deikenleri long (yani uzun tam say) yerine double alabiliriz.Bunu aadaki programda grebiliriz. (cprog43.c) #include<stdio.h> double topla(long n) {long i;double t=0;for(i=1;i<=n;i++) t=t+i; return(t);} main() {long x;clrscr(); printf("\n1 den kaa kadar toplam istersin? scanf("%ld",&x); printf("1+2+3+...+%ld = %.0lf",x,topla(x)); getch();} b) (cprog44.c) #include<stdio.h> double topkare(long n) {long i;double t=0;for(i=1;i<=n;i++) t=t+i*i; return(t);} main() {long x;clrscr(); printf("\n1 den kaa kadar toplam istersin? scanf("%ld",&x); printf("1^2+2^2+3^2+...+%ld^2 = %.0lf",x,topla(x)); getch();}

");

");

c) (cprog45.c) #include<stdio.h> #include<math.h> double topkarekok(float n) {float i;double t=0;for(i=1;i<=n;i++) t=t+sqrt(i); return(t);} main() {float x;clrscr(); printf("\n1 den kaa kadar toplam istersin? "); scanf("%f",&x); printf("1 den %.0f ye kadar karekokler toplam = %lf",x,topkarekok(x)); getch();} d) (cprog46.c) #include<stdio.h> double toplamn(long m,long n) {long i;double t=0;for(i=m;i<=n;i++) t=t+i; return(t);} main() {long x,y;clrscr(); printf("\nilk say ka olsun? ");scanf("%ld",&x); printf("\ikinci say ka olsun? ");scanf("%ld",&y); printf("%ld+%ld+...+%ld = %.0lf",x,x+1,y,toplamn(x,y));
Hasan KORKMAZ zmir Fen Lisesi

C Ders Notlar getch();} e) (cprog47.c) #include<stdio.h> double faktoryel(int n) {int i;double c=1;for(i=1;i<=n;i++) c=c*i; return(c);} main() {int x;clrscr(); printf("\nka faktryel istersin? ");scanf("%d",&x); printf("%d! = %.0lf",x,faktoryel(x)); getch();} f) (cprog48.c) #include<stdio.h> double faktoryel(int n) {int i;double c=1;for(i=1;i<=n;i++) c=c*i; return(c);} double e(int n) {int i;double t=0;for(i=1;i<=n;i++)t=t+1/faktoryel(i);return(1+t);} main() {int m;clrscr(); printf("\ne says iin scanf("%d",&m); printf(" %.20lf",e(m)); getch();}

rnein 15%4 ileminin sonucu, 15 in 4 e blmndeki kalan demektir ki bu da 3 tr. b) 2 den itibaren girilen bir sayya kadar olan asal saylar bulup srayla ekrana yazdran bir program asalmi(n) fonksiyonu kullanarak yazalm. zm: a) (cprog50.c) #include<stdio.h> main() {int i,n,s=0;clrscr(); printf("\hangi say ? ");scanf("%d",&n); for(i=1;i<n;i++) {if(i%n!=0) s++;} if(s!=0) printf("%d asal!",n); else printf("%d deil!",n); getch();} b) (cprog51.c) #include<stdio.h> #include<math.h> void asalmi(long n) {long i,s=0;for(i=2;i<=sqrt(n);i++) {if(n%i==0) s=s+1;} if(s==0) printf("%d ",n);} main() {long j,kac;clrscr(); printf("\nkaa kadar olan asal saylar istersin? "); scanf("%ld",&kac); for(j=2;j<=kac;j++)asalmi(j);getch();} C de Baz Standart Fonksiyonlar: conio.h Fonksiyonlar:

asal

ka

terim

toplansn?

");

g) (cprog49.c) #include<stdio.h> #include<math.h> double faktoryel(int n) {int i;double c=1;for(i=1;i<=n;i++) c=c*i; return(c);} double e(float x,int n) {int i;double t=0; for(i=1;i<=n;i++)t=t+pow(x,i)/faktoryel(i);return(1+t);} main() {int m;float y;clrscr(); printf("\n e nin ss ka olsun? ");scanf("%f",&y); printf("\ne ss %.0f says iin ka terim toplansn(n<30)? ",y); scanf("%d",&m); printf(" %.20lf",e(y,m)); getch();} y Not: Programdaki pow(x,y) fonksiyonu x olup math.h header dosyasnda tanmldr. rnek: a) Girilen bir doal saynn asal olup olmadn bulduran bir program yazalm. Not: Sadece 1 e ve kendine blnebilen saylara asal say denir.Bir n saysnn asal say olup olmadn denetlemek iin, 2 den n-1 e kadar saylarn n nin bleni olup olmadn aratrmak gerekir.Hatta 2 den n/2 ye kadar olan saylarn n nin bleni olup olmadn aratrmak yeterlidir.Hatta 2 den n ye kadar olan saylarn n nin bleni olup olmadn aratrmak yeterlidir.Bunun iin C de % (mod ilemi) kullanlabilir. 11

clrscr(); metin ekrann temizler ve krsr ekrannn sol st kesine konumlandrr. Kullanm: clrscr(); textbackground(); metin zemin rengini belirler. Kullanm: textbackground(renk kodu); Bu renkler 8 tane olup, adlar ve kodlar unlardr: Renk Ad Black Blue Green Cyan Red Magenta Brown LightGray Renk kodu 0 1 2 3 4 5 6 7 Trke kar. Siyah Mavi Yeil Turkuaz Krmz Mor Kahverengi Ak gri

textcolor(); text ekrannda, yaz (karakter) rengini belirler. Kullanm: textcolor(renk kodu);
Hasan KORKMAZ zmir Fen Lisesi

C Ders Notlar Programlarmzda kullanabileceimiz yaz renkleri ve kodlar aadaki listede verilmitir. Renk Ad Black Blue Green Cyan Red Magenta Brown LightGray DarkGray LightBlue LightGreen LightCyan LightRed LightMagenta Yellow White Renk kodu 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Trke kar. Siyah Mavi Yeil Turkuaz Krmz Mor Kahverengi Ak gri Koyu gri Ak mavi Ak yeil Ak turkuaz Ak krmz Ak mor Sar Beyaz

mavi rengin (1) binary kod karl 001; krmz rengin (4) binary kod karl 0100; deerlerini yan yana yazalm; 10010100, bu deerin onlu sayma dzeninde deerini hesaplayalm; 1.128+1.16+1.4=148 yapar. O halde program aadaki gibi yazabiliriz: #include<stdio.h> int i,j; main() {textattr(148);clrscr();printf("zmir");getch();} gotoxy(m,n); krsr text ekrannn n. satr m. stuna konumlanmasn salar. rnek: zmir Fen Lisesi yazsn, mavi zeminde, beyaz renkli olarak nce 1. stun 1. satra, 2. stun 2.satra, ..., 20. stun, 20. satra yazdran bir program yazalm. zm: (cprog55.c) #include<stdio.h> int i; main() {textbackground(1);textcolor(15);clrscr(); for(i=1;i<=20;i++) {gotoxy(i,i);printf("zmir Fen Lisesi");}getch();} window(su1,sa1,su2,sa2); text ekrannda sol st kesi sa1 satr, su1 stun ile sa st kesi sa2 satr, su2 stun olan bir pencere amaya yarar. rnek: Sol st kesi (5,10) sa alt kesi (25,15) koordinatl bir pencerenin zemin rengini krmz yapalm ve bu pencerenin tam ortasna gri renkli FL yazdran bir program yazalm. zm: (cprog56.c) #include<stdio.h> main() {window(5,10,25,15);textbackground(4);textcolor(7); clrscr();gotoxy(10,3);printf("FL");getch();} kbhit(); klavyedeki herhangi bir tua baslp baslmadn kontrol etmeye yarar.Bir tua baslmad srece 0 deerini, basldnda 1 deerini dndrr. rnek: Ekrana www.ifl.k12.tr ifadesini; a) Srekli yazdran; b) Her (enter) tuuna bastka yazdran; c) Herhangi bir tua basana kadar yazdran birer program yazalm. zm: a) (cprog57.c) #include<stdio.h> main() {do{printf("www.ifl.k12.tr ");}while(1==1);} b) (cprog58.c) #include<stdio.h> main() {do{printf("www.ifl.k12.tr ");}while(getch());} 12
Hasan KORKMAZ zmir Fen Lisesi

rnek: Krmz zeminde beyaz renkle Trkiye yazsn yazdran bir program yazalm. zm: (cprog52.c) #include<stdio.h> main() {textbackground(4);clrscr();textcolor(15); printf("Trkiye");getch();} rnek: 8 fark renkli zeminde, 16 farkl yaz renginde, her (Enter) tuuna basldnda, ekrana "FL" yazdran bir program yazalm. zm: (cprog53.c) #include<stdio.h> int i,j; main() {clrscr();for(i=0;i<=7;i=i+1) for(j=0;j<=15;j++) {{textbackground(i);textcolor(j);printf("FL");} getch();clrscr();}} textattr(); text ekrannda yaznn yanp-snmesini,renk ve zemin rengi niteliklerini ayarlamaya yarar.Bu nitelikler 8 bit ile ayarlanr. lk biti yaznn yanp snmesini ayarlar, deeri 0-1 aralndadr.0 ise normal, 1 ise yanp-sner, Sonraki biti zemin rengini ayarlar, deeri 0-7 aralndadr, Son drt biti yaz rengini ayarlar deeri 0-15 aralndadr. rnek: Mavi zeminde krmz renkte yanp snen zmir yazsn yazdrmak iin ilgili nitelikleri hesaplayp ilgili program yazalm. zm: (cprog54.c) Yanp snmenin (1) binary kodu 1;

C Ders Notlar c) (cprog59.c) #include<stdio.h> main() {clrscr();do{printf("www.ifl.k12.tr" );} while(!kbhit());} lowvideo(); text ekrannda yaznn grntsn matlatrmaya yarar. highvideo(); text ekrannda yaznn grntsn parlaklatrmaya yarar. normvideo(); text ekrannda yaznn grntsn normal hale getirmeye yarar. wherex(); text ekranndaki krsrn (imlecin) o andaki bulunduu stun saysn (x pozisyonunu) elde etmeye yarar. wherey(); text ekranndaki krsrn (imlecin) o andaki bulunduu satr saysn (y pozisyonunu) elde etmeye yarar. rnek: Krsrn en son bulunduu satr ve stunu bildiren bir program yazalm. zm: (cprog60.c) #include<stdio.h> int sat,sut; main() {sat=wherex();sut=wherey(); printf("krsr en son (%d , %d) koordinatlarnda idi",sut,sat);getch();} string.h Fonksiyonlar: strcpy(str1,str2); C de herhangi bir stringi direkt olarak bir deikene atama yaplamaz.Bunun yerine strrcpy(); fonksiyonu ile kaynak karakter dizisini (str2 stringini), hedef karakter dizisine (str1 stringine) kopyalayabiliriz. strncpy(str1,str2,n); kaynak karakter dizisininin (str2 stringinin) ilk n karakterini, hedef karakter dizisine (str1 stringine) kopyalamaya yarar. strlen(str); str stringinin karakter saysn bulmaya yarar. strcat(str1,str2); str1 hedef stringinin sonuna, str2 kaynak stringini eklemeye yarar. strncat(str1,str2,n); str1 hedef stringinin sonuna, str2 kaynak stringinin ilk n karakterini eklemeye yarar. strcmp(str1,str2); str1 stringi ile str2 stringini karlatrmaya yarar.ayet str1 kkse geriye dndrlen say negatif, str2 daha bykse pozitif eitse sfrdr. strncmp(str1,str2,n); iki stringin ilk n karakterini karlatrmaya yarar. strlwr(str); str stringinin karakterlerini kk harfe evirmeye yarar. 13

strupr(str); str stringinin karakterlerini byk harfe evirmeye yarar. strstr(str1,str2); str1 de str2 stringini arar ve ilk bulduu yerin adresini dndrr. strchr(str,ch); str de ch karakterini arar ve ilk bulduu yerin adresini dndrr. strset(str,ch); str stringindeki karakterlerin tmn ch karakteri ile deitirir. strnset(str,ch,n); str stringindeki ilk n karakteri ch karakteri ile deitirir. strrev(str); str stringinitersine evirmeye yarar. math.h Fonksiyonlar: abs(x); x saysnn mutlak deerini bulmaya yarar. cos(x); radyan olarak belirtilen saysnn kosinsn bulmaya yarar. Not: Dereceyi radyana evirmek iin pi says (3.1415926) ile arpp 180 e blmek gerekir. sin(x); radyan olarak belirtilen saysnn sinsn bulmaya yarar. tan(x); radyan olarak belirtilen saysnn tanjantn bulmaya yarar. rnek: 135 nin tanjantyla 60 nin kosinsn ekrana yazdran bir program yazalm. zm: (cprog61.c) #include<stdio.h> #include<math.h> float pi=3.1415926; main() {clrscr(); printf("%f %f",tan(135*pi/180),cos(60*pi/180)); getch();} asin(x); -1 ile 1 arasndaki bir saynn arksinsn bulmaya yarar. acos(x); -1 ile 1 arasndaki bir saynn arkkosinsn bulmaya yarar. atan(x); x saysnn arktanjantn bulmaya yarar. x exp(x); e deerini bulmaya yarar. y pow(x,y); x deerini bulmaya yarar. log(x); x in doal logaritmasn (ln x) bulmaya yarar.

Hasan KORKMAZ zmir Fen Lisesi

C Ders Notlar log10(x); x in 10 tabanndaki logaritmasn (log x) bulmaya yarar. sqrt(x); x pozitif saysnn karekkn ( x ) bulmaya yarar. ceil(x); x saysn yukarya yuvarlamaya yarar. floor(x); x saysn aaya yuvarlamaya (tam deerini) yarar. dos.h Fonksiyonlar: delay(x); programn almasn x milisaniye durdurmaya yarar. sleep(x); programn almasn x saniye durdurmaya yarar. sound(x); bilgisayarn hoparlornden x hertzlik frekansta ses karmaya yarar. nosound(); bilgisayarn hoparlornden kan sesi durdurmaya yarar. rnek: Bilgisayarn hoparlornden 10 saniye 1000 hertzlik ses kartp sesini kesen bir program yazalm. zm: (cprog62.c) #include<stdio.h> #include<dos.h> main() {sound(1000);sleep(10);nosound();} stdlib.h Fonksiyonlar: randomize(); rastgele say reticisini balatmaya yarar. random(x); 0 ile x tamsays arasnda bir say retmeye yarar. rnek: a) 0 ile 100 arasnda 10 tane rastgele say reten bir program yazalm. b) 30 ile 50 arasnda rastgele bir say reten bir program yazalm. c) Girilen m tam says ile n tam says arasnda rastgele bir say reten bir program yazalm. zm: a) (cprog63.c) #include<stdio.h> #include<stdlib.h> long i; main(){clrscr();randomize();for(i=1;i<=10;i++) {printf("\n%d",random(100));}getch();} b) (cprog64.c) #include<stdio.h> #include<stdlib.h> lmain(){clrscr();randomize(); printf("\n%d",20+random(30));getch();}

c) (cprog65.c) #include<stdio.h> #include<stdlib.h> int m,n; main(){clrscr();printf("\nlksay = ");scanf("%d",&m); printf("\nkinci say = ");scanf("%d",&n); randomize(); printf("\n%d",m+random(n-m));getch();} rnek: Bilgisayarn rastgele tuttuu, 1 ile 100 arasndaki sayy bulmaya alacaz.Bilgisayar tahminimizi soracak, girdiimiz tahmin bilgisayarn tuttuu saydan kkse "Byltnz", bykse "Kltnz" yazacak.Sonuta ka defada bildiimizi ekrana yazdran bir program yazalm. zm: (cprog66.c) #include<stdio.h> #include<stdlib.h> int x,tahmin,say; main(){clrscr(); printf("\nSAYI BULMACA OYUNU"); printf("\n================"); printf("\n Bu oyun 1 ile 100 "); printf("\n arasnda tutulan "); printf("\n sayy bulma esa- "); printf("\n sna dayanr. "); printf("\nHaydi kolay gelsin."); randomize();x=1+random(100); do {printf("\nTahminini gir ...");scanf("%d",&tahmin); if(tahmin<x){printf("\nBiraz bylt...");} else if(tahmin>x){printf("\nBiraz klt...");}say++;} while(x!=tahmin); printf("\Tutulan say %d idi bunu %d defada bildin...",x,say); getch();} Cde Grafik: Cde grafik izdirmeye yarayan bir ok fonksiyon vardr.Bu fonksiyonlar graphics.h header dosyasnda bulunur.imdi bunlardan bazlarn grelim: graphics.h Fonksiyonlar: initgraph(); Donanm grafik arabirimine hazrlamak iin grafik srcs ve modunu grafik kartndan tanr ve arabirimi ykler. Kullanm: initgraph(&gsurucusu,&gmodu,surucuyolu); graphresult(); En son kullanlan hatal (almam) grafik kodunu verir.GrOk, graphics.h ta tanmlanm bir sabit olup 0 (sfr) deerine karlk gelir.Eer grafik komutu doru alm ise bu kod retilir. Kullanm: tamsaydeiken=graphresult(); rnein; hatakodu=graphresult(); grapherrormsg(); retilen grafik hata koduna karlk gelen mesaj, ngilizce olarak bir stringte verir. 14
Hasan KORKMAZ zmir Fen Lisesi

C Ders Notlar Kullanm: grapherrormsg(hatakodu); rnek: printf(Grafik hatas:%s\n, grapherrormsg(hatakodu);) closegraph(); Grafik ekran kapatarak, text (yaz) ekranna gemeye yarar. line(); Grafik ekranda, belirtilen noktalar arasnda bir doru paras (izgi) izer. Kullanm: line(x1,y1,x2,y2); imdi buraya kadar olan bilgilerle bir program yazalm. Kullanm: outtextxy(x,y,string); rnek: nce text ekrannda olduunu belirten, bir tua basldnda, grafik ortama geip, grafik ekranda, (0,0) koordinatl noktay, (100,200) koordinatl noktaya birletiren, bir tua basldnda grafik ortamn kapatp tekrar text ortamna dnen bir program yazalm. zm: (cprog67.c) #include<stdio.h> #include<graphics.h> main() {int gsurucusu=DETECT,gmodu,hatakodu;clrscr(); printf("imdi Text ortamndayz ...");getch(); initgraph(&gsurucusu,&gmodu,""); line(0,0,100,200);getch();closegraph(); printf("Tekrar text ortamna dndk...");getch();} cleardevice(); Grafik ekran siler. setcolor(); Grafik izgi rengini tanmlamaya yarar. setbkcolor();Grafik zemin rengini tanmlamaya yarar rnek: (cprog68.c) #include<stdio.h> #include<graphics.h> main() {int gsurucusu=DETECT,gmodu,hatakodu,i; clrscr(); initgraph(&gsurucusu,&gmodu,""); setbkcolor(1);for(i=1;i<=15;i++) {setcolor(i);line(0,0,100+25*i,200+25*i);getch();} cleardevice();getch();closegraph();getch();} Yukardaki programn altrlmas durumundaki olaylar belirtiniz. zm: 1) Ekran silinir. 2) Grafik ekrana geer. 3) Mavirenkli zeminde; 4) 1 den 15 e kadar izgi renklerini kullanarak; 15 rnek: (cprog70.c) #include<stdio.h> #include<graphics.h> main() {int gsurucusu=DETECT,gmodu; clrscr(); initgraph(&gsurucusu,&gmodu,"");
Hasan KORKMAZ zmir Fen Lisesi

5) Balangc (0,0) (sol st ke), bitimi (100,200) noktasna her seferinde 25 ile i saya deeri arpm kadar eklenerek bulunan noktaya, i saya deeri renkkodunda dor paralar izer. outtext(); Grafik ekranda bir string yazdrmaya yarar. Kullanm: outtext(string); rnek: outtext(Grafik Ekrani); outtextxy();Grafik ekranda, belirlenen koordinattan itibaren, bir string yazdrmaya yarar.

rnek: Grafik ekranda (10,50) koordinatl nokta ile (100,200) koordinatl noktalar arasn birletiren ve u noktalara srasyla A, B yazan [AB] doru parasn izdiren bir program yazalm. zm: (cprog69.c) #include<stdio.h> #include<graphics.h> main() {int gsurucusu=DETECT,gmodu; clrscr(); initgraph(&gsurucusu,&gmodu,""); outtextxy(10,50,"A");line(10,50,100,200); outtextxy(100,200,"B");getch();cleardevice(); closegraph();getch();} moveto(x,y); Piksel imlecini grafik ekrannn (x,y) koordinatna tar. moverel(dx,dy); Piksel imlecininin x koordinatn dx kadar, y koordinatn da dy kadar arttrr. lineto(x,y); Aktif piksel imlecinin bulunduu yerden, (x,y) koordinatl noktay doru paras ile birletirir. getmaxx(); Grafik ekrann maksimum x (yatay) koordinatn verir. getmaxy(); Grafik ekrann maksimum y (dey) koordinatn verir. getx(); Aktif piksel imlecinin x koordinatn verir. gety(); Aktif piksel imlecinin y koordinatn verir.

C Ders Notlar moveto(50,50);lineto(200,50);lineto(200,300); lineto(50,50);getch(); closegraph();}

Yukardaki programn ktsn tahmin edin. Ayn kty veren program sadece line(); fonksiyonu ile nasl yazarz? rnek: Grafik ekrannn, rastgele bir noktasndan balayarak, her defasnda bir tua bastmzda, ekrann rastgele bir noktasna doru bir izgi izen, c karakterine bastmzda program sonlandran bir program yazalm. zm: (cprog71.c) #include<stdio.h> #include<graphics.h> #include<stdlib.h> main() {int gsurucusu=DETECT,gmodu,x,y; char kar=''; clrscr(); initgraph(&gsurucusu,&gmodu,"");randomize(); x=random(getmaxx());y=random(getmaxy()); moveto(x,y); while(kar!='c'){kar=getch(); x=random(getmaxx());y=random(getmaxy()); lineto(x,y);}closegraph();} rectangle(x1,y1,x2,y2); (x1,y1) koordinatlar ve (x2,y2) koordinatlarn kegen kabul eden dikdrtgeni izmeye yarar. rnek: Aadaki programn ekran ktsn tahmin ediniz. #include<stdio.h> #include<graphics.h> main() {int gsurucusu=DETECT,gmodu,i; initgraph(&gsurucusu,&gmodu,""); for(i=1;i<=30;i++){setcolor(i); rectangle(20*i,50,50+20*i,200);i=i+2;}getch(); closegraph();} putpixel(x,y,renk); Ekrann (x,y) koordinatyla belirli yere renk kodlu renkte bir nokta (piksel) koymaya yarar. rnek: Her hangi bir tua her basta, ekrann rastgele noktalarna rastgele renkte noktalar koyan bir program yazalm. zm: (cprog73.c) #include<stdio.h> #include<graphics.h> #include<stdlib.h> main() {int gsurucusu=DETECT,gmodu,i,x,y; 16

clrscr(); initgraph(&gsurucusu,&gmodu,""); randomize(); do{i=random(15);x=random(getmaxx());y=random(getma xy());putpixel(x,y,i);getch();} while(1==1);closegraph();} getpixel(x,y); Ekrann (x,y) koordinatndaki noktann rengini verir. bar(x1,y1,x2,y2); (x1,y1) koordinatlar ve (x2,y2) koordinatlarn kegen kabul eden dikdrtgensel blge ve iini (kutu) izmeye yarar. Bar3d(x1,y1,x2,y2,derinlik,ust); (x1,y1) koordinatlar ve (x2,y2) koordinatlarn kegen kabul eden dikdrtgensel blgeye derinlik deeri ile belirli, 3 boyulu kutu izdirmeye yarar.Buradaki ust deeri 0 ise kutunun st ksm grnmez, 1 ise grnr. arc(x,y,basaci,bitaci,yaricap); Merkezi (x,y), basaci balang a deerinden, bitaci biti a deerine kadar, yaricap yarap uzunluunda bir ember yay izmeye yarar. circle(x,y,yaricap); Merkezi (x,y) ve yaricap yarap uzunluunda bir ember izmeye yarar. ellipse(x,y,basaci,bitaci,xyaricap,yyaricap); Merkezi (x,y), basaci balang a deerinden, bitaci biti a deerine kadar, xyaricap asal eksen uzunluu yarap,yyaricap yedek eksen uzunluu yarap kadar olan bir elips yay izmeye yarar. fillellipse(x,y,xyaricap,yyaricap); Merkezi (x,y), xyaricap asal eksen uzunluu yarap,yyaricap yedek eksen uzunluu yarap kadar olan ii dolu bir elips izmeye yarar. pieslice(x,y, basaci,bitaci,yaricap); Merkezi (x,y), basaci balang a deerinden, bitaci biti a deerine kadar ve yaricap yarap uzunluunda bir daire dilimi izmeye yarar.

#include<stdio.h> #include<graphics.h> #include<stdlib.h> main() {int gsurucusu=DETECT,gmodu,i,x,y; clrscr(); initgraph(&gsurucusu,&gmodu,""); arc(getmaxx()/2,getmaxy()/2,0,90,getmaxy()/2); ellipse(100,100,0,260,100,50); fillellipse(200,300,100,50);pieslice(300,100,30,120,100); getch(); closegraph();}

Hasan KORKMAZ zmir Fen Lisesi

C Ders Notlar rnek: (cprog74.c) Aadaki programn ekran ktsn tahmin edin. #include<stdio.h> #include<graphics.h> #include<stdlib.h> main() {int gsurucusu=DETECT,gmodu,i,x,y; clrscr(); initgraph(&gsurucusu,&gmodu,""); arc(getmaxx()/2,getmaxy()/2,0,90,getmaxy()/2); ellipse(100,100,0,260,100,50); fillellipse(200,300,100,50);pieslice(300,100,30,120,100); getch(); closegraph();} rnek: (cprog75.c) Aadaki oyun programn inceleyerek, neler olduunu aklaynz. #include<stdio.h> #include<graphics.h> #include<stdlib.h> #include<math.h> main() {int gsurucusu=DETECT,gmodu,i,j,r,x,y,tahx,tahy; float u,r1,puan=0; char cevap; clrscr(); initgraph(&gsurucusu,&gmodu,""); do{setcolor(4); randomize();x=random(getmaxx()); y=random(getmaxy());r=random(getmaxy()/2); circle(x,y,r);gotoxy(1,1); printf("Ekran (x):%d (y):%d",getmaxx(),getmaxy()); gotoxy(1,2);printf("Tahmin (x): "); gotoxy(1,3);printf("Tahmin (y): "); gotoxy(12,2);scanf("%d",&tahx); gotoxy(12,3);scanf("%d",&tahy); for(j=1;j<=5;j++) {setcolor(0);for(i=3;i<=9;i=i+3){circle(tahx,tahy,i);} sleep(1); setcolor(4);for(i=3;i<=9;i=i+3){circle(tahx,tahy,i);} sleep(1);} u=sqrt(pow((x-tahx),2)+pow((y-tahy),2)); r1=r;if(u<r1) {printf("Tam isabet...!");puan=puan+10*r1/(r1-u);} if(u==r){printf("Mthi...Tam merkezinden vurdunnn...!");puan=puan+100;} if(u>r){printf("Karavana...!");puan=puan-10*r1/(u-r1);} printf("\nPuan : %0.0f ",puan); gotoxy(65,24);printf("Devam m?(D/d)"); cevap=getch();clrscr();cleardevice();} while(cevap=='D' || cevap=='d'); }

17

Hasan KORKMAZ zmir Fen Lisesi

You might also like