Skip to main content

C Programlama : Yiğin İşlemleri

C Programlama ile Veri Yapıları diğer dillere oranla biraz daha emek istiyor. C makine diline daha yakın olduğu doğal olarak kodlaması zor. Ama bence C ‘de veri yapılarını kavramış bir insan diğer dillerde hiç ama hiç zorlanmaz. Sonuçta Pointer kavramı C ve C++ ‘ta karşımıza çıkıyor. Üst düzey diller olan Java, C# gibi programlama dillerinde gerçek anlamda bir pointer kavramı yok, ve işleler çok daha basit bir şekilde halledilebiliyor. Ama programcılığı gerçek manada öğrenmek istiyorsanız ve ufkunuzu genişletmek istiyorsanız en azından veri yapılarını C ‘de kodlayabilmeniz şart.

Bugün Veri Yapılarının temel konularından olan Stack (Yığın) kavramına göz atacağız. Bir yığın nedir, nerelerde kullanılır , nasıl çalışır sorularına cevap bulacak ve örnek yığın kodu ile makeleyi sonrandıracağım.
Devamını Oku

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

C Programlama : Pointer Ve Dizi İlişkisi

Göstericilerle çalışmak zordur, göstericileri  eğer programlama başlarken  iyice sindirmezseniz muhtemelen daha sonra göstericileri kullanarak bir şeyler geliştirmek oldukça zor olacaktır.  Bu yazımda göstericilere  giriş olması açısından Pointer ve dizi ilişkisi adına bir şeyler yazacağım. Öncelikle gösterici nedir , ne işe yarar ?  Gösterge değişkenler ( Pointer)  bir değişkenin adresini tutan bir değişkendir. Örneğin biz  C  Programlama dilinde

int a  =5 ;   gibi bir tanımlama yaptığımızı düşünelim.       Pointer dediğimiz değişkenler bu a değişkenin değerine ulaşmak için direk a  değişkenini adresini kullanırlar  ve bu yöntem klasik yönteme göre çok daha hızlı ve performanslıdır.    Bu yüzden özellikle bir program geliştirirken ve büyük özellikle büyük verilelerle çalışan programlar çalışırken  pointer değişkenlerini kullanırız.   Tahmin edebilirsiniz ki bu hızı kazanırken bir şeylerden feragat ediyoruz kolaylık.   Dizi değişkenlerle çalışmak  , pointerlarla  çalışmaktan daha zordur.    Pointer değişkenler bu yüzden öğrenilmesi zaman alan , yada söyle diyelim öğrenildiği zannedilen ama pratikte kullanılmadığı sürece öğrenilmeyen bir kavramdır.
Devamını Oku

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Linux’a yeniden Merhaba

En son bir Linux dağatımı kullandığımda takvimler 2009’u gösteriyordu. Aradan 3 yıl gibi bir süre geçtikten sonra birazcıkta bu dönem aldığım Operating Systems dersinin etkisiyle yeniden Linux kullanmaya başladım .  2009 yılında  kısa bir süre  Linux çekirdeğini kullanan Ubuntu işletim sistemini kullanmıştım, sonra o dönem oldukça adından söz ettiren Tübitak projesi Pardus’u denemiş fakat istediğimi pekte alamamıştım.

İlk olarak Ubuntu ‘yu sanal bir biçimde kurmak istedim, aslına bakarsak kurdumda fakat   sistemde aşırı derecede kasmalara sebep olduğunu gördüm. (Sanallaştırma yazılımı olarak bir  Oracle projesi olan Virtual Box’ı kullandım.)  Bunun üzerine  sistemime direk kurmaya karar verdim.

İlk olarak 2009’da kullandığım kullandığım Ubuntu’ya oranla oldukça farklı bir arayüzle karşılaştığımı söylemem gerek. Ubuntu adeta kabuk  değiştirmiş. Unity adını verdikleri bu yeni arayüze alışmak benim gibi yıllardır Windows kullanan birisi için ilk başta hiç kolay olmadi. Ama bir kaç gün Linux üzerine çalıştıktan sonra  bu sıkıntıyı aştığımı düşünüyorum. Arayüz ve standart kontrollere alıştıktan sonra sistemin derinliklerine yavaş yavaş inmeye başladım. Gerek Ubuntu Yükleme merkezinden olsun gerek Synapstisc  Yöneticisinden olsun  işime yarayacak paketleri  birbir indirdim.  Sistemime  Apache,Php,MysSql’ide kurduktan sonra ufak ufak Linux alıştırmalarına başladım.

Devamını Oku

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Devreler Ve Sistemler Ders Notları

İstanbul Üniversitesi Bilgisayar Mühendisliği Bölümünde Yrd. Doç Dr. Fatih Keleş tarafından verilen dersin notlarıdır. Ders daha  önceki dönemlerde Circuit Theory adıyla verilmiştir. 2012-2013 eğitim döneminde  yapılan  müfredat güncellemesinden sonra  dersin içeriğinde bir takım değişiklikler meydana gelmiştir. Notlar aşağıdaki konuları kapsar.

Devamını Oku

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Bilişim Dergi Geri Dönüyor !

İstanbul Üniversitesi Bilgisayar Mühendisliği bölümün öğrencilerinin ve  İ.Ü Bilgisayar Mühendisliği Bilgisayar Kulübü’nün desteğiyle 2008 yılında yayın hayatına başlayan ve geçen yıla kadar başarılı bir şekilde yürüyen  Bilişim Dergi   yaşadığı bir takım şansızlıkların ardından yayın hayatına yeniden başlıyor.

Bilişim Dergi  ortaya çıktığında ben henüz daha İstanbul Üniversitesi öğrencisi değildim, ama o zamanlarda dergiyi takip etme fırsatı buldum. Özellikle 2009 yılında Bilişim Dergi her ay aralıksız mükemmel sayılar yayınlıyordu bizde kendilerini internet ortamından takip ediyorduk.  2011 yılına kadar bir şekilde sayı çıkartmayı başaran dergi ondan sonra bir durgunluk dönemine girmişti ki  bu durumu farkeden bir kaç arkadaşımız harekete geçtiler. Ve  Bilişim Dergi’nin tekrar yayın hayatına başlamasına karar verildi.

Bilişim Dergi’nin  gerekli bir proje olduğunu , bölümün hareketliliği ve sinerjisine katkı sağlayacağını her platformda savunuyordum. Geçen yıldan beri  ne zaman Bilişim Dergi aklıma gelse dergini editörlüğünü yapan Ercan Zengin‘ e   yakınıyordum. Dergi için bir atak yapılması gerekiyordu , ve bu atağın içinde yer almak istiyordum .  İşte ben bu duygularla yeni eğitim öğretim  dönemine başlarken bölümden bir iki arkadaşımızın bu konu üzerinde çalıştıklarını duydum.  Bir toplantı ayarlandı ve Ercan Zengin  anlattı biz dinledik.  Toplantıda  bir takım kararlar alındı, nasıl bir Bilişim Dergi profilinin olacağı belirlendi,  özellikle bölüme yeni gelen arkadaşların bu konuya heveslendirilmesi için neler yapılabileceğinden bahsettik. Çünkü önemli olan şimdiyi kurtarmak değildi. Nitekim Bilişim Dergi zaten  zamanında oldukça başarılı olmustu, ama dergiyi çıkaran arkadaşlar özellikle okulda son yıllarına girdiklerinde yeterli vakit ayıramadılar. Muhtemelen  bizde ayıramayacağız işte bu yüzden arkamızdan gelenlerin bu konu hakkında hevesli olmaları, ve bu işin önemini kavramaları gerekiyor. Bu konuda yapılması gerekenler hakkında konuştuk.

Devamını Oku

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Algoritma Analizi Belası Üzerine

Bir mühendis ile tekniker arasında ki ince çizgiyi ayıran bir ders gösterin deseler , kendi alanım için kesinlikle ilk olarak söyleyeceğim ders Algoritma Analizi (Algoritm Analysis) olur.  Bu dönem aldığım 9 dersten sadece biri , ve nedense beni en çok korkutan derste bu ders. Bunda birazcıkta bölümün  derslerin verildiği dönemleri  değiştirmesininde etkisi var. Daha önceleri 4. sınıf dersi olarak verilen bu ders dönem 3. sınıf dersi olarak verilmekte.  Fakat bu dersi almadan önce alınması gereken ders olan Veri Yapıları dersini de biz bu dönem aliyoruz. Sıkıntıda burada başliyor. Daha arama algoritması nedir, sıralama algoritması nedir bilmeyen öğrenci bu öğrenmediği şeyleri analiz etmeye kalkınca ortalık karışıyor.  Üstelik derste  %100  İngilizce olarak verilince pek bir şey anlaşılmıyor.  Hocamız da yabancı olduğu için  anlayamadığımız yerlerin Türkçe açıklamasını da  alamıyoruz doğal olarak.  🙂

Böylesine önemli bir dersin İngilizce olarak verilmesine karşıyım. Aslına bakarsanız bu tip zorunlu derslerin İngilizce olarak verilmesine karşıyım. Ülkemizde gerek hazırlık sınıflarında olsun, gerekse İlköğretimden itibaren gördüğümüz  İngilizce derslerinde olsun verilen eğitimin kalitesi tartışılır. Tabi ki çok iyi şekilde bu eğitimi veren yerlerde vardır ama istisnalar kaideyi bozmaz.  Bizim okulumuzun hazırlık eğitimi malesef bu istisnalar bölümüne girmiyor.  Yeterli İngilizce donanımına sahip olmayan öğrenci bu tip derslerde çok zorlanıyor. Çoğu hocamız Türk olduğu için ders ingilizce dahi anlatılsa anlamadığımız yerler Türkçe olarak kısaca anlatılıyor  ama Algoritma analizi için bu geçerli değil.  Bu dönem dersi açan Savio Tse  dersi her ne kadar iyi anlatsa da dersi alan öğrencilerin bir coğu ( ki buna bende dahil ) anlatılanları anlamakta güçlük çekiyoruz. Gerek İngilizcemizin yetersizliği olsun, gerekse bir coğumuzun Veri Yapıları dersini henüz daha yeni alıyor oluşundan olsun sıkıntılar mevcut.  Kısacası zor bir dönemin en zor dersi olarak göze çarpan Algortima Analizi o kadar çok   korkuttu ki beni gördüğünüz gibi bloguma konu dahi olabiliyor.   Bu konuda yardımıma koşan tek kaynak  M.I.T’nin  Algoritma Analizi dersini Tükrçe’ye çeviren AçıkDers.Org sitesi sanırım.

Ne diyelim , Allah yardımcımız olsun.

 

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Java Programalama : Gülen Smiley

Bugün sizlere eğlenceli bir o kadarda öğretici bir uygulama paylaşmak istiyorum.  Bildiğiniz gibi Java  uçsuz bucaksız bir deniz. İstediğiniz herşeye bir çözüm bulmak Java’da mümkün. Fakat bu sonsuzluk Java’yı öğrenmeyi zorlaştırmıyorda değil. Standart Java öğrenerek Java biliyorum  diye ortada gezinen o kadarda çok insan varki. Okullarda bize öğretilen sadece Standart Java ve Nesneye Yönelik Programlama  kavramı malesef. Gerisini getirmek bize kalıyor. Java biliyorum demek için Standart Java öğrendikten sonra çok şey daha öğrenmek gerektiğini düşünüyorum ve bunun içinde çalişmalarıma devam ediyorum 🙂  Takip ettiğim kitapların bir tanesinde bölüm sonu uygulaması olarak  yapılması istenen bir soruyu paylaşmak istiyorum.

Uygulamada Java grafik arayüzünü (GUI)  kullanarak bizde bir gülen smiley yapılması isteniyor.  Tam olarak aşağıda ki fotoğrafa benzer bir çıktı üretilmemiz isteniyor.


Devamını Oku

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Java Programlama : Sayıdaki En Büyük Rakamın Kaç Defa Geçtiğini Bulma

Bugün Java için kullandığım kaynakların bir tanesinde karşımda çıkan bir  problemin çözümünü buradan paylaşmak istiyorum.  Soru tam olarak şu şekilde  :

 

Kullanıcı klavyeden bir sayı girecek , bu  girilen sayıdaki en büyük rakamı , ve bu en büyük rakamın girilen sayıda kaç defa geçtiğini bulan programı yazacağız.  Kitap bu tip problemleri sınıflandırmış. Sorulara 1,2 ve 3 yıldız şeklinde numaralar vermiş. 1 yıldızlık sorular basit, 2 yıldızlık orta seviye , 3 yıldızlık sorular ise daha çok düşünmeye sevk edici sorulardan oluşuyor. Görüldüğü üzere yazar bu soruya 2 yıldız vermiş ve çözülmeye değer bir soru olarak öngörmüş.

Bu sorunun mutlaka birden fazla çözümü olabilir, ben  çözümümü bu şekilde oluşturdum. MaxBul isimli bir sınıf oluşturdum. Bu sınıfın  maxBul ve  kactaneVar isimli iki static üyesi var. maxBul ( kücük harfle yazılan) isimli metod kullanıcının girdiği sayıda ki en büyük  rakamı bulur.  kactaneVar isimli metod ise bulunan  rakamın belirtilen rakamın o sayıda kaç tane olup olmadığını kullanıcıya mesaj eder.

Kullanıcının aşağıdaki sayıyı girdiğini varsayalım :

Lütfen bir sayı giriniz :  1245801989

Kullanıcı yukarıdaki gibi bir giriş yaptığında porgramın çıktısı şu şekilde olacaktır.

Devamını Oku

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Yeni Bir Döneme Başlarken

Uzun süren bir yaz tatilinden sonra sonunda yeniden okullu oluyoruz.  Önceki gün ders kaydımı yaptırdım ve İstanbul Üniversitesi Bilgisayar Mühendisliği bölümünün  3. sınıf öğrencisi odum . Dikey Geçiş öğrencisi olduğumdan dolayı geçen yıl 1 ve 2.sınıfı ortak almıştım ve buda benim  biraz zor zamanlar yaşamama sebep oldu. Ders çakışmalarından dolayı  bir çok dersi hiç alamadım bile ,  aldıklarımın bazılarından malesef kaldım  , muaf olmam gereken derslerden muaf edilmeyerek  bildiğim   şeyleri bir daha tekrarlamak zorunda kaldığımda  oldu 🙂 Velhasıl   özellikle 2. sınıf ikinci doneminden hiç dokunamadığım 3 dersim olsa dahi gerekli ortalamayı sağlayarak 3. sınıf oldum.

Bu tatil sürecinde okulumuzda da köklü değişiklikler oldu diyebilirim. Önümüzdeki yıllarda  İstanbul Üniversitesi Bilgisayar Mühendisliğini tercih edecekler  kesinlikle daha iyi şartlarda , daha iyi bir müfredatla eğitim göreceklerine emin olabilirler. Donanım Labaratuvarları konusunda ki sıkıntılarda giderilse  bölüm   olarak  okulun adının hakkını verecek kaliteye ulaşılacağını düşünüyorum.

Yapılan değişikliklerde kısaca bahsedelim biraz. Öncelikle eğitim müfredatının baştan sona gözden geçildiğini söyleyebiliriz.  Bir çok ders kaldırıldı, veya kredisi düşürüldü , onların yerine günümüz teknolojilerine daha rahat hükmetmizi sağlayacak dersler koyuldu. Özellikle seçmeli  ders  sayısının artması bir alanda  profesyonelleşmek isteyen öğrencilerin işine yarayacak gibi görünüyor. Özellikle son yılda ki bütün derslerin seçmeli olması sağlanmış bu şekilde öğrenci ilgi duyduğu alana yönelerek , ilgi duyduğu konulardaki dersleri alacak ve o konuda uzamanlaşma  alanında ilk adımını atmış olacak .

Bölüm bilindiği üzere en az %30 ingilizce ders içermek zorunda. Ama seçmeli derslere baktığınızda mezun olan bir öğrencinin neredeyse derslerin yarısını İngilizce olarak almak zorunda kaldığını görüyorsunuz.  Bilgisayar Bilimleri konusunda ki Türkçe kaynak kıtlığını göze alacak olursak öğrencilerin  İngilizce seviyelerini yüksek tutmaları gerektiğini özellikle 2. sınıftan sonra anlayacağını ve buna uygun bir program düzenleyeceklerini rahatlıkla söyleyebilirim. (Kendimden biliyorum 🙂 )

Benim dikkatimi çeken en güzel gelişme ise Bilgisayar Mühendisliğine Giriş dersinin kredisinin 2 y’e indirilmesi diyebilirim. Bahsedilen ders  daha önce Bilgisayar Mühendisliğine Giriş 1 , Bilgisayar Mühendisliğine Giriş 2 adıyla iki dönem şeklinde veriliyordu .  Ve bu dersin içeriği  çok fazla şeyi kapsıyordu.  Ders 2  krediye indirilerek  temel Bilgisayar bilgilerinin verilmesi sağlanmış ve  yerine Introduction to Algorithms  dersi getirilerek  öğrencilerin algoritma tasarımına daha hakim olması sağlanmış gibi görünüyor. Muhtemelen Algoritmalar  öğrenilirken  yine C dili kullanılacak . Bilgisayar Müh. Giriş 2 dersi yerine İse Introduction to Programming dersi getirişmiş. Burada ilk dönem verilen bilgileri üstüne katılarak yine C dili kullanılarak  uygulama üzerine gidileceğini düşünüyorum.  Özellikle  1. sınıfta yapılan bu köklü değişiklikler bundan sonra gelecek olan  öğrencilerin daha iyi bir Yazılımcı olabileceğinin bir göstergesi olabilir. Ülkemizde Bilgisayar Mühendislerinin genellikle piyasada yazılımcı olarak çaliştığını düşünürsek bu alınan karar oldukça yerinde diyebiliriz.

Bu değişiklerin bölümü biraz hareketlendirmesi ve hakettiği değeri görmesini sağlaması dileğiyle 🙂

 

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS