13 Mart 2019 Çarşamba

Programlamaya Giriş ve Algoritmalar Ders Notları - 1


Genel Programlama Bilgisi
Bir Programcının Program yazabilmesi için yapması gereken çalışmalar ve bilmesi gereken ön bilgilere ihtiyacı vardır. Çünkü bir problemin bilgisayar ortamında çözülmesi maalesef hazırlıksız olarak ve hızlı bir şekilde gerçekleşemez. Her şeyden önce programlama bir süreçtir ve programın yazılıp bitmesi ile bitmez çoğunlukla programın yaşadığı süre içerisinde değişik şekillerde devam eder.
Bu nedenle Program yazılmadan veya problem çözülmeye başlamadan önce bazı adımları sağlam atmak gerekir. Bir çok zaman bu adımlar raporlarla belgelendirilir. Çünkü yazılımın yaşam döngüsü boyunca bu raporlara veya başlangıç adımlarına ihtiyaç duyulabilir.

Bunu sağlayabilmek ve sağlam temelli programlar yazabilmek için mutlaka ön çalışmalar kağıt üzerinde gerçekleştirilir ve elde edilen donelere göre program yazılır.
Ancak programlamaya yeni iseniz hemen program yazmanız oldukça zor olacaktır. Öncelikle programlama mantığını ve problem çözme ön sezisini edinmeniz gerekecek. İşte bu ders notları siz öğrencilerin bu sezgiyi kazanmanızı ve bu mantığı oluşturmanızı sağlayacak bilgiler sunmaktadır.
Ne var ki bu ders notu sadece temel bilgileri verir. Bahsettiğimiz mantık ve sezgiler program yazdıkça gelişir. Bir çok kişi tarafından programlama yeteneğinin tanrı vergisi olduğu söylense bile (ki gerçekte doğrudur) bu yeteneği edinmek resim yapma yeteneğini edinmekten ya da güzel sanatlara karşı bir yeteneği edinmekten çok daha kolaydır.
Bu ders notları her türlü programlama dilinden bağımsız olarak hazırlanmaya çalışılmıştır. Gerekli görüldüğü yerlerde dillere ait detay veya farklılık bilgileri verilmiştir. Ancak esas olan Programlama dilinin üzerinde temel programlama mantığına sahip olmanızdır. Çünkü bu sizin Programlamacı sıfatınız için temel teşkil edecek bilgiler sunmaktadır.

Programlama dilleri zaman içerisinde gelişmiş, değişmiş, kaybolmuş veya yenileri çıkmıştır. Bu nedenle programlama bilginizi asla bir programlama diline bağlı tutmayın. Eğer Programlama mantığınız ve ön sezileriniz oldukça iyi gelişmişse, Algoritmaları kolay kurup algılayabiliyorsanız, çok karmaşık sorunlar üzerinde fikir yürütüp çözüm üretebiliyorsanız bildiğiniz programlama dilinin fazlaca bir önemi kalmamaktadır. çünkü çoğunlukla 1- 2 hafta gibi bir sürede bir programlama dilini orta düzeyde öğrenebilirsiniz. En doğrusu da tabii ki her derde çözüm olabilecek temel bir programlama dilini çok iyi bir şekilde öğrenip her çözüme uyarlayabilmeniz. Ancak önemli olan Programlama mantığını iyi kapmış olmanız.

Dikkat ettiyseniz Programlama dilinde alternatiflerden bahsettik ancak Programlamanın alternatifi bulunmamaktadır. Yani bir program yazılacaksa mutlaka programlamanın kurallarına göre yazılmalıdır.

Tanımlar
Bu ders notlarının daha iyi anlaşılabilmesi için şu tanım ve kavramların bilinmesinde fayda bulunmaktadır.

Bilgisayar Nedir?
Verileri İş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.
Ancak Yukarıdaki Çizimde görülen her bir adımın gerçekleştiren yazılımdır.
Bilgisayar Organizasyonu?
Bir Elektronik Bilgisayar yukarı şekildeki gibi temel birimlere sahiptir. Bu şekilde bir önceki konuda bahsettiğimiz giriş, çıkış işlemleri, veri işleme ve veri saklama işlemleri gerçekleştirilir.
Giriş Birimi
Klavye, Fare, mikrofon, kamera vb. cihazlardan biri veya daha fazlasından oluşur. Veri ve komutların bilgisayara yollanmasını sağlar.
Bellek Birimi
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.

Aritmetik-Mantık Bilgisayardaki tüm Aritmetik ve Mantıksal işlemlerin Birimi yapıldığı birimdir. Tüm işlemleri yapan ana birimdir.

C P U

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.
Çıkış Birimi
Bilgisayar ortamında oluşan verilerin dış ortama verilmesini sağlayan birimlerdir. Ekran, yazıcı gibi birimlerdir.
Bir Programcı genel olarak bu birimlerin hangilerinin ne işe yaradığını ve neleri temsil ettiğini bilmelidir. Özellikle Aritmetik-Mantık işlem birimi ve Denetim birimi Bir bilgisayarın beynini oluşturduğu için nasıl davrandığını iyi bilmek zorundadır.
Bilgisayarın Tarihçesi
Bu konuda çok değişik ve çeşitli kaynaklar bulmak mümkün olabilir ancak şöyle basit bir kronolojik sıra geçmek mümkündür
M.Ö. 500
Abaküs
1642
Pascalın Mekanik Toplama Makinesi
1827
Babbage'in çıkarma makinesi
1941
İkili>İkili Mekanik Hesaplayıcı (Zuse)
1944
Ondalık Elektromekanik Hesaplayıcı (Aiken)
1945-54
İlk Kuşak Vakum Tüpler ve ışınlar
1955-64
İkinci Kuşak Tranzistörler ve Manyetik Bellekler
1965-71
Üçüncü Kuşak Tümleşik Devreler
1971-90
Dördüncü Kuşak VLSI Devreler
1982 IBM Pc & MS-DOS


1984
MAC
1990’lar
Paralel İşlemciler, Yapay Zeka, İnternet ve WWW

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
    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ı beyinle çö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.
    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 ilk paragrafta anlatılan kısım çoğunlukla sistem analizi veya sistem çözümleme olarak anlatılır. Diğer adımlar Programlama diye tanımlanabilir. Ancak Son paragrafta anlatılan adıma 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 formal 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 formal olduğu düşünülebilir.
    Programlama Dili Nedir?
    Bir Problemin Algoritmik çözümünün Bilgisayara anlatılmasını sağlayan, son derece sıkı-sıkıya kuralları bulunan kurallar dizisidir.
Derleyici 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 olup olmadığını bulan yazılımlardır.
Her Programlama dili için bir derleyici olması gerekmektedir.
Yorumlayıcı Nedir?
Derleyici gibi çalışan ancak yazılmış programları o anda Makine diline çeviren yazılımlardır. Bu tür bir yazılımda Programın Makine dili ile oluşturulmuş kısmı bilgisayarda tutulmaz. Programın her çalıştırılmasında her adım için Makine dili karşılıkları oluşturulur ve çalıştırılır.

Hiç yorum yok:

Yorum Gönderme