EMO Style ForumPro - Hos Geldiniz
Giriş yap

Şifremi unuttum

Istatistikler
Toplam 202 kayıtlı kullanıcımız var
Son kaydolan kullanıcımız: AnthonyFurey3

Kullanıcılarımız toplam 1186 mesaj attılar bunda 862 konu
Tarıyıcı
 Kapı
 Indeks
 Üye Listesi
 Profil
 SSS
 Arama
Arama
 
 

Sonuç :
 


Rechercher çıkıntı araştırma

RSS akısı


Yahoo! 
MSN 
AOL 
Netvibes 
Bloglines 


Kimler hatta?
Toplam 5 kullanıcı online :: 0 Kayıtlı, 0 Gizli ve 5 Misafir

Yok

[ Bütün listeye bak ]


Sitede bugüne kadar en çok 92 kişi Paz Ağus. 28, 2016 6:58 am tarihinde online oldu.
En son konular
» İnternetten Para Kazandıran Oyun ! Ödeme Alt Limiti Yok ! DEV KONU
Cuma Ağus. 29, 2014 8:33 am tarafından Hello EMO

» goldenchase.net maden yaparak para kazanma
Cuma Ağus. 29, 2014 8:18 am tarafından Hello EMO

» etichal hacker görsel egitim seti
Çarş. Ağus. 06, 2014 4:57 am tarafından Hello EMO

» KO TBL Source C#
Ptsi Ara. 09, 2013 6:36 am tarafından Hello EMO

» x86 Registers
C.tesi Ağus. 24, 2013 5:02 am tarafından Hello EMO

» [Tutorial] Pegando Address, Pointers de WYD
Çarş. Tem. 10, 2013 7:25 am tarafından Hello EMO

» [Tutorial] Pegando Address, Pointers de CS Metodo²
Çarş. Tem. 10, 2013 7:23 am tarafından Hello EMO

» [Tutorial] Aprendendo basico deASM OLLYDBG
Çarş. Tem. 10, 2013 7:22 am tarafından Hello EMO

» Basic C# DLL injector
Ptsi Tem. 08, 2013 7:48 am tarafından Hello EMO

Reklam

C++ Dersleri - [Ders 2]

Önceki başlık Sonraki başlık Aşağa gitmek

C++ Dersleri - [Ders 2]

Mesaj tarafından EMO Bir Perş. Haz. 02, 2011 3:59 am

[QUOTE=Theodore;2191]Selam Arkadaşlar

Bismillah diyelim ve geçelim dersimize...


Bismillah diyelim başlayalım 2. derse;

Bu dersi kısa tutup 3. dersi daha erken bir vakitte yayınlayacağım.

DÖNGÜLER VE KARAR YAPILARI

Hatırlarsanız
geçen hafta arttırma,eksiltme gibi bir opertörü anlatmış ama bazılarını
ilerde yeri geldikçe anlatacağımızı söylemiştik.Onlardan başlayarak
ilerleyelim.

İLİŞKİSEL OPERATÖRLER

İlişkisel
operatörler, iki değeri karşılaştırır ve aralarındaki ilişkiyi
değerlendirir.Her zaman sonucu doğru yada yanlış şeklindedir.Yani bir
karşılaştırma vardır, sonucu ya doğrudur yada yanlıştır.Şimdi görelim
bunları;

> Büyüktür

< Küçüktür

== Eşittir

!= Eşit Değildir.

>= Büyüktür veya eşittir yani iki durumdada geçerlidir.

<= Küçüktür veya eşittir yani iki durumdada geçerlidir.


Karşılaştırma
işlemi sonrasında biraz önce de dediğim gibi True(Doğru) yada
False(Yanlış) sonucu üretilir.İlk dersimizden de hatırlayacağınız gibi
True=1, False =0 demiştik. Çünkü
bilgisayar için 1, True(doğru)
demektir;0 ise False(Yanlış) demektir.

Yani
programın herhangi bir yerinde (3==5) yazarsanız
program 0 değeri üretir, çünkü bu ifade yanlıştır.

Şimdi bir örnek yapalım.



Başka küçük bir örnek daha verecek olursak;

(programın hepsini yazmıyorum,sadece ilgili yerleri yazıyorum, siz tamamlarsınız denemelerinizde)

cahit = 27; // Değer atadık cahit değişkenine
ali =19; // Değer atadık ali değişkenine
(cahit==ali) // False Değeri yani "0" (Çünkü karşılaştırma sonucu yanlış)
(cahit<=ali)
// False Değeri yani "0" (Çünkü karşılaştırma
sonucu yanlış)

(cahit!=ali) // True Değeri yani "1" (Çünkü karşılaştırma sonucu doğru)
(15< ali) // True Değeri yani "1" (Çünkü karşılaştırma sonucu doğru)
(25==cahit) // False Değeri yani "0" (Çünkü karşılaştırma sonucu yanlış)
(0)
// sıfır değeri girilirse otomatik olarak
false kabul edilir.(Sonuç "0")

(48)
// Sıfırdan farklı bir değer girilirse otomatik
olarak True kabul edilir.(Sonuç "1")

(5)
// Sıfırdan farklı bir değer girilirse
otomatik olarak True kabul edilir.(Sonuç "1")

(2011)
// Sıfırdan farklı bir değer girilirse
otomatik olarak True kabul edilir.(Sonuç "1")

((cahit-10)==(ali-2))
// True Değeri yani "1" (Çünkü karşılaştırma
sonucu doğru)

((ali*2)>=(cahit+10))
// True Değeri yani "1" (Çünkü karşılaştırma sonucu
doğru)

((ali=27)==cahit)
// Dikkat edelim buraya (ali=27) ile ali değişkenine
yeni değer atıyor.(Sonuç "1")

(cahit*ali)
// iki değer çarpımı sıfırdan farklı bir
değer olduğu için (Sonuç "1")


Umarım şimdi daha iyi
anlamışsınızdır.Daha göstereceğimiz farklı operatörler daha var ama yeri
gelince değineceğim şimdi anlatırsam kafanız çorba gibi olur.


DÖNGÜLER

Döngüler
programda istediğimiz kısımların belli sayıda tekrar edilmesini
sağlar.Bir koşul belirtilir bu koşul doğrulanana kadar tekrar devam
eder, koşul yanlış ise döngüden çıkılır ve döngüden hemen sonraki
program kodları işlenmee başlanır.Şimdi örneklerle daha iyi
anlayacaksınız.

3 çeşit döngü vardır.
"for" döngüsü,
"while" döngüsü ve
"do" döngüsü;

FOR döngüsü:

Anlaşılması
en kolay döngü bu döngüdür çünkü döngüyü kontrol eden ifadeler döngünün
en başında belirtilir.Diğer döngü tiplerinde ise döngü içinde dağınık
olabilmektedir.Şimdi temel yazım kalıbını görelim sonra anlatalım


ilk
olarak eğer tek satırı yani tek bir ifadeyi belirli sayıda çalıştırmak
istiyorsak yazmamız gereken satırı açıklayalım yani üstte
yazanı;


for ifadesinden sonra parantez açıyoruz ve sadece
bu döngü içinde geçerli olacak döngü bitince yok olacak bir değişken
tanımlıyoruz. örnekteki "i" değişkeni buna örnektir,
döngü bitince i değişkeni yok olacaktır ama
isterseniz programda döngüye girmeden de "i"
değişkenini tanımlayabiliriz, öyle yaparsak döngü bitsede i
değişkeni varlığını korumaya devam eder, bellekte yer
kaplar. int i=0; ifadesi ile değişkenimizi tanımlıyor

ve bir başlangıç değeri veriyoruz.
Bu ifadeden sonra koşul
ifademiz yer alır i<15; yazarak şunu kastetmiş
oluyorz, i sayısı 15ten küçük
olduğu sürece döngüyü çalıştır.
en sondaki ifade ise bildiğiniz gibi sayısını bir arttırıyor.

Yani özet ve daha somut anlatacak olursak ;

for ( int i=0 ; i<5 ; i++)
cout<

Bu ifade şöyle çalışır.
Döngüye
girdik ve "i"isminde bir değişken
tanımladık,i<5 olduğu sürece döngüyü tekrar
edeceğiz, her çalıştırma sonunda i'yi bir arttırır.

1. adım:
i=0
şu anda, döngünün ilk çalışması,ekrana i
sayısını yazdırdık yani "0" yazdı
ekrana.ve i'yi bir arttırdık.i=1
oldu.

2. adım:
ilk adımın
sonunda "i++" çalıştığı için i
sayısı artık "1", döngü başa döndüğü için kontrol
ediyoruz i<5 mi?
Evet, o zaman kodu tekrar
çalıştırıyoruz yani cout< tekrar çalışıyor,
i sayısı 1 olduğu için ekrana
"1" yazar.Ve adım sonunda i
sayısını tekrar 1 arttırdık ve başa
döndük.i=2 oldu.

3. adım:
ikinci
adımın sonunda "i++" çalıştığı için
i sayısı artık "2" oldu, döngü
başa döndüğü için kontrol ediyoruz i<5 mi? evet,
hala i sayısı 5ten küçük,o zaman kodu tekrar
çalıştırıyoruz yani cout< tekrar çalışıyor,
i sayısı 2 olduğu için ekrana
"2" yazar.Ve adım sonunda i sayısını tekrar bir
arttırdık ve başa döndük.i=3 oldu.

4. adım:
üçüncü
adımın sonunda "i++" çalıştığı için
i sayısı artık
"3" oldu, döngü başa döndüğü için kontrol ediyoruz
i<5 mi? evet, hala i sayısı 5ten küçük,o zaman
kodu tekrar çalıştırıyoruz yani cout< tekrar
çalışıyor, i sayısı 3 olduğu için
ekrana "3" yazar.Ve adım sonunda
i
sayısını tekrar bir arttırdık ve başa
döndük.i=4 oldu

4. adım:
üçüncü
adımın sonunda "i++" çalıştığı için
i
sayısı artık "4" oldu, döngü başa döndüğü
için kontrol ediyoruz i<5 mi? evet, hala
i sayısı 5ten küçük,o zaman kodu tekrar
çalıştırıyoruz yani cout< tekrar çalışıyor,
i sayısı 4 olduğu için ekrana
"4" yazar.Ve adım sonunda i
sayısını tekrar bir arttırdık ve başa döndük.i=5 oldu

5. adım:
i
sayısı 5 olduğu için kontrol ifadesi gereği
bakıyoruz i<5 mi? hayır değil
(i<5) değeri false yani sıfır değer üretiyor,
döngünün çalışması için (i<5)
true yani doğru olması gerekiyor.i=5
olduğu için döngüden çıkıyoruz ve döngüden sonraki ifadeler
neyse onları çalıştırmaya devam ediyor program.


NOT: döngüyü "0" yerine 1den başlatıp bitiş ifadesinide ona göre istediğimiz gibi düzenelyebiliriz.

örnek :
for
( int i=0 ; i<5 ; i++)
yada for ( int
i=1 ; i<6 ; i++)
aynı şeydir, ikiside döngüyü
5 kez çalıştırır.


NOT: döngüyü her zaman arttıracağız diye bir durum yok istersek her defasında azaltabiliriz.

örnek:
for
( int i=5 ; i>0 ; i--)
yada for ( int i=6 ;
i>1 ; --i)
aynı şeylerdir ikiside döngüyü 5 kez çalıştırır.


Yani şu aşağıdaki 4 ifade de aynı şeydir, 4 ifade de döngüyü 5 kez çalıştırır.

for ( int i=0 ; i<5 ; i++)
for ( int i=1 ; i<6 ; i++)
for ( int i=5 ; i>0 ; i--)
for ( int i=6 ; i>1 ; --i)


NOT:(i++ ve ++i) yada (i-- yada --i) aynı şeylerdir.

şimdi örnek bir program yapalım





Şimdi
ise eğer birden çok ifadelik bir komut dizisi çalıştırmak isttiyorsak
yazmamız gereken satırı açıklayalım, yani döngünün her basamağında bir
kod değilde birden çok kod çalıştırmaktan bahsediyorum.


İlk
türden tek farkı kod grubunu, yani çalışmasını istediğimiz ifalerin
başlangıcı ve bitmine "{" ve "}"
işaretlerini koymamızdır. başka hiç bir farkı yok. Eğer koymazsak for
ifadesinden sonraki ilk ";" da döngünün sonuymuş gibi
davranacaktır.Bakın biraz önceki örneğimizde
"Demekki saymayı biliyormuşum" cümlesi
döngüye ait değildir.Eğer döngüye ait olsaydı döngü tanımlamadan sonra
"{" döngü bitiminde ise "}"
işaretleri olurdu.

şimdi bir kaç örnek yapalım.For döngüsünün farklı kullanım şekilleri de var uygulama üzerinde öğrenelim.





Şimdi Faktöryel hesaplama örneğine bakalım;
n!=n.(n-1).(n-2).(n-3)....(n-n+1)
örnek: 3!=3.2.1=6
örnek: 8 faktöryel demek --> 8!=1.2.3.4.5.6.7.8 demektir.


WHILE döngüsü:

FOR
döngüsünden bir işi kaç defa yapacağımız belliydi yani döngüyü
kaç defa çalıştıracağımızı belirlieyebiliyorduk, peki kaç defa çalışması
gerektiğini bilmiyorsak ne yapmamız gerekiyor?İşte burda
while döngüsü devreye giriyor,for döngüsünün daha
sade halidir bu, bi tane sınama koşulumuz var, o sınama koşulu
doğru(True) olduğu sürece döngüden çıkmaz program.

Kullanım kalıbı şöyle;


Tek ifadelik döngüler için;

while (n!=5)
ifade1;


Burada
(n!=5) sınama koşulumuzdur, bu faide doğru
ise döngüden çıkmaz, ne zaman bu ifade yanlış olursa yani

n=5 olursa döngüden çıkar.


Çoklu ifadeli döngüler için;

while (n!=5)
{
ifade1;
ifade2;
ifade3;
.
.
.
}


Yukarıdakinin
aynısıdır tek farkı döngü içinde çalışmasını istediğimiz ifade
gruplarını bir gövde içine almamız gerekiyor. yani ifadelerimiz
"{" ve "}" işaretleri arasında
olması gerekiyor.

şimdi örnekler somutlaştıralım.


şimdi ilkel bir login sistemi yapalım,


Şimdi
Meşhur Fibonacci dizisini yapalım, Buna göre her sayi kendisinden önce
gelen 2 sayının toplamına eşittir. Yani 0,1,1,2,3,5,8,13.... Şeklinde
ilerler.Dünyaca ünlüdür bu sayı dizisi.


Dikkat
etmemiz gereken noktalar: "{" ve
";" kullanımlarını iyi öğrenmelisiniz. bir
";" yüzünden saatlerce ekran karşısında beyninizi
yorabilirsiniz.Yazım kurallarını iyi öğrenirsek hataları bulma düzeltme
şansımızda o kadar fazla olur.


DO döngüsü

DO
döngüsü, while döngüsüne çok benzer ama arada tek
fark vardır. while döngüsünde parantez içinde bir
sınama değimi vardı, o sınama koşulu sağlanmıyorsa program döngüye hiç
girmez ama do döngüsünde döngü sınama koşulu en sonda olduğu için
program döngünü en az bir defa çalıştırır.Aralarındaki tek fark budur.

Yazım kalıbına gelince;

Eğer tek ifade çalıştıracak bir döngü yazacaksak:

do
ifade1;
while(n!=5);


burda
dikkat ederseniz ilk olarak "do" yazıyoruz.
do'dan sonra hiç bir işaret yok dikkat
ederseniz. Sonra çalımasını istediğimiz ifadeyi yazıyoruz ve
";" ile sonlandırıyoruz. Ve son olarak
While(sınama ifadesi) yazıp
";" ile sonlandırıyoruz. parantez içine
sınanmasını istediğimiz ifade neyse aynen while döngüsündeki gibi
yazıyoruz. Ama mutlaka mutlaka parantezi kapattıktan sonra
";" koymalısınız.

Basit bir örnek yapalım;


Eğer çoklu ifadeler çalıştıracak yani ifade grubu çalıştıracak bir döngü yazacaksak:

Arkadaşlar C++ dilinde tüm döngü ve karar yapılarında aynıdır, ben formalite icabı yazıyorum ama sizin bunu bilmeniz gerekiyor.

-Çoklu ifade grupları her zaman "{" ve "}" den oluşan bir gövde içine alınıp tek vücut haline getirilir.

-Tekli ifadeler ise tek başına yazılır ve sonuna ";" koyulur, bu kurallar ileride göreceğimiz konular içinde geçerli.

-istisnalar var tabiki bunarıda göreceğiz.


do
{
ifade1;
ifade2;
.
.
.
}
while(i<=6);



gördüğünüz gibi yapı olarak aynı, tek fark "{" işaretleri.

şimdi bir örnek yaparak iyice öğrenelim.


3 tane döngü tipi gördük;

Hangi döngü tipini ne zaman kullanmalıyız?

-- for döngüsünü döngünün kaç kez çalıştırlacağını programı yazarken biliyorsak kullanırız

--
Döngünün kaç kez çalışacağını yada ne zaman duracağını önceden
bilmiyorsak tamamen kullanıcının tercihlerine göre şekilleniyorsa while
veya do döngülerini kullanırız.


-- while döngüsü şartlar sağlanmazsa hiç çalıştırılmayacak durumlarda kullanılır

--
do döngüsü ise döngünün her halükarda en az bir defa çalıştırılmasını
sağlar, çalışma sonunda şartlar kontrol edilir, uygun değilse tekrar
çalıştırılmaz uygunsa çalışmaya devam eder.Ama bize bir defa
çalışacağını garantisini verir.


Ama bu kriterler çok
keyfidir arkadaşlar, hangisini kullanacağınız kurallara değil sizin
programlama stilinze bağlıdır. İstediğiniz durumda istediğiniz döngü
tipini uyarlayıp kullanabilirsiniz,programın takibini netleştiren yada
zorlaştıran kısım hangi tipi seçtiğinizdir.


KARAR YAPILARI

Karar yapılarında ufak bir giriş yapıp diğer dersiminzde devam edeceğim.


SWITCH CASE YAPISI

Bu
yapı çok büyük bir karar ağacını varsa çok işinize yarayabilecek bir
yapı, yani diyelimki kullanıcı menüsü yapacaksınız kullanıcının tek bir
seçimi ile bir sürü alternatif yere dallanacak bir yapıdan
bahsediyorum.Şimdi yazım kalıbını gösterip hemen örnekle açıklamak
istiyorum, daha iyi oturması için.


Arkadaşlar
switch
yazdıktan sonra parantez içine kontrol edilmesini
istediğimiz değişkeni yazıyoruz, dikkat edin burda diğer döngülerdeki
gibi işlem felan yazılmaz parantez içine sadece değişken adını
yazıyoruz.Bu değişken tipi int yada
char tipinde olabilir hiç farketmez.

case
1:
yada case
2:
felan yazılarına bakarsanız
1 ve 2 gibi
sayıları yeşil renkte belirttim, bunun anlamı şudur yukarıda parantez
içindeki (n) değişkeni
"1" değerini alırsa program
case 1: altındaki kodlarını
çalıştırır. Eğer
(n) değeri 2
ise case 2: altındaki kodları çalıştırır.

diyelimki
case 1: ifadesi çalışıyor. ifadeleri tek tek
uygular ve en son işlemler bitince "break;" satırı
ile case 1: grubunun sonu geldiğini belirtiyoruz.
break; sonlandırmaya yarıyor, eğer
break; yazmazsanız en sonuna, kodlar bitince bir
sonraki case ifadesine yani case 2: yi çalıştırmaya
başlar, yani break; görene kadar çalışır.

default:
kısmı ise eğer "n" değeri hiç bir seçeneğe
uymuyorsa bu kısım çalıştırılır

Dikkat etmemz gereken nokta
switch(n) ifadesinden sonra tüm kodlar
"{" ve "}" ile tek
vücut haline getirilir.

şimdi örnek yapalım:


Bu
örnek oldukça basit oldu, ödevler kısmında bu örneği biraz
geliştirmenizi isteyeceğim, örneğin kullanıcı yanlış seçim yaptığı
sürece tekrar denemesi kullanıcıya şans vermek istersek ne yapmamız
gerekecek.Yada en fazla 3 defa yanış yapma hakkı verecek olursak ne
yapmamız gerekecek, neyse bunları ödevler kısmında açıklayacağım.

Şimdi
basit bir oyun yapalım aslında oyun değilde oyunlarda kullanılan bir
sistem, yön tuşlarıyla karakterimizin kodrinatının değiştirilmesi
sistemini yapalım.Buna geçmeden önce size yeni bir fonksiyondan
bahsetmek istiyorum , çünkü bunu kulanmamız gerekecek.

getche();
fonksiyonu; Şimdiye kadar kullancıdan girdi almak için cin ve getline
kullanmıştık.Bu girdilerden sonra kullanıcının ENTER tuşuna basması
gerekiyordu. Ama getche() fonksiyonunda böyle bir zorunluluğumuz
yok, kullanıcı tuşa bastığı anda enter gerekmeksizin ilgili değişkene
aktarır.

Bu fonksiyonu kullanabilmek için "conio.h" kütüphanesini programa eklememiz gerekiyor.
Yani programın başında #include satırını eklememiz gerekiyor.

Şimdi bahsettiğim oyunu yapalım.



Bu günkü dersimizin sonuna geldik, iyi çalışmalar dilerim.


ÖDEVLER:

1- Switch case konusundaki en son yaptığımız örneğe aşşağıdaki özellikleri uygulayın.
a- kullanıcı yanlış seçim yapınca tekrar deneme hakkı olsun
b- en fazla 3 yanlış seçim yapma hakkı olsun, 3dten fazla yaparsa program kapansın.

2-Geçen
hafta TC kimlik no konusunu ödev vermiştim, TC kimlik no int olarak
saklanmaz int tipinin alabileceği maximum değeri aştığı için, double
tipi 17 basamak duyarlığa sahip olduğu için double olarak
saklayabilirsiniz Ama ekrana yazdırırken bilimsel şekilde yazar.
bu
haftaki ödeviniz kullanıcıdan TC kimlik no sunu alsın, bu değeri 1
azaltıp, ekrana yazdırsın.Bakalım ne kadar araştırmacısınız

3- Kullanıcı bir sayı girecek, program o sayıdan geriye doğru sıfıra kadar sayıp "ATEŞ" yazacak
(hem for döngüsü hemde while döngüsü ile ayrı ayrı yapmanızı istiyorum)
örnek: 3 girildi.
3
2
1
0
ATEŞ yazacak

4-Bir değişken tanımlayacağız ve 50 değerini vereceğiz, kullanıcıdan bu sayıyı tahmin etmesini isteyeceğiz.
adam 50 girmedikçe "Yeniden deneyiniz yazacak" ve tekrar isteyecek sayıyı.
(Do döngüsü ile yapmanızı istiyorum)

5-
Döngüler konusunda continue; ve
break; komutlarını araştırınız ne işe
yaradığını öğreniniz.
ikisinede birer kullanım örneği veriniz.

6-
GOTO komutunu araştırınız, neden
kullanılmaması gerektiğini, iyi programcıalrın neden bunu kullanmadığını
araştırınız.[/QUOTE]

EMO
EMO Team
EMO Team

Cinsiyet : Erkek
Burçlar : Yay
Yılan
Mesaj Sayısı : 184
Puan : 104393
Rep Puanı : 5
Doğum tarihi : 28/11/89
Kayıt tarihi : 18/05/11
Yaş : 27
Nerden : EMO world
İş/Hobiler : RCE Student / Game Hacking / Learn Beginner C#,C++,Delphi
Lakap : EMO

Kullanıcı profilini gör

Sayfa başına dön Aşağa gitmek

Önceki başlık Sonraki başlık Sayfa başına dön

- Similar topics

 
Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz