While döngüleri.

Slides:



Advertisements
Benzer bir sunumlar
OPERATÖRLER.
Advertisements

BPR151 ALGORİTMA VE PROGRAMLAMA - I
Karar Verme: Eşitlik ve Karşılaştırma Operatörleri
mantIKSAL OPERATÖRLER
Değişkenler ve bellek Değişkenler
OPERATÖRLER Programlama dillerinde tanımlanmış sabit ve değişkenler üzerinde işlemler yapmayı sağlayan karakter ya da karakter topluluklarına operatör.
Nöbetçi Kontrollü Döngü
Kontrol İfadeleri : 2.Kısım
switch - case Yapısı Döngü Yapıları
Bölüm 5 – Kontrol İfadeleri : 2.Kısım
Yrd. Doç.Dr. Nilgün GÜLER BAYAZIT
Bölüm 4 – Kontrol İfadeleri:1.kısım
Bölüm 5 – Kontrol İfadeleri : 2.Kısım
4 Kontrol Yapıları: 1.Bölüm.
Bölüm 2: Program Denetimi
EDUTIME Java Day 4 Serdar TÜRKEL.
SQL de Değişken Tanımlama
Karar ifadeleri ve Döngüler
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Bölüm 5 Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut
Operatörler.
Bölüm 3 – Yapısal Programlama
T-SQL-2.Konu Akış Kontrolleri.
Yapısal Program Geliştirme – if, if-else
Operatörler ve Denetim Yapıları
BPR152 ALGORİTMA VE PROGRAMLAMA - II
SQL de Değişken Tanımlama
Bilgisayar Programlama
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
C ile Programlamaya Giriş
Bölüm 2 – Kontrol Yapıları
Koşul İfadeleri ve Akış Kontrolü Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir akış kontrolü oluşturabilmek için koşul ifadelerini.
Akış Kontrol Mekanizmaları
Kontrol Yapıları ve Döngüler
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Çoklu dallanma seçimi: switch
DÖNGÜLER.
Mantıksal Operatörler ve Denetim Yapıları
Bölüm 4 – C’de Program Kontrolü
BİL 102 BİLGİSAYAR PROGRAMLAMA
DÖNGÜLER.
PROGRAM DENETİM DEYİMLERİ
4. KONTROL VE DÖNGÜ KOMUTLARI
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.
Görsel C# ile Windows Programlama
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
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Adım Adım Algoritma.
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
C Programlama Dili Bilgisayar Mühendisliği.
Bilgisayar Programlamasına ve Veri Analizine Giriş - IV
BM-103 Programlamaya Giriş Güz 2016 (10. Sunu)
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H04
METHODLAR VE KOŞULLAR.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Excel’de VBA Programlama (Visual Basic Application)
PROGRAM KONTROL KOMUTLARI 1. if koşulu 2. if else koşulu
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
BLM-111 PROGRAMLAMA DİLLERİ I Ders-2 Değişken Kavramı ve Temel Operatörler Yrd. Doç. Dr. Ümit ATİLA
Bölüm 5: Kontrol Yapıları II (Yenilenme-Repetition)
Bölüm 6: Kullanıcı Tanımlı Fonksiyonlar I
Bölüm 2: Program Denetimi
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Döngüler.
NİŞANTAŞI ÜNİVERSİTESİ
Bir Döngünün Bölümleri (hatırlatıcı)
Sunum transkripti:

while döngüleri

Aynı kodun tekrar yürütülmesine izin veren yapılardır. Tekrarlama yapıları Aynı kodun tekrar yürütülmesine izin veren yapılardır. Bu belli deyimleri belli bir biçimde birden fazla kez yürütebilirsiniz anlamındadır. Deyimler bazı şartlar doğru olarak kaldığı sürece yürütülür. “döngüler” olarak da bilinirler Bazen “tekrarlayıcılar” olarak ta söz edilirler. 09.04.2019

while tekrar yapısı { do this (again and again...) } Bazı şartlar doğru olduğu sürece işler gerçekleştirilecektir. Örneğin: (programımsı şekilde) while (something is true) { do this (again and again...) } while (birşeyler doğruysa) { bunu tekrarla (tekrar ve tekrar...) Test edilen şartlar pek çok farklı durum alabilir. 09.04.2019

While Döngüsünün Bölümleri Her while döngüsü her zaman üç temel öge içerir: Ateşleme: değişkenlerinizi başlangıç durumuna getirme Test Etme: bazı bilinen durumlara karşı test etme Güncelleme: test edilen değişkenin güncellenmesi 09.04.2019

Basit While Döngüsü OUTPUT: ÇIKTI: Index: 1 Index: 2 Index: 3 Index: 4 Index: 5 Index: 6 Index: 7 Index: 8 Index: 9 Index: 10 #include <stdio.h> #define MAX 10 main () { int index =1; while (index <= MAX) { printf ("Index: %d\n", index); index = index + 1; } Ateşleme 1. Priming 2. Test Condition Durum testi 3. Update Güncelleme 09.04.2019

While Döngüsü Akış Diyagramı Ateşleme Index=1’e ayarla 1. Priming Set index=1 2. Test index <= 10 Doğru TRUE 3a. print index 3b. Update index = index + 1; İndexi yaz index=index+1 olarak güncelle FALSE Yanlış 09.04.2019

Sonsuz Döngü Sonsuz Döngü: Hiçbir zaman sonlanmayan bir döngü. Genel olarak, bundan sakınmak istersiniz! Buna rağmen belli bir amaçla sonsuz döngü oluşturmak isteyeceğiniz özel durumlar vardır. Yaygın sınav soruları: Bir kod parçası verilir, kod içindeki hatayı belirlemeniz istenir. Sonsuz döngüleri belirlemeye ihtiyaç duyabilirsiniz. 09.04.2019

Sonsuz Döngü Örnek #1 #include <stdio.h> #define MAX 10 main () { int index =1; while (index <= MAX) printf ("Index: %d\n", index); } Index: 1 … [forever] ... [sonsuza dek] Here, I have deleted part 3: the index = index + 1 statement. Burada, 3. Bölümü sildim; index=index+1 deyimini 09.04.2019

test şartını değiştirdim Sonsuz Döngü, Örnek #2 #include <stdio.h> /*no MAX here*/ main () { int index = 1; while (index > 0) printf ("Index: %d\n", index); index = index + 1; } Index: 1 Index: 2 Index: 3 Index: 4 Index: 5 … [forever] ... [sonsuza dek] Burada, 2. Bölümü: test şartını değiştirdim 09.04.2019

Sayıcı-kontrollü tekrarlar Basitçe bir deyimi veya bir deyim grubunu tekrar etmeyi ne zaman durduracağınızı söylemesi için bir sayıcı kullanmayı ifade eder. Daha önceki örnekler sayıcı kontrollü tekrarlardı. 09.04.2019

Sayıcı (tekrarlayıcı olarakta bilinir) Programınızın bir deyimler bloğunu kaç kere tekrarlayacağını sayan bir değişkendir. Kullanılmadan önce başlangıç durumuna getirilmelidir Bir sayıcıyı tekrarlama kodunu girmeden hemen önce başlangıç durumuna getirin (“Yakınlık Prensibi”) Tekrarlama tipine bağlı olarak genellikle bir 1 veya 0’dır Eğer başlangıç durumuna getirilmezse, bir “çöp” değeri elde ederiz genellikle mantıksal hatalarla sonuçlanır 09.04.2019

Tekrarlama Bir tekrarlama yapısı kullanır Yürütülecek kodun tekrarlanması işlemidir. “Bir tekrarlama” aynı zamanda tekrarlanacak kod boyunca bir atlama veya bir uçuş anlamına da gelir. 09.04.2019

Daha ince bir örnek #define ITEMS_TO_BUY 10 int iItemsBought = 0 ; /* yeterince alana kadar zaman satın almaya devam */ while ( iItemsBought < ITEMS_TO_BUY ) { /* bir parça alırken işlenecek kod */ /* sayıcımızı artırmayı unutmayın! Aksi taktirde sonsuza dek dörer */ iItemsBought = iItemsBought + 1; } /* end while itemsbought... */ /* while itemsbought sonu... */ /* while’dan çıktıktan sonra yürütülecek bir sonraki komut */ 09.04.2019

Çıkış Bir tekrarlama yapısında çıkış için kullanılan genel terim Bir tekrarlama yapısından çıkmak için kullanılan bir deyim DEĞİLDİR Başka durumlardaki kodlardan çıkmak için de kullanılabilir Bir programdan çıkış Bir fonksiyondan çıkış Bu son iki durumda bir çıkışa zorlamak genellikle kod yürütmesini durdurmak için kötü bir yoldur. 09.04.2019

bir başka örnek #define STUDENTS_ENROLLED_COUNT 50 int iStudentsPresentInClassCount = 0, iCurrentStudentIsHere = 0, iStudentIndex; iStudentIndex = 1; /* init here to make sure */ /* emin olmak için burda başlat */ while ( iStudentIndex <= STUDENTS_ENROLLED_COUNT ) { /* code to count attendance */ /* mevcut sayısını sayma için kod */ iCurrentStudentIsHere = 0 ; /* init to not here */ /* burada başlatmayın */ printf( “Enter 1 if student is here\n” ); scanf( “%d”, &iCurrentStudentIsHere); if ( iCurrentStudentIsHere== 1 ) iStudentsPresentInClassCount = iStudentsPresentInClassCount + 1; /* don't forget to increment our counter! */ /* sayıcımızı artırmayı unutmayın! */ iStudentIndex = iStudentIndex + 1; } /* end while */ /* while sonu */ 09.04.2019

bir başka örnek, devam if ( iStudentsPresentInClassCount < /*while’dan çıktıktan sonra yürütülecek kod */ if ( iStudentsPresentInClassCount < STUDENTS_ENROLLED_COUNT ) { /* mevcut sayısını almaya başla */ /* sürpriz quizler vermeye başla */ } 09.04.2019

Nöbetçi-kontrollü tekrarlar Bir önceki örnekte eğer kullanıcının programın ne zaman sonlanacağına karar vermesini istiyorsak ne olacak? Bir nöbetçi kullan 09.04.2019

Veri girişini sonlandıran sinyallerdir Nöbetçiler Veri girişini sonlandıran sinyallerdir Sinyal değeri, taklit değer, veya bayrak değeri olarakta bilinir Belirsiz tekrar olarakta bilinir çünkü kodun gerçekleştireceği döngü sayısı döngüden önce bilinmemektedir 09.04.2019

Nöbetçiler kullanmak Nasıl kullanılırlar? Programcı asla normal veriye karşılık gelemeyecek bir değer alır Kullanıcı normal veriyi girer ve sonra bittiğinde, olağan olmayan değeri alır Döngü olağan olmayan değeri görünce döngüyü durduracaktır 09.04.2019

Nöbetçiler kullanmada geri sayım Örneğin, insanlar için yaş değeri giriyorsak, nöbetçi olarak -1 alabiliriz Hiç kimsenin -1 yaşında olması beklenmez Kullanıcıya döngünün her tekrarında nöbetçi değerini hatırlatmak iyi bir pratiktir Örneğin, printf(“Hali hazırdaki kişinin yaşını veya sonlandırmak için -1 girin\n”); sonraki değer girişi (nöbetçi olabilir) 09.04.2019

İyi Programlama tavsiyeleri Öyle bir nöbetçi değeri alın ki KESİNLİKLE normal veri ile karıştırılmasın Her tekrarda kullanıcıya nöbetçi değerini hatırlatın Y2K benzeri problem Programcılar genellikle döngüleri sonlandırmada nöbetçi olarak 9999 kullanırdı 9 Eylül 1999’da (bazen 9999 olarak kısaltılır), programların beklenenden daha önce yürütmeyi hatalı olarak durdurabileceğinden kaygılandılar. Döngülerde, döngü içinde ihtiyaç duyulmayan komutları DIŞARIDA tutun. 09.04.2019

Yukardan-aşağı, adım-yoluyla arıtma Kod geliştirme tekniği Çok genel şekilde algoritmayı temsil eden sözde program ile başlar Algoritmayı her yeniden açıklanış adımında daha detaylı/özel alır (herbir arıtma) Problem bir kez sözde programda yeterli derecede detaylandırıldığında programlamaya başlanabilir. Her bir adım aynı algoritmanın yalnızca biraz daha detaylandırılmış tanımıdır 09.04.2019

Yukardan-aşağı, adım-yolu örnek En üstteki analiz Ders quizindeki ortalamayı belirle İlk arıtma (en üsttekini kısımlara ayırma) Değişkenleri başlangıç durumuna getir Girdi, toplam ve not sayısının sayımı Sınıf ortalamasını hesapla ve yaz 09.04.2019

Yukarıdan-aşağıya örnek, geri sayım İkinci arıtma gereken özel değişkenleri listeler total (toplam) başlangıç değerini 0 olarak belirle counter (sayıcı) başlangıç değerini 0 olarak belirle İlk arıtmanın ara adımını daha detaylı olarak kısımlara ayırma, ör: ilk notu gir kullanıcı nöbetçiyi girmediği sürece notu toplama ekle not sayıcısına bir ekle sonraki notu gir (nöbetçi olabilir) 09.04.2019

Yukarıdan-aşağıya örnek, geri sayım İkinci arıtma geri sayımı İlk arıtmanın son adımı aşağıdaki gibi kısımlara ayrılabilir: Sayıcı 0’a eşit değilse ortalamayı toplam bölü sayıcı olarak ata ortalamayı yaz eşitse “hiç not değeri girilmedi” yaz Bir kez yeterli detay oldu mu, planı ve böylece kodu görmek kolaydır 09.04.2019

do/while tekrar yapısı while yapısıyla benzerdir Fakat şartı en yukarda test etmek yerine döngünün sonunda test eder Bir döngünün EN AZ BİR KEZ yürütülmesinin istiyorsanız kullanılır 09.04.2019

do/while sözde programı { something } while (condition) ; Sağ kırlangıç parantezden hemen sonra bir açıklama yerleştirmeye istisnadır, buna rağmen noktalı virgülden sonra hala açıklama yapmamız gerekir. 09.04.2019

printf( “%d “, iCounter ); iCounter = iCounter + 1; do/while örneği int iCounter = 1; do { printf( “%d “, iCounter ); iCounter = iCounter + 1; } while ( iCounter <= 10 ) ; Sondaki noktalı virgüle dikkat edin 09.04.2019

do while döngüsü akış diyagramı 1. Ateşleme Index=1 atayın 1. Priming Set index=1 2a. İndexi yaz 2b. İndex=index+1 olarak güncelleyin 2a. print index 2b. Update index = index + 1; TRUE 3. Test index <= 10 3. İndexi test et <=10 mu? FALSE 09.04.2019

Notlar Her zamanki while döngüsü ile karışmaması için her zaman parantezler kullanın 09.04.2019

C bazı genel çalışmalar için kısaltmaları destekler Atama operatörleri Kısayollar C bazı genel çalışmalar için kısaltmaları destekler Atama operatörleri Arttırma/azaltma çalışmaları 09.04.2019

Temel ikili operatörler için kısaltmalar sağlanır Atama Operatörleri Temel ikili operatörler için kısaltmalar sağlanır Ekleme Çıkarma Çarpma Bölme Modül alma (%) 09.04.2019

Ekleme Atama Operatörü Yazma yerine iCount = iCount + 1; Yazabilirsiniz iCount += 1 ; Sağ taraftaki ifadenin değerini sol taraftakine ekler ve yeni toplamı sol taraftakinde depolar 09.04.2019

Çıkarma Atama Operatörü Yazmak yerine iCount = iCount - 1; Yazabilirsiniz iCount -= 1 ; Sağ taraftaki ifadenin değerini sol taraftakinden çıkarır ve yeni toplamı soldaki değişkende depolar 09.04.2019

Çarpma Atama Operatörü Yazmak yerine iCount = iCount * 2; Yazabilirsiniz iCount *= 2; Sol taraftaki değişkenin değerini sağ taraftaki değişkenin değeriyle çarpar ve yeni toplamı sol taraftaki değişkende depolar 09.04.2019

Bölme Atama Operatörü Yazmak yerine iCount = iCount / 2; Yzabilirsiniz Soldaki değişkeni sağdaki ifadenin değerine böler ve yeni toplamı soldaki değişkende depolar. 09.04.2019

Modül Alma Atama Operatörü Yazmak yerine iSeconds = iSeconds % 60; Yazabilirsiniz iSeconds %= 60; Soldaki değişkenin sağdaki ifadenin değerine bölümünden kalanı alır ve yeni toplamı soldaki değişkende depolar. 09.04.2019

Örnekler Assigns Meaning Sample Initial Value Operator 3 to c Farzadelim ki int c = 10 3 to c c = c % 7; c %= 7; 10 %= 2 to c c = c / 5; c /= 5; /= 60 to c c = c * 6; c *= 6; *= 7 to c c = c – 3; c -= 3; -= 17 to c c = c + 7; c += 7; += Assigns Meaning Sample Initial Value Operator 09.04.2019

Arttırma ve Azaltma Operatörleri C birli atama operatörleri ++ ve azaltma operatörü -- ‘yi sağlar. Arttırma operatörleri 1 ekler Azaltma operatörleri 1 azaltır Bazı deyimler için kısa yoldan bile daha fazlası Diğer ilişkilendirme operatörleri için değil (*, /, %) 09.04.2019

iCount++ ; or ++iCount ; Arttırma Operatörü ++ Yazmak yerine iCount = iCount + 1; or iCount += 1; Yazabilirsiniz iCount++ ; or ++iCount ; İki yeni tercih olarak bilinen ileri-atama ve ön-atama arasında ayırt etmesi güç fark 09.04.2019

printf( “%d\n”, iCount++ ); İleri-atama ++ operatörü değişkenden sonradır Değişkenin, bulunduğu deyimde başlangıç değerinin kullanılmasına sebep olur VE DAHA SONRA değişkene 1 ekler Örneğin, int iCount = 5; printf( “%d\n”, iCount++ ); 5 yazacaktır... Fakat icount deyimden sonra 6 değerini alır 09.04.2019

printf( “%d\n”, ++iCount); ön-atama ++ operatörü değişkenden öncedir Bulunduğu deyimde kullanılmadan ÖNCE değişkenin başlangıç değerine 1 ekler Örneğin, int iCount = 5; printf( “%d\n”, ++iCount); 6 yazacaktır.. Ve icount deyimden sonra 6 değerini alır 09.04.2019

Daha fazla örnek ++ ileri-attırma ön-attırma int iTotal = 0; int iCount = 5; iTotal = iCount++ * 2; printf( “%d\n”, iTotal); printf( “%d\n”, iCount); iTotal için 10 yazacaktır ve sonra iCount için 6 iTotal = ++iCount * 2; iTotal için 12 yazacaktır ve sonra iCount için 6 09.04.2019

iCount-- ; or --iCount ; Azaltma Operatörü -- Yazım/çalışma olarak arttırma ile benzerdir Yazmak yerine iCount = iCount - 1; or iCount -= 1; Yazabilirsiniz iCount-- ; or --iCount ; İki yeni tercih olarak bilinen ileri-azaltma ve ön-azaltma arasında ayırt etmesi güç fark 09.04.2019

printf( “%d\n”, iCount-- ); İleri-azaltma -- operatörü değişkenden sonradır Değişkenin, kullanıldığı deyimde başlangıç değerinin kullanılmasına sebep olur VE DAHA SONRA değişkenden 1 çıkarır Örneğin, int iCount = 5; printf( “%d\n”, iCount-- ); 5 yazacaktır... Fakat iCount deyimden sonra 4 olacaktır 09.04.2019

printf( “%d\n”, --iCount); Ön-azaltma -- operatörü değişkenden öncedir Bulunduğu deyimde kullanılmadan ÖNCE değişkenin başlangıç değerini 1 azaltır Örneğin, int iCount = 5; printf( “%d\n”, --iCount); 4 yazacaktır.. Ve iCount deyimden sonra 4 olacaktır 09.04.2019

Daha fazla örnek ++ ileri-azaltma ön-azaltma int iTotal = 0; int iCount = 5; iTotal = iCount-- * 2; printf( “%d\n”, iTotal); printf( “%d\n”, iCount); iTotal için 10 yazacaktır ve daha sonra iCount için 4 iTotal = --iCount * 2; iTotal için 8 yazar ve iCount için 4 09.04.2019

Explanation Sample Operator Özet Tablosu Subtract 1 from c THEN use new value of c in expression c’den 1 çıkart ve SONRA yeni değeri bir deyimde kullan --c -- Use value of c in expression THEN subtract 1 from c c değerini bir deyimde kullan ve SONRA c’den 1 çıkart. c-- Add 1 to c THEN use the new value of c in expression c’ye 1 ekle ve SONRA c’nin yeni değerini bir deyimde kullan ++c ++ Use value of c in expression THEN add 1 to c c değerini bir deyimde kullan ve SONRA c’ye 1 ekle c++ Explanation Sample Operator 09.04.2019

Notlar Bu farkı görmeniz önemlidir. Benzettiğiniz her iki kod şeklinde de örnekler göreceksiniz. İşleri kolaylaştırmak için, yalnızca bu ders için, yalnızca ileri arttırma/azaltmalara ihtiyaç duyduğunuzdan emin olmaya çalışacağım. 09.04.2019

Uyarılar iTotal = iCount++ + ++iCount; [Of !] iTotal = (x + y)++ ; Önceliğin ANSI standartlarına dayalı olduğu yerlerde bazen karışıktır bu yüzden arttırma ve azaltma operatörlerini bir deyim içinde aynı değişken üzerinde bir kereden fazla kullanmayın iTotal = iCount++ + ++iCount; [Of !] Daha büyük deyimlerde işleyemezi ör: iTotal = (x + y)++ ; Aynı zamanda şartları test ederken veya kontrol döngülerinde kullanmak iyi bir fikir değildir if (x++ == 188 && x++ == 189) [ugh!] { } 09.04.2019

İyi Programlama Pratikleri Birli operatörleri arada boşluk bırakmaksızın doğrudan işlenenlerinin yanına yerleştirin 09.04.2019