diff options
Diffstat (limited to 'tr-tr/c-tr.html.markdown')
-rw-r--r-- | tr-tr/c-tr.html.markdown | 107 |
1 files changed, 53 insertions, 54 deletions
diff --git a/tr-tr/c-tr.html.markdown b/tr-tr/c-tr.html.markdown index 18674cc6..898c732c 100644 --- a/tr-tr/c-tr.html.markdown +++ b/tr-tr/c-tr.html.markdown @@ -8,9 +8,8 @@ contributors: translators: - ["Haydar KULEKCI", "http://scanf.info/"] lang: tr-tr - --- -/* + C halen modern yüksek performans bilgisayarların dili. C bir çok programcının kullandığı en düşük seviye dillerdendir, ama @@ -24,23 +23,23 @@ anlarsanız sizi isteğiniz yere götürecektir. Çoklu satırlı yorumlar bu şekilde görünür. */ -// C Standart kütüphanelerini uygulamanıza #include<ornek.h> ile +// C Standart kütüphanelerini uygulamanıza #include<ornek.h> ile // dahil edebilirsiniz. #include <stdlib.h> #include <stdio.h> #include <string.h> -// Kendi başlık(header) dosyalarınız dahil etmek için "çift tırnak" +// Kendi başlık(header) dosyalarınız dahil etmek için "çift tırnak" // kullanmalısınız. #include "my_header.h" -// Fonksiyonlarınızı bir .h dosyasında ya da c dosyanızın üst tarafta +// Fonksiyonlarınızı bir .h dosyasında ya da c dosyanızın üst tarafta // tanımlayın. void function_1(); void function_2(); -// Programınızın giriş noktası main isimli bir fonksiyondur ve +// Programınızın giriş noktası main isimli bir fonksiyondur ve // integer değer döner int main() { @@ -62,31 +61,31 @@ int main() { // short değişken tipi genellikle 2 byte boyutundadır. short x_short = 0; - // char tipi 1 byte boyutunu garanti eder. + // char tipi 1 byte boyutunu garanti eder. char x_char = 0; char y_char = 'y'; // Karakterler '' işaretleri arasına yazılır. // long tipi 4-8 byte olur; long long tipi en azından 64 bit garantiler. long x_long = 0; - long long x_long_long = 0; + long long x_long_long = 0; // float tipi 32-bit kayan noktalı sayı boyutundadır. float x_float = 0.0; - // double değişken tipi 64-bit kayan noktalı yazı tipindedir. + // double değişken tipi 64-bit kayan noktalı yazı tipindedir. double x_double = 0.0; - // Integral türleri işaretsiz olabilir. Bunun anlamı, onlar eksi değer - // olamaz demektir, ama aynı boyuttaki işaretsiz bir sayının maksimum + // Integral türleri işaretsiz olabilir. Bunun anlamı, onlar eksi değer + // olamaz demektir, ama aynı boyuttaki işaretsiz bir sayının maksimum // değeri işaretli bir sayının maksimum değeriden büyük olur. unsigned char ux_char; unsigned short ux_short; unsigned int ux_int; unsigned long long ux_long_long; - // Diğer taraftan char, ki her zaman bir byte boyutundadır, bu tipler - // makinenize göre boyut değiştirir. sizeof(T) size bir değişkenin byte - // cinsinden boyutunu verir öyle ki bu tipin boyutunu taşınabilir bir + // Diğer taraftan char, ki her zaman bir byte boyutundadır, bu tipler + // makinenize göre boyut değiştirir. sizeof(T) size bir değişkenin byte + // cinsinden boyutunu verir öyle ki bu tipin boyutunu taşınabilir bir // şekilde ifade edilebilir // Örneğin, printf("%lu\n", sizeof(int)); // => 4 (bir çok makinede 4-byte words) @@ -96,7 +95,7 @@ int main() { // Bu durumda verimliligin degeri derleme-zamani sabitidir. int a = 1; - // size_t bir objeyi temsil etmek için kullanılan 2 byte uzunluğundaki bir + // size_t bir objeyi temsil etmek için kullanılan 2 byte uzunluğundaki bir // işaretsiz tam sayı tipidir size_t size = sizeof(a++); // a++ is not evaluated @@ -111,7 +110,7 @@ int main() { // Şu şekilde bir diziyi 0 ile oluşturabilirsiniz: char my_array[20] = {0}; - // Dizinin elemanlarını indexlemek diğer diller gibidir, veya + // Dizinin elemanlarını indexlemek diğer diller gibidir, veya // diğer diller C gibi. my_array[0]; // => 0 @@ -137,13 +136,13 @@ int main() { // String'ler bir NUL (0x00) byte ile sonlandırılmış karakter dizileridir, // bu string içerisinde özel bir karakter olan '\0' ile gösterilir. - // (Biz Nul byte'i string karakterleri arasında bulundurmamıza gerek + // (Biz Nul byte'i string karakterleri arasında bulundurmamıza gerek // yoktur; derleyici onu bizim için dizinin sonuna ekler.) char a_string[20] = "This is a string"; printf("%s\n", a_string); // %s bir string formatıdır. /* - a_string 16 karakter uzunluğundadır. + a_string 16 karakter uzunluğundadır. 17. karakter NUL karakteridir. 18., 19. ve 20. karakterler tanımsızdır.(undefined) */ @@ -176,7 +175,7 @@ int main() { // Karşılaştırma operatörleri muhtemelen tanıdıktır, ama // C'de boolean tipi yoktur. Bunun yerine sayı(int) kullanırız. - // 0 false yerine ve diğer herşey true yerine geçmektedir. + // 0 false yerine ve diğer herşey true yerine geçmektedir. // (Karşılaştırma operatörleri her zaman 0 veya 1 dönmektedir.) 3 == 2; // => 0 (false) 3 != 2; // => 1 (true) @@ -247,7 +246,7 @@ int main() { // Tip Dönüşümleri /////////////////////////////////////// - // C'de her değer bir tipe sahiptir, ama siz bir değeri bir başka tipe + // C'de her değer bir tipe sahiptir, ama siz bir değeri bir başka tipe // dönüştürebilirsiniz. int x_hex = 0x01; // Hex literatüründe değer atayabilirsiniz. @@ -260,11 +259,11 @@ int main() { // Tip hiçbir hata vermeden taşacaktır(overflow). printf("%d\n", (unsigned char) 257); // => 1 (Max char = 255 eğer karakter 8 bit uzunluğunda ise) - // `char`, `signed char` ve `unsigned char` karakter tiplerinin maksimum uzunluğunu - // belirlemek için <limits.h> kütüphanesindeki CHAR_MAX, SCHAR_MAX ve UCHAR_MAX + // `char`, `signed char` ve `unsigned char` karakter tiplerinin maksimum uzunluğunu + // belirlemek için <limits.h> kütüphanesindeki CHAR_MAX, SCHAR_MAX ve UCHAR_MAX // macrolarını kullanınız. - // Integral tipi kayan noktalı yazı tipine dönüştürülecektir ve tam tersi. + // Integral tipi kayan noktalı yazı tipine dönüştürülecektir ve tam tersi. printf("%f\n", (float)100); // %f formats a float printf("%lf\n", (double)100); // %lf formats a double printf("%d\n", (char)100.0); @@ -273,36 +272,36 @@ int main() { // İşaretçiler (Pointers) /////////////////////////////////////// - // Bir işaretci bellek adresini barındıran bir değişkendir. Tanımlaması ile işaret - // edeceği verinin tipi de belirtilecektir. Değişkenlerininzi bellek adreslerini - // getirerek bellek ile ilgili karışıklığı ortadan kaldırabilirsiniz. + // Bir işaretci bellek adresini barındıran bir değişkendir. Tanımlaması ile işaret + // edeceği verinin tipi de belirtilecektir. Değişkenlerininzi bellek adreslerini + // getirerek bellek ile ilgili karışıklığı ortadan kaldırabilirsiniz. int x = 0; - printf("%p\n", &x); // & işareti bir değişkenin bellek adresini getirmek için kullanılır. + printf("%p\n", &x); // & işareti bir değişkenin bellek adresini getirmek için kullanılır. // (%p işaretçilerin formatıdır) // => Bazı bellek adresleri yazdırılacaktır. // İşaretçiler tanımlanırken * ile başlar - int *px, not_a_pointer; // px sayı tipinde bir işaretçidir. + int *px, not_a_pointer; // px sayı tipinde bir işaretçidir. px = &x; // X değişkeninin bellek adresi px değişkeninde tutulmaktadır. - printf("%p\n", px); // => x değişkeninin bellek adresi yazdırılacaktır. + printf("%p\n", px); // => x değişkeninin bellek adresi yazdırılacaktır. printf("%d, %d\n", (int)sizeof(px), (int)sizeof(not_a_pointer)); // => 64-bit sistemde "8, 4" yazdırılacaktır. - // İşaretçinin adres olarak gösterdiği yerdeki değeri almak için + // İşaretçinin adres olarak gösterdiği yerdeki değeri almak için // değişkenin önüne * işareti ekleyiniz. - printf("%d\n", *px); // => 0 bastıracaktır, x in değeridir, + printf("%d\n", *px); // => 0 bastıracaktır, x in değeridir, // çünkü px değişkeni x in adresini göstermektedir. - // Ayrıca siz işaretçinin gösterdiği yerin değerini - // değiştirebilirsiniz. Burada referansı parantez içerisinde göstereceğiz + // Ayrıca siz işaretçinin gösterdiği yerin değerini + // değiştirebilirsiniz. Burada referansı parantez içerisinde göstereceğiz // çünkü ++ işleminin önceliği * işleminden yüksektir. - (*px)++; // px'in işaret ettiği değeri 1 artır. + (*px)++; // px'in işaret ettiği değeri 1 artır. printf("%d\n", *px); // => 1 yazdırılır. printf("%d\n", x); // => 1 yazdırılır. - int x_array[20]; // Diziler(arrays) bellekten yan yana bellek bloklarını + int x_array[20]; // Diziler(arrays) bellekten yan yana bellek bloklarını // tahsis etmek için iyi bir yöntemdir. int xx; for (xx=0; xx<20; xx++) { @@ -312,7 +311,7 @@ int main() { // Bir sayı tipinde işaretçi tanımlanıyor ve x_array'i işaret ediyor. int* x_ptr = x_array; // x_ptr artık dizinin ilk elemanını işaret etmektedir (the integer 20). - // Bu çalışacaktır çünkü diziler(arrays) aslında sadece onların ilk + // Bu çalışacaktır çünkü diziler(arrays) aslında sadece onların ilk // elemanlarını gösteren birer işaretçidir. // For example, when an array is passed to a function or is assigned to a pointer, // it decays into (implicitly converted to) a pointer. @@ -331,25 +330,25 @@ int main() { printf("%d\n", *(x_ptr)); // => 20 yazılacaktır. printf("%d\n", x_array[0]); // => 20 yazılacaktır. - // İşaretçiler kendi tiplerinde artırılır ve azaltılır. + // İşaretçiler kendi tiplerinde artırılır ve azaltılır. printf("%d\n", *(x_ptr + 1)); // => 19 yazılacaktır. printf("%d\n", x_array[1]); // => 19 yazılacaktır. - // Ayrıca dinamik olarak bir bellek bloğunu standart kütüphanede bulunan - // malloc fonksiyonu ile uygulamanız için ayırabilirsiniz. Bu fonksiyon - // byte türünden ayırmak istediğiniz bloğun boyutunu parametre olarak alır. + // Ayrıca dinamik olarak bir bellek bloğunu standart kütüphanede bulunan + // malloc fonksiyonu ile uygulamanız için ayırabilirsiniz. Bu fonksiyon + // byte türünden ayırmak istediğiniz bloğun boyutunu parametre olarak alır. int* my_ptr = (int*) malloc(sizeof(int) * 20); for (xx=0; xx<20; xx++) { *(my_ptr + xx) = 20 - xx; // my_ptr[xx] = 20-xx 'de aynı zamanda çalışabilir } // Bellekte 20, 19, 18, 17... 2, 1 (as ints) şeklinde oluşturulmuş olacaktır. // Eğer ayrımadığınız bir bellek adresini çağırırsanız - // öngörülmeyen bir değer dönecektir. + // öngörülmeyen bir değer dönecektir. printf("%d\n", *(my_ptr + 21)); // => kim-bilir-ne-yazacak? - // Malloc fonksiyonu ile ayrıdığınız bellek kısmı ile işiniz bittiğinde - // onu free fonksiyonu ile boşaltmalısınız, aksi durumda uygulamanız - // kapatılana kadar belleğin o kısmını kimse kullanamaz. + // Malloc fonksiyonu ile ayrıdığınız bellek kısmı ile işiniz bittiğinde + // onu free fonksiyonu ile boşaltmalısınız, aksi durumda uygulamanız + // kapatılana kadar belleğin o kısmını kimse kullanamaz. free(my_ptr); // Metin Dizileri(String) birer karakter dizisidir(char array), ama @@ -373,8 +372,8 @@ int add_two_ints(int x1, int x2){ } /* -Fonksiyonlar pass-by-value'dür, ama isterseniz işaretçi referanslarını -kullanarak fonksiyona gönderilen parametrenin değerini değiştirebilirsiniz. +Fonksiyonlar pass-by-value'dür, ama isterseniz işaretçi referanslarını +kullanarak fonksiyona gönderilen parametrenin değerini değiştirebilirsiniz. Example: Bir metni tersine çevirme */ @@ -404,7 +403,7 @@ printf("%s\n", c); // => ".tset a si sihT" typedef int my_type; my_type my_type_var = 0; -// Struct'lar bir veri koleksiyonudur. +// Struct'lar bir veri koleksiyonudur. struct rectangle { int width; int height; @@ -426,14 +425,14 @@ void function_1(){ // Bir yapının adresini işaretçiye atayabilirsiniz. struct rectangle* my_rec_ptr = &my_rec; - // İşaretçi üzerinden bir yapıya ulaşabilirsiniz. + // İşaretçi üzerinden bir yapıya ulaşabilirsiniz. (*my_rec_ptr).width = 30; - // ya da -> işareti ile yapının elemanlarına ulaşabilirsiniz. + // ya da -> işareti ile yapının elemanlarına ulaşabilirsiniz. my_rec_ptr->height = 10; // (*my_rec_ptr).height = 10; ile aynıdır. } -// Kolaylık sağlamak için bir yapıya typedef tanımlayabilirsiniz. +// Kolaylık sağlamak için bir yapıya typedef tanımlayabilirsiniz. typedef struct rectangle rect; int area(rect r){ @@ -447,8 +446,8 @@ int area(rect r){ /* Çalışma zamanında, fonksiyonların bilinen bir bellek adresleri vardır. Fonksiyon işaretçileri fonksiyonları direk olarak çağırmayı sağlayan veya geri bildirim(callback) -için parametre gönderirken kullanılan başka birer işaretçidirler. Ama, syntax tanımı -başlangıçta biraz karışık gelebilir. +için parametre gönderirken kullanılan başka birer işaretçidirler. Ama, syntax tanımı +başlangıçta biraz karışık gelebilir. Örnek: bir işaretçiden str_reverse kullanımı */ @@ -469,7 +468,7 @@ typedef void (*my_fnp_type)(char *); // Gerçek bir işaretçi tanımlandığı zaman ki kullanımı: // ... -// my_fnp_type f; +// my_fnp_type f; ``` ## Daha Fazla Okuma Listesi @@ -484,4 +483,4 @@ Readable code is better than clever code and fast code. For a good, sane coding Diğer taraftan google sizin için bir arkadaş olabilir. -[1] http://stackoverflow.com/questions/119123/why-isnt-sizeof-for-a-struct-equal-to-the-sum-of-sizeof-of-each-member +[1] [stackoverflow.com/questions/119123/why-isnt-sizeof-for-a-struct-equal-to-the-sum-of-sizeof-of-each-member](https://stackoverflow.com/questions/119123/why-isnt-sizeof-for-a-struct-equal-to-the-sum-of-sizeof-of-each-member) |