Bilgisayar Kavramlarıwww.bilgisayarkavramlari.com |
Soru: Bir listeyi alıp hızlı sıralama algoritmasına göre (quick sort algorithm) sıralayan kodu yazınız. Çözen : Şadi Evren ŞEKER Çözüm: Hızlı sıralama algoritması hatırlanacağı üzere parçala fethet (divide and conquere) yaklaşımı kullanmaktadır. Buna göre problem önce iki parçaya bölünür ve her iki parça kendi içerisinde sorun çözülene kadar parçalanır. En sonunda tek eleman kalınca problem [...]
Soru: Üç noktanın koordinatlarını alarak bu noktalardan geçen eğriyi bezier algoritması ile ekrana çizen kodu yazınız. Çözen : Şadi Evren ŞEKER Çözüm: Bezier eğrisini çizebilmek için ikinci dereceden bir denkleme ihtiyaç duyulur. Burada denklemin ikinci derece olmasının sebebi 3 nokta ile çizim yapılmasının istenmesidir. Öncelikle programımızda kullanacağımız basit temel fonksiyonları kodlayalım: İki nokta verildiğinde bu [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinin bir çalışma alanı olan bilgisayar grafiklerinde kullanılan eğri biçimidir. Bezier eğri çiziminin özelliği parametrik olarak noktalar ile çalışmaları ve verilen noktalara göre bir eğri çizmesidir. Literatürde bézier curve veya bezier eğrisi olarak geçmektedir. İsmi bu hesaplama yöntemini ilk bulan Fransız matematikçiden gelmektedir. Bezier eğrilerinin boyutlarından bahsetmek doğrudur. Buna [...]
Yazan : Şadi Evren ŞEKER Sadece teorik olarak literatürde geçen bir sıralama algoritmasıdır (sorting algorithm). Buna göre sıralanacak olan dizi şanslı bir şekilde zaten sıralı verilmiştir. Dolayısıyla dizinin sıralanmasına gerek yoktur. Hatta bu kabulü yaptığımız için dizinin sıralı olup olmadığını kontrol etmemize de gerek yoktur (ne de olsa şanslıyız J ) dolayısıyla giriş dizisi her [...]
Soru: Bir adet ikili arama ağacı (binary search tree) oluşturunuz ve bu ağaç üzerinde ssn numarası ve bir isim tutunuz. Bu bilgileri ssn numarasına göre ağaca yerleştirin ve yerleşen bu verileri içsıraya göre (inorder) dolaşan bir kod yazınız. Bu kodu kullanarak ağaçta arama yapan bir fonksiyon yazınız. Çözen : Şadi Evren ŞEKER Çözüm : Bu [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde özellikle eğitim amacıyla kullanılan bir sıralama algoritmasıdır. Algoritmanın çalışması oldukça basittir, bogosort, verilen bir diziyi sıralamak için rast gele bir dizilim üretir ve sıralı olup olmadığına bakar, şayet sıralıysa algoritma sona erer, şayet sıralı değilse rastgele olarak yeni bir dizilim elde eder, ta ki sayılar sıralanana kadar sayıları [...]
Soru: Bir öğrencinin okul numarası, ve aldığı dersler bulunur. Bir dersin ise kodu bulunur. Öğrencinin aldığı her dersin bir kodu ve öğrencinin bu dersten aldığı not bulunur. Buna göre bir öğrenci tanımlandığında aşağıda verilen not tablosuna göre bu öğrencinin ortalamasını hesaplayan bir kod yazınız. Harf Notu (4 üzerinden) A 4 A- 3.7 B+ 3 B- [...]
Soru: Sırasıyla, ekrana üç adet kırmızı, sarı, yeşilden oluşan trafik ışıklarını çiziniz, ışıklardan birini söndüren fonksiyonu, ışıklardan birini yakan fonksiyonu, ışık değiştiren fonksiyonu ve sıradaki ışığı yakan fonksiyonu yazınız. Çözen : Şadi Evren ŞEKER Çözüm fonksiyonları: Öncelikle çizim yapacağımız için dr. Scheme üzerinde draw.ss teachpack’ini yüklememiz gerekiyor: Ardından poligonu çizim için değişkenlerimizi tanımlayalım: ;;6.2.1 (define [...]
Soru: Bir poligonu ve bir sayıyı parametre olarak alan, verilen sayı kadar poligonu büyüterek iç içe çizen kodu yazınız. Çözen : Şadi Evren ŞEKER Çözüm fonksiyonları: Öncelikle çizim yapacağımız için dr. Scheme üzerinde draw.ss teachpack’ini yüklememiz gerekiyor: Ardından poligonu çizim için tanımlı noktalardan tanımlayalım: (define a (make-posn 240 240)) (define b (make-posn 250 260)) (define [...]
Soru: Saat başına 12 dolar ödenen bir firmada çalışanların fazla mesailerini bir liste halinde alıp ödenecek miktarları liste olarak döndüren fonksiyonu yazınız. Çözen : Şadi Evren ŞEKER Çözüm fonksiyonları: (define (wage h) (* 12 h)) (define (hours->wages alon) (cond [(empty? alon) empty] [else (cons (wage (first alon)) (hours->wages (rest alon)))])) Çözüm çalıştırması: (hours->wages (list 20 [...]
Soru: Bir sayı listesindeki bütün elemanların değerlerini bir arttıran kodu yazınız. Çözen : Şadi Evren ŞEKER Çözüm fonksiyonu: (define (increment-list numbers)(cond [(empty? numbers) empty][else (cons (+ (first numbers) 1)(increment-list (rest numbers)))])) Çözüm çalıştırması: (increment-list (list 1 2 3 6 7 4 3)) Açıklama: Fonksiyonun ismi increment-list olarak tanımlanmış ve bir parametre alınmıştır. Buradaki parametre “numbers” [...]
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 [...]
Yazan : Şadi Evren ŞEKER Evrimsel diller temel olarak bir doğal dilin (natural language) geçirmiş olduğu evrimi ve bu evrimin dilde yaptığı değişiklikleri inceler. Evrimsel dil çalışmalarının bilgisayar bilimlerindeki yeri, dilbilim ve doğal dil işleme ile ilgilenen insanların dillerdeki bu değişimleri bilgisayar dünyasına uygulama merakıyla başlamıştır. Bu anlamda bilgisayar bilimleri için evrimsel diller literatürde, yapay [...]
Yazan : Şadi Evren ŞEKER DOM yani İngilizcedeki Document Object Modelling veya Türkçe karşılığı ile Doküman Nesne Modellemesi basitçe bir işaretleme dili (genellikle HTML veya XML gibi bir dil) için etiketlere (tags) erişmeyi sağlayan bir erişim yöntemidir. Günümüzde SAX ve DOM en yaygın olarak kullanılan erişim yöntemledir. SAX daha çok tek seferde işlenen ve ardışık [...]
Yazan : Şadi Evren ŞEKER Firmware kelimesi, İngilizcede iki kelimenin birleşmesinden oluşur. Firm anlam olarak şirket ware ise mal anlamına gelir. Örneğin yazılım kelimesinin karşılığı olan software Türkçede tam çevirim ile yumuşak mal anlamına gelebilir. Burada ware kelimesinin zaman içerisinde (software kelimesinin yaygınlaşması ile) giderek yazılım anlamına kayması söz konusudur. Yani yazılım dünyasında kullanılan çoğu [...]
Yazan : Şadi Evren ŞEKER Matematiksel olarak iki tam sayının ortak çarpanlarının (common factors) çarpımından oluşan (common multiple) en küçüğünü bulma işlemidir. Bu işlem için öncelikle sayıların çarpanlarını bulmak sonra bu çarpanlardan ortak olan en küçüğünü almak gerekir. Örneğin 60 sayısının çarpanları (factors) : 5 3 2 2 olarak yazılabilir yani 60 = 5 x [...]
Yazan : Şadi Evren ŞEKER Matematiksel olarak iki tam sayının çarpanlarına ayrıldığında, iki tam sayıyı da tam olarak bölen en büyük sayıya verilen isimdir. Sayılar üzerinden anlatmak gerekirse 60 ve 72 sayıları için 12 hem 60 hem de 72′yi kalansız bölen (tam bölen) en büyük sayıdır. Bu sayıyı bulmak için iki tam sayı da öncelikle [...]
Yazan : Şefik İlkin SERENGİL Sezar şifresi (Ceaser’s cipher) gibi mono alfabetik şifreleme yöntemlerinin frekans analizi (frequency attack) karşısında aciz kalmasının karşısında homofonik yer değiştirme şifresinde bu zaaf kısmen de olsa ortadan kalkmaktadır. Şifreleme yönteminin temel çalışma prensibi şifrelenecek metnin ait olduğu alfabedeki harflerin kullanım sıklıklarına dayanmaktadır. Her bir harf frekansına en yakın tam sayı [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde, veri güvenliği konusunda kullanılan ilkel bir yer değiştirme şifrelemesidir (transposition cipher). Sistem çalışma şekli açısından simetrik şifrelemedir (symmetric cipher) ve iki tarafında elinde doğru anahtar bulunduğunda (gönderen ve alan) çalışmaktadır. Basitçe bir çubuğun etrafına bir mesajın sarılması ile elde edilen mesaj şifreli mesajdır. Yukarıdaki şekilde sarmal şifrelemesi ile [...]
Yazan : Şadi Evren ŞEKER Veri güveliği konusunda kullanılan kodlama (encoding) algoritmalarından birisidir. Basitçe bir bilginin farklı semboller ile gösterilmesi işlemidir. Bu semboller alfabedeki harflerin büyük/küçük sıralanması ve sayılardan oluşur. Bir base64 sisteminin kullandığı semboller aşağıda verilmiştir: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ Yukarıda toplam 64 sembol bulunmaktadır. Dolayısıyla her sayıya bir karşılık gelir. Örneğin 0 sayısal değeri için A [...]
Yazan : Şadi Evren ŞEKER Aslında bir betik dili (scripting language) olan ve bu yüzden bir yorumlayıcısı (interpreter) bulunan python, özellikle dilbilim ve veri güvenliği alanlarında yoğun olarak kullanılmaktadır. Özellikle Linux ve Unix varyantı işletim sistemlerinde sistem yöneticileri (administrator) tarafından baz işleri hızlandırmak amacıyla Perl, Php veya bash gibi betik dilleri (scripting languages) yoğun olarak [...]
Yazan : Şadi Evren ŞEKER Pardus kullanan ve bilgisayarına bloodshed.net sitesinden dev-cpp’nin linux versiyonunu indirerek kurmaya çalışan herkes gibi ben de libqt.so.2 veya libqtintf.so dosyası ile ilgili paylaşım (share) veya bulunamama hatası aldıktan sonra problemimi wine ile çözdüm ve bu yazının benzer durumdaki kişilere faydalı olacağını düşünüyorum. Ne yazık ki linux sürümünü çalıştıramadım ve çalışacağını [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde ağ güvenliğinde (network security) kullanılan terimlerden birisidir. Buradaki güvenlik kelimesi saldırılara karşı sağlanan güvenlikten daha çok ağdaki problemlere karşı sağlanan güvenlik anlamındadır. Yazının burasında Güvenlik kelimesine biraz açıklık getirmek istiyorum. İngilizcedeki 5 ayrı kelimeyi Türkçede tek bir güvenlik kelimesi ile karşılamamız anlam karmaşasına yol açıyor yani security, trust, [...]
Yazan : Şadi Evren ŞEKER Bir geometrik seri basitçe elamanlarının üssel arttığı seridir. Örneğin aşağıdaki seriyi ele alalım: a+ax+ax2+ax3+ … Serinin sonsuza kadar gittiğini düşünecek olursak ve terimler arasında bir öncesine göre üssel artış söz konusuysa bu tip serilere geometrik seri ismini verebiliriz. Yukarıdaki serinin çözümü için aşağıdaki yol izlenebilir: a(1+x+x2+x3+…) şeklinde paranteze alabiliriz. İçerideki [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde özellikle yazılım mühendisliği (Software engineering) konusunda kullanılan ve bileşen (component) ve mesaj (message) temelli yazılım geliştirmeyi amaçlayan bir üsluptur. C2 tasarım kültüründe yazılım bileşenler şeklinde ele alınır ve yazılımı oluşturan bu bileşenler üzerinden bir ağ (network) çizilir. Bu ağda bileşenler arası haberleşme gösterilir. Bu sayede tasarlanan bir bileşenin [...]