'Programlama' Kategorisi için belgelik

Python kitabım geldi bu sabah

Kahvaltı yaparken birden kapının zili çaldı. Kapıyı açtığımda, postacının ellindeki Amazon.com adlı paketi gördüm. Uzun zamandır bu günü bekliyordum sonunda da paketler geldi. Çok sevindim açıkcası. Amazon.com’dan ilk defa bir sipariş veriyordum, daha doğrusu internet aleminde ilk defa alışveriş yapıyordum. Geliş tarihi olarak 24 Mayıs gözüküyordu, bugün 25 Mayıs‘da ise kitaplar geldi. Beklediğimden daha hızlıydı.

pythonkitap1.jpg

Learning Python kitabından iki tane almıştım, bir tane de arkadaşım Halil için. 1 hafta sonra finallerin bitmesiyle beraber Python öğrenmeye başlayacağım. Çok da hevesliyim, yazın boş zamanlarımda bol bol çalışırım.

Linux manpage sayfalarındaki C fonksiyon bilgileri

Linux’da herhangi bir C fonksiyonunu “man fonksiyonadı” ile öğrenebilirsiniz. man malloc, man printf, man gets … gibi.Ben daha bugün yeni öğrendim, bunca zaman elimin altında böyle basit ve işe yarayan bir kaynak varmış da benim haberim yok. Bu zamana kadar hep Google’dan arama yapar arardım, keşke daha önce bilseydim. Ayrıca finaller bitsin şuradaki belgeleri de incelemeyi düşünüyorum :

http://fotisl.wordpress.com/2006/06/03/c-editing-with-vim/
http://www.justlinux.com/nhf/Programming/Introduction_to_C_Programming.html
http://www.linuxjournal.com/article/8289

Bu üç belge, Vim ile C’nin nasıl daha verimli yazılabileceğimizi anlatıyor. Vim konusunda daha çok çok acemiyim, fakat öğrendikce daha çok beğeniyorum, daha çok bağlanıyorum. Geçen okulda Lab dersi varken bunu çok daha iyi anladım. 5dk’lık bir işi 30 dk’da anca yazabildm. Hele birde elim alışmış, her seferinde Esc, sonra yy, ve pp. Hata yaptığımı anlıyorum, u tuşuna basıyorum. Sileyim derken dd’ye basıyorum. Tam bir fiyasko anlayacağınız :)

Python öğrenmek için engel kalmadı artık

Daha önce yazdığım gibi Python’a başlayacağım için güzel ve anlayışlı bir iki kitap tavsiyesi lazımdı. Gezegen ahalisine sordum, ve güzel yanıtlar aldım. Ayrıca internet’de de bir çok yeri araştırdım, hangi kitapların hangi yönden iyi olduğunu gibi etkenlere baktım. Sonunda iki tane kitap üzerinde durdum. Bunlardan biri Learning Python, diğeri de Dive Into Python. Her ikisini de okumayı düşünüyorum.

pythonkitap.jpgLearning Python kitabını satın alabilmek için, Garanti Bankasından sırf bu kitap için gidip vadesiz hesap açtırdım. Çünkü alabilmem için kredi kartım olması lazımdı. Fakat ben Kredi kartı kullanmıyorum, sevmiyorum da. Garanti Bankası da vadesiz hesaba Sanal Kart sağlayan bir kaç bankadan biri, diğerlerinin hepsi kredi kartı koşullu var. Her ne kadar benden Sigorta adı altında 27 milyon gibi gereksiz bir hesap açma ücreti alsalar bile, şu an için memnunum. Özellikle Internet bankacılığı hoşuma gitti.

Bunların ardından Amazon.com‘a üye oldum, Garanti’nin internet şubesinden Sanal Kartımı oluşturdum, ve Amazon.com’dan siparişimi verdim. İlk defa Internet’den alışveriş yaptığım için tabi tecrübesizlik vardı biraz, ayrıca bir de yurt dışından olunca biraz da tereddüt yaşadım. Acaba sorun çıkar mı çıkmaz mı diye. Çünkü daha önce internet üzerinden ne alışveriş yaptım, ne de birinin yaptığını gördüm. Sonuç olarak hiç bir sorun çıkmadı ve Amazon, Sanal kartımdaki parayı başarıyla çekti. 10-30 gün arasında bana ulaşırmış kitap.

Dive Into Python‘un GPL lisansı altında olmasını da çok beğendim. Ayrıca yazıları da anlaşılır olması güzel. Daha önce yazdığım yazıda da tavsiye edildi. Burada başka bir etken ise, GPL olduğu için istediğim gibi kullanabiliyor, hata çıktısını bile alabiliyordum. Ben de bir arkadaşıma sordum, ve onun sayesinde bu kitabı, sorun çıkmazsa tamamen ücretsiz bir biçimde çıktısını kitap şeklinde alacağım.

Şu an 1 ay bekleyiş, 2 tane Python kitabı, 3 ay boş zaman(yaz) ve 4 gözle bu kitapları bekleyen ben var. Hayırlısı artık :)

Linux şenliğindeki Python semineri

Python ile Python gibi Kod Yazma - Gürer Özen

Bir aksilik çıkmazsa yarın bu seminere katılacağım. C ile haşır neşir oldum. Gayet iyi anlıyorum artık. Dönem sonuna kadar C ile devam edeceğim, ardından yaz tatilinin başlangıçı ile Python‘a başlamaya düşünüyorum. Bu yüzden üsteki seminere katılmam benim için yardımcı olur diye düşünüyorum. Python’a başlamam sebebi ise hem C’ye göre daha basit bir kod yazmasına sahip olması, hem de uygulama geliştirme açısından daha avantajlı olduğu için. Ayrıca Pardus’da bir çok kişinin de bu dili kullandığına göre bir bildikleri var diye düşünüyorum.

Ayrıca Python kullanan ahaliye bir sorum olacak, Amazon.com’da Learning Python(O’Reilly) adında bir kitap gördüm. Biraz araştırdım, ve herkes bu kitapdan memnun. Almaya düşünüyorum. Sizin kullandığınız başka kitaplar var mı ? Ya da yukarıda bahsettiğim kitap yeterli olur mu ? Türkiye içinde bu kitabı alabilmem mümkün mü ?

Bu konuda bana yardımcı olabilen olursa çok sevinirim :)

C’de gets yerine fgets kullanın

Okulda verilen ödevi yapmaya çalışırken bu iki komut ile karşılaştım, sonra her ne kadar işime yaramadığını anladıysam da, ileride belki işime yarayabilir diye öğrenmiştim.İlk başta bir string tanımlayalım, 50 byte büyüklüğünde.

char string[50];

Ardından istediğiniz yere : gets(string); yazın. Sizden scanf komutu gibi stringi doldurmanızı isteyecek. Fakat boşluklar da dahil. Uzun yazılar için birebir yani. Gets’e benzer birde fgets komutu vardır. Gets yerine fgets kullanmak da daha mantıklıdır. Çünkü gets string’in büyüklüğünü gözardı ediyor. Nasıl yani ?

Şöyle ki, örneğin gets ile 110-120 karakterlik bir cümle yazdıysanız, programınız sağlıklı çalışmaz, hata verir. Gets tüm yazdığınız karakterleri kaydetmeye çalışacak. Fakat bizim string’e ayırdığımız alan sadece 50 byte. Bu yüzden fgets’kullanmak daha mantıklı. Kullanımı da şu şekilde:

fgets(string, sizeof(string), stdin);

Burada string bildiğimiz string, sizeof(string) ise string’in büyüklüğü(byte olarak), stdin de standart input, yani klavyeden girdiğimiz veri. Stdin yerine de dilerseniz dosya adını da yazabilirsiniz. sizeof(string) yerine 100, 53, 134 gibi sayılar da yazabilirsiniz. Size bağlı. Bu yüzden fgets’i kullanmak daha iyi, çünkü belirleyici bir sayı var, onun geçmesine izin vermiyor.

Not:(Yazıda ingilizce kelimelerin Türkçe karşılığını bilmediğim için aynen öyle yazdım, string gibi.)

C ile en büyük ve en küçük sayıları bulma

Kod’u çalıştırdıktan sonra, sayılar girmenizi isteyecek, sonra da en büyük ve en küçük sayıyı size gösterecek. İnternet’de çok araştırmıştım fakat bir çözüme ulaşamamıştım. “Largest Smallest Number C Programming” diye aratınca da pek bir şey bulamadım. Başkaları arayınca burayı bulsunlar diye yazdım kelimeleri :) En son çare’yi Freenode’a ##c kanalında buldum. Pragma takma adlı bir kişi bir iki yerde yardım etti bana. Buraya yazdıklarımı bilmezse dahi, kendisine teşekkür ederim.

#include 
#define Sentinel 0

int largest(int max, int a);
int smallest(int min,int b);

int main(void)
{
	int maximum,minimum,num;	

	printf("\nInput the number(Enter %d for exit): ", Sentinel); 	scanf("%d", &num);

	maximum = num;
	minimum = num;

	while (num != Sentinel) {
		maximum = largest(maximum,num);
		minimum	= smallest(minimum,num);
		printf("Input the number(Enter %d for exit): ",Sentinel); 	scanf("%d", &num);
	}

	printf("\nLargest number: %d\n", maximum);
	printf("Smallest number: %d\n\n", minimum); 

	return (0);
}

//Get numbers and compare, return the largest
int largest(int max, int a)
{
	if ( max < a)	{
		return (a);
	}
	else 	{
		return (max);
	}
}

//Get numbers and compare, return the smallest
int smallest(int min,int b)
{
	if ( min > b)		{
		return (b);
	}
	else {
		return (min);
	}
}

Not:(Çok basit olduğunu bliliyorum fakat bulamamıştım belki başkaların işine yarar)
Not 2: Programlama adında yeni bir kategori açtım.

« Previous PageNext Page »