Algoritma ve Programlamaya Giriş Ders 4
İlk C Kodu /* ilk.c: ilk C programi */ #include <stdio.h> main() { printf("Merhaba Dunya!\n"); }
C Kodlarının Temel Özellikleri Kullanılacak her kütüphane fonksiyonu için ilgili başlık (header) dosyası programın başına eklenmelidir. Her C programı mutlaka bir main() fonksiyonu içermelidir. Program içinde kullanılacak olan değişkenler ve sabitler mutlaka tanımlanmalıdır. Satırın sonuna ; işareti konmalıdır. Her bloğun ve fonksiyonun başlangıcı ve bitişi sırasıyla { ve } sembolleridir. C dilinde yazılan kodlarda büyük-küçük harf ayrımı vardır (case sensitive). Örneğin; A ile a derleyici tarafından farklı değerlendirilir. Açıklama operatörü /* */ sembolleridir.
Kodda Açıklama (Yorum Satırı) /*Çok satırlı bir açıklama. Yıldızlar arasında kalan bütün alan, yorum olarak değerlendirilir ve derleyici tarafından işlenmez. */ #include<stdio.h> int main( void ) { //Tek satırlık bir açıklama. printf("Merhaba Dünya\n"); }
Değişken Tanımlama - 1 #include<stdio.h> int main(void) { int a; printf("a sayısı %d",a); return 0; }
Değişken Tanımlama - 2 #include<stdio.h> int main(void) { int a; int b; int toplam; a = 25; b = 18; toplam = a + b; printf("a sayısı %d ve b sayısı %d, Toplamı %d.\n", a, b, toplam); return 0; }
scanf fonksiyonu - 1 #include<stdio.h> int main( void ) { int sayi; printf("Değer giriniz> "); scanf("%d",&sayi); printf("Girilen değer: %d\n",sayi); return 0; }
TİP DEKLARASYON printf( ); scanf( ); Minimum Maksimum Byte Karakter char degisken; printf("%c",degisken); scanf("%c",°isken); -128 127 1 Kısa Tam Sayı short degisken; printf("%d",degisken); scanf("%d",°isken); -32768 32767 2 Tamsayı int degisken; Uzun Tamsayı long int degisken; printf("%ld",degisken); scanf("%ld",°isken); -2147483648 2147483647 4 İşaretsiz Tamsayı unsigned int degisken; printf("%u",degisken); scanf("%u",°isken); 65535 İşaretsiz Uzun Tamsayı long unsigned degisken; printf("%lu",degisken); scanf("%lu",°isken); 4294967295 Virgüllü Sayı float degisken; printf("%f",degisken); scanf("%f",°isken); 1,17549e-38 3,40282e+38 Uzun Virgüllü Sayı double degisken; printf("%lf",degisken); scanf("%lf",°isken); 2,22504e-308 1,79769e+308 8
scanf fonksiyonu - 2 #include<stdio.h> int main( void ) { int saat; float ucret, toplam_ucret; char bas_harf; printf("Çalışanın baş harfini giriniz> "); scanf("%c",&bas_harf); printf("Çalışma saatini giriniz> "); scanf("%d",&saat); printf("Saat ücretini giriniz> "); scanf("%f",&ucret); toplam_ucret = saat * ucret; printf("%c başharfli çalışanın, alacağı ücret: %f\n",bas_harf,toplam_ucret); return 0; }
scanf fonksiyonu - 2 #include<stdio.h> int main( void ) { float sayi1,sayi2,ortalama; printf("İki sayı giriniz> "); scanf("%f%f",&sayi1,&sayi2); ortalama = ( sayi1 + sayi2 ) / 2; printf("Ortalama sonucu: %f'dir",ortalama); return 0; }
#define ile Sabit Tanımlama #include <stdio.h> #define UZUNLUK 10 #define GENISLIK 5 #define YENISATIR '\n' int main() { int alan; alan = UZUNLUK * GENISLIK; printf("ALAN DEGERI: %d", alan); printf("%c", YENISATIR); return 0; }
const ile Sabit Tanımlama #include <stdio.h> int main() { const int UZUNLUK = 10; const int GENISLIK = 5; const char YENISATIR = '\n'; int alan; alan = UZUNLUK * GENISLIK; printf("alan degeri: %d", alan); printf("%c", YENISATIR); return 0; }
Örnek #include<stdio.h> int main( void ) { int bolunen = 12, bolen = 8; float bolum; bolum = bolunen / bolen; printf("Sonuc: %f\n",bolum); return 0; } Çıktı: Sonuc: 1.000000
Tip Dönüşümü (Casting) - 1 #include<stdio.h> int main( void ) { int bolunen = 12, bolen = 8; float bolum; bolum = (float) bolunen / bolen; printf("Sonuc: %f\n",bolum); return 0; } Çıktı: Sonuc: 1.500000
Tip Dönüşümü (Casting) - 2 #include<stdio.h> int main( void ) { float girilen_sayi; printf("Lütfen bir sayı giriniz> "); scanf("%f",&girilen_sayi); printf("Sayının yuvarlanmış hali: %d\n", (int)(girilen_sayi+0.5)); return 0; }
Koşullu İfadeler – if-else yapısı if( koşul ) { komut(lar) } if( koşul ) { komut(lar) } else {
İlişkisel ve Bileşik Operatörler < Küçüktür > Büyüktür == Eşittir <= Küçük eşittir >= Büyük eşittir != Eşit değildir && and ve || or veya ! not tersi
Koşullu İfadeler - 1 #include<stdio.h> int main( void ) { int girilen_sayi; printf("Lütfen bir tam sayı giriniz> "); scanf("%d",&girilen_sayi); if( girilen_sayi > 100 ) printf("Girilen sayı 100'den büyüktür\n"); return 0; }
Koşullu İfadeler - 2 #include<stdio.h> int main( void ) { int girilen_sayi; printf("Lütfen bir tam sayı giriniz> "); scanf("%d",&girilen_sayi); if( girilen_sayi > 100 ) printf("Girilen sayı 100'den büyüktür\n"); else printf("Girilen sayı 100'den küçüktür\n"); return 0; }
Örnek // Kendisine verilen iki tam sayıyla bölme işlemi yapan program. #include<stdio.h> int main( void ) { int bolunen, bolen; float sonuc; printf("Bölünecek sayıyı giriniz> "); scanf("%d",&bolunen); printf("Bölen sayıyı giriniz> "); scanf("%d",&bolen); // Bolenin 0 olmaması gerekiyor. if( bolen != 0 ) { sonuc = (float)bolunen / bolen; printf("Sonuc: %f\n",sonuc); } else printf("Hata: Sayı 0'a bölünemez!\n");
Örnek /* Girilen yaşın, 18 ile 65 arasında olup olmadığını belirler. */ #include<stdio.h> int main( void ) { int girilen_yas; printf("Lütfen yaşınızı giriniz> "); scanf("%d",&girilen_yas); if( girilen_yas >= 18 && girilen_yas <= 65 ) printf("Girilen yaş, 18 ile 65 arasındadır.\n"); //Girilen yaş 18 ile 65 arasında değilse, aşağıdaki else //bloğu çalışır. else { //Girilen yaş 18'den küçükse if( girilen_yas < 18 ) printf("Girilen yaş, 18'den küçüktür.\n"); //Girilen yaş 65'ten büyükse else printf("Girilen yaş, 65'ten büyüktür.\n"); }
If-else if if( koşul 1 ) { komut(lar) 1 } else if( koşul 2 ) { . else if( koşul n ) { komut(lar) n } else { komut(lar) n+1 }
#include<stdio.h> int main( void ) { int girilen_yas; printf("Lütfen yaşınızı giriniz> "); scanf("%d",&girilen_yas); if( girilen_yas < 18 ) printf("çocuk \n"); if( girilen_yas >= 18 && girilen_yas <= 30 ) printf("genc \n"); if( girilen_yas > 30 && girilen_yas <= 50 ) printf("orta yas \n"); return 0; }
#include<stdio.h> int main( void ) { int girilen_yas; printf("Lütfen yaşınızı giriniz> "); scanf("%d",&girilen_yas); if( girilen_yas < 18 ) printf("cocuk \n"); else { if( girilen_yas >= 18 && girilen_yas <= 30 ) printf("genc \n"); if( girilen_yas > 30 && girilen_yas <= 50 ) printf("orta yas\n"); } return 0;
#include<stdio.h> int main( void ) { int girilen_yas; printf("Lütfen yaşınızı giriniz> "); scanf("%d",&girilen_yas); if( girilen_yas < 18 ) printf(" cocuk\n"); else if( girilen_yas >= 18 && girilen_yas <= 30 ) printf(" genc\n"); else if( girilen_yas > 30 && girilen_yas <= 50 ) printf(" orta yas\n"); else printf("HATA: Girilen yaş tanımlı değildir!\n"); return 0; }
#include<stdio.h> int main( void ) { int sayi_1, sayi_2, sayi_3; printf("Üç sayı giriniz> "); scanf("%d %d %d", &sayi_1, &sayi_2, &sayi_3); if( sayi_1 >= sayi_2 && sayi_1 > sayi_3 ) printf("%d en büyük sayıdır!\n", sayi_1); else if( sayi_2 >= sayi_1 && sayi_2 >= sayi_3 ) printf("%d en büyük sayıdır!\n", sayi_2); else if( sayi_3 >= sayi_1 && sayi_3 >= sayi_1 ) printf("%d en büyük sayıdır!\n", sayi_3); return 0; }
Switch-case switch( degisken ) { case sabit1: komut(lar) [break] . case sabitN: default: komut(lar); }
#include<stdio.h> int main( void ) { int not; printf("Lütfen notu giriniz> "); scanf("%d",¬); switch( not / 10 ) { case 10: case 9: printf("NOT: A\n"); break; case 8: printf("NOT: B\n"); break; case 7: printf("NOT: C\n"); break; case 6: printf("NOT: D\n"); break; case 5: case 4: case 3: case 2: case 1: case 0: printf("NOT: F\n"); break; default: printf("HATA: Bilinmeyen bir değer girdiniz!\n"); } return 0;
#include<stdio.h> int main( void ) { int sayi_1, sayi_2; char operator_simgesi; printf("Lütfen işlem simgesi giriniz> "); scanf("%c",&operator_simgesi); printf("Lütfen birinci sayıyı giriniz> "); scanf("%d",&sayi_1); printf("Lütfen ikinci sayıyı giriniz> "); scanf("%d",&sayi_2); switch( operator_simgesi ) { case '+': printf("%d %c %d = %d\n",sayi_1,operator_simgesi, sayi_2, sayi_1 + sayi_2); break; case '-': printf("%d %c %d = %d\n",sayi_1,operator_simgesi, sayi_2, sayi_1 - sayi_2); break; case '%': printf("%d %c %d = %d\n",sayi_1,operator_simgesi, sayi_2, sayi_1 % sayi_2); break; case '*': printf("%d %c %d = %d\n",sayi_1,operator_simgesi, sayi_2, sayi_1 * sayi_2); break; case '/': printf("%d %c %d = %.2f\n",sayi_1,operator_simgesi, sayi_2, (float)sayi_1 / sayi_2);break; default: printf("HATA: Tanımsız bir operatör girdiniz!\n"); } return 0;