Lab Notları 1

advertisement
Lab Notları 1
Algoritma Kavramı
Algoritma: Bir problemi çözmek için gerçekleştirilmesi gereken adımlar dizisidir. Bir algoritma belli bir
adım sonra sonlanmalıdır. Belli bir adım sayısı birkaç olabileceği gibi 10000 veya çok daha fazla da
olabilir.
Algoritmanın her adımı açık ve kısa bir şekilde yazılmalıdır.
Bir algoritma yazmak için mutlaka bir dile bağımlı kalmak zorunluluğu yoktur. Önemli olan yazılan
algoritmanın herhangi bir programlama diline uyarlanabilirliğinin olmasıdır. Bu şekilde programlama
dilinden bağımsız yazılan koda sözde kod (Pseudocode) denir.
Problem: Dosyadan okunan sayıların ortalamasını hesaplayan algoritmayı yazınız.
Sözde Kod:
1. Gerekli değişkenleri ilkle
2. while dosya sonu değil ise
3. {
4.
Dosyadan sıradaki elemanı oku
5.
sayıyı toplam değişkene ekle
6.
Toplam sayı adedini bir arttır
7. }
8. return toplam / sayi_adedi
Problem: Kullanıcı sıfır girene kadar girmiş olduğu sayıların ortalamasını ekrana yazan bir algoritma
yazınız.
Sözde Kod:
1. toplam=0, sayi_adedi=0
2. read x
3. If x = 0 goto 7
4. toplam = toplam + x
5. sayi_adedi++
6. goto 2
7. write toplam / sayi_adedi
8. END
Programlama: Bir problemin çözümü için gerekli olan algoritmayı gerçeklemek için istenilen bir
programlama dilinde kodunu yazıp çalıştırmaktır. Burada yazılan kod programlama diline uygun
olmalıdır.
Bir program yazabilmek için yazmak istediğiniz programlama dilini tanıyan ve onu çalıştırılabilir bir
program haline getiren bir Derleyici ye ihtiyaç vardır.
C++ Programlama Dili
C++ dili, hızlı ve düşük seviye özelliklere erişmek isteyen uygulamaların yazılması için popüler bir dildir.
C programlama diline birçok ekstra özellik katmıştır. En önemlisi nesne yönelimli bir programlama
dilidir. Sınıfları destekler. Çok biçimlilik ve kalıtımı destekler. Bütün C kodlarını derleyebilir. C++
programlama dilini kullanacak bir programcı bellek yönetimini çok iyi bilmelidir. Kaynak dosyaları
“.cpp”, “.cxx”, “.C” gibi uzantılara sahip olabilir.
Bir C++ programı bir dizi komuttan oluşur ve bu komutlar bilgisayara ne yapması gerektiğini söyler. Bu
komutlar bilgisayar tarafında Assembly kodu iken C++ tarafında kaynak koddur. Dolayısıyla ihtiyacınız
olan bir C++ derleyicisi bu kaynak kodu bilgisayarın anlayacağı Assembly koduna çevirmelidir.
Kaynak kodda bahsedilen komutlar anahtar kelimeler olabileceği gibi fonksiyonlarda olabilir.
int x=10; // Anahtar kelime int
int Topla(int x,int y){ // fonksiyon
…
}
Bu ders kapsamında Microsoft Visual Studio C++ derleyicisi kullanılacaktır.
Örnek bir C++ Programı
#include <iostream>
using namespace std;
/*
Merhaba yazan program
*/
int main(){ // main metodu
cout<<"Merhaba"<<endl;
cin.get();
return 0;
}
Yazılmış olan her programın bir giriş noktası bulunmalıdır. Bu şekilde işletim sistemi bu programı
çalıştıracağı sırada nereden başlayacağını bilebilir. Bu başlama noktası C++’ta main metodudur. main
metodu işletim sistemi tarafından çağrılır ve bu şekilde program başlamış olur. Bundan da main
metodunun sonlanması ile programın sonlanacağı anlamı çıkmaktadır.
Çalıştırılabilir her program main metodunu içermelidir. Yukarıdaki ekrana merhaba yazan program
incelenirse;
# karakteri ile başlayan ifadeler, ön işlemci komutlarıdır. Derleme işleminin hemen öncesinde
çalıştırılırlar. Bir başka dosya veya kütüphane ekleme işlemleri bu şekilde yapılmaktadır. Programda
iostream kütüphanesi eklenmiştir nedeni ekrana yazı yazmak ve kullanıcıdan değer almak için gerekli
olan komutlar bu kütüphanenin içindedir.
C++’ta her çalıştırılabilir komut ; ile bitmelidir.
cout ekrana birşeyler yazmak için kullanılan komuttur. cin ise kullanıcıdan değer almak için kullanılan
komuttur.
C++’ta yorum satırlarının // ifadesiyle başladığı görülecektir. Birden çok satırda yorum yapmak için /*
yorumlar… */ şeklinde bir kullanım yapılmalıdır. Yorum satırları derleyiciler tarafından görülmez ve o
satırlar atlanır. Bu satırlar programcılar için açıklama mahiyetindedirler.
{ } ifadeleri C++ dilinde kod bloklarının açılma ve kapanma ifadeleridir. Fonksiyonlar, sınıf tanımlamaları
döngüler, kontrol ifadelerinin hepsi birer kod bloğu olduğu için bu ifadeler ile başlayıp biterler.
main fonksiyonun sonundaki return 0; ifadesi programın, işletim sistemine “her şey yolunda gitti ve
işlem başarıyla tamamlandı” demesidir.
Nasıl Derlenir: Visual Studio’da derleme yapmak için önce bir proje oluşturulmalıdır. Bunun için üst
menüden File > New > Project adımları izlenir.
Karşınıza gelecek olan ekrandan sol menüde, Visual C++’a tıklanıp sağ tarafta Win32 Console
Application seçilir. Aşağı tarafta proje ismi verildikten sonra OK tuşuna basılır.
Karşınıza proje oluşturmak için bazı adımlar gelecektir. İlk pencerede Next butonuna basılır. Daha sonra
gelen ekranda Console Application ve sadece Empty Project seçilir ve Finish butonuna basılır.
İlk C++ dosyasını eklemek için Source Files kısmına ters tıklayıp Add > New Item seçilir. Gelen ekranda
solda Visual C++ seçili iken sağ tarafta C++ File (.cpp) seçeneği seçilir. Aşağı tarafta dosya ismi
verildikten sonra Add butonuna basılır. Oluşan dosya içerisine aşağıda verilmiş C++ kodları yazılarak
derleme ve çalıştırma işlemleri yapılabilir. Bunun kısa yol tuşu F5’tir.
Değişken Tanımı:
Kullanıcıdan değer almak için cin kullanıldığı belirtilmişti fakat alınacak bu değer nerede saklanacak işte
bunun için saklanacağı bir değişken tanımlanmalıdır. C++ programlama dilinde değişken tanımı
aşağıdaki formatta yapılır.
Tür değişken_adı;
Problem: Kullanıcıdan alınan 2 sayı üzerinde dört işlemin yapılıp ekrana yazdırılması
#include <iostream>
using namespace std;
int main(){
int x,y;
cout<<"X:";
cin>>x;
cout<<"Y:";
cin>>y;
cout<<"X+Y="<<x+y<<endl;
cout<<"X-Y="<<x-y<<endl;
cout<<"X*Y="<<x*y<<endl;
cout<<"X/Y="<<x/y<<endl;
cin.get();
cin.ignore();
return 0;
}
Problem: Kullanıcıdan adını alıp ona merhaba diyen bir program yazınız.
#include <iostream>
#include <string>
using namespace std;
int main(){
string isim;
cout<<"Adinizi Girin:";
cin>>isim;
cout<<"Merhaba "<<isim;
cin.get();
cin.ignore();
return 0;
}
C++’ta karakter katarları string içinde tutulurlar. Bir önceki örnekteki kullanıcıdan sayı almadaki aynı
mantık ile kullanıcıdan isim alındığında yine cin kullanılır. Burada diğerinden farklı olarak cin.ignore
komutu görünmektedir. Bunun nedeni derleyici bir string’in bittiğini sonundaki ‘\0’ karakterinden anlar
bu karakter bütün string ifadelerin sonunda vardır. Program kapanmadan kullanıcının bir tuşa
basmasını beklemek için kullanılan cin.get komutu kullanıcı bir tuşa basmasa dahi ‘\0’ karakteri
okuduğunda çalışacaktır ve sanki kullanıcı bir butona basmış gibi program sonlanacaktır. Bunu
engellemek için bu karakteri görmezden gel komutu olan cin.ignore kullanılır.
C++ programlama dilinde kullanıcıdan string alınacağı zaman dikkatli olunmalıdır. Çünkü yukarıdaki
programa arada boşluk bırakarak birden fazla kelime girdiğinizde sadece ilk kelimeyi alacaktır. Bunun
nedeni >> operatörü her çalışmada sadece bir kelime okumaktadır. Bunun üstesinden gelebilmek için
tüm satırı oku anlamındaki getline komutu kullanılır. Aşağıda da görüldüğü üzere cin.ignore komutuna
bu durumda gerek kalmamıştır. Bunun nedeni tüm satırı getline komutu ile okuyor olmamızdır.
Diğer bir dikkat edilmesi gereken nokta Visual Studio C++’ta string işlemleri sırasında mutlaka <string>
kütüphanesi eklenmelidir.
#include <iostream>
#include <string>
using namespace std;
int main(){
string isim;
cout<<"Adinizi Girin:";
getline(cin, isim);
cout<<"Merhaba "<<isim;
cin.get();
return 0;
}
Hazırlayan
Arş. Gör. M. Fatih ADAK
Download