Nöbetçi Kontrollü Döngü

Slides:



Advertisements
Benzer bir sunumlar
Soru1 : Bir borcun faizi, basit olarak aşağıdaki formülle hesaplanır:
Advertisements

STRİNG FONKSİYONLARI.
Soru1: 1’den 4’e kadar olan tamsayıları ekrana tek satırda görülecek şekilde yazdıran bir programı aşağıdaki metotları kullanarak yazınız. Bir printf ifadesi.
Diziler.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Karar Verme: Eşitlik ve Karşılaştırma Operatörleri
BİLEŞİK ATAMA VE DÖNGÜLER
Kontrol İfadeleri : 2.Kısım
void medyan(int cevap[]) { int j; siralama(cevap);
switch - case Yapısı Döngü Yapıları
String Diziler(Katarlar)
Bölüm 5 – Kontrol İfadeleri : 2.Kısım
Yrd. Doç.Dr. Nilgün GÜLER BAYAZIT
Değişken Bildirimleri
Atama ve Girdi/Çıktı Komutları
Bölüm 4 – Kontrol İfadeleri:1.kısım
Bölüm 5 – Kontrol İfadeleri : 2.Kısım
Bölüm 2: Program Denetimi
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
String Kütüphanesindeki Arama Fonksiyonları
Bölüm 10 Yapılar ve Birleşimler
Karar ifadeleri ve Döngüler
Bölüm 5 Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut
Bölüm 3 – Yapısal Programlama
Yapısal Program Geliştirme – if, if-else
Program Kontrol İfadeleri
Soru1: Kullanıcıdan iki tam sayı girmesini isteyen ve daha sonra büyük olan sayı ile beraber ‘en büyüktür’ ifadesi yazan, ancak sayılar birbirine eşitse.
Fonksiyonlar.
Bölüm 5 Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut
FONKSİYONLAR.
Bölüm 2 – Kontrol Yapıları
Kontrol Yapıları ve Döngüler
DÖNGÜLER.
Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Bölüm 4 – C’de Program Kontrolü
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
DÖNGÜ YAPILARI.
Algoritma & Programlama
DÖNGÜLER(Loop) while, for döngüleri Break ve continue işlevleri
Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
PROGRAM DENETİM DEYİMLERİ
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
The if statement. if Şartlı kontrol Koşul değimi doğru (1) yada yanlış (0) değeri üretir. Şartın doğru olması durumunda if satırından sonraki değimler.
Nesne Tabanlı Programlama 2
Bu Günkü Konular If yapısı ve karşılaştırma operatörleri
Bugünkü Konular Döngüler ve Akış Diyagramları C de Döngü Tanımlama
Algoritma, bir işin hangi aşamalardan geçilerek yapılacağını gösteren çalışma planıdır. Algoritma Nedir ?
2. HAFTA 2. Hafta.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Algoritmalar ve Programlama I Ders 5: Operatörler
Bölüm 3 Atama ve Girdi/Çıktı Komutları Bölüm 3 Atama ve Girdi/Çıktı Komutları Atama Komutu Operatörler İsim Sabitleri Veri Tipi Dönüşümü Çıktı Fonksiyonu.
3. HAFTA 3. Hafta.
Döngü Komutları. for deyimi bir alt limitten, bir üst limite kadar programın belirli bir parçasını tekrar eder. for deyiminde sayaç artış oranı da verilmelidir.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Bölüm 5 Döngü Komutları while Komutu while Komutu Diğer Operatörler (Bileşik atama, artırma ve azaltma operatörleri ) Diğer Operatörler (Bileşik atama,
Bölüm 3 Atama ve Girdi/Çıktı Komutları
BM-103 Programlamaya Giriş Güz 2016 (10. Sunu)
METHODLAR VE KOŞULLAR.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
PROGRAM KONTROL KOMUTLARI 1. if koşulu 2. if else koşulu
Bölüm 2: Program Denetimi
Bölüm 3 Atama ve Girdi/Çıktı Komutları
Aritmetik Operatörler
While döngüleri.
Bir Döngünün Bölümleri (hatırlatıcı)
C ile Programlamaya Giriş
Sunum transkripti:

Nöbetçi Kontrollü Döngü Ortalama örneğini geliştirelim; Program çalıştırıldığında, kaç kişinin ortalamasının hesaplanacağını önceden bilmeden, sınıf ortalamasını bulacak bir program. Öğrenci sayısı bilinmemekte Program nasıl sonlandırılacak? Nöbetçi değer kullan. Ayrıca sinyal ve ya işaretçi değer de denir. ‘Veri girişi sonunu.’ gösterir Kullanıcı nöbetçi değeri girdiğinde döngü biter. Nöbetçi değer, kabul edilebilir herhangi bir giriş değeriyle karıştırılmayacak biçimde seçilmelidir.( Bu örnek için -1)

Sınıf Ortalaması Problemini Nöbetçi Kontrollü Döngülerle Çözen Sahte Kod Toplam değişkenini sıfır olarak belirle Sayıcı değişkenini sıfır olarak belirle İlk notu gir Kullanıcı nöbetçi değeri girmediği sürece (while) bu notu o andaki değere ekle Sayıcıyı bir arttır Sıradaki notu al(bu değer nöbetçi değer olabilir) Eğer ( if ) sayıcı sıfıra eşit değilse Ortalamayı, notların toplamını sayıcıya bölerek hesapla Ortalamayı yazdır Aksi takdirde ( else ) “Not girilmemiştir” yazdır

#include <stdio.h> #include <conio.h> int main() { float average; int counter, grade, total; total = 0; counter = 0; printf( "Notu giriniz(Cikis icin -1): " ); scanf( "%d", &grade ); while ( grade != -1 ) { total = total + grade; counter = counter + 1; } if ( counter != 0 ) { average = ( float ) total / counter; printf( "Sinif ortalamsi is %.2f", average ); else printf( "Hic not girilmemistir.\n" ); getch(); return 0;

Yuvalı Kontrol Yapıları Bir kontrol yapısını diğerinin içine yuvalamak. Problem Bir kursun 10 öğrencinin test sonuçları(1=geçti, 2=kaldı) için bir listesi vardır. Sonuçları analiz eden bir program yazınız Eğer 8’den fazla öğrenci geçtiyse ‘yüksek başarı’ mesajını yazdırmanızı istemektedirler. Göz önünde bulundurulmalıdır ki; Program 10 test sonucu işleyecektir. Sayıcı kontrollü döngü kullanılacaktır. İki Sayıcı kullanılacaktır. Bunlardan biri sınavı geçen öğrenci sayısını, diğeri kalan öğrenci sayısını saymak için. Her test sonucu 1 ya da 2 gibi bir sayıdır. Eğer sayı 1 değilse, bunun 2 olduğunu varsaya biliriz.

#include <stdio. h> #include <conio #include <stdio.h> #include <conio.h> int main() { int passes = 0, failures = 0, student = 1, result; while ( student <= 10 ) { printf( "Sonuc Gir( 1=gecti,2=kaldi ): " ); scanf( "%d", &result ); if ( result == 1 ) //if/else,while içine yuvalanmıştır. passes = passes + 1; else failures = failures + 1; student = student + 1; } printf( "Gecenler: %d\n", passes ); printf( "Kalanlar: %d\n", failures ); if ( passes > 8 ) printf( "Yuksek Basari\n" ); getch(); return 0;

Atama Operatörleri

Artırma ve Azaltma Operatörleri

#include <stdio.h> #include <conio.h> int main() { int c = 5; printf( "%d\n", c ); printf( "%d\n", c++ ); printf( "%d\n\n", c ); c = 5; printf( "%d\n", ++c ); getch(); return 0; }

Hatırlatma: Şu ana kadar anlatılan operatörlerin öncelikleri

for Döngü Yapısı Döngüler için kullanıldığında formatı For(ilk değer ataması, döngü koşulu, artırma deyimi) Örneğin; int counter; for(counter = 1; counter <= 10; counter++ ) printf( "%d\n", counter ); Tam sayıları 1’den 10 ‘ a kadar yazdırma.

for Döngü Yapısı Çoğu durumda for yapısı while yapısı biçimine çevrilebilir. İlk değer ataması; while( döngü koşulu){ ifade; artırma; } İlk değer ve artırma Sıklıkla, virgüllerle ayrılmış listelerdir. Örneğin; int i , j; for (i = 0, j = 0; j + i <= 10; j++, i++) printf( "%d\n", j + i );

Tipik Bir for Yapısı

Tipik Bir for Döngüsünün Akış Diyagramı

for Döngü Yapısıyla İlgili Notlar ve Gözlemler İlk değer verme , döngü devam koşulu ve artırma deyimleri aritmetik operatörler içerebilir. Örneğin; . Eğer x = 2 ve y = 10 ise for ( j = x; j <= 4 * x * y; j += y / x ) eşdeğerdir for ( j = 2; j <= 80; j += 5 ) ile. Artırma negatif olabilir. Eğer döngü devam koşulu en baştan yanlışsa, for yapısının gövdesi en baştan atlanır. Kontrol değişkeni, döngü gövdesinde sıklıkla yazdırılır ya da işleme sokulur ancak bu gerekli değildir.

for Yapısı İle İlgili Örnekler 1. Kontrol değişkenini 1‘den 100‘e kadar birer birer arttır. for ( i = 1; i <= 100; i++) 2. Kontrol değişkenini 100‘den 1‘e kadar birer birer azalt. for ( i = 100; i >= 1; i--) 3. Kontrol değişkenini 7‘den 77‘ye kadar yedişer yedişer arttır. for ( i = 7; i <= 77 ; i += 7) 4. Kontrol değişkenini 20‘den 2‘ye kadar ikişer ikişer azalt. for ( i = 20; i >= 2 ;i -= 2) 5. Kontrol değişkenini 2, 5, 8, 11, 14, 17, 20 değerlerini alacak biçimde değiştir. for ( j = 2; j <=20; j += 3) 6. Kontrol değişkenini 99, 88, 77, 66, 55, 44, 33, 22, 11, 0 değerlerini alacak biçimde değiştir. for ( j = 99; j >= 0 ;j -= 11)

#include <conio.h> #include <stdio.h> int main() {//for ile toplama int sum = 0, number; for ( number = 2; number <= 100; number += 2 ) sum += number; printf( "Toplam: %d\n", sum ); getch(); return 0; }

#include <stdio.h> #include <math.h> #include <conio.h> int main() { int year; double amount, principal = 1000.0, rate = .05; printf( "%4s%21s\n", "Yil", "Depozito Miktari" ); for ( year = 1; year <= 10; year++ ) { amount = principal * pow( 1.0 + rate, year ); printf( "%4d%21.2lf\n", year, amount ); } getch(); return 0; Yeni Önişlemci pow fonksiyonu ilk argümanın, ikinci argümanına göre kuvvetini hesaplar. Bir kişi $1000’nı %5 faizle bankaya yatırmıştır. Bütün faizin hesaptaki paraya eklendiğini düşünerek 10 yıl boyunca, her yılsonunda hesapta birikecek parayı hesaplayıp yazdırınız. a = p (1 + r)^n a: n yıl sonra hesapta birikecek miktar p: ilk yatırılan miktar n: yıl sayısı r: faiz oranı

switch Çoklu Seçim Yapısı Bir değişken ya da bir ifadenin ayrı ayır sabitlerle karşılaştırılması ve buna bağlı olarak farklı işlemlerin yapılması gibi bir dizi seçimin yer aldığı durumlarda kullanılır. Format case ve tercihe bağlı default kısımlarında oluşur. switch ( ifade ){ case '1': actions case '2': default: } break; yapıdan çıkmak için

switch Çoklu Seçim Yapısı

#include <stdio.h> #include <conio.h> int main() { char islem; int s1, s2, s3; printf("Önce islemi sonra sayilari girin "); scanf("%c%d%d",&islem, &s1, &s2); switch (islem) case '+' : s3 = s1 + s2; break; case '-' : s3 = s1 - s2; break; case '*' : s3 = s1 * s2; break; case '/' : s3 = s1 / s2; break; default : printf ("Hatali islem"); } printf("\nSonuc = %d",s3); getch(); return 0;

do/while Döngü Yapısı do/while döngü yapısı while yapısına oldukça benzer. Döngü devam koşulu, döngünün gövdesi çalışdıktan sonra kontrol edilir. Bu sebepten, döngü gövdesi en az bir kez çalışır. Format: do { İfade; } while ( condition );

do/while Döngü Yapısı ve Akış Diyagramı Örnek (counter = 1): do { printf( "%d ", counter ); } while (++counter <= 10); 1’den 10’a kadar tamsayıları yazar.

#include <stdio.h> #include <conio.h> int main() { int sayac = 1; do { printf( "%d ", sayac ); } while ( ++sayac <= 10 ); getch(); return 0; }

break ve continue ifadeleri while,for,do/while ve switch ile kullanıldığında o yapıdan çıkış sağlar. Program yapıdan sonraki ilk ifadeyi çağırarak devam eder. En genel kullanımı bir döngüden istenen anda çıkmak ve döngünün belli bir kısmandan çıkmaktır. continue while,for ve do/while yapıları içinde çalıştığında döngü gövdesinin kalan kısmı atlanır. while ve do/while yapılarında döngü koşulu hemen kontrol edilir. for yapısında artırma deyimi çalıştırılır daha sonra ise döngü koşulu kontrol edilir.

#include <stdio.h> #include <conio.h> int main() { int x; for ( x = 1; x <= 10; x++ ) { if ( x == 5 ) break; printf( "%d ", x ); } printf( "\nDonguden x= %d oldugunda cikildi\n", x ); getch(); return 0; #include <stdio.h> #include <conio.h> int main() { int x; for ( x = 1; x <= 10; x++ ) { if ( x == 5 ) continue; printf( "%d ", x ); } printf( "\ncontinue, 5 degerinin atlanmasi icin kullanildi\n" ); getch(); return 0;

Mantık Operatörleri Döngülerde ki koşul durumları; && ( mantıksal VE) İki koşulda true ise true döndürür. || ( mantıksal VEYA) İki koşuldan biri true ise true döndürür. ! ( mantıksal DEĞIL) Koşul yanlış olduğunda izlenecek yollu belirler. Döngülerde ki koşul durumları; İfade Sonuç true && false false true || false true !false true