TEMEL BİLGİSAYAR BİLİMLERİ Programcılık, problem çözme ve algoritma oluşturma
Programcılık, program çözme ve algoritma Program: Bilgisayara bir işlemi yaptırmak için yazılan komutlar dizisinin bütünü veya bir kısmı. Programlama Dilleri Üst Düzey Diller Orta Düzey Diller Alt Düzey Diller Access Foxpro Paradox Xbase Visual Basic Oracle Forms Fortran Pascal Basic Cobol C ADA Assembly 2
Program Felsefesi Bilgisayar iki amaç için kullanılır. Hesaplamak Depolamak Kullanılan bilgisayar dili ne olursa olsun bir program; oluşur. Kullanıcı ile irtibatı sağlayan mesajlardan, Bazı sabit değerlerden, İşlenen verileri içeren hafıza parçacıklarından (Değişken) Aritmetik, kıyaslama, atama, mantıksal gibi işlemlerden, Kullanılan dile ait tanım ve komutlardan, Birtakım noktalama işaretlerinden 3
Yapısal Programlama Yapısal programlama (Stractured Programming) modelinde program mantıksal bütünlük gösteren bloklara (bölümlere) ayrılmıştır ve bu bölümlerde daha alt bölümlere ayrılabilir. Bu yolla uzun ve karmaşık programların, bloklara ayırarak daha kolay biçimde yazılabilmesi mümkün olmaktadır. Program Fonksiyon Alt Fonksiyon Fonksiyon Fonksiyon Gövde Blok: Belirli bir işlev için bir araya getirilmiş bir veya birden fazla komut cümlesinin oluşturduğu program parçasıdır Yapısal programlama modelinde veriler, fonksiyonlar ve alt fonksiyonlar tarafından yönetilir. Bazı veriler global düzeyde tüm fonksiyonlarda kullanılırken, lokal veriler fonksiyonlar tarafından kullanılmaktadır. Bu yöntemde programcılar ihtiyaçları karşılamak ve görevleri yerine getirmek için fonksiyon tasarlarlar ve bu fonksiyonlarda verileri yönetir. Yapısal programlama dillerinin en büyük özelliği oldukça düzenli ve okunabilir olmalarıdır. Yapısal dil ile yazılmış bir program incelendiğinde, programın ana bileşenleri görülebilir ve birbirlerinden kolayca ayırt edilebilir durumdadır. Program üzerindeki yeni düzenlemelerin çok kolay yapılabilmesi, bu özellin getirdiği önemli bir avantajdır 4
Problem Çözme Teknikleri Problemin ne olduğunu iyi anlamak Nasıl çözüleceğine karar vermek, Mümkün olduğu kadar küçük parçalara ayırmak Kolaydan başlayıp karmaşık olana doğru gitmek Çözüm adımlarını belirlemek Problem Algoritma Akış Şeması Program Karar Tablosu Bilgiler Bilgisayar Sonuç 5
Yazılım Geliştirme Aşamaları Her programın amacı verileri işlemektir. Bu işlem sonucunda bir veri alınır. Yazılım geliştirme aşamaları; 1. Analiz Problemin tam olarak ne olduğunun anlaşılması, Çözümden neler beklendiği, Çözümün girdi ve çıktılarının neler olduğu, 2. Tasarım Problemi çözecek mantıksal (lojik) adımlar zincirini bulmak. Algoritma bu adımlar zincirine denir. Her detay, her adım algoritmalarda gösterilmelidir. 6
Yazılım Geliştirme Aşamaları 3. Kodlama Algoritması oluşturulan problem programlama diline uygun olarak kodlanır. 4. Test ve Düzeltme Hataları tespit etme ve ortadan kaldırma Doğru Elde Edilen Sonuçlar Yanlış Program çalışıyor Program düzeltilir 7
Algoritma Kurma Belli bir sonucu elde etmenin yöntemini tarif eden kural veya basamaklar kümesine algoritma denir. Her algoritma aşağıdaki kriterleri sağlamalıdır. 1. Girdi: Sıfır veya daha fazla değer dışarıdan verilmeli. 2. Çıktı: En azından bir değer üretilmeli. 3. Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli. 4. Etkinlik: Her komut kişinin kalem ve kağıt ile yürütebileceği kadar basit olmalıdır. 8
Algoritma Algoritmalar programlama dillerinden bağımsızdır. Aynı algoritma farklı dillerde uygulanabilir. Bu nedenle algoritmalar 1. Sözde kod (Pseudocode) ve 2. Akış diyagramları ile anlatılır. Pseudocode: Algoritma adımlarının programlama diline benzeyen bir şekilde, ancak günlük dil ile anlatılması. SORU : Verilen iki sayının toplamını bulan algoritmayı yazınız? 9
Algoritma ÖRNEK : Verilen iki sayının toplamının bulunmasının algoritması (Pseudocode) Algoritma Adım 1- Başla Adım 2- Birinci sayıyı oku Adım 3- İkinci sayıyı oku Adım 4- İki sayıyı topla Adım 5- Dur 10
Akış Diyagramları Herhangi bir sorunun çözümü için izlenmesi gerekli olan aritmetik ve mantıksal adımların söz veya yazı ile anlatıldığı algoritmanın,görsel olarak simge ya da sembollerle ifade edilmiş şekline "akış şemaları" adı verilir. Akış şemalarının sözde kodlardan 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 Akış şemaları, problemin çözüm 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ı için yapılır. 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 yapılır. 11
Akış Diyagramları Akış diyagramları problemin şekillerle ifade edilmesidir. Bunun için kullanılan standart şekiller olmasına rağmen, aynı işi yapan farklı şekillerde kullanılabilir. Aşağıda en çok kullanılan akış diyagramları/şekilleri verilmiştir. Başla/Bitir Başla/Bitir: Algoritmanın başladığını ya da sona erdiğini belirtmek için kullanılır. Döngü Döngü: Program akışında bir döngü var ise bu sembol kullanılır. İşlem İşlem: Algoritmadaki hesaplama ve atama işlemleri için kullanılır. Belge Belge: Bilgi çıkışını ve bilginin kullanıcıya yansıtılacağını ifade eder. Veri Veri: Programa bir veri girişi yada programdan bir veri çıkışı yapılacağını gösterir. Referans Referans: Akış diyagramının farklı bir noktasına bağlantıyı gösterir. Karar Karar: Aritmetik ve mantıksal ifadeleri karşılaştırmada ve istenen şartlara göre program akışını yönlendirmede kullanılır. Bağlayıcı Sayfa dışı bağlayıcı: Bir sayfaya sığmayan akış diyagramının başka bir sayfadaki noktasına bağlantıyı belirtir. Akış yönü Oklar: Programdaki adımların akış yönünü gösterir. 12
Akış Diyagramları Değişkenler: S1: Birinci sayıyı, S2: İkinci sayıyı, T: Toplamı, T2: Toplamın karesini, T3: Toplamın küpünü gösterir. Pseudocode: 1. Başla 2. S1 ve S2 değerini gir 3. S1 ve S2 yi oku 4. T=S1+S2 5. T2=T^2 6. T3=T^3 7. T2,T3 üyaz 8. DUR İki sayının toplamlarının karesini ve küpününü hesaplama Başla S1 ve S2 gir S1 ve S2 oku T=S1+S2 T2=T^2 T3=T^3 T2, T3 Bitiş 13
Akış Diyagramları Değişkenler: T: Toplamı, i: sayıları gösterir. 1'den 100'e kadar olan sayıların toplamının bulunması Başla T=0 i=1 Pseudocode: T=T+i 1. Başla. 2. Başlangıçta T'nin değeri 0 ve i'nin değeri 1 olsun. 3. i'nin değerini T'ye ekle. 4. i'nin değerini 1 arttır. 5. Eğer i'nin değeri 100'den büyük değil ise 3. adıma git. 6. T'nin değerini yaz. i++ i<100 H T=i E Bitiş 14
Akış Diyagramları Başla n değeri gir n oku F=1 Akış diyagramı: Bir n sayısının faktöriyelini bulma. (n! = 1 * 2 * 3 * * n) Pseudocode: 1. Kullanıcıya n yi girmesini söyle 2. n değerini oku 3. F=1 4. n >1 olduğu sürece tekrarla F=F*n n= n-1 E n>1 F=F*n 5. F değerini yaz H n!= F n=n-1 Bitiş 15
Başla A, B, C Akış diyagramı: Ax 2 +Bx+C=0 denkleminin köklerini bulan ve Köklerin sanal olması durumunda kökler sanaldır ifadesini veren program. D=B 2-4*A*C D<0 E kökler sanal H E D=0 x=-b/2*a Bitiş kökler eşit x x1, x2 x1=(-b+ D)/(2*A) Bitiş Bitiş x2=(-b- D)/(2*A) 18