İçeriğe atla

Fotoğraf

C Öğreniyorum


  • Please log in to reply
12 replies to this topic

#1
Seyfulislam

Seyfulislam
  • Üye
  • 1.672 Mesaj sayısı:
Mesaja geçmeden önce beni burada yazarak öğrenmeye teşvik etmiş olan "DrÇakır" abime (ya adınızın Dursun olduğunu biliyorum ama aklımda Doktor Çakır olarak kalmış, söylemiş olayım.) ve bende programlama tutkusunu alevlendiren "beyazkartal" abime(abi hiç kızma darılma bana vb.net'den başlamadım diye) teşekkür ediyorum. -Yarışma programlarının giriş kısmı gibi mi oldu ne?-

Yazarak daha fazla akılda kalıyor. Elimde ajandam bir yandan notlar alırken bir yandan da notları bu mesaja aktarıyorum. inşallah birilerine yararı olur. İlk programlama deneyimlerim. Acemiyim hatalarımı düzeltin gördükçe. Notlarımdan kasıt internet üzerindeki Türkçe kaynakların bir harmanı şeklinde.


Programlamanın temelinde yatan input/output ve algoritmalardan bahsetmeyeceğim. Bunlar zaten bir programlama dilini öğrenmeye başlamadan önce bilinmesi gerekenler.

Kullanmamız gereken programlara gelince;
http://www.bloodshed.net/devcpp.html adresinden indirebileceğimiz derleyicimiz işe yarayacak.

Kullanımı;
ilk önce CTRL+N ile boş bir sayfa açılır.
Sonra dosya türü olarak tüm dosyalar seçilir.
Program kaynak kodu kaydedilirken dosya adının sonuna .c eklenir ve böylece programın kaynak kodunun C tabanında yazıldığı programa tanıtılır.
Yazığımız programı çalıştırmak için ilk önce derlememiz gerekir.
Çalıştır menüsündeki derle komutuyla derleriz.(Derledikten sonra uygulamanın .exe uzantılı win32 uygulaması otomatik olarak program kaynak kodunun olduğu klasörde oluşturuluyor.) Eğer doğru derlenebilirse aynı menüden çalıştır'ı seçerek programımızı deneyebiliriz.

DERS 1: C Programlamaya Giriş ve Temel Giriş Çıkış İşlemleri

Klavyeden girdi alabilmek için;
KOD
scanf()
komutunu kullanıyoruz.
Ekrana çıktı verebilmek için de
KOD
printf()
komutunu kullanıyoruz.

Burada komut isimlerinden sonra () kullanılması, onların birer fonksiyon olduğunu sisteme tanıtır.

İlk programımızı yazalım ve beraber inceleyelim.

KOD
#include<stdio.h>
main ( void )
{
     printf("Merhaba PCL");
}


Birçoğumuzun tahmin ettiği gibi program sadece ekrana Merhaba PCL yazmakla yükümlü.

1- İlk iki satır C programlama dili için standart iki satır. Yani her programın başında bulunması gerekiyor. İlk satırdaki #include<stdio.h> bir kütüphaneyi programa dahil etmeye yarar. main ise C'de programın ana fonksiyonudur. void yani hiç alıp bir tamsayıya döndürür.
2- { yani tırnaklı parantez işareti asıl kod kısmının başladığını gösteriyor.
3- printf() komutunu kullanarak ekrana yazılar yazılmasını sağladık. Burada dikkat etmemiz gerekenler yazılması gereken metnin tırnak işaretleri içerisinde yazılması gerektiği.
4- Kodumuzun işlevi bittikten sonra ; koyarız. Bu kodun bittiğini gösterir. Diğer satıra geçebiliriz, aynı satırdan devam edebiliriz. Ama kodlama kolaylığı açısından alt satırlara doğru inmek ve satırları uzun tutmamak iyi oluyor.
5- } işareti de programın bittiğini işaret eder.
6- Komutlar arasında boşuk bırakmak, satır atlamak birşey kodlama açısından birşey ifade etmiyor.

Yani
KOD
#include<stdio.h>
main ( void )
{ printf("Merhaba PCL");}


şeklinde de yazsanız birşey değişmiyor.

Eğer yukarıdaki kodu merak edip derlediyseniz, hatasız olduğunu fakat bir anda ekrana gelip kapandığını görürsünüz. Öyleyse programımızı biraz daha geliştirelim.

KOD
#include<stdio.h>
main ( void )
{
     printf("Merhaba PCL");
     getchar( );
         return 0;
}


Burada 2 yeni satır ekledik.
return 0 komutu main fonksiyonunun bir tamsayı istemesine karşılık yazılmıştır. Yani programımızın hata vermemesi içindir.

getchar( ) komutu ise programın yaptığı işlem (şu anda bizim programımızda ekrana Merhaba PCL yazmak) bittiğinde programın sonlanmaması için klavyeden bir tuşa basılmasını bekler. Yani karakter isteme fonksiyonudur.

Get ingilizcede getirmek, elde etmek anlamına gelirken, char da karakter manasını taşımaktadır. Kodlarda hep öyle ingilizce kelimeler veya kısaltmaları kullanılıyor. printf() komutu da öyle mesela şu ana kadar öğrendiklerimizden.

İlk ders bitti. Hadi hayırlı olsun.

Bu mesaj seyfulislam tarafından düzenlendi: 20 Mayıs 2008 - 01:34


#2
calugor

calugor
  • Üye
  • 640 Mesaj sayısı:
return 0; zaten sonlandırıyor getchar() çağrılmaz. yeni compilerlar uyarı verir. büyük ihtimalle getchar(); return 0; demek istedin.
ayrıca return 0; dediğin de int main( void ){...} diye tanımlamak gerekir

KOD
#include <stdio.h>
int main( void )
{
     printf("Merhaba PCL\n");
     getchar( );
     return 0;
}


#include <stdio.h> //-> standard girdi çıktı kütüphanesi tongue.gif
int main( void ) //-> main fonksiyonu void(hiç) alır int(integer/tamsayı) döndürür
printf("Merhaba PCL\n"); //-> "Merhaba PCL\n" yazar \n tek karakter olup, yeni satıra geçmesini sağlar
getchar( ); //-> ?
return 0; //-> 0 döndür, herşey iyi

Bu mesaj calugor tarafından düzenlendi: 20 Mayıs 2008 - 01:21


#3
Seyfulislam

Seyfulislam
  • Üye
  • 1.672 Mesaj sayısı:
ALINTI(calugor @ 20-05-2008, 02:14:24) Mesajı Gör
return 0; zaten sonlandırıyor getchar() çağrılmaz. yeni compilerlar uyarı verir. büyük ihtimalle getchar(); return 0; demek istedin.
ayrıca return 0; dediğin de int main( void ){...} diye tanımlamak gerekir

KOD
#include <stdio.h>
int main( void )
{
     printf("Merhaba PCL\n");
     getchar( );
     return 0;
}


#include <stdio.h> //-> standard girdi çıktı kütüphanesi tongue.gif
int main( void ) //-> main fonksiyonu void(hiç) alır int(integer/tamsayı) döndürür
printf("Merhaba PCL\n"); //-> "Merhaba PCL\n" yazar \n tek karakter olup, yeni satıra geçmesini sağlar
getchar( ); //-> ?
return 0; //-> 0 döndür, herşey iyi


Mesajı biraz düzenledim. hatalarımı söylediğin için sağol. Getchar( )==> Klavyeden komut istiyor. Herhangi birşey yazıp enter'a basınca program kapanıyor haliyle.

\n yani satır atlamaya diğer derste devam edecektim zaten. Ama söylemiş oldun. smile.gif

Bu mesaj seyfulislam tarafından düzenlendi: 20 Mayıs 2008 - 01:35


#4
DrÇakır

DrÇakır
  • Moderatör
  • 15.651 Mesaj sayısı:
C'de herşey fonksiyonlar üzerine kuruludur. Stdio.h ve Conio.h gibi çok kullanılan kitaplık (library) diğer ve daha çok kullanılan deyimiyle başlık (header) dosyaları içinde programda kullanmak istediğiniz hazır fonksiyonlar bulunur. Bir fonksiyonu kullanabilmek için o fonksiyonun olduğu başlık dosyasını bilmeniz ve #include ile programa dahil etmeniz gerekir. Öğrenme aşamasında en çok kullanılan başlık dosyaları yukarıda da belirttiğim stdio.h, conio.h ve stdlib.h'dir. Bu başlık dosyaları sırasıyla, Standat Girdi/Çıktı işlemleri, Ekran işlemleri ve Standart kütüphane fonksiyonlarını barındırırlar.


Not: Seyfulislam konunu böldük kusura bakma.

#5
beyazkartal

beyazkartal

    DotNet 46.0

  • Üye
  • 860 Mesaj sayısı:
Seninle bir ara görüşelim o zamana saklıyorum hesabı tongue.gif Hayırlı olsun bir yerden başladın ya gerisi gelir.Bu arada sakın dersleri ihmal etme. wink.gif

#6
Seyfulislam

Seyfulislam
  • Üye
  • 1.672 Mesaj sayısı:
ALINTI(DrÇakır @ 20-05-2008, 09:33:10) Mesajı Gör
C'de herşey fonksiyonlar üzerine kuruludur. Stdio.h ve Conio.h gibi çok kullanılan kitaplık (library) diğer ve daha çok kullanılan deyimiyle başlık (header) dosyaları içinde programda kullanmak istediğiniz hazır fonksiyonlar bulunur. Bir fonksiyonu kullanabilmek için o fonksiyonun olduğu başlık dosyasını bilmeniz ve #include ile programa dahil etmeniz gerekir. Öğrenme aşamasında en çok kullanılan başlık dosyaları yukarıda da belirttiğim stdio.h, conio.h ve stdlib.h'dir. Bu başlık dosyaları sırasıyla, Standat Girdi/Çıktı işlemleri, Ekran işlemleri ve Standart kütüphane fonksiyonlarını barındırırlar.


Not: Seyfulislam konunu böldük kusura bakma.


Yok böyle herkes bildiklerini yazarsa öğrenen açısından daha iyi olur kanımca. Derslerin yanında pratik ipuçları gibi oluyor deneyimleri paylaştıkça. Bugün de 1 konu devam ederim herhalde...

#7
Seyfulislam

Seyfulislam
  • Üye
  • 1.672 Mesaj sayısı:
DERS 2: prinf() Fonksiyonuna Dair

printf ekrana birşey yazdrmak için kullandığımız komut. Printf ile altsatıra geçme ve birkaç küçük numara var bu derste.

printf ile bir alt satıra geçmek için \n fonksiyonunu kullanırız. Bunu istediğimiz bir yerde kullanabiliriz. Birkaç örnekle açıklayayım;

KOD
#include<stdio.h>
int main( void )

{
     printf("Merhaba PCL");
     printf("Herkes burada mı?");
     getchar( );
     return 0;    
}


şeklinde bir komut ekrana Merhaba PCLHerkes burada mı? şeklinde yazı yazar. Bizim kodu yazarken kod üzerinde satır atlamış olmamız birşey ifade etmiyor.

Bunu şu şekilde yazarsak satır atlamış oluruz;

KOD
#include<stdio.h>
int main( void )

{
     printf("Merhaba PCL\n");
     printf("Herkes burada mı?");
     getchar( );
     return 0;    
}


Yada şöyle;

KOD
#include<stdio.h>
int main( void )

{
     printf("Merhaba PCL");
     printf("\nHerkes burada mı?");
     getchar( );
     return 0;    
}


Ya da;

KOD
#include<stdio.h>
int main( void )

{
     printf("Merhaba PCL\nHerkes burada mı?");
     getchar( );
     return 0;    
    
}


Bu üç örnek de ekrana;

Merhaba PCL
Herkes burada mı?

yazdıracaktır.


Şimdi gelelim printf fonksiyonu ile ekrana tırnak işareti bulunan bir metin yazmaya.

Bilgi: Printf fonksiyonu sonrasında gelen parantez içerisindeki yazıyı ekrana yazdırır ve bu yazdırma esnasında ilk iki tırnak işaretini esas alır. Yani ekrana "Haydi C Öğrenelim" yazdırmak için;

KOD
#include<stdio.h>
int main( void )

{
     printf(""Haydi C Öğrenelim"");
     getchar( );
     return 0;    
    
}


şeklinde yazamıyoruz malesef. Program bunu algılayamaz. Bunu yazabilmek için "işaretinin oradaki fonksiyona ait olmadığını bildirmemiz gerekir. Bunun için de \" kullanırız. Yani;

KOD
#include<stdio.h>
int main( void )

{
     printf("\"Haydi C Öğrenelim\"");
     getchar( );
     return 0;    
    
}


kodunu çalıştırırsak ekrana yazar.


getchar( ); return 0; fonksiyonları kafanızı karıştırmasın. Bir önceki derste ne işe yaradığını belirtmiştik. Bir dersimiz de burada sona erdi. smile.gif





#8
DrÇakır

DrÇakır
  • Moderatör
  • 15.651 Mesaj sayısı:
Printf fonksiyonunun görevi ekrana belirtilen yazıyı istenilen formatta ekrana yazdırmaktır. Bir sayıyı veya metni istenilen formatta ekrana yazdırabilirsiniz. C'de özel anlamlara gelen bazı karakterleri ekrana yazdırmak için ise "\" (ters bölü) işareti kullanılır. Bu direktif C derleyicisine sonraki karakterin özel bir anlamı olduğunu belirtir. Bu özel karakterlerden bazıları şunlardır;

1- \n imleçi bir alt satır başına konumlandırır.
2- \" ekrana " yazdırır.
3- \r bulunduğu satırın başına gider
4- \t yatay sekme (tab) başka türlü ayarlanmadıysa imleçi 8 karakter sağa gönderir.
5- \\ ekrana \ yazdırır.

Bu karakterleri gerektiğinde bu şekilde kullanabilirsiniz.

printf("\" PCLabs \" forumlarına hoşgeldiniz.\n\tBu forumda bilgisayar donanımı ve yazılımları hakkında bilgiler bulabilirsiniz.");

#9
calugor

calugor
  • Üye
  • 640 Mesaj sayısı:
zamanında güzel bulduğum bir derleyici. sadece C için
http://www.smorgasbordet.com/pellesc/

#10
calugor

calugor
  • Üye
  • 640 Mesaj sayısı:
c++'a geçeriz diye ümitlenmiştim

#11
calugor

calugor
  • Üye
  • 640 Mesaj sayısı:
temel veri tipleri
unsigned

char
character karakter, tek bir karakter
char cvb = 'A';
notlar:....

int
integer yani tamsayı
int klm = 1;
notlar:...

short, long

float
floating point, kayan nokta yani hassaslığı az ondalıklı sayı
float jkl = 1.1f;
notlar:...

double
double precision floating point, float'ın hassaslığı ikiye ktlanmış hali
double fgh = 1.2345;
notlar:...


... bunu daha sonra değiştiremeyeceğim galiba sad.gif

Bu mesaj calugor tarafından düzenlendi: 26 Haziran 2008 - 02:05


#12
Seyfulislam

Seyfulislam
  • Üye
  • 1.672 Mesaj sayısı:
Arkadaşlar, C çalışmya başladığım zaman programlama fazlasıyla sarıyor ve devamını istiyorum. ÖSS maratonuna da bu sene girdiğim için bilgisayardan uzunca bir süre kopmam ( minimum kullanmam ) gerekiyor. Programlama falan fazla sararsa bırakamam sonrası vahim olur ÖSS açısından... smile.gif

Yani burada yazdıklarımın 5-6 ders ilerisinde çalışmayı bıraktım. smile.gif İsteyen kaldığım yerden devam edebilir. biggrin.gif

#13
ceryan

ceryan
  • Üye
  • 3 Mesaj sayısı:
Çok guzel bır paylasım ogrenmek ısteyenlere cok yardımcı olacaktır bu notlar gercı bana gerek kalamdı bılısım egıtımde gırdım kurslara ama bı ara notlarımı paylasmayı dusunuyorum detaylı olarak.