ALGORİTMA & PROGRAMLAMA Doç. Dr. Yalçın ÇEBİ Arş. Gör. Özlem AKTAŞ yalcin@cs.deu.edu.tr ozlem@cs.deu.edu.tr
Algoritma Nedir? Problemin çözümüne ulaştıran genel yöntemlerdir. Verilen bir problemi çözmek için tasarlanan talimatlar bütünüdür. Bir sorunun çözümü için sunulan mantıksal ve sembolik anlatımdır.
Algoritmanın Özellikleri Input / Girdi Output / Çıktı Anlaşılır Verimli Sonuca ulaşmalı
Programlama Dilleri Makina Dilleri Sembolik Diller Yüksek Seviyeli Diller Mov AX, Num1 Mov BX, Num2 Add AX, BX Mov Total, AX 10101010111011111010010111011111100111111.... Total = Num1 + Num2 Fortran (FORmula TRANslator, 1957) Cobol (Common Business Oriented Language, 1959) Basic (Beginners All purpose Symbolic Instructional Code, 1964) Pascal, 1968 C, 1972
Programlama Dili Elemanları Anahtar Sözcükler Değişkenler Operatörler Sabitler Noktalama işaretleri
Değişken Değişkenler; bellekte belli bir yer işgal eden ve içerisinde bir değeri tutan bellek alanlarıdır. Değişken Özellikleri İsim Tür Değer
Değişken İsimleri İlk karakter mutlaka harf olmak zorundadır. İlk karakterden sonra karakter, alt cizgi yada sayı olabilir. Değişken isimlerinde Türkçe harfler bulunmamalıdır. Özel karakterler kullanılmamalıdır. ‘ ’ Boşluk , Virgül ! Ünlem . Nokta ; Noktalı virgül : İki nokta ‘ Tırnak “ Çift tırnak | Duvar ( Sol parantez ) Sağ parantez [ Sol köşeli parantez ] Sağ köşeli parantez { Sol küme } Sağ küme / Bölme (slaş) \ Ters bölme ~ Tilde + Artı Eksi = Eşit < Küçük > Büyük # Diyez * Yıldız & Ve ^ Üst ok (karet)
Değişken İsimleri Ayrılmış isimler kullanılmamalıdır. asm Auto Break Char Const Continue Double Else Enum Float For Goto İnt İnterrupt Long Register Return Short Static Struct Switch Unsigned Void While _CS _BP _SI _ES _AX _BH
Değişken Tipleri Tip Boyut (Bytes) Aralık int 2 -32,768 ..... 32,767 float 4 +-3.4E -38 ..... +-3.4E 38 (3.4 * 10 ^ 38) double +-1.7E-308.......+-1.7E308 char 1 -128....+127 unsigned char 0.....255 unsigned int 0.....65,535
AÇIKLAMA SATIRLARI Kodlarla ilgili açıklamalar yazmak için açıklamanın başına // veya açıklamanın başına /* sonuna da */ yazmak gereklidir.
DIŞ ORTAMA DEĞER AKTARMA Program içinde elde edilen sonuçların dış ortama aktarılması için printf komutu kullanılır. printf cprintf fprintf sprintf
DIŞARIDAN VERİ ALMA Klavyeden veri almak için scanf komutu kullanılır. cscanf fscanf sscanf
C Program Yapısı #include <stdio.h> #include <conio.h> // Ekrana "Merhaba" yazdıran program void main(){ clrscr(); printf("Merhaba"); getch(); }
#include <stdio.h> #include <conio.h> // Ekrandan iki sayı alıp toplamını ekrana yazan program void main() { clrscr(); int sayi1; int sayi2; int toplam; printf("1. sayiyi giriniz: "); scanf("%d",&sayi1); printf("2. sayiyi giriniz: "); scanf("%d",&sayi2); toplam=sayi1+sayi2; printf("Toplam=%d",toplam); getch(); }
Çıkış Format Karakterleri Sayısal Değerler İçin d Tamsayı i İşaretli tamsayı u İşaretsiz tamsayı f Gerçel sayı e Üssel gerçel sayı ld Long tamsayı lf Double gerçel sayı Karakterler İçin c Tek karakter s String (Karakter dizisi)
Escape Düzeni Karakterleri Kursörü bir alt satırın başına getirir (Newline) \r Kursörü satırın başına getirir (Carriage Return) \b Kursörü bir harf kadar geri çeker (Back space) \a Zil sesi verir (Alert / Bell) \t Yatay tab (Horizontal Tab) \\ Sadece \ karakterini yazar \’ Sadece ‘ karakterini yazar \” Sadece “ karakterini yazar \0 NULL karakteri
Önişlemci Komutları #include # define #include “filename.h” #define isim yerini_tutacak_veri #define Pi 3.1415
Önişlemci Komutları - Örnek Yarıçap bilgisini kullanıcıdan alarak dairenin alanını bulup ekrana yazan programı yazınız.
Operatörler Aritmetiksel Operatörler () Parantez ^ Üs * Çarpma / Bölme + Toplam - Çıkarma = Atama
Operatörler İlişkisel Operatörler Mantıksal Operatörler < Küçüktür > Büyüktür == Eşit != Eşit Değil <= Küçük Eşit >= Büyük Eşit Mantıksal Operatörler && And || Or ! Not
Akış Şeması (Flow-Chart) Sembolleri Terminator : Programın başlangıç ve bitiş noktaları Data Input or Output : Girdi ve çıktı gösterimi Processing : İşlem, değişken ataması gibi Decision : Karar ve karşılaştırma işlemleri, sonucun doğru yada yanlış olmasına göre program akışı değişir Flow : Programın akış yönü
IF-ELSE ve GOTO
IF-Else Kontrol Yapısı Koşul1 sağlanıyorsa işlem A gerçekleşir. IF (koşul1) { İşlem A; } Evet İşlem A Koşul 1 Koşul1 sağlanıyorsa İşlem A, sağlanmıyorsa İşlem B gerçekleşir. IF (koşul1) { İşlem A; }else{ İşlem B; } Evet Hayır İşlem A Koşul 1 İşlem B
IF-Else Kontrol Yapısı Koşul1 sağlanıyorsa işlem A, koşul1 sağlanmıyorsa ve koşul2 sağlanıyorsa İşlem B, koşul1 ve koşul2 sağlanmıyorsa işlem C gerçekleşir . IF (koşul1) { İşlem A; } ELSE IF (koşul2){ İşlem B; ELSE{ İşlem C; Koşul 1 Koşul 2 Hayır Hayır Evet Evet İşlem A İşlem B İşlem C
IF-Else Kontrol Yapısı Üçlü kontrol yapısı : Koşul doğru ise İşlem1 işlem görür, yanlış ise İşlem2 işlem görür. (Koşul )? İşlem1 : İşlem2; Örnek: X= 10 Y=5 ise Z = (X > Y) ? 20 : 15; Z = 20 olur Z = (X > Y) ? X : Y; Z = 10 olur
GOTO GOTO komutu program içerisindeki ifadelerin çalışma sırasını değiştirir. Koşul sağlandığı takdirde program bir sonraki ifadeyi değil GOTO etiketinin olduğu satırı işler. goto ETIKET; .... ... ETIKET: Programın sonuna etiket konulması istenirse mutlaka ; karakteri de etikete eklenmelidir. ETIKET: ;
Örnekler 10 – Girilen ortalama 100-85 ise “PEKİYİ”, 1- En ve boy bilgileri verilen bir tarlanın alanının bulunması 2- Girilen üç sayının ortalamasının bulunması 3- Girilen üç sayının kareler ortalamasını ekrana yazdırma 4- Girilen iki sayının toplamını, farkını, çarpımını ve bölümünü ekrana yazdıran programı yazınız. 5- Girilen sayıların ortalamasının bulunması 6- Sınav notu girilen bir öğrencinin sınavı geçip geçmediğini bulma 7- Satın alınan ürünlerin toplam fiyat tutarının ve %18 kdv dahil genel toplam tutarının bulunması 8- Girilen bir sayının çift mi tek mi olduğunu yazma 9- Girilen iki sayının büyük olanını ekrana yazma / İki sayıyı karşılaştırma 10 – Girilen ortalama 100-85 ise “PEKİYİ”, 84-70 ise “İYİ”, 69-50 ise “ORTA”, 50’den küçük ise "KALDI” yazan program
Örnekler 11- 3 tane sayının toplamını GOTO deyimi kullanarak bulan program 12- N tane sayının ortalamasını bulan program 13- Kullanıcıdan sıfır girinceye kadar sayı okuyup, sıfır girince girilen sayıların toplamını ekrana yazan program 14- Kullanıcıdan sıfır girinceye kadar alınan sayıların içerisinde 5 ile bölünebilen sayıların toplamını bulma
Switch – Case Yapısı
Switch - Case Statement Birden fazla karşılaştırma gereksiniminde kullanılır. Switch(değişken ) { case sabit1 : işlemler ; break; case sabit2: default: işlemler ; }
Switch - Case Örnek IF (Score == 90) { Grade = "A" ;} Switch (Score){ case 90 : Grade = "A" ; break; case 80 : Grade = "B" ; case 70 : Grade = "C" ; case 60 : Grade = "D“; default: Grade = "F" } IF (Score == 90) { Grade = "A" ;} ELSE IF (Score == 80) { Grade = "B“; } ELSE IF (Score == 70) { Grade = "C“;} ELSE IF (Score == 60) { Grade = "D“; } ELSE { Grade= "F“ ; }