Bilgisayar Programlamaya Giriş - 1
Bilgisayar ve Program Özet şekilde bilgisayar; «Bilgi işleyen makine» Daha açık olarak bilgisayar; «Verilen giriş değerlerini belirtilen yöntemlerle işleyerek istenilen sonuçları üreten elektronik bir sistem» İşlenecek giriş değerleri ve kullanılacak çözüm yöntemleri bilgisayara insan tarafından programlar ile bildirilir. Yani bilgisayar problemleri çözebilmek için programa ihtiyaç duyar. İnsanla bilgisayar arasındaki iletişim aracı olan program, giriş değerlerini kullanarak istenilen çıkış değerlerinin elde edilebilmesi (problemlerin çözülebilmesi, belirli işlemlerin gerçekleştirilebilmesi vb.) için bilgisayara iletilen komutlar dizisidir.
Bilgisayar, Program ve İnsan İlişkisi Bir işletmede üretimin (çıkış değeri olarak ürünün) olabilmesi için hammadde (giriş değeri) ve makine/teçhizata ihtiyaç duyulmaktadır. Bilgisayarda olduğu gibi işletmede de işin merkezinde insan vardır. Her iki türde de yapılacak işlemler/işler bilgisayara makineye insan tarafından bildirilir.
Bilgisayarın Temel Bileşenleri Bilgisayarın fiziksel yapısı (işlemci, anakart, bellek vb.) «donanım» kısmını oluşturur. Donanımın denetimi ve birbirleriyle uyumlu çalışmasını, belirli amaçlar doğrultusunda kullanılmasını sağlayan kodlar bütününe (yani programlara) «yazılım» denir. Donanım kısmının çalışmasını sağlayan işletim sistemleri gibi yazılımlar; sistem yazılımları olup kullanıcıların genel ve özel uygulama alanlarına yönelik geliştirilmiş olan paket programlar gibi yazılımlar da uygulama yazılımları olarak adlandırılır.
Problem ve Program Bilgisayarın, insanın komutlarla verdiği emirleri yerine getiren elektronik bir sistem olduğunu söylemiştik. Kullanıcı; bilgisayara ne öğretirse, bilgisayardan ne talep ederse onun karşılığını alır. Yani program bilgisayara istenen sonuçları üretirken (problemi çözerken) hangi giriş verilerini, nasıl işleyeceğini ve bulduğu çıktıları ne yapacağını bildirir. Bunu bilgisayara öğretebilmek için de temel olarak problemin çözüm yolunun programcı tarafından bilinmesi gerekir. Bir problemin, birden çok çözüm yolu olabilir. En uygun olanını seçmek, programcının yetenek ve tecrübesine bağlıdır. Eğer verilen programdaki çözüm yolu yanlış ise bilgisayarın bulacağı sonuç/sonuçlar da yanlış olur. Dolayısıyla program yazılmadan önce; çözülecek problem iyice irdelenmeli, uygun çözüm yolu belirlenmeli ve bilgisayara doğru bir şekilde aktarılmalıdır.
Böl ve Üstesinden Gel Stratejisi Eğer problem çok uzun ve karmaşık ise, alt programlara (yani bölümlere) ayrılır. Her kısım ayrı ayrı yazılıp çalıştırılır ve herhangi bir hata yoksa tümü birleştirilir. Bu yönteme programcılıkta «böl ve üstesinden gel» (ya da böl ve yönet) stratejisi denir.
Ana ve Alt Program Büyük programlar, «ana program» ve «alt program»lardan meydana gelir. Ana programa yardımcı işlemlerin yapıldığı program parçalarına, «alt program» denir. «Ana program» ise tüm alt programları denetleyen ve onları belirli düzende çağırıp çalıştıran ana koddur
Makine Dili ve Programlama Dili «Programlama dili» programcı ile bilgisayar arasındaki iletişimi sağlayan bir araç olup programların yazımında kullanılan bir betimleme şeklidir. Bilgisayar, sayısal (dijital) bir sistem olduğundan «makine dili» olarak adlandırılan ve “0” ile “1”lerle gösterilen kodlarla (ikili kodlar – binary kodlar) «ikili mantığa» göre çalışır. Sayısal elektronikte “0” gerilim/akım yok, “1” ise gerilim/akım var anlamında kullanılır. “0” ve “1”lerin her birine ise «bit» denir. 1 byte = 8 bit 1 kB (kilobyte) = 2^10 byte = 1024 byte 1 MB (megabyte) = 2^20 byte = 1048576 byte (1024 kB) 1 GB (gigabyte) = 2^30 byte = 1073741824 byte (1024 MB) 1 TB (terabyte) = 2^40 byte = 1099511627776 byte (1024 GB) 1 PB (petabyte) = 2^50 byte = 1125899906842624 byte (1024 TB) 1 EB (exabyte) = 2^60 byte = 1152921504606846976 byte (1024 PB)
Programlama Dili Seviyeleri Programcıların, kodları 0-1’lerle makine dilinde yazması çok zordur. Bu nedenle «yüksek seviyeli» ve konuşma diline yakın olan programlama dilleriyle programlar yazılmakta, «derleyici» ve/veya «yorumlayıcı» programlarla da makine diline dönüştürülmekte, yani çalıştırılabilir hale getirilmektedir. Programlama dilleri seviyelerine göre 3 gruba ayrılır: Düşük seviyeli diller: Makine dillerini içerir. Orta seviyeli diller: Makine dili ile doğal dil (yani konuşma dili) arasında, makine dilinden daha gelişmiş dilleri içerir. Yüksek seviyeli diller: Doğal dile yakın dilleri içerir.
Kaynak Kod – Derleyici – Amaç Program Yüksek seviyeli bir dilde yazılan programın çalışabilmesi için makine diline çevrilmesi gerekir. Bu dönüşümü, ilgili yüksek seviyeli dilin «derleyici» olarak adlandırılan yazılımları gerçekleştirir. Yüksek seviyeli programlama diliyle yazılmış «kaynak kod» içeriğinin yeniden düzenlenmesine imkan varken, makine diline dönüştürülmüş ve çalışmaya hazır «amaç programın» (ya da makine kodunun) içeriğine müdahale imkanı yoktur.
Programlama Hataları Programlar yazılırken genelde 2 tür hata yapılır: Yazım Hatası: Programda yer alan komutların, ifadelerin vb. ilgili dilin kurallarına uygun olarak yazılmaması durumunda ortaya çıkan hata türüdür. Programın çalıştırılmadan önce derlenmesi esnasında, derleyici bu tür hataları tespit ederek programcıyı uyarmaktadır. Bu nedenle, yazım hataları tehlikeli olmayıp kolaylıkla düzeltilebilir. Mantık Hatası: İlgili programlama dilinin kurallarına uygun olarak yazılmasına rağmen çözüm yolunda verilen yanlış yönlendirmeler, bu hata türünü ortaya çıkarır. Eğer problemin çözüm yolu yanlış aktarılırsa program herhangi bir hata vermeden çalışacak ancak yanlış sonuçlar üretecektir. Çok dikkat edilmesi gereken bir hata türüdür.
İşlemler Bilgisayarlarda yapılabilen işlemler temelde 3 gruba ayrılır: Matematiksel (aritmetik) işlemler: Temel aritmetik işlemler (toplama, çıkarma, çarpma, bölme); üstel, logaritmik, trigonometrik, hiperbolik vb. fonksiyonlar bu grupta yer alır. Karşılaştırma (karar) işlemleri: İki büyüklükten hangisinin büyük veya küçük olduğunun belirlenmesi, birbirine eşit olup olmadıklarının belirlenmesi, alfabetik sıralama gibi amaçlarla yapılan işlemlerdir. Mantıksal işlemler: Mantıksal işlem operatörleri (VE, VEYA, DEĞİL) kullanılarak yapılan işlemlerdir.
Matematiksel İşlemler Matematiksel İfade Kod Karşılığı a = -2, b = 6 Toplama a + b 4 Çıkarma a – b a - b -8 Çarpma a . b a * b -12 Bölme a ÷ b a / b -0.33333 Üs alma ab a ^ b 64 Öncelik Sırası İşlem Kod Karşılığı 1 Sayıların Negatifliği - … 2 Parantezler (…) 3 Matematiksel Fonksiyonlar cos, sin, ln, log, exp, … 4 Üs Alma a ^ b, pow, … 5 Çarpma ve Bölme a * b ve a / b 6 Toplama ve Çıkarma a + b ve a - b
Örnek Matematiksel İşlemler Matematiksel İfade Kod Karşılığı 𝑎+𝑏 −𝑐+2𝑎𝑏𝑐−7 a + b – c + 2 * a * b * c – 7 𝑎+ 𝑏 2 − 𝑐 3 a + b ^ 2 – c ^ 3 𝑎+𝑏 − 2𝑎𝑏 𝑏 2 −4𝑎𝑐 (a + b) ^ (1 / 2) – 2 * a * b / (b ^ 2 – 4 * a * c) 𝑎+ 7 𝑎𝑏𝑐 − 1 1+ 1 𝑎+ 1 𝑏+ 1 𝑐+ 1 𝑎𝑏𝑐 a + (a * b * c) ^ (1/7) – 1/ (1+1/(a+1/(b+1/(c+1/(a*b*c)))))
Örnek Matematiksel İşlemler a=4, b=6, c=8, d=10 için aşağıdaki ifadelerin sonuçlarını bulunuz. c * d / (a * d) + b + c * d / a = 28 c * d / a * d + b + c * d / a = 226 c * d / a * d + (b + c) * d / a = 235 Kod İfadesi Matematiksel Karşılığı c * d / (a*d) + b + c * d / a 𝑐𝑑 𝑎𝑑 +𝑏+ 𝑐𝑑 𝑎 c * d / a * d + b + c * d / a 𝑐 𝑑 𝑎 𝑑+𝑏+ 𝑐𝑑 𝑎 c * d / a * d + (b + c) * d / a 𝑐 𝑑 𝑎 𝑑+ 𝑏+𝑐 𝑑 𝑎
Karşılaştırma İşlemleri İşlem Sembolü Anlamı a = 2, b = 3 = Eşittir Yanlış <> Eşit değildir Doğru > Büyüktür a > b işlemi için Yanlış b > a işlemi için Doğru < Küçüktür a < b işlemi için Doğru b < a işlemi için Yanlış >= veya => Büyük eşittir a >= b işlemi için Yanlış b >= a işlemi için Doğru <= veya =< Küçük eşittir a <= b işlemi için Doğru b <= a işlemi için Yanlış
Mantıksal Sabitler Sonuç Rakam olarak Bilgisayar dilinde Lambanın durumu Anahtarın durumu Gerilim / Akım durumu Yanlış False Yanmıyor Açık Yok Doğru 1 True Yanıyor Kapalı Var
Mantıksal İşlemler VE (AND) (.) VEYA (OR) (+) DEĞİL (NOT) (‘) A B A VE B 1 A B A VEYA B 1 A DEĞİL A 1
Örnek Mantıksal İşlemler a = 77, b = 99 için c = a . b ve d = a + b mantıksal işlem sonuçlarını hesaplayınız. a = (77)10 = (1001101)2 b = (99) 10 = (1100011)2 1 a = 77 1 b = 99 1 c = 65 1 d = 111