Algoritma ve Programlamaya Giriş Ders 3
Örnekler GENEL TEKRAR
Matematiksel İfade Dönüşümleri
Matematiksel İşlem Öncelikleri
a = 1, b=2, c=3, d=4 ve e=-2 değerlerine göre aşağıdaki ifadelerin sonuçlarını bulunuz. a+d/b+d^2+2*a*b*c/d+e 20 (a+b) / c+d^2+2*a*b*c / (d+e) 23 a+b/(c+d)^2+2*a*b*c/d+e 2.04 (a+b)/(c+d)^2+2*a*b*c/(d+e) 6.06
Mantıksal İşlemler DEĞİL (B>75) VEYA (A>75) VE (C>=75) A>75B>75C>= Sonuç
Mantıksal İşlemler B’(A+C) ABC Sonuç
Mantıksal İşlemler A’+B.C ABC Sonuç
Algoritma - Sözde Kod Klavyeden girilen 5 sayının ortalamasını bulan programın algoritmasını sözde kod ile yazınız. 1. Başla 2. N = 5 3. T = 0 4. S = 0 5. Eğer S > N-1 ise git S = S Sayıyı (A) gir 8. T = T + A 9. Git Ortalama = T / N 11. Yazdır Ortalama 12. Dur Eski SYeni SSayıEski TYeni TOrt. 00+1=1300+3= =2133+1= =3544+5= = = = =55--- Ortalama = 55/5=11
Algoritma - Sözde Kod Klavyeden girilen N sayısının faktöriyelini hesaplayan programın algoritmasını sözde kod ile yazınız. 1. Başla 2. N sayısını gir 3. F=1 4. S=0 5. Eğer S > N-1 ise git 9 6. S=S+1 7. F=F*S 8. Git 5 9. Yazdır F 10. Dur Eski SYeni SEski FYeni FSonuç 00+1=111*1= =211*2= =322*3= =466*4= =52424*5=120120
Algoritma - Sözde Kod Aşağıdaki algoritmanın sonucunu (ya da çıktısını) hesaplayınız. 1.Başla 2.F = 1 3.S = 20 4.Eğer S < 1 ise git 9 5.S = S – 3 6.F = F + S 7.F = F Git 4 9.Yazdır F 10.Dur Adım S ilk F ilk (S<1)S Son F Ara F Son 1 201false false false false false false false true---
Akış Diyagramları Klavyeden girilen üç sayıdan en büyüğünü bularak yazdıran programın akış diyagramını çiziniz.
Akış Diyagramları ax 2 + bx + c = 0 şeklindeki ikinci dereceden bir denklemin köklerini bulan programın akış diyagramını çiziniz.
Akış Diyagramları Aşağıdaki akış diyagramının ekran çıktısını elde ediniz. Algoritma – 1 Algoritma – 3 Algoritma – 5 Döngünün son değeri: 5
Programlama Dillerine Giriş Temel Kavramlar ve C Dilinin Yapısı
Algoritmalar ve Programlama Dilleri Programlama dili bilgisayarda çözülecek bir sorun için çözümün bilgisayara adım adım aktarılmasını sağlayan biçimsel kuralları olan ve bu kurallara sıkı sıkıya bağlılığı gerektiren bir tanımlar kümesidir. Basit bir benzetmeyle bir programlama dili insanla bilgisayar arasında çeviri yapan bir çevirmen olarak düşünülebilir. Doğal dil ile betimlenen algoritmalarda sıkı sıkıya uyulması gereken kurallar bulunmaz. Bunların aynı dili kullanan kişilerce kolay anlaşılabilir olması yeterlidir. Akış diyagramlarında ise belirlenmiş semboller yer alır ve bu semboller tüm dünyada standarttır. Kısmen biçimsel olan bu diyagramlar, sorunun çözümünü daha evrensel bir dille ifade etmek için kullanılır. Akış diyagramları veya algoritma ile elde edilen çözüm bir programlama dili ile bilgisayar ortamına aktarılır. Programlama dilleri, standart tanımlar içerir ve bir programı yazarken bu tanımlardan uzaklaşılamaz. Bu nedenle bir program parçasından, başkalarının başka şeyler anlaması mümkün değildir. Yazılan programlar bir derleyici vasıtası ile makine diline çevrilir, varsa hataların bulunması sağlanır ve programcı bu hataları düzeltir.
Programlama Dillerinin Özellikleri - 1 İfade gücü: Dili kullanırken gerçek ifadelerin kullanılması ile ilgili bir kavramdır. Örneğin, bir mühendis kodlama sırasında matematiksel ifadeleri betimlerken normalde kullandığı işaretleri ve terimleri kullanmak isteyecektir. Programlama dilinin ifade gücünün programcının yapacağı işi betimlemede kullandığı standartlara uygun olması programlama sürecini kolaylaştıracaktır. Veri Tipleri ve Yapıları: Ön tanımlı değişken türlerinin olabildiğince fazla ve ihtiyaçları karşılar durumda olması bir dilden beklenen önemli özelliklerdendir. Örneğin, karmaşık sayılarla işlem yapacak bir programcı öncelikle tamsayı veri tipine sahip bir programlama dilini kullanmalıdır. Ardından bu veri tipini kullanarak tanımlayacağı karmaşık sayı veri yapısını da programlama dili kurallarına bağlı kalarak tanımlayabilmelidir.
Programlama Dillerinin Özellikleri - 2 Giriş - Çıkış İşlemlerinin Kolaylığı: Dosyalara erişme ve karmaşık işlemler yapabilme imkanlarını belirten bu özellik (C gibi) bazı programlama dillerinde çok gelişmemiştir. Bu dillerde özel kütüphanelerin kullanımı gereklidir. Veritabanı programlama dilleri ise bu konuda oldukça gelişmiştir. Taşınabilirlik: Bir sistemde yazılmış bir kaynak kodun, başka sistemlerde de sorunsuz derlenebilmesidir. Genellikle dilin seviyesi azaldıkça taşınabilirlik azalır. Örneğin, C orta seviyeli dillerden olsa da taşınabilirlik bakımından üst düzeydeki dillerdendir. Alt Programlanabilirlik: Programın daha ufak program parçalarından oluşturulmasıdır. Böylece; kaynak kod kısalır, algılanması kolaylaşır, test olanakları artar, kodun güncelleştirmesi ve yeniden kullanılması kolaylaşır.
Programlama Dillerinin Özellikleri - 3 Verimlilik: Derlenen kodun hızlı ve sorunsuz çalışabilmesidir. Okunabilirlik: Kaynak kodun hızlı biçimde anlaşılabilmesidir. İyi bir programcının yazdığı kaynak kod, çok iyi işlev gören ama karışık bir koddan ziyade açık ve anlaşılabilir biçimde olmalıdır. Esneklik: Dilin, programcıyı kısıtlamamasıdır. Ancak esnek bir dil, daha az hata vermesine karşın hata oluşma riski daha fazladır. Öğrenme Kolaylığı: Dilin konuşma diline yakınlığı, komutlarının sade ve anlaşılır olması gibi ölçütler o dilin öğrenilmesini etkiler. Yapısal Programlanabilirlik: Programın bloklar halinde yazılması yani alt programların kullanılması anlamına gelen bir programlama tekniğidir. Kodun okunabilirliğini ve verimliliğini artırır. Nesne Yönelimlilik: Verilerin birbirinden daha kesin çizgilerle ayrılmasını öngören bir programlama tekniğidir.
Programlama Dillerinin Özellikleri - 4 Genellik: Bir dilin herhangi bir alanda kullanılabilmesidir. Bazı diller sadece mühendislik alanlarında kullanılabilmesine karşın, C genel amaçlı bir dildir. Programlama dillerinin kendi alanları vardır ve her dil uygun branşta kullanıldığı sürece başarılı ve etkili kullanılmış olur. Genel olarak programlama dilleri uygulama alanlarına göre aşağıdaki sınıflara ayrılabilir: Bilim ve Mühendislik Alanları: Mühendislik veya matematik hesapları için kullanılırlar. Bu dillere Pascal, C, C++, Java, Fortran gibi diller örnek olarak verilebilir. Veritabanı Programlama: Genellikle personel kayıtları, stok veya depo denetimi gibi veritabanı gerektiren işlemlerde kullanılan dillerdir. Bu dillere DBase, Sql, Foxpro ve Paradox örnek olarak verilebilir. Sistem Programcılığı: İşletim sistemlerinin ve sistem programlarının yazılımında kullanılan dillerdir. Örnek olarak C, C++, Java ve makina dilleri verilebilir. Genel Amaçlı Kullanım : Çeşitli konularda uygulama geliştirmek için kullanılan dillere örnek olarak C, C++, Java, VB ve Pascal’ı verebiliriz. Yapay Zeka Kullanımında: Özellikle son zamanlarda popüler olan yapa zeka uygulamalarında kullanılan dillerdir. Örnek olarak Prolog ve Lisp gibi diller verilebilir.
Programlama Dillerinin Sınıflandırılması Programlama dilleri, makine dilinde programlama zor olduğu için doğal dile doğru gelişim göstermiştir. İnsanın en zor öğrenebileceği, anlayabileceği yani gibi makina kodlarına yakın diller en düşük seviyeli (low level) programlama dilleri, insanın en kolay anlayıp kullanabileceği ve insan diline yakın özellikler gösteren diller ise en yüksek seviyeli (high level) programlama dilleridir. Yazılan kodları, makine dilinde değilse, makine diline çevirip çalışmaya hazır hale getirmek, o dilin derleyicisinin veya yorumlayıcısının görevidir. Programlama dilleri seviyelerine göre aşağıdaki gibi sınıflandırılabilir; Çok Yüksek Seviyeli Diller (İnsana en yakın) FOXPRO, ACCESS, PARADOX, VB.NET... (Öğrenilmesi Kolay, Daha Yavaş) Yüksek Seviyeli Diller : PASCAL, FORTRAN, COBOL, BASIC... Orta Seviyeli Diller : C,C++, C#, Java,ADA... Düşük Seviyeli Diller: Assembly... Makine Dilleri (Makineye en yakın diller. 0 ve 1’lerin dizilimlerinden oluşurlar..) (Öğrenilmesi Daha Zor, Daha Hızlı)
Yüksek Seviye vs. Düşük Seviye Doğal dile yakınlık, insanın anlamasına uygun, anlamlı sözcüklerle kodlama yapmak anlamına gelirken; Makineye yakınlık, bilgisayarın çalışma mantığına uygun şekilde, yapılacak işin nasıl yapılacağının kodlanması demektir. Bir dilin seviyesi yüksekse, o dili öğrenmek kolaydır, kaynak kod kısadır ama oluşacak çalıştırılabilir dosya uzundur, uzun ve karmaşık işlemler kısa kodlarla gerçekleştirilebilir. Düşük seviyeli dillerde ise programcı, makineye daha hakimdir, sorumluluğu daha fazladır, kod yazımı uzun ve zahmetlidir.
C Programlama Dili C Programlama Dili genel amaçlı orta seviyeli ve yapısal bir programlama dilidir. 1972 yılında Dennis Ritchie tarafından UNIX işletim sistemi ile kullanılmak için tasarlanmıştır. İşletim sistemleri ve derleyiciler gibi sistem programlarının yazımında yoğun olarak C programlama dili kullanılır. C'nin yayılması ve gelişmesi, büyük bir bölümü C dili ile yazılan UNIX işletim sisteminin popüler olmasıyla başlamıştır. C Programlama Dili, hemen her alanda kullanılmaktadır. Günümüzde nesneye yönelik programlama dilleri (C++, Java) ve script dilleri (JavaScript) gibi programlama dilleri C’den esinlenmiştir. C, taşınabilir bir dildir. Yani herhangi bir C programı hiçbir değişikliğe uğramadan, veya çok az bir değişimle, başka bir derleyicide ve/veya işletim sisteminde derlenebilir. Örneğin, Windows işletim sistemlerinde yazılan bir C kodu, Linux, UNIX veya VAX gibi işletim sistemlerinde de derlenebilir. Taşınabilirlik, herkesin kabul ettiği bir standart ile gerçekleştirilebilir. Bugün, C Programla Dili için American National Standards Institute (ANSI) kurumunun Mart 2000'de belirlediği C99: ISO/IEC 9899:1999 standartı Standart C olarak kabul edilmektedir.
C Dilinin Avantajları C, hem üst düzey hem de alt düzey programlamayı destekleyen bir dil olarak tasarlanmıştır. Programcı önceden hazırlanmış temel fonksiyonları kullanarak istediği işlemleri rahatlıkla kullanırken, derleyici bu fonksiyonların anlamı hakkında hiçbir şey bilmez. Bu fonksiyonlar C programlama dilinin kütüphanelerini oluşturmaktadır. C dili program yazma aşamasında bu kütüphanelerden faydalanır. C programlama dili az sayıda anahtar sözcük ve güçlü işlem operatörleri içermektedir. Bu nedenle öğrenilmesi kolaydır. C dilinde işlem operatörleri makine koduna dönüştürüldüğü için etkin çalışan kodlar üretir. C dili programcının bilgisayardan bağımsız program yazmasına ve programın rahatlıkla başka sistemlere aktarılmasına olanak sağlayan bir dildir. C programlama dili programcıyı modüler programlamaya teşvik eder. Modüler programcılığın temeli olan fonksiyonlar C dilinde oldukça rahat bir şekilde kullanılmaktadır.
İlk C Kodu /* ilk.c: ilk C programi */ #include main() { printf("Merhaba Dünya!\n"); }
C Kodlarının Temel Özellikleri Kullanılacak her fonksiyon için ilgili başlık dosyası programın başına eklenmelidir. Her C programı mutlaka main() fonksiyonunu içermelidir. Program içinde kullanılacak olan değişkenler ve sabitler mutlaka tanımlanmalıdır. Satırın sonuna ; işareti konmalıdır. Her bloğun ve fonksiyonun başlangıcı ve bitişi sırasıyla { ve } sembolleridir. C dilinde yazılan kodlarda küçük-büyük harf ayrımı vardır (case sensitive). Örneğin; A ile a derleyici tarafından farklı değerlendirilir. Açıklama operatörü /* */ sembolleridir.