EEM-103
Bilgisayar Programlama
2022-2023 Güz
Hafta 4
Aritmetik Operatörler
Toplama Operatörü; + ; örneğin a+3
Çıkarma Operatörü; - ; örneğin a-3
Çarpma Operatörü; * ; örneğin a*3
Bölme Operatörü; / ; örneğin a/3
Modülüs Operatörü; mod (a,3) 3 ile bölümünden kalan
10/10/2018 2
Karar Verme (Basit “if” Yapısı)
if yapısı kullanılarak (bir koşul test edilerek - condition) bir
program karar verebilir ve farklı işlemler yapabilir.
Bu “koşullar” mantıksal ya da karşılaştırma operatörleri
kullanılarak oluşturulur.
if koşul
{
}
end
Eger “koşul” “true” ise parantez içindeki (gövdedeki) deyimler
işletilir.
“false” ise eğer gövdedeki deyimler işletilmez ve program sağ
parantezden sonraki bölüme atlar.
10/10/2018 3
Mantıksal ve Karşılaştırma Operatörleri
Mantıksal
Eşittir == x==y x eşittir y
Eşit Değildir != x!=y x eşit değildir y
Karşılaştırma
Büyüktür > x>y “x” “y” den büyüktür
Küçüktür < x<y “x” “y” den küçüktür
Büyüktür Eşittir >= x>=y “x” “y” den büyüktür ya da eşittir
Kücüktür Eşittir <= x<=y “x” “y” den kücüktür ya da eşittir
10/10/2018 4
10/10/2018 5
ve/ veya /değil
if((isim== "Deniz") && (yas>=30))
if((donemOrtalamasi>=90)||(finalSinavi>=90))
if((secenek == 'A')||(secenek == 'a'))
Matematiksel olarak 3<x<7 (3<x && x<7)
if(!(rakam==bitisDegeri)) ya da if(rakam!=bitisDegeri)
10/10/2018 6
“if” Karar Yapısı
if(sinavNot>=60)
cout<<“gecti”;
true “gecti”
sinavNot >= 60 yazdir
false
“if” Karar Yapısı Akış Diyagramı (flowchart)
10/10/2018 7
#include <iostream>
using namespace std;
int main()
{
int sinavNotu;
cout<<"Lutfen ogrencinin sinav notunu giriniz: ";
cin>>sinavNotu;
if(sinavNotu >= 60)
cout<<"GECTI";
return 0;
}
10/10/2018 8
“if/else” Karar Yapısı
if(sinavNot >=60)
cout<<“gecti”;
else
cout<<“kaldi”;
“kaldi” false true “gecti”
sinavNot >= 60
yazdir yazdir
“if/else” Karar Yapısı Akış Diyagramı (flowchart)
10/10/2018 9
#include <iostream>
using namespace std;
int main()
{
int sinavNotu;
cout<<"Lutfen ogrencinin sinav notunu giriniz: ";
cin>>sinavNotu;
if(sinavNotu >= 60)
cout<<"GECTI";
else
cout<<"KALDI";
return 0;
}
10/10/2018 10
“if/else if /else” Karar Yapısı
if(sinavNot >= 90)
cout<<“AA”;
else if (sinavNot >= 80)
cout<<“BB”;
else if (sinavNot >= 70)
cout<<“CC”;
else if (sinavNot >= 60)
cout<<“DD”;
else
cout<<“FF”;
10/10/2018 11
#include <iostream>
using namespace std;
int main()
{
int sinavNotu;
cout<<"Lutfen ogrencinin sinav notunu giriniz: ";
cin>>sinavNotu;
if(sinavNotu >= 90)
cout<<" AA ile gecti";
else if (sinavNotu >= 80)
cout<<" BB ile gecti";
else if (sinavNotu >= 70)
cout<<" CC ile gecti";
else if (sinavNotu >= 60)
cout<<" DD ile gecti";
else
cout<<"kaldi";
return 0;
}
10/10/2018 12
Girilen iki sayı arasındaki ilişkiyi (<,>,=) yazan program
#include <iostream>
using namespace std;
int main()
{
int sayi1, sayi2;
cout<<"Lutfen iki sayi giriniz"<<" ben size iliskilerini soyleyeyim : ";
cin>>sayi1>>sayi2;
if(sayi1 == sayi2)
cout<<sayi1<<" esittir "<<sayi2<<endl;
if(sayi1 != sayi2)
cout<<sayi1<<" esit degildir "<<sayi2<<endl;
if(sayi1 < sayi2)
cout<<sayi1<<" kucuktur "<<sayi2<<endl;
if(sayi1 > sayi2)
cout<<sayi1<< " buyuktur "<<sayi2<<endl;
return 0;
}
10/10/2018 13
Girilen 10 sınav notunun ortalamasını ekrana yazan program
#include <iostream>
using namespace std;
int main()
{
double toplam, notSayaci, sinavNotu,ortalama;
toplam = 0;
notSayaci = 0;
while(notSayaci < 10)
{
cout<<"\nOgrencinin aldigi puani girin: ";
cin>>sinavNotu;
toplam = toplam + sinavNotu;
notSayaci = notSayaci + 1;
}
ortalama = toplam/notSayaci;
cout<<"Sinif ortalamasi : "<<ortalama<<endl;
return 0;
}
10/10/2018 14
Sayaç 1 den başladı
#include <iostream>
using namespace std;
int main()
{
double toplam, notSayaci, sinavNotu,ortalama;
toplam = 0;
notSayaci = 1;
while(notSayaci < 11)
{
cout<<"\nOgrencinin aldigi puani girin: ";
cin>>sinavNotu;
toplam = toplam + sinavNotu;
notSayaci = notSayaci + 1;
}
ortalama = toplam/(notSayaci-1);
cout<<"Sinif ortalamasi : "<<ortalama<<endl;
return 0;
}
10/10/2018 15
Bir önceki örneğimizde not sayacı olarak 10 değerini kullandık ve
kullanıcıyı 10 adet not girmeye zorladık. Kullanıcının istediği kadar
not girmesini ve bunların ortalamasını bulan bir program yazmak
isteseydik eğer, bir “bitiş değeri” (sentinel value) kullanarak
kullanıcının sisteme artık daha fazla veri girişi yapmak istemediğini
belirtmesine izin vermemiz gerekirdi.
while(not != -1) //bitis degeri= -1
{
toplam=toplam+not;
notSayaci=notSayaci+1;
cout<<“Notu gir ya da -1 yazarak cik : ”;
cin>>not;
}
10/10/2018 16
#include <iostream>
using namespace std;
int main()
{
double toplam, notSayaci, sinavNotu,ortalama;
toplam=0;
notSayaci=0;
while(sinavNotu != -1)
{
toplam = toplam + sinavNotu;
cout<<"\nOgrencinin aldigi notu giriniz veya -1 yazarak cikis yapiniz: ";
cin>>sinavNotu;
notSayaci = notSayaci + 1;
}
ortalama = toplam / (notSayaci-1);
cout<<"Sinif ortalamasi : "<<ortalama<<endl;
return 0;
}
10/10/2018 17
#include <iostream>
using namespace std;
int main()
{
double toplam, notSayaci, sinavNotu,ortalama;
toplam=0;
notSayaci=0;
while(sinavNotu != -1)
{
cout<<"\nOgrencinin aldigi notu giriniz veya -1 yazarak cikis yapiniz: ";
cin>>sinavNotu;
notSayaci = notSayaci + 1;
toplam = toplam + sinavNotu;
}
ortalama = toplam / (notSayaci-1);
cout<<"Sinif ortalamasi : "<<ortalama<<endl;
return 0;
}
Girilen -1 de toplama eklendi, hatalı sonuç
10/10/2018 18
#include <iostream>
using namespace std;
int main()
{
double toplam, notSayaci, sinavNotu,ortalama;
toplam=0;
notSayaci=0;
while(sinavNotu != -1)
{
toplam = toplam + sinavNotu;
cout<<"\nOgrencinin aldigi notu giriniz veya -1 yazarak cikis yapiniz: ";
cin>>sinavNotu;
notSayaci = notSayaci + 1;
}
ortalama = toplam / notSayaci;
cout<<"Sinif ortalamasi : "<<ortalama<<endl;
return 0;
}
Sayaç değeri döngüden çıkarken artırılmıştı, hatalı sonuç
10/10/2018 19
“static_cast<>” Operatörü
Ortalamalar çoğu kez integer değere sahip olmazlar. 7.21 ya da
8.397 gibi ondalık kısma da sahip olabilirler.
Bizim bir önceki örneğimizde ortalama değerini depolayan
değişken bir integer olduğu için ondalık kısımlar (varolsa bile)
değerlendirmeye alınmadılar.
Bu yüzden buna izin veren double değişkeni kullanmalıyız
ortalama için.
10/10/2018 20
Sonucu ondalıklı sayı istiyorsak
#include <iostream>
#include <iomanip> //setprecision kullanimi icin
using namespace std;
//toplam degiskeni “integer”
//notSayaci degiskeni “integer”
double ortalama;
ortalama=static_cast<double>(toplam)/notSayaci;
cout<<“Sinif Ortalamasi”<<setprecision(3)<<ortalama;
10/10/2018 21
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
int toplam, notSayaci, sinavNotu;
double ortalama;
toplam=0;notSayaci=0;
while(sinavNotu != -1)
{ toplam = toplam + sinavNotu;
cout<<"\nOgrencinin aldigi notu giriniz veya -1 yazarak cikis yapiniz: ";
cin>>sinavNotu;
notSayaci = notSayaci + 1; }
ortalama = static_cast <double>(toplam) / (notSayaci-1);
//cout<<"Sinif ortalamasi : "<<setprecision(3)<<ortalama<<endl;
cout<<"Sinif ortalamasi : "<<setprecision(5)<<ortalama<<endl;
return 0;}
10/10/2018 22
1-100 arası çift sayıların ortalaması
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
double ortalama;
int toplam,i,sayac;
toplam =0;
sayac=0;
for(i=0;i<=100;i=i+2)
{
toplam = toplam + i;
sayac=sayac+1;
}
ortalama =static_cast<double> (toplam)/(sayac-1);
cout<<"ortalama:"<<setprecision(5)<<ortalama<<endl;
return 0;
}
10/10/2018 23