KBÜ KARABÜK ÜNİVERSİTESİ TBP101 Programlama Temelleri «S ÖZ D E KO D» Öğr. Gör. Dr. Abdullah ELEN Karabük Üniversitesi T.O.B.B. Teknik Bilimler Meslek Yüksekokulu Demir Çelik Kampüsü 78050 Karabük/TÜRKİYE aelen@karabuk.edu.tr https://www.elenium.net Belge No: TBP101/04 Revizyon: R-001 Yayın Tarihi: 07.10.2018
İçindekiler Sözde Kod Tanımı ve Yapısı Giriş/Çıkış Tanımları Karar Yapıları Döngü Yapıları Örnek Uygulamalar Alıştırma Soruları 2
Sözde Kod Nedir? Sözde Kod (Pseudo-code), bir bilgisayar programının veya başka bir algoritmanın çalışma prensibinin gayri resmi bir üst düzey tanımlamasıdır. Normal bir programlama dilinin yapısal kurallarını kullanır, fakat makine okumasından ziyade insan okumasına yöneliktir. Sözde Kod bir programlama dili değildir. Belirli bir sözdizimi (syntax) kullanmak zorunda olmayan bir dizi yönergeyi tanımlamanın basit bir yoludur. Sözde kodların İngilizce ifadelerle belirtilmesi dünyada yaygın olarak kabul görmektedir. 3
Sözde Kod Yapısı Bir sözde kod, yapısal olarak dört temel öğeye sahiptir. 1. Giriş/Çıkış Bilgi girişi ve çıkışı yapılan durumlar. 2. İşlemler Aritmetik ve mantıksal işlemler, bir değişkene değer atanması vb. olayların gerçekleştirilmesi. 3. Karar Yapıları Belirli bir koşulun sağlanıp sağlanmadığını kontrol ederek, yapılması gereken işlemler için kullanılır. 4. Tekrarlı Yapılar Bir koşula bağlı olarak ya da belirli bir sayıda tekrar edecek işlemler için kullanılır. 4
Sözde Kod Formatı Sözde kod için kabul edilmiş standart bir format yoktur. Bu dersin işlenmesinde, aşağıdaki örnekte gösterildiği biçimde kodlama yapılacaktır. PROGRAM <ProgramAdi> BEGIN Kodlar buraya yazılacak END PROGRAM OrtalamaHesaplayici BEGIN READ sayi1; READ sayi2; ort = (sayi1 + sayi2) / 2; PRINT ort; END 5
Giriş/Çıkış Giriş ve çıkış işlemlerini göstermek için genellikle birkaç anahtar kelime kullanılır. Aşağıdaki komutlardan herhangi biri tercih edilebilir. Giriş (Input): READ, GET Çıkış (Output): PRINT, WRITE, DISPLAY, SHOW 1. Başla 2. Vize notunu gir (vn) 3. Final notunu gir (fn) 4. ort = (vn + fn) / 2 5. Ekrana yazdır (ort) 6. Bitir READ vn; READ fn; ort = (vn + fn) / 2; PRINT ort; READ vn; READ fn; ort = (vn + fn) / 2; WRITE ort; GET vn; GET fn; ort = (vn + fn) / 2; DISPLAY ort; GET vn; GET fn; ort = (vn + fn) / 2; SHOW ort; 6
Karar Yapıları D e c i s i o n S t r u c t u r e s 7
IF-THEN-ELSE Belirli bir mantık koşulunda ikili (binary) seçim, dört anahtar kelimenin (IF, THEN, ELSE ve ENDIF) kullanılmasıyla gösterilir. IF (<Koşul>) THEN Koşul doğru (true) ise gerçekleşecek işlemler ENDIF IF (<Koşul>) THEN Koşul doğru (true) ise gerçekleşecek işlemler ELSE Koşul yanlış (false) ise gerçekleşecek işlemler ENDIF IF (<Koşul-1>) THEN Koşul-1 doğru ise gerçekleşecek işlemler ELSE IF (<Koşul-2>) THEN <Koşul-1> yanlış ve <Koşul-2> doğru ise ELSE <Koşul-1> yanlış ve <Koşul-2> yanlış ise ENDIF ENDIF 8
IF-THEN-ELSE If-Then-Else yapısı için «Sözde Kod» ve «Akış Diyagramı» aşağıda gösterilmektedir. Başla Vize, Final ORT = Vize*0.4 + Final*0.6 IF (ORT > 50) THEN PRINT "Geçti"; ELSE PRINT "Kaldı"; ENDIF Hayır "Kaldı" ORT > 50 Evet "Geçti" Bitir 9
IF-THEN-ELSE If-Then-Else iç içe yapısı için «Sözde Kod» ve «Akış Diyagramı» aşağıda gösterilmektedir. Başla Secim IF (Secim = 1) THEN PRINT "Toplama İşlemi"; ELSE IF (Secim = 2) THEN PRINT "Çıkarma İşlemi"; ELSE PRINT "Hatalı seçim yaptınız!"; ENDIF ENDIF Hayır Hayır Secim = 2 "Hatalı seçim yaptınız!" Evet Secim = 1 Evet "Çıkarma İşlemi" "Toplama İşlemi" Bitir 10
CASE-OF Case yapısı, çok durumlu dallanma ifadelerinde if-then-else blokları yerine tercihen kullanılırlar. Durumlar normalde sayı veya karakterdir. Anahtar kelime olarak CASE, OF, DEFAULT ve ENDCASE kullanılır. Varsayılan değerine sahip DEFAULT anahtar kelimesi isteğe bağlıdır. CASE <Durum Değişkeni> OF <Durum-1> : Komutlar <Durum-2> : Komutlar DEFAULT: Komutlar ENDCASE 11
CASE-OF Case-Of yapısı için «Sözde Kod» ve «Akış Diyagramı» aşağıda gösterilmektedir. Başla Secim CASE Secim OF 1: PRINT "Toplama İşlemi"; 2: PRINT "Çıkarma İşlemi"; DEFAULT: PRINT "Hatalı seçim yaptınız!"; ENDCASE Hayır Hayır Secim = 2 "Hatalı seçim yaptınız!" Evet Secim = 1 Evet "Çıkarma İşlemi" "Toplama İşlemi" Bitir 12
Döngü Yapıları L o o p S t r u c t u r e s 13
FOR For döngüsü, döngü kısıtlamalarının açık bir şekilde çıkarılabileceği (bilindiği) durumlarda kullanılır. For döngüsünün diğer döngülerden farkı; başlangıç, bitiş ve artış miktarının döngü içerisinde belirlenmesidir. Anahtar kelime olarak FOR, TO, STEP ve ENDFOR kullanılır. FOR <Kontrol Değişkeni>: <Başlangıç> TO <Bitiş> STEP <Artış Miktarı> Komutlar ENDFOR FOR X: 0 TO 10 STEP 1 PRINT X; ENDFOR 14
FOR For yapısı için «Sözde Kod» ve «Akış Diyagramı» aşağıda gösterilmektedir. Başla FOR X: 0 TO 10 STEP 1 PRINT X; ENDFOR X: 1, 10, 1 X Bitir 15
WHILE While döngüsü, yalnızca koşul doğru olduğu sürece çalışır. Her iterasyonun sonunda, durum değerlendirilir ve koşul doğru olduğu sürece döngü devam eder. Koşul yanlış olduğu durumda ise döngüden çıkılır. While döngüsünde döngü değişkeni bulunmaz, bunun yerine While bloğuna girmeden başlangıçta değeri bilinen bir değişken kullanılır. Döngünün başlangıcı WHILE ve bitişi ENDWHILE adlı iki anahtar kelime ile gösterilir. WHILE (<Koşul>) Komutlar ENDWHILE SET Sayac = 0; WHILE (Sayac < 10) Sayac = Sayac + 1; ENDWHILE 16
WHILE While yapısı için «Sözde Kod» ve «Akış Diyagramı» aşağıda gösterilmektedir. SET Sayac = 0; Başla Sayac = 0 WHILE (Sayac < 10) Sayac = Sayac + 1; ENDWHILE Sayac = Sayac + 1 Evet Sayac < 10 Hayır Bitir 17
REPEAT-UNTIL Bu yapı While döngüsüne benzerdir. Ama önce döngü içindeki kodlar bir kez yürütülür sonra mantıksal deyiminin sağlanıp sağlanmadığına bakılır. Her yinelemenin sonunda, durum değerlendirilir ve koşul yanlışsa döngü tekrarlanır. Durum, koşul doğru olduğunda sona erer. Anahtar kelime olarak REPEAT ve UNTIL kullanılır. REPEAT Kodlar UNTIL (<Koşul>) 18
REPEAT-UNTIL Repear-Until yapısı için «Sözde Kod» ve «Akış Diyagramı» aşağıda gösterilmektedir. Başla Sayac = 0 REPEAT Sayac = Sayac + 1; UNTIL (Sayac > 10) Hayır Sayac = Sayac + 1 Sayac > 10 Evet Bitir 19
Örnek Uygulamalar E x a m p l e s 20
Örnek Uygulamalar Klavyeden girilen iki sayının ortalamasını bularak sonucu ekrana yazıdan sözde kod ve akış diyagramı. Başla PROGRAM OrtalamaBul BEGIN READ A, B; ORT = (A + B) / 2; PRINT ORT; END A, B ORT = (A + B) / 2 ORT Bitir 21
Örnek Uygulamalar 0 dan 100 e kadar olan çift sayıları ekrana yazıdan sözde kod ve akış diyagramı. PROGRAM CiftSayilar BEGIN FOR X: 0 TO 100 STEP 2 PRINT X; ENDFOR END PROGRAM CiftSayilar BEGIN SET X = 0; WHILE (X <= 100) PRINT X; X = X + 2; ENDWHILE END Başla X: 0, 100, 2 Bitir X 22
Örnek Uygulamalar N! = 1 2 N N Faktöriyel hesaplama işlemini yapan ve sonucu ekrana yazdıran sözde kod ve akış diyagramı. Başla PROGRAM FaktoryelHesaplama BEGIN READ N; SET top = 1; FOR X: 1 TO N STEP 1 top = top * X; ENDFOR PRINT top; END top Bitir N top = 1 x: 1, N, 1 top = top * x 23
Örnek Uygulamalar Klavyeden girilen üç sayıdan en büyüğünü bulan programın sözde kodu ve akış diyagramı. Başla a, b, c PROGRAM EnBuyukSayiyiBul BEGIN READ a, b, c; SET max = a; IF (b > max) THEN max = b; IF (c > max) THEN max = c; ENDIF ELSE IF (c > max) THEN max = c; ENDIF ENDIF END c > max H E max = a b > max H max = c E max = b Bitir 24
Örnek Uygulamalar 1 ile 100 arasındaki Hilbert sayılarını bularak sonucu ekrana yazdıran sözde kod ve akış diyagramı. Başla S = 1 PROGRAM HilbertSayilari BEGIN FOR f: 1 TO 100 STEP 1 IF ((f 1) mod 4 = 0) THEN PRINT f; ENDIF ENDFOR END S = S + 1 H (f-1) mod 4 = 0 f E E S <= 100 H Bitir Hilbert Sayısı: Bir eksiği 4 e tam bölünebilen pozitif tam sayılara Hilbert Sayısı denir. 25
Örnek Uygulamalar PROGRAM DortlukNotuHarfNotunaCevir BEGIN READ dnot; IF (dnot > 3.0) THEN PRINT "A"; ELSE IF (dnot > 2.0 AND dnot <= 3.0) THEN PRINT "B"; ELSE IF (dnot > 1.0 AND dnot <= 2.0) THEN PRINT "C"; ELSE PRINT "F"; ENDIF ENDIF ENDIF END Klavyeden girilen dörtlük sistemdeki bir notu harf notuna dönüştüren sözde kod. Dörtlük Not Harf Notu 3.1-4.0 A 2.1-3.0 B 1.1-2.0 C 0.0-1.0 F 26
Açıklamalar Sayıları basamaklarına ayırma ve basamak değerlerini bulma A = 2318 S1 = A mod 10 => S1 = 8 S2 = A mod 100 => S2 = 18 S3 = A mod 1000 => S3 = 318 B1 = A/10 => B1 = 231 B2 = A/100 => B2 = 23 B3 = A/1000 => B3 = 2 C1 = S2/10 => C1 = 1 C2 = (S3-S2)/100 => C2 = 3 27
Alıştırma Soruları E x e r c i s e s 28
Alıştırma Soruları 1) Klavyeden girilen üç sayıyı toplayan ve ortalamasını alıp sonuçları ekrana yazdıran sözde kodu yazınız. 2) Bir üçgene ait yükseklik ve taban uzunluğu değerlerini klavyeden girerek, alanını hesaplayan ve sonucu ekranda gösteren sözde kodu yazınız. 3) Klavyeden girilen suyun sıcaklık derecesine göre katı, sıvı veya gaz halinde olduğunu bulan ve sonucu ekranda gösteren sözde kodu yazınız. 4) Klavyeden girilen bir tamsayının pozitif, negatif veya sıfır olduğunu bulan sözde kodu yazınız. 5) Klavyeden girilen pozitif bir tamsayının tek ya da çift olduğunu bulan sözde kodu yazınız. 29
Alıştırma Soruları 6) Bir fabrikada sabit maaşla çalışan işçiler aile durumlarına göre ek maaş almaktadırlar. Çocuk sayısı 1 ise maaşının %5 i kadar, çocuk sayısı 2 ise %10 u kadar, 3 ve daha fazla ise %15 i kadar aile yardımı almaktadır. Buna göre kullanıcıdan işçinin maaşı ve çocuk sayısı istenerek gerekli hesaplamayı yapan sözde kodu yazınız. 7) Bir ürüne ait alış fiyatı, vergi oranı ve kar oranı parametreleri klavyeden girilerek satış fiyatını hesaplayan sözde kodu yazınız. 8) Klavyeden girilen iki sayı için, dört işlem (1:Topla, 2:Çıkar, 3:Çarp, 4:Böl) yapabilen bir sözde kodu yazılması istenmektedir. Kullanıcı 1 ve 4 arasında bir işlem numarası girerek bu işlemleri gerçekleştirir. Bunlardan farklı bir rakam girildiğinde program sonlanır. 30
Alıştırma Soruları 9) BiletKart uygulaması için bir metroda uygulanan ücret tarifesi aşağıdaki gibidir. Buna göre, uygulanan ücret politikasının algoritmasını oluşturunuz. Normal tarife: 3 TL Öğrenci ve 30 (dahil) yaşından küçük olanlar: 2.5 TL Öğrenci ve 30 yaşından büyük olanlar: 2.75 TL 60 (dahil) yaşından büyük olanlar: Ücretsiz NOT: Bir kişi her iki koşulu birden taşıması durumunda, daha düşük olan ücret tarifesi uygulanır. 10) Klavyeden girilen pozitif bir X tamsayısının tam bölenlerini bulup ekranda gösteren sözde kodu yazınız. (Örn. 6 sayısı için; 1, 2, 3 ve 6 dır.) 31
Alıştırma Soruları 11) Tau sayıları: Tam bölenlerinin sayısına kalansız bölünebilen sayılara Tau sayısı denir. Buna göre Klavyeden girilen pozitif bir X tamsayısının Tau sayısı olup olmadığını bulan sözde kodu yazınız. Örneğin 12 sayısı için; 12 nin tam bölenleri: 1,2,3,4,6,12 12 nin tam bölenlerinin sayısı: 6 12 mod 6 = 0 ise 12 bir Tau sayısıdır. 12) 1 ile 100 arasındaki Tau sayılarını bulan ve ekranda listeleyen sözde kodu yazınız. 32
Kaynaklar B u d e r s n o t u h a z ı r l a n ı r k e n a ş a ğ ı d a b e l i r t i l e n k a y n a k l a r d a n y a r a r l a n ı l m ı ş t ı r. 1 Algoritma ve Programlama Giriş Ders Notları, İbrahim Küçükkoç, Balıkesir Üniversitesi (3.10.2018) 2 Introduction to Computers and Programming Lecture Notes, New York University (03.10.2018) 3 Pseudocode Standard, John Dalbey, California Polytechnic State University (05.10.2018) 4 5 6 7 8 9 10 33