Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

BİLGİSAYAR PROGRAMLAMA DERSİ 1.DERS NOTU Konu: Algoritmalar 1.

Benzer bir sunumlar


... konulu sunumlar: "BİLGİSAYAR PROGRAMLAMA DERSİ 1.DERS NOTU Konu: Algoritmalar 1."— Sunum transkripti:

1 BİLGİSAYAR PROGRAMLAMA DERSİ 1.DERS NOTU Konu: Algoritmalar 1

2 BİLGİSAYARLA PROBLEM ÇÖZÜMÜNÜN AŞAMALARI René Descartes Felsefeci Problem Çözme Tekniğinde Descartes’ in Tavsiyesi; 1. Doğruluğu kesin olarak kanıtlanmadıkça, hiçbir şeyi doğru olarak kabul etmeyin; tahmin ve önyargılardan kaçının. 2. Karşılaştığınız her güçlüğü mümkün olduğu kadar çok parçaya bölün. 3. Düzenli bir biçimde düşünün; anlaşılması en kolay olan şeylerle başlayıp yavaş yavaş daha zor ve karmaşık olanlara doğru ilerleyin. 4. Olaya bakışınız çok genel olmalı ve hazırladığınız ayrıntılı liste ise hiçbir şeyi dışarıda bırakmayacak kadar kusursuz ve eksiksiz olmalıdır. 2

3 BİLGİSAYARLA PROBLEM ÇÖZÜMÜNÜN AŞAMALARI Bir problemi çözmek için yazılacak programda, genel olarak, aşağıdaki yazılım geliştirme aşamaları uygulanmalıdır. 1. Problemin Analizi: Problemin tam olarak ne olduğunun anlaşılmasıdır. Bu nedenle, problemin çözümünden neler beklendiği ve yaratacağı çözümün girdi ve çıktılarının neler olacağı kesin olarak belirlenmelidir. 2. Algoritma Geliştirme: Problemi çözmek için kullanılacak çözüm adımlarını gösteren bir liste yapılması gereklidir. Bir problemin çözüm adımlarını gösteren bu listeye algoritma denir. Böyle bir liste tasarlanırken, ilk önce problemin ana adımları çıkarılır; daha sonra her adım için, gerekiyorsa, daha ayrıntılı bir çözüm tasarlanmalıdır. 3. Akış Şeması Çizimi: Geliştirilen algoritmanın şekillerle ifade edilmesidir. 3

4 4. Programlama Dili Seçimi: Geliştirilen algoritmayı kolay bir şekilde bilgisayar ortamına aktaracak bir bilgisayar programlama dilinin seçilmesidir. 5. Programın Yazılması: Seçilen programlama dilinin kuralları kullanılarak programın yazılması aşamasıdır. 6. Derleme/Yorumlama: Programlama dili komutlarına dönüşmüş çözümün yazım hatalarının olup olmadığının kontrol edilmesi ve programın makina dili komutlarına çevrilmesidir. 7. Çalıştırma: Derlenmiş programın işletim sistemi tarafından hard diskten alınarak belleğe taşındığı ve programın ilk komutunun adresinin Merkezi İşlem Birimine bildirildiği aşamadır. 8. Test/Hata Ayıklama: Programın mantıksal olarak test edildiği ve muhtemel her giriş için doğru sonuçlar üretip üretmediğinin kontrol edildiği aşamadır. BİLGİSAYARLA PROBLEM ÇÖZÜMÜNÜN AŞAMALARI 4

5 PROGRAM (BİLGİSAYAR PROGRAMI) NEDİR? Problem çözümü kısmında anlatılan adımlar uygulandıktan sonra ortaya çıkan ve sorunumuzu bilgisayar ortamında çözen ürüne program denir. PROGRAMLAMA (BİLGİSAYAR PROGRAMLAMA) NEDİR? Problem çözümünde anlatılan adımların tümüne birden programlama denir. 5

6 PROGRAMLAMA DİLİ NEDİR? Bir problemin algoritmik çözümünün bilgisayarda yazılmasını sağlayan kurallar dizisidir. BAZI PROGRAMLAMA DİLLERİ MATLAB, Delphi, Pascal, Fortran C, C++, C#, Visual Basic, Java 6

7 ALGORİTMA Algoritma, herhangi bir sorunun çözümü için izlenecek yol anlamına gelmektedir. Çözüm için yapılması gereken işlemler hiçbir alternatif yoruma izin vermeksizin sözel olarak ifade edilir. Diğer bir deyişle algoritma, verilerin, bilgisayara hangi çevre biriminden girileceğinin, problemin nasıl çözüleceğinin, hangi basamaklardan geçirilerek sonuç alınacağının, sonucun nasıl ve nereye yazılacağının sözel olarak ifade edilmesi biçiminde tanımlanabilir. Algoritma hazırlanırken, çözüm için yapılması gerekli işlemler, öncelik sıraları göz önünde bulundurularak ayrıntılı bir biçimde tanımlanmalıdırlar. 7

8 ALGORİTMA “İşine gitmek üzere uyanan birinin yapması gereken işler” için nasıl bir algoritma geliştirilmelidir? 8

9 1.Yataktan Kalk 2. Pijamalarını Çıkar 3. Duş Al 4. Elbiselerini Giy5. Kahvaltını Yap6. Otobüse Bin ve İşe Git ALGORİTMA 9

10 1. Adım 2. Adım 3. Adım 4. Adım 5. Adım 6. Adım Sıra önemli !!! 1. Adım 2. Adım 3. Adım 4. Adım 5. Adım 6. Adım Doğru Sıralama Hatalı Sıralama 10

11 Bisküvili Pasta Malzemeleri:  1 litre süt  2 paket puding (çikolata parçalı)  Kakaolu bisküvi  Antep fıstığı (dövülmüş)  1 paket krem şanti  Krem şanti yapmak için süt Bisküvili Pasta Tarifi (ALGORİTMASI) 1.Pudingleri bir tencere içine döküp 1 litre süt ilave ederek pişirin. 2.Dikdörtgen borcam içine bisküvileri düzgün şekilde dizin ve üst kısmına puding dökün. 3.Aynı işleme 3 kat olacak şekilde devam edin. 4.Pasta tam olarak soğuduktan sonra krem şantiyi üstündeki tarife göre hazırlayın. 5.Kremayı pastanın üstüne sürün. 6.En üst kısma ise fıstık serpip buzdolabında dinlenmeye alın. Bisküvili Pasta Yapılışı (ALGORİTMASI ) 11

12 12 Bir Hastanenin Röntgen Çektirme Algoritması

13 Algoritmalarda Kullanılan Temel Terimler Değişken Atama Sayaç Döngü 13

14 Değişken Bir program içerisinde bilgileri geçici olarak saklamak ve ihtiyaç duyduğumuzda bu bilgiler üzerinde işlem yapmak için değişkenlerden yararlanırız. Su bardağını bir değişken olarak düşünün. Resimdeki bardakların hepsi aynı hacme sahip özdeş bardaklardır. Fakat; Birinci bardağın %10’ nu dolu ve dolayısıyla bardak değişkeninin değeri %10’dur. İkinci bardağın %35’ i dolu ve dolayısıyla bardak değişkeninin değeri %35’dir. Üçüncü bardağın %75’ i dolu ve dolayısıyla bardak değişkeninin değeri %75’dir. Dördüncü bardağın %90’ i dolu ve dolayısıyla bardak değişkeninin değeri %90’dır. 14

15 Atama Herhangi bir değişkenin içine bir değeri veya ifadenin/işlemin sonucunu aktarma işlemine atama denir. Değişkenimiz Bardak Sürahinin içindeki su bizim değerimiz veya ifademiz/işlemimizdir. 15

16 ‘ değişken’ yazan kısım, herhangi bir değişkenin adıdır (Örneğin bardak değişkeni). ‘ifade’ yazan kısımda ise matematiksel, mantıksal veya alfa- nümerik bir ifade olabilir (Sürahi içindeki su). Aradaki ‘=’ sembolü, ‘atama operatörü’ olarak adlandırılır ve sağdaki ifadenin/işlemin sonucunu soldaki değişkene aktarır. Bu durumda değişkenin (eğer varsa) bir önceki değeri silinerek yeni değere atanır. (Bardak değişkenine %10, %35, %75 … değerlerinde su koymak) Y=9 X=26 X=3 Y=X+5 işleminin sonucunda Y’nin bir önceki değeri silinerek yerine 8 değeri atanır. Atama (devam) 16

17 1. Dolum İşlemi 2. Dolum İşlemi 3. Dolum İşlemi Sayaç Programlarımızda bazı işlemlerin belirli sayıda yaptırılması veya işlenen/üretilen değerlerin sayılması gerekebilir. Sayma amacıyla kullanılan bu tür değişkenlere sayaç denir. Bardak bir değişkendir aynı zamanda bardağa yapılan su dolum işlemi ise sayaç adı verilen bir değişkendir. Resimdeki örnekte 3 kez dolum işlemi yapılmaktadır. 17

18 sayac = sayac + 1 bilgisayar deyimi ile sayac adlı değişkenin eski (önceki) değerine ‘1’ eklenmektedir. Bulunan sonuç yine kendisine, yeni değer olarak aktarılmaktadır. Bu tür değişkenlere, algoritmada “sayaç” veya “sayıcı” (counter) adı verilir. Yani “sayaç” işlem akışı kendisine her geldiğinde, belirtilen adım değeri kadar artan veya azalan değişkendir. Sayaç (devam) 18

19 bardak=%0 sayac=0 bardak=%10 sayac=sayac+1 sayac=1 Sayaç(devam) 19

20 bardak=%35 sayac=sayac+1 sayac=2 bardak=%75 sayac=sayac+1 sayac=3 Sayaç (devam) 20

21 bardak=%90 sayac=sayac+1 sayac=4 Sayaç (devam) Bardaktaki su sizin için yeterliyse su doldurma işlemini iki farkı şartla durdurabilirsiniz. 1.Bardaktaki su miktarı %90 olduğunda doldurma işlemini durdur. 2.Eğer sayaç değeri 4 ise doldurma işlemini durdur. 21

22 Sayaç (devam) Şimdi bardaktaki suyu adım adım boşaltalım. bardak=%90 sayac=4 bardak=%75 sayac=sayac-1 sayac=3 22

23 Sayaç (devam) bardak=%35 sayac=sayac-1 sayac=2 bardak=%10 sayac=sayac-1 sayac=1 23

24 bardak=%0 sayac=0 sayac=sayac-1 Sayaç (devam) Dolayısıyla sayaç değişkeni artan bir değişken olabileceği gibi azalan bir değişkende olabilir. 24

25 Döngü Birçok programda bazı işlemler belirli ardışık değerlerle gerçekleştirilmekte veya belirli sayıda yapılmaktadır. Programlardaki belirli işlem bloklarını, belirli sayıda tekrarlayan işlem akış çevrimlerine döngü denir. 25

26 Bardak hacminin %90’nı dolana kadar su doldurma işlemine devam et. 26

27 1.Döngü değişkeninin başlangıç değeri belirlenir. 2.Döngü değişkeninin bitiş değeri belirlenir. 3.Döngü değişkeninin bitiş değerine ulaşıp ulaşmadığı test edilir. 4.İstenen işlem gerçekleştirilir. 5.Döngü değişkeni, döngü içinde adım miktarı kadar artırılır yada azaltılır. Döngü Oluşturma Kuralları : Bardak doldurma işleminde sayaç değişkeni bir döngü değişkeni olarak tanımlanabilir. Sayaç değeri başlangıçta 0 olarak alınırken bitiş değerinin 4 olması istenebilir. Su doldurma işlemi esnasında sayaç değeri test edilir. Sayaç değeri 4’e ulaştığında işlem bitirilir (Döngüden çıkılır). 27

28 ADIM ADIM ALGORİTMA GELİŞTİRME VE GELİŞTİRİLEN ALGORİTMANIN AKIŞ DİYAGRAMI İLE TEMSİL EDİLMESİ 28

29 29

30 Problemin Bilgisayar Programıyla Çözümü İçin Gerekli Olan Değişkenlerin Tanımlanması 30

31 Adım 1: Başla Adım 2: A,B,C sabitlerini değişkenlere ata Adım 3: Deltayı hesapla Adım 4: Delta<0 ise Adım 5’e, değilse Adım 6’a geç Adım 5: Ekrana ‘’Kökler sanaldır’’ yaz Adım 9’a geç Adım 6: 1. kökü hesapla, x1 değişkenine ata Adım 7: 2. kökü hesapla, x2 değişkenine ata Adım 8: x1 ve x2 değişkenlerini ekrana yaz Adım 9: Bitir Problemin Bilgisayar Programıyla Çözümü İçin Gerekli Olan Algoritma 31

32 Algoritmanın, görsel olarak simge ya da sembollerle ifade edilmiş şekline “akış şemaları” veya FLOWCHART adı verilir. Akış şemalarının algoritmadan farkı, adımların simgeler şeklinde kutular içine yazılmış olması ve adımlar arasındaki ilişkilerin ve yönünün oklar ile gösterilmesidir. Programın saklanacak esas belgeleri olan akış şemalarının hazırlanmasına, sorun çözümlenmesi sürecinin daha kolay anlaşılır biçime getirilmesi, iş akışının kontrol edilmesi ve programın kodlanmasının kolaylaştırılması gibi nedenlerle başvurulur. Uygulamada çoğunlukla, yazılacak programlar için önce programın ana adımlarını (bölümlerini) gösteren genel bir bakış akış şeması hazırlanır. Daha sonra her adım için ayrıntılı akış şemalarının çizimi vardır. Akış şemaları en basit şekliyle dikdörtgen kutulardan ve oklardan oluşur. Akış şeması sembolleri ANSI (American National Standards Institute) standardı olarak belirlenmiş ve tüm dünyada kullanılmaktadır. Akış Diyagramları (Flow Charts): 32

33 Başlangıç veya Bitiş Sembolü Programın başında ve sonunda kullanılır. Su doldurma işlemine Başla veya Bitir 33

34 Veri Girişi Sembolü Klavyeden yapılacak olan veri girişleri için kullanılır. Girilen her bir veri bir değişkende saklanır. Bardak en fazla %90 oranında dolsun 34

35 Hesaplama ve Atama Sembolü Her türlü hesaplama ve atama işlemi için kullanılır. Bardağa %10, %35, %75 ve %90 oranlarında su doldur. 35

36 Karşılaştırma Sembolü Programın akışını bir karşılaştırmanın sonucuna göre değiştirmek için kullanılır. Karşılaştırma doğru ise Evet, yanlışsa Hayır yolu takip edilir. Evet Hayır Sayaç değeri 4 oldu mu? Evet o zaman doldurma işlemini durdur. Hayır o zaman doldurma işlemine devam et. 36

37 Bilgi Çıkış Sembolü Ekran üzerinden kullanıcıya bilgi aktarmak amacıyla kullanılır. 37

38 Oklar Bilgi akışının yönünü belirtmek amacıyla kullanılır. 38

39 Başla Bardağın Ne Kadar Dolması Gerektiği Kullanıcıdan Al (Örneğin %90 Olsun) Bardağın %90’nı Dolumu? Bardağa Su Doldur Bitir Evet Hayır 39

40 Başla A, B, C sayılarını Kullanıcıdan Al Ekrana ‘Kökler Sanal’ Yazdır Evet Hayır Bitir Adım 1 Adım 2 Adım 3 Adım 4 Adım 5 Adım 6 Adım 7 Adım 8 Adım 9 40

41 Örnek: Verilen iki sayının ortalamasını hesaplayan programın algoritmasını geliştiriniz ve akış diyagramını çiziniz. Algoritma: Adım 1 : Başla Adım 2 : sayi1 değerini gir Adım 3 : sayi2 değerini gir Adım 4 : ortalama = (sayi1+sayi2)/2 Adım 5 : ortalama değerini ekrana yaz Adım 6 : Bitir Akış diyagramı: Başla Sayi1=? Sayi2=? ortalama=(sayi1+sayi)/2 Bitir Adım 1 Adım 2 Adım 3 Adım 4 Adım 5 Adım 6 41 ortalama

42 Adım 1: Başla Adım 2: A değerini giriniz Adım 3: Eğer A 0’a eşit ise Adım 2’ye git Adım 4: B değerini giriniz Adım 5: X=-B/A Adım 6: Yaz X Adım 7: Bitir Başla A=? B=? X=-B/A Bitir Evet Hayır Adım 1 Adım 2 Adım 3 Adım 4 Adım 5 Adım 6 Adım 7 42 X

43 Örnek***: 1’den 100’e kadar olan sayıların (100 dahil) toplamını ve ortalamasını bulan algoritmayı geliştiriniz. Not: Kullanıcı sayıları tek tek girmeyecek program bu toplamı otomatik hesaplayacak. Matematiksel olarak problemin çözümü: 43

44 Başlangıçta Toplam değerini sıfır alalım (Toplam=0). Toplanması gereken sayılar birer birer artımlı olduğundan sayac adı verdiğimiz bir değişken kullanalım. Başlangıçta Toplam=0 ve sayac=0 olsun. sayac değişkeninin değerini bir artıralım (sayac=sayac+1) ve ardından sayac değişkeniyle Toplam değişkenini toplayalım (Toplam=Toplam+sayac). Bu durumda sayac=sayac+1=0+1=1 olurken, Toplam=Toplam+sayac=0+1=1 olur ve bu sayac sayesinde toplanması istenen sayılardan ilkine ulaşmış oluruz. Şu an için sayac=1 ve Toplam=1 değerindeyiz Bu problemin çözümü için aşağıdaki mantıksal yaklaşımı kullanalım. 44

45 sayac değişkenini tekrar bir artıralım ve yine ardından sayac değişkeniyle Toplam değişkenini toplayım. Bu durumda sayac=sayac+1=1+1=2 olurken Toplam=Toplam+sayac=1+2=3 olur ve bu sayac sayesinde toplanması istenen sayılardan ikincise ulaşmış olurken 1+2 toplamını bulmuş oluruz. İşleme devam edelim; sayac değişkenini tekrar bir artıralım ve yine ardından sayac değişkeniyle Toplam değişkenini toplayım. Bu durumda sayac=sayac+1=2+1=3 olurken Toplam=Toplam+sayac=3+3=6 olur ve bu sayac sayesinde toplanması istenen sayılardan üçüncüsüne ulaşmış olurken toplamına bulmuş oluruz. Şu an sayac=2 ve Toplam=3 değerindeyiz Şu an sayac=3 ve Toplam=6 değerindeyiz 45

46 sayac değişkeninin değeri 100 oluncaya kadar bu adımları tekrar ettiğimizde sonuca ulaşacağımız kesindir. Ortalamayı bulmak basittir çünkü Ortalama=Toplam/100. Algoritma: A1: Başla A2: sayac=0 A3: toplam=0 A4: sayac=sayac+1 A5: toplam=toplam+sayac A6: Eğer sayac 100’e eşit değilse Adım 4’e git A7: ortalama=toplam/sayac A8: Yaz toplam, ortalama A9: Bitir 46

47 Ödev-1: 1’den 100’e kadar olan sayıların (100 dahil) toplamını ve ortalamasını bulan algoritmayı geliştirmiş bulunmaktayız. Geliştirmiş olduğumuz bu algoritmanın akış şemasını çiziniz. 47

48 Kaynaklar: Ahmet Dumlu ders notlari Matlab İle Programlama (Dr. Deniz Dal) (Öğr. Gör. Dr. Umut Engin) 48


"BİLGİSAYAR PROGRAMLAMA DERSİ 1.DERS NOTU Konu: Algoritmalar 1." indir ppt

Benzer bir sunumlar


Google Reklamları