C İLE PROGRAMLAMAYA GİRİŞ
DERS-1 ( Algoritma, Standart Girdi-Çıktı İşlemleri, Değilen Tanımı ve Kullanımı )
Bu yazı dizisinde programlama öğrenmek veya C dilini öğrenmek isteyen arkadaşlara yardımcı olmayı amaçlıyorum. Vakit bulabildiğim ve üşenmediğim sürece yazı dizisini sürdürmeyi planlıyorum.
ALGORİTMA
Programlamaya başlamadan önce algoritma nedir, ne işe yarar ve nası kurulur ona değinmek istiyorum. Çünkü zira programlamanın temeli algoritma kurmaktır, algoritmanızı kurduktan sonra gerisi o dilin syntax’ını kullanarak algoritma gerçekleştirmektir. Burada syntax dediğimiz şey progamlama dilinde bir anlam bir komut içeren kelimelerdir. Algoritma, programı yazmadan önce, probleme yönelik çözüm geliştirme sanatıdır. Sanattır, çünkü bir problemin birden çok çözüm şekli olabilir ve bu programcının kendi mantığına, yoluna kalmış bir şeydir. Algoritma kurarak, programımızı yazarken ne yaptığımızı bilerek ilerleriz, kodların içinde kaybolmayız. Kod yazmaya başlamadan önce yol haritamızı çıkarmış oluruz. Başlangıçta, program yazmadan önce bir kağıda algoritmanızı yazmanızı öneririm. Bunu yazarken şekiller şemaller var genel kabul görmüş, fakat yani önce şunu yapacağım sonra bunu sonra bunu gibi yazsanız da olur, şekille filan uğraşana kadar. Neyse ben örnek bir algoritma kuruvereyim mesela. Kaba yazı şeklinde kuracağım algoritmayı bende =)
Problem: Girilen 3 sayının ortalamasını bulmak.
Algoritma:
Başla
Birinci sayıyı al,
İkinci sayıyı al,
Üçüncü sayıyı al,
Üç sayıyı topla üçe böl,
Sonucu ekrana yazdır,
Bitti.
Algoritmayı kurduktan sonra geriye kalan bu algoritmayı istediğimiz dil ile kodlamak.
C PROGRAMLAMAYA GİRİŞ TEMEL GİRDİ ÇIKTI İŞLEMLERİ VE DEĞİŞKENLER:
Temel algoritma kavramını verdikten sonra C ile kodlamaya girmek istiyorum yavaş yavaş. Bir dili kodlamak için aslında derleyici tek başına yeterlidir ama genel olarak IDE (Integrated Development Environment) yani bütünleşik geliştirme ortamı kullanılır. Bu IDE denen zımbırtının içinde compiler, linker, debugger ve editor bulunur. Compiler yazdığımız üst seviye programlama dili kodlarını (Üst seviye dil: C, java, python…) alt seviye dile makine diline çevirir (assembly). Debugger koddaki hataları bulur hataların satırlarını gösterir ve aslında daha detaylı işlerde yapar. Linker ise yazdığımız kodu o işletim sistemine uygun hale dönüştürür (Örneğin windows için .exe). Editor ise kodlarımızı yazdığımız yerdir. C kodları için CodeBlocks adlı IDE’yi kullanabilirsiniz (İndir)
Şimdi yukarıdaki algoritmayı koda dökelim. Öncelikle şunu belirteyim ki // işareti açıklama satırı yazmak için kullanılır ve derleyici bu işaretten sonra yazılanları görmezden gelir. Bunları sizde programlarınızda kullanabilirsiniz. Ben kodu açıklama için kullanacağım bunları.
Başla
Birinci sayıyı al,
İkinci sayıyı al,
Üçüncü sayıyı al,
Üç sayıyı topla üçe böl,
Sonucu ekrana yazdır,
Bitti.
#include <stdio.h>
int main(){
int a,b,c,sonuc;
printf("1.sayiyi girin:");
scanf("%d",&a);
printf("2.sayiyi girin:");
scanf("%d",&b);
printf("3.sayiyi girin:");
scanf("%d",&c);
sonuc=(a+b+c)/3;
printf("Sonucumuz: %d",sonuc);
return 0;
}
Şimdi buradaki satırları açıklayayım.
İlk satır #include<stdio.h>
Bu satır programda kullancağımız kütüphaneyi belirler. Örneğin bizim kullandığımız standart input output yani standart girdi çıktı <stdio.h> kütüphanesinde scanf() printf() gibi fonksiyonlar mevcut. Printf ile ekrana birşey yazdırıyoruz, scanf ile de kullanıcıdan girdi alıyoruz. Bu gibi kütüphaneler sayesinde tekerleği yeniden icat etmemize gerek kalmıyor. Kütüphanlere olmasaydı ekrana birşey yazmak, kullanıcıdan bilgi almak gibi fonksiyonların herbirini kendimiz kodlamamız gerekirdi.
Ardından gelen int main() ise programın ana bloğunun başladığını gösterir. Algoritmamızdaki Başla kelimesi. Ardından gelen küme parantezi o bloğun başladığını belirtir, blok biterken de diğer küme parantezi ile bloğu kaparız.
int a,b,c,sonuc; satırında ise değişken tanımlıyoruz. Bu satırda a, b, c ve sonuc adında 4 değişken tanımladık. Bu değişkenlerin herbiri içinde bir bilgi saklayacak. Bunların başında kullandığımız int ise o değişkenin türünün integer yani tam sayı olduğunu gösterir. Eğer o değişkenler karakter tutacak olsalardı bu sefer int yerine char yazacaktık.
printf(“1.sayiyi girin”); satırında ise printf, ekrana yazma fonksiyonudur. Fonksiyonlar her zaman parantez alır. printf() gibi. Printf fonksiyonunun içindeki tırnaklar arasına yazdıklarımız ekranda olduğu gibi gözükür.
scanf(“%d”,&a); burada scanf fonksiyonu kullanıcıdan bilgi alır. Parantezin içindeki “%d” kısmı alacağımız bilginin tamsayı olduğunu belirtir. Karakter alsaydık %c diycektik. Virgülden sonra gelen &a ise aldığımız bilgiyi a değişkeninin içine at demek.
sonuc=(a+b+c)/3; satırı ise bildiğiniz matematiksel işlem. Ama burada dikkat edilmesi gerekn kısım o = bildiğimiz eşittir değil
sonuc değişkeninin içine sağ taraftaki bilgiyi at demek. Bildiğimiz anlamda eşittir için iki tane yanyana eşittir yazmamız gerek == şeklinde.
printf(“Sonucumuz: %d”,sonuc); satırında ise tırnağın içi aynı yazılırken, %d oraya bir tamsayı geleceğini belli eder. O tamsayı da tırnaktan sonra gelen virgülden sonra yazan sonuc adlı değişkendir. Dikkat ederseniz sonuc değişkeni tırnağın dışına yazılmıştır.
return 0;
}
satırları ise şimdilik bitti manasına geliyor diye bilin
Bu bilgiler ışığında basit bir C programı yazabilirsiniz.