14 Ekim 2008 Salı

C Temelleri

C Temelleri


Bu döküman tamamen tarafımca hazırlanmış C için basit bir giriş dökümanıdır.Şimdi eliniz de compiler varsayarak işe başlıyoruz.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:)Buraya kodlarımızı yazacağız.
Builder olmayan arkadaşlar compiler ın adnı yazın.Şimdi 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.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("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:)

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:)) C de Temeller-Devam
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 tanımlı olduğu kütüphane dosyaları.

Düzenleme tarihi:2004
Döküman tamamiyle bana aittir.

0 Yorum: