summaryrefslogtreecommitdiffhomepage
path: root/tr-tr/c-tr.html.markdown
diff options
context:
space:
mode:
Diffstat (limited to 'tr-tr/c-tr.html.markdown')
-rw-r--r--tr-tr/c-tr.html.markdown107
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)