C Programlama Alper Bayrak Abant İzzet Baysal Üniversitesi Bolu 2014
Sunuma Genel Bakış Sunuma Genel Bakış I 1 Bilgisayar nedir? Bilgisayar Organizasyonu Bilgisayar Türleri Yazılım Programlama dili Problem Nedir? Problem Çözümü Program Nedir? Programlama Nedir? Algoritma Nedir? Akış Çizgesi Nedir? Algoritmalar Algoritmaların Karşılaştırılması
Bilgisayar nedir? Verileri işleyerek özet bilgiler şekline sokabilen, bu veri ve bilgileri yüksek kapasitelerde saklayıp başka ortamlara iletebilen elektronik cihazlardır. Bu işlemleri yaparken çok yüksek hızlarda ve bıkmadan-usanmadan tekrarlı olarak aynı işleri yapan bir cihazdır. Ancak tek başına bir Bilgisayar donanımı bu işleri gerçekleştirecek durumda değildir. Bu işlemler donanım tarafından yapılsa da asıl iş yazılımlar tarafından gerçekleştirilmektedir. Figure: Yazılım yardımı ile verilerin bilgiye dönüşmesi
Bilgisayar Organizasyonu Giriş Birimi Bellek Birimi Aritmetik-Mantık,Birimi Denetim Birimi Çıkış Birimi C P U Klavye, Fare, mikrofon, kamera vb. cihazlardan biri,veya daha fazlasından oluşur. Veri ve komutların,bilgisayara yollanmasını sağlar. Veri, komut ve programların saklandığı donanımları,temsil eder.,ana Bellek çoğunlukla RAM olarak anılır ve SIMM gibi,donanımlarla belirlenir., Yan veya İkincil bellek ise Floppy ve sabit diskleri,ifade eder ve bilgilerin daha kalıcı saklanmasını,sağlayan alanları temsil eder. Bilgisayardaki tüm Aritmetik ve Mantıksal işlemlerin,yapıldığı birimdir. Tüm işlemleri yapan ana birimdir. Bilgisayar programının çalışmasını denetleyen,,programda yapılan hesaplamalara göre hangi işlerin,yapılacağına karar veren birimdir. Makine diline,çevrilmiş bir programda komutları teker teker ve,sırayla Ana işlem birimine getirip yorumlar ve,sonuçta komutu çalıştırır. Bilgisayar ortamında oluşan verilerin dış ortama,verilmesini sağlayan birimlerdir. Ekran, yazıcı gibi,birimlerdir.
Bilgisayar Organizasyonu Figure: Bilgisayar organizasyonu
Bilgisayar Türleri Bilgisayarlar kullanım amaçlarına göre büyüklük ve kapasite bakımında şu şekilde sınıflandırılabilirler: Süper Bilgisayarlar, Mainframe tipi Bilgisayarlar, Workstation tipi Bilgisayarlar (İş İstasyonları), Mikro Bilgisayarlar, Kişisel Bilgisayarlar.
Yazılım Donanım birimlerini istenen işleme yöneltip verimli bir çalışma içerisinde kullanımını sağlayan bir dizi komut, prosedür gibi sanal tanımlardır. Bilgisayar ile kullanıcı arasındaki iletişimi sağlayan görünen öğedir. Bilgisayarın çalışmasını işlem yapmasını sağlayan bütün programlar yazılım gurubunu oluşturur. En temel olarak, bilgisayarın çalışmasını sağlayan en önemli ve vazgeçilmez unsurlardan biri de yazılımdır (İşletim Sistemi).
Yazılım Yazılımlar genel olarak bir kaç alt grupta incelenebilir. Sistem Yazılımları: İşletim Sistemi, Bellek ve Disk hizmet yazılımları, Derleyiciler, Veri Tabanı Yönetim Yazılımları, İletişim ve Haberleşme Yazılımları, Ağ Yönetim Yazılımları. Uygulama Yazılımları: Ticari Paket yazılımları, Ofis Otomasyonu Yazılımları, Diğer özel ve genel tüm yazılımlar (Çizim, Tasarım, Dizgi vb.).
Programlama dili Programlama dili insan-makine ve makine- makine arasındaki iletişimi sağlar. Programlama dilleri kullanım yapısına göre genel olarak üç seviyede incelenir: Düşük seviyeli diller (makine ve assembly dilleri), Orta seviyeli diller (C/C++ programlama dili), Yüksek seviyeli diller (Basic, Fortan, Pascal. vb.).
Programlama dili Yüksek Seviyeli Diller (High-Level Languages): Pascal, C/C++, COBOL, ve FORTRAN gibi diller derlenmesi gereken dillerdir. Kodlar kolayca yazılıp, okunabilen ve hata ayıklaması yapılabilen bir şekilde yazılırlar. Bu KAYNAK KODU olarak adlandırılır. Compiler denilen program ise bu kaynak kodunu nesne kodu denilen makine diline çevrilmiş kodu saklayan dosyaya çevirmek için kullanılır. Makine dili, program çalıştırıldığı zaman CPU tarafından yürütülen basit yönergelerin ikili sayılardan (0 ve 1) oluşan kodlanmış sürümleridir.
Problem Nedir? Bir işlemin, otomasyonun yada bilimsel hesaplamanın bilgisayarla çözülmesi fikrinin ortaya çıkmasına problem denir. Bu tip fikirlerde insanların bu sorunları cihaz kullanmadan çözmeleri ya imkansızdır ya da çok zor ve zaman alıcıdır. Bu tip bir sorunu bilgisayarla çözebilme fikrinin ortaya çıkması bir bilgisayar probleminin ortaya çıkmasına neden olmuştur. Bazen de bir işletme veya yönetimin otomasyonunu sağlamak amacı ile bu tip problemler tanımlanır.
Problem Çözümü Problemi Çözebilmek için öncelikle sorunun çok net olarak programcı tarafından anlaşılmış olması gerekir. Tüm ihtiyaçlar ve istekler belirlenmelidir. Gerekiyorsa bu işlem için birebir görüşmeler planlanmalı ve bu görüşmeler gerçekleştirilmelidir. Problemin Çözümüne ilişkin zihinsel alıştırmalar yapılır. Bu alıştırmaların Bilgisayar çözümüne yakın olması hedeflenmelidir. Bir sorunun tabii ki birden fazla çözümü olabilir. Bu durumda bilgisayar ile en uygun çözüm seçilmelidir. Çünkü bazen pratik çözümler bilgisayarlar için uygun olmayabilir.
Problem Çözümü Oluşturulan Çözüm Algoritma dediğimiz adımlarla ifade edilmelidir. Bu algoritmanın daha anlaşılabilir olması için Akış Çizgesi oluşturulmalıdır. Uygun bir programlama dili seçilmeli ve oluşturulan algoritma ve akış çizgesi bu programlama dili aracılığı ile bilgisayar ortamına aktarılmalıdır. Oluşturulan program bir takım verilerle ve mümkünse gerçek ortamında test edilir. Oluşabilecek sorunlar ilgili kısımlar tekrar gözden geçirilerek düzeltilir. Bu adımlar defalarca gerçekleştirilmek zorunda kalınabilir.
Program Nedir? 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. Ancak gerçekte, problem çözümünün ilk adımı olan, sorunun anlaşılması ve ihtiyaçların belirlenmesi kısmı, sistem analizi veya sistem çözümleme olarak anlatılır. Diğer adımlar Programlama diye tanımlanabilir. Oluşturulan programın kullanıma geçirilmeden önce gerçek verilerle denendiği adıma da kısaca test aşaması da denir. Ç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.
Algoritma Nedir? Bir sorunu çözebilmek için gerekli olan sıralı mantıksal adımların tümüne denir. Doğal dille yazılabileceği için fazlaca düzenli değildir. Bir algoritma için aşağıdaki ifadelerin mutlaka doğrulanması gereklidir. Her adım son derece belirleyici olmalıdır. Hiç bir şey şansa bağlı olmamalıdır. Belirli bir sayıda adım sonunda algoritma sonlanmalıdır. Algoritmalar karşılaşılabilecek tüm ihtimalleri ele alabilecek kadar genel olmalıdır.
Akış Çizgesi Nedir? Bir algoritmanın daha görsel gösterimidir. Çizgiler, Dörtgen, daire vb. geometrik şekillerle algoritmanın gösterilmesini sağlar. Doğal dille yazılmadığı için daha düzenli olduğu düşünülebilir.
Algoritmalar Algoritmalar Bir bilgisayar programı aslında sıra düzensel olarak tanımlanmış bir dizi komuttan başka bir şey değildir. Bu açıdan bizim yazmaya çalışacağımız programda bir dizi komut yani eylem topluluğudur. Her programda bu eylemler yazıldıkları sırada gerçekleştirilir veya çalıştırılırlar. Aslında bizim günlük hayattaki yaşantı tarzımız dahi düzenli olarak bir takım işlemlerin sıra ile yapılması şeklindedir. Yani bir iş yapabilmek için bir takım alt iş veya olayları peş peşe gerçekleştiririz.
Algoritmalar Algoritmalar Algoritmanın tanımını bir kere daha vermekte fayda var. Bir sorunu çözebilmek için gerekli olan sıralı mantıksal adımların tümüne algoritma denir. Bir algoritmadan beklenen bir takım özellikler olduğunu da yine daha önceki tanımlar bölümünde bahsetmiştik. Şimdi mümkün olduğu kadar bu tanım ve özelliklerden yola çıkarak örneklerle bir kaç algoritma vermeye çalışalım.
Algoritmalar Algoritmalar Öncelikle bir ev hanımının pasta yapmak istediğini varsayalım. Bu pastanın yapılabilmesi için gerekli bir takım işlemler ve alt adımlar bellidir. Bir ev hanımı da sıra ile bu adımları uygulayarak bu pastayı yapar. Şöyle ki: 1 Pastanın yapımı için gerekli malzemeleri hazırla 2 Yağı bir kaba koy 3 Şekeri aynı kaba koy 4 Yağ ve şekeri çırp 5 Karışımın üzerine yumurtayı kır 6 Tekrar çırp 7 Kıvama geldi mi diye kontrol et 1 Kıvamlı ise 8. adıma devam et 2 Değilse 6. adıma dön. 8 Karışıma un koy 9 Karışıma vanilya, kabartma tozu vb. koy 10 Karışımı Kıvama gelinceye kadar çırp 11 Pastayı Kek kalıbına koy 12 Yeteri kadar ısınan fırına pastayı koy 13 Piştimi diye kontrol et 1 Pişmiş ise 14. adıma devam et 2 Değilse 13. adıma dön 14 Keki fırından çıkart 15 Fırını kapat 16 Kekin altını kapat 17 Kekin soğumasını bekle 18 Keki servis edebilirsin.
Algoritmalar Algoritmalar Bu algoritma günlük hayattan bir örnektir. Gerçekte biz her işimizi algoritmik olarak yaparız ancak bunu farkına varmayız. Yukarıdaki algoritmayı inceleyecek olursak bir kekin yapılması için gerekli tüm adımlar sıra ile yer almış durumdadır.
Algoritmalar Algoritmalar Bu algoritma ve diğer tüm algoritmalar için bilmemiz gereken bazı konular bulunmaktadır: Her adım son derece belirleyici olmalıdır. Hiç bir şey şansa bağlı olmamalıdır. Belirli bir sayıda adım sonunda algoritma sonlanmalıdır. Algoritmalar karşılaşılabilecek tüm ihtimalleri ele alabilecek kadar genel olmalıdır. Algoritmada algoritmanın genel işleyişini etkileyebilecek hiç bir belirsizlik olmamalıdır. (Bu örnekte öyle bir belirsizlik var. Bir fırının yeteri kadar ısına bilmesi hangi koşula bağlıdır, bu fırın ne zaman açılmış olmalıdır ve kaç dereceye ayarlanmış olmalıdır. gibi...) Algoritmada bazı adımlar yer değiştirebilir. Ancak bir çok adımın kesinlikle yer değiştiremeyeceğini bilmeliyiz. Yanlış sıradaki adımlar algoritmanın yanlış çalışmasına neden olacaktır. 8.-9. ve 2.-3. adımlar yer değiştirebilir, ancak 13-16. adımlar kesinlikle yer değiştiremezler.
Algoritmalar Algoritmalar Peki Bilgisayarda çözülecek bir sorunu nasıl algoritma ile ifade ederiz? Bunun için öncelikle bir sorun tanımlayalım. Başlangıçta basit olması için şöyle bir problem üzerinde düşünelim: Bilgisayara verilecek iki sayıyı toplayıp sonucu ekrana yazacak bir program için algoritma geliştirmek isteyelim. Sorun son derece basit ancak sistem tasarımının net yapılabilmesi için sorun hakkında anlaşılamayan tüm belirsiz noktalar açıklığa kavuşturulmalıdır. Örneğin sayılar bilgisayara nereden verilecek, Klavye, Dosya veya belki başka bir ortam. Bu ve buna benzer soru ve tereddütleriniz varsa sorun sahibine bunları sormalı ve sistem analizi yapmalısınız.
Algoritmalar Algoritmalar Bu adımları tamamladıktan sonra bulacağımız çözümü aşağıdaki gibi algoritma haline dönüştürebiliriz. 1 BAŞLA 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 SON
Algoritmalar Algoritmalar Biraz daha karmaşık bir sorun şöyle olsun: Klavyeden girilecek iki sayıdan büyük olanından küçük olanını çıkarıp sonucu ekrana yazacak program için bir algoritma geliştiriniz. 1 BAŞLA 2 A sayısını oku 3 B sayısını oku 4 Eğer A büyüktür B SONUC=A-B Değilse SONUC=B-A 5 SONUC değerini ekrana yaz 6 SON
Algoritmalar Algoritmalar Gerçekte bir algoritma genellikle üç ana bölümden oluşur. Bunlar : Algoritmanın giriş ve ilk işlemlerinin yapıldığı bölüm Döngüsel bir bölümün olduğu kesim. Bu bölüm iterasyonlarla bir işlemin sürekli tekrar edilerek sonuca ulaşmayı sağlayan bölümdür. Son işlemlerin yapıldığı bölümdür. Bu bölüm elde edilen sonuçların ekrana yazılmasını sağlayan bölümdür.
Algoritmalar Algoritmalar Örneğin birden, klavyeden girilen, bir n değerine kadar sayıları toplayan ve sonucu ekrana yazan bir algoritmayı geliştirelim. 1 BAŞLA 2 N OKU 3 T=0 4 X=1 5 T=T+X 6 X=X+1 7 EĞER X<=N İSE 5. ADIMA GİT 8 T YAZ
Algoritmaları göstermek için sıkça kullanılan yöntemlerden biri akış çizenekleridir. Akış çizeneklerinde şu simgeler kullanılır: Bir algoritmanın başladığı konumu göstermektedir. Tek çıkışlı bir şekildir. Bir algoritmanın bittiği konumu göstermektedir. Tek girişli bir şekildir. Bir algoritmada aritmetik işlem yapılmasını sağlayan şekildir. Bu dörtgen kutu içerisine yapılmak istenen işlem yazılır. Tek girişli ve tek çıkışlı bir şekildir.
Algoritmada bir bilginin ekrana yazılacağı konumu gösteren şekildir. Ekrana yazılacak ifade ya da değişken bu şekil içerisine yazılır. Bir algoritmada başka bir yerde tanımlanmış bloğun yerleştiği konumu gösteren şekildir. Kutu içerisine bloğun adı yazılabilir. Klavyeden Bilgisayara bilgi girilecek konumu belirten şekildir. Girilecek bilginin hangi değişkene okunacağını kutu içerisine yazabilirsiniz. Giriş Çıkış komutunun kullanılacağı yeri belirler ve kutu içerisine hangi değişkeni ve okuma mı yazma mı yapılacağını belirtmeniz gerekir.
Bilginin yazıcıya yazılacağı konumu gösteren şekildir. Bir algoritmanın birden fazla alana yayılması durumunda bağlantı noktalarını gösteren şekildir. Tek girişli veya tek çıkışlı olarak kullanılırlar. Bir işlemin belli bir sayıda veya belli bir koşul doğru olduğu sürece tekrar edilmesini sağlayan döngü komutunu gösteren şekildir. Bu döngüde altıgen içerisine ya koşul yada döngünün başlangıç, adım ve sonlanma değerlerini belirtebilirsiniz. DÖNGÜ olarak belirlenen blokta da tekrar edilmek istenen komutlar yer almaktadır. Bir algoritmada bir kararın verilmesini ve bu karara göre iki seçenekten birinin uygulanmasını sağlayan şekildir. Burada eşkenar dörtgen içerisine kontrol edilecek mantıksal koşul yazılır. Program akışı sırasında koşulun doğru olması durumunda Evet yazılan kısma Yanlış olması durumunda Hayır yazılan kısma sapılır. Tek girişli ve çift çıkışlı bir şekildir.
Algoritmanın tamamı belirtilmişse akış çizeneği köşeleri yuvarlatılmış kutular içinde bulunan başla komutuyla başlar ve dur komutuyla biter. Algoritmanın tamamı değil, yalnızca ilgilenilen bir parçası belirtilmek isteniyorsa çizenek boş bir yuvarlak ile başlar ve boş bir yuvarlak ile sona erer. Akış çizeneğinin büyümesi ve topluca görülmesinin zorlaşması durumunda akış çizeneği parçalarının başındaki ve sonundaki yuvarlakların içine etiketler yazarak hangi parçanın hangi parçaya nereden bağlandığı belirtilebilir. Algoritmaların örnek değerler üzerinde işleyişlerini daha kolay izleyebilmek amacıyla tablolar kullanılabilir. Tablonun her bir satırı algoritmanın bir adımına karşı düşer ve o adımda çeşitli değişkenlerin ya da deyimlerin aldıkları değerlerin görülmesini sağlar; yani değişkenler ve deyimler tablonun sütunlarını oluşturur.
Örnek 1. En Büyük Eleman Bulma Bir dizinin en büyük elemanını bulma algoritmasını, 50 öğrencili bir sınıfta bir sınavdan alınanen yüksek notun bulunması örneği üzerinde inceleyelim. Bu işi yapacak bir algoritma şöyle yazılabilir: 1 Dizideki ilk notu en yüksek not olarak seç ve sırayı ikinci öğrenciye geçir. 2 Sırada öğrenci varsa 3. adıma, yoksa 5. adıma git. 3 Sıradaki öğrencinin notu şu ana kadarki en yüksek nottan büyükse bu yeni notu en yüksek not olarak seç. 4 Sırayı bir sonraki öğrenciye geçir ve 2. adıma dön. 5 En yüksek notu bildir.
Örnek 1. En Büyük Eleman Bulma Daha çok gündelik dil kullanılarak yazılmış bu algoritmayı biçimsel olarak ifade edebilmek için öğrencilerin notlarını 50 elemanlı bir tamsayı dizisi (bu değişkene notlar adını verelim), o ana kadar bulunmuş en yüksek notu bir tamsayı (max değişkeni diyelim) ile ve sıradaki öğrencinin kaçıncı öğrenci olduğunu tutmak için bir sayaç ( i değişkeni) tanımlarsak: 1 max=notlar 1, i=2 2 i 50 ise 3. adıma, değilse 5. adıma git. 3 notlar i > max ise max=notlar i 4 i=i + 1 ve 2. adıma dön. 5 en yüksek not: max
Figure: En büyük eleman bulma algoritmasının akış çizeneği C Programlama Örnek 1. En Büyük Eleman Bulma Verilen algoritma örneğinin akış çizeneği yandaki şekilde verilmiştir.
Örnek 1. En Büyük Eleman Bulma 50 eleman yerine 6 elemanlı bir dizide en büyük elemanın bulunması algoritmasının işleyişi aşağıdaki tabloda verilmiştir (notların sırasıyla 43, 74, 65, 58, 82, 37 oldukları varsayılmıştır, sürme koşulu i 6 şeklinde değişmelidir). max i i 6 notlar i>max 43 2 D (2<6) D (74>43) 74 3 D (3<6) Y (65<74) 4 D (4<6) Y (58<74) 5 D (5<6) D (82>74) 82 6 D (6<6) Y (37<82) 7 Y (7>6) Table: En büyük eleman bulma algoritmasının örnek değerlerle işleyişi.
Örnek 2. Sayı Tahmin Etme Arkadaşınızın önceden aranızda karşılaştırdığınız iki sınır arasında bir tamsayı tuttuğunu ve sizin bu sayıyı bulmaya çalıştığınızı varsayın. Siz bir sayı söylediğinizde arkadaşınız, tuttuğu sayı sizin söylediğinizden büyükse büyük, küçükse küçük diyecek, doğru sayıyı söylediğinizde oyun sona erecektir. Bu oyunu oynarken nasıl bir algoritma kullanırsınız?
Örnek 2. Sayı Tahmin Etme Kararlaştırdığınız sınır değerlerinden küçük olanını taban, büyük olanını tavan isimli birer değişken ile gösterelim. Ayrıca, biri arkadaşınızın tuttuğu sayıyı temsil edecek (tutulan isimli), diğeriyse sizin söylediğiniz sayıyı temsil edecek (söylenen isimli) iki tamsayı değişken daha kullanalım.
Örnek 2. Sayı Tahmin Etme Algoritma 1 Alt sınırdan başla, bulana kadar birer artırarak ilerle. 1 söylenen=taban 2 söylenen == tutulan ise buldun, dur 3 söylenen=söylenen + 1 ve 2. adıma dön
Örnek 2. Sayı Tahmin Etme Algoritma 2 Deneme aralığının ortasındaki sayıyı söyle. Büyük derse deneme aralığını şu anki aralığın üst kısmına, küçük derse alt kısmına daralt. Bu algoritmayı gerçeklemek için o anki deneme aralığının alt ve üst sınırlarını gösterecek iki yeni değişkene ( alt ve üst diyelim) gerek duyulur. 1 alt=taban, üst=tavan 2 söylenen=(alt + üst) / 2 3 söylenen == tutulan ise buldun, dur 4 söylenen > tutulan ise üst=söylenen - 1, değilse alt=söylenen + 1 ve 2. adıma dön.
Örnek 2. Sayı Tahmin Etme Algoritma 2 nin akış çizeneği yanda verilmiştir. Figure: Sayı tahmin etme algoritmasının akış çizeneği.
Örnek 2. Sayı Tahmin Etme Alt sınırın 1, üst sınırın 63 olduğunu ve arkadaşınızın 19 sayısını tuttuğunu varsayarsak, her turda değişkenlerin aldıkları değerler aşağıdaki tabloda görüldüğü gibi olacaktır. alt üst söylenen söylenen=tutulan 1 63 32 Y (32>19) 31 16 Y (16<19) 17 24 Y (24>19) 23 20 Y (20>19) 19 18 Y (18<19) 19 19 Table: Sayı tahmin etme algoritmasının örnek değerlerle işleyişi.
Algoritmaların Karşılaştırılması Yukarıdaki örneklerde görüldüğü gibi, çoğu zaman bir problemi çözmenin birden fazla yolu vardır. Aynı problemi çözen iki algoritmadan hangisinin daha iyi olduğuna karar vermek üzere algoritmalar iki özelliklerine göre karşılaştırılırlar: 1 Hızları, 2 Harcadıkları yer.
Algoritmaların Karşılaştırılması 1. Hızları: Hangi algoritma çözümü daha çabuk buluyor? Bu sorunun yanıtı da iki durum için incelenir: a) en kötü durumda b) ortalama durumda Sayı bulma için verilen yukarıdaki iki algoritmayı bu bakımdan karşılaştırırsak, birinci algoritmanın örnek değerlerle sayıyı en kötü durumda 63, ortalama durumda 32 denemede bulacağı görülür. Oysa ikinci algoritma sayıyı en kötü durumda 6, ortalama durumda 5.09 denemede bulur.
Algoritmaların Karşılaştırılması 2. Harcadıkları yer: Hangi algoritma bellekte daha fazla yer kullanıyor? Sayı bulma algoritmalarında gördüğümüz gibi, ikinci algoritma birinci algoritmanın kullandıklarına ek olarak iki değişken daha gerektirmektedir. Günümüzde bilgisayarların kapasiteleri eskiye oranla çok yükselmiş olduğu için harcanılan yer ölçütünün önemi göreli olarak azalmıştır. Yine de projenin boyutuna ve çalışılan ortamın yeteneklerine göre algoritma geliştirirken hızın yanısıra harcanacak yerin de gözönüne alınması gerekebilir. Algoritmaların hızlarının ve harcadıkları yerlerin incelenmesi algoritma analizi dalının konusudur. Bu dalda geliştirilmiş bulunan karmaşıklık kuramı, benzer problemlerin çözümü için önerilen algoritmaların karşılaştırılmasında başvurulan en önemli araçtır.
TEŞEKKÜRLER