C ve C++ içinde C programlama kursu.... konusu , arkadaşlar c programlama dilini öğrenmek isteyenlere bir nevi kurs niteliğinde bi başlık açmaya karar verdim... bu şekilde hem ben okulda öğrenmiş olduklarımı geliştirmiş olacam hemde bilmeyen ve öğrenmek isteyenler faydalanmış ...
|
|
|||||||
| KAYIT OL | Yönetim Takımı | Üye Listesi | Tüm konuları okunmuş kabul et |
|
|
#1 (permalink) |
|
EN Afilli
![]() Üyelik Tarihi: 18-12-2005
Yaş: 21
Mesajlar: 1,231
Rep Gücü: 124
Rep Puanı: 7683
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
arkadaşlar c programlama dilini öğrenmek isteyenlere bir nevi kurs niteliğinde bi başlık açmaya karar verdim... bu şekilde hem ben okulda öğrenmiş olduklarımı geliştirmiş olacam hemde bilmeyen ve öğrenmek isteyenler faydalanmış olacak... Dersleri hazırlarken kaynak ve rehber olarak Deitel & Deitel'in C ve C++ adlı kitabını kullanıyorum. İsteyenler buradan kitap hakkında daha fazla bilgiye sahip olabilir... Dersler hemen hemen bu kitaba paralel ilerleyecek bu yüzden buradan ayrıntılı indexe gözatabilirsiniz... Programları yazarken ve derlerken Turbo C programını kullanıcaz bunun nedeni ise boyutunun ufak ve ilk aşamalarda bize yetecek bi compiler(derleyici) olmasıdır. Aşağıdaki linklerden programı download edebilirsiniz boyutu yaklaşık 1.2 MB; MS-DOS tabanlı bir program olduğundan dolayı kullanım açısından biraz farklılıklar ve WinXP'de çok ufak bi ayar gerektiyor. Kullanımı hakkında bilgi almak için buraya tıklayınız. Daha profesyonel bir editör olan Borland C++ 5.02 kullanmak isteyenler buraya tıklayabilir... Ayrıca ekstra kaynak isteyenler bu konuya da gözatmalarını öneririm buradan konuya ulaşabilirsiniz. Şimdiye kadar aşağıdaki dersler yayınlanmıştır. - Dersler - * Ders 1 (İlk Programımız) * Ders 2 (Kullanıcıdan Bilgi Alma scanf Fonksiyonu) * Ders 2,5 (Aritmetik İşlemler) * Ders 3 (Değişken Türleri) * Ders 4 (matıksal sınamalar - if else) * Ders 5 (çoklu seçim – switch case) Konu tnsezer tarafından (11-04-2006 Saat 23:35 ) de değiştirilmiştir. |
|
|
|
|
|
#2 (permalink) |
|
EN Afilli
![]() Üyelik Tarihi: 18-12-2005
Yaş: 21
Mesajlar: 1,231
Rep Gücü: 124
Rep Puanı: 7683
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
- Ayrıntılı İndex - C ile Programlamaya Giriş * C ile basit programlar yazabilmek * Basit giriş/çıkış ifadelerini kullanabilmek * Temel veri tiplerini tanımak * Bilgisayar hafızasını kullanmayı anlamak * Aritmetik operatörleri kullanabilmek * Aritmetik operatörlerin önceliklerini anlamak * Basit karar verme ifadeleri yazabilmek C'de Yapısal Program Geliştirme * Temel problem çözme tekniklerini anlamak * Yukarıdan aşağıya adımsal iyileştirme süreciyle algoritmalar geliştirebilmek * İf ve if/else yapılarını uygun yerde kullanarak işlemleri seçebilmek * While yapısını programlarda uygulayarak, ifadeleri tekrar çalıştırabilmek * Sayıcı kontrollü döngü ve nöbnetçi kontrollü döngüleri anlamak * Yapısal programlamayı anlamak * Arttırma, azaltma ve atama işlemlerini kullanabilmek C'de Program Kontrolü * For ve do/while döngü yapılarını kullanabilmek * Switch seçim yapısını kullanarak çoklu seçimler yapabilmek * Program kontrolünde break ve continue kullanabilmek * Mantık operatörlerini kullanabilmek Fonksiyonlar * Fonksiyon adı verilen küçük parçalarla modüler programlar oluşturabilmeyi anlamak * C standart kütüphanesinde içinde yer alan genel matematik fonksiyonlarını tanımak * Yeni fonksiyonlar oluşturabilmek * Fonksiyonlar arasında bilgi aktarımını sağlayan yöntemleri anlamak * Rasgele sayılar üreterek benzetim (simulation) tekniklerini tanıtmak * Kendi kendini çağırabilen fonksiyonları yazabilmek ve nasıl kullanılacaklarını anlamak Diziler * Dizi yapısını tanıtmak * Dizilerin değerleri depolama, sıralama ve listeleri arama ile değer tablolarını oluşturmada kullanımlarını anlamak * Bir dizinin nasıl bildirileceğini, bir diziye nasıl ilk değer atanacağını ve dizideki bağımsız elemanların nasıl çağırılacaklarını anlamak * Dizileri fonksiyonlara geçirebilmek * Temel sıralama tekniklerini anlamak * Çok boyutlu dizileri bildirebilmek ve kullanabilmek Göstericiler * Göstericileri kullanabilmek * Referansa göre çağırma ile fonksiyonlara argüman geçirmede göstericileri kullanabilmek * Göstericiler, diziler ve stringler arasındaki yakın ilişkiyi anlamak * Fonksiyonlarda gösterici kullanımını anlamak * String dizilerini bildirmek ve kullanabilmek Karakter ve Stringler * Karakter kütüphanesindeki (ctype) fonksiyonları kullanabilmek * Standart giriş/çıkış kütüphanesindeki (studio) string ve karakter giriş/çıkış fonksiyonlarını kullanabilmek * Genel amaçlı kütüphanedeki (stdlib) string dönüşüm fonksiyonlarını kullanabilmek * String kütüphanesindeki (string) string işleme fonksiyonlarını kullanabilmek * Yazılımın yeniden kullanılabilirliğinde fonksiyon kütüphanelerinin gücünü anlamak Biçimlendirilmiş Giriş - Çıkış * Giriş ve çıkış akışlarını (stream) anlamak * Bütün yazdırma biçimlendirme yeteneklerini kullanabilmek * Bütün giriş biçimlendirme yeteneklerini kullanabilmek Yapılar, Birlikler, Bit İşleme ve Sayma Sabitleri * Yapılar, birlikler ve sayma sabitleri oluşturabilmek * Yapıları fonksiyonlara değere göre çağırma ve referansa göre çağırma ile geçirebilmek * Bir operatörleriyle veri işleyebilmek * Verileri daha verimli bir şekilde depolayabilmek için bit alanları yaratmak Dosya İşleme * Dosyalar yaratabilmek, dosyalara yazma ve dosyadan okuma yapabilmek, dosyaları güncelleyebilmek * Sıralı erişimle dosya işlemeyi tanımak * Rasgele erişimle dosya işlemeyi tanımak Veri Yapıları * Veri nesleri için dinamik hafıza tahsis etmek ve tahsis edilen alanı boşaltabilmek * Göstericiler, kendine dönüşlü yapılar ve yineleme kullanarak bağlı veri yapıları oluşturabilmek * Bağlı listeler, sıralar ve ikili ağaçlar oluşturabilmek ve yönetebilmek * Bağlı veri yapılarının bir çok önemli uygulamasını anlamak C Önişlemcisi * Büyük programlar geliştirirken #include kullanabilmek * #define kullanarak makrolar ve argüman içeren makrolar yaratabilmek * Koşullu derlemeyi anlamak * Koşullu derleme esnasında hata mesajları yazdırabilmek * Değimlerin değerlerinin doğru olup olmadığını belirlemek için bildirimler (assertion) kullanabilmek İleri Düzey C komutları * Klavye girişini dosyadan gelecek şekilde değiştirebilmek * Ekran çıktısının dosyaya yerleştirilebilmesini sağlamak * Uzunluğu değişebilen argüman listesine sahip fonksiyonlar yazabilmek * Komut satırı argümanlarını işleyebilmek * Nümerik sabitlere belli tipler atayabilmek * Geçici dosyaları kullanabilmek * Bir programda beklenmeyen durumları işleyebilmek * Diziler için dinamik hafıza tahsisi yapabilmek * Daha önceden dinamik olarak tahsis edilmiş hafıza miktarını değiştirebilmek |
|
|
|
|
|
#3 (permalink) |
|
EN Afilli
![]() Üyelik Tarihi: 18-12-2005
Yaş: 21
Mesajlar: 1,231
Rep Gücü: 124
Rep Puanı: 7683
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
WinXP kullanan arkadaşların yazdıkları programlar çalışıp hemen kapanıyor ve programları düzgün çalışsa bile herhangi bişi göremiyorlar. hemen bunun çaresini yazayım daha sonrada ikinci derse geçeriz... turbo c bi ms dos programı olduğu için faremiz bu programı kullanırken hiç bir işimize yaramıyor... bu yüzden herşeyi klavyeden halletmek zorundayız. şimdi programı açıp kodlarımızı yazdıktan sonra ALT + C tuşlarına basarak Compile menüsüne ulaşıyoruz. buradan Make EXE file seçeneğini seçiyoruz. Aşağıdaki resimde de zaten gözüküyor... ![]() Eğer kodu yazarken herhangi bir hata yapmamışsanız programın derlendiğini gösteren aşağıdaki gibi bi mesaj geliyor ekrana. ![]() Bu mesajı herhangi bir tuşa basarak geçiyoruz. Ekrandan programımızın yerini ve adını öğreniyoruz. ![]() Eğer değiştirmediyseniz programımız C:\TC\ klasörü altındaki NONAME.EXE olarak oluşturulmuş olacaktır. Eğer Windows XP kullanıyorsanız programınızı çalıştırmak için extradan bir adım daha yapmamız lazım. C:\TC\ klasörüne gidiyoruz (resimde 1 olarak işaretli) ve programımızı bulup sağ tıklıyoruz (resimde 2 olarak işaretli), açılan menüden özellikleri seçiyoruz (resimde 3 olarak işaretli). ![]() karşımıza gelen özellikler penceresinden Program tabını seçiyoruz. Buradaki Çıkışta kapat seçeneğinin yanındaki tiki kaldırıyoruz. Uygula tamam diyip çıkıyoruz. Aşağıdan görebilirsiniz... ![]() Eveeeet artık programımıza çift tıklayarak nasıl bir sonuç elde ettiğinizi görebilirsiniz. |
|
|
|
|
|
#4 (permalink) |
|
EN Afilli
![]() Üyelik Tarihi: 18-12-2005
Yaş: 21
Mesajlar: 1,231
Rep Gücü: 124
Rep Puanı: 7683
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Borland C++ 5.02 programını kullanarak yapmak isteyenler aşağıdaki linklerden download edebilirler... Part-1 Part-2 bu kusra katılan kişiler için hazırlanan dökümanı da buradan download edebilirsiniz.. Yararlı bilgiler için x_string_x'e teşekkür ederiz... |
|
|
|
|
|
#5 (permalink) | |||||||||
|
EN Afilli
![]() Üyelik Tarihi: 18-12-2005
Yaş: 21
Mesajlar: 1,231
Rep Gücü: 124
Rep Puanı: 7683
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
C KURSU BAŞLIYOR 1. C Dilinde Program Geliştirme ve İcra Etme -Problemin Tanımlanması • Probleme ilişkin veriler • Çözüm yöntemleri • Problemin çözümü sonucunda hangi bilgiler elde edilecek 2. Algoritma Belirlenmesi Algoritma belirli bir problemi çözmek için gerekli adımlar kümesi olarak tanımlanır. Not: Bir algoritma ancak bir bilgisayar programlama dilinde ifade edilebilmişse icra edilir Bir C programının bilgisayarda çalıştırılıp istenilen sonucun elde edilebilmesi için 3 adım gerekir. • Programın metnini yazılması • Programın derlenmesi • Derleyicini makine diline dönüştürdüğü programın çalıştırılması Problem : C=(F-32)/ 1,8 Fahrenheit birimi ile verilen bir sıcaklığın Celcius birimine dönüştüren bir C programı yazınız. Hatırlatma ! Derleyici /*………..*/ arasında yazan kısmı görmeyecektir. Kod:
#include “stdio.h” /* <stdio.h> bu yazılım biçimide doğru */
main()
{
double f,c;
printf(“\n Fahrenheit Turunden Sıcaklıgı Girin…….”);
scanf(“%1f”,&f);
c=(f-32)/1.8;
printf(“Fahrenheit =%1f Celcius’tur”,f ,c);
return0;
}
3. C Programının Genel Yapısı Örnek Problem : Kod:
#include <stdio.h> /* C Başlık Kütüphanesi Olmazsa Olmazlardan*/
main()
int x,y,z;
x=5;
y=6;Başlık ve gövde yapıları bu gibi farklı durumlarda olabilirler.
Fonksiyon gövdesi {}
Bir C Programı içerisinde birden fazla blok( {} ) olabilir ama dengelenmiş olması gerekir.Yani kaç tane { varsa o kadar da } olmalı.
z=x*y;
printf(“\nz=%d”,z);
Alıntı:
C dilinde matematiksel işlemler (logaritma ,karekök,trigonometri…) math.h adlı başlık dosyası içinde tanımlanmıştır. conio.h >>> konsol girişi için time.h >>> Zaman Fonksiyonları için graphics.h >>> Grafik fonksiyonları için Her C Programının bir başlığı bir de gövdesi vardır. Kod:
main() void main() main(int argc,char *argv[]) int main() int main(int argc,char *argv[]) void main(int argc,char *argv[]) Fonksiyon gövdesi {} Bir C Programı içerisinde birden fazla blok( {} ) olabilir ama dengelenmiş olması gerekir.Yani kaç tane { varsa o kadar da } olmalı. 4. Atama Deyimi Değişken = ifade C Dilinde = sembolü atama sembolüdür ve şu şekilde çalışır. Sağ taraftaki ifadenin değerini hesapla ve sonucu sol tarafa ata. Örnek : x=x+3 önce sap taraf x+3 hesaplanırdaha sonra hesaplanan yeni değer sol tarafa atanır.atama sonucunde eski değer silinir. KURAL : Bir değişkene yeni değer atanırsa eski değeri silinir. 5. C Dilinde Değişkenler İsim Verme • İsimler bir harf yada _ sembolü ile başlamalı • Özel karakterler kullanılmaz (?+* vs.) • Büyük küçük harf ayrımı vardır. Örnek: x2 , b_1x , kaos_fırtına >>>>>> Doğru Kullanım! 2_x , _+b6 >>>>>>> Yanlış Kulanım.! Printf(“\nz=&d”,z); \ n Sembolü ekranda yeni bir satıra geçiş için %d ise format belirleyicisi olarak kullanılmıştır. Problem : ![]() İfadesinin klavyeden girilecek a değeri için hesaplayan bir c programı yazınız. Kod:
#include “stdio.h”
#include “ math.h”
main()
{
float a,y;
printf(“\n a degerini giriniz…..”);
scanf(“%1f”,&a);
y=pow(a+2,(1.0/3.0))/pow(a+56,(1.0/4))+a;
printf(“\ny=%f”y);
}
![]() Alıntı:
şeklinde düşünülerek C dilinde pow(a,1.0/4.0); şeklinde hesaplatılabilinir.Pow(x,y) = xy Problem : b=a2-a+5 ifadesini klavyeden girilecek bir değer için hesaplatan bir C programı yazınız… Kod:
#include<stdio.h>
#include<math.h>
main()
{
int b,a;
printf(“\n a’nın degerini giriniz……”);
scanf(“%d”,a);
b=a*a-(a+5);
printf(“\nb=%d,”b);
}
![]() Klavyeden girilecek olan a değeri ondalıklı alınacak olsaydı b ve a yı float veya double olarak tanımlamamız gerekirdi. Problem : Birim Kar = (Satış Fiyatı-Maliyet) Topam Kar = Birim Kar x Miktar Klavyeden girilecek olan Satış Fiyatı (s) , Maliyet (ma) ve Miktar(mi) değerlerine göre Toplam Karı (t)ve Birim Karı (b) hesaplatan bir C programı yazınız… Kod:
#include ”stdio.h”
#include “math.h”
int main
{
float b,t,s,ma,mi;
printf(“\nSatis Fiyatını Giriniz:…..”);
scanf(“%f”,s);
printf(“\nMaliyeti Giriniz……..”);
scanf(“%f”,ma);
printf(“\n Miktarı Giriniz:…….”);
scanf(“%f”,mi);
b=(s-ma);
t=(b*mi);
printf(“\nBirim Kar=%f”,b);
printf(“\nToplam Kar=%f”,t);
}
Problem : x = (ce-bf) / (ae-bd) ve y = (ae-cd) / (ae-bd) klavyeden girilecek a,b,c,d,e,f yardımı ile x ve y ’yi bulunuz ? Kod:
#include ”stdio.h”
#include “math.h”
void main()
{
int a,b,c,d,e,f,x,y;
printf(“\na değerini giriniz…..”);
scanf(“%d”.&a);
printf(“\nb değerini giriniz…..”);
scanf(“%d”.&b);
printf(“\nc değerini giriniz…..”);
scanf(“%d”.&c);
printf(“\nd değerini giriniz…..”);
scanf(“%d”.&d);
printf(“\ne değerini giriniz…..”);
scanf(“%d”.&e);
printf(“\nf değerini giriniz…..”);
scanf(“%d”.&f);
x=(c*e-b*f)/(a*e-b*d);
y=(a*e-c*d)/(a*e-b*d);
printf(“\nX’in değeri=%f,x);
printf(“\nY’in değeri=%f,y);
}
Bileşik faiz problemini hesaplatan bir c program yazınız.A:Ana para i : Faiz Yüzdesi n : Zaman P : Ana Para+Faiz Kod:
#include ”stdio.h”
#include “math.h”
main()
{
float i,p,n,a;
printf(“\nAna Parayı Giriniz…….”);
scanf(“%f”,&a);
printf(“\nFaiz Yüzdesini Giriniz…….”);
scanf(“%f”,&i);
printf(“\Zamanı Giriniz…….”);
scanf(“%f”,&n);
p=a*pow((1+i),n);
printf(“\nDönem Sonu Ana Para + Faiz=%f”,p);
}
x’in klavyeden girilecek bir değeri için y yi hesaplatan bir program yazın.Kod:
#include ”stdio.h”
#include “math.h”
int main()
{
float x,y;
printf(“\nX değerini giriniz……”);
scanf(“%f”,&x);
y=(x+sqrt(x*x+1))/log(x+1);
printf(“\nY=%f”y);
Alıntı:
Problem : x’in girilen bir değeri için z’yi hesaplatan bir c programı yazınız.Kod:
#include ”stdio.h”
#include “math.h”
main()
{
float x,y,z;
printf(“\X değerini giriniz……”);
scanf(“%f”,&x);
y=pow(x, (3+x) )-pow(x, (1+sin(x) ))/(x+5);
z=y+1/(y+1);
printf(“\y=%f”,y);
printf(“\z=%f”,z);
}
İnt -- Ondalık kısmı olmayan sayı Char -- Tamsayı ve karakter için kullanılır. %c karakter %d ise tamsayı için kullanılır…. Değişkenlere Başlangıç Değeri Atama #include ”stdio.h” main() { int a,b; a=0; b=10; (a ve b’ye başlangıç değeri atanmıştır.) If Deyimi İf deyimi c dilinde şartlı dallanma adı verilen işlemi gerçekleştirir.Şartlı dallanma işlemi sayesinde bir program kararlar alma imkanına kavuşur. İf deyimi ; bir ifadenin sonucuna göre bir komutlar dizisinin icra edilip edilemeyeceğine karar verir. Kod:
if(ifade) deyim1; deyim2; İfade bir doğru ise deyim bir , yanlış ise deyim 2 icra edilir. İf(ifade) deyim1; else deyim2; deyim3; İf deyimi, ifade doğru ise ve deyimler grubunun icra edilmesi isteniliyorsa şu şekilde kullanılmalı. Kod:
if(ifade)
{ deyim1;
deyim2;
……
deyim_n;}
else
{
deyim_n+1;
deyim_n+2;
deyim_m;
}
deyim_k;
Örnek; Kod:
#include ”stdio.h”
main()
{
int a;
printf(“\nBir Tamsayı Giriniz……”);
scanf(“%d”,&a);
if(a>10)
printf(“\nGirdiğiniz sayı 10’dan Büyüktür\n”);
}
Örnek2 ; Kod:
#include ”stdio.h”
main()
{
int a;
printf(“\nBir Tamsayı Giriniz……”);
scanf(“%d”,&a);
if(a>10)
printf(“\nGirdiğiniz sayı 10’dan Büyüktür\n”);
else
printf(“\nGirdiğiniz sayı 10 yada daha küçük bir sayıdır…\n”);
}
Problem ; Bir satış elemanının sattığı ürün miktarına göre alacağı günşlük ücret aşağıdaki gibidir. Günlük satış miktarı 50’den az ise günlük sabit ücret 4 YTL alınarak satılan ürün başına 0,5 YTL’lik prim eklenerek günlük ücret belirlenecektir. Günlük satış miktarı 50 yada fazla ise günlük sabit ücret 5 YTL alınarak satılan ürün başına da ilk 50 ürün için 0,5 YTL 50 yi aşan kısım içinde 0,6 YTlL pirim verilerek günlük ücret belirlenecektir Bir satıcının günlük satış miktarını bilgisayardan girildiğinde satıcının alacağı günlük ücreti belirleyen bir C Programı yazınız. Kod:
#include ”stdio.h”
#include “math.h”
main()
{
int satis;
double ucret;
printf(“\Satış Miktarını Giriniz…..”);
scanf(“%d”,&satis);
if(satis<50)
ucret=4+(satis*0.5);
if(satis>=50);
ucret=5+50*0.5+(satis-50)*0.6;
printf(“\nUcret=%1f\n”,ucret);
}
Kod:
#include ”stdio.h”
#include “math.h”
main()
{
daouble sayi;
printf(“\nNegatif Olmayan Bir Sayı Giriniz”);
scanf(“%1f”,&sayi);
if(sayi<0)
printf(“\nGiriş Hatası girilen sayı negatiftir….”);
else
printf(“\nSayının karekökü=%1f\n”,sqrt(sayi));
}
Karşılaştırma İfadeleri Alıntı:
-12<0 ………. 1 0>23 ……….. 0 1==1 ……….. 1 İç İçe İf Deyimleri Tek bir if deyimi iki seçenekten birinin seçilmesine olanak tanır.İç içe if deyimi ise birinci karardan sonra ikinci,üçüncü kararların alınmasın sağlar. Kod:
İf(ifade1) deyim1; else if(ifade2) deyim2; else if(ifade3) deyim3; …………….. else deyim_n deyim_n+1 Bütün if’lerdeki ifadeler yanlış ise bu halde deyim_n ve sonrasında deyim_n+1’e geçilir. Problem; Gelir Küçük Eşit 150 YTL ise vergi oranı %25 Gelir Küçük Eşit 300 YTL ise vergi oranı %30 Gelir Küçük Eşit 600 YTL ise vergi oranı %35 Gelir Küçük Eşit 1200 YTL ise vergi oranı %40 Gelir Büyük 1200 YTL ise vergi oranı %50 -Gelir bilgisi klavyeden girilecek -Gelir bilgisi yukarıdaki kurala göre kontrol edilecek -Vergi hesaplanıp yazdırılacak Kod:
#include ”stdio.h”
#include “math.h”
void main()
{
double gelir,vergi,v1,v2,v3,v4;
v1=150*0,25;
v2=300*0.30;
v3=600*0.35;
v4=1200*0.40;
printf(“\n Vergi Mükellefinin Geliri……..”);
scanf(“%1f”,&gelir);
if(gelir<=150)
vergi=gelir*0.25;
else if(gelir<=300)
vergi=v1+(gelir-150)*0.30;
else if(gelir<=600)
vergi=v1+v2+(gelir-300);
else if(gelir<=1200)
vergi=v1+v2+v3+(gelir-600)*0.40;
else if(gelir<1200)
vergi=v1+v2+v3+v4+(gelir-1200)*0.5;
printf(“\nHesaplanan Vergi=%12.21f\n\n”,vergi);
200 YTL geliri olan birisinin vergisi hesaplanırken bunun ilk 150 YTL si %25’ten geri kalanı ise %30’dan hesaplanmştır. Bu nedenle sabit vergiler hasaplanmıştır.(v1,v2,v3,v4) Kullanılan %12.21 f deyimi ise basamak sayısını belirmek içindir. Switch Case Deyimi Çok sayıda koşul kontrolü ile bunların sonucuna göre gerçekleştirilecek eylemlerin icrasında kullanılır.(İf-else yerine) Switch deyimi tek bir ifadenin değerine göre sınırsız sayıda icra yolu belirlemeye yarar. Swtitch’den sonra gelen ifade parantez içerisinde ve tamsayı olmalı Char,Short,,int,long biçiminde olabilir. Case anahtar sözcükleri içeren ifadeler tamsayı sabit türünde olmalı (değişken içermemeli) Switch ifadesinde hesaplanansonuç hangi case ‘i ,izleyen sabitle çakışıyorsa ğrogram kontrolü vuraya geçer. Bu case’den sonrakideyimler de bir kontrole tabi olmaksızın sonuna kadar icra edilir. İki case sabiti aynı değeri alamaz. Programın kontrolünün ifadenin değerine göre case seçeneklerinden sadece birini icra edip bundan sonra switch-case yapısının terk edilmesi isteniliyorsa “break;” komutu kullanılmalı. Örnek ; Kod:
#include ”stdio.h”
int main()
{
char sec;
printf(“\nseçiminiz….. A,B,C’den birini seçiniz”);
scanf(“%c”,&sec);
switch(sec)
{
case ‘a’ : printf(“\nGirdiğiniz Harf A’dır”);break;
case ’b’ : printf(“\nGirdiğiniz Harf B’dir”);break;
case ‘c’ : printf(“\nGirdiğiniz Harf C’dir”);break;
default : printf(“\nHatalı Giriş Yaptınız…A,B veya C den birini girmelisiniz...\n”);
}
}
Yukarıdaki programda break komutu kullanılmasaydı klavyeden a değeri girildiğinde ekrana bütün case ler sıra ile icra edilip yazdırılacaktı. Problem : Aşağıdaki program bir turizm şirketinin tatil seçenekleri için yazılmıştır. Kod:
#include ”stdio.h”
int main()
{
int sec;
printf(“\nFırtına Turizm şirketi İftaharla Sunar…..”)
printf(“\n1.Elazığ Seyehati”);
printf(“\n2.Gaziantep Seyehati”);
printf(“\n3.İstanbul Seyehati”);
pritntf(“\Seçiminiz……”);
scanf(“%d”,&sec);
switch(sec)
{
case ‘1’ : printf(“\nKaykay ile Seyehat,Yemek,Konaklama=250ytl”);break;
case ‘2’ : printf(“\nUçak ile Seyehat,Yemek,Konaklama,Eğlence=1000ytl”);break;
case ‘3’ : printf(“\nSandal ile Seyehat,Yemek,Konaklama,Gezi=5ytl”);break;
default : printf(“\nHatalı seçim…1,2veya 3 girilmeli\n\n”);
}
}
Çevrim Oluşturma Belli bir koşul sağlanana kadar aynı işlemler grubunu tekrar tekrar yaptırmaktır. C dilinde çevrim yapısını oluşturmak için 3 deyim mevcuttur. Alıntı:
Kod:
While(ifade) Deyim1; Deyim2; ……… deyim_n; Deyim icra edildikten sonra program kontrolü while deyiminin başına geçer ve işlem tekrarlanır.Yani ifade yeniden hesaplanır , sonucuna göre işlem yapılır.Bu ifadenin sonucu yanlış(0) olana kadar hesaplama devam eder. Do…….While deyimi While deyiminde ilk anda koşulun yanlış olması durumunda while gövdesi hiçbir zaman icra edilmez. Do……While de ise hiç değilse program gövdesi 1 defa icra edilir. Alıntı:
For Deyimi For deyimi işlemlerin tekrar sayısı önceden belli olan durumlarda kullanılır. Alıntı:
1. İlk önce ifade 1 hesaplanır ,bu genellikle bir veya daha fazla değişkene ilk değer atamaya yarayan bir atama deyimidir. 2. sonra ifade 2 hesaplanır.Bu deyimin koşulsal kısmıdır. 3. iade 2 yanlışsa ,programın kontrolü for deyiminden çıkar ve programın akışı programdaki bir sonraki deyime geçer (deyim_x ![]() 4. Deyim veya bloklar arasındaki deyimler grubu icra edildikten sonra ifade 3 icra edilerek hesaplanır.Bundan sonra ifade 2 (koşul) hesaplanır ,koşul devam ediyorsa deyimler grubu tekrar icra edilir ve program tekrar ifade 2 ye döner. İfade 1 sadece 1 defa icra edilir. İfade 2 ve ifade 3 çevrimin her tekrarında icra edilir. Alıntı:
Alıntı:
Problem: 1’den n’e kadar olan tamsayıların toplamını veren bir C programı yazınız…. Kod:
#include ”stdio.h”
#include “conio.h”
main()
{
clrscr();
int top,i,n
printf(“\nÜst Sınırı Giriniz(Tamsayı)……”);
scanf(“%d”.&n);
top=0;
for(i=1;i<=n;i=i+1)
top=top+i
printf(“\1’den n’e kadar olan sayıların toplamı%d=%d\n\n(1+2+3+…..n)”,n,top);
}
Açıklama : Başlangıç olarak top değerine 0 değeri atanmıştır.Girilen sayı 5 olsun yani n=5 için i değerine başlangıçta 1değeri atanmıştır (i= için )bu halde “i<=n” koşulu sağlanacağından top=0+1=1 olacak bu işlemin sonunda i bir arttırılarak çevrim devam edecek yani i=2 için top=1+2 olacak i=3 için top=(1+2)+3, i=4 için top=(1+2+3)+4, i=5 için top=(1+2+3+4)+5 olacaktır. Bundan sonra i=6 için koşul sağlanmayacağından çevrim sonlanacaktır. İfade2 i<=n oluncaya kadar çevrim devam edecektir… İfade3 ise i=1+i şeklinde b,r artırım ifadesidir.Çevrimin her tekrarında i değişkeninin değerini 1 arttıracaktır. Faktöryel Hesabı Kod:
#include ”stdio.h”
#include “conio.h”
main()
{
clrscr();
int fak,i,n;
printf(“\nFaktöryeli Alınacak Sayıyı Giriniz……”);
scanf(“%d”,n);
fak=1;
for(i=1;i<=n;i++)
fak=fak*i
printf(“\n%d!=1*2*3*……%d=%d\n\n”,n,n,fak);
}
Çevrim öncesi i=1,fak=1 dir. n=4 için koşul sağlanacak(i<=n) ve i=1 için fak=1*1 olacak i=2 için de koşul sağlanacak ve fak=1*2 olacak i=3 için fak=(1*2)*3 ve i=4 için (çevrim son kez olacak) fak=(1*2*3)*4 olacaktır. i=4 olduğunda çevrim bitecektir |
|||||||||
|
|
|
|
|
#6 (permalink) |
|
EN Afilli
![]() Üyelik Tarihi: 18-12-2005
Yaş: 21
Mesajlar: 1,231
Rep Gücü: 124
Rep Puanı: 7683
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
#include <stdio.h> main() { pirntf("hello world\n"); } eveeet bu programın yaptığı iş ekrana hello world yazdırmaktır. çok kısa ve önemsiz bir kod gibi gözüksede c deki temel bilgileri barındırır. gelelim bu kodun satır satır açıklamasına: #include <stdio.h> bu satır c'nin o meşhur kütüphanelerinin eklendiği bölümdür. hemen kütüphanelerin ne işe yaradıklarını açıklayayım. aslında bilgisayar programları, pek çok küçük programın bir araya gelmesiyle oluşur... ve her bir ufak programa fonksiyon bloğu denir. c kütüphanelerinde ise programcının işini kolaylaştırmak için önceden hazırlanmış fonksiyonlar bulunur. örneğin kök alma işlemi yaparken sadece sqrt(kökü alınacak sayı) şeklinde yazarak kolayca bu değer alınabilir. işte bu kullanılan fonksiyonlar farklı kütüphanelerde bulunurlar. ve eğer bu fonksiyonlardan herhangi birisini kullanacaksanız programın başına mutlaka fonksiyonun bulunduğu kütüphaneyi eklemeniz gerekir. şimdilik bunlarla pek kafa yormayın ileride daha geniş bi şekilde hepsini görücez. gelelim diğer satırlara main() { ....... } bu kısım bizim yazdığımız programın ana fonksiyon bloğudur. sizinde farkettiğiniz gibi { ile başlayıp } ile sona ermektedir. bu bölümü programın gövdesi olarak düşünebilirsiniz. main() yazılmasının sebebi fonksiyonun adının belirtilmesidir. programın gövdesi olduğu için main olarak isimlendirilmektedir. printf("hello world\n"); satırı ise ekrana yazıyı gönderen komuttur. buradaki noktalama işaretleri çok önemlidir!!! eğer bunlara dikkat etmezseniz programınız hata verecektir! ![]() buda programın ekran çıktısı... ![]() printf'in içindeki \n ise bir alt satıra geçmek için kullanılır. bunu daha iyi anlamak için yeni bir program yazalım... #include <stdio.h> main() { printf("bu birinci satirdir!\n bu ise ikinci!\n buda ucuncu satir!"); } ![]() |
|
|
|
|
|
#7 (permalink) |
|
EN Afilli
![]() Üyelik Tarihi: 18-12-2005
Yaş: 21
Mesajlar: 1,231
Rep Gücü: 124
Rep Puanı: 7683
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
bu derste kullanıcıdan bilgi almayı ve girilen bu bilgiler doğrultusunda işlem yapmayı görecez. Bu arada kodların içindeki /*……*/ arasındaki yazılar açıklama içindir. Bunları program yazarken kullanabilirsiniz. Compiler /* */ arasındaki yazıları dikkate almayacaktır… programımızı yazalım... #include <stdio.h> int main() { int tamsayi1, tamsayi2, toplam;/*değişken bildirimleri*/ printf("1. tamsayiyi giriniz:");/*mesaj yazdırma*/ scanf("%d",&tamsayi1); /*kullanıcıdan birinci sayının alınması*/ printf("2. tamsayiyi giriniz:"); /*mesaj yazdırma*/ scanf("%d",&tamsayi2); /*kullanıcıdan ikinci sayının alınması*/ toplam=tamsayi1+tamsayi2; /*girilen değerlerin toplanarak toplam değişkenine atanması*/ printf("Toplam %d dir\n", toplam); /*toplamın ekrana yazdırılması*/ return 0; /*programın başarıyla sona erdiğini belirtmek*/ } programın çıktısı şu şekilde olacaktır: 1. tamsayiyi giriniz: 45 2. tamsayiyi giriniz: 72 Toplam 117 dir. Bu program kullanıcıdan alınan iki sayıyı toplayıp, toplamı ekrana yazdırır. Programımızı inceleyelim… #include <stdio.h>satırında artık biliyoruz ki bu satır kütüphaneleri eklemek için kullanılıyor. int main(){satırı ise programımızın ana bloğunu başlatıyor. int tamsayi1, tamsayi2, toplam;işte bu satır bizim için yeni sayılır. Gerçi daha öncede bu satırla karşılaşmıştık. Şimdilik bu satırın ayrıntılarına pek girmiyorum değişkenleri görürken ki bi sonraki konudur. Ayrıntılı olarak inceleyeceğiz. printf("1. tamsayiyi giriniz:");bu satırda ise ekrana yazı yazdırıyorduk… scanf("%d",&tamsayi1);işteeee bu dersin konusu olan satıra geldik!!! Bu derste scanf fonksiyonunu ve kullanımını görecez. Scanf kullanıcıdan bir değer almak için kullanılan komuttur. Alınan bu değeri hafızada tutmak için bir değişkene aktarırız. Burada küçük bi açıklama değişkenler hafızada veri tutmak için kullanılırlar. Scanf’in temel kullanımı şöyledir: scanf(“%d”),°isken_adi; şimdi bu satırı inceleyelim… scanf(“%d”), kısmı kullanıcıdan alınan değerin türünü belirler. Buradaki %d alınacak değere göre değişiklik gösterecektir. Örneğin tam sayılar için %d, ondalıklı sayılar için %f… gibi bunu bir sonraki derste daha iyi kavrayacaksınız. Bu arada virgüle dikkat! °isken_adi; bu kısımda da aldığımız değeri hangi değişkene atayacağımızı belirtiyoruz. Değişken adından önce & karakterini kullandığımıza dikkat edin. DİKKAT: C programında her satırın sonunda mutlaka ; konulur. En çok yapılan hatalardan birisidir. Eğer bir satırın sonunda ; koymazsanız tüm programınız hatalı olacaktır ve bunu bulmak için çok fazla zaman harcamanız gerekebilir!!! Değişkenleri de aldıktan sonra toplama işlemini şu satırda yaptırıyoruz… toplam=tamsayi1+tamsayi2; C dilinde atamanın sağdan sola doğru yapıldığını da belirtelim. Ve bitti… Devamı gelecek… |
|
|
|
|
|
#8 (permalink) |
|
EN Afilli
![]() Üyelik Tarihi: 18-12-2005
Yaş: 21
Mesajlar: 1,231
Rep Gücü: 124
Rep Puanı: 7683
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Toplama: sembolü sizinde tahmin edeceğiniz gibi + işaretidir... kullanım şekli 7+5 yada x+8, a+b+8, a+b+c... şeklinde devam eder. Çıkarma: sembolü - işaretidir. kullanım şekli 7-5, x-8, a-(b-5), a-b... gibidir. Çarpma: sembolü * işaretdir. kullanım şekli 6*6, 8*c, a*b*2... gibi. Bölme: sembolü / işaretidir. kullanım şekli 9/8, 48/a, a/b... gibi. Mod Alma: sembolü % işaretidir. iki sayının bölümünde kalanı verir. kullanım şekli 9%2 gibidir. burada bize vereceği sayı 1 dir. C'de işlemlerin öncelik sırası vardır. bu sıra şu şekildedir: *, /, %, +, - uzun ve karışık bir hesaplama işleminde C bu sırayı takip ederek sonucu bulur... Tabi böyle olması durumunda işlemimizin sonucu yanlış çıkabilir. Örneğin; 1+1*5 işlemini C ilk önce 1 ve 5i çarpacak daha sonra bu sonuçla biri toplayacaktır. yani işlemimiz 10 yerine bize 6 sonucunu verecektir. bu gibi yanlış sonuçlar almamak için parantez işaretleriyle işlem önceliklerini belirlememiz gerekir. Aynı işlemi aşağıdaki gibi yazarsak istediğimiz 10 sonucunu alabiliriz: (1+1)*5 bu şekilde parantez içine alarak toplamı işleminin ilk önce yapılacak işlem olduğunu belirtmiş olduk. bu çok çok çok önemli bi ayrıntıdır mutlaka bi yerlere not alın derim... şimdi biraz daha uzun bi işlemi inceleyelim... 4/2+2*5 burada da yine öncelik sırasına göre çarpma ve bölme işlemleri önce yapılacak sonra toplama işlemi yapılacaktır... bunu önlemek için şu şekilde yazmamız gerekli... 4/(2+2)*5 bir sonraki dersimiz değişkenler olacak... |
|
|
|
|
|
#9 (permalink) |
|
EN Afilli
![]() Üyelik Tarihi: 18-12-2005
Yaş: 21
Mesajlar: 1,231
Rep Gücü: 124
Rep Puanı: 7683
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Nihayet üçüncü derse geçebildik… Bu dersin konusu değişkenler ve veri tipleri. Öncelikle değişken nedir ne değildir ondan biraz bahsedelim. Değişkenin tanımı bellekte bilginin saklandığı gözlere verilen simgesel isim olarak geçiyor. Ama buna çoğu kimsenin ney? yanıtını verdiğini bildiğimden biraz daha insalcıl bi dille anlatmaya çalışayım. Efenim şimdi bi program yazarken bize pek çok veri lazım oluyor… bu veriler gerek kullanıcıdan alınacak olsun gerekse bizim program içinde kullanacağımız bazı değerler olsun hepsi değişkenler sayesinde programın hafızasında tutuluyor. mesela dairenin alanını hesaplayan bi program yazarken bize lazım olacak değerler; dairenin yarıçapı ve pi sayısıdır (3.1415). işte bu değeri programın hafızasında değişkenler yoluyla tutuyoruz. Değişken denmesinin nedeni bir değişkenin hafızasında tuttuğu değerin programın akışı içerisinde isteğe bağlı olarak değiştirilebiliyor olmasıdır. (bunu anlamadıysanız çok kasmayın birazdan anlayacaksınız…) Gelelim değişken türlerine… bilgisayarlar çok akıllı gibi gözükseler de aslında olabilecek en aptal mantıkla çalışırlar o yüzden girdiğimiz değerlerin türlerini bile önceden belirtmemiz gerekir. Örneğin bir değişkende tam sayı girilecekse bunu değişkeni tanımlarken belirtmemiz gerek yada bi kesirli sayı tutulacaksa o değişkende hep bunları değişkeni tanımlarken belirtmemiz lazım… Nedir bu değişken türleri? Temel olarak bizim kullanacağımız dört adet değişken türü var bunlar; char: Karakter türündeki verileri tutmak için kullanılan değişken türüdür. Sayısal işlemler bu türde yapılamaz. int: Tamsayı türündeki verileri tutmak için kullanılan değişken türüdür. float: Ondalıklı sayıları tutmak için… double: Buda ondalıklı sayıları tutman için kullanılan bi değişken türüdür. Değişken adlarını belirlerken bazı kurallara uymamız gerekir. * İlk karakteri rakam olamaz * Sadece harfler, rakamlar ve _ (underscore) karakterinin birleşiminden oluşabilir. * C diline ait saklı (reserved) sözcükler kullanılamaz. * En fazla 31 karakter olabilir. * Küçük - büyük harf ayırımı vardır. Yukarıda da belirttiğim gibi değişkenlerin türlerini önceden belirtmemiz gerekir. Bu belirteçler şu şekildedir: char : c int : d float : f double : lf örnek olarak birkaç değişken tanımını görelim… int sayi, sayi2; double ondalikli_sayi1; char karakter_degiskeni; float ondalikli_sayi2; gibi… şimdi bunların program içinde kullanalım… Kod:
#include <stdio.h>
void main(){
int sayi=5;
double ondalikli_sayi1=3.5;
char karakter_degiskeni=”h”;
float ondalikli_sayi2=”89,8”;
printf(“int degiskenin degeri= %d’ “, sayi); /*%d belirteci ile değişkenin nerede yazılacağını belirliyoruz! */
printf(“double degiskenin degeri= %lf’ “, ondalikli_sayi1);
printf(“char degiskenin degeri= %c’ “, karakter_degiskeni);
printf(“float degiskenin degeri= %d’ “, ondalikli_sayi2);
}
Kod:
#include <stdio.h>
void main(){
int sayi;
double ondalikli_sayi1;
printf(“bir tamsayi girin.”);
scanf(“%d“, &sayi); /*kullanıcıdan değişkenin değerini alırken & karakterini yazdığımıza dikkat edin… */
printf(“bir ondalikli sayi girin.”);
scanf(“%f”, &ondalikli_sayi1);
printf(“int degiskenin degeri= %d’ “, sayi);
printf(“float degiskenin degeri= %f’ “, ondalikli_sayi2);
}
|
|
|
|