C/C++

fork fonksiyonu ve işlem çatallanması

Yazan : Şadi Evren ŞEKER Bu yazının amacı, bilgisayar bilimlerinin bir çalışma alanı olan işletim sistemlerinde sıklıkla kullanılan ve yeni bir işlem (process) oluşturmaya yarayan fork() ve exec() fonksiyonlarını açıklamaktır. Bu fonksiyonlar C programlama dilleri tarafından desteklenmekte ve unistd.h dosyasının içinde bulunmaktadır. Örnek bir kod verip çalışmasını açıklayarak konuyu anlatmaya başlayalım: #include <unistd.h> /* fork [...]

Şadi Evren ŞEKER tarafından, 12/03/2012 tarihinde yazıldı. | C/C++, işletim sistemleri | 1 yorum var

Callback (Geriçağrım)

Yazan : Şadi Evren ŞEKER Bu yazının amacı, bilgisayar programlama dillerinde kullanılan bir yaklaşım olan geri çağırım (call back) kavramını açıklamaktır. Bir programlama dilinin, yapısal programlama dili (structured programming language) olabilmesi için aşağıdaki üç özelliğe haiz olması gerekir: Kod bloğunun koşula bağlı olabilmesi : Klasik programlama dillerindeki if/else yapısı Kod bloğunun tekrar ettirilebilir olması : [...]

Şadi Evren ŞEKER tarafından, 11/11/2011 tarihinde yazıldı. | C/C++, Programlama Dilleri | A yorum var

Lisan-ı Kaime (Dillerde Dik Açı, Orthogonal Languages)

Yazan : Şadi Evren ŞEKER Özellikle bilgisayar programlama dillerinde kullanılan bir terimdir. Buna göre dillerde bulunan özelliklerin birbirine dik olması, yani birbirinden bağımsız olması kast edilir. Kelime olarak, yöneylerin (vectors) dikliğinden esinlenilmiştir. Vektörlerin birbirine dik olması, aralarında ilişki bulunmaması (birbirine iz düşümünün sıfır olması) anlamına gelmektedir. Şayet bir dilde bulunan özellikler arasında da ilişki bulunmuyorsa, [...]

Şadi Evren ŞEKER tarafından, 14/09/2011 tarihinde yazıldı. | C/C++, Derleyiciler, Programlama Dilleri | A yorum var

Örtüşen Alt Problem (Overlapping Subproblem)

Yazan :Şadi Evren ŞEKER Bilgisayar bilimlerinde, özellikle özyineli (recursive) problemlerde, problemin bir kısmının tekrar edilmesi durumudur. Örneğin, klasik bir problem olan fibonacci sayıları örneğinde, örtüşen altproblem bulunmaktadır. Fibonacci serisinin 4. terimini hesaplamak isteyelim ve bunun için aşağıdaki fonksiyonu yazmış olalım: Matematiksel olarak : fib(0) = 1, fib(1) = 1 ve fib(n) = fib(n-1)+fib(n-2) Programlama dillerinde: [...]

Poisson Dağılımı (Poisson Distribution)

Yazan : Şadi Evren ŞEKER Bilgisayar bilimleri de dahil olmak üzere pek çok mühendislik ve istatistiksel uygulamada kullanılan bir dağılımdır. İsmini, kendi olasılık teorisini yayınlayan Sim`eon Denis Poisson’un soy isminden almaktadır ve Türkçede, “pvasson” kelimesinin okunması şeklinde telaffuz edilmektedir. (neden bilmiyorum ama ben de dahil pek çok kişi bilmeden bu dağılımı İngilizcedeki “poison” gibi telaffuz [...]

Şadi Evren ŞEKER tarafından, 08/06/2011 tarihinde yazıldı. | Bilgisayar Matematiği, C/C++ | A yorum var

Normal Dağılım (Normal Distribution, Gauss Distribution)

Yazan : Şadi Evren ŞEKER Bu yazının amacı, bilgisayar bilimlerinde, çeşitli konularda geçen normal dağılımı anlatmaktır. Literatürde, normal dağılım (normal distribution) veya Gauss dağılımı (Gauss distribution) olarak da geçen konu kabaca çan eğrisi olarak tanımlanabilir (bell curve).   Yukarıdaki şekil, normal dağılımın grafiğidir ve aşağıdaki formülle hesaplanır (Gauss fonksiyonu): Yukarıdaki formül, aynı zamanda gauss dağılımının, [...]

Şadi Evren ŞEKER tarafından, tarihinde yazıldı. | Bilgisayar Matematiği, C/C++ | A yorum var

Bin Packing (Kutulama Problemi)

Yazan : Şadi Evren ŞEKER İyileştirme problemleri açısından klasik bir örnektir (optimisation problems). Problem basitçe bir kutunun içerisine en az boş alan bırakarak, eşyaların en iyi şekilde nasıl yerleştireceği olarak düşünülebilir. Aslında problemi boyutlara göre incelersek aşağıdaki şekilde bir liste yapılabilir: Tek boyutlu kutulama (1D bin packing) :Bu problemde amaç bir çizgi veya hat gibi [...]

ctype.h

Yazan : Şadi Evren ŞEKER Bu yazının amacı C kütüphanelerinden ctype.h kütüphanesini açıklamaktır. Kütüphane kabaca C dilinde bulunan karakterler (char) üzerinde işlem yapmaya imkan sağlar. Kütüphane ismi de buradan gelmektedir ( char + type = ctype) Amacı bir karakterin tipini algılama veya değiştirmektir. Kütüphane karakterler üzerinde işlem imkanı sağladığı için dizgiler (string) üzerinde yapılan işlemler [...]

Şadi Evren ŞEKER tarafından, 29/05/2011 tarihinde yazıldı. | C/C++ | A yorum var

Dosyayı Tersten Basan Kod

Yazan : Şadi Evren ŞEKER Gelen bir soru üzerine, C dilinde bir dosyanın içeriğini tersten ekrana basan kodu yazıp sitede yayınlıyorum. Öncelikle algoritmamızı inşa edelim. Ters almak gibi işlemler yapı olarak özyineli (recursive) fonksiyonlara çok uygundur. Genelde stack (yığın) yapısının kullanıldığı özyineli fonksiyonlar bilgiyi tutma ve ters çevirme (son giren ilk çıkar (LIFO) algoritması) için [...]

Şadi Evren ŞEKER tarafından, 26/04/2011 tarihinde yazıldı. | C/C++, Kod Örnekleri, veri yapıları | 5 yorum var

Floyd Üçgeni (Floyd’s Triangle)

Yazan : Şadi Evren ŞEKER Robert Floyd tarafından tasarlanan bir sayı üçgenidir. Üçgen, her satırda, o satır kadar elemandan oluşan ve ardışık sayma sayılarının satırlara dağıtılması ile şekillenen, sağa yaslı bir dik üçgen olarak tanımlanabilir: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Yukarıdaki şekilde üçgenin ilk 5 [...]

Şadi Evren ŞEKER tarafından, 14/02/2011 tarihinde yazıldı. | Bilgisayar Matematiği, C/C++, Programlama Dilleri | 1 yorum var

Dekker’s Algorithm

Yazan: Şadi Evren ŞEKER Bilgisayar mühendisliğinde, birbirinde ayrı işlerin kontrolü için kullanılır. Aynı anda çalışan işlerin birbirinden tamamen ayrı olması için (mutually exclusive), bazı kontrollerin yapılması gerekmektedir. Algoritma bu problemi aşağıdaki şekilde çözer. Yukarıdaki kodda görüldüğü üzere, kod üç kısımdan oluşmaktadır: Bariyer Kritik alan Bitiş Bariyer kodunda, işlem (process), diğer çalışmakta olan ve o anda [...]

Şadi Evren ŞEKER tarafından, 06/01/2011 tarihinde yazıldı. | C/C++, işletim sistemleri | A yorum var

Dairesel Bağlı liste ile Önceliğe sahip hasta sırası takibi

Yazan : Şadi Evren ŞEKER Siteye gelen bir soru üzerine bu yazıyı ekliyorum. Öncelik sırası (priority queue), kullanarak gelen hastaları verilen önceliğe göre dairesel bir bağlı listeye (linked list) yerleştiren ve ardından sırayla gelen hastaları listeden alan bir kodu C++ dilinde yazalım. İlk olarak bir hastanın tanımını yapan sınıfı aşağıdaki şekilde kodluyoruz: Bu tanıma göre [...]

Şadi Evren ŞEKER tarafından, 30/12/2010 tarihinde yazıldı. | C/C++, veri yapıları | 12 yorum var

Levenshtein Mesafe Algoritması (Levenshtein Distance)

Yazan: Yrd. Doç. Dr. Şadi Evren ŞEKER İki dizilim arasındaki benzerliği derecelendirmek için kullanılır. Pratikte arama sonuçlarında kelimeler arasındaki benzerliği derecelendirmek için kullanılmaktadır. Basitçe, iki dizi, iki kelime, iki cümle gibi varlıklar arasındaki değiştirme ve ekleme işlemlerini tutar. Örneğin Oyun- Ayan kelimeleri arasındaki mesafe 2 ‘dir çünkü ilk ve ikinci o harfleri a harfi ile [...]

Preprocessor (Ön işlem)

Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde, işlemcideki çalışmadan önce yapılacak işleri ifade etmek için kullanılan bir terimdir. Çoğu programlama dili açısından, programın çalışması aşamasına geçilmeden önce (run-time) yapılacak işleri belirtir. Genellikle bir betik (macro) şeklinde kayıtlı olarak dosyada duran ve programın derlenmesi aşamasından (compile time) önce veya sonra, ama çalıştırılmadan önce yapılan işleri ifade [...]

Şadi Evren ŞEKER tarafından, tarihinde yazıldı. | C/C++, Derleyiciler, Programlama Dilleri | A yorum var

Programming Concepts Dersi 2. Vize çözümü

Yazan : Şadi Evren ŞEKER Vize soruları ve çözümleri aşağıda verilmiştir: Soru 1) Kullanıcıdan bir sayı okuyarak, ekrana, aşağıdaki şekilde, verilen boyutlarda bir kare matrisin bütün elemanları 0 ve sadece ortadaki elemanları 1 olan bir artı yazdırınız. (boyut çift sayı ise, artı iki sütun ve satırdan, tek sayı ise tek satır ve sütundan oluşabilir) Örneğin [...]

Şadi Evren ŞEKER tarafından, 20/12/2010 tarihinde yazıldı. | C/C++, Sınavlar | A yorum var

Nesne Yönelimli Programlama Dersi Quiz Çözümü

Yazan : Şadi Evren ŞEKER Quiz soruları ve çözümleri aşağıdaki şekildedir: Bir oylama için program yazmanız isteniyor. Oylamaya katılan 5 aday bulunuyor ve bu adayların numarası (1′den 5′e kadar bir sayı) oy pusulasına yazılarak oy kullanılıyor. Programınızda 10 adet oyu okuyup ekrana adayların aldıkları oy miktarını basan bir program yazınız. Kullanılan oyun 1-5 arasında olmaması [...]

Şadi Evren ŞEKER tarafından, 07/12/2010 tarihinde yazıldı. | C/C++, Kod Örnekleri, Nesne Yönelimli Programlama, Sınavlar | A yorum var

Dosya ve Bağlı Liste Uygulaması

Yazan: Şadi Evren ŞEKER Gelen bir soru üzerine (Ayşenur Doğan sormuş), iki farklı dosya okuyup, okunan dosyalardaki verileri iki farklı bağlı listeye koyan kodu yazmaya çalışalım. Öncelikle bağlı listemizin düğüm yapısını tanımlayalım. Tek yönlü bir bağlı liste işimizi çözecektir. Dolayısıyla sadece next isimli bir gösterici (pointer) koyarak her düğümün (node) bir sonraki düğüme bağlanmasını sağlıyoruz. [...]

Şadi Evren ŞEKER tarafından, 06/12/2010 tarihinde yazıldı. | C/C++, Kod Örnekleri | 31 yorum var

2 Boyutlu Dizi İçerisine Sarmal Seri Girişi

Yazan: Şadi Evren ŞEKER Bu yazının amacı, bir C sorusunun çözümünü açıklamaktır. Sorumuz basitçe n x n boyutlarındaki bir matrisin (soruyu basitleştirmek için n sayısını tek sayı olarak kabul edeceğiz) içerisine aşağıdakine benzer şekilde ardışık sayıları sarmal olarak yerleştirmek. Örnek 3×3 boyutlarındaki matris: 1 2 3 8 9 4 7 6 5 5×5 boyutlarındaki örnek [...]

Şadi Evren ŞEKER tarafından, 04/12/2010 tarihinde yazıldı. | C/C++, Kod Örnekleri, Sınavlar | A yorum var

Nesne Yönelimli olarak Tic Tac Toe Oyunu

Yazan : Şadi Evren ŞEKER Bu yazının amacı, tictactoe oyununu nesne yönelimli olarak kodlamak ve bu sırada, aşağıdaki konuları açıklamaktır. Nesnelerden oluşan bir dizi kullanımı (Object Array) Kapsülleme (Encapsulation) İstisna yakalama (Exception Handling) Kodumuz basitçe, oynanan her hamleyi 3×3 boyutlarında, iki boyutlu bir dizide tutacaktır. Ayrıca oyunun kazanılması durumunda bir istisna oluşturulacak ve bu istisnanın [...]

Şadi Evren ŞEKER tarafından, 30/11/2010 tarihinde yazıldı. | C/C++, Kod Örnekleri | A yorum var

Nesneye Yönelik Programlama dersi vize çözümü

Yazan : Şadi Evren ŞEKER Okan Üniversitesi, bilgisayar mühendisliği bölümü, nesneye yönelik programlama dersinin vizesinde sorduğum soru aşağıdadır. Aşağıda verilen tanımlara uygun olarak, nesne yönelimli bir tasarım yapınız. Tasarımınızın sınıf diyagramını (sınıflar arası ilişkileri) bir şekilde çizerek gösteriniz (çizim sırasında ilişkileri belirten semboller kullanıyorsanız bu sembolleri açıklayınız). Tasarımınıza uygun C++ dilinde kodunuzu yazınız. Bir havayolu [...]

Şadi Evren ŞEKER tarafından, 10/11/2010 tarihinde yazıldı. | C/C++, Sınavlar | A yorum var

Sınıf Prototipi (Class Prototype)

Yazan : Şadi Evren ŞEKER C++ dilinde, bir sınıfın tanımlanmasından önce kullanılması gerektiğinde, bu sınıfın prototipinin tanımlanması gerekir. Bu durumu aşağıdaki örnek üzerinden inceleyerek anlamaya çalışalım. Yukarıdaki kodda, A ve B isminde iki adet sınıf tanımlanmıştır. Ayrıca bu sınıfların kullanıldığı bir adet main fonksiyonu bulunmaktadır. A sınıfı ve B sınıfı özdeş olarak bir integer değişken [...]

Şadi Evren ŞEKER tarafından, 02/11/2010 tarihinde yazıldı. | C/C++ | A yorum var

Programming Concepts Vizesi Çözümleri

Yazan : Şadi Evren ŞEKER Okan Üniversitesi Meslek Yüksek Okulunda vermekte olduğum Programming Concepts sınavı soruları ve çözümleri aşağıdaki şekildedir. Write a C code to read the age of user and print it back. (10 points) Write a C code, reads the ages of students in a class until -1 is inserted by user. Calculate [...]

Şadi Evren ŞEKER tarafından, 01/11/2010 tarihinde yazıldı. | C/C++ | A yorum var

Permutasyon Algoritması

Yazan : Şadi Evren ŞEKER Bu yazıyı Fatih Bey’in sorusu üzerine siteye eklemeye karar verdim. Fatih Bey’in sorusunu alıntılıyorum: Hocam merhabalar bir soru sormak icin rahatsız etmiştim sizi,Bir fonksiyonumuz olsun ve parametre olarak zarSayisi alsin ve bu fonksiyon zar sayısına gore olası tum sonucları(zarların permutasyonunu ekrana bassın).ornegin zar sayısı 2 ise asagıdaki gibi sonuc elde [...]

C++ dilinde üzerine bindirme

Yazan : Şadi Evren ŞEKER Bu yazının amacı, C++ dili için fonksiyon üzerine bindirme (function overriding veya method overriding) konusunu açıklamaktır. Üzerine bindirme işlemi, basitçe aralarında miras (inheritance) ilişkisi bulunan iki sınıf için kullanılabilir. C++ dilindeki, nesneler arasında kurulan bu ilişki modeli hakkında daha detaylı bilgi için, bu bağlantıya tıklayabilirsiniz. Öncelikle iki sınıf tanımlayıp bu [...]

C++ üzerinde çok şekillilik

Yazan : Şadi Evren ŞEKER C++ programlama dili, nesne yönelimli olmasından dolayı çok şekillilik (polymorphism) özelliğini destekler. Çok şekillilik (polymorphism) bir işin farklı şekillerle yapılabilmesidir. Örneğin bir metodun farklı şekillerde çağrılabilmesi, çok şekillik özelliği ile mümkündür. Bu yazıda, metotların ve işlemlerin (operators) üzerine yüklenmesi (overloading) anlatılacaktır. Amacımız bir fonksiyonu farklı şekillerde çalıştırabilmektir. Nesne yönelimli özelliği [...]

Şadi Evren ŞEKER tarafından, 08/10/2010 tarihinde yazıldı. | C/C++, Nesne Yönelimli Programlama | A yorum var