PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler

Slides:



Advertisements
Benzer bir sunumlar
Yinelemeli Algoritma Analizi & Asimptotik Notasyon
Advertisements

Ayrık Yapılar Algoritma Analizi.
MATLAB Bilgisayar Programlama Yrd.Doç. Dr. Aslıhan KURNUÇ
Döngüler.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
BİLEŞİK ATAMA VE DÖNGÜLER
ÖMYO Nesne Tabanlı Programlama-1
Kontrol İfadeleri : 2.Kısım
MIT504 İnternet ve Web Programlama: Javascript programlama devam Yrd. Doç. Dr. Yuriy Mishchenko.
Nesneye Dayalı Programlama
DÖNGÜ İFADELERİ.
DÖNGÜ “Şart sağlandığı sürece” içerisindeki komut satırlarını, artış değeri adedince tekrarlayan kodlardır.
Kontrol Çevrimleri FOR WHILE DO-WHILE IF-ELSE SWITCH-CASE-DEFAULT
YAPAY ZEKA ÖDEV - 3 Kenan KILIÇASLAN Trakya Üniversitesi Fen Bilimleri Enstitüsü Makina Mühendisliği Doktora Programı.
Bölüm 5 – Kontrol İfadeleri : 2.Kısım
VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş
Yrd. Doç.Dr. Nilgün GÜLER BAYAZIT
Bölüm 5 – Kontrol İfadeleri : 2.Kısım
Bölüm 2: Program Denetimi
Nesneye Dayalı Programlama
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi Hazırlayan : Nuri AVCI
Bölüm 5 Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut
DÖNGÜ İFADELERİ.
Döngü ve Koşul Komutları
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 5: Fonksiyonlar
~DÖNGÜLER~.
Kabuk Programlama Kerem ERZURUMLU
Nesneye Dayalı Programlama
Döngü Yapıları.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Bölüm 5 Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut
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
For Döngüsü Foreach Döngüsü While Döngüsü
Bilgisayar Programlama Güz 2011
DÖNGÜLER.
DÖNGÜLER.
Bölüm 4 – C’de Program Kontrolü
PHP'de Program Denetimi
DÖNGÜLER.
DÖNGÜLER(Loop) while, for döngüleri Break ve continue işlevleri
DÖNGÜLER.
Veri Tabanı Yönetim Sistemleri 2 Ders 2 Oracle 11g Kurulumu
C#’TA DÖNGÜLER onbirc.com/133.
4. KONTROL VE DÖNGÜ KOMUTLARI
C++ Ders Notları 4.Ders (Kontrol ve Döngüler)
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.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller
DÖNGÜ DEYİMLERİ Programın belirli bir kesiminin birden fazla tekrarlanması işlemine DÖNGÜ denir. Bir değişken belirli bir değerden başlayıp, son değeri.
Bilgisayar Mühendisliği Bölümü
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.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Mesut Çakır TEŞEKKÜRLER.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
BM-103 Programlamaya Giriş Güz 2016 (5. Sunu)
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H04
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
YAPISAL PROGRAMLAMA Hafta-6
4- OPERATÖR – koşul - döngü Nesne Yönelimli Programlama - i
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği

Döngüler Belirli bir sayıda ya da belirli bir koşul sağlanana kadar arka arkaya yapılması gereken işlemler için döngüler kullanılır. Böylece bilgisayarın sürekli yapacağı işlemler için aynı komutları tekrar tekrar yazmak zorunda kalmayız. IF ve GOTO komutlarının birlikte kullanımı ile de döngü kurulabilir, fakat en doğru yol belirli bir sayıda işlem yapmak için FOR, belirli bir koşul sağlanana kadar işleme devam etmek için ise WHILE döngülerini kullanmaktır.

FOR Döngüsü for ( int i = A ; i <= B ; i = i + C ) { ... } Örn: 1 ile 100 arasındaki tam sayıları görüntüleme: for ( int i = 1 ; i <= 100 ; i = i + 1 ) { Console.WriteLine(i); Başlangıç Değeri Bitiş Değeri Artım Değeri Döngüde kontrol amaçlı kullanılan değişken i değişkeni döngü dışında geçerli olmayacaktır i++ yada i+=1 yazılabilir. 100’den 1’e görüntüleme: for (i = 100 ; i >= 1 ; i--)

1 ile 100 arasındaki sayıların toplamını bulan program static void Main(string[] args) { int i, toplam = 0; for (i = 1; i <= 100; i += 1) toplam += i; } Console.WriteLine("Toplam = " + toplam); Döngüde tek komut yer aldığı için { ve } (blok başı ve sonu simgeleri) kullanılmayabilirdi. i değişkeni for döngüsü öncesinde tanımlandığı için for döngüsüne ait bloğun dışında da kullanılabilir.

Faktöriyel Hesabı Programı static void Main(string[] args) { int sayi, f = 1, i; Console.Write("Faktöriyeli bulunacak sayı? "); sayi = Convert.ToInt32(Console.ReadLine()); for (i = 2; i <= sayi; i++) f = f * i; Console.WriteLine(sayi + "! = " + f); } Döngüde tek komut yer aldığı için { ve } (blok başı ve sonu simgeleri) kullanılmadı.

Faktöriyel Hesabının Akış Şeması Başla Döngü sayısı belli ise akış şemalarında for döngüsü kullanımına benzer bir içerik yazıyoruz: f=1 sayı i,2,sayı,1 i, 2, sayı, 1 f=f*i i Döngü Değişkeni Başlangıç değeri Bitiş değeri Artım değeri f for (i = 2; i <= sayi; i++) Dur

Verilen koşul doğru olduğu sürece döngü devam eder. WHILE Döngüsü while ( koşul ) { ... if ( koşul ) break; } Verilen koşul doğru olduğu sürece döngü devam eder. Döngüden çıkmak için döngü içinde break ifadesi kullanılabilir (hem FOR hem de WHILE için geçerli). Eğer break bir if koşulu içinde kullanılmadıysa döngü bloğu içinde o satırın altındaki tüm satırlar gereksiz olacaktır.

WHILE’da koşulu döngü sonunda vermek Eğer döngüye koşul aranmadan girilmesi istenirse, döngünün sonunda da koşul kontrolü yapılabilir: do { … } while ( koşul );

Kullanıcı hatalı giriş yaptığı sürece tekrar giriş istenmesi döngüsü char i; Console.WriteLine("1) Toplama, 2) Çıkarma, 3) Çarpma, 4) Bölme, 5) Çıkış"); do { Console.Write("İşlemi seçin [1-5]: "); i = Console.ReadKey().KeyChar; Console.WriteLine(); if (i == '5') Environment.Exit(0); } while (i < '1' || i > '5'); ReadKey alt satıra almadığı için gerekli NOT: Geçen hafta 4 işlem programında GoTo kullanmak yerine bu kodu kullanabilirdik.

Girilen sayının asal olup olmadığını bulan akış şeması Kullanıcının girdiği sayının 2’den büyük ve sayı-1’den küçük olan tüm sayılara tam bölünüp bölünmediği kontrol edilir. Başla sayı Döngü içinde verdiğimiz sayi%i=0 (sayi mod i = 0) koşulu sağlandı ise asal olmadığı kesinleştiğinden, diğer sayılar için kontrol yapılmadan döngüden çıkılır. i,2,sayı-1,1 sayi%i=0 Evet Eğer i değişkeni sayi-1'i geçip sayi değerine ulaştıysa döngü sonuna kadar gidilmiş ve hiç bölen bulunamamış, yani sayı asal anlamına gelir. Hayır i 1) sayi-1 yerine sayi/2’ye kadar kontrol edilebilir (2 kat daha hızlı) 2) Sayının kareköküne kadar kontrol edilmesi de yeterli olur (bir sayı karekökünden büyük bir sayıya tam bölünebilir, ama o bölümün sonucu karekökünden küçük olacağı için, kareköke kadar bölen olup olmadığını kontrol etmek yeterlidir) Bu döngünün daha az adımda çalışması sağlanabilir mi? sayi=i Evet Sayı asal Hayır Sayı asal değil Bir sayı yarısından büyük bir sayıya tam bölünemeyeceği için sayi-1 yerine sayi/2 ye kadar döngü daha mantıklı olacaktır. Dur

WHILE ile Asal Sayı Bulma static void Main(string[] args) { int sayi, i = 2; Console.Write("Sayıyı giriniz : "); sayi = Convert.ToInt32(Console.ReadLine()); while (i <= sayi/2) { if (sayi % i == 0) break; // bölen bulundu i++; } if (i >= sayi/2) Console.Write("Sayı asal\n"); else Console.Write("Sayı asal değil\n"); Döngü sayısı belli olduğuna göre FOR döngüsü kullanmak daha mantıklı olur

FOR ile Asal Sayı Bulma static void Main(string[] args) { int sayi, i; Console.Write("Sayıyı giriniz : "); sayi = Convert.ToInt32(Console.ReadLine()); for (i = 2; i <= sayi/2; i++) { if (sayi % i == 0) break; // bölen bulundu } if (i >= sayi/2) Console.Write("Sayı asal\n"); else Console.Write("Sayı asal değil\n");

GOTO ile Asal Sayı Bulma static void Main(string[] args) { int sayi, i = 2; Console.Write("Sayıyı giriniz : "); sayi = Convert.ToInt32(Console.ReadLine()); döngü: if (sayi % i == 0) goto son; // bölen bulundu if (i <= sayi/2) { i++; goto döngü; } son: if (i >= sayi/2) Console.Write("Sayı asal\n"); else Console.Write("Sayı asal değil\n"); } Görüldüğü gibi GOTO ile de döngü kurulabilir ama yapılmaması tavsiye edilir

Girilen 15 sayıdan pozitif olanların adedini bulup görüntüleyen akış şemaları IF…GOTO FOR Döngüsü Başla Başla i=1, adet = 0 adet = 0 sayı i,1,15,1 sayı>=0 Evet sayı i=i+1 adet=adet+1 sayı>=0 Hayır Evet adet=adet+1 Evet i<15 Hayır i adet adet Dur Dur

Girilen 15 sayıdan pozitif olanların adedini bulup görüntüleyen program static void Main(string[] args) { int sayi, adet = 0; for (int i = 1; i <= 15; i++) Console.Write(i + ". sayı : "); sayi = Int32.Parse(Console.ReadLine()); if (sayi >= 0) adet++; } Console.Write("Pozitif adedi = " + adet);

Girilen 15 sayıdan pozitif olanların adedini bulup görüntüleyen program static void Main(string[] args) { int sayi, i = 1, adet = 0; döngü: Console.Write(i + ". sayı : "); sayi = Int32.Parse(Console.ReadLine()); if (sayi >= 0) adet++; if (i < 15) { i++; goto döngü; } Console.Write("Pozitif adedi = " + adet); } Sonraki derslerimizde tekrar etmesi gereken işlemleri bu şekilde IF…GOTO ile değil, FOR ve WHILE döngü ifadeleri ile yapacağız.

Girilen 10 sayıdan en büyüğünü bulan ve görüntüleyen akış şeması Kontrol İfadesiyle Döngü İfadesiyle Başla Başla Programı ödev olarak verilmişti Programı sonraki slaytta i=1, eb=0 i,1,10,1 sayı sayı sayı>eb Evet sayı>eb Evet i=i+1 eb=sayı eb=sayı Hayır Hayır Evet i<10 i eb eb Dur Dur

Girilen 10 sayıdan en büyüğünü bulan ve görüntüleyen program static void Main(string[] args) { int sayi, eb = 0; for (int i = 1; i <= 10; i++) Console.Write(i +". sayı : "); sayi = Int32.Parse(Console.ReadLine()); if (sayi > eb) eb = sayi; } Console.Write("En büyük sayı = " + eb); Kullanıcı tüm sayıları negatif girerse ne olur?

50 öğrencinin notlarının ortalamasını bulan akış şeması Başla toplam = 0 i,1,50,1 not toplam=toplam+not i ortalama=toplam/50 ortalama Dur

50 öğrencinin notlarının ortalamasını hesaplayıp görüntüleyen program static void Main(string[] args) { int notu, ortalama, toplam = 0; for (int i = 1; i <= 50; i++) Console.Write(i + ". not : "); notu = Convert.ToInt32(Console.ReadLine()); toplam += notu; } ortalama = toplam / 50; Console.Write("Notların ortalaması = " + ortalama); ortalama değişkeni olmasaydı: Console.Write("Notların ortalaması = " + toplam/50);

Ödevler Sayının yarısına kadar değil, daha da az sayıda döngü adımı ile asal sayı bulabilen bir yöntem bulun. 1 ile 1000 arasındaki asal ve mükemmel sayıları bulan ve ekranda görüntüleyen programı yazın. (Mükemmel sayı: bölenlerinin toplamı kendisine eşit olan sayı... 28 = 1+2+4+7+14).

Ödevler Kullanıcıdan 2 sayı alıp bu sayıların en büyük ortak bölenini ve en küçük ortak katını bulan programı yazın. Fibonacci serisi 0 ve 1 ile başlayıp, bir elemanın değerinin kendisinden önceki iki elemanın toplanması ile oluşturulduğu bir seridir: Kullanıcının klavyeden girdiği sayıda Fibonacci serisi elemanını gösteren programı yazın.