diff options
Diffstat (limited to 'tr-tr')
| -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)  | 
