ALGORİTMALAR VE PROGRAMLAMAYA GİRİŞ Öğr. Gör. İsmail KARAMAN Çankırı Karatekin Üniversitesi Meslek Yüksekokulu
Konular C# da Karar Yapıları (If Else Kullanımı)(switch case Kullanımı) C# Döngüler
C# da Karar YapILARI Program yazarken bazı durumlarda programın akış yönünü değiştirmek gerekebilir. Belirtilen bir koşulun sağlanması ve sağlanmaması durumlarında program farklı işlemler yapabilir. Bu tür bir programlamanın yapılabilmesi için karar yapılarından yararlanılır. Örnek: ‘Eğer hava güneşli ise dışarı çıkacağım.’ Örnek duruma bakılacak olursa havanın güneşli olması durumunda kişinin bir eylem gerçekleştireceği belirtilmektedir. Örnek: ‘Eğer Saat 7:00 den önce kalkarsam derse yetişirim, kalkamazsam derse geç kalırım.’ Bu cümlede de saat 7 den önce kalkılması durumunda derse yetişilebileceği kalkılamaz ise derse geç kalınacağı belirtilmektedir.
C# da Karar YapILARI (IF ELSE YAPISI) C# da karar yapıları oluşturabilmek için (programın akış yönünü değiştirebilmek için) IF ELSE yapılarından faydalanılır. if else kullanımı; if (mantıksal sınama) { //Şartın sağlandığında çalıştırılacak kodlar } else //Şartın sağlanmadığında çalıştırılacak kodlar Burada yapılan mantıksal sınama (Koşul) işlemi yalnızca iki farklı değer üretebilir. 1. Koşulun sağlandığı durumlarda true 2. Koşulun sağlanmadığı durumlarda false sonuçları üretilir.
C# da Karar YapILARI (IF ELSE YAPISI) C# mantıksal sınama yapabilmek için mantıksal operatörler kullanılır. C# da Kullanılan Mantıksal Operatörler Operatör Anlamı Örnek Yas = 42 == Eşittir Yas == 100 False != Eşit değildir Yas != 0 True < Küçüktür Yas < 21 <= Küçük veya eşit Yas <= 18 > Büyüktür Yas > 16 >= Büyük veya eşittir Yas >=30
C# da Karar YapILARI (IF ELSE YAPISI) Örnek: Klavyeden girilen yaş değeri 18 den küçük ise ekrana ‘Oy Kullanabilirsiniz’ değilse ekrana ‘Oy Kullanamazsınız’ mesajını yazan algoritma ve programı oluşturunuz. Çözüm : Algoritmik Çözüm GET Yaş IF (yaş>=18 ) THEN DISPLAY ‘’Oy Kullanabilirsiniz’’ ELSE DISPLAY ‘’Oy Kullanamazsınız’’ END IF Program static void Main(string[] args) { Console.Write("Yaşınızı Giriniz...:"); byte yas = Convert.ToByte(Console.ReadLine()); if (yas>=18) Console.WriteLine("Oy Kullanabilirsiniz..."); } else Console.WriteLine("Oy Kullanamazsınız.....");
C# da Karar YapILARI (IF ELSE YAPISI) Örnekte de görüldüğü üzere şart sağlandığında if deyiminin altında yer alan 1. blok çalıştırılmış, sart eğer sağlanmıyorsa else deyiminin altında yer alan 2. blok çalıştırılmıştır. Program çalıştırıldığında şöyle bir ekran çıktısı vermektedir.
C# da Karar YapILARI (IF ELSE YAPISI) Örnek: Klavyeden girilen vize ve final not değerlerine göre başarı notu 60 veya 60 dan büyük ise ekrana ‘BAŞARILI’, değilse ekrana ‘BAŞARISIZ’ sonucunu yazan algoritma ve programı oluşturunuz. (Not: Başarı notu hesaplanırken vize notunun %40 ı, final notunun %60 ı alınacaktır.) Çözüm : Algoritmik Çözüm GET Vize GET Final Bnot=(Vize * 40/100) + (Final * 60/100) IF (Bnot>=60) THEN DISPLAY ‘BAŞARILI’ ELSE DISPLAY ‘BAŞARISIZ’ END IF
C# da Karar YapILARI (IF ELSE YAPISI) Program static void Main(string[] args) { Console.Write("Vize Notunuzu Girin...:"); int vize = Convert.ToInt32(Console.ReadLine()); Console.Write("Final Notunuzu Girin..:"); int final = Convert.ToInt32(Console.ReadLine()); int bnot = (vize * 40 / 100) + (final * 60 / 100); if (bnot>=60) Console.WriteLine("BAŞARILI"); } else Console.WriteLine("BAŞARISIZ"); Console.ReadLine();
C# da Karar YapILARI (IF ELSE YAPISI) C# de if yapısı kullanılırken false durumu her zaman belirtilmek zorunda değildir. Şartın sağlandığı durumlarda yapılacak işler belirtildikten sonra program normal akış yönünde devam edebilir. Örnek: Klavyeden girilen isim değeri 8 karakterden uzun ise ekrana uzun bir isminiz var mesajı veren algoritma ve programı oluşturunuz. Algoritmik Çözüm GET isim IF (LEN(isim)>8) THEN DISPLAY ‘’Uzun bir isminiz var..’’ END IF Program static void Main(string[] args) { Console.Write("İsminizi Girin.....:"); string isim = Console.ReadLine(); int uzunluk = isim.Length; if (uzunluk>8) Console.WriteLine("Uzun bir isminiz var"); } Console.ReadLine();
C# da Karar YapIlarI (IF – ELSE IF – ELSE YAPISI) Program içerisinde birden fazla mantıksal sınama yapılacağı zaman else if yapısından yararlanılır. Örnek: Klavyeden girilen vize ve final notu değerine göre öğrencinin başarı notu; Tabloya göre hesaplanan başarı notu hangi ifadeye karşılık geliyorsa mesajı ekranda gösteren algoritma ve programı oluşturunuz. (Not: Başarı notu hesaplanırken vize notunun %40 ı, final notunun %60 ı alınacaktır.) Algoritma (Sözde Kodlar Yöntemi) GET Vize GET Final Bnot=(Vize * 40/100)+(Final * 60/100) IF (Bnot<40) THEN DISPLAY ‘’BAŞARISIZ’’ ELSE IF (Bnot<60) THEN DISPLAY ‘’ORTALAMA’’ ELSE DISPLAY ‘’BAŞARILI’’ END IF <= BAŞARISIZ < 40 ORTALAMA 60 BAŞARILI 100
C# da Karar YapIlarI (IF – ELSE IF – ELSE YAPISI) Program; static void Main(string[] args) { Console.Write("Vize Notunuzu Girin...:"); int vize = Convert.ToInt32(Console.ReadLine()); // GET Vize Console.Write("Final Notunuzu Girin...:"); int final = Convert.ToInt32(Console.ReadLine()); // GET Final int bnot = (vize * 40 / 100) + (final * 60 / 100); // Bnot if (bnot<40) //IF(Bnot<40) THEN Console.WriteLine("BAŞARISIZ"); // DISPLAY ‘’BAŞARISIZ’’ } else if (bnot<60) //ELSE IF(Bnot<60) THEN Console.WriteLine("ORTALAMA");// DISPLAY ‘’ORTALAMA’’ else Console.WriteLine("BAŞARILI"); // DISPLAY ‘’BAŞARILI’’ }// END IF Console.ReadLine();
C# da Karar YapIlarI (IF – ELSE IF – ELSE YAPISI) Örnek: Santigrat cinsinden girilen sıcaklık değerine göre hava tahmininde bulunan algoritma ve programı oluşturunuz. Tahmin Değerleri Console.Write("Sıcaklık Değerini Girin..:"); int sıcaklık =Convert.ToInt32(Console.ReadLine()); if (sıcaklık<=5) { Console.WriteLine("Çok Soğuk"); } else if (sıcaklık<=15) Console.WriteLine("Soğuk"); }else if (sıcaklık<=25) Console.WriteLine("Ilık"); else if (sıcaklık <= 35) Console.WriteLine("Sıcak"); else Console.WriteLine("Çok Sıcak"); Console.ReadLine(); -∞ <= Çok Soğuk +5 6 Soğuk +15 16 Ilık +25 26 Sıcak +35 36 Çok Sıcak +∞ GET Sıcaklık IF (Sıcaklık<=5) THEN DISPLAY ‘’Çok Soğuk’’ ELSE IF (Sıcaklık<=15) THEN DISPLAY ‘’Soğuk’’ ELSE IF (Sıcaklık<=25) THEN DISPLAY ‘’Ilık’’ ELSE IF (Sıcaklık<=35) THEN DISPLAY ‘’Sıcak’’ ELSE DISPLAY ‘’Çok Sıcak’’ END IF
C# da Karar YapIlarI (BAĞLAYICILAR) Karar yapıları oluşturulurken bazı durumlarda birden fazla koşul kontrolü yapmak gerekebilir. Örneğin öğrencinin hem başarı notunun 60 dan yukarı olması hem de devamsızlığın 16 saatten aşağı olması durumunda Başarılı diğer durumlarda Başarısız olması istendiğinde birden fazla koşulu kontrol etmek gerekir. Bu tür durumlarda mantıksal bağlayıcı operatörlerden yararlanılır. Bu operatörler ile sadece iki değil, ikiden fazlada koşul birbirine bağlanabilir. Mantıksal Operatörler Bağlayıcı Algoritmada Kullanımı C# da Kullanımı VE AND && VEYA OR || ÖZEL VEYA XOR ^ DEĞİL NOT !
C# da Karar YapIlarI (BAĞLAYICILAR) VE Operatörü: Birden fazla tanımlanmış olan koşulların tümünün true üretmesi sonucunda true, diğer durumlarda false sonucu üretir. VEYA Operatörü: Birden fazla tanımlanmış olan koşullardan herhangi birinin true üretmesi sonucunda true, diğer durumlarda false sonucu üretir. DEĞİL Operatörü: Bir yada birden fazla tanımlanmış olan koşulların ürettiği sonucun tersini üretir. Ve İşlemi X Y VE (X.Y) False True Veya İşlemi X Y VEYA (X.Y) False True Değil İşlemi X DEĞİL (X) False True
C# da Karar YapIlarI (BAĞLAYICILAR) Örnek: Klavyeden girilen vize, final, ve devamsızlık saatine göre başarı notu 60 ve üzeri, devamsızlık saati 16 saatten az ise ekrana «BAŞARILI», değilse ekrana «BAŞARISIZ» yazan algoritma ve programı oluşturunuz. (Not: Başarı notu hesaplanırken vize notunun %40 ı, final notunun %60 ı alınacaktır.) Algoritmik Çözüm GET Vize GET Final GET Devam Bnot=(Vize * 40/100) + (Final * 60/100) IF (Bnot>=60) AND (Devam<=16) THEN DISPLAY ‘’BAŞARILI’’ ELSE DISPLAY ‘’BAŞARISIZ’’ END IF Program static void Main(string[] args) { Console.Write("Vize Notunu Girin...:"); int vize = Convert.ToInt32(Console.ReadLine()); Console.Write("Final Notunu Girin..:"); int final = Convert.ToInt32(Console.ReadLine()); Console.Write("Devam Saatinin Girin:"); int devam = Convert.ToInt32(Console.ReadLine()); int bnot = (vize * 40 / 100) + (final * 60 / 100); if ((bnot >= 60) && (devam <= 16)) Console.WriteLine("BAŞARILI"); } else Console.WriteLine("BAŞARISIZ"); Console.ReadLine();
C# da Karar YapIlarI (BAĞLAYICILAR) Örnek: Klavyeden girilen aracın model yılı ve km bilgisine göre araç 2010 yılından sonra üretilmiş ise yada km si 30000 den düşük ise ekrana «Temiz» değilse ekrana «Kullanılmış» yazan algoritma ve programı oluşturunuz Algoritmik Çözüm GET Modelyili GET Km IF (Modelyili>=2010) OR (km<=30000) THEN DISPLAY ‘’Temiz’’ ELSE DISPLAY ‘’Kullanılmış’’ END IF Program static void Main(string[] args) { Console.Write("Aracın Model Yılını Girin...:"); int myili = Convert.ToInt32(Console.ReadLine()); Console.Write("Aracın Km sini Girin..:"); int km = Convert.ToInt32(Console.ReadLine()); if ((myili >=2010) || (km <= 30000)) Console.WriteLine("TEMİZ"); } else Console.WriteLine("KULLANILMIŞ"); Console.ReadLine();
C# - KARAR YAPILARI (SWITCH – CASE) Switch – Case bir değişkenin aldığı birden fazla değere göre farklı durumların çalıştırılması gereken hallerde kullanılır. Çoklu if yapısı gibide düşünülebilir. Kullanımı: switch (deger) { case durum1: { // durum1 de çalıştırılacak komutlar break; // durumdan çıkma komutu } case durum2: { // durum2 de çalıştırılacak komutlar . default : { //durumlardan hiç biri sağlanmadığında çalıştırılacak komutlar break;
C# - KARAR YAPILARI (SWITCH – CASE) Örnek: Klavyeden girilen iki sayıyı seçilen işleme tabi tutan algoritma ve programı oluşturunuz. static void Main(string[] args) { double sayi1, sayi2, sonuc = 0; string secim; Console.Write(" 1-Toplama\n 2-Çıkarma\n 3-Çarpma\n 4-Bölme \n Seçiminiz(1/4) >>>"); secim = Console.ReadLine(); Console.Write("Lütfen 1. sayıyı giriniz ="); sayi1 = double.Parse(Console.ReadLine()); Console.Write("Lütfen 2. sayıyı giriniz ="); sayi2 = Convert.ToDouble(Console.ReadLine()); switch (secim) case "1": { sonuc = sayi1 + sayi2; break; } case "2": { sonuc = sayi1 - sayi2; case "3": { sonuc = sayi1 * sayi2; case "4": { sonuc = sayi1 / sayi2; default: Console.WriteLine("Hatalı seçim yapıldı ! "); Console.Write("Sonuç ={0}", sonuc); Console.ReadKey();