DEÜ Bilgisayar Bilimleri Bölümü BİL1001 Bilgisayar Bilimlerine Giriş 1 Öğr. Gör. Dr. Alper VAHAPLAR 2017 Yaz Okulu
Bilgisayar Bilimlerine Giriş 1 Algoritma Bir problemi çözmek için kullanılan, belirli girdiler ile belirli sonuçlar üreten, sonlu adımda, iyi tanımlanmış işlemlerin tarifidir. "Any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output." Ebu Abdullah Muhammed bin Musa el-harezmi (825). Özellikleri: Finiteness (Sonluluk) Definiteness (Kesinlik, açıklık) Valid Input / Output (Geçerli Giriş/Çıkış, Sonuç) Effectiveness (Etkinlik) Infallibility (Yanılmazlık, şaşmazlık) Performance (Performans) 2
Algoritmalar Problem: Çözülmesi ve bir sonuca ulaştırılması gereken durum. Bugün ne giyelim? Evden okula geliş. Gazlı bir içecek şişesinin kapağını açmak Yürümek Vs. vs. Algoritmaları Gösterimi: Pseudo code (Kaba Kod) Adım adım yazılmış talimatlar listesi şeklindedir. Flowcharts (Akış Şemaları) Bir algoritmanın veya bir işlemin (process) çalışma sırasına uygun biçimde ve belirli anlamları olan simgelerin oklar ile bağlanması yoluyla oluşturulan şemalara verilen isimdir. 3
Algoritmalar Fen Fakültesi Binasından Yemekhaneye Gitme Algoritması 1. BAŞLA. 2. Binanın ana kapısından dışarı çık. 3. Önündeki yola girip sağa dön ve döner kavşağa gelene kadar yürü. 4. Sol ön çaprazında gördüğün 4 katlı binaya gir. 5. 1. kata çık. // Yemekhaneye vardın!!! 6. BİTİR. 4
Algoritmalar Fen Fakültesi Binasından Yemekhaneye Gitme Algoritması 5
Algoritmalar Ör: Bir porsiyon menemen yapma algoritması 2 yumurta al Yarım yemek kaşığı yağ al Bir domatesi yıka ve küçük küpler şeklinde doğra Bir biberi yıka ve küçük küpler şeklinde doğra Hepsini bir tavaya koy Tavanın altındaki ocağı yak Bir çimdik tuz ve karabiber ekle İstenilen kıvama gelinceye kadar Tahta bir kaşık ile karıştır Ocağı kapat Tavadakileri bir yemek tabağına koy 6
Algoritmalar Problem: Parka halindeki bir aracı çalıştırıp hareket ettiriniz. 1. Şoför kapısını aç 2. Sürücü koltuğuna otur 3. Kemeri tak 4. Anahtarı kontak girişine yerleştir 5. Koltuğu kendine göre ayarla 6. Dikiz aynasını ve yan aynaları kendine göre ayarla 7. Sol ayak ile en soldaki debriyaj pedalına sonuna kadar bas 8. Vitesi boş konumuna getir 9. Anahtarı, motor çalışıncaya kadar çevir, çalışınca bırak 10. Vitesi 1 konumuna getir (Sol üstte) 11. Sol sinyali çalıştır (Direksiyonun solundaki kolu aşağıya indir) 12. Aynalardan trafiğin uygun olup olmadığını kontrol et 13. Eğer uygun ise 1. Eğer çekili ise el frenini indir 2. Sağ ayak ile en sağdaki gaz pedalına hafifçe bas 3. Sol ayağını debriyajdan hafifçe kaldır 4. Hareket edince sol ayağını tamamen kaldır 14. Değilse 12. adıma geri dön 7
Algoritmalar Alıştırma: Doğum yılı 1999 olan bir kişinin yaşını bulan algoritmayı yazınız. Algoritma : 1. Başla 2. Yaşı hesapla (yaş 2017 1999) 3. Yaşı ekrana yazdır. 4. Bitir 8
Algoritmalar Alıştırma: Doğum yılı verilen bir kişinin yaşını bulan algoritmayı yazınız. Algoritma : 1. Başla 2. Doğum yılını sor (dyili) 3. Yaşı hesapla (yaş 2017 dyili) 4. Yaşı ekrana yazdır. 5. Bitir 9
Algoritmalar Alıştırma: İki sayıdan büyük olanı bulan algoritmayı yazınız. Algoritma : 1. Başla 2. Kullanıcı iki sayı girsin. (x, y) 3. x, y den büyükse x i yazdır, değilse y yi yazdır. 4. Bitir 10
Algoritmalar Alıştırma: İki sayıdan küçük olanı bulan algoritmayı yazınız. Algoritma : 1. Başla 2. Kullanıcı iki sayı girsin. (x, y) 3. x, y den küçükse x i yazdır, değilse y yi yazdır. 4. Bitir 11
Algoritmalar Alıştırma: Gerekli parametreleri kullanıcı tarafından girilen bir silindirin hacmini hesaplayıp ekrana yazdırın. Algoritma : 1. Kullanıcı yarıçapı (r) ve yüksekliği (h) girsin. 2. Silindirin hacmini bulun. Hacim= r 2 h 3. Silindirin hacmini ekrana yazdırın. 12
Algoritmalar Alıştırma: İki sayıdan büyük olanı bulan algoritmayı yazınız. Üç sayıdan büyük olanı bulan algoritmayı yazınız. Üç sayıdan küçük olanı bulan algoritmayı yazınız. Üç sayının ortancasını bulan algoritmayı yazınız. 5918 sayıdan büyük olanı bulan algoritmayı yazınız. Verilen 5 adet sayının ortalamasını bulan algoritmayı yazınız. Vize, final ve ödev notları verilen bir öğrencinin dönem sonu not ortalamasını bulan algoritmayı yazınız. (Vize[%20], Ödev [%40], Final [%40]) Bir A4 kağıdı kullanarak uçak yapma algoritmasını yazınız. 13
Flowcharts Akış Şemaları Terminator (Sonlandırıcı) Manuel Input (Veri Girişi) Başlangıç veya bitişi ifade eder. Kullanıcı tarafından veri girileceğini gösterir. (Output) (Çıkış) Kullanıcıya veya ekrana mesaj verileceğini belirtir. 14
Flowcharts Akış Şemaları Process (İşlem) Decision (Karar ) Hesaplama yapıldığı veya veri işleme sürecini belirtir. Bir karşılaştırma, koşul ve sonucunda karar verileceğini ifade eder. 15
Flowcharts Akış Şemaları Connector (Bağlayıcı) Bir akış şemasının farklı kısımlarının bağlanması için kullanılır. Arrows, Directions (Oklar) Algoritmanın akış yönünü gösterir. 16
Flowcharts Akış Şemaları Alıştırma: Doğum yılı 1999 olan bir kişinin yaşını bulan algoritmayı yazınız. Algoritma : 1. Başla 2. Yaşı hesapla (yaş 2017 1999) 3. Yaşı ekrana yazdır. 4. Bitir Akış şeması : Başla Yaş 2017 1999 Yaş Bitir 17
Flowcharts Akış Şemaları Alıştırma: Doğum yılı verilen bir kişinin yaşını bulan algoritmayı yazınız. Algoritma : 1. Başla 2. Doğum yılını sor (dyili) 3. Yaşı hesapla (yaş 2017 dyili) 4. Yaşı ekrana yazdır. 5. Bitir Akış şeması : Başla dyili Yaş 2017 dyili Yaş Bitir 18
Flowcharts Akış Şemaları Alıştırma: Gerekli parametreleri kullanıcı tarafından girilen bir silindirin hacmini hesaplayıp ekrana yazdırın. Algoritma : 1. Kullanıcı yarıçapı (r) ve yüksekliği (h) girsin. 2. Silindirin hacmini bulun. Hacim= r 2 h 3. Silindirin hacmini ekrana yazdırın. Akış şeması : Başlangıç r, h Hacim= r 2 h Hacim Bitiş 19
Flowcharts Akış Şemaları Alıştırma: İki sayıdan büyük olanı bulan algoritmayı yazınız. Akış Şeması : Algoritma : 1. Başla 2. Kullanıcı iki sayı girsin. (x, y) 3. x, y den büyükse x i yazdır, değilse y yi yazdır. 4. Bitir Başlangıç x, y Doğru x>y Yanlış x y Bitiş 20
Flowcharts Akış Şemaları Alıştırma: İki sayıdan küçük olanı bulan algoritmayı yazınız. Akış Şeması : Algoritma : 1. Başla 2. Kullanıcı iki sayı girsin. (x, y) 3. x, y den küçükse x i yazdır, değilse y yi yazdır. 4. Bitir Başlangıç x, y Doğru x<y Yanlış x y Bitiş 21
Flowcharts Akış Şemaları Örnek: Katsayıları verilen ikinci dereceden bir denklemin reel hesaplayan algoritmayı yazınız. ax 2 + bx + c = 0 1. a, b ve c değerlerini al 2. değerini hesapla ( = b 2-4ac) 3. Eğer < 0 ise Reel kök yok mesajı ver 4. Eğer = 0 ise x 1,2 = -b/2a 5. Eğer > 0 ise 6. Bitir. x x 1 2 b 2a b 2a Δ Δ 22
Flowcharts Akış Şemaları Başlangıç a, b, c x 1 b 2a Doğru Kök Yok!!! = b 2 4ac <0 Yanlış =0 Yanlış Doğru x 1,2 = -b/2a x 2 b 2a x 1, x 2 X 1,2 Bitiş 23
Flowcharts Akış Şemaları 1 den 10 a kadar sayıları yazdıran algoritma 1. Sayaç 1 2. Sayaç ı yaz. 3. Sayaç Sayaç + 1 4. Sayaç 11 den küçük ise 2. adıma git. 5. Bitir. Başlangıç Sayaç 1 Sayaç Sayaç Sayaç+1 Doğru Sayaç<11 Yanlış Bitiş 24
Flowcharts Akış Şemaları 1 den 50 ye kadar olan sayıların toplamını bulan algoritmayı yazınız. 1. Toplam 0 2. Sayı 1 3. Sayı 51 den küçük ise a. Toplam Toplam + Sayı b. Sayı Sayı + 1 c. 3. Adıma git 4. Değilse Toplam ı yazdır 5. Bitir. Başlangıç Toplam 0 Sayı 1 Toplam Toplam+Sayı Sayı Sayı+1 Doğru Sayı 51 Yanlış Toplam Bitiş 25
Flowcharts Akış Şemaları N i 1 N x i x 1 x... N Kullanıcının gireceği N adet verinin ortalamasını bulup ekrana yazdırın. Veri sayısını belirleyen N, kullanıcı tarafından girilecektir. 2 x N? 26
Flowcharts Akış Şemaları 1. Başla 2. Kullanıcı N değerini girsin. 3. Toplam 0 4. Sayaç 0 5. Kullanıcı bir Sayı girsin. 6. Toplam Toplam + Sayı 7. Sayaç Sayaç + 1 8. Eğer Sayaç < N ise 4. adıma git. 9. Değilse Ortalama Toplam / N 10. Ortalamayı ekrana yazdır. 11. Bitir. Başlangıç N Toplam 0 Sayaç 0 Sayı Toplam Toplam+Sayı Sayaç Sayaç+1 Doğru Sayaç N Yanlış Ortalama Toplam / N Ortalama Bitiş 27
Alıştırmalar "500 dakika konuşma 15 TL" olan cep telefonu tarifesine göre ay sonunda 500 dakikayı aşan sürede her dakika için 40 Kr., her SMS başına da 33Kr. ödenmelidir. Buna göre gönderilen SMS sayısını ve aylık konuşma süresini dakika olarak veren bir kullanıcının ödemesi gereken fatura tutarını hesaplayan algoritmayı yazınız. Akış şemasını çiziniz. Kullanıcının gireceği n adet sayıdan en büyük olanını bulduran algoritma ve akış şeması 2 4 değerini hesaplayan algoritmayı ve akış şemasını gösteriniz. 5! Değerini hesaplayan algoritmayı ve akış şemasını gösteriniz. Verilen bir sayının kaç basamaklı olduğunu bulan algoritma. Bankamatik algoritması (kaçar banknot verilmeli) 28