Minimax Ağaçları (Minimax Tree) Yazan : Şadi Evren ŞEKER Bilgisayar mühendisliğinde, yapay zeka konusunda kullanılan bir karar ağacı türüdür. Aslında minimax ağaçları bilgisayar bilimlerine işletme bilimindeki oyun teorisinden (game theory) girmiştir. Temel olarak sıfır toplamlı bir oyunda (zero sum game), yani birisinin kaybının başka birisinin kazancı olduğu (veya tam tersi) oyunlarda karar vermek için […]
Category: Programlama Dilleri
Factorial (Faktöriyel)
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde sıkça kullanılan bir örnek olan faktöriyel fonksiyonu yapısı itibari ile özyineli (recursive) bir fonksiyondur. Yani fonksiyonun çözümünde yine kendisi cinsinden yazılma şansı vardır. Faktoriyel fonksiyonunun tanımını şu şekilde yapabiliriz: n! = n (n-1) (n-2) … 1 Yanibasitçe faktöriyel fonksiyonu herhangi bir sayı için 1’den o sayıya kadar olan […]
İşlem Yükleme (Operator Overloading)
Yazan : Şadi Evren ŞEKER Programlama dillerinde, özellikle de nesne yönelimli (object oriented) programala dillerinde bir işlemin (operator) farklı amaçlar için ve farklı veri tipleri ile kullanılması mümkündür. Örneğin C++ dilinde aşağıdaki yapı ile bu işlem yapılabilir: operator([parametreler]) { İşlemler } Örneğin bu yapıda yeniden tanımlanmış (üzerine yüklenmiş, overload) aşağıdaki kodu inceleyelim: int operator+(int a, […]
Birlik (Union, İttihad)
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde hafızanın verimli kullanılması ve aynı amaca hizmet eden bilgilerin birlikte tutulması amacıyla geliştirilen bu yapılarda tanımlanan alt verilerin tamamı hafızada (RAM) bir arada tutulur ve bir seferde hepsine erişilebilir. Aslında kullanım ve mantık olarak yapılara (Structs) oldukça çok benzeyen birliklerin (unions) tek farkı veriyi hafızada aynı yerde tutmasıdır. […]
Şablonlar (Templates)
Yazan : Şadi Evren ŞEKER Bilgisayar mühendisliğinin pek çok alanında kullanılan şablonlar, programlama dillerinde bir fonksiyon (function) veya programın bir parçasının farklı değişken tipleri için kulllanılmasını sağlarlar. Örneğin JAVA ve C++ dillerinde kullanılan bu özelliği bu yazı kapsamında açıklamaya çalışacağız. Örneğin aşağıdaki kod parçasını ele alalım: template<typename T> template<class T> Yukarıdaki ilk satırda bir tip […]
JSF (Java Server Faces)
Yazan : Şadi Evren ŞEKER JAVA teknolojisi üzerine kurulu olan ve web üzerinden sunucu tarafı kod geliştirme (server side development) olanak sağlayan bir teknolojidir. JSF teknolojik olarak JSP (Java Server Pages) teknolojisinin üzerine kurulmuş bir çerçeve (framework) olarak düşünülebilir. Yani üretilen ve gösterilen kod olarak JSF teknolojisinin altında JSP teknolojisi kullanılmaktadır. Klasik talep tekileşimli MVC […]
Sayma (Enumeration, Tâdâd)
Yazan: Şadi Evren ŞEKER Bilgisayar bilimlerinde alınabilecek alternatiflerin sayılması ve bu sayılan ihtimaller dışındaki ihtimallerin kabul edilmemesi durumudur ( ihtimallerin tâdât edilmesi) Örneğin programlama dillerinde bir değişkenin alabileceği değerleri tanımlayarak bu değişkene sadece bu değerlerden birisinin konulması sağlanabilir. Örneğin C dilinde yazılmış aşağıdaki kodu ele alalım: enum gunler{ pts,sal,car,per,cum,cts,paz }gun; main(){ gun=sal; printf(“n%d”,gun); //2. gün […]
Semafor (Semaphore, Flama, İşaret)
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde özellikle de işletim sistemi ve müşterek programlamada (concurrent programming, eş zamanlı programlamada) sıkça kullanılan bir eşleme (synchronization) yöntemidir. Yani birden fazla işin (process) aynı anda çalışması halinde birbirleri için risk arzettikleri kritik zamanlarda (critical sections) birbirlerini beklemesini sağlayan bir mekanizmadır. Basitçe bir değişken veya bir mücerret veri yapısı […]
Atomluluk (Atomicity)
Yazan: Şadi Evren ŞEKER Latince bölünemez anlamına gelen atom kökünden üretilen bu kelime, bilgisayar bilimlerinde çeşitli alanlarda bir bilginin veya bir varlığın bölünemediğini ifade eder. Örneğin programlama dillerinde bir dilin atomic (bölünemez) en küçük üyesi bu anlama gelmektedir. Mesela C dilinde her satır (statement) atomic (bölünemez) bir varlıktır. Benzer şekilde bir verinin bölünemezliğini ifade etmek […]
Veri yapıları üzerinde fonksiyonlar
Yazan : Şadi Evren ŞEKER Ardışık veri yapıları (consecutive data structures) üzerinde çalışan fonksiyonlar temel olarka 3 grupta toplanabilir. Bu gruplarda amaç yazılabilecek fonksiyon tiplerini üç çatı altında toplamak ve bir abstraction (soyutlama) yaparak programcıya sadece istediği fonksiyonu parametre verebileceği bir ortam hazırlamaktır. Bu işlem sırasında fonksiyon göstericileri (Function pointers) kullanılarak bir fonksiyon diğer fonksiyonlara […]