Teorik Ders 2

Download Report

Transcript Teorik Ders 2

Karar Verme: Eşitlik ve
Karşılaştırma Operatörleri
• Çalıştırılabilir C ifadeleri 2 iş yaparlar.
 İşlem gerçekleştirir.( hesaplamalar, veri girdi/çıktısı)
 Karar verir.
Örneğim; bir kişinin bir sınavdan aldığı not 60’tan
büyükse yada 60’a eşitse ‘tebrikler geçtiniz’ yazdirabiliriz.
• If kontrol yapısı
 Bir koşulun doğruluğu yada yanlışlığına karar veren, if kontrol
yapısı öncelikle basit bir biçimde tanıtılacaktır. Daha detaylı
olarak sonra.
 Eğer koşul doğru ise, if yapısının gövdesindeki ifade çalıştırılır.
Yanlışsa, if yapısının gövdesindeki ifade çalışmaz.
 Çalıştırma süreci if yapısından hemen sonraki ifadeyle devam
eder.
Karar Verme: Eşitlik ve
Karşılaştırma Operatörleri
C’deki
karşılığı
C’de
örneği
C’de anlamı

==
x == y
x eşittir y

!=
x != y
x eşit değildir y

>
x > y
x büyüktür y

<
x < y
x küçüktür y
≥
>=
x >= y
x büyüktür ya da eşittir y
≤
<=
x <= y
x küçüktür yada eşşitir y
Operatörler
Eşitlik operatörleri
Karşılaştırma operatörleri
Genel Programlama
Hataları
• ==, !=, >= ve<= operatörleri arasında
boşluk kullanılması yazım hatasına sebep
olur.
• !=, >= ve <= operatörlerinin ters çevrilerek
=!, => ve =< şeklinde kullanılması yazım
hatasına sebep olur.
• == operatörünün = ile karıştırılması.
#include <stdio.h>
#include <conio.h>
int main()
{
int num1, num2;
printf( "Iki tam sayi girin.\n" );
printf( "Bu iki sayinin karsilastirmasi yapilacaktir: " );
scanf( "%d%d", &num1, &num2 );
if ( num1 == num2 )
printf( "%d esittir %d\n", num1, num2 );
if ( num1 != num2 )
printf( "%d esit degildir %d\n", num1, num2 );
if ( num1 < num2 )
printf( "%d kucuktur %d\n", num1, num2 );
if ( num1 > num2 )
printf( "%d buyuktur %d\n", num1, num2 );
if ( num1 <= num2 )
printf( "%d kucuktur ya da esittir %d\n",
num1, num2 );
if ( num1 >= num2 )
printf( "%d buyuktur ya da esittir %d\n",
num1, num2 );
getch();
return 0;
}
Şu ana kadar anlatılan operatörlerin öncelikleri ve işleyişleri
Operatörler
İşleyişleri
()
Soldan sağa
*
/
+
-
<
<=
==
!=
=
%
Soldan sağa
Soldan sağa
>
>=
Soldan sağa
Soldan sağa
Sağdan sola
if Seçim Yapısı
• Seçim yapısı
Bir işin değişik yönlerinden birini seçmek için kullanılır.
Sahte kodu(pseudocode)
Eğer (if) ögrenci notu 60’dan büyükse ya da 60’a
eşitse
‘Geçtiniz’ yazdır.
• Eğer koşul doğru ise
‘Geçtiniz’ yazdırılır ve diğer sahte koda geçilir.
Değilse, yazdırma yaptırılmaz ve doğrudan diğer sahte
koda geçilir.
if Seçim Yapısı
• Sahte kodu C’e yazarsak
 if ( not >= 60 )
printf( "Gectiniz\n" );
Sahte kod, C koduna oldukça yakındır.
• Elmas Sembolü( Karar İşareti)
Burada bir kara verileceğini gösterir.
Bir koşul içerir ve bu koşul doğru ya da yanlış
olabilir.
Koşulu test et, uygun yolu seç.
Tek Seçimli if Yapısının Akış
Diyagramı
60
İf/else Seçim Yapısı
• İf
Koşul doğru ise belirlenen işi yapar, yanlış ise
belirlenen iş atlar.
• if/else
Programcıya koşul doğruysa belirli işler, yanlışsa belli
işleri yaptırabilme fırsatı verir.
• Sahte kod
Eğer ( if ) öğrencinin notu, 60 ya da daha büyükse
“Geçtiniz“ yazdır
aksi takdirde ( else )
“Kaldınız” yazdır
İf/else Seçim Yapısı
• C kodu
if ( not >= 60 )
printf ( "Geçtiniz\n" );
else
printf ( "Kaldınız\n" );
• Üçlü koşul operatörü (?:)
 Üç argüman(operand) alır.( koşul, doğruysa deyimin değeri,
yanlışsa değimin değeri)
 printf ( "%s\n", not >= 60 ? "Geçtiniz" : "Kaldınız" );
 (not >= 60) ? printf ( "Geçtiniz\n") : printf ( "Kaldınız\n" );
Çift Seçimli if/else Yapısının
Akış Diyagramı
İf/else Seçim Yapısı
• Yuvalı if/else seçim yapıları
if/else yapıları içerisine başka if/else
yapıları yerleştirerek birden fazla koşulu
aynı anda test etmemizi sağlar.
Bir koşul sağlandığında, geriye kalan tüm
ifadeler geçilir.
İf/else Seçim Yapısı
• Yuvalı if/else yapısı için sahte kod:
Eğer(if) öğrencinin notu 90'a eĢit ya da 90'dan büyükse
“A” yazdır
Aksi takdirde(else)
Eğer(if) öğrencinin notu 80'a eĢit ya da 80'dan büyükse
“B” yazdır
Aksi takdirde(else)
Eğer(if) öğrencinin notu 70'a eĢit ya da 70'dan büyükse
“C” yazdır
Aksi takdirde(else)
Eğer(if) öğrencinin notu 60'a eĢit ya da 60'dan büyükse
“D” yazdır
Aksi takdirde(else)
“F” yazdır
İf/else Seçim Yapısı
• Yuvalı if/else yapısı için C kodu:
if ( not >= 90 )
printf("A\n");
else
if ( not >= 80 )
printf("B\n");
else
if (not >= 70)
printf ("C\n");
else
if ( not >= 60 )
printf ( "D\n" );
else
printf ("F\n" );
İf/else Seçim Yapısı
• Birleşik ifade
İfadeler küme parantezi içine alınır.
Örneğin;
if ( not >= 60 )
printf ( "Geçtiniz\n" );
else
{
printf (" Kaldınız\n" );
printf (" Bu dersi tekrar almalısınız\n" );
}
while Döngüsü
• Döngü yapısı
 Programcıya bir koşul doğru olduğu sürece bir işlemi tekrarlatma
imkanı sağlar.
 Sahte kodu
alışveriş listemde birden fazla malzeme bulunduğu sürece ( while )
bir sonraki malzemeyi al ve alışveriş listemden bu malzemeyi çıkart
 Bu işlem koşul doğru olduğu sürece tekrarlanır.
 Örneğin;
carpim = 2;
while ( carpim <= 1000 )
carpim = 2 * carpim;
Genel Programlama
Hataları
• while koşulunu yanlış hale
getirecek işlemi, while yapısının
gövdesinde bulundurmamak.
Normal olarak bu döngü yapısı hiç
bir zaman sonlanmaz. Bu hataya
“sonsuz döngü” hatası denir.
while Döngüsü Akış Diyagramı
Sayıcı Kontrollü Döngü
• Sayıcı Kontrollü Döngü
Sayaç(sayıcı) belli bir değere ulaşana kadar döngü
tekrarlanır.
Belirli döngüler: Döngü başlamadan önce döngünün
kaçıncı tekrardan sonra sonlanacağı bilinir.
Örneğin;
Bir sınıftaki 10 kişi bir sınava girmiştir. Notlar(0’dan
100’ e kadar tamsayılar) size verilmiş ve bu sınavın
sonucunda sınıfın ortalamasını bulmanız istenmiştir.
Sayıcı Kontrollü Döngü
• Sahte Kodu:
toplamı 0'a ata
sayıcı 'yı 1'e ata
sayıcı 10' e git ya da 10'dan küçükken (while)
Diğer notu gir.
Girilen notu, toplama ekle
sayıcı‟ ya 1 ekle
Sınıf ortalamasını, toplamı 10'a bölerek bul
Sınıf ortalamasını yazdır.
#include <stdio.h>
#include <conio.h>
int main()
{
int counter, grade, total, average;
total = 0;
counter = 1;
while ( counter <= 10 ) {
printf( "Not girin: " );
scanf( "%d", &grade );
total = total + grade;
counter = counter + 1;
}
average = total / 10;
printf( "Sınıf Ortalaması: %d\n", average );
getch();
return 0;
}