Bilgisayar Kavramlarıwww.bilgisayarkavramlari.com |
Yazan : Şadi Evren ŞEKER Bu yazının amacı, matrislerin determinantını (masfuf muheddedad, matrix determinant) nasıl hesaplandığını anlatmaktır. Konuya basit matrisler ile başlayalım. Örneğin 2×2 boyutundaki bir matris için: basitçe det(A) = ad – bc şeklinde hesaplanabilir buradaki hesap aşağıda gösterilen iki ok yönünden sağı göstereni + ve solu göstereni – alarak hatırlanabilir: Şekilde görüldüğü üzere [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, nesne yönelimli programlama konusu altında, sıklıkla geçen nesne dizilerini (object array) anlatmaktır. Kısaca bir dizinin elemanlarına nesne atamanın nasıl olacağı anlatılacaktır. Öncelikle nesne yönelimli programlama dillerinde, kullanılan nesne atıflarının (object referrer) birer gösterici (pointer) olduklarını bilmemiz gerekir. Örnek olarak bir sınıf tanımı ile başlayalım: class insan{ int [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, JAVA programlama ortamında kullanılan applet teknolojisine hızlı bir başlangıç yapmak ve basit bir appletin nasıl kodlanıp çalıştığını göstermektir. Öncelikle applet nedir bundan bahsedelim. Applet teknolojisi aslında JAVA’nın günümüzdeki tahtına ulaşmasında en önemli role sahip olan teknolojilerindendir. Sene 1995-1996 yıllarında henüz en güçlü internet taryıcısı Netscape Navigator iken [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, nesne yönelimli programlama ortamlarında kullanılan bir tasarım kalıbı (design pattern) olan gözlemci tasarım kalıbını (observer design pattern) açıklamak ve kullanımına dair bir örnek vermektir. Nesne yönelimli olmayan programlama dillerinde (örneğin C) aynı yapı, geri çağırım (callback) ismi verilen yaklaşım ile yapılabilir. Konuya, klasik bir gözlemci tasarım kalıbını [...]
Yazan : Şadi Evren ŞEKER Netbeans ortamının en büyük avantajlarından birisi, kendi içerisinde ücretsiz bir UML tasarım ortamı bulundurmasıydı. Ne yazık ki 6.7 sürümünden sonra bu özelliği netbeans kurulum paketinden kaldırdılar ve netbeans.org sitesinde yapılan aramalardan visual paradigm isimli ücretli yazılıma yönlendirme yapılıyor. Buna rağmen, netbeans üzerine UML paketi desteği kurulabiliyor. Aslında resmi olarak desteklenmese [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, geri izleme algoritmasının (backtracking algorithm) bir uygulaması olarak, basit bir labirentte yol bulma kodunu JAVA dilinde kodlamaktır. Bu uygulamada herhangi bir yapay zeka yönetmi uygulanmayacaktır. Basitçe kör arama (blind search) yapan ve ihtimalleri sırayla deneyen bir robot uygulaması geliştirilecektir. Örneğin labirent bilgisinin bir dosyada bulunduğunu ve bizim [...]
Soru 0) Ekrana adınızı, soy adınızı ve numaranızı bastıran tam bir JAVA kodu yazınız, kodunuzun konsoldan derlenip çalıştırılması komutlarını yazınız. (10 puan) Soru 1) Aşağıdaki sorulara birer cümle ile cevap veriniz: (10 puan) Serileme (Serialisation) nedir? Bir nesnenin dizgi (String) haline dönüşmesi ve dosya, ağ vb. gibi ortamlar üzerinde dizgi olarak saklanması / [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, JAVA dilinde bulunan ve grafiksel kullanıcı ara yüzü geliştirmekte kullanılan SWING kütüphanesine hızlı bir başlangıç yapmaktır. Öncelikle Swing kütüphanesinin gelişiminden hızlıca bahsedelim. Swing kütüphanesi JAVA diline JDK 1.1 sürümünden sonra eklenmiştir. Daha önce AWT (Active Window Toolkit) ismi verilen bir kütüphane kullanmaktaydık ancak çok daha fazla ve [...]
Yrd. Doç. Dr. Şadi Evren ŞEKER Bir masa lambasının 4 farklı durumu bulunabilmektedir. Kapalı, az ışık, orta ışık ve çok ışık seviyelerinde yanabilen bu lambayı nesne yönelimli olarak programlayınız. Herhangi bir insanın bu lambanın durumunu değiştirebilmesi ve lambanın mevcut durumunu görebilmesini sağlayınız. (JAVA dilinde sadece gerekli sınıfları yazınız) (10 puan) Masa lambasında durumu tutan bir [...]
Yazan: Şadi Evren ŞEKER Verilen bir dizilimdeki (sequence) tekrar oranını bulmaya yarayan yöntemdir. İsmi n ve gram kelimelerinin birleşiminden oluşmaktadır. Buradaki n, tekrarın kontrol edildiği değerdir. Gram ise bu tekrarın dizilim içerisindeki ağrılığını ifade etmek için kullanılmıştır. Örneğin bir dizgi (string) içerisindeki n-gram değerini bulmak isteyelim ve buradaki n değeri 2 olsun (n = 2) [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, Java dilindeki vektör sınıfının kullanılmasını ve yapısını anlatmaktır. Java dilindeki vektörlerin yapısından bahsederek başlayalım. Klasik veri yapısı olarak dizilerin (array) ve bağlı listelerin (linked list) özelliklerini birleştirmiştir. Bir vektör boyutu belli olmadan tanımlanıp içerisine veri konuldukça hafızada kapladığı yeri arttırmaktadır. Bu anlamda bağlı listelere benzer özellik göstermektedir. [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, java dilinde bulunan final kelimesini açıklamaktır. Temel olarak final kelimesi, java dilinde 3 farklı yerde bulunabilir: Sınıf tanımında Metot (fonksiyon) tanımında Değişken tanımında Sırasıyla bu durumları uygulamalar üzerinden görelim. public final class sonsınıf{ } yukarıdaki tanımın yapılması halinde, sınıf (class) nihai bir sınıf olur (final class) ve [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, JAVA programlama dilinde bir sınıfın, birden fazla sınıftan nasıl miras aldığını anlatmaktır. Temel olarak JAVA dilinde doğrudan çoklu kalıtım (multiple inheritance) bulunmaz. Yani aşağıdaki gibi bir kod hatalıdır: public class bilgisayar_mühendisliğ_öğrencisi extends sayısal_öğrenci, üniversite_öğrencisi{ } Yukarıdaki tanıma göre bir bilgisayar mühendisliği öğrencisi hem üniversite öğrencisidir hem de [...]
Yazan : Şadi Evren ŞEKER Nesne yönelimli programlama dillerinde, sınıflar (class) arasında miras ilişkisi bulunması halinde (inheritance), bu sınıflardan türetilen nesnelerin birbirine akıtılması durumudur. Bu durumu aşağıdaki örnekler üzerinden anlamaya çalışalım: public class insan{ int boy; int kilo; } public class öğrenci extends insan{ int sınıf; String bölüm; } Örnek olarak verilen yukarıdaki iki sınıf [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, nesne yönelimli programlama ortamlarında (object oriented programming) kullanılan iki temel kopyalama işlemini anlatmaktır. Literatürde bir nesnenin kopyalanması için geçen iki terim bulunur: Sığ kopyalama (shallow copying) Derin kopyalama (deep copying) Sığ kopyalama basitçe bir nesnenin referansını gösteren nesne atfının, farklı bir nesne atfına atanmasıdır. Örneğin aşağıdaki kodu [...]
Yazan : Şadi Evren ŞEKER Kelime anlamı olarak bir değişkenin geçici, uçucu değere sahip olmasını ifade eder. Volatile tip tanımlayıcısı (Volatile Type Quantifier) basitçe bir değişken tanımının başında bulunup, bu değişkenin, program dışında bir etki altında bulunabileceğini ifade eder. Örneğin geliştirdiğimiz bir programda, farklı işlem (process) veya donanımsal etkiler sonucunda değeri değişen bir değişken (variable) [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde özellikle işletim sistemi (operating systems) konusunda kullanılan önemli terimlerden birisidir. Bir işletim sisteminde ya da yazılan bir programda birden fazla işin aynı anda yapılması için kullanılırlar. Bilindiği üzere işlemci (CPU) anlık olarak tek iş çalıştırabilir, ancak işletim sistemi tasarımında kullanılan bazı yöntemlerle birden fazla iş aynı anda yapılıyor [...]
Yazan : Şadi Evren ŞEKER Gelen bir soru üzerine aşağıdaki yazıyı yazıyorum. Soru şu şekilde: “Konsol programında rastgele zar atan ve çıkan zarı ekrana bastıran kodu yazınız. ” Konsol ekranında zar çizdirmek için öncelikle bir tasarım yapmamız gerekiyor. Konsol ekranında sadece ascii karakterlerini basabileceğimizi düşünürsek, zarları aşağıdaki şekilde ascii ekranda göstermemiz mümkün olabilir. Yukarıdaki her [...]
Yazan: Şadi Evren ŞEKER 1. Algoritmanın başarısı 2. Algoritmanın çalışması ve bir örnek 3. Algoritmanın kodlanması Bilgisayar bilimlerinde bir metnin içerisinde başka bir metnin aranması için kullanılan en ilkel ve dolayısıyla en düşük performanslı arama algoritmasıdır (search algorithm). Algoritma hedef metinde, aranan metni harf harf bulmaya çalışır. Bu yapısından dolayı diziler üzerinde kullanılan doğrusal arama [...]
Yazan : Şadi Evren ŞEKER 1. Giriş 2. Sunucu / İstemci Mimarisi (Client /Server) 3. JAVA ile ağ programlama 4. JAVA dilinde veri iletişimi için akışların (streams) kullanımı 5. JAVA dilinde Temel bir istemci sunucu (client / server) kodlaması 6. Kodların derlnemesi ve çalıştırılması 7. Java dilinde çok lifli bir istemci / sunucu kodlaması 8. [...]
Soru: Kullanıcıdan bir sayı alarak ekrana verilen sayı boyutlarında *’lardan oluşan içi dolu bir kare kodu yazınız. Çözen : Şadi Evren ŞEKER Yukarıdaki soruyu 4 ayrı dil için (C,C++,JAVA ve C#) ayrı ayrı çözeceğim. Böylelikle okuyucu bu diller arasında mukayese yapabilecek ve bildiği bir dilden diğer dillere kolayca geçebilecektir. Çözüm: Soru, yapısı itibariyle 2 boyutlu [...]
Yazan : Şefik İlkin Serengil Temel Kriptografi işlemleri, Java Development Kit ile standart olarak gelen Crypto ve Security kütüphaneleri ile çok basite indirgenmiştir. Bu kütüphaneler, Özetleme fonksiyonlarından, blok şifrelere, açık anahtarlama altyapısından dijital imza’ya kadar birçok kriptografi tekniğinin kullanılmasına olanak sağlamaktadır. Açık Anahtarlama ile Şifreleme import java.security.*; import javax.crypto.*; public class AcikAnahtarlaSifreleme { public static [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde bir değerin aranması veya bir hedefe ulaşmak için kullanılan algoritmanın ismidir. Burada bir amaç bulunmalı ve amaca ulaşan çeşitli yollar arasından bir doğru seçim aranıyor olmalıdır. Örneğin bulmacalarda sorulan klasik iki boyutlu labirentler geri izleme algoritmaları (back tracking algorithms) biçilmiş kaftandır. Bu tip örneklerde labirentin bir ucundan başlanır [...]
Yazan : Şadi Evren ŞEKER İstatistikte sıkça kullanılan binom dağılımı ile elde edilen ve üssel ifadelerin açılımında çarpan olarak kullanılan üçgenin ismidir. Üçgen basitçe aşağıdaki şekilde inşa edilebilir. Her satır 1 ile başlayıp 1 ile biter Her değer kendi üzerindeki iki değerin toplamına eşittir 1 1 1 1 2 1 1 3 3 1 1 [...]
Yazan : Şadi Evren ŞEKER JDK kurulum paketlerini java.sun.com adresinden temin edebilirsiniz. Bu kitap kapsamında kullanılacak olan JDK, J2SE (java 2 standard edition) olarak da geçmektedir. Bu yazı yazılırken en son sürüm J2SE 6.0 update 12 olarak yayınlanmıştır. Bu isimlendirme aynı zamanda JDK 1.6.0_12 olarak da geçmektedir. Burada sık yapılan bir hata JDK yerine JRE [...]