13 Ekim 2008 Pazartesi

Ders 5

selam arkadaşlar;
hatırlarsınız ki bundan onceki dersimizde dizileri görmüştük.Bu dersimizde ise stringleri gorebilirz demektir demektir bu.
Hatırlarsanız ders2 de değşkenlerden bahsetmiştik.int double float vs.vs.Ama bunların arasında char karşımıza çıkmadı.Aslında
double ve float da çıkmadı ancak ama olsun:)double ve float ondalıklı sayı için kullanılır.Neyse.char karakter harf tutmak için kullanılan
bir değişkendi.E biz kelime ve cümlelerle uğraşacamıza göre bunları harf taşıyan dizilere yani stringlerle halledecez.Şimdi
bi stringimiz olsun ve içerisinde FermaN yazsın.int B[6]; gibi bir şekilde dizimizi tanıtmış oluyorduk.Peki stringlerimizi nasıl tanıtacaz?_?
Tabiki aynı şekiin yandan yamiş şeklinde:)) char B[6]; şu anda elimizde 6 tane harf tutabilen bir stringimiz var.Şimdi buna sırasıyla
harflerimizi yerleştirelim.

B[0]='F';
B[1]='e';
B[2]='r';
B[3]='m';
B[4]='a';
B[5]='N';
B[6]='\0';

Aslında yukarıya bakacak olursak atadığımız harfleri ' ' işaretleri arasına yerleştirdik.char değişkeninde bir değişkene değer atarken bunları
kullancaz.ilk sıraya B[0]=F; demiş olsaydık F adında bir değişken sanacak bizim c bu F yi.Bu yüzden.Birde son değere \0 değerini
verdik.Bu nedemek arkadaşlar.Hatırlayın \n gibi bir operatörümüz vardı ve bu alt satıra geç demek oluyodu.Buradaki \0 ise
sona geldik string sona erdi dur bakalım.Demek oluyor ona göre:)Yukarıya bakarak bi string
için uzuuuuun uzun uraşacamızı gördünüz.tabiki olay boyle değil arkadaşlar biz.char A[]="FermaN"; desekdeolurdu.Burada
stringin uzunluğunu belirtmedik ancak compiler bu olayı kendiliğinden çözecektir stringin uzunşuğunu hemencecik kavraycak ve
sona ise \0 operatörünü yapıştırcaktır.Burada dikkat edeceğiniz bir husus varki arkadaşlar oda "" işaretlerini kullanmış olmamız bu sefer.
String belirlerken "" işaretlerini kullanıyoruz.Ancak harf yada karakter belirlerken ' ' işaretlerini kullanıyoruz.Mesela bizim bi stringmiz var
ve bu string üzerinde oynaşmalar yapabiliriz demektir.B[3]='\0'; dersek B[3] den sonraki kısım külliyen silinmiş olacaktır.Olay bu.
Şimdi birde bu stringi printf ve scanf de kullanmaya.Bunu nasssı yapcaz diyecek olursanız?_?
printf("%s", B); bu komut ekrana FermaN çıktısını vercektir.Burada pritfin içerisinde gördüğünüz %s i string okuturken kullancaz
Ama biz stringimiz belirli bir harfini olutmak istiyorsak aynen şoyle yapcaz;
printf("%c", A[B]); bu durumda ekrana r harfi gelecektir.Buradaki %c ise char türünde bir bir çıktı alacağımız belirtiyor.Yani burdada
aklınız karışmasın arkadaşlar.
scanf de ise olay printf ile aynıdır.
scanf("%s", A); şimdi bundan once benim yapmış olduğum hatayı başıma kakınç eden bi arkadaş vardı adını vemicem.Burada
scanf("%s",A); gibi bir ifade görünce yine "Aaaa yanlış yapmış yine bu adam" diyecektir ama bu sefer yanılacaktır.Çünkü stringlerimize
değer atarken & kullanmayız.Bunun sebebi ise pointerlerde annatacam.Aslında böyle uzun uzun printf ve scanf ile uğraşmak yerine kullanabileceğimiz
fonksyonlarımız var.Ama bunları soylemeycem:p desem yalan olur.Tabikide soyleyecem.
printf("%s", A); yerine puts(A); yazsakda aynı işi görecektir.
scanf("%s", A); yerinede gets(A); yazsak aynı şey olurmu?_?Olmaz.gets ile stringe tüm satırı işletebilirsiniz ancak scanf aynı işi görmez.
Mesela bi stringe "kral besiktas" gibi bi değer atıyacak olsak scanf sadece kral kısmını stringe
atar.Niye?_?.Çünkü scanf her boşluktan sonrasını ayrı bi input sanar.gets(A) yazarsak.A stringine "kral besiktas" tümüyl atancaktır.

Sıra geldi fonksyon yazma olayınaaaaaa.Bu güne kadar kodlarımızı hep main() içerisine yazdık arkadaşlar.Ama bazen oluyorki aynı kodları dört beş kez yazmamız gerekiyor.
Hemde karışıklığı onlemk için bu kendi fonksyonlarımıızı yaabilirz.Şimdi örneğimizi inceleyelim:

#include
int x;

int topla(int a, int b);

int topla(int a, int b){
x=a+b;
}

main(){
topla(3,4);
printf("%d", x);
}

Evt yukardaki kodları compile ettiğimizde karşımıza 7 sonucu gelcektir.Yularıdan sanırım pek bişey anlamadınız.Şimdi sırasıyla bunları anlatalım;

en başta bi tane int x; gördünüz.Bu ne kardeşim diyebilirsiniz.Bunu en sona bırakıyorum.Bunu scopelerle beraber anlatcam.topla adlı bir fonksyon belirledilk ve fonksyona
iki tane tam sayı değişkenimizide verdik.a ve b.topla içerisine ise x=a+b dedik.Yani a ve b ye verilecek değeere göre x sonuclandırılacaktır.Peki buraya kadar herşey tamam.
Fonksyonumuzu nasıl çağırdık? Tabikide main içerisine yazarak.main her zaman bizim kurtarıcımız olmuştur.Aslında main de başlı başına bir fonksyondur amma ve lakin
ana fonksyondur.Yani compiler ilk olarak main içerisindeki kodları işleme tabi tutacaktır.Neyse biz topla fonksyonumuza geri donelim.

Fonksyonlarımızı illakine int topla vs şeklindemi tanıtacaz.Tabiki hayır.Bunuda soa anlatcam.Şimdi topla fonlsyonu içerisindeki a ve be değişkenlerini herkes gördü sanırım.
topla(int a, int b) fonksyonunu çağırırken topla(3,4) dersek a=3 b=4 olur.Buradaki mantık bu.Beki şimdi ders başında scope dedim.Scope içerik anlamına getirilebilir.
Bakınız arkadaşlar.Şu kodları inceleyelim:

#include
int x;

int topla(int a, int b);

int topla(int a, int b){
x=a+b;
}

main(){
int a;
topla(3,4);
printf("%d", x);
scanf("%d", &a);
}

yukarıdaki kodlara iyi bakın arkadaşlar.int a iki tane!Alla Alla nasıl oluyor bu iş?Oluo.Çünkü ilk int a yani topla fonksyonunda tanımlamış olan a topla fonksyonunun scopesinde yani
içeriğinde tanımlı bir değişkendir.Diğer a değişkeni ise main fonksyonunun scopesinde tanımlıdır.Yani c bu iki a değişkeninide ayırt edebilir.Şimdi arkadaşlar hepiniz main fonklsyonu
içerisine bir tanede int x=3; şeklinde bi değişken tanımlamasını istiyorum.Bu değişkeni tanımladığınızda artık programın çıktısı 7 yerine 3 olacaktır.Çünkü burada program main içerisinde
tanımlı olan x i okuyacaktır.Kodlarınızı şu şekilde değiştirin bide arkadaşlar;

#include
int x;

int topla(int a, int b);

int topla(int a, int b){
x=a+b;
printf("%d\n", x);
}

main(){
int x=4;
topla(3,5);
printf("%d", x);
scanf("%d", &a);
}

Bu durumda ekrana 8 ve 4 rakamları gelecektir.Çünkü main içerisindeki printf main içerisinde tanımlı x'i okuyacak topla içerisindeki printf ise toplada tanımlı x i okuyacaktır.
Yani bu scope olayını iyi anlayın arkadaşlar.
Evet bu dersimiz bu kadar.Yani anlayıp anlamadığınızı belirtin arkadaşlar.Bakın anlamayıpta geçiştiriyosanız döverim:)Takılan arkadaşlar ister msn de ister forumda sorsun
ister mail atsın ister telefon etsin ister eve gelsin:)))))))Ama sorsun yani.Bu ders uzun mu oldu ne?Yorum bekliyom arkadaşlar bakın:)Bide bi odev verecem ama ne versem?

Buldum bunun içinde size random-randomize fonksyonunu anlatacam.Nedir bu random randomize?_?bu iki fonksyon sayesinde bilgisayar bize istediğimiz sayıda ve istediğimiz
aralıkta sayılar veririr.Örneğimizi inceleyelim.

#include
#include
#include

main(){
int i;
randomize();
for(i=0; i<5; i++)
printf("%d", random(25));

}

Yukarıdaki programı compile ettiğinizde ekrana 5 tane sayı gelecektir.Ve bu sayılar 0-25 aralığında olacaktır.0-25 aralığı nı random(25); fonksyonu ile belirtiriz.
Kaç sayı belirteceğimizi ise for döngüsü kullanarak.Dikkat ederseniz i=5 olana kadar random(25) yani 5 tane tam sayı belirtecek.Evt anlaşılmış olması lazım.Bide orada
yeni olarak görüyoruz.Çünkü bu fonksyonların prototipi bu başlık altındadır.Yani bu kütüphane dosyasında tanımlıdır. kullanma sebebimizi şimdilik
bilmesenizde olur:)

Bunu öğrendikte ne oldu diyebilirsiniz.Gösterecem şimdi size ne olduğunu:))) Bakın bi sayı bulmaca oyunu yapcanız arkadaşlar.Nası olcak.Önce bizden bi sayı istiycek
sora bilgisayar random randomize ile bi sayı belirleyip bizim sayımızı tahmin etmeye çalışcak.Tabi siz sayı aralığını küçültürseniz iki tarafında bilme şansı artar.Neyse sora
program bilgisayardan sayı alacak ve bizim tahminde bulunmamızı isticek.Biz bilirsek bizi tebrik etcek.Filan.Oyun neye göre bitcek.Ya bir oyuncu bilene kadar devam etsin yada
puanlama sistemi koyun.Bu anlattığım sayı bulmaca oyununu tamı tamına 10 fonksyon tanımlamıştım ve 14 tane tam sayı değişkenim vardı.Artık değişken tanımlayacak harf
kalmamıştı.Ama benim oyunda puanlama sistemi oyuna ilk kimin başlicanı belirleme filan vardı.Siz deneyin yapamazsanız ben size kendi yaptığımın kodlarını veririm:)
Bakın anlamayan olursa sorcak.Döverim demiştim.:)Hadi kolay gele!

Ders 4

arkadaşlar hatırlarsanız bundan once sizlere while dongüsünü if-else switch yapılarını anlarmıştım.Bu dersimizde ise

for döngüsü
ve array yani dizilerden bahsedeceyim.
Şidi oncelikle örneğimizi inceleyelim:

int a;
for(a=0; a<4; a++){
printf("ferman");
}

Şimdi sırasıyla bu kısmı inceleycek olursak: a=0; dedik ve ardındanda a<4 dediik.Bu şu demek oluyor.Arkadaşlar biz

dögüyü
4 kez tekrarlatmak istiyoruz.Yani eğer döngünün 3 kez tekrarlanmasını istiyor olsaydık a=1; a<4; yada a=0; a<3; gibi

ifadelerde
kullanabilirdik.a=0 buradaki başlangıç değeridir.yani a eşitlenmesi gerekn sayıya eşitlenene kadar a++ diyerek

artırılabilir.Şimdi
for döngüsünü anlattığımıza göre döngüleri sonlandırmak için bir sonlandırma ifadesi kullanacağız.Bunun adı break.Bunu

şu şekilde
kullancaz.Örneğimizi inceleyelim:

int a=1, b;
for(b=0; b<4; b++){
if(a==1){
break;
}
printf("ferman");
}

Yukarıyı inceleyecek olursak for döngüsü içerisine birde if yapısı ekledik eğer a=1 ise break ile döngüyü sona

erdirecek.Yani ekrana
ferman çıktısı verilmeyecek.Bunun gibi birkaç program kontrol ifadeleri var ancak onları daha sonra göreceğiz.

Gelelim for döngüsünün çeşitlerine.Biz for döngüsü en sık yukardaki biçimde ve şu şekilde kullancağız.

for(;;){
printf("ferman");
}

Yularıdaki döngümüzde for döngüsü içerisinde değişken v.s yok.Neden çünkü for döngüsü içerisindeki ;; sonsuz döngüyü

beliritr.
Yani yukardaki kodları derlenirse ekrana sürekli ferman çıktısı verilir.
for döngüsünde değişken döngü içersinde de tanımlanabilir.Örn:

for(int a=0; a<3; a++){
printf("ferman");
}

gibi.Yukarıdaki örnekte değişken for döngüsü içindedir.

-Array(Dizi)-
int a[20];
Yukarıdaki şekilde a adında 20 tane tam sayı değişken tutabilen bir array tanıttık.Esasen bunlar a[1] a[2] şeklinde

gitmesi lazımiken
ilk eleman[0] a atanıyor.Yani ikinci eleman a[1] de üçüncüsü ise a[2] de.Örneğin bu dizinin ilk elemanına bir değer

atıyalım:
int a[0]=2;
Bu şekilde a[0] dizininin elemanını 2 yaptık.Şimdi basit bir program yapalım.Bizden üç tane tamsayı istesin ve

bunlardan 2.dizideki
elemanı ekrana versin.

#include
main(){
int a[2];
for(int b=0; b<3; b++){
printf("\nBir sayi girin:");
scanf("%d",&a[b]);
}
printf("%d",a[1];
}

Şimdi yukarıdaki kodlarda aklınızı karıştıran yerler oldu sanırım ancak büyük ihtimalle. ve aklınızı en çok a[b];

bölümü karıştırdı.
Oncelikle int a[2] diyerek üç tamsayı tutabiliecek bir dizi tanıttık.daha sonra for dongüsü ile 3 tane tam sayı

girdisi alacağımız için
döngüyü başlattık.sonra bu döngü içerisine scanf("%d",&a[b]); ifadesini koyduk.Neden???
Arkadaşlar bakın.örneğin 50 dizilik bir array tanıttığımız zaman her dizi için ayrı ayrı scanf kullanırsak

olmaz.Adamın iflahı kesilir.
Bu yüzden bakın burayı iyi anlamaya çalışın:
b=0 diyerek a[b] dedik yani b=0 olduğundan a[b]=a[0] olacaktır.Yani doğal olarak ilk girdiğimiz tamsayı a[0] a

atanacaktır.
Daha sonra döngü başa donecek b++ ile b=1 olacak ve ardından a[1] dizisine girdiğimiz değer yazılcaktır.Aynı işlem

b=2 için de olcaktır.Yani
burada kısayol kullandık arkadaşlar.Bu ksımı anlamanız size yardımcı olacaktır.Yoksa aksi halde çok sayıda scanf ile
yakından arkadaşlığınız oluşacaktır:)Bundan sonra odev vermeyecem.Çünkü herkes odevi gelip benden alcak.Herkese farklı

odev
vercem.Bu derslik bu kadar arkadaşlar.Anlamayan olursa sorsun.Kolay gele!

Ders 3

ders ikide ki odevin kodlarını veriyorum:

#include
main(){
int kenar, cevre, alan;
int sonuc;
printf("Karenin kenar uzunlugunu girin:");
scanf("%d", &kenar);
cevre=kenar*4;
alan=kenar*kenar;
sonuc=cevre/alan;
printf("Islemin sonucu %d dir", sonuc);
}

yukarıdaki kodlardan anlamayanlar olursa solesin.yukarda sonucuda tam sayı olarak verdirdik.yani sonuc int ile tanımladık.
şimdilik bole yapmanız yeterli benim için.

pritf kullanımında ki bazı inceliklere değincem şimdi.örneğin biz printf ile alt alta satırlarda yazı yazdırmak istiyoruz.İşte o zaman
\n operatörünü kullancaz.Yani;
printf("amca\namca");
çıktı şoyle olacaktır.
amca
amca

bu rada \n satırı alta geçirmek için kullancamız operatördür.%d yi zaten anlatmıştım ders ikide.Ama şole bir durum söz konusu
oldu diyelim:Ben printfe iki tan sayı yazdırmak istiyom.Hatırlarsanız %d olan kısma sayı değeri kendini yazdırırdı.
mesela şöyle bi şey desek:

int x=4, y=3;
printf("deger %d",y,x);

Burada c hangi değeri yazacakki %d ye sadece bir değeri oraya yazcak.o değerde y olacak neden çünkü ilk sırada y yer alıyor.
Ama şu şekilde bir değişiklikle;
printf("deger %d %d",y,x);
dersek hem y hemde x değeri ekrana verilecektir.

scanf de de aynı şey geçerlidir:
scanf("%d", &y, &x ); gibi bir ifade yanlış olur.Bunun yerine
scanf("%d %d"&x,&y); ikisi içinde değerlerimizi girebiliriz.Eğer &y ile &x arasına "," koymasa idik değerleri 12 gibi yanyana
yazmak zorunda kalcaktık.

şimdi sıra geldi sorgu yapmak için kullanabileceğimiz kontrol ifadesi if-else yapısına;örneği inceleyelim.

if(i==3)
{
//işlemler dizisi
}

yukarıda if(i==3) diyerek eğer i 3 değerine eşitse { } parantezler arasındaki işlemleri gerçekleştir demektir.{ } arasına işlemlerimizi
yazarız.birde else vardırki buda değilse olarak kullanılır yani;

if(i==3){
//işlemler dizisi
}
else{
//işlemler dizisi
}

burada i 3 değerine eşit olmadığı zaman else ifadesinin içerisindeki değerler işletilmeye başlanır.else değilse anlamına getirilebiri.
if-else yapısını şu örneğimizle inceleyelim;

#include
main(){
int x=4;
if(x==5){
printf("\n x 4 mus");
}
else{
printf("x 4 degilmis");
}
}

gibi.Sıra geldi switch e.Switch de aynen if gibi daha çok sorgulama işlemi yapmak için kullanılır.Yani örneğimize bakalım:

#include
main(){
int x;
scanf("%d", &x);
switch(x ){
case 1: printf("x 1 mis");
case 2: printf("x 2 imis");
case 3: printf("x 3 imis");
}
}

Yukarıyı sırasıyla inceleyek.ilk 4 satırı zaten biliyonuz.Gelelim switc(x) dedimiz yere.Burada switche kontrol etmesi gereken
değişkenin adını soledik daha sonra { } parantezleri içerisine case1: deidk.case 1 x 1 e eşitse demektir.yani case burada
sorgulama yapan kişidr:)))bir çok koşul ifadesi kullancağımız zaman switche başvurailiriz.

sıra geldi while döngüsüne.Döngü nedir derseniz kendisine verilen işlemleri tekrarlatılması gereken sayıda tekrarlayan
yapılar diyebiliriz.Örneğimizi inceleyebilirz.

#include
main(){
int x=0;
while(x<4){
printf("amca");
x++;
}
}

yukarıda while(x<4) dedik yani bu demektirki eğer x 4 ten küçükse x değeri 4 e eşit olana kadar ekrana amca yazdır.Hımm.
Bu durumda x i 4 e şitleyecek bi yapı olması lazım.While döngüsünün içine baltığımızda x++; görüyoruz.x++ demektirki
x in değerini her seferinde 1 artır.yani döngü her başa sardığında yazdır sora x değerini 1 artır.Yukarıdaki programı çalıştırdığınızda
ekrana 4 tane amca yazısı gelcektir.şimdii sıra geldi ödeveki size kazık bi ödev vercem.

bizden iki sayı istesin.daha sonra aldığı sayıları toplasın ve çarpsın.onlarıda bize görüntülesin.
Kolay gelsin anlamayan olursa buraya yazsın!

int deger, sayi;
deger=0;
while(deger<10){
sayi=deger+1;
printf("\n deger % dir",sayi);
}

Ders 2

ders1 de gecikmeler okuyamamalar,yolcular vs.vs oluken okuyanlar ve anlayanlar için ders2 ye geçiyoruz:p

arkadaşlar bir x değişkeni düşünelim.x in değeri herşey olabilir.harf,rakan,sayı.ama biz şu an oncelikle x i sayı değişkeni olarak
tanımlayacağız.
orneğin:ders1 deki kodları hatırlayalım.o kodların arasına birde şöyle kodları dıpıştıralım:))

x=3;
printf(x);
Yukarıdaki kodları araya sokuverin.Daha sonra compile etmeye çalışın.Çalışın diyorum çünkü compile edemeyceksiniz.
Çünkü biz burada kafamıza göre bir harfe değer vermeye kalktık.c nerden bilcek bizim buna sayı değeri vereceğimizi,belkide
ben buraya harf değeri vercem.İşte c de böyle karışıklıklar olmaması için değişkenler vardır.Bizim en çok kullanacağımız değişkenler:
int: integer tam sayı değişkeni
char: character yani harf değerleri
double ise virgüllü sayı.
Biz şimdilik tam sayı değiişkeni olan x üzerinde duracağız.Örn:
int x; diyerek bir x değişkeni tanımlayabilirz.Ama bu değişkenler üzerinde kontrol yapabilmemiz içide bazı operatörler vardır:
+:toplama ve birbirine ekleme operatörü
-:eksiltme
*:çarpma
/:bölme
%:bölmede kalanı verme.
=:değer atama ve eşitleme operatörü.Bizim şu an konumuz tam sayı olduğu için bunları bilmemiz şimdilik kafi:)

şu kodları yazalım:

#include

main(){
int x, y;
x=5;
y=x+1;
printf("%d",y);
}

Şimdi.İlk satırlardaki olayları geçen derste açıkladıdydık zaten.int x, y; diyerek x ve y tam sayı değişkeni olarak tanımladık.
x=5; diyerek = operaörüyle x e 5 değerini atadık.Daha sonra y=x+1; diyerek y'yi x değerinden +1 fazla ata dedik.
printf içerisinde "%d" gibi bir ifade var.Burada da ekrana y değerini verdikki programın çıktısı 6 olcaktır.
Burada ,y ile y tamsayısını oku denmektedir.
Peki buradaki %d ne oluyor???printf ile burada ekrana bir çıktı vermek istiyoruz yine.Ama sadece x bir tam sayıdır demek
yeterli değildir.printf e de okunacak olan değerin hakkında bilgi verek gerekir.Buda biçimleme belirteçleriyle olur:
%d:tam sayı oku
%c:karakter
%f:kayen noktalı sayı
%s:karakter katarı...
bunlar gibi bir çok belirteç var arkaşlar.sırası geldimi bunlarada değincez.buradaki %d de bir tam sayı oku demektir.Ynai
printf("%d", y); türkçe meali y tam sayısının değerini oku!Bu kadar basit arkadaşlar.Şimdi ise şu kodları yazalım ve derleyelim:

#include
main(){
int x;
scanf("%d",&x);
printf("x in degeri %d dir", x);
}

şimdi değerli öğrenciler:)))burada karşımıza şu ana kadar hiç çıkmayan bir fonksyon var . scanf. nedir bu scanf??
scanf input yani girdi alır.Yani bu nedemektir arkadaşlar scanf burada x e değer ataycaktır.Yani bir girdi alcaktır x değeri için.
Peki scanf in yapısını biraz inceleyelim:
Aynen printf gibi meali ise şöyle olabilir: "x in değeri için girdi al.x'e işle."zira program compile edilip çalıştırıldığında ekran duracak
sizin bir değer girip enter basmanızı beklicekti.scanf içerisindeki &x ise değişik bir ifade.& "nın adresi"
gibi bir anlama sahiptir.x'e girilen değeri işlemek için & kullancas.Yani &x x'in adresi gibi bir anlama gelir.
sora grdiğiniz değeri tekrar size göstercektir.yani scanf printf gibi kullanılır şindiliki.
burada printf i biraz değişik kullandık."" işaretleri arasına cümle yazdık araya %d sıkıştırdık.Burada x değeri %d nin aldığı yere
çıktı olarak verilecektir.yani x'e 5 değeri verdiğinizi varsayarsak çıktı "x'in degeri 5 dir" olacaktır.yani bu araya cümle de dıpabiliriz.:)
Şimdiii.Sıra geldi ödev vermeye:bir karenin alanını ve çevresini hesapladıktan sonra alanın çevreye oranını veren bir program
yapın arkdaşlar.Biraz saçma gelebilir.Ama düşünürseniz yapabilirsiniz.Siz aslansınız:)))))
Programı yazan sakın kodları buraya yazmasın.msn den bana gelsin.sora kopya filan:p Sorunuz olursa forumda da msn de de
sorabilirsiniz.
hadi kolay gelsin arkadaşlar!

Ders 1

Merhaba arkadaşlar

Şimdi.Elinde builder bulunan arkadaşlar.Şu işlem sırasını izleyelim:
File>New>Console Wizard>WindowType Bölümüne(Console)Execution Type Bölünde(EXE)seçin ve oluşan unit.1cpp adlı
dosyanın içini külliyen silin:)(Builder 3 için)Buraya kodlarımızı yazacağız.
Builder 6 için ise: File>New>Other>Console Wizard>SourceType>C.Builder olmayan arkadaşlar compiler ın adnı yazın.Yanlız hiç birinize dev c++ onermiyorum.
Dersimize başlayalım.Aslıdan derslerimize Program Kontrol İfadeleri ile başlayacaktık ancak, 0 dan başlayan
arkadaşlarımız varmış.O yüzden bizde 0 dan başlayalım:)Şu kodları yazalım:

#include
main(){
printf("Merhaba");
return 0;
}

Bu program compile edildiğinde ekrana merhaba yazısını verir.
Yukarıdaki kodları sırasıyla inceleyelim şimdi:
#include bu satır bir kitaplık dosyasıdır.kitaplık dosyaları hep .h uzantılıdır.Bu kitaplk dosyaları içerisinde
girdi-çıktıların komutlarını içerisinde bulundurur.Zaten stdio açılımı standart input outputtur.printf bir outputtur.Programın başına


yazmadığımız sürece printf fonksyonu tanınmaz.Çünkü printf stdio.h içerisinde tanımlıdır.Her kütüphane dosyası içerisinde
farklı farklı fonksyonlar tanımlıdır.Yani kütüphane dosyaları her zaman karşımıza çıkacaktır.İlerde değişik fonksyonlara göre
farklı kütüphane dostlarıyla tanışacağız.Buradaki mantık anlaşılmıştır sanırım:)
İkinci satırdaki main() ise içine tüm fonksyonlarımızı yazacağımız bölümüdr.main i herzaman kullanacağız.main() yazdıktan

sonra
komutları açıp kapamış olduğumuz {} parantezleri içine yazacağız.Yani;
main()
{
Kodlarımız
}
şeklinde olacak.Ve geldik 3.satırdaki printf'e:Printf bunlar input output komutlardır.Bunları çook geniş olark anlatacam.Printf
ekrana çıktı vermek için kullanacağımız output tipinde tanımlı bir fonksyonudur
return 0 ise programın çıktısı olup olmadığını kontrol eder.Yanlız biz builder kullanıyoruz yani programlarımızın sonuna
return 0 ibaresini eklemzsek bir problem oluşmaz.Onemli bir nokta ise c de her fonksyondan sonra ";" işareti konmasıdır.
Her fonksyon sonunda muhakkak bulunur.Dikkat etmenizi istediğim diğer bir noktaysa c de büyük küçük har ayırımı vardır.
Eğer siz printf yerine Printf yazarsanız compiler hata verir.Ona göre:)))

Evet bu kodları yazdıktan sonra geldik compile olayına.Builder kullanan arkadaşlarımız once kodları yazdıkları unit1.cpp adlı
dosyamızı bir klasöre kaydetsinler.Ardından F9 tuşuna bastıkmı alın compile oldu işte exe dosyamız uniti kaydettiğimiz yerde
olacaktır.Ms-Dos komut sisteminden dosyayı kadettiğimiz dizine ulaşalım ve exe dosyamızı çalıştıralım.
Alın size çalıştı.Birdahaki derste görüşmek üzere buradaki mantıkları anlamanız onemli arkadaşlar.esasen .cpp uzantısı
c++ a aittir ancak on onemli değil bizler derlememizi yapabildiğimizden doalyı bir problem yok:)

Diğer compilerda compile ise:
Programımızı bir notpad de yazdıktan sonra bunu mesela "ilkprogramım.c" seklinde uzantısı .c olacak sekilde kaydediyoruz.
Sonra shell kullanıyorsak "gcc ilkprogramım.c" komutu ile compile ediyoruz.
Bulundugumuz klasorde a.out diye bir calıstırılabilir dosya olusucaktır. ./a.out yazarsanız program calısır.
exploit derleyenler bilirler :) Eger windowsda bi compiler kullanıyorsak.
Compilerın bulundugu klasore ilkprogramım.c yi atacaz ve compilerımızın kullanımına gore mesela
borland icin "bcc32 ilkprogramım.c" yazacaz komut isteminde.
(ama komut isteminde compilerın bulundugu klasore gelmemiz lazım once).
Sonra ilkprogramım.obj diye bi dosya olusturacak compiler.
Son adım olarak "make ilkprogramım.obj" yazarsak ilkprogramım.exe diye bi calıstırılabilir dosya olusucak.
Artık ilkprogramım.exe yazarak programı calıstırabiliriz.

arkadaşlar bir x değişkeni düşünelim.x in değeri herşey olabilir.harf,rakan,sayı.ama biz şu an oncelikle x i sayı değişkeni

olarak
tanımlayacağız.
İlk oğrendiklerimize şu kodları ekleyelim.

x=3;
printf(x);
Yukarıdaki kodları araya sokuverin.Daha sonra compile etmeye çalışın.Çalışın diyorum çünkü compile edemeyceksiniz.
Çünkü biz burada kafamıza göre bir harfe değer vermeye kalktık.c nerden bilcek bizim buna sayı değeri vereceğimizi,belkide
ben buraya harf değeri vercem.İşte c de böyle karışıklıklar olmaması için değişkenler vardır.Bizim en çok kullanacağımız

değişkenler:
int: integer tam sayı değişkeni
char: character yani harf değerleri
double ise virgüllü sayı.
Biz şimdilik tam sayı değiişkeni olan x üzerinde duracağız.Örn:
int x; diyerek bir x değişkeni tanımlayabilirz.Ama bu değişkenler üzerinde kontrol yapabilmemiz içide bazı operatörler vardır:
+:toplama ve birbirine ekleme operatörü
-:eksiltme
*:çarpma
/:bölme
%:bölmede kalanı verme.
=:değer atama ve eşitleme operatörü.Bizim şu an konumuz tam sayı olduğu için bunları bilmemiz şimdilik kafi:)

şu kodları yazalım:

#include

main(){
int x, y;
x=5;
y=x+1;
printf("%d",y);
}

Şimdi.İlk satırlardaki olayları geçen derste açıkladıdydık zaten.int x, y; diyerek x ve y tam sayı değişkeni olarak tanımladık.
x=5; diyerek = operaörüyle x e 5 değerini atadık.Daha sonra y=x+1; diyerek y'yi x değerinden +1 fazla ata dedik.
printf içerisinde "%d" gibi bir ifade var.Burada da ekrana y değerini verdikki programın çıktısı 6 olcaktır.
Burada ,y ile y tamsayısını oku denmektedir.
Peki buradaki %d ne oluyor???printf ile burada ekrana bir çıktı vermek istiyoruz yine.Ama sadece x bir tam sayıdır demek
yeterli değildir.printf e de okunacak olan değerin hakkında bilgi verek gerekir.Buda biçimleme belirteçleriyle olur:
%d:tam sayı oku
%c:karakter
%f:kayen noktalı sayı
%s:karakter katarı...
bunlar gibi bir çok belirteç var arkaşlar.sırası geldimi bunlarada değincez.buradaki %d de bir tam sayı oku demektir.Ynai
printf("%d", y); türkçe meali y tam sayısının değerini oku!Bu kadar basit arkadaşlar.Şimdi ise şu kodları yazalım ve derleyelim:

#include
main(){
int x;
scanf("%d",&x);
printf("x in degeri %d dir", x);
}

şimdi değerli öğrenciler:)))burada karşımıza şu ana kadar hiç çıkmayan bir fonksyon var . scanf. nedir bu scanf??
scanf input yani girdi alır.Yani bu nedemektir arkadaşlar scanf burada x e değer ataycaktır.Yani bir girdi alcaktır x değeri için.
Peki scanf in yapısını biraz inceleyelim:
Aynen printf gibi meali ise şöyle olabilir: "x in değeri için girdi al.x'e işle."zira program compile edilip çalıştırıldığında ekran

duracak
sizin bir değer girip enter basmanızı beklicekti.scanf içerisindeki &x ise değişik bir ifade.& "nın adresi"
gibi bir anlama sahiptir.x'e girilen değeri işlemek için & kullancas.Yani &x x'in adresi gibi bir anlama gelir.
sora grdiğiniz değeri tekrar size göstercektir.yani scanf printf gibi kullanılır şindiliki.
burada printf i biraz değişik kullandık."" işaretleri arasına cümle yazdık araya %d sıkıştırdık.Burada x değeri %d nin aldığı yere
çıktı olarak verilecektir.yani x'e 5 değeri verdiğinizi varsayarsak çıktı "x'in degeri 5 dir" olacaktır.yani bu araya cümle de

dıpabiliriz.:)

pritf kullanımında ki bazı inceliklere değincem şimdi.örneğin biz printf ile alt alta satırlarda yazı yazdırmak istiyoruz.İşte o

zaman
\n operatörünü kullancaz.Yani;
printf("amca\namca");
çıktı şoyle olacaktır.
amca
amca

bu rada \n satırı alta geçirmek için kullancamız operatördür.%d yi zaten anlatmıştım ders ikide.Ama şole bir durum söz konusu
oldu diyelim:Ben printfe iki tan sayı yazdırmak istiyom.Hatırlarsanız %d olan kısma sayı değeri kendini yazdırırdı.
mesela şöyle bi şey desek:

int x=4, y=3;
printf("deger %d",y,x);

Burada c hangi değeri yazacakki %d ye sadece bir değeri oraya yazcak.o değerde y olacak neden çünkü ilk sırada y yer

alıyor.
Ama şu şekilde bir değişiklikle;
printf("deger %d %d",y,x);
dersek hem y hemde x değeri ekrana verilecektir.

scanf de de aynı şey geçerlidir:
scanf("%d", &y, &x ); gibi bir ifade yanlış olur.Bunun yerine
scanf("%d %d"&x,&y); ikisi içinde değerlerimizi girebiliriz.Eğer &y ile &x arasına "," koymasa idik değerleri 12 gibi yanyana
yazmak zorunda kalcaktık.

şimdi sıra geldi sorgu yapmak için kullanabileceğimiz kontrol ifadesi if-else yapısına;örneği inceleyelim.

if(i==3)
{
//işlemler dizisi
}

yukarıda if(i==3) diyerek eğer i 3 değerine eşitse { } parantezler arasındaki işlemleri gerçekleştir demektir.{ } arasına

işlemlerimizi
yazarız.birde else vardırki buda değilse olarak kullanılır yani;

if(i==3){
//işlemler dizisi
}
else{
//işlemler dizisi
}

burada i 3 değerine eşit olmadığı zaman else ifadesinin içerisindeki değerler işletilmeye başlanır.else değilse anlamına

getirilebiri.
if-else yapısını şu örneğimizle inceleyelim;

#include
main(){
int x=4;
if(x==5){
printf("\n x 4 mus");
}
else{
printf("x 4 degilmis");
}
}

gibi.Sıra geldi switch e.Switch de aynen if gibi daha çok sorgulama işlemi yapmak için kullanılır.Yani örneğimize bakalım:

#include
main(){
int x;
scanf("%d", &x);
switch(x ){
case 1: printf("x 1 mis");
case 2: printf("x 2 imis");
case 3: printf("x 3 imis");
}
}

Yukarıyı sırasıyla inceleyek.ilk 4 satırı zaten biliyonuz.Gelelim switc(x) dedimiz yere.Burada switche kontrol etmesi gereken
değişkenin adını soledik daha sonra { } parantezleri içerisine case1: deidk.case 1 x 1 e eşitse demektir.yani case burada
sorgulama yapan kişidr:)))bir çok koşul ifadesi kullancağımız zaman switche başvurailiriz.

sıra geldi while döngüsüne.Döngü nedir derseniz kendisine verilen işlemleri tekrarlatılması gereken sayıda tekrarlayan
yapılar diyebiliriz.Örneğimizi inceleyebilirz.

#include
main(){
int x=0;
while(x<4){
printf("amca");
x++;
}
}

yukarıda while(x<4) dedik yani bu demektirki eğer x 4 ten küçükse x değeri 4 e eşit olana kadar ekrana amca yazdır.Hımm.
Bu durumda x i 4 e şitleyecek bi yapı olması lazım.While döngüsünün içine baltığımızda x++; görüyoruz.x++ demektirki
x in değerini her seferinde 1 artır.yani döngü her başa sardığında yazdır sora x değerini 1 artır.Yukarıdaki programı

çalıştırdığınızda
ekrana 4 tane amca yazısı gelcektir.

int deger, sayi;
deger=0;
while(deger<10){
sayi=deger+1;
printf("\n deger % dir",sayi);
}

arkadaşlar hatırlarsanız bundan once sizlere while dongüsünü if-else switch yapılarını anlarmıştım.Bu dersimizde ise for

döngüsü
ve array yani dizilerden bahsedeceyim.
Şidi oncelikle örneğimizi inceleyelim:

int a;
for(a=0; a<4; a++){
printf("admin");
}

Şimdi sırasıyla bu kısmı inceleycek olursak: a=0; dedik ve ardındanda a<4 dediik.Bu şu demek oluyor.Arkadaşlar biz dögüyü
4 kez tekrarlatmak istiyoruz.Yani eğer döngünün 3 kez tekrarlanmasını istiyor olsaydık a=1; a<4; yada a=0; a<3; gibi ifadelerde
kullanabilirdik.a=0 buradaki başlangıç değeridir.yani a eşitlenmesi gerekn sayıya eşitlenene kadar a++ diyerek

artırılabilir.Şimdi
for döngüsünü anlattığımıza göre döngüleri sonlandırmak için bir sonlandırma ifadesi kullanacağız.Bunun adı break.Bunu şu

şekilde
kullancaz.Örneğimizi inceleyelim:

int a=1, b;
for(b=0; b<4; b++){
if(a==1){
break;
}
printf("admin");
}

Yukarıyı inceleyecek olursak for döngüsü içerisine birde if yapısı ekledik eğer a=1 ise break ile döngüyü sona erdirecek.Yani

ekrana
admin çıktısı verilmeyecek.Bunun gibi birkaç program kontrol ifadeleri var ancak onları daha sonra göreceğiz.

Gelelim for döngüsünün çeşitlerine.Biz for döngüsü en sık yukardaki biçimde ve şu şekilde kullancağız.

for(;;){
printf("admin");
}

Yularıdaki döngümüzde for döngüsü içerisinde değişken v.s yok.Neden çünkü for döngüsü içerisindeki ;; sonsuz döngüyü

beliritr.
Yani yukardaki kodları derlenirse ekrana sürekli admin çıktısı verilir.
for döngüsünde değişken döngü içersinde de tanımlanabilir.Örn:

for(int a=0; a<3; a++){
printf("admin");
}

gibi.Yukarıdaki örnekte değişken for döngüsü içindedir.

-Array(Dizi)-
int a[20];
Yukarıdaki şekilde a adında 20 tane tam sayı değişken tutabilen bir array tanıttık.Esasen bunlar a[1] a[2] şeklinde gitmesi

lazımiken
ilk eleman[0] a atanıyor.Yani ikinci eleman a[1] de üçüncüsü ise a[2] de.Örneğin bu dizinin ilk elemanına bir değer atıyalım:
int a[0]=2;
Bu şekilde a[0] dizininin elemanını 2 yaptık.Şimdi basit bir program yapalım.Bizden üç tane tamsayı istesin ve bunlardan

2.dizideki
elemanı ekrana versin.

#include
main(){
int a[2];
for(int b=0; b<3; b++){
printf("\nBir sayi girin:");
scanf("%d",&a[b]);
}
printf("%d",a[1];
}

Şimdi yukarıdaki kodlarda aklınızı karıştıran yerler oldu sanırım ancak büyük ihtimalle. ve aklınızı en çok a[b]; bölümü

karıştırdı.
Oncelikle int a[2] diyerek üç tamsayı tutabiliecek bir dizi tanıttık.daha sonra for dongüsü ile 3 tane tam sayı girdisi alacağımız

için
döngüyü başlattık.sonra bu döngü içerisine scanf("%d",&a[b]); ifadesini koyduk.Neden???
Arkadaşlar bakın.örneğin 50 dizilik bir array tanıttığımız zaman her dizi için ayrı ayrı scanf kullanırsak olmaz.Adamın iflahı

kesilir.
Bu yüzden bakın burayı iyi anlamaya çalışın:
b=0 diyerek a[b] dedik yani b=0 olduğundan a[b]=a[0] olacaktır.Yani doğal olarak ilk girdiğimiz tamsayı a[0] a atanacaktır.
Daha sonra döngü başa donecek b++ ile b=1 olacak ve ardından a[1] dizisine girdiğimiz değer yazılcaktır.Aynı işlem b=2 için

de olcaktır.Yani
burada kısayol kullandık arkadaşlar.Bu ksımı anlamanız size yardımcı olacaktır.Yoksa aksi halde çok sayıda scanf ile
yakından arkadaşlığınız oluşacaktır:)

hatırlarsınız ki bundan onceki dersimizde dizileri görmüştük.Bu dersimizde ise stringleri gorebilirz demektir demektir bu.
Hatırlarsanız ders2 de değşkenlerden bahsetmiştik.int double float vs.vs.Ama bunların arasında char karşımıza

çıkmadı.Aslında
double ve float da çıkmadı ancak ama olsun:)double ve float ondalıklı sayı için kullanılır.Neyse.char karakter harf tutmak için

kullanılan
bir değişkendi.E biz kelime ve cümlelerle uğraşacamıza göre bunları harf taşıyan dizilere yani stringlerle halledecez.Şimdi
bi stringimiz olsun ve içerisinde admin yazsın.int B[6]; gibi bir şekilde dizimizi tanıtmış oluyorduk.Peki stringlerimizi nasıl

tanıtacaz?_?
Tabiki aynı şekiin yandan yamiş şeklinde:)) char B[6]; şu anda elimizde 6 tane harf tutabilen bir stringimiz var.Şimdi buna

sırasıyla
harflerimizi yerleştirelim.

B[0]='F';
B[1]='e';
B[2]='r';
B[3]='m';
B[4]='a';
B[5]='N';
B[6]='\0';

Aslında yukarıya bakacak olursak atadığımız harfleri ' ' işaretleri arasına yerleştirdik.char değişkeninde bir değişkene değer

atarken bunları
kullancaz.ilk sıraya B[0]=F; demiş olsaydık F adında bir değişken sanacak bizim c bu F yi.Bu yüzden.Birde son değere \0

değerini
verdik.Bu nedemek arkadaşlar.Hatırlayın \n gibi bir operatörümüz vardı ve bu alt satıra geç demek oluyodu.Buradaki \0 ise
sona geldik string sona erdi dur bakalım.Demek oluyor ona göre:)Yukarıya bakarak bi string
için uzuuuuun uzun uraşacamızı gördünüz.tabiki olay boyle değil arkadaşlar biz.char A[]="admin"; desek de olurdu.Burada
stringin uzunluğunu belirtmedik ancak compiler bu olayı kendiliğinden çözecektir stringin uzunşuğunu hemencecik kavraycak

ve
sona ise \0 operatörünü yapıştırcaktır.Burada dikkat edeceğiniz bir husus varki arkadaşlar oda "" işaretlerini kullanmış

olmamız bu sefer.
String belirlerken "" işaretlerini kullanıyoruz.Ancak harf yada karakter belirlerken ' ' işaretlerini kullanıyoruz.Mesela bizim bi

stringmiz var
ve bu string üzerinde oynaşmalar yapabiliriz demektir.B[3]='\0'; dersek B[3] den sonraki kısım külliyen silinmiş olacaktır.Olay

bu.
Şimdi birde bu stringi printf ve scanf de kullanmaya.Bunu nasssı yapcaz diyecek olursanız?_?
printf("%s", B); bu komut ekrana admin çıktısını vercektir.Burada pritfin içerisinde gördüğünüz %s i string okuturken kullancaz
Ama biz stringimiz belirli bir harfini olutmak istiyorsak aynen şoyle yapcaz;
printf("%c", A[B]); bu durumda ekrana r harfi gelecektir.Buradaki %c ise char türünde bir bir çıktı alacağımız belirtiyor.Yani

burdada
aklınız karışmasın arkadaşlar.
scanf de ise olay printf ile aynıdır.
scanf("%s", A); şimdi bundan once benim yapmış olduğum hatayı başıma kakınç eden bi arkadaş vardı adını

vemicem.Burada
scanf("%s",A); gibi bir ifade görünce yine "Aaaa yanlış yapmış yine bu adam" diyecektir ama bu sefer yanılacaktır.Çünkü

stringlerimize
değer atarken & kullanmayız.Bunun sebebi ise pointerlerde annatacam.Aslında böyle uzun uzun printf ve scanf ile uğraşmak

yerine kullanabileceğimiz
fonksyonlarımız var.Ama bunları soylemeycem:p desem yalan olur.Tabikide soyleyecem.
printf("%s", A); yerine puts(A); yazsakda aynı işi görecektir.
scanf("%s", A); yerinede gets(A); yazsak aynı şey olurmu?_?Olmaz.gets ile stringe tüm satırı işletebilirsiniz ancak scanf aynı

işi görmez.
Mesela bi stringe "kral besiktas" gibi bi değer atıyacak olsak scanf sadece kral kısmını stringe
atar.Niye?_?.Çünkü scanf her boşluktan sonrasını ayrı bi input sanar.gets(A) yazarsak.A stringine "kral besiktas" tümüyl

atancaktır.

Sıra geldi fonksyon yazma olayınaaaaaa.Bu güne kadar kodlarımızı hep main() içerisine yazdık arkadaşlar.Ama bazen

oluyorki aynı kodları dört beş kez yazmamız gerekiyor.
Hemde karışıklığı onlemk için bu kendi fonksyonlarımıızı yaabilirz.Şimdi örneğimizi inceleyelim:

#include
int x;

int topla(int a, int b);

int topla(int a, int b){
x=a+b;
}

main(){
topla(3,4);
printf("%d", x);
}

Evt yukardaki kodları compile ettiğimizde karşımıza 7 sonucu gelcektir.Yularıdan sanırım pek bişey anlamadınız.Şimdi

sırasıyla bunları anlatalım;

en başta bi tane int x; gördünüz.Bu ne kardeşim diyebilirsiniz.Bunu en sona bırakıyorum.Bunu scopelerle beraber

anlatcam.topla adlı bir fonksyon belirledilk ve fonksyona
iki tane tam sayı değişkenimizide verdik.a ve b.topla içerisine ise x=a+b dedik.Yani a ve b ye verilecek değeere göre x

sonuclandırılacaktır.Peki buraya kadar herşey tamam.
Fonksyonumuzu nasıl çağırdık? Tabikide main içerisine yazarak.main her zaman bizim kurtarıcımız olmuştur.Aslında main de

başlı başına bir fonksyondur amma ve lakin
ana fonksyondur.Yani compiler ilk olarak main içerisindeki kodları işleme tabi tutacaktır.Neyse biz topla fonksyonumuza geri

donelim.

Fonksyonlarımızı illakine int topla vs şeklindemi tanıtacaz.Tabiki hayır.Bunuda soa anlatcam.Şimdi topla fonlsyonu

içerisindeki a ve be değişkenlerini herkes gördü sanırım.
topla(int a, int b) fonksyonunu çağırırken topla(3,4) dersek a=3 b=4 olur.Buradaki mantık bu.Beki şimdi ders başında scope

dedim.Scope içerik anlamına getirilebilir.
Bakınız arkadaşlar.Şu kodları inceleyelim:

#include
int x;

int topla(int a, int b);

int topla(int a, int b){
x=a+b;
}

main(){
int a;
topla(3,4);
printf("%d", x);
scanf("%d", &a);
}

yukarıdaki kodlara iyi bakın arkadaşlar.int a iki tane!Alla Alla nasıl oluyor bu iş?Oluo.Çünkü ilk int a yani topla fonksyonunda

tanımlamış olan a topla fonksyonunun scopesinde yani
içeriğinde tanımlı bir değişkendir.Diğer a değişkeni ise main fonksyonunun scopesinde tanımlıdır.Yani c bu iki a

değişkeninide ayırt edebilir.Şimdi arkadaşlar hepiniz main fonklsyonu
içerisine bir tanede int x=3; şeklinde bi değişken tanımlamasını istiyorum.Bu değişkeni tanımladığınızda artık programın çıktısı

7 yerine 3 olacaktır.Çünkü burada program main içerisinde
tanımlı olan x i okuyacaktır.Kodlarınızı şu şekilde değiştirin bide arkadaşlar;

#include
int x;

int topla(int a, int b);

int topla(int a, int b){
x=a+b;
printf("%d\n", x);
}

main(){
int x=4;
topla(3,5);
printf("%d", x);
scanf("%d", &a);
}

Bu durumda ekrana 8 ve 4 rakamları gelecektir.Çünkü main içerisindeki printf main içerisinde tanımlı x'i okuyacak topla

içerisindeki printf ise toplada tanımlı x i okuyacaktır.
Yani bu scope olayını iyi anlayın arkadaşlar.
Evet bu dersimiz bu kadar.Yani anlayıp anlamadığınızı belirtin arkadaşlar.Bakın anlamayıpta geçiştiriyosanız

döverim:)Takılan arkadaşlar ister msn de ister forumda sorsun
ister mail atsın ister telefon etsin ister eve gelsin:)))))))Ama sorsun yani.Bu ders uzun mu oldu ne?Yorum bekliyom arkadaşlar

bakın:)Bide bi odev verecem ama ne versem?

Buldum bunun içinde size random-randomize fonksyonunu anlatacam.Nedir bu random randomize?_?bu iki fonksyon

sayesinde bilgisayar bize istediğimiz sayıda ve istediğimiz
aralıkta sayılar veririr.Örneğimizi inceleyelim.

#include
#include
#include

main(){
int i;
randomize();
for(i=0; i<5; i++)
printf("%d", random(25));

}

Yukarıdaki programı compile ettiğinizde ekrana 5 tane sayı gelecektir.Ve bu sayılar 0-25 aralığında olacaktır.0-25 aralığı nı

random(25); fonksyonu ile belirtiriz.
Kaç sayı belirteceğimizi ise for döngüsü kullanarak.Dikkat ederseniz i=5 olana kadar random(25) yani 5 tane tam sayı

belirtecek.Evt anlaşılmış olması lazım.Bide orada
yeni olarak görüyoruz.Çünkü bu fonksyonların prototipi bu başlık altındadır.Yani bu kütüphane dosyasında

tanımlıdır. kullanma sebebimizi şimdilik
bilmesenizde olur:)

Bunu öğrendikte ne oldu diyebilirsiniz.Gösterecem şimdi size ne olduğunu:))) Bakın bi sayı bulmaca oyunu yapcanız

arkadaşlar.Nası olcak.Önce bizden bi sayı istiycek
sora bilgisayar random randomize ile bi sayı belirleyip bizim sayımızı tahmin etmeye çalışcak.Tabi siz sayı aralığını

küçültürseniz iki tarafında bilme şansı artar.Neyse sora
program bilgisayardan sayı alacak ve bizim tahminde bulunmamızı isticek.Biz bilirsek bizi tebrik etcek.Filan.Oyun neye göre

bitcek.Ya bir oyuncu bilene kadar devam etsin yada
puanlama sistemi koyun.Bu anlattığım sayı bulmaca oyununu tamı tamına 10 fonksyon tanımlamıştım ve 14 tane tam sayı

değişkenim vardı.Artık değişken tanımlayacak harf
kalmamıştı.Ama benim oyunda puanlama sistemi oyuna ilk kimin başlicanı belirleme filan vardı.Siz deneyin yapamazsanız

ben size kendi yaptığımın kodlarını veririm:)
Bakın anlamayan olursa sorcak.Döverim demiştim.:)Hadi kolay gele!

STRUCTLAR
C de en önemli noktalardan biridir.Kendine ait özellikleri olması en öenmli özelliğidir.Nası kendine ait özelliği

derseniz:Örneğin 123 sayısını ele alalım.Bu sayı üç basamaklı tek sayı 3’e kalansız bölünür rakamları birbirinin 1 fazlasıdır

vs.Bu özellikler 123 sayısı içindir.Struct larda aynen böyledir tanıtılan değişkenin özellikleri vardır.Örn;

Struct kisi{
İnt telno;
Char ad[10];
Char soyad[10];
};
Yukarıda ki örnekte kisi adlı structa ait özellikler vardır.Telefon numarası ismi soyismi.Bunlarıda biz

belirleyeceğiz.Belirlerkende “.” Operatörü kullanacaz.Yani Ahmet.telno gibi.Peki devam edelim.

#inlclude //strcpy kullanacağımız için//
Struct kisi{
İnt telno;
Char ad[10];
Char soyad[10];
};
kisi Ahmet;
Ahmet.telno=3156879;
Strcpy(Ahmet.ad, “Ahmet”);
Strcpy(Ahmet.soyad, “Tirpanoglu”);
printf("Telefon numarasi:%\n",Ahmet.telno);
printf("Adi:%d\n",Ahmet.ad);
printf("Soyadi:%d\n",Ahmet.soyad");

Yukarıda ki program çalıştığında ekrana üç mesaj kutusu içerisinde 3156879,Ahmet ve Tirpanoglu mesajları gelecektir.


Döküman 2004 yılında hazırlanmıştır.