Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Algoritma ve Programlamaya Giriş

Benzer bir sunumlar


... konulu sunumlar: "Algoritma ve Programlamaya Giriş"— Sunum transkripti:

1 Algoritma ve Programlamaya Giriş

2 Algoritma Nedir? Algoritma sözcüğü, Harezm, bugünkü Türkmenistan'ın Khiva kentinde doğmuş olan Ebu Abdullah Muhammed İbn Musa el Harezmi’den kaynaklanır. Bu alim 9. yüzyılda cebir alanındaki algoritmik çalışmalarını kitaba dökerek matematiğe çok büyük bir katkı sağlamıştır. "Hisab el-cebir ve el-mukabala " kitabı dünyanın ilk cebir kitabı ve aynı zamanda ilk algoritma koleksiyonunu oluşturur. Alimin ismini telaffuz edemeyen Avrupalılar "algorizm" sözcüğünü "Arap sayıları kullanarak aritmetik problemler çözme kuralları" manasında kullanırlar. Bu sözcük daha sonra "algoritma"ya dönüşür ve genel kapsamda kullanılır.

3 Algoritma: Bir problem karşısında üretilen çözüm yöntemidir.
Problem çözmek için geliştirilen Adım – adım çözüm yöntemidir. Verilen bir problemi çözmek için tasarlanan talimatlar bütünüdür. Bir sorunun çözümü için sunulan mantıksal ve sembolik anlatımdır.

4 Aşağıda bazı problemler verilmiştir
Aşağıda bazı problemler verilmiştir. Verilen bu problemler karşısında çözüm yöntemleriniz nelerdir?   Masa lambanızın elektrik düğmesini açtığınızda lambanın yanmadığını gördüğünüz zaman nasıl bir yol izlersiniz? Çözüm: 1. Lamba çalışmıyor.  2. Lambanın fişi takılı değilse fişi tak  3. Takılıysa Ampül patlak mı kontrol et  4. Patlaksa değiştir.  5. Patlak değilse elektrik kesik mi kontrol et  6. Kesikse elektriğin gelmesini bekle  7. Kesik değilse lamba arızalıdır.

5 2. Bir çoban , ırmağın bir tarafında olan kurt ,kuzu ve otu birbirine yedirmeden karşı tarafa geçirmek istiyor. Kayığı küçük olduğundan bir seferde yalnız birini götürebilir. Çözüm:

6 3. İki kefeli bir terazi için 1 gramdan 40 grama kadar olan bütün ağırlıkları (1 gramdan az hatayla) tartmamız için elinizde bulunması gereken tekrarlanmayan minmum ağırlık sayısı nedir? Bu ağırlıklar kaçar gram olmalıdır? Çözüm: Bu problemin çözümü 2 kısımdan oluşmaktadır : İlk önce bu taşların kaçar gramlık olacağı bulunmalıdır. Sonra ise bulunan bu değerlere göre X gramın tartılması için taşların kefelerde nasıl yerleştirilmesi gerektiği belirtilmelidir. Ağırlıkları 2’nin katları şeklinde düşünürsek: 1=1, 2=2 , 3=4-1 , 5=1+4 şeklinde gider fakat bu durum yanlış yola götürebilir (optimum olmayabilir). Çünkü kefelerde taşların yerleştirilmesi 3 farklı durum göstermektedir.

7 X cismini dengelemek için yalnız diğer kefeye tek bir taş konur.
X cismini dengelemek için diğer kefeye birkaç taş konur. Her iki kefeye taşlar konur. Bu 3 durumu temsil etmek için 3’lü sayı sisteminde faydalanılabilir. 1=1 2=3-1 4=3+1 X cisminin ağırlık değerini arttığı zaman problemin çözümü aşağıdaki şekilde olur: X= 𝑋 𝑛 * 3 𝑛 + 𝑋 𝑛−1 * 3 𝑛−1 +…. 𝑋 1 * 𝑋 0 𝑋 0 , 𝑋 1 ,… 𝑋 𝑛 değerleri 0,1,2 veya 0,1,-1 değerine sahip olabilir. Örneğin 100 gram ağırlığı ölçmek için 9+X= şeklinde olur.

8 4. Bir bardakta süt, diğer bir bardakta ise kahve vardır
4. Bir bardakta süt, diğer bir bardakta ise kahve vardır. Süt bardağından bir kaşık alınıp kahve bardağına dökülüyor ve iyice karıştırılıyor. Sonra kahve bardağından bir kaşık sütlü kahve alınıp süt bardağına dökülüp iyice karıştırılıyor. Son durumda bardaklardaki süt ve kahve oranları ne olur? (süt bardağındaki kahve oranı ve kahve bardağındaki süt oranı) Matematiksel olarak ispatlayınız? Çözüm: Süt bardağı S, Kahve bardağı K ile temsil edilsin. Başlangıçta S=100x ve K=100x olsun. Süt bardağından 5x (kaşığın hacmi) süt alınsın. Kahve bardağına döküldüğünde K=100x+5x (süt)=105x (sütlü kahve) ve S=95x(süt) olur. Kahve bardağından 5x (sütlü kahve) alınsın. Süt bardağına döküldüğünde S=95x(süt)+5x(sütlü kahve)=100x (sütlü kahve) ve K=100x (sütlü kahve) olur. Her iki bardakta kahve ve süt oranları eşit olur. Süt Kahve

9 Algoritmaların Temel Özellikleri
Bir problemin çözüm yöntemi (algortima) kişiden kişiye göre değişebilmektedir. Bu durumda algoritmalardan en hızlı olanı ve en az adıma sahip olanı tercih edilmelidir. Bu durumu açıklayan örnek aşağıda verilmiştir. Aşkın, A kentinde bulunmaktadır ve B kentine gitmek istemektedir. Fakat hangi yol üzerinden gideceğini bilmemektedir. Bu problemi, başka kişilerden yardım alarak çözmeye çalışmaktadır. Sordukları kişilerden biri C kasabası üzerinden diğeri ise D kasabası ve başka birisi ise E kasabası üzerinden B kentine gidebileceğini söylemiştir. Bu durumda Aşkın hangi yolu izlemelidir? Çözüm: En kısa mesafe olan D kasabası üzerinden gitmeyi tercih etmelidir.

10 Her algoritmanın uyması gereken kriterler: 1) Girdi: Sıfır veya daha fazla değer dışarıdan girmelidir 2) Çıktı: En azından bir değer çıkmalıdır 3) Açıklık: Her komut açık olmalıdır, farklı anlam ve yön çıkmamalıdır 4) Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli. 5) Etkinlik: Her komut kişinin kalem ve kağıt ile takip edebileceği basitlikte olmalıdır.

11 Algoritmaların Akış Şeması
Bir süreci belirleme veya bir projenin adımlarını planlama için görsel bir sunum oluşturur. Proje ve süreç ile ilgili kişilere ortak bir dil veya bir referans noktası sağlar. Algoritmadaki ifadeler şekillerin içerisine yazılır. BAŞLA ve DUR şekilleri hariç her bir şeklin anlamı belli olduğundan içlerine tekrar anlamla aynı olacak kelime ve ifadeler yazılmaz.

12 Akış Şeması Şekilleri Başlama ve bitiş işlemleri
giriş – okutma işlemleri Atama ve hesaplama işlemleri Alt programlar (Alt işlemler) görüntüleme – yazdırma işlemleri

13 Akış Şeması Şekilleri ÖRNEK: Taban ve yükseklik değerleri verilen üçgenin alanını hesaplanması Karar ve kontrol işlemleri {eğer (koşul bildirimi veya karar)} alan = (taban X yukseklik)/2 BAŞLA DUR Taban Yükseklik alan Döngüler Akış yönünü belirten işlemler

14 Algoritma ile ilgili kavramlar
DEĞİŞKEN Algoritma yazmaya başlarken bilgilerin mutlaka bir değişkende saklanması gereklidir. Bundan dolayı hangi tür bilgi saklanacaksa öncelikle bellekte ona yer ayırmamız gerekmektedir. Farklı adımlarda farklı değerler alabilen bilgi alanına değişken denir. Değişken tanımlama kuralları: Değişken isimlerinde Türkçe karakter kullanılmaz . örn:İ,Ş,Ö,Ç... ,sayaç, bölme vs. sayac doğru Özel karakter kullanılmaz. :, $, !, ^, (, ) ... Alan! Birden fazla karakterden oluşuyorsa aralarında boşluk bırakılmaz. Bunun yerine _ kullanılabilir. Örnek: en uzun kenar vs. en_uzun_kenar doğru A-Z harfleri arasında alfabetik harflerle başlamalı! Değişkenin ilk harfi rakamla başlamaz. Örn: 1A, 1sayac sayac1 Değişken ismi, algoritmanın kodlanacağı programlama dillerindeki özel komutlar olamaz.Örn: echo, print, end vs. Değişken isimleri büyük küçük harfe duyarlıdır. Örn: toplam ile Toplam farklı isimlerde değişken olarak kabul edilir.

15 Değişkene Değer Atama: <degisken_adi>=<aritmetik ifade ya da değer> şeklindedir. Örneğin: sayac=12 , toplam=500, para=1230 vs. Eğer atanacak ifade sayısal değilse bu durumda ₺ ₺ (birden fazla harften oluşuyorsa) ya da ‘ ‘ ( tek bir karakter ise ) ile birlikte atanmalıdır. Örneğin: isim= ₺Ali ₺ , tus=‘S’ veya karakter=‘1’ burada 1 sözel bir ifade olur ve herhangi bir sayısal değer gibi toplanamaz. Örneğin ₺ Benim sadece 1 tane arabam var.₺ cümlesindeki gibi

16 Matematiksel (aritmetik) işlemler:
Temel aritmetik işlemler (toplama, çıkarma, çarpma, bölme), matematiksel fonksiyonlar (üstel, logaritmik, trigonometrik, hiperbolik vs.) bu gruba dahildir. Aşağıdaki tabloda matematiksel işlemlerin bilgisayar dilindeki karşılıkları verilmektedir.

17 Algoritma ve Akış Diyagramları
Örnekler: Matematiksel yazılım Bilgisayarda yazılımı ab-c+d-6+da a*b-c+d-6+d*a b+c3-d/8-b2c b+c^3-d/8-b^2*c Algoritma ve Akış Diyagramları

18 Algoritma ve Akış Diyagramları
Matematiksel işlemlerde öncelik hakkı: Tek bir matematiksel deyim içinde birden fazla işlem bir arada bulunabildiğine göre hangi işlemin öncelik hakkına sahip olduğunun bilinmesi yerinde olacaktır. Aşağıda işlemlerin öncelik listesi verilmiştir. Öncelik İşlem 1. Parantez 2. Üs alma, soldan sağa doğru 3. Çarpma ve bölme, soldan sağa doğru 4. Toplama ve çıkarma, soldan sağa doğru Örnek: a=4, b=6, c=8 ve d=10 değerleri için; İfade Sonuç c*d/(a*d)+b+c*d/a 28 c*d/a*d+b+c*d/a 226 c*d/a*d+(b+c)*d/a 235 Algoritma ve Akış Diyagramları

19 Algoritma ve Akış Diyagramları
Karşılaştırma İşlemleri: Bilgisayar temel matematiksel işlemlerin yanında karar modelleri de üretebilir. Yani iki büyüklükten hangisinin büyük ya da küçük olduğu ya da birbirine eşit olup olmadığı gibi konularda karar verebilir. Bu karşılaştırma işlemleri nümerik ya da alfanümerik olabilir. Aşağıdaki tabloda karşılaştırma işlemselleri gösterilmiştir: İşlem sembolü Matlab Anlamı = == Eşittir <> ~= Eşit değildir > Büyüktür < Küçüktür >= veya => >= Büyük eşittir <= veya =< <= Küçük eşittir Algoritma ve Akış Diyagramları

20 Algoritma ve Akış Diyagramları
Mantıksal (lojik) İşlemler: Bilgisayar temel mantık (VE, VEYA, DEĞİL) işlemlerini de yapabilmektedir. Mantıksal işlem operatörleri hem karar ifadelerinde hem de matematiksel işlemlerde kullanılabilirler. Aşağıdaki tabloda mantıksal semboller gösterilmiştir: Mantıksal İşlem Komut Matematiksel sembolü Matlab sembolü VE AND . && VEYA OR + || DEĞİL NOT ` != Eşit Equal = == Aşağıdaki tabloda ise mantıksal işlem sonuçları gösterilmiştir: Sonuç Bilgisayar dili Doğru (1) True Yanlış (0) False Algoritma ve Akış Diyagramları

21 sayac=sayaç-1 bu durumda sayaç değeri 1 azaltılmış olur.
Artırım İşlemler: Bilgisayar mantığında matematik işlemlerinden farklı olarak bazı işlemler yapılabilmektedir. Herhangi bir değişkene kendisi ile değer atamak mümkündür. Örneğin: x=3 x=x+2 x=? Sonuç olarak x=5 olur. sayac=sayaç-1 bu durumda sayaç değeri 1 azaltılmış olur. toplam=toplam+4 veya toplam+=4 ++ veya - - değişkenin içeriğini arttırır/azaltır. Örneğin : a=3, a++ ise a yine 3 olur. Eğer ++a olursa a 4 olur.

22 Sonsuz Döngü Algoritmanın sonu gelmeyen belirli işlemleri tekrarlaması ile oluşmaktadır. Örneğin klavyeden girilen bir sayısı bölüm 0 oluncaya kadar 2’ye bölen bir algoritma. Hiçbir sayı, devamlı 2’ye bölünerek bölümü 0 yapılamaz. 3/2=1.75 1.75/2=0.875 0.875=

23 Örnek Problemler ve Çözümleri
Soru: Taban ve yükseklik değerleri verilen üçgenin alanını hesaplayınız. ALGORİTMA AKIŞ ŞEMASI BAŞLA OKU taban OKU yukseklik alan= (Taban X Yukseklik)/2 YAZ alan DUR alan = (taban X yukseklik)/2 BAŞLA DUR Taban Yükseklik alan

24 Soru: Çalıştığı gün sayısı ve yevmiyesi girilen işçinin maaşını hesaplayan algoritmayı ve akış diyagramını yapınız. Çözüm: maas = gun X yevmiye BAŞLA DUR Gun, yevmiye maas

25 Soru: Klavyeden girilen 3 sayının aritmetik ortalamasını bulan programın algoritma ve akış şemasını yazınız. Çözüm: Toplam =S1+S2+S3 Ort = Toplam/3 BAŞLA DUR S1,S2,S3 Ort

26 Bilgisayar Ortamında Programın Yazılması
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. Bazı durumlarda bu ürüne yazılım denebilir. Programlama Nedir? Problem çözümünde anlatılan adımların tümüne birden programlama denilebilir. Çoğunlukla çok iyi tanımlanmış bir sorunun çözümüne dair adımlar ile çözümün oluşturulup bunun bir programlama dili ile bilgisayar ortamına aktarılması Programlama diye adlandırılabilir.

27 Programlama Dili (Programing Language) Nedir?
Bir problemin algoritmik çözümünün bilgisayarda yazılmasını sağlayan kurallar dizisidir. Bazı programlama dilleri: C, C++, C#, Delphi, Pascal, Visual Basic, Fox Pro, Java, Lisp, Bu dillerden en yaygın kullanılanları Java, C#, Delphi, C++ ve Visual Basic dilleridir. Bir dilin üstünlüğünün parametreleri: Kullanılabilirliği, Gelişim hızı, İhtiyaca kolay cevap vermesi, İşletim sistemi ile uyum seviyesi, Derleme işleminin hızlı olması, Az yer kaplaması, Sistemi optimum kullanması…

28

29 Algoritma ve Akış Diyagramları
DÜŞÜK SEVİYELİ PROGRAMLAMA DİLLERİ Makine Dili Makine dili 0 ve 1 den oluşan bir dildir ve bilgisayarın anladığı yegane dildir. Bu dili direkt kullanmak için hem komutların sayısal karşılıkları ve hem de bilgisayarın bellek adreslemesini de bilmek gerekmektedir. Bu tip dillere düşük seviyeli dil (Low Level Language) adı verilir. Assembly (simgesel) dili: İkili sayı sisteminde yazılmış olan komutları harfli sembollerle ifade ederek üretilen bir dildir. ADD, LDA ve STA gibi… Assembler: Assembly dilini makine diline çevirir. Her programlama dilinin, yazılan programı makine diline çeviren bir derleyicisi ya da yorumlayıcısı vardır. Algoritma ve Akış Diyagramları

30 Algoritma ve Akış Diyagramları
DERLEYİCİ ve YORUMLAYICILAR Derleyici (Compiler) Nedir? Bir programlama dili ile bilgisayara aktarılan programın bilgisayarın anlayabileceği Makine Diline çevirmeyi sağlayan ve yazılan programda söz dizim hatalarının olup olmadığını bulan yazılımlardır. Her Programlama dili için bir derleyici olması gerekmektedir. C, PASCAL, COBOL, DELPHI derleyicisi olan yüksek seviyeli dillerdir. PROGRAM DERLEYİCİ ÇIKTI AMAÇ PROGRAM Yorumlayıcı (Interpreter) Nedir? Yorumlayıcılar (Interpreter), yazılan programları makine diline dönüştüren yazılımlardır. Ancak bu dönüşüm, derleyiciden farklı olarak gerçekleştirilmektedir. Yorumlayıcılar her satırı anında makine diline çevirerek çalışır ve dolayısıyla program her çalıştırıldığında her satır yeniden makine koduna dönüştürülür. Bu yüzden yorumlayıcılar yavaş çalışmaktadır. VISUAL BASIC ve MATLAB yorumlayıcısı olan yüksek seviyeli dillerdir. PROGRAM YERİ YORUMLAYICI ÇIKTI Algoritma ve Akış Diyagramları

31 Derste Kullanılacak Kaynaklar
Muhammed Mastar , M. Tahir Yılmaz, Süha Eriş Kodlab Yayınları, 2012 Programlamaya Giriş ve Algoritmalar Doç. Dr. Soner ÇELİKKOL Murathan Yayınevi 2010 Algoritma Geliştirme ve Programlamaya Giriş Fahri VATANSEVER Seçkin Yayınevi, 2015


"Algoritma ve Programlamaya Giriş" indir ppt

Benzer bir sunumlar


Google Reklamları