![]() |
|
|||||||
| Programlama dilleri ASP, Perl, Php, Html, Java gibi her tür programcılık dili için yardım... |
![]() |
|
|
Forum Araçları | Görüntüleme Biçimleri |
|
|
#1 (permalink) |
|
Etkisiz Üye
Giriş Tarihi: 24-10-2005
Mesajlar: 22
Rep Gücü: 4
Rep Puanı : 15
![]() |
C’de Temeller
Ş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 operatörünü kullancaz.Yani; printf("amca amca"); çıktı şoyle olacaktır. amca amca bu rada 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(" 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(" 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(" Bir 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 ) 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]=’ |
|
|
|
|
Reklam Vermek için ressam@gmail.com Adresine e-mail gönderiniz For Advertising contact ressam@gmail.com |