Friday, September 10, 2010
  Aktif KonularAktif Konular  Forum Üyelerini GösterÜye Listesi  TakvimTakvim  Forumu AraArama  YardımYardım
  Kayıt OlKayıt Ol  GirişGiriş
Elektrik-Elektronik Mühendisliği
 Univerciyes : Mühendislik Fakültesi : Elektrik-Elektronik Mühendisliği
Mesaj icon Konu: 3 Ders'te C++ Yanıt Yaz Yeni Konu Gönder
Yazar Mesaj
Umuty
Asistan
Asistan
Simge

Kayıt Tarihi: 08 Ocak 2007
Konum: Ankara
Aktif Durum: Aktif Değil
Gönderilenler: 189
Alıntı Umuty Cevaplabullet Konu: 3 Ders'te C++
    Gönderim Zamanı: 08 Haziran 2007 Saat 22:36

Arkadaşlar netten bulduğum bu yazıyı sizlerle paylaşmak istedim.Umarım işinize yarar:

C++ 1 DERS
   Bu yazı dizisiyle C++ programlama diline yeni başlayanlara fazla ayrıntılara girmeden, işin pratik taraflarının anlatıldığı, akıcı ve zevkli bir yazı dizisi oluşturmayı planlıyorum. Amacım üç ders sonunda "Vaay be! Bende artık C++ programı yazıyorum!" dedirtebilmek. Yalnız bir kaç noktayı vurgulamakta fayda var. Bu yazı dizisi sizi cesaretlendirmek için yazılmış bir yazı dizisidir. Bu sebeple çok derin ayrıntıları kitaplarda ve kaynaklarda bulabileceğinizi söylemekte fayda var. Bunun dışında, burada öğrendiklerinizi bizzat uygularsanız çok faydasını görürsünüz. Ayrıca yazılım yazdıkça mükemmelleşilen bir sahadır. Okuyup geçerseniz hiç bir fayda göremezsiniz. Yazı dizimizin birinci dersinde, Dev C++ programını ve basit bir C++ programını uygulamayı öğreneceğiz.
C++ Dersleri, Ders.1 : Giriş
 
Bu yazı dizisi ile C++ hakkında genel bir bilgi birikimi oluşturulmasını ve insanları bu dil ile programlamaya özendirmeyi amaçlıyorum. Yazı dizisi bittiğinde herkes C++ dilini kullanarak, DOS tabalı program yazabilir hale gelecektir. İnsanların bilgisayar macerasının genelde Windows ile başladığı gerçeğinden yola çıkarak yazı dizimizin Windows tabanlı olacağını belirtmekte fayda görüyorum. Hemen bazı tanımlamaları yapalım. C++ dili bir programlama dilidir ve kendine has dil bilgisi kuralları bulunmaktadır. Bu dille program geliştirebilmek için bir derleyici (compiler) yazılımına ihtiyacımız vardır. Bizde yazı dizimiz boyunca herkesin edinebileceği ve Windows tabanlı olan Dev C++ yazılımını kullanacağız.
Dev C++ derleyici yazılımını programın kendi sitesinden edinebilir veya vereceğim direk bağlantıdan indirebilirsiniz.
Programımızın iki versiyonu bulunmaktadır. V.4 ve V.5. V.5 Beta sürecinde olduğundan dolayı bunun yerine V.4 kullanacağız ancak istenirse V.5 ile de çalışılabilir. Aşağıda V.4 bağlantısı bulunmaktadır.
Belirtmekte fayda var. Piyasada bir çok ticari derleyici ve geliştirme ortamı bulunmaktadır ancak Dev C++’ı seçmemizin temel nedeni, işimizi görmesi ve bedava oluşudur. Üst düzey programlamalar yapabilmek için Visual Studio, Borland Delphi ve Eclipse gibi derleyicilerden faydalanabilirsiniz.
Hemen sözü fazla uzatmadan programımızın kurulumuna geçelim. Sıkıştırılmış haldeki programımızı indirdikten sonra içeriği herhangi bir klasöre açarak setup.exe dosyasını tıklayarak kurulumu başlatıyoruz. İlk karşımıza çıkan ekranda lisans sözleşmesini kabul edip etmediğimizi soruyor. Burada Yes tuşuna basarak bir sonraki aşamaya geçiyoruz. Bir sonraki aşamada ise kurulum tipini soruyor. Burayı da ellemeden Next tuşuna basarak geçiyoruz ve kurulum başlıyor. Kurulum bittikten sonra Finish tuşuna basarak programın kurulumunu tamamlıyoruz. Buraya kadarki kısım standart kurulum olduğundan resim koymuyorum.

Gelelim Dev C++ programımızın tanıtımına. Başlat menüsündan Dev C++ sekmesinin olduğu yere gelip Şekil.1 deki Dev-C++ yazan yer tıklanarak program başlatılır.

Şekil.1

Karşımıza bizden ilk ayarlarımızı yapmak isteyen Şekil.2 deki gibi bir pencere çıkar, buradan simge takımımızı ve dosya ayarlarımızı yapabiliriz. Bu pencerede de hiçbir şeye dokunmadan devamlı OK tuşuna basarak geçiyoruz ve Şekil.3 deki gibi Dev C++ programını açıyoruz.

Şekil.2

Şekil.3

Konumuzun özü C++ ile programlama olduğundan dolayı programın kullanılışını yeri geldikçe ve lazım oldukça anlatacağım. Şimdi hemen Şekil.4 A sekmesindeki gibi File menüsünden New Source File seçeneği seçilir ve B sekmesindeki gibi bir kaynak penceresi açılır. Bu kaynak penceresi, en basit C++ uygulamasının temel iskeletinin hazır olarak sunulduğu, 9 satırlık koddan oluşmaktadır. Biz kodlamamızı yeşil çerçeve ile gösterilen alanda yapacağız. Hemen bu temel C++ programını inceleyelim. Programımızın parçaları kırmızı kutular içerisinde ve harfler ile işaretlenmiş olarak gösterilmektedir.

Şekil.4

  • C Kutusundaki kodlar; temel C++ kütüphanelerinin olduğu kodlardır. Bu kütüphaneler sayesinde, temel fonksiyonlarımızı kullanabiliriz. Başka bir kütüphaneyi veya kendi kütüphanemizi de buradan programa dahil ederiz.
  • D Kutusu ile gösterilen satır Ana Fonksiyonumuzun (main) girildiği satırdır. G Kutucukları ile gösterilen kıvırcık parantezler arasındaki bölüm ana fonksiyonumuzun dahil olduğu kısımdır. C++ programı main fonksiyonundan icra edilmeye başlanır.
  • E Kutusu ile gösterilen satırda, programımız bittikten sonra ekrandaki sonuçları görebilmemiz için ekranı dondurur. Eğer bu satır kaldırılırsa, işlemler yapıldıktan sonra DOS penceresi kapatılır ve sonuçlar görülmez.
  • F Kutusu ile gösterilen satır main programının sonunun geldiğini bildiren satırdır. Program bu satırı okuduğunda program durdurulur.

G Kutucukları içindeki parantezler main fonksiyonu’nun başlama ve bitme noktalarını belirtir. Bu kıvırcık parantezler arasındaki kalan bölge main fonksiyonuna aittir.

Şekil.5

En basit C++ kaynak dosyasını açtığımıza göre en basit C++ kodumuzu yazarak öğrenmeye başlayabiliriz. Geleneği bozarak “Merhaba Dünya” uygulaması yerine “Bilgi Aşkına!” uygulaması yazmayı tercih ediyorum.Programımızı yazmaya main fonksiyonundan sonraki ilk kıvırcık parantez ile system(“PAUSE”); satırı arasına yazıyoruz. Bu kısım Şekil.5’te yeşil şeffaf bant ile gösterilmiştir. Sarı şeffaf bant ile gösterilen kısımlar ise yazılan program dışında kodda olması gerekli olan kısımlardır.
 
Şimdi kodumuzu açıklayalım. Dikkat edilirse iki adet Cout fonksiyonu kullanılmıştır. Cout fonksiyonunu ekrana bir şey yazdırmak istediğimizde kullanırız. Şekil.5 te;
 
  • A ile gösterilen satırdaki kod ekrana “Bilgi Askina!” yazısını yazdırır.
  • B ile gösterilen kod ise ekranda tek satır aşağı inilmesini sağlar.
  • C kutucuğu ile gösterilen “;” karakteri bir şeye dikkatinizi çekmek maksadıyla verilmiştir. C++ programında bütün kod satırları “;” işareti ile biter ve o satırın sonunun geldiğini göstermek maksadıyla kullanılır.

Program kodumuzun işlevini anlattıktan sonra derlenmesi ve uygulanmasına geçelim. Programımız yazıldıktan sonra yazım hatalarının olup olmadığını denetlemek için önce derlenir(Compiling) ardından hatasız olan kodlar çalıştırılır(Running). Bunları ya üst menü’den yada klavye kısa yolları ile yapabiliriz. Şekil.6 ya bakılırsa üst menüdeki Execute sekmesinde seçenekler bulunmaktadır.

Şekil.6

  • A ile gösterilen kutuda Compile seçeneğine tıklayarak veya ctrl+F9 tuş kombinasyonunu kullanarak derleme işlemini yapabiliriz.
  • B ile gösterilen kutuda Run seçeneğine tıklayarak veya F9 tuşuna basarak derlenmiş olan kodumuzu çalıştırabiliriz.
  • C ile gösterilen kutuda Compile and Run seçeneğine tıklayarak veya ctrl+F10 tuş kombinasyonuna basarak kodumuzu önce derleyip ardına çalıştırabiliriz.
Burada C kutusundaki işlem en mantıklı yoldur. Önce kodumuz hatalara karşı denetlenir ve belleğe alınır. Eğer hatasız bir koda sahipsek ardından derlenir. Eğer kodumuzda hatalar var ise çalıştırılma işlemi gerçekleştirilmez.
Ctrl+F10 tuşlarına basarak programımızı derlediğimizde, karşımıza Şekil.7 deki DOS ekranı çıkar. Görüldüğü üzere ekrana belirttiğimiz yazı yazdırılmış ve tek satır aşağı inilmiştir.

< = height=234 width=340 ="http://www.elektroskop.org/makale/s/C%20%20Dersi/ders1/dev7.png">

Şekil.7
Buraya kadar yazdıklarımız eğer işler yolunda giderse olacaklardı. Peki ya kodlarda yanlışlık yaparsanız ve programınız çalışmazsa nerede yanlış yaptığınızı nasıl anlayacaksınız? İşte derleyiciler bunun için vardır. Siz hata yaptığınızda hangi satırda ne tip bir hata yaptığınızı derleyici size bildirecektir. Örneğin birinci cout satırının sonundaki “;” karakterini kaldıralım ve ctrl+F10 tuşlarına basalım. Doğal olarak programımız çalıştırılmayacak ve karşımıza Şekil.8 deki ekran çıkacaktır. Bu pencerede, kırmızı çerçevedeki total errors kısmında yazılan kodda kaç adet hata olduğu yazar. Continue tuşuna basılırsa kodlama sayfasına geri dönülür. Show all compiler results tuşuna basılırsa, çok ayrıntılı bir rapor karşınıza çıkar. Biz şimdilik, Continue tuşuna basarak kodlama sayfasına dönelim.

Şekil.8

Peki hangi satırda hata yaptığımızı nerede göreceğiz? Şekil.9 da A ile gösterilmiş olan pembe taralı alanda Line yazan sütunda hataların kaçıncı satırda meydana geldiği gösterilmektedir. B ile gösterilen küçük pembe kutucukla gösterilen alanda ise kod penceresinde o anda kaçıncı satırda olduğunuzu görürsünüz. Şekil.9 da açık yeşil kutucuklarla koddan hangi kısmı kaldırdığımızı görüyorsunuz. Yine aynı şekilde pembe bantlarla 3 adet satır taranmıştır.
 

Şimdi hatalı olduğunu bildiğimiz satır üzerine gelelim ve kaçıncı satırda olduğumuza bakalım. Dikkat ederseniz hatalı olmasına rağmen, o satır 7. Satır olarak görünmektedir. Bunun sebebi şudur. Derleyici bir sonraki “;” karakterine ulaşıncaya kadar derlemeye devam eder ve yakalayıncaya kadar olan satırları tek bir satır olarak kabul eder. Hatayı verirken, bir sonraki “;” karakterinin olduğu satırda hata verir ve bir sonraki “;” ile biten satır 9. Satır olduğundan dolayı, sanki 9. Satır’da hata varmış gibi görünür. Hatalarınızı araştırırken bu ince noktaya dikkat etmenizi öneririm. Genelde başlarda en çok yapılan hata, satır sonlarını “;” ile bitirmemektir. Bu şekilde hata kodu verildiğinden dolayı da aslında kodun sağlıklı olduğu satırda programcılar hata ararlar ancak bulamazlar.

Şekil.9

Hata ayıklama işi tecrübe ile kazanılan bir iştir. Örneğin herhangi bir fonksiyonun olduğu satırda hata meydana gelmiştir ve size o satırda hata olduğu söylenir ancak esas hatanın kaynağı o satırda kullandığınız fonksiyonun içindeki hata olabilir. Bu sebeple hatayı her zaman söylenen satırda aramamanızı tavsiye ederim.
 
Yazı serimizin ilk yazısını bitirirken, yaptıklarımızı şöyle bir özetlemek istiyorum.
 
  • Dev C++ programının indirilişini, kuruluşunu ve genel kullanım detaylarını öğrendik.
  • C++ programının temel yapı taşlarını ve anlamlarını öğrendik.
  • Basit bir “Bilgi Aşkına!” programı yazdık ve program derleme ve çalıştırmayı öğrendik.
  • Programda hatalı kodu bulma ve değerlendirme üzerine basit bir giriş yaptık.

 

Bir umuttur insani yaşatan...
Umuty

"TÜRKÇEMİZ TÜRKCHE'LEŞMESİN. "
IP
Umuty
Asistan
Asistan
Simge

Kayıt Tarihi: 08 Ocak 2007
Konum: Ankara
Aktif Durum: Aktif Değil
Gönderilenler: 189
Alıntı Umuty Cevaplabullet Gönderim Zamanı: 08 Haziran 2007 Saat 22:38

Yazı serimizin ikinci yazısı ile karşınızdayım. Bu yazımızda artık kolları sıvayıp kod yazmaya başlayacağız. Üç dersin sonunda kendimizi program yazabilecek gibi hissedebilmemiz için kod yazmamız şart. bu ikinci dersimizde, temel C++ yapılarından bahsedeceğiz. cin ve cout fonksiyonları, değişkenler, aritmetik işleçler, mantıksal işleçler, kullanıcı arayüzü ve if - else yapısı ile yazı serimizin ikinci yazısını noktalayacağız. Böylece basit mantığa dayalı C++ programlarını yazabilir hale geleceğiz. Örneğin son bölümde bir öğretmenin öğrencilerinin geçip geçmediğini tespit edebilmesi için düşünülmüş bir uygulama yazacağız. Tekrar uyarmakta fayda görüyorum. Mutlaka okuduklarınızı uygulayın.

C++ Dersleri, Ders2: C++ Temelleri

2.1.  cin ve cout fonksiyonları:

Dos tabanlı C++ programlamada kullanacağımız iki temel fonksiyondur cin ve cout fonksiyonları. Görevleri ise;

 
  • cin: Klavyeden bilgi alma.
  • cout: Ekrana bilgi gönderme.
 

Olarak özetlenebilir. Çoğu yeni programcı iki fonksiyonun işlevini karıştırmaktadır ancak bunların karışmaması gayet basittir. Eğer ekrana herhangi bir şey yazdıracaksanız bunu cout fonksiyonu ile yaparsınız. Eğer kullanıcıdan bir bilgi alacaksanız bunu cin fonksiyonuyla yaparsınız. Unutulmaması gereken nokta şudur;

 
  • Kullanıcıdan hem bilgi almayı hem de ekrana bilgi yazdırmayı aynı fonksiyon ile yapamazsınız.
 
<!--[if !supportLists]-->2.1.1.      cin ve cout Fonksiyonlarının Kullanımı:<!--[endif]-->

cin ve cout fonksiyonlarının da kendine kendine göre bir yazım kuralı vardır ve aşağıdaki gibidir.

 
  • cin>>değişken 1>>değişken 2>> … >>değişken n;
  • cout<<değişken 1<<değişken 2<< … <<değişken n;
 

Bu fonksiyonlarda değişken 1, değişken 2, şeklinde gösterilen yerlere, isimlendirilmiş değişkenler veya kelimeler gelir. “<<” ve “>>” yazımlarını art arda kullanarak istediğimiz kadar değişkeni kullanıcıdan alabilir veya ekrana yazdırabiliriz. Her iki satırın sonunun “;” karakteri ile bittiğine dikkatinizi çekmek istiyorum. Bu bir önceki bölümde anlattığımız C++ dilbilgisi zorunluluğudur. Bu fonksiyonlarda birden fazla değişken kullanılabileceği gibi sadece tek bir değişkende kullanılabilir.

 

Gelelim bu fonksiyonların nasıl çalıştığına;

  • cin fonksiyonu, kullanıcının klavyeden girdiği değerleri, sırasıyla değişken 1, değişken 2,… şeklinde o değişkenlerin içine yani belleğe kaydeder.
  • cout fonksiyonu, bellekte kayıtlı olan değişkenleri, değişken 1, değişken 2, … sırasıyla ekrana yazdırır. Burada ekrana değişken yazdırılabileceği gibi, sabit yazılarda yazılabilir.
 
2.1.2. Kullanıcı Arayüzü Olarak cout fonksiyonu:

cout  fonksiyonu ile sabit yazıların yazılabileceğini söylemiştik. Peki bunun ne gibi bir faydası olabilir? Diyelim ki yazdığınız program ile kullanıcıdan bir sayı girilmesini bekliyorsunuz ancak kullanıcı bundan nasıl haberdar olacak? Yahut bir işlem iki sayı girildi ve siz bu iki sayı ile bir matematiksel işlem yaparak sonucu ekrana yazdınız ancak bu sayının neyi ifade ettiğini kullanıcı nasıl anlayacak? İşte burada kullanıcı arayüzü kavramı devreye giriyor. Dos tabanlı programlama yaptığımızdan dolayı kullanıcı arayüzümüz de standart yazılardan oluşan bir kullanıcı arayüzü olacaktır. Bunu da bize Cout fonksiyonu sağlar. Yazılan C++ programındaki süreç genelde üç aşamalı olacaktır. Bu aşamalar;

 
  1. Kullanıcıyla iletişim kurarak gerekli bilgilerin alınması.
  2. Programın icra edilmesi.
  3. Program sonucunun anlamlı bir şekilde kullanıcıya sunulması.
 

Bu süreci şöyle bir örnek ile açıklayabiliriz.

 

Örnek 1: Kullanıcıdan iki sayı alan ve bu iki sayının çarpımını ekrana yazan bir program yazınız.

 

Cevap 1:  Programımızın gidişatı şöyle olacaktır. Kullanıcıdan önce cout fonksiyonu kullanılarak birinci sayının istendiği belirtilecek ve cin fonksiyonu ile birinci sayı alınacak. Sonra cout fonksiyonu ile ikinci sayı istenecek ve cin fonksiyonu ile ikinci sayı alınacak. İki sayı çarpılacak ve son olarak cout fonksiyonu ile iki sayının çarpımı ekrana yazdırılacak. Şimdi Dev C++ programında yazılmış olan Şekil.1 deki kodumuzu inceleyelim. İlk aklınıza takılan şey herhalde “//” ile başlayan satırların ne olduğudur. Bu satırlar yorum satırlarıdır. 

C++ programlama dilinde yorum satırları kod olarak görülmezler ve program derlenirken işleme alınmazlar. Bu satırların tek faydası programcının kendi için veya başkası için hatırlatıcı olmasıdır. Aradan uzun bir süre geçtiğinde yazdığınız kodların manasını hatırlamakta zorluk çekebilirsiniz fakat yorum satırları ile bu bir sorun olmaktan çıkar. Gelelim program kodumuzun açıklanmasına.


Şekil.1

  • A ile gösterilen kod bloğunda, programımızda kullanacağımız değişkenlerin belirtilmesi yapılır. Değişkenler int cinsinden tanımlanmıştır yani tam sayıdır. İleride değişken cinslerini göreceğiz.
    • a değişkeni birinci sayıyı
    • b değişkeni ikinci sayıyı
    • carpim değişkeni ise iki sayının çarpım sonucunu

Bellekte saklamak için kullanılır.

 
  • B ile gösterilen kod bloğunda kullanıcı önceden belirttiğimiz üç aşamalı süreçten ilki gerçekleşmektedir. cout fonksiyonları ile kullanıcıya hangi sayıların istendiği belirtilmiş, cin fonksiyonu ile kullanıcıdan belirtilen sayılar ve belleğe kaydedilmiştir.
  • C ile gösterilen kod bloğunda, üç aşamalı süreçten ikincisi gerçekleşmektedir. Programımız bir çarpma programı olduğundan çarpma işlemi bu kod bloğunda yapılmaktadır.
D ile gösterilen kod bloğunda ise üç aşamalı sürecin son aşaması gerçekleşir. cout fonksiyonu ile önce ekrana yazılacak sayının ne olduğu ekrana yazılarak kullanıcıya belirtilir, ardından carpim isimli değişken ekrana yazılarak sonuç kullanıcıya gösterilir. Programımızın 2 ve  4 sayılarının çarpımını yaptıktan sonraki ekran çıktısı şekil.2 deki gibi olacaktır.


Şekil.2


Bu örnekte cin ve cout fonksiyonları arasındaki ince fark anlatılmaya çalışılmıştır. Program yazılmaya ilk başlandığında temel yapılan hatalardan birisi, cin fonksiyonu içerisine yazı girilerek, ekranda kullanıcıdan yazı istenmesidir. Böyle bir şey mümkün değildir. cin fonksiyonu ekrana yazı yazdıramaz. Sadece belleğe kayıt yapar.  Programımızdaki bir başka detaya geçelim. Eğer ekrana herhangi bir sabit yazı yazdırmak istiyorsanız iki çift tırnak içinde yazınızı yazarak ekrana yazdırabilirsiniz. Örneğin programınızın girişinde kullanıcıya merhaba! demek istiyorsunuz, o zaman aşağıdaki kod satırını yazabilirsiniz.

 
cout << “Merhaba!”;
 
2.1.3. cout Fonksiyonu’nun Parametreleri

cout fonksiyonu içinde kullanılan parametreler ile ekrana yazılacak yazıların formatlanması sağlanır. Aşağıda bu parametreler ve görevleri yazmaktadır.

 
  • “\n”: Ekranda bir alt satıra geçilmesi sağlanır.
  • “\t” : Ekranda bir durak(tab) karakteri ileri gidilmesi sağlanır.
  • “\r” : Ekranda satır başına geçilmesi sağlanır.
  • “\v” : Ekranda dikey durak yapılmasını sağlar.
  • “\b” : Ekranda imleci bir karakter geri alır.
  • “\a” : Bilgisayar hoparlöründen alarm çalar.
 

Bu parametreler cout fonksiyonu içinde olduğu gibi kullanılırlar. Bu parametrelin kullanımını bir örnek ile açıklayalım.

 

Örnek 2: Alfabenin ilk üç karakterini ekrana aşağıdaki gibi yazdıran programı yazınız:

Ekran Çıktısı:
A
AB
ABC
 
Cevap 2: Bu programda kullanıcı ile etkileşim yoktur ve sadece ekrana yazı yazdırmak vardır. Bu sebeple sadece cout fonksiyonu kullanılarak, bu programı yazabiliriz. Dev C++ program kodumuz şekil.3 deki gibidir.

Şekil.3

Bu kodlarda mavi çerçeve içerisinde gösterilen parametreler sayesinde bir alt satıra geçilir. Ekran çıktısı ise Şekil.4 teki gibidir.


Şekil.4

Diğer parametreleri kod yazarak kendiniz deneyebilirsiniz. Ne derler? Buda ev ödevimiz olsun.

 
2.2. Değişkenler:
Şekil.8 de görüldüğü üzere, if-else yapısı, iki kısım halinde gösterilmiştir. A kısmı if yapısının olduğu kısımdır. B kısmı ise else yapısının olduğu kısımdır. Bu yazılım şeklideki püf noktaları şunlardır.C++ programlama dilinde bir çok değişken tipi bulunmaktadır. Bu değişkenlerin hepsini kapsamlı bir kaynakta bulabilirsiniz ancak ben burada en çok kullanılanlardan bahsederek bu bölümü çabukça geçmek istiyorum. Değişkenler kod yazılmadan önce tanımlanır ve tanımlandıktan sonra kullanılabilir. Tanımlanmadan kullanılan değişkenler olursa mutlaka hata mesajı alınacaktır. Bu sebeple unutmamamız gereken altın kural,  değişkenler programdan önce tanımlanmalıdır.Değişken tipleri ve ayrıntıları Şekil.5 deki tabloda verilmektedir.


Şekil.5

Değişkenler tanıtılırken birinci sütundaki isimleri gibi yazılarak tanıtılırlar. İkinci sütunda değişken tiplerinin açıklaması, üçüncü sütunda byte cinsinden ram de ne kadar yer tuttuğu yazmaktadır. Dördüncü ve son sütunda ise değişkenlerin alt ve üst sınırları belirtilmektedir. Bazı değişkenlerin alt ve üst sınırları signed ve unsigned olarak ayrılmaktadır. Bu ifadeler bulundukları değişken tipinin başına yazılır ve değişken’in işaretli veya işaretsiz olup olmadığını belirler. Örneğin eğer işaretsiz int tanımlanacaksa unsigned int yazılarak tanımlanır ve alt ve üst sahası buna göre değişir. char değişkeni karakterleri saklamak için kullanılır fakat sınır kısmında sayılarla belirlenmiş bir sınır görülmektedir. Bu sayılar karakterlerin sayısal karşılıklarıdır. ASCII karakter tablosundan bu karakterleri ve sayısal karşılıklarını bulabilirsiniz. float ve double değişkenler ise ondalıklı ve tam sayıları birlikte kullanabilmemizi sağlar.

Bu kadar çok değişken tipine neden ihtiyaç duyarız peki? Programlama yapılırken mükemmelleştirme(optimizasyon) en büyük hedeftir. Bellek kaynaklarını boş yere kullanmayan bir program daha iyi yazılmış bir programdır. Bu değişken tipleri ihtiyacın yanında mükemmelleştirme için gereklidir. Örneğin ince hesaplamaların yapılacağı bir programda int değişken yerine float kullanmak daha akıllıcadır. Böylece ondalıklı sonuçlar elde edilebilir ancak tam sayılı işlemlerin olduğu bir programda double kullanmak  boş yere bellek sarfiyatı yapmak demektir.
 
cin, cout ve değişkenler arasındaki iletişimi daha iyi kavrayabilmek için Şekil.6 ya bakmak yeterlidir. cin klavyeden aldığı bilgiyi değişkene kaydeder ve cout değişkende saklanan bilgiyi ekrana yazdırır. Bu cin ve cout arasındaki ilişkiyi son bir kez daha irdelemek açısından önemlidir.


Şekil.6



2.3. Aritmetik İşlemler:

C++ dilinde beş adet temel aritmetik işlem vardır. Bunlar aşağıda belirtilmiştir: 

  • Toplama         : +
  • Çıkarma         : -
  • Çarpma          : *
  • Bölme             : /
  • Modül            : %

Bu beş temel işlem değişkenler üzerinde yapılabilir. Nitekim Örnek 2 de iki sayıyı çarpan programda çarpma işlemini kullanmıştık. Burada temel dört işlem dışında modül alma işlemi bulunmaktadır. Bununda matematiksel modül alma işleminden farkı yoktur. Kullanımı ise diğer dört işlemci ile aynıdır. Küçük bir örnek ile modül işlemini anlatalım.

C++ kodumuz içerisinde:
a=b%c;

şeklindeki bir satır, b’nin c’ye bölümünden kalan’ı a’ya kaydedecektir. Yani örneğin;

a=10%4;

satırı sonucunda 10 ‘un 4’ e bölümünden kalanı a’ya kaydedecektir. Yani a=2 olacaktır.

 
2.3.1. Değişkenin Üzerinde İşlem Yapma Mantığı

Burada programlamaya yeni başlayanların kafasını genelde karıştıran bir teknikten bahsedeceğim. Yazılıma yeni başlayanlar programlamadaki aritmetik işlemleri, normal aritmetik işlem çerçevesinde değerlendirirler ve aşağıdaki yazım şeklide kafaların karışmasına neden olur. Hemen aşağıdaki örneğe bakalım;

 
Normal Matematikte:
 
a=a+2 ifadesi
a-a=2
0=2
şeklinde sağlanmayacaktır.
 
C++ Dilinde:
 
a=a+2 ifadesi,

a’nın değerinin iki artmasını sağlar. Burada unutulmaması gereken şey şudur. C++ dilinde her zaman önce eşitliğin sağ tarafı çözümlenir ardından sol tarafına eşitlenir. Yani eşitliğin sol tarafında tek bir değişken vardır ve sağ tarafında ise işlemler vardır. Bu örnekte ilk önce eşitliğin sağ tarafı çözümlenerek sonuç, bellekte bir taşıyıcı bölgede saklanır. Ardından bu taşıyıcı bölgedeki değer, sol taraftaki değişkene eşitlenir. Yani bu işlem ile a bir önceki değeri vardır birde sonraki değeri. Bu işlem Şekil.7 de daha anlaşılır bir şekilde izah edilmektedir. Başlangıçta

A=5; olsun A=A+2 işlemi yukarından aşağı Şekil.7 deki gibi gerçekleşir.

Şekil.7


Görüldüğü üzere değişken’in kendi üzerinde işlem yapılabilmektedir. Bu işlem diğer aritmetik işlemciler içinde geçerlidir.

  • A=A+2; //A’yı iki artırma
  • A=A-2;  //A’yı iki azaltma
  • A=A*2; //A’nın iki katını alma
  • A=A/2; // A’yı ikiye bölme
  • A=A%2; //A’nın 2 ye göre modülünü alma.

Bu işlemlerin aynısı aşağdaki satırlarlada yapılabilmektedir. 

  • A+=2; //A’yı iki artırma
  • A-=2;  //A’yı iki azaltma
  • A*=2; //A’nın iki katını alma
  • A/=2; // A’yı ikiye bölme
  • A%=2; //A’nın 2 ye göre modülünü alma.

Bunlara ek olarak, programlamada genel olarak, sıralı takip eden işlemler için sayaç kullanılmaktadır. Bu durumda da sayıların tek tek artması veya azalması icap etmektedir. Bu durumda ise bunu yapmanın birkaç yolu vardır. Bu yöntemler aşağıda verilmektedir.

 
  • A=A+1; veya A+=1; //Bir artırma
  • A=A-1; veya A-=1; //Bir azaltma 

Bu tip sık kullanımlar için C++ dilinde aşağıdaki gibi basit işleçler bulunmaktadır.

 
  • A++; //Bir artırma
  • A--;//Bir azaltma
 
2.4. İf – Else Koşullu Kontrol Yapısı
İf – Else yapısı, herhangi bir koşula bağlı olarak gerçekleşmesini istediğimiz kod satırlarında kullandığımız yapıdır. Yapısal olarak Şekil.8 deki gibi bir yazılımı vardır.


Şekil.8

 
  • <!--[if !supportLists]--><!--[endif]--><!--[if !supportLists]-->Hem if yapısında, hem de else yapısında ilgili kodlar “{ }” şeklinde gösterilmiş kıvırcık parantezler arasına yazılacaktır.

  • Her else kendinden bir önceki if yapısının koşuluna bağlı olarak çalışır.

Şekil.8 dende görüleceği üzere, parantez içindeki koşul sağlanırsa, koşula bağlı kodlar çalıştırılacak, eğer parantez içindeki koşul sağlanmazsa, koşul sağlanmadığında çalışacak kodlar çalıştırılacaktır.

 
2.4.1. Mantıksal İşleçler:

if yapısı içindeki koşullar mantıksal koşullar olacaktır. Bu mantıksal koşul işlemlerini yapabilmek için, C++ dilinde mantıksal işleçlerden faydalınılır. Bu mantıksal işleçler ve isimleri aşağıda verilmiştir. 

  • &&     : Mantıksal VE
  • ||          : Mantıksal VEYA
  • >         : Mantıksal Büyüktür
  • <         : Mantıksal Küçüktür
  • >=       : Mantıksal Büyüktür veya Eşittir
  • <=       : Mantıksal Küçüktür veya Eşittir
  • ==       : Mantıksal Eşittir
  • !          : Mantıksal Değildir

Mantıksal işleçler, aritmetik işleçler gibi iki değişken veya durum üzerinde kıyaslama yapılmasını sağlar. İsterseniz bir örnek ile anlattıklarımızı perçinleyelim. 

Örnek 3: Bir öğretmen öğrencilerinin vize notlarını ve final notlarını girerek o öğrencinin sınıfı geçip geçmediğini söyleyen bir program yazarak işlerini hızlandırmak istemektedir. Bunun için bir program yazmaya karar veren öğretmen, bir öğrencinin geçmesi için gerekli olan şartları gözden geçirir. Buna göre bir öğrencinin vize notunun %40’ı ile final notunun %60’ının toplamı 50 puan veya üzerindeyse öğrenci sınıfı geçmektedir. Buna öğretmen nasıl bir C++ programı ile sorununu çözümler?

Cevap 3: Gayet basit bir matematik sorusudur. Vize ve final notlarının yüzdelerini alıp toplayarak ortalama not bulunacaktır. Daha sonra ekrana notla birlikte, eğer ortalama not 50 ye eşit veya elliden büyükse geçti yazacak, küçükse kaldı yazacaktır. Bu kıyaslama da if – else yapısı içinde yapılacaktır. Bu programın C++ kodu, Şekil.9 da görülmektedir.


Şekil.9


Bu kod incelendiğinde;
 
  • A çerçevesindeki kodlarda, programımızda kullanacağımız değişkenleri kullanmaktayız. Bir öğrencinin geçmesi ve kalması ondalıklı hesaplarla mümkün olabileceğinden dolayı, bu problemde değişken olarak float tercih etmek daha doğru olacaktır.
  • B çerçevesindekikodlarda, kullanıcı arayüzü ile kullanıcıdan vize ve final notlarını almaktayız. Dikkat edilirse, cin ve cout fonksiyonları aynı satıra yazılmıştır. Bunun bir sakıncası yoktur çünkü noktalı virgülden sonra başka bir kodun yazımına deva edebiliriz.
  • C çerçevesindeki kodlarda, vize notu’nun %40’ı ve final notunun %60’ı alınarak toplanmakta ve ortalama ismindeki değişkene aktarılmaktadır.
  • D çerçevesindeki kod’da if yapısı bulunmaktadır. Ortalama değişkeni’nin değeri 50 den büyükse veya eşitse ekrana ortalama not ve Geçti yazılır. Bu çerçeve içerisinde d.1 ve d.2 olarak isimlendirilmiş iki küçük çerçeve bulunmaktadır.
    • d.1 çerçevesindeki kod ile ekrana “ortalama:” yazılır.
    • d.2 çerçevesindeki kod ile ekrana ortalama isimli değişkenin değeri yazdırılır.
  • E çerçevesindeki kod’da bir önceki mantıksal koşulun sağlanmaması durumunda icra edilecek kodlar bulunmaktadır. Eğer bir önceki if yapısının koşulu sağlanmazsa ekrana ortalama not ve Kaldi yazılır. Bu çerçevede e.1. ile gösterilen çerçeveye dikkat edilirse, alt satır parametresi yazıdan hemen sonra yazılmıştır. Bunda bir sakınca yoktur yazılabilir.

Görüldüğü üzere if – else yapısı mantıksal işlevlerin çözümlenmesinde kullanılmaktadır. 

Böylelikle C++ dersleri yazı serimizin ikincisini de bitirmiş oluyoruz. Yazımızın sonunda neler yaptığımızı tekrarlayalım.

  • cin ve cout fonksiyonlarını, işlevlerini ve kullanılışlarını,
  • Kullanıcı arayüzü kavramını ve cout fonksiyonunun bu amaçla nasıl kullanıldığını,
  • Değişken tiplerini ve kullanılışlarını,
  • Aritmetik ve Mantıksal İşlemleri,
  • İf-Else yapısını
Bir umuttur insani yaşatan...
Umuty

"TÜRKÇEMİZ TÜRKCHE'LEŞMESİN. "
IP
Umuty
Asistan
Asistan
Simge

Kayıt Tarihi: 08 Ocak 2007
Konum: Ankara
Aktif Durum: Aktif Değil
Gönderilenler: 189
Alıntı Umuty Cevaplabullet Gönderim Zamanı: 08 Haziran 2007 Saat 22:41
C++ Dersleri serimizin bu üçüncü dersinde, giderek artan C++ donanımlarımızla daha güzel ve eğlenceli programlar yazmaya başlıyoruz. C++ temellerini büyük ölçüde atmış olacağımız, bu üçüncü dersimizde kullanıcı ile olan iletişimimiz ve problemlerimizin karmaşıklığı artıyor. switch – case yapısı ile başlayacağımız bölümümüzde bu yapıyla bir hesap makinesi yaptıktan sonra ilk bilgisayar oyunumuzu while döngüsü ile yazacağız. Matematik pratiklerimizi konuşturacağımız for döngüsünün işlendiği bölümün ardından, bize program yazmada büyük kolaylıklar sağlayan diziler konusuna giriş yapacağız. Laf kalabalığına yer olmayan bu ders serisinin her kelimesini dikkatli okumak gerçekten çok önemli. Şimdiye kadarki derslerimizi  hiç bir kelimesini atlamadan çalışmış olan arkadaşlarımız'ın, basit C++ programlarını programlayabilir hale gelmiş olacaklarını umut ediyorum.

3.1. switch – case Yapısı:

switch – case yapısı ile belirli bir değişkenin durumuna bağlı olarak farklı kodların icra edilmesi sağlanır. Yani eğer önceden tanımlanmış belirli sayıda durum var ise ve bu durumların her biri için farklı bir iş yapılması isteniyorsa o taktirde switch – case yapısı kullanılabilir. switch – case yapısının kullanımı Şekil.1 de görülmektedir.

Şekil.1

Bu kullanım şeklinden görüldüğü üzere, bütün durumlar tek bir switch yapısı içinde tutulmaktadır. Çember çerçeveler içinde gösterilen kıvırcık parantezler arasında duruma bağlı case blokları yer alır. case blokları ise turuncu çerçeveli sarı diktdörtgenler içerisinde gösterilmiştir. Duruma bağlı kodlar bu case blokları içerisinde kullanılır. İstenilen sayıda case bloğu tanımlanarak istenilen sayıda duruma bağlı işlem gerçekleştirilebilir. case blokları’nın sırasının bir önemi yoktur, istenilen düzende yazılabilirler. İsterseniz bir hesap makinesi uygulaması ile bu yapımızın kullanılışını irdeleyelim.

Örnek 3.1: Kullanıcıdan iki sayı isteyen ve ardından dört işlemden herhangi birini seçerek bu işlemi yaptıran bir program yazınız.

Cevap 3.1: Bu uygulamada toplam dört adet matematiksel işleme bağlı bir program yazılacaktır. Bu sebeple switch case yapısı ile programı yazmak en mantıklı çözümlerden birisidir.Program kodumuz Şekil.2 deki gibi olacaktır.


Şekil.2

İlk olarak 4 adet int değişken tanımlıyoruz. Bu değişkenlerden a birinci sayıyı, b ikinci sayıyı, ilsem yapılacak işlemi seçtireceğimiz değişken, sonuc ise işlem sonucunu tutacağımız değişkenlerdir. sonuc işleminin int tipinden olması sebebiyle, bu program bölme işlemini yuvarlayarak hesaplayacaktır. İlerleyen satırlarda standart olarak kullanıcı ara yüzü ile istediğimiz değişkenleri alıyoruz. Burada kullanıcıdan yapılacak işlem için işlemin yanındaki sayıyı girmesini bekliyoruz. Kullanıcının girdiği sayıyı switch yapısına bildiriyoruz ve sayının değerine göre case bloklarında ilgili işlemi yaparak sonucA çerçevesi ile gösterilmiştir. Burada eğer kullanıcı verilen sayılar dışında bir değer girdiyse, otomatik olarak default bloğuna geçilir ve mantıksal olarak kullanıcı geçerli bir işlem yapmamış demektir. Bu işlemin geçersiz olduğunu tespit edebilmek için islem değişkenine, bizim işlem değerlerimiz dışında rasgele bir değer veriyoruz. islem değişkeni switch yapısında okunur okunma, ilgili case veya default bloğuna aktarılır ve bundan sonra bu sayıya ihtiyacımız yoktur. Bu sebeple default bloğunda bu sayıya başka değer atamamızda bir sakınca yoktur. değişkenine aktarıyoruz. Daha sonra programımız diğer bloklara uğramadan switch – case yapısı dışına çıkıyor ve programımızın icrasına devam ediliyor. Burada önemli bir nokta

Atanan değer, bir sonraki if – else yapısında test edilerek, eğer geçersiz bir değer girilmişse kullanıcıya hata mesajı verilir, girilmemişse ekrana sonuç yazdırılır. B çerçevesindeki kodlara dikkatle bakarsak burada bir farklılık görülecektir. Ne if bloğunda nede else bloğunda “{ }” (kıvırcık parantezler) kullanılmamıştır. Bu kullanım C++ da mümkündür. Eğer kodunuz tek bir satırdan oluşuyorsa, kıvırcık parantezler kullanmanıza gerek yoktur. İşlem değerinin verilen aralıkta girilmesi ile programın ekran çıktısı Şekil.3 deki gibi olacaktır.

Şekil.3

3.2. Döngüler:

Bir programlama dilinin olmazsa olmazlarıdır döngüler. Zaten programlama özünde, döngüler ve mantıksal durumlara bağlı olarak gerçekleştirilen bir eylemdir. Bir işlemin belirli şartlar çerçevesinde ard arda tekrarlanması için kullanılan programlama araçlarına döngüler denmektedir. C++ programlama dilinde üç tip döngü yapısı bulunmaktadır. Bunlar aşağıda verilmiştir.

  • while döngüsü
  • do-while döngüsü
  • for döngüsü
3.2.1. while döngüsü:
Bir işlemin bir mantıksal durum sağlandığı sürece tekrarlanmasını sağlayan döngü tipidir. Kullanım şekli Şekil.4 te görülmektedir.

Şekil.4

Kullanımı gayet basit olan bu döngü tipinde, while döngüsü başlangıcındaki mantıksal durum sağlandığı sürece, kıvırcık parantezler arasında çerçeve ile gösterilen aralıktaki kodlar yukarıdan aşağı icra edilir. Mantıksal ifade bozulduğu zaman veya içeriden break ifadesi ile program döngüden çıkmaya zorlandığı zaman döngüden çıkılır ve bir sonraki kodlar icra edilir. Döngümüzü anlamak için bir örnek çözümü yapalım. Bu örneğimizde de basit bir tahmin oyunu yazalım.

Örnek 3.2: Program 1 ile 100 arasında rasgele bir sayı tutacak ve bu sayıyı kullanıcının 7 tahminde bilmesini isteyecek. Eğer kullanıcı tutulan sayıdan büyük bir sayı girerse daha küçük bir sayı olduğunu, küçük bir sayı girerse daha büyük bir sayı olduğunu söyleyecektir. Eğer kullanıcı 7 tahminde sayıyı bilemezse kaybettiniz şeklinde mesaj yazacak. Bilirse kaç tahminde bulduğunu yazacak ve tebrik edecek.E bandı incelenirse srand(time(0)); fonksiyonu görülecektir. Bu fonksiyon, rasgelelik için sürekli, o anki sistem saatine göre, güncellenen bir referans noktamız olmasını sağlar. Rasgele bir sayı seçebilmek için yine E bandındakirand() fonksiyonu kullanılacaktır. Bu fonksiyon bir önceki satırda oluşturulan referans noktasına göre yeni bir sayı seçebilmemizi sağlayacaktır. Bu seçilen yeni sayının, 100 e göre modülünü alarak, sayımızın 0 ile 99 arasında olmasını sağlarız. Elde edilen modülü alınmış sayıya 1 ekleyerek sayımızın 1 ile 100 arasında seçilmesini sağlarız.

Cevap 3.2.: Programımızın kodu Şekil.5 te verilmektedir. Program kodu incelendiğinde standart program kütüphaneleri dışında birde F bandında görülen bir time.h kütüphanesi görülmektedir. Bu kütüphane kendi içinde hazır zaman fonksiyonları barındırmaktadır. Biz isesürekli değişen bir rasgelelik durumu oluşturabilmek için bu ko kütüphaneyi kullanacağız.

Şekil.5


Programımızın en başında öncelikle kullanılacak değişkenler tanımlanmıştır. Bunlardan sayi değişkeni programımızın seçtiği rasgele sayıyı saklamaktadır. hak isimli değişken, oyuncunun kaç deneme yaptığını saklamaktadır. tahmin isimli değişken kullanıcının yaptığı tahmini saklamaktadır. Önce hak değişkeni sıfıra eşitlenerek, kullanıcının deneme sayısı sıfırlanır. Ardından kullanıcı arayüzü ile kullanıcı bilgilendirildikten sonra, while döngüsü içinde, kullanıcının yaptığı deneme sayısı 7’den küçük olduğu sürece döngü çalıştırılır.

Programın daha iyi anlaşılması while döngüsünde için iç içe geçmiş öğeler farklı renklerle ışıklandırılmış ve her kapalı çerçeveye bir isim verilmiştir. A çerçevesi while döngüsü için seçilmiştir. Buradaki kodlar, yukarından aşağı icra edilir ve eğer while döngüsünün son satırına gelindiğinde mantıksal ifade bozulmamışsa while döngüsü’nün başlangıcına bir daha dönülür. while döngüsüne girer girmez, hemen bir tahmin yapılması isteneceği için, hak değişkeni bir artırılır. Ardından kullanıcıdan bir sayı istenir ve B çerçevesindeki if-else yapısında değerlendirme yapılır. D çerçevesindeki if bloğunda eğer tahmin edilen sayı tutulan sayıdan farklı ise oyuncu büyük veya küçük şeklinde uyarılır ve whileD çerçevesindeki if yapısına bağlı C çerçevesindeki else yapısında, kullanıcıya tebrik mesajı ile birlikte kaç denemede bildiği söylenir ve break yapısı ile döngüden çıkılır. Yani döngüden iki durumda çıkılmaktadır. döngüsünün başına dönülür. Eğer buradaki şart sağlanmazsa oyuncu sayıyı doğru tahmin etmiş demektir. Bu durumda

  • Doğru tahmin yapılırsa break ifadesi ile.
  • Art arda 7 yanlış tahmin yapılırsa, while döngüsünün mantıksal koşulu ile.

Her yanlış tahminde döngünün başına dönülür ve hak değişkeni bir artırılır. Böylece kaçıncı tahminde olunduğu tespit edilmiş olur.

while döngüsü biter bitmez başka bir if yapısı ile eğer 7 tahmin yapılmışsa yani sayı bilinememişse kullanıcıya tutulan sayı bildirilir. Burada dikkat ederseniz if yapısı tek başına kullanılmıştır. C++ dilinde buda mümkündür. Her if yapısının bir else yapısı ile kullanılması gerekmez. Bu programın ekran çıktısı Şekil.6 da görülmektedir. Oyunu sizde oynayarak veya arkadaşlarınıza oynatarak yazdığınız kod ile zevkli bir vakit geçirebilirsiniz.

Şekil.6

do-while döngüsünün kullanımı while ile aynı olduğundan dolayı anlatmıyorum. Ayrıntıları merak edenler kitaplardan bulabilirler.

3.2.2. for döngüsü:

Eğer bir işlemin belirli bir sayıda tekrarlanmasını istiyorsanız for döngüsünü kullanarak gerçekleştirebilirsiniz. for döngüsü genelde sınırlı sayıda tekrar eden ardışık işlemlerin gerçeklenmesinde kullanılır. İki tip for döngüsü vardır.

  • Azalan indexli for döngüsü
  • Artan indexli for döngüsü
Bu for döngülerinin kullanım şekilleri Şekil.7 de görülmektedir.


Şekil.7

İki for döngüsü de aynı mantık üzere çalışmaktadır. for döngüsünde a sayaç olarak kullanılmaktadır. Başka bir isimde verilebilir ancak kolaylık açısından genelde tek harf kullanılmaktadır. b başlangıç değeridir. Max ve Min değerleri ise taban ve tavan değerleridir.

for döngüsünde öncelikle sayaç başlangıç değerine ayarlanır.
  • Artan İndexli for Döngüsünde: Sayaç tavan değerden küçük olduğu sürece veya küçük eşit olduğu sürece döngü sayacı bir artırılır ve her seferinde yeşil çerçeve ile gösterilen yerdeki kodlar icra eldir. Taban değere ulaşılınca veya break komutu ile çıkmaya zorlanınca döngüden çıkılır.
  • Azalan İndexli for Döngüsünde: Sayaç taban değerden büyük olduğu sürece veya büyük eşit olduğu sürece döngü sayacı bir azaltılır ve her seferinde yeşil çerçeve ile gösterilen yerdeki kodlar icra eldir. Taban değere ulaşılınca veya break komutu ile çıkmaya zorlanınca döngüden çıkılır.

Yapının çalışma prensibini daha iyi anlamak için aşağıdaki örneği yapalım.

Örnek 3.3.: Kullanıcıdan bir başlangıç değeri ve bir bitiş değeri alan ve bu sayılar arasındaki 3 ile bölünebilen sayıları ve toplamını ekrana yazan programı yazınız.

Cevap 3.3.: Bir sayının üç ile bölünebilmesi demek, o sayının 3’e göre modülünün, yani 3 e bölümünden kalanı’nın sıfır olması demektir. Bu gerçekten yola çıkarak programımızı yazabiliriz. Bu durumda programımızın kodu Şekil.8 deki gibi olacaktır.


Şekil.8

Bu kod gayet basit ve sade bir kod dur. Burada en başta kullanıcıdan istenecek alt ve üst sınırlar için, baslangic ve bitis isimli değişkenler ve belirtilen sahada istenen sayıların toplamını saklamak için ise toplam isimli değişken tanımlanmıştır. Ardından toplam değişkeni sıfırlanarak sadece belirtilen sayıların bu değere eklenmesi için hazır duruma getirilmiştir. A çerçevesi içinde kullandığımız for döngüsü görülmektedir. Bu for döngüsünde kullanılan sayaç farklı bir harften seçilmiştir dikkat ederseniz. B çerçevesi içinde ise bir if yapısı görülmektedir. Bu if yapısı’nın C çemberi ile gösterilen mantıksal şartında, sayacın 3’e göre modülü’nün sıfıra eşit olup olmadığı sorgulanmaktadır. Yani sayacın o anki değerinin üçe bölünüp bölünmediği test edilmiştir. Eğer bölünüyorsa bu sayı ekrana yazdırılmakta ve görsellik açısından yanına “+” işareti konulmaktadır. Daha sonra toplam isimli değişkene eklenmektedir. Bu işlem başlangıç ve bitiş değerleri arasındaki her sayaç değeri için gerçekleştirilmektedir. for döngüsü sonuna kadar tekrar edildikten sonra programın sonunda sarı bant ile gösterilen satır ile sonuç ekrana yazdırılmaktadır. Kod çalıştırıldıktan sonraki ekran çıktısı Şekil.9 daki gibidir. Bu denemede başlangıç değeri 3 bitiş değeri 20 seçilmiştir.

Şekil.9

Kullanıcıdan bir sayı daha istenerek, belirlenen aralıklarda bu sayıya bölünebilen sayıların bulunması problemini de siz çözerseniz, konuyu daha iyi kavrayacaksınızdır.

3.3. Diziler (Arrays):
Diziler C++ dilinin programcılara sağladığı gayet faydalı bir veri yapısıdır. Bildiğiniz gibi değişkenlerde tek bir veri saklanmaktaydı ancak diziler ile bir veri gurubunun düzenli bir şekilde saklanması sağlanır. Bir değişken dizisi’nin tanımlanırken öncelikle dizinin hangi tip veriden oluşturulacağı, ardından kaç elemanlı bir dizi olduğu tanımlanır. Aşağıda int değişken tipinde, A isminde ve 6 elemanlı bir dizinin nasıl tanımlanacağı gösterilmiştir.
  • int A[6];
Bu dizinin görsel manada incelemesini yapacak olursak Şekil.10’a bakmamız yeterli olacaktır. Buradan da görüldüğü üzere, dizinin elemanları yan yana dizili bir sayı serisi olarak gösterilmiştir. Dizinin herhangi bir elemanına ulaşılmak istendiğinde, “[ ]” köşeli parantezler içine dizi elemanı’nın sıra numarası yazılır. Bu sıra numaraları, 0’dan başlar ve tanımlanan eleman sayısının bir eksiğine kadar devam eder.



Şekil.10

Örneğin A isminde, 6 elemanlı bir int dizisi tanımlayalım ve sırasıyla elemanların değerlerini A=[1,-1,30,12,5,14] olarak atayacak kod dizisi aşağıdadır.

int A[6];
A[0] = 1;
A[1] = -1;
A[2] = 30;
A[3] = 12;
A[4] = 5;
A[5] = 14;


Şekil.11

Bu kod satırlarının çalıştırılması sonucunda Şekil.11 deki bir atama tablosu oluşur. Bu kayıt yapıldıktan sonra herhangi bir elemana erişim için A dizisi içindeki sıra numarası verilerek dizi elemanına ulaşılabilir. Bu değişken yapısının kullanımını bir örnekle irdeleyelim.

Örnek 3.4: Kullanıcıdan 5 sayı alan ve alınan girilen sayılar kadar ekrana alt alta “*” karakteri yazdıran bir program yazınız.

Cevap 3.4:
Programımız basit bir dizi ve for döngüsü uygulamasıdır. Peki bu örnekte dizi kullanmamızın sebebi nedir? Kullanıcıdan toplamda 5 sayı alınacaktır. Eğer biz bu 5 sayıyı ayrı ayrı değişkenlerde saklayacak olursak, problemin kurgulanması çok zor bir hal alacaktır. Bunun dışında her bir yıldız serisinin yazdırılması için bir for döngüsü kullanmamız gerekecekti. Program kodumuz şekil.12 de görülmektedir. Programımızda her bir for döngüsü ayrı renkte bir bant ile gösterilmiştir. Değişken olarak sadece sayilar isimli int tipinde, 5 elemanlı bir dizi tanımlanmıştır. Kullanıcıdan alınan sayılar bu diziye kaydedilecektir.


Şekil.12

Mavi bantlı for döngüsü: Bu döngü içinde kullanıcıdan kullanıcı arayüzü aracılığıyla sayılar alınmaktadır. Döngü sayacı 0 dan başlatılarak 5 kere çalıştırılmıştır ve her seferinde dizinin bir elemanı alınmaktadır. A çerçevesinde her seferinde kullanıcıdan kaçıncı sayının istendiği kullanıcıya belirtilmektedir. Burada sayaç sıfırdan başlatıldığından dolayı her seferinde sayaca bir eklenmektedir. Sayacın sıfırdan başlatılmasının sebebi aynı zamanda dizi sıra numarası olarak kullanılıyor olmasıdır. Belirttiğimiz üzere dizi sıra numaraları sıfırdan başlamaktadır. B çerçevesinde kullanıcıdan alınan sayı, sayilar dizisinin i inci sıra numarasındaki elemanına atanmaktadır. Böylece mavi bantlı for döngüsü içinde, kullanıcıdan alınan sayı değerleri sayilar dizisi içine aktarılmış olur. Bundan sonra iç içe iki döngü bulunmaktadır.

Yeşil bantlı for döngüsü: Bu döngü ekrana beş kere, kullanıcıdan alınan sayıların yazılmasını sağlar. Buradaki i sayacı, Sarı bantlı for döngüsü’nün, sayilar dizisinin i inci elemanı kadar çalıştırılmasını sağlar. E çerçevesi içindeki kod ile alt satıra geçilmektedir. Böylece Sarı bantlı for döngüsü içinde yan yana bastırılan “*” karakterlerinden sonra bir alt satıra geçilmesini sağlar ve Sarı bantlı for döngüsü’nün bir sonraki çalıştırılmasında yeni karakter serisi bir alt satıra bastırılmaktadır.

Sarı Bantlı for Döngüsü: sayilar dizisinin i inci elemanı’nın değeri kadar çalıştırılan bu döngü içinde sadece “*” karakterinin basılması işlemi gerçekleştirilir. Ç çerçevesi içinde bu durum görülmektedir. Burada sayilar dizisi’nin sıra numarasını belirten i değeri Yeşil bantlı for döngüsü‘nün sayaç değerinden gelmektedir. D çerçevesi ile ekrana “*” karakteri’nin, ekrana yazılması sağlanır. Sarı bantlı for döngüsü içinde “*” karakteri yan yana basıldıktan sonra E çerçevesi içindeki kod çalıştırılarak bir alt satıra geçilir.

Bu programın çalıştırılması ile karşımıza çıkan örnek ekran görüntüsü Şekil.13 de verilmiştir.


Şekil.13

Üçüncü dersimizin sonuna geldik. İsterseniz neler işlediğimizi tekrar özetleyelim.

  • switch – case yapısını öğrendik ve bu yapı ile basit bir hesap makinesi yaptık.
  • while döngüsünü öğrendik ve bu döngü ile basit bir oyun programı yazdık.
  • for döngüsünü öğrendik ve bu döngü ile belirli sınırlar arasında 3’e bölünebilen sayıları ve toplamını bulan bir program yazdık.
  • Diziler konusuna giriş yaptık ve tek boyutlu dizilerin yapısını öğrendik. Güzel bir örnek ile içi içe for döngüleri ile tanıştık.

Kaynak: elektroskop.org

Bir umuttur insani yaşatan...
Umuty

"TÜRKÇEMİZ TÜRKCHE'LEŞMESİN. "
IP
kayserock
Asistan
Asistan
Simge

Kayıt Tarihi: 16 Temmuz 2009
Konum: Turkey
Aktif Durum: Aktif Değil
Gönderilenler: 3
Alıntı kayserock Cevaplabullet Gönderim Zamanı: 17 Temmuz 2009 Saat 14:52
.
IP
g@kkosh
Profesör
Profesör
Simge

Kayıt Tarihi: 22 Aralık 2006
Konum: türk sokagı,ermeni cıkmazı
Aktif Durum: Aktif Değil
Gönderilenler: 912
Alıntı g@kkosh Cevaplabullet Gönderim Zamanı: 03 Haziran 2010 Saat 01:50
iyi sayılabilecek bir döküman
yokum diyorr...
IP
Yanıt Yaz Yeni Konu Gönder
Konuyu Yazdır Konuyu Yazdır

Forum Atla
Kapalı Foruma Yeni Konu Gönderme
Kapalı Forumdaki Konulara Cevap Yazma
Kapalı Forumda Cevapları Silme
Kapalı Forumdaki Cevapları Düzenleme
Kapalı Forumda Anket Açma
Kapalı Forumda Anketlerde Oy Kullanma

Bulletin Board Software by Web Wiz Forums version 8.05a
Copyright ©2001-2006 Web Wiz Guide