Bilgisayar Ve Programlamaya Giriş Dersi 4. Ünite Özet
Programlamada Temel Kavramlar Ve C'ye Giriş
- Özet
- Sorularla Öğrenelim
Algoritmalar
Bir işin nasıl yapılacağını bildiren adımlar kümesine algoritma denir. Günlük hayatımızın büyük kısmında, farkında olmadan da olsa algoritmalar ile karşılaşırız. Bir yemeğin yapılmasındaki adımları içeren yemek tarifi, yerini bilmediğiniz bir restorana gitmenize yardımcı olan yol tarifi, yeni aldığınız elektronik cihazın kullanma kılavuzu günlük hayatta kullandığınız algoritmalara örnek olarak gösterilebilir.
Bir algoritma, yapılacak işe ait açıklamalardan ve işin yapılmasında takip edilecek adımlardan meydana gelir. Açıklama kısmında, işin tanımı yapılır ve işle ilgili detaylar belirtilir. Adımlar kısmında, işin başlangıcından sonuna kadar yapılacak işlemler sıralanır ve tarif edilir.
Algoritmaların tanımlanmasında ve gösteriminde kullanılan değişik yöntemler mevcuttur. Yöntemlerden başlıcaları konuşma dili ile gösterim, akış diyagramları ile gösterim ve sözde kod ile gösterimdir.
Konuşma Dili: Bir algoritmanın açıklaması ve algoritmada yer alan adımlar, konuşma dili kuralları çerçevesinde gösterilebilir. Bu gösterim seklinde, algoritma açık ve kesin bir dille tanımlanır. Algoritmada yer alan adımlar liste halinde yazılır.
Akış Semaları: Akış seması, algoritmaların gösteriminde kullanılan faydalı bir yöntemdir. Bir akış semasında algoritma adımlarını ifade eden kutucuklar, adımlar arası geçişleri gösteren oklar, karar verme mekanizmaları olarak kullanılan şekiller bulunabilir. Akış seması, bir algoritmanın görsel halini sunar. Bu sayede algoritmaların anlaşılması daha kolay hale gelir. Programcılar ve analistler tarafından yaygın olarak kullanılan akış semalarını oluşturmak için birçok farklı çizim yazılımı bulunur.
Sözde Kod: Sözde kod (pseudocode), bir algoritma veya program oluşturulurken kullanılan, konuşma diline benzeyen ve programlama dillerinin detaylarından uzak anlatımlardır. Algoritmaların sözde kod ile gösterilmesinde, bir programlama diline benzeyen ifadeler kullanılır, ancak bu ifadeler bilgisayarın anlayabileceği ifadeler değildir. Sözde kodlar, programlama mantığı ile konuşma dili cümlelerinin harmanlanmasıyla meydana gelir ve herkes tarafından kolaylıkla anlaşılabilir. Sözde kodu okuyan bir kişi, programlama dillerinin detaylarına takılmadan, algoritmanın çalışma mantığını anlayabilir.
Yüksek Seviye Programlama Dilleri
Bilgisayarlar, yalnızca makine dilinde yazılmış programları çalıştırabilir. Makine dili komutları 0 ve 1 değerlerinden oluşan, insan tarafından okunması ve anlaşılması kolay olmayan komutlardır. Bu komutları kullanarak binlerce satırlık programlar yazmak ve gerektiği durumlarda bu programları incelemek, oldukça zahmetli, zaman gerektiren ve hataya müsait bir iştir.
Bilgisayar programlama tarihinde, makine dili komutlarını kullanarak program yazmanın zorlukları kısa sürede anlaşılmıştır. Bu zorluğun üstesinden gelebilmek ve programcıların işini kolaylaştırmak için çevirici diller (assembly) geliştirildi. Bu dillerde makine dili komutlarının doğrudan kullanılması yerine, komutları ifade eden kısa kelimelere geçiş yapıldı. Örnek olarak, toplama işlemi için ADD, çıkarma işlemi için SUB, çarpma işlem için MUL, veriyi bellekte farklı bir alana taşımak için MOV gibi kısa komutlar, makine dili komutlarının yerine geçti.
Çevirici dillerde yazılmış programlar, merkezi işlem birimi tarafından doğrudan çalıştırılamaz. Bu programları makine diline çeviren özel programlar vardır. Çevirici (assembler) olarak bilinen bu özel programlar sayesinde makine diline dönüşüm gerçekleştirilir ve program komutları çalıştırılır.
Çevirici diller, makine diline göre oldukça rahat bir programlama ortamı sağlamış olsa da; programcıların karşılaştıkları zorluklar, yüksek seviyeli programlama dillerinin gelişimine kadar devam etmiştir.
Yapı itibariyle makine diline oldukça benzeyen çevirici diller, alt seviye programlama dilleri kategorisine girer. Çevirici dil kullanarak program geliştirmek için merkezî işlem biriminin yapısına iyi derecede hakim olmak gerekir. Makine dilinde olduğu gibi, çevirici dillerde yazılan programlar da çok fazla komut içerir.
Alt seviye programlama dillerinde yaşanan zorlukların önlenebilmesi için yüksek seviye programlama dilleri oluşturulmuştur. Temelleri 1950’li yıllarda atılan yüksek seviye programlama dilleri, güçlü ve karmaşık programların kolaylıkla geliştirilmesini sağlar. Bu dillerde program yazmak için merkezi işlem biriminin işleyişinin bilinmesine gerek yoktur. Yazılan programlardaki komut sayısı, alt seviye dillerdeki programlara göre oldukça azdır.
Bilgisayar sistemlerinde donanım ve programlama dilleri arasında bir hiyerarşi bulunmaktadır. Yüksek seviye programlama dilleri, bu hiyerarşinin en üst basamağında yer alır.
Yüksek seviye programlama dilleri, programcıların işini oldukça kolaylaştırır. Bu diller sayesinde, programcılar merkezi işlem biriminin yapısıyla ilgili işlemlerle uğraşmaktan kurtulur ve daha az komut ile çalışma imkanı bulur. Bu dillerde yazılan kodlar, programcılar tarafından rahatlıkla okunabilir ve anlaşılabilir. Bu sayede daha hızlı kod yazmak, kod yazımında daha az hata yapmak, yazılan kodları incelemek ve kontrol etmek mümkün olmuştur.
Derleyiciler ve Yorumlayıcılar: Bilgisayar sistemlerinde merkezi işlem birimi, yalnızca makine dili komutlarını algılayabilir. Dolayısıyla, yüksek seviye programlama dili kullanılarak yazılan programların makine diline çevrilmesi gerekmektedir. Programın yazıldığı dilin özellikleridoğrultusunda, bu çevrimin yapılabilmesi için derleyiciler (compiler) veya yorumlayıcılar (interpreter) kullanılır.
Derleyiciler, yüksek seviye programlama dili kullanılarak yazılan bir programın makine diline çevrilmesinde kullanılan bilgisayar programlarıdır. Derleyici kullanılan programlama dillerinde, programın derlenmesi ve çalıştırılması iki ayrı süreç olarak işler. Bir program, bir defa derlendikten sonra, tekrar derlenme ihtiyacı duymaz. Derleme işlemi sonucunda elde edilen makine dili programı, istenildiği her an merkezî işlem birimi tarafından çalıştırılabilir. Derleyici kullanılan yüksek seviye programlama dillerine örnek olarak C, C++, Haskell, COBOL ve Fortran gösterilebilir.
Yorumlayıcılar, yüksek seviye programlama dili kullanılarak yazılan bir programdaki komutları dönüştürmekte ve çalıştırmakta kullanılır. Program komutları, yorumlayıcı tarafından okunur ve makine dili komutlarına dönüştürülür. Yorumlayıcı tarafından dönüştürülen her komut doğrudan çalıştırılır. Bu işlem, programdaki her komut için tekrarlanır. Yorumlayıcı kullanılan yüksek seviye programlama dillerine örnek olarak Perl, PHP, Python, Ruby ve Smalltalk gösterilebilir.
Kaynak Kodu: Yüksek seviye programlama dillerinde, bir program için programcılar tarafından yazılan komutlar topluluğuna kaynak kodu adı verilir. Kaynak kodu, kısaca kod olarak da adlandırılır.
IDE: Programcıların yazılım geliştirmesi için kapsamlı olanaklar sağlayan yazılım uygulamasıdır. Bir IDE’yi oluşturan başlıca bileşenler kod yazım editörü, derleyici, yorumlayıcı ve hata ayıklayıcıdır. Günümüzde sıklıkla kullanılan IDE örnekleri Eclipse, NetBeans, IntelliJ ve Visual Studio’dur. IDE, dilimize “Tümlesik Geliştirme Ortamı” olarak geçmiştir.
C Programlama Dili
C programlama dili, genel amaçlı bir programlama dilidir. 1970’lerin başında Dennis Ritchie tarafından, UNIX işletim sistemi için geliştirilmiştir. C programlama dili, günümüzdeki işletim sistemlerinin neredeyse tamamında kullanılan, dünyanın en yaygın sistem programlama dilidir.
UNIX işletim sisteminin popülerleşmesiyle birlikte, C dili de gelişmeye ve yaygınlaşmaya başlamıştır. İşletim sistemleri, derleyiciler ve hata ayıklayıcılar gibi aşağı seviyeli sistem programlarının geliştirilmesinde yoğun olarak C dili kullanılır. Genel olarak her alanda kullanılabilen bu dil, günümüzdeki nesneye yönelik programlama dillerinin (C++, Java, C#, vs.) ve betik dillerinin (JavaScript, PHP, vs.) esin kaynağıdır.
C dili için program yazım kuralları şöyle sıralanabilir.
- C dili, büyük ve küçük harflere karşı duyarlıdır. Bir komutun büyük veya küçük harflerle yazılması arasında fark vardır. Örnek olarak, “TOPLAM”, “toplam”, “Toplam” kelimelerinin hepsi, derleyici tarafından farklı olarak algılanır.
- C dilindeki tüm komutlar ve anahtar kelimeler, küçük harfler ile yazılır. Bu kurala istisna olarak, yalnızca #define komutu vardır.
- Programlar hakkında açıklamalar, kodun içerisinde yer alabilir. Açıklamalar, derleyici tarafından göz ardı edilir ve islenmez. Açıklama satırları /* ile başlayıp */ ile biter. Açıklamalar, birden fazla satırdan oluşabilir.
- C dilindeki her komut satırı, noktalı virgül ile biter.
C Dilindeki Anahtar Kelimeler: Anahtar kelimeler (keywords), C dili derleyicileri için özel anlam taşıyan programlama elemanlarıdır. Programlama diline özel anahtar kelimeler, o dilde yazılan programlarda tekrar tanımlanamaz ve değişken ismi olarak kullanılamaz. C dilinde 32 adet anahtar kelime vardır ve bu kelimelerin hepsi küçük harfle yazılır.
C dilindeki anahtar kelimeler, dört grup altında sınıflandırılabilir:
- Veri tipi: char, const, double, enum, ioat, int, long, short, signed, struct, union, unsigned, void, volatile.
- Bellek: auto, extern, register, static, typedef.
- Deyim: break, case, continue, default, do, else, for, goto, if, return, switch, while.
- İşleç: sizeof.
Kullanılan makine ve derleyiciye bağlı olarak, C dilinde başka anahtar kelimeler de yer alabilir. Bu durum, C diline has bir özelliktir. Standart dışındaki anahtar kelimeler, genellikle i karakteri ile baslar.
C dilinde çeşitli operatörler mevcuttur. Bu operatörler şöyle sıralanabilir.
- İlişkisel operatörler
- Mantıksal Operatörler
- Matematiksel Operatörler
- Atama Operatörleri
Bir C programını oluşturan iki ana bölüm bulunur. Bu bölümler önişlemci direktifleri (preprocessor directives) ve ana fonksiyondur (main function).
Önişlemci Direktifleri: Derleyicinin bazı özel işlemleri gerçekleştirmesini sağlayan direktiflere önişlemci direktifleri denir. Derleme işleminin ilk aşamasında, önişlemci derleyiciye bu direktifleri ulaştırır. Her önişlemci direktifinin farklı bir görevi vardır. Önişlemci direktifleri # işareti ile baslar. #include ve #define, en sık kullanılan önişlemci direklileridir.
Ana Fonksiyon: C programları fonksiyonlardan oluşur. Bu dilde yazılan her programın en az bir fonksiyonu olmak zorundadır. C programlarının hepsinde main() fonksiyonu bulunur. Programın ilk çağrılan fonksiyonu olan ana fonksiyon, programda gövde görevini görür. Programda kullanılacak diğer fonksiyonlar, ana fonksiyon tarafından çağrılır. Bir fonksiyonun içerisinden başka bir veya birkaç fonksiyonun çağrılması mümkündür.