Anasayfa > C Programlama - I > C Programlama Dersi – I

C Programlama Dersi – I

Bu yazıda öğrenecekleriniz:
– Bilgisayar ve Programlama nedir?
– Program yazmak için gerekli araçlar ve temin edebileceğiniz adresler
– Algoritma geliştirme ve bunun üzerine basit bir örnek
– printf fonksiyonunun kullanımı ve bununla ilgili örnekler

Merhaba;

Sanırım, C ve C++ adını bilgisayarla az çok haşır neşir olan herkes en az bir kez
duymuştur. Sizde bu isimleri duyanlardansanız ve nedir, ne değildir,
nasıl kullanılır gibi birçok soruya yanıt arıyorsanız, doğru yerdesiniz.
Çünkü bu yazıyla başlayarak C ve C++ ile programlamaya gireceğiz.
Önce C ile yolumuza koyulup, belli bir olgunluğa ulaştıktan sonra C++ ile devam
edeceğiz.

Okuyucularımızın genelini düşünerek, konuyu en temelden almayı daha doğru buldum.
Yani hedefimiz, programlamayı hiç bilmeyen bir insanın burada okuduklarıyla belli bir
yerlere ulaşması. İleri derece de olanlarsa sıkılmamak için biraz beklemeli. Lafı fazla
uzatmadan başlayalım.

Bilgisayar ve Programlama nedir?

Bilgisayar çok basit düşündüğümüzde üç ana görevi yerine getiren bir makinedir.
Girilen bilgiyi alır (INPUT), işler (PROCESSING) ve bu işlenmiş veriden
bir sonuç (OUTPUT) çıkarır. Bilgisayar, sadece donanım olarak çalışmaz.
Çünkü yazılım olmadan, donanım ne yapacağını bilemez. Bilgisayar donanımına ne
yapacağını söyleyecek bir komutlar dizisi gerekir. Yapacağı görevleri, ona anlatan
komutlara program diyebiliriz. Yani donanıma “sen şunu yap, sonra bulduğun sonucu
şöyle şuraya ekle” gibisinden işler yaptırmak programın veya bir başka deyişle
yazılımın işidir. Bir programcı olarak bundan fazlasını bilmek elbette ki avantajdır.
Ama bilgisayarın bütün özelliklerini bilmeniz gerekmez. Yani yazacağınız bir program
için o bilgisayarın özelliklerini bilmeseniz de olur.

Bilgisayarın anladığı tek dil, Makine Dilidir. Bu 16’lık (Hexadecimal) sistemden
oluşan bir programlama tipidir. Makine dilini anlamak çok zordur ve bu dili kullanmak
için o bilgisayarın donanım özelliklerini mutlaka bilmeniz gerekir. C de ekrana yazı
yazmanızı sağlayan “printf();” gibi çok basit bir fonksiyon, makine dilinde
1A BB 0D BC D5 FF C2 F7… gibi çok daha karmaşık ve hiçbir anlam ifade etmeyen bir
hâle dönüşür. Makine dili programlama dilleri arasında en alt seviyedir.

Makine dilinden sonra Assembler Dili gelir. Makine dilini kullanmanın zorluğu ve
karmaşası üzerine geliştirilen Assembler, daha basit bir yapıdadır. Ama yine de C ile
mukayese ederseniz çok daha zordur ve kullandığınız bilgisayarın donanımına dair
hâlen bilgiye gereksinim duyarsınız. Assembler aşağıdaki gibi karmaşık bir
yapıdadır.

SEGMENT COM WORD PUBLIC ‘CODE’
ASSUME CS : COMDS : COM
      ORG 100H
ENTRY: MOV DVX,OFFSET MSG
       MOV AH,g
          .
          .
          .

Şuan bunu anlamaya çalışıp, hiç zamanınızı harcamayın. Çünkü öğreneceğimiz dil C,
işlerimizi ve dolayısıyla hayatımızı çok daha kolaylaştırmaktadır. C, orta seviye
bir programlama dilidir. Bunun anlamı, hem yazması kolay, hemde üst seviye dillere
göre daha çok erişim hakkınızın olduğudur. Üst seviye programlama dilleri ise BASIC,
PASCAL, gibi dillerdir. Üst seviye dillerde, yazması göreceli olarak daha kolay
olsa da C ile yapabileceklerimiz daha çoktur.

Program yazmak için ne gerekir?

Program yazabilmek için hiçbir şeye ihtiyacınız yoktur.
Program yazmak için Windows’un not defterini veya Linux’da Gedit, Kwrite gibi bir program
bile kullanabilirsiniz. Önemli olan yazılan programın derlenmesidir. Derlemeye
“compile” ve derleme işini yapan derleyiciyeyse “compiler” denir. C için internet
üzerinden birçok Compiler bulabilirsiniz. Ben, program uygulamalarını
GCC üzerinden
yapacağım. Aynı şekilde bu derleyiciyi kurmanızı tavsiye ederim. GCC gelmiş geçmiş en
iyi derleyicilerden biri olduğu gibi, özgür bir yazılımdır! Richard Stallman
tarafından açık kaynak koduyla sunulmuştur ve arzu ettiğiniz takdirde, sonuna kadar
değişiklik yapma imkanınız vardır.

Şayet Windows işletim sisteminiz varsa GCC’yi kurmanız biraz sıkıntılı olabilir.
Basit bir Google araştırmasıyla,
Bloodshed Dev-C++ adında bir
program buldum. GCC üzerine kurulmuş bir yapısı varmış. GCC ile uğraşmak istemeyen
Windows kullanıcıları, bu programı deneyebilir.

Algoritma Geliştirmek

C dilini ve komutlarını öğrenmek, programlamaya başlamak için şarttır ama algoritma
oluşturamadığımız sürece bir program oluşturmazsınız. Algoritma, mantıktır. Yani neyi,
nasıl yapacağınızı belirtir. Algoritma türetmek için geliştirilmiş bir metot yok.
Her program için o metodu sizin bulmanız gerekiyor. Ama hiç merak etmeyin, yazdığınız
program sayısı arttıkça, algoritma kurmanız daha kolaylaşır.

Algoritma, programlamanın bel kemiğidir. C dilinde kullanılan komutlar, BASIC veya
FORTRAN gibi başka dillerde işe yaramaz. Fakat programlama mantığını bir kere
oturttursanız, C komutlarının yerine pekâlâ başka dillere ait komutları da
öğrenebilir ve büyük bir zorluk çekmeden diğer dillerde de program yazabilirsiniz.

Basit bir örnek üzerinden düşünelim. Bir markete gittiniz, kasada ki görevliye
aldığınız ürünü gösterdiniz, parayı uzattınız, paranın üstünü aldınız. Günlük hayatta
gayet normal olan bu durumu biraz değiştirelim. Karşınızda insan değil, elektronik bir
kasiyer olsun. Ona göre bir algoritma geliştirirsek,

1-) Ürüne bak;

2-) Ürün Fiyatını bul;

3-) Parayı al;

4-) Alınan paradan ürün fiyatını çıkar;

5-) Kalan parayı ver.

İnsan zekasının otomatik hâle getirdiği eylemleri, ne yazık ki bilgisayar bilmez
ve ona biz öğretmek zorundayız. Öğretirken de hata yapma hakkımız yoktur,
çünkü yanlış öğreti yanlış programlamayla sonuçlanır.

C Programlama Dili


Temel Giriş/Çıkış İşlemleri (BASIC I/O):

C ile ilgili olarak bu ve önümüzdeki yazılarda birçok komut/fonksiyon göreceğiz. Ama hep kullanacağımız ve ilk öğrenmemiz gerekenler temel giriş çıkış fonksiyonlarıdır. C de klavyeden bir değer alabilmek için scanf(); fonksiyonunu kullanırız. Ekrana herhangi bir şey yazdırmak içinse printf(); fonksiyonu kullanılır.

Bir örnekle görelim;

#include<stdio.h>
int main( void )
{
	printf("Hello World");
}

Eğer bunu derleyicinizde yazıp derlerseniz ve sonrasında çalıştırırsanız ekrana
Hello World yazılacaktır. #include<stdio.h>, standart giriş çıkış başlık dosyasını,
programa dahil et gibi bir anlam taşır. C’de (ve hemen hemen bütün diğer programlama
dillerinde) bir kütüphaneyi dahil etmek son derece rutin bir iştir. Aksi halde
giriş-çıkış fonksiyonlarını dahi her seferinde bizim baştan tanımlamamız gerekirdi.

main( ), bir programdaki ana fonksyiondur. Ondan sonra gelen ayraç standarttır. Bir bloğu temsil eder.
İki ayraç işareti arasındaki alan main fonksiyonuna ait bir bloğu oluşturur. printf ise
yazdığımız metini, ekrana bastırmaya yarayan, standart bir fonksiyonudur.
Çift tırnak işaretleri içersine yazdığınız herşey printf sayesinde ekrana basılır.

Dikkat ettiyseniz, her satır sonuna noktalı virgül koyduk. Aslında her satır değil,
her komutan sonra noktalı virgül koyduğumuzu söylemek daha doğru olacak. Çünkü noktalı
virgül C dilinde komut ayracı anlamına gelir.

Şimdi yukarıda yazdığımız basit programı, biraz daha geliştirelim:

#include<stdio.h>
int main( void )
{
	printf("Hello World\n");
	printf("Merhaba Dünya");
	return 0;
}

Birkaç yeni satır görüyorsunuz. Sırayla ne olduklarını açıklayalım. Az evvel yazdığımız
“Hello World” yazısının sonuna “\n” ekledik. “\n” bir alt satıra geç anlamına geliyor.
Eğer “\n” yazmazsak, ekranda “Hello WorldMerhaba Dünya” şeklinde bir yazı çıkar.
“\n” kullanırsak, “Hello World” yazıldıktan sonra, bir alt satıra geçilir ve ikinci
satırda “Merhaba Dünya” yazdırılır. En altta “return 0;” adında
yeni bir komut fark etmişsinizdir. Bunu eklemezseniz, program yine çalışır;
ancak uyarı verir. Çünkü main fonksiyonu, geriye bir tam sayının dönmesini beklemektedir.
Yazmış olduğumuz return ifadesiyle bu uyarılardan kurtulabilirsiniz. Detayına girmek
için henüz erken, return konusuna ileride değineceğiz.

Yukarıda ki programın aynısını şöyle de yazabilirdik:

#include<stdio.h>
int main( void )
{
	printf("Hello World");
	printf("\nMerhaba Dünya");
	return 0;
}

Bir önce ve şimdi yazdığımız programların ekran çıktısı aynıdır. Bu örnekle anlatmak
istediğim, printf(  ) fonksiyonunda ‘\n‘ konulan yerden sonrasının
bir alt satıra düşeceğidir.

#include<stdio.h>
int main( void )
{
	printf("Hello World\nMerhaba Dünya");
	return 0;
}

Gördüğünüz gibi tek bir printf(  ); kullanarak aynı işlemi yaptırdık.

Varsayalım, ekrana çok uzun bir cümle yazmamız gerekti. Örneğin;

#include<stdio.h>
int main( void )
{
	printf("Benim adım Ça ve Böte Öğrencisiyim.\n");
	return 0;
}

Bu yazdığımız program hata vermemesine karşın, çalışma verimini azaltır.
Çünkü yazacaklarınız editör penceresine sığmazsa, yazılanı okumak
daha zahmetli olur. Önemsiz bir detay gibi gelebilir, ama kod yazma verimini
ciddi oranda düşüreceğinden emin olabilirsiniz.

Bu programı aşağıdaki gibi yazmamız daha uygundur:

#include<stdio.h>
int main( void )
{
	printf("Benim adım "
		"Ça"
		"ve Yazılım Mühendisiyim.\n");
	return 0;
}

Tek bir printf(  ); fonksiyonu kullanılmıştır. Ancak alt alta yazarak, metini
tek seferde görülebilir hâle getirdik. Programı derleyip çalıştırırsanız, alt alta üç
satır yazılmaz. Cümle bütün olarak gösterilir ve bir önceki örnekle tamamen aynıdır.
(Satırların alt alta görünmesini isteseydik; daha önce bahsettiğimiz gibi ‘\n
koymamız gerekirdi.)

Ekrana, Ali: “Naber, nasılsın?” dedi. şeklinde bir yazı yazdırmamız gerekiyor diyelim.
Bu konuda ufak bir problem yaşayacağız. Çünkü printf(  ); fonksiyonu gördüğü ilk iki çift
tırnak üzerinden işlem yapar. Böyle bir şeyi ekrana yazdırmak için aşağıdaki gibi bir
program yazmamız gerekir:

#include<stdio.h>
int main( void )
{
	printf("Ali: \"Naber, nasılsın?\" dedi.\n");
	return 0;
}

printf(  ); fonksiyonunu kullanmayı sanırım iyice anladınız. printf( yazıp,
sonra çift tırnak açıyor, yazmak istediklerimizi yazıyor, çift tırnağı sonra da
parantezi kapatıyor, sonuna noktalı virgül ekliyoruz. Alt satıra geçmek içinse,
yazdıklarımızın sonuna ‘\n‘ ekliyoruz. Çift tırnaklı bir şey kullanmak
içinse \“ … \” kullanıyoruz. Hepsi bu!

scanf(); fonksiyonuna gelince, bu başında bahsettiğimiz gibi bizim giriş (Input)
fonksiyonumuzdur.



  <<   Menu                                                                                  C Programlama Dersi – II   >>


  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: