C'ye Buradan Başlasak 1 (Genel Bilgiler/Giriş)

Başlatan sema, 13 Ocak 2010 - 18:32:32

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

sema

Öncelikle Neden C? Çünkü;

C verimlidir; CPU teknolojisinin avantajlarını iyi kulanır, bu yüzden hızlı çalışır.
C taşınabilirdir; Yani bir sistemde yazılan program hiç değiştirilmeden veya çok az bir değişiklikle diğer sistemlerde de çalışır.
C, güçlü ve esnek bir dildir; Unix işletim sisteminin çoğu C ile yazılmıştır. Birçok derleyici ve çevirici (Fortran, Perl, Python, Pascal, Lisp, Logo, Basic) C ile yazılmıştır.
C, Programcı için kullanışlı bir dildir; Donanıma müdahale etmenize olanak verir, hafıza üzerinde tam kontrol sağlar.
C++, Java, JavaScript, JavaApplet, PHP, C#... gibi diller C dilinden esinlenmiştir.

Dezavantajı Yok mudur Bu Dilin? Olmaz mı!

Bazı programların yanlışlarını bulmak neredeyse imkânsızdır (hele de pointer ile yazılanları), bu konuda yarışmalar düzenlenmektedir.

Derleme Makinalari: C taşınabilir bir dildir demiştik: Unix, Linux, Windows, Machintos. Bu sistemlerde nasıl kullanılır, bakılım:

UNIX Systems: Sistemin kendi derleyicisi yok. Genel amaçlı UNIX editörlerinden birini kullanıyoruz. Bunlar: Emacs, Jove, Vi veya X Windows System Text Editor. Sonra dosya uzantısı "falanca.c" (bu "falanca" 'yı da birinden çal... ımmmm alıntıladım :) ) olacak şekilde bir ad vererek kaydediyoruz.

Programı Compile etmek için;
cc falanca.c yazmanız yeterli(ymiş) (bunu denemedim). UNIX C compileri cc olarak adlandırılmıştır. UNIX exucutable file olarak "a.out" üretir. Programı çalıştırmak için: a.out yazmamız yeterli. Object kod ise "falanca.o" olarak üretilr.

LINUX Systems: LINUX'te C programı yazmak ve çalıştırmak bu işi UNIX'te yapmak gibidir, önemli farkı C Compileri olarak "gcc" kullanırız (esasında çok kolay bir iş-miş).
gcc falanca.c (sesli okusanıza :P)

Not: Henüz denemediğim için yeteri kadar bilgi veremiyorum bu konuda ancak forumda zaten yeterince bilgi var, ben de başlayacağım.

WINDOWS: C Compiler standart paketlerden biri değil, biz yüklemek zorundayız. Zaten birçok firma Windows için C Compiler üretiyor (Linux için de üretiyorlar, merak etmeyin hem de bir sürü hem de Özgür hem de biliyorsunuz zaten :) ) Bu Compiler'ların en önemli özelliği kendi editörlerinin olması (C, C++ için). Bunların menüleri vardır ve bu menülerle programınızı isimlendirmek, kaydetmek, debug yapmak veya bulunduğunuz ortamı terk etmeden Compile etmek ve çalıştırmak imkânlarına sahipsiniz.

Şimdi basit bir örnekle C'ye başlayalım:

#include <stdio.h>
int main(void)                                     
{
int sayi;                                       
sayi = 19;                                     
printf("Ben basit bir ");
printf("programim.\n");
printf("Benim favori sayim %d, o cok ozel bir sayidir.\n",sayi);
return 0;
}


Şimdi bu program bize ne anlatıyor, amacı nedir? İnceleyelim:

#include<stdio.h>
Bu satır compiler'a stdio.h dosyasındaki bilgileri programa ekle der. stdio.h dosyası standart C paketidir ve klavye ile monitör bilgilerini içerir. Dolayısıyla yazacağınız C Programı, klavyeyi  veya monitörü kullanacaksa  bu dosyayı yukarıda verilen şekilde programınıza eklemeniz gerekir.

int main(void)

C programı bir ya da daha fazla fonksiyondan oluşur. Yukarıdaki program bir fonksiyondan oluşur: main(), bu fonksiyonun da ismidir. Yukarıdaki örnekte "int" main fonksiyonun integer (tam sayı) döndürdüğünü, sonuç verdiğini belirtir. Parantez içinde kullanılan "void" ise fonksiyonun herhangi bir girişi, argümanı olmadığını belirtir.
C programı çalışmaya daima main() fonksiyonu ile başlar. Diğer fonksiyonlara istediğiniz ismi verebilirsiniz, fakat C programı işlemlere daima main() fonksiyonu ile başlar.

/* ....... */

C Programı /* başlayarak */ ulaşıncaya kadar yazılmış her şeyi açıklama kabul eder ve compile etmez. Ayrıca;
// Bu da bir yorumdur.



Fonksiyonun başlangıcını ifade eder, gösterir.

int sayi;
   
Bu ifade bir değişken tanımladığınızı (sayi) ve bu değişkenin türünün int (tam sayı-integer) olduğunu belirtir.

sayi = 19;

sayi adlı değişkene değer atar. sayi değişkeni şimdi 19 değerini aldı.

printf("Ben basit bir");


"printf()" standart bir C kütüphane fonksiyonudur. Yukarıdaki fonksiyon ekrana  "Ben basit bir" ifadesini yazar ve kursörü aynı satırda bırakır.
printf("programim.\n");

Önceki printf() fonsiyonunun kaldığı yerden "programim" ifadesini yazar. Sondaki "\n" ifadesi de kursörü yeni bir satıra götürür.
printf("Benim favori sayim %d, o cok ozel bir sayidir.\n",sayi);

sayi değerini yazar, bu değer "19" 'dur. Burada kullanılan "%d" komutu sayi değerinin nereye ve hangi formatta yazılacağını belirtir.

return 0;

C programı işlem sonunda kullanıcıya sonucu iletir. Bu C programının standart bir rutinidir.

}

Ve fonksiyonu sonlandırdık. İyi yaptık :P
Deklarasyonlar  ";" ile son bulur, bu bir C kuralıdır.

İsim Seçimi: Değişkenler için en önemli özellik mantıklı isim kullanmaktır.
Kullanılabilen karakterler: Küçük/büyük harfler, sayılar ve underscore (_). İlk karakter bir harf veya undescore olmalıdır.

Doğru kullanım: sema_gokyuzu, SeMa19...
Yanlış kullanım: %sema, 19gokyuzu, Sema-Gokyuzu. (19 yaşım değildir, gerçekten özel bir sayıdır, neyse :P )

Dakkat etmeniz gereken bir nokta da ilk karakterde 1 ya da 2 underscore olmamalı, bir de C'nin büyük/küçük harf ayırımı olduğunu söylememe gerek yok (ama söyledim).

#include <stdio.h>
int main(void)
{
Durumlar;
fonksiyonlar;
işte herbir şeyler;
return 0;
}


Syntax Errors
: C dilinin kurallarına uymazsanız syntax denilen hataları yaparsınız (konuşma dillerinde gramer hataları gibi)
Semantic Errors: Anlam, mana hatalarıdır. Bir sayının karesi yerine o sayının üçüncü kuvvetini alabilirsiniz örnek olarak. Bu tür hatalar bilgisayar tarafından bulunamazlar. Siz burada devreye giriyorsunuz.

İnt C dilinin temel veri türüdür ve tam sayıları ifade eder. Diğerleri (long, short, unsigned, signed) int türünün farklı şekillerde temsil edilmesini sağlar.
char  alfabedeki harflerin, bazı işaret ve simgelerin temsil edilmesinde kullanılır. Ek olarak küçük tam sayılar için de kullanılabilir.
float, double, long double türleri tam olmayan (kesirli) sayılar için kullanılır.
_Bool türü Boolen aritmetiği için kullanılır (True-False)
_Complex  ve  _Imaginary  yenidir ve complex ve imagenery sayılar (sanal ve reel kısımları olan) için kullanılır.

Printf() fonksiyonu kullanılarak int değerleri  yazdırılabilir. %d format ayarlayıcısı; int değerinin satırda nereye yazılacağını belirtir. Her bir %d değeri kadar değişken (veya int sabiti) printf() fonksiyonu içinde olmalıdır.

Genel kullanımı: Printf("Benim ismim %s, anlamı Gokyuzu./n", isim);

Gerekli değilse long kullanmayın, makinayı yavaşlatıyor.

Char: Harfleri ve sembolleri depolamak için kullanılır. Char aslında bir integer türü olarak depolanır (char integer depolar).

Deklerasyon:
         char sema='A';  // doğru kullanım
         char sema= A;   // A'yı bir değişken zanneder.
         char sema="A";  // A'yı bir kelime zanneder.

%c kullanır. (%d kullanımı int içindi)

Float: Kesirli sayılar, gerçek sayılar, float ile gösterilir. Float sayıların sonuna f veya F eklerseniz bilgisayar onları float alır ve işlemlerini ona göre yapar:
0.19f
1.9F
Printf() fonksiyonu %f kullanır.

Scanf()

scanf() ve %s bir kelime bütünlüğünü okutmak için kullanılır. Klavyeden girilen değerleri değişik formatlara çevirip değişkenlere atama yapar, saklar. Değişken tanımlamaları için scanf() pointer kullanır. Pointer için & işareti kullınılır. Eğer basit C veri türlerini okutuyorsak & işaretini kullanacağız.

#define ISIM deger: Sabitleri program başlamadan tanımlamanıza ve kullanmanıza olanak verir.
Sabit tanımlamanın bir başka yolu da
const int Ay = 12; // Ay değeri artık 12'dir ve program içerisinde değiştirilemez.

Temel İşlem Operatörleri:

S = 2*++a;         // a değişkenini 1 artırır ve 2 ile çarpıp, sonucu S'ye atar.
S = 2*a++;         //a'yı iki ile çarpıp, sonucu S'ye atar ve a değişkenini 1 artırır.
-- azaltma operatörü: --say, say--

Sıra ile Kontrol Yapıları (http://forum.ubuntu-tr.net/index.php/topic,16719.0.html),
Diziler                           (http://forum.ubuntu-tr.net/index.php/topic,16724.msg202211/topicseen.html#msg202211),
Pointer, String'ler ile devam edecek, yakında, umarım..
susema

EsatYuce

Ellerine sağlık, Fakat bir yerde yanlış yazım oldu (Lunix yazılmış)

ironic

@semagkyz, eğlenceli ve bilgilendirici bir yazı olmuş. Teşekkür ederiz.


not: falanca.c  dosyası başarılı şekilde derlendi.  :)

ırmak

@semagkyz güzel yazmışsınız teşekkürler:)

sema

#4

@EsatYuce teşekkür ederim dikkatin için, düzelteyim hemen..
@ironic, sağol, demek derledin? Ben hâlâ derlemedim Ubuntu altında, derlemeye başlayayım falanca.c'yi..
@ırmak beğendiğine sevindim, teşekkür ederim :)
susema

onuragtas

Tebrikler ve teşekkürler... :)
System.out.println("Hadi gülüm yandan yandan.");

sema


Bir şey değil :P

(teşekkür eden herkese, etmek isteyip de edemeyene, etmeyeceğim işte diyene :P, şaka tabii peşin cevap vereyim bir şey değil arkadaşlar, diyorum, dedim).
susema

heartsmagic

Deneme bir,iki...
Alıntı Yap
karmik [23:25:04] ~ > gcc falanca.c -o falanca
karmik [23:25:16] ~ > ./falanca
Ben basit bir programim.
Benim favori sayim 19, o cok ozel bir sayidir.
karmik [23:25:19] ~ >

Eline sağlık @semagkyz, okuması gayet hoş bir yazı olmuş. Girizgâh kabul ediyorum ama bunu gerisini de bekleriz :) Eski dostum C'yi özlemişim, gerilere götürdün beni. Programlamanın bana göre olmadığını anladığımda (sözlerin sahibi burada kıvırmaktadır, "pointer"larla uğraşmak zoruna gitmiştir :P) bu işin üzerine gitmemiştim :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

sema

#8
:) Sağ ol @heartsmagic, evet girizgâh (a harfinin üzerine inceltme işareti koysam mı koymasam mı diye düşünürken baktım sen de koymuşsun, ben de koyayım dedim).

Tamam devamı gelecek..

Not: "Sağ ol" bitişik yazılıyor-muş :)
susema

neneki

gayet başarılı bir anlatım olmuş tebrikler. hazır okuldada gösteriyorlar elimdede linux var hocalara bir show yapim en iisi :)

gocen

öncelikle teşekkürler

programı çalıştırdığım zaman

./a.c: line 2: beklenmeyen dizgecik `(' yakınında sözdizimi hatası
./a.c: line 2: ` int main(void)

diye hata veriyor, ne yapabilirim
Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

sema

Alıntı yapılan: gocen - 07 Nisan 2010 - 16:05:08
öncelikle teşekkürler programı çalıştırdığım zaman
./a.c: line 2: ` int main(void)
Merhaba :)

Çalıştırmayı ./a şeklinde yapın yani ./a.c olmayacak.

@neneki teşekkür ederim :)
susema

gocen

Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

solidsnake

 http://taiwan.sdba.info/data/index.htm
pointer ve veri yapıları konuları animasyon ile  çok güzel anlatılmış.
İlgilenen varsa faydalanacağını düşünüyorum