Academy Dersleri üzerine : Bir “Academy” Günlüğü

Bu güne kadar birinci sınıftaki arkadaşlara bazı konularda elimden geldiğince yardım etmeye çalıştım, bunların çoğunluğu Academy Dersi olarak görünse de bu dersler esnasında Bilgisayar Mühendisliği Öğrencisi Olma durumuyla ilgili de iki senelik de olsa  tecrübelerimi paylaştım. Fakat bunları hiç yazıya dökmediğimi farkettim , hem  bir öz değerlendirme olması hem de dökümanların size ulaşması açısından böyle bir yazı yazmayı uygun gördüm.

C Programlama derslerini benim vermemdeki amaç en iyi bilen olduğum için değil. Böyle bir iddaam da olmadı hiç bir zaman. Elektrik derslerinde bahsettiğim üzere Academy Dersleri tamamen bir gönüllük işidir ve bir çıkar amacı taşımaz. Üst sınıfların alt sınıflarla ilgilenmesi(sadece ders anlamında değil)  fikri ve uygulaması bizim birinci sınıf olduğumuz dönemde kulüp başkanımız da olan Abdullah Dağlı ‘nındır. O dönemde KTUBBT olarak C dersleri vermekteydi. Ben ve bir çok arkadaşım da beklenden fazla yararlandık bu derslerden. Benim dersi vermeye gönüllü olmamdaki temel neden de bize sağlanan bu imkandan bizden sonra gelenlerin de faydalanabilmesi ve bu işin böyle devam etmesiydi. Nitekim öyle olması için de çalışıyorum, çalışıyoruz. Tek beklentim bu dönem sıralarda oturan arkadaşlardan en az bir kişinin seneye perdenin önünde  “for döngüsü şurdan, ifler şurayaaaa!! ” nidalarıyla yırtınmasıdır :))

Tarihini anlattıkktan sonra.. Genel bir değerlendirmeyi bu yazıda yapmak yerine bu günü anlatmak isterim. C Programlama derslerine başlayalı 3 hafta oldu ve İstanbulda olmam sebebiyle bir haftalık boşluktan sonra bu gün ikinci dersimizi yaptık. Alıştığım üzere ilk dersteki kalabalık yoktu karşımda. Ama biraz erken de olduğunu düşünüyorum 10 kişi kalmak için 🙂 Neyse , samimi olacaksam da az kişi olması benim biraz da işime gelir açıkçası. Çünkü geçtiğimiz dönem ilk Elektrik dersindeki 60 kişi benim daha önce hiç bulunmadığım bir durumda bulunmamı sağlamıştı. Topluluk önündeki kişi olmak. Çok büyük sıkıntımdı ki bu dersler sayesinde biraz yenmeye çalıştım. Elektrik dersine C kadar hakim olmadığım için tecrübesizliğim ve heyecanım orda daha da ortaya çıkardı , şimdi çaktırmıyorum(!) 🙂

Bu gün diyordum yine dağıldı konu… Bu gün dediğim gibi az kişi vardı ve benim bu derslerde yeni uygulamayı düşündüğüm sistemi uyguladık. Konu anlatmak yerine bu güne kadar anlatılan C kavramlarını nerede nasıl kullanırız nasıl hinlikler yaparız onları göstermeye çalıştık. İlk olarak meşhur kara ekranımızda Windows’ta başta olmak üzere çoğu yerde gördüğümüz Yükleniyor animasyonu yaptık. Bu animasyona bir dosya kopyalarken vs. sıkça rastlarsınız. Ondan sonra ufak bir satır ekleyerek bu animasyonu Windows’un açılırken görüntülenen animasyonuna çevirdik , ondan sonra da Dizi kullanmadan, girilen 10 sayının en büyüğünü veren basit bir programın algortimasını ve akış diyagramını beraberce tasarlayıp koda döktük.

Benim görüşümce tam istediğim çalışma ortamı oluştu ve iyi bir birbuçuk saat geçirdik. Bana bile beklediğimden fazla katkısı oldu. Görülmemiş konular olduğu için bir problemin çözümünde o konuyu dışarıda bırakıp kısıtlandığınızda yeni çözümler düşünürsünüz ve bu sizi yaratıcılığa biraz daha yaklaştırır , bu gün de tam o oldu 🙂 Katılan arkadaşlara teşekkürler , 10 Mart günü aynı saatte görüşmek üzere , bu günün dosyaları hemen şurada , iyi çalışmalar 🙂

Bu arada, En büyük sayıyı çözen programa, en büyük sayıyı ve ondan sonraki en büyük ikinci sayıyı bulma özelliğini “Dizi Kullanmadan ve mümkünse akış diyagramını vererek çözene çok ufak bir hediyem olacak ” 🙂 , kolay gelsin.

Animasyon’u indirmek için tıklayın( Visual Studio 10 projesi )

En büyük sayıyı for ve if ile çözen programı indirmek için tıklayın.

iyi çalışmalar.

Ersin YILDIZ – 04.03.11

C ile Programlama Ders 2 – Veri tipleri ve değişkenler

Değişkenler C'nin herşeyidir.

Gecenin bu vaktinde uyku tutmayınca ara verdiğim derslere devam edeyim dedim. Bu aralar uykumu kaçıran çok şey var 🙂 Ucundan yakalayabilirsem ne ala , olmadı sabah ezanını dinliyoruz… neyse konumuz değil , C  🙂

Önceki dersimizde basit bir giriş yapmıştık , bu derste de C’de vazgeçilmezimiz olan veri tipleri ve değişkenlerden bahsedeceğiz biraz.

C dilinde her veri türü için bir veri tipi belirlenmiştir. Ne kullanacaksanız bellekten o kadarı için alan istersiniz ki bu belleği verimli kullanması açısından C’nin çok önemli bir özelliğidir. Örneğin karakterler bellekte 1 byte ile saklanabilmektedir. Karakterler için özel bir veritipi hazırlanmış olmasaydı her karakter için 8 byte alan ayrılacaktı ve 7 byte boşa gitmiş olacaktı .. ( Çok akıllıca )

C dilinde veri tipleri temelde 4 tanedir fakat özel amaçlı kullanımları için 3 tane de niteleyici kullanırlar.  Veri tiplerinin bellekte işgal ettiği  alan sabittir. Örneğin tam sayı değeri tutan int veri tipi bellekte 4 byte işgal etmektedir. Bazı durumlarda 4 byte ile tutulabilecek sayıdan büyük sayılarla işlem yapılması gerekebilir. Böyle durumlarda int veri tipinin önünde long niteleyicisi getirilir ve 8 byte’lık bir bellek alanı tahsis edilmiş olur. Öncelikle bunların bir tablosunu vereyim sonra açıklamasını yapalım :

Veri Tipi ve Niteleyici Açıklama Boyutu
char Tek bir karakter tutan veritipidir ayrıca -128 ile 128 arasında sayısal değer alabilir 1 byte
unsigned char Tek bir karakter tutan ve 0-255 arasında değer alabilen veri tipidir 1 byte
short int Kısa tamsayılar için 2 byte
unsigned short int Pozitif kısa tamsayılar için 2 byte
int Tam sayı tutan veri tipi 4 byte
unsigned int Pozitif tamsayı tutan veri tipi 4 byte
long int uzun tamsayılar için 8 byte
unsigned long int uzun pozitif tamsayılar için 8 byte
float kayan noktalı sayılar için 4 byte
double kayan noktalı sayılar için ( + ve -) 8 byte

Char veri tipi : Programlarınızda kullanacağınız karakterlerin bellekte depolanmasını sağlayan veri tipidir. 1 byte ile bellekte saklanır. Tanımlanması ” char degiskenadi ” şeklindedir. getch() veya scanf() gibi fonksiyonlarla değeri belirlenebilir.

int veri tipi : Tamsayılarla işlem yapılması int tanımlamasını gerektirir. Negatif ve pozitif sayıları depolayabilirler.  Eğer programınızda sadece pozitif tamsayılar kullanıyorsanız unsigned int tanımlaması size sayının üst sınırını artırma olanağı sunar. Yani negatif kısım için ayrılmış olan 2 byte’ı da kullanır ve 2 üzer 4×8 sayısına tekabül eden bir üst sınırlı sayı kullanabilirsiniz. Tanımlaması ” int degiskenadi; ” şeklindedir. Niteleyicileri kullanmak bellek tasarrufu sağlar. Küçük tamsayılarla işlem yapan bir programınız varsa short int kullanmak gibi..

Diğer veri tipleri için kaynak kitaplarınıza göz atabilirsiniz , veya aşağıdaki kaynak bağlantılara da göz gezdirebilirsiniz…

DEĞİŞKENLER : Veri tiplerinden sonra adı girilerek oluşturulan ve değeri değişebilen bellek alanlarıdır aslında. Siz bir değişken tanımlaması yaptığınızda, o veri tipinin boyutu kadar bir alan bellekte o değişkene tahsis edilir. Değişkenler tanımlanırken seçim programcıya aittir.

Örnek değişken tanımlamaları şöyle olabilir :

int hezarfen;

int sayi = 10;

char bas_harfi;

char degisken = 'e';

Görüldüğü gibi değişkenlere istediğimiz adı verebiliyoruz. Tabi C’nin korumaya aldıklarının haricinde 🙂  Aşağıdaki anahtar kelimeleri değişken adı olarak kullanamazsınız :

auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while

Bunların haricinde değişken tanımlamalarında TÜRKÇE Karakter kullanamazsınız.

Değişken tanımlamaları sayıyla başlayamaz.  int 12degisken;  tanımlaması hatalı bir tanımlamadır. Ama int degisken1;  veya int deg12isken ; şekillerini kullanabilirsiniz.

Değişkenlere tanımlandığı anda değer verebilirsiniz örneklerde olduğu gibi. Burada karakterlere değer verirken tırnakların kullanıldığına dikkat edin. Örnek bir programla bu anlatımımızı bitirelim :

Programda sizeof(); fonksiyonu yabancı gelecektir. Bu fonksiyon parantez içindeki değişkenin byte olarak değerini veren bir fonksiyondur.

#include <stdio.h>

#include <conio.h>

main()
 {
 printf( "char           : %d baytn", sizeof(char));
 printf( "short          : %d baytn", sizeof(short));
 printf( "int            : %d baytn", sizeof(int));
 printf( "long           : %d baytn", sizeof(long));
 printf( "unsigned char  : %d baytn", sizeof(unsigned char));
 printf( "unsigned short : %d baytn", sizeof(unsigned short));
 printf( "unsigned int   : %d baytn", sizeof(unsigned int));
 printf( "unsigned long  : %d baytn", sizeof(unsigned long));
 printf( "float          : %d baytn", sizeof(float));
 printf( "double         : %d baytn", sizeof(double));
 printf( "long double    : %d baytn", sizeof(long double));

getch();

return 0;

}

Bu kodda, kullandığınız derleyicide veri tiplerinin kaç byte kabul edildiğini de görmüş olursunuz.  printf’in tırnaklarından sonra bir fonksiyonun kullanabildiğine dikkatinizi çekmek isterim. Tırnak sonrasında sadece değişken kullanılacaktır diye bir kural yoktur 🙂

Bu dersimiz de bu kadar ,  saat de geç oldu zaten. Umarım işinize yarar 🙂

Ersin YILDIZ

Şubat 2011- Trabzon

Yardımcı kaynak : http://www1.gantep.edu.tr/~bingul/c/index.php?ders=2#02


C ile programlama Ders 1 – Giriş

Merhaba C :)Merhaba arkadaşlar , bu yazımdan itibaren C dili ile programlama derslerimize başlıyoruz. Umarım yararlı olur.

C’nin tarihi, derlenme aşamaları, artıları eksileri konularından bu yazımda bahsetmiyorum. Bu tür bilgileri çok çeşitli kaynaklardan edinmek mümkün. Bu yazımda çok basit bir C kodunu yazıp üzerine biraz konuştuktan sonra C dilinde kullanılan değişkenlerden bahsedeceğiz.

Kodlara geçmeden önce henüz derleyiciniz yoksa başlangıç için Dev C++ programını:

seçeneklerinden birini seçerek indirin. Derleyicinin Türkçe dil desteği de bulunuyor. Eğer MSDNAA üyeliğiniz varsa Microsoft Visual Studio’nun son sürümünü indirerek de program yazmaya başlayabilirsiniz.

Evet isterseniz şimdi temel bir C kodunu yazalım ve satır satır yorumlayalım :

 #include <stdio.h>

int main (void) {

printf ( " ilk c programiniz! " ) ;

return 0;

} 

Bu kodu derlediğimizde göreceğiz ki ekranda ” ilk c programiniz” yazacaktır. Dikkat ederseniz Türkçe karakter kullanmadım. C dili Türkçe karakterleri desteklemiyor ne yazık ki. C dili sadece ASCII koddaki karakterleri tanır ve görüntüler. Bu yüzden programlarınızda Türkçe karakter kullanmamaya dikkat etmeliyiz. Bir diğer kritik nokta da ekranda görmeyi umduğunuz yazıyı kodun şu haliyle göremeyecek olmanızdır :)) Eğer programı konsoldan elle çalıştırmıyorsanız sadece anlık olarak belirip kaybolan bir siyah ekran göreceksiniz. Gerekli düzeltmeyi bir sonrakki kodda ekleyeceğim şimdilik böyle yorumlayalım.

#include <stdio.h>

C dilinde birçok hazır fonksiyon kullanırız ve bunlaır kullanabilmek için koda dahil etmek zorundayızdır. İşte kullanmak istediğimiz fonksiyonları koda bu şekilde dahil ediyoruz. Örneğin bu programda ” printf(“”); fonksiyonunu kullandık, bu fonksiyon stdio.h kütüphanesinde bulunduğu için bu dosyayı #include <dosyaadı.h> kalıbıyla programımıza katıyoruz.

Kodumuzda getch(); fonksiyonu için conio.h , matematik fonskiyonları için math.h header dosyalarını eklemek zorundayız. Bunu fonksiyonlar konusunda ayrıntılı olarak göreceksiniz.

int main (void) { 

Burası bir fonksiyon tanımlamasıdır. Main fonksiyonu her C programında olmak zorundadır.  { } arasında kalan bölgeye main gövdesi denir. Şimdilik bu kadarının bilinmesi yeterlidir , fonksiyon mantığı ileriki derslerimizde ayrıntılı verilecektir.

printf ( " ilk c programiniz! " ) ;

Bu satır, iki tırnak arasındaki metni ekrana yazdırma işini yapan fonksiyonu tanımladığımız satıdır. Buraya istediğimiz herhangi bir metni yazabiliriz. Ayrıca sonra göreceğimiz değişkenlerin değerlerini de burada yazdırabiliriz.

Yazımızda bir alt satıra geçmek için  n  karakterini kullanırız :

printf ( " Burasi birinci satir n burasi ikinci satir. " ) ;

Bu kodun çıktısı şu şekildedir :

Burasi birinci satir

burasi ikinci satir
return 0;

Bu satır için şimdilik bilmeniz gereken programın, çalıştırıldığı yere ” Program başarıyla çalıştı ve sonlandı ” mesajının iletilmesi işini yaptığıdır. return komutu ” fonksiyonlar ” konusunda işlenecektir.

Yukarıdaki kodun ekranınızda görünüp kaybolmaması için şu eklemeleri de yapalım:

#include <stdio.h>
#include <conio.h>

int main (void) {

printf ( " ilk c programiniz! " ) ;
getch();
return 0;
}

Burada getch(); fonksiyonu kullanacağımız için <conio.h> dosyasını da kodumuza include ile dahil ettik. Getch(); fonksiyonunun asıl kullanım amacı klavyeden bir karakter okumaktır. Dolayısıyla kullanıcıdan giriş beklemektedir. Programınızın ekranda görünür kalmasının mantığı da budur. Bir tuşa bastığınızda programınızın sonlandığını farkedebilirsiniz.

Kısaca bir giriş yaptık , bir sonraki derste scanf() fonksiyonu ve değişkenlerden( int, char, double ) bahsedeceğim.

Ersin YILDIZ

Programlamaya Giriş Dersi ( Genel Bilgiler )

Merhabalar , bu yazımda programlamayla yeni karşılaşan arkadaşların kafasındaki soru işaretlerini azaltmayı amaçlıyorum. Bu amaçla programlamaya hem bir Bilgisayar Mühendisliği dersi olarak , hem de mesleğin yazılım tarafına ilk adım olarak yaklaşacağım.

  • Programlama Nedir ?

Program bir bilgisayarın donanım birimlerine işlev kazandıran bir emir dizisidir dersemyanlış olmaz. Bu program yeri gelir 1 byte büyüklüğünde olur , yeri gelir 1 GigaByte büyüklüğünde olur. Basit bir benzetme yapacak olursak Donanım insan bedeni , Yazılım da bu bedendeki ruhtur.

Bir program farklı programlama dilleriyle geliştirilebilir.  Bu yazımda programlama dillerine girmeden ve çok derine inmeden temel bilgileri vermek istediğimden bu konuyu kısa geçiyorum. Bu yazımda programlama dillerinin Yüksek Seviyeli Dil ailesinden olan C programlama dilinden bahsediyorum.

  • KTÜ Bil. Müh. Dersi olarak “Programlama”

KTÜ Bilgisayar Mühendisliği birinci sınıf bahar yarıyılı derslerinden biri olan Programlamaya Giriş dersi , 2010-2011 dönemine kadar Prof. Dr. Rıfat YAZICI hocamız tarafından verilmiştir. Ben 2009-2010 döneminde bu dersi aldım ve Rıfat hocamdan bu dersi aldığım için kendimi hala şanslı nitelendiririm.  Bilindiği üzere Rıfat hocamız geçtiğimiz dönem emekli oldu. Programlamaya Giriş dersini bu dönem hangi hocamızın vereceği konusunda net bir bilgim yok. O yüzden bu konuyu kısa tutuyorum. Yazının devam eden kısmında Rıfat hocamızın ders notlarını indirebileceğiniz adresi bulabilirsiniz.

Bölümümüzde bu derste verilen Programlama Dili, şu ana kadar C Programlama Dili olmuştur. Yeni gelen hocamızın tercihini bilmememe rağmen değişeceğini de düşünmüyorum. Programlama öğrenmek için C Programlama dili biraz ağır olabilmektedir kimi zaman. Fakat bu derste amaç dili öğrenmekten ziyade Program ve Programlamanın genel yapısını öğrenmektir. Ama burada çok önemli olan nokta , Programlamaya  sadece  ” geçilmesi gereken bir ders” olarak yaklaşmamaktır. C’yi biraz üzerine giderek öğrenmemiz mümkün , bu bilgiyle dersi geçmemiz de mümkün ama Programlama Mantığı’nı alamadıktan sonra gelecek dönem derslerinde büyük sorunlar yaşamamız kaçınılmaz. Programlamayı ve C’yi iyi bilmek durumundayız. Bu nedenle buna bir dersten ziyade , mesleğimize önemli bir adım olarak bakmalıyız. Bunun yolu da birşeyler üretmeyi sevmekten geçiyor sanırım 🙂

Dersi alacak arkadaşlara tavsiyelerim bundan ibaret değil elbette. Öncelikle bir dönem boyunca Konsol Ekranında bir takım programlar geliştireceksiniz ve bu durum sizi bi aşamadan sonra karamsarlığa sürükleyebilir. Konsolda geliştirdiğiniz programlarla günlük hayattakileri sürekli ister istemez kıyaslayıp bazen boşa uğraştığınızı bile düşünebilirsiniz ( ki ben düşünmüştüm zaman zaman ). Fakat sizi bu durumdan kurtaracak olan şey yine sizin geliştirdiğiniz uygulamalar olacaktır. Birşeyi yapabilir olmaktan duyacağınız haz sizi bu konuya daha çok adapte olmanızı sağlayacaktır emin olun.  Yeri gelecek çok sıkılacağınız gereksiz bulacağınız uygulamalar yazacaksınız, derste yapılan örnekler size sıkıcı gelmeye başladığında kendiniz çözebileceğiniz problemler bulmayı deneyin. Bunlardan en ünlüsü girdiğiniz notlarınıza göre ortalama hesabı veren programdır mesela :)) Bu tarz ” çıktısı somut ” olan problemler bulmakta sıkıntı yaşarsanız bu konuda bana e-posta yoluyla vs. ulaşırsanız size yardımcı olabilirim.

Yazının teknik olmayan kısmı buraya kadardı , lafı da çok dağıttım zaten farkındayım 🙂 Yazmayı öğrenene kadar idare ediverin , Yazının teknik olan kısmında Rıfat hocamızın ders notlarını bulabilir , Ücretli ve Ücretsiz Derleyiciler hakkında bilgi edinebilir , kaynak kitap tavsiyeleri bulabilir ve başlangıç mahiyetinde birkaç kod bulabilirsiniz. Teknik yazıyı da gün içinde bitirip yayınlamaya çalışıyorum.  Yardımcı olmamı istediğiniz başka bir ders varsa yorumla belirtirseniz elimden geldiğince yazarım bi’şeyler. Selametle ..

Ersin YILDIZ

KTÜ Bilgisayar Mühendisliği 2. Sınıf ( 2010-2011)

Görüşlerinizi paylaşırsanız sevinirim 🙂