EM205 26/9/2014 Programlamaya giriş Algoritmalar Temel kavramlar Algoritmalar Amaçlar Algoritma kavramını öğrenmek, Algoritmaları ifade edebilmek, Temel matematiksel algoritmaları yazabilmek C programlama dilini etkin bir şekilde kullanmak Nesneye yönelik programlamaya başlangıç 1
Donanım + Yazılım Elektronik Tasarım Elektronik Tasarım Genel Amaçlı Devre (General Purpose Computing) Özel amaçlı devre Örn: Application Specific Integrated Circuit (ASIC) 2
Elektronik Tasarım Genel Amaçlı Devre (General Purpose Computing) Özel amaçlı devre Örn: Application Specific Integrated Circuit (ASIC) a b (donanım) c=(a+b)/2 Elektronik Tasarım Genel Amaçlı Devre (General Purpose Computing) Özel amaçlı devre Örn: Application Specific Integrated Circuit (ASIC) a b Mikro işlemci (donanım) c a b (donanım) c=(a+b)/2 3
Elektronik Tasarım Genel Amaçlı Devre (General Purpose Computing) Özel amaçlı devre Örn: Application Specific Integrated Circuit (ASIC) a b Mikro işlemci (donanım) c a b (donanım) c=(a+b)/2 (yazılım) a,b :giriş c: çıkış c=(a+b)/2 Elektronik Tasarım Genel Amaçlı Devre (General Purpose Computing) Özel amaçlı devre Örn: Application Specific Integrated Circuit (ASIC) a b Mikro işlemci (donanım) (yazılım) c a b (donanım) em221 222 em212 315 316 em204 c=(a+b)/2 a,b :giriş c: çıkış c=(a+b)/2 em205 em345 308 4
YAZILIM Yazılım, elektronik aygıtların belirli bir işi yapmasını sağlayan programların tümüne verilen isimdir. Bir başka deyişle, var olan bir problemi çözmek amacıyla bilgisayar dili kullanılarak oluşturulmuş anlamlı programlar bütünüdür. Örnek; Microsoft Word 2010 Pes 2013 Windows 7 Matlab Problem? İhtiyaçlar Girdiler İstenen çıktılar Yazılım geliştirme modeli Yöntem (Algoritma) Geliştirme Program Yazma (Kod yazma) Hata ayıklama Çalışan program Bakım/ Güncelleme 5
Problem? İhtiyaçlar Girdiler İstenen çıktılar Yazılım geliştirme modeli Yöntem (Algoritma) Geliştirme Kağıt/Kalem Program Yazma (Kod yazma) Hata ayıklama Çalışan program Bakım/ Güncelleme Problem? İhtiyaçlar Girdiler İstenen çıktılar Yazılım geliştirme modeli Yöntem (Algoritma) Geliştirme Kağıt/Kalem Program Yazma (Kod yazma) PC Hata ayıklama Çalışan program Bakım/ Güncelleme 6
Algoritma Algoritma, bir problemi çözmek için uygulanması gereken sonlu sayıda adımın net ve sıralı bir şekilde ifadesidir Başka bir deyişle; algoritma belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir. Özellikler: Her işlem net olmalı ve farklı anlamlar içermemeli. Her durumda algoritma sonlu adımda bitmeli. En az bir çıkış üretmeli (giriş olmayabilir) İki sayının toplamını ekrana yazan algoritma; 1. 2. A sayısını oku 3. B sayısını oku 4. TOPLAM=A + B işlemini yap 5. TOPLAM değerini ekrana yaz 6. Klavyeden girilen iki sayıdan büyük olanından küçük olanını çıkarıp sonucu ekrana yazan algoritma, 1. 2. A sayısını oku 3. B sayısını oku 4. a. Eğer A büyüktür B; UC=A B b. Değilse; UC=B A E. UC değerini ekrana yaz F. 7
Klavyeden girilen bir N sayısının faktöriyelini ekrana yazan algoritma, 1. 2. N OKU 3. F=1 4. X=2 5. F=F*X 6. X=X+1 7. EĞER X<=N İSE 5. ADIMA GİT 8. F YAZ 9. Kullanılan tüm değişkenlerin bir görevi olmalı Algoritmaların ifade edilmesi 1. Akış Diyagramı (Flow Chart) 2. Sözde Kode (Pseudo Code) 8
Akış Diyagramı (Flow Chart) Akış diyagramları algoritmaların şematik olarak gösterilme şeklidir. Akış şemalarında yaygın olarak kullanılan semboller aşağıdaki gibidir. Başla/Bitir İşlem (process) Akış şemasının komutlarının başlangıç ve bitiş gösterimi Yapılması istenen işlemler Karar Bazı kararlara bağlı olarak farklı yolların izleneceği durumlar Giriş Veri girişinin klavyeden olacağını gösterir. Çıkış Ekranda değer yazdırma. A B TOPLAM A+B TOPLAM 1. 2. A sayısını oku 3. B sayısını oku 4. TOPLAM=A + B işlemini yap 5. TOPLAM değerini ekrana yaz 6. 9
A, B Yanlış UC B A A > B UC Doğru UC A B 1. 2. A sayısını oku 3. B sayısını oku 4. a. Eğer A büyüktür B; UC=A B b. Değilse; UC=B A E. UC değerini ekrana yaz F. N F 1, X 2 Doğru F F*X X X+1 X<=N Yanlış UC 1. 2. N OKU 3. F=1 4. X=2 5. F=F*X 6. X=X+1 7. EĞER X<=N İSE 5. ADIMA GİT 8. F YAZ 9. 10
1 den N e kadar tam sayıların toplamını bulan program. N in tek bir değeri için çalışır. 1 den N e kadar tam sayıların toplamını bulan program. Birden çok N değeri için çalışır, N=0 girildiğinde program sonlanır. 11
5 sayının ortalamasını hesaplayan program Kaç sayı olduğu önceden belli : for döngüsü için uygun 5 Ortalama hesaplayan program. Başlangıçta kaç sayı girileceği belli değil, negatif sayı girilene kadar okuyacak Döngünün sonlandırılışına dikkat ediniz. Kaç sayı olduğu önceden belli değil: while döngüsü 12
5 sayının en küçüğünü bulan program tüm sayıların 999 dan küçük olduğu varsayılıyor. sayia, sayib gecici sayia sayia sayib A ve B sayılarının değerlerini değiştiren program. Örn: A=3, B=8 iken A=8, B=3 olacak sayib gecici sayia, sayib A B, B A Yapılamaz. Neden? 13
A Girilen sayının Tek mi, Çift mi olduğuna karar veren program. TamSayı / TamSayı TamSayı Yanlış B A/2*2 A==B Doğru Örn: 10 / 4 2.5 10 / 4 = 2 tek çift A/2*2 2 yerine % (bölümünden kalan) operatörü kullanılmalı. A%2 = A nın2 ye bölümünden kalan Girilen sayının Onlar Basamağını bulan program. A B A/10 C B (B/10*10) C 14
i 0 i<10 E i i+1 D i 10 elemanlı bir dizinin elemanlarının toplamı.. H TOP 0 D i i=1, 2, N i 0 i i+1 i<10 E TOP TOP+D i H TOP a 1 b 1 i 0 Fibonacci serisi 1, 1, 2, 3, 5, 8, 13, 21 c a+b c a b b c i i+1 E i<10 H 15
D 0 1 D 1 1 Fibonacci serisi 1, 1, 2, 3, 5, 8, 13, 21 i 2 i<10 H E i i+1 D i D i 1 +D i 2 i 0 i<10 H E i i+1 D i Sözde (Pseudo) Kod Sözde kod, doğrudan konuşma dilinde ve programlama mantığı ğ altında, eğer, ğ iken gibi koşul kelimeleri ve > = < gibi ifadeler ile yazılır. İyi bir biçimde yazılmış, sözde koddan, programlama diline kolaylıkla geçilebilir. 16
Örnek: Verilen bir sıcaklık derecesine göre suyun durumunu belirten PseudoKod. 1. Program açıklama mesajı yaz. 2. Kullanıcın sıcaklığı girmesi için bir uyarı mesajı yaz. 3. Girilen Sıcaklığı Oku. 4. Durumu belirle Eğer Sıcaklık > 0 ise Eğer Sıcaklık>= 100 ise Durum = Buhar Değilse Durum = Su Değilse Durum= Buz 5. Sonucu (Durum) Yaz 17