KBÜ KARABÜK ÜNİVERSİTESİ TBP101 Programlama Temelleri «A LG O R İ T M A G E L İ Ş T İ R M E» Öğ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/02 Revizyon: R-001 Yayın Tarihi: 21.09.2018
İçindekiler Algoritma Geliştirme Yöntemleri Algoritmada Kullanılan Terimler Algoritma Yazma Kuralları Algoritmik Problem Çözme Alıştırmaları 2
Algoritma Geliştirme Yöntemleri D e f i n i t i o n s o f Te r m s U s e d i n A l g o r i t h m 3
Algoritma Geliştirme Yöntemleri Bir problemin çözümü için geliştirilen algoritma üç farklı şekilde gerçekleştirilebilir: 1. Satır algoritma 2. Akış diyagramı (Flow-chart) 3. Sözde kod (Pseudo-code) 4
Algoritma Geliştirme Yöntemleri Satır Algoritma Problemin çözümü için yapılması gereken işlem adımları öncelik sıraları göz önünde bulundurularak, açık ve net bir şekilde (hiçbir alternatif yoruma izin vermeksizin) sözel olarak ifade edilir. 1. Başla 2. Birinci sayıyı (A) klavyeden gir. 3. İkinci sayıyı (B) klavyeden gir. 4. Girilen sayıları toplayarak (C=A+B) sonucu oluştur. 5. Sonucu (C) ekrana yazdır 6. Bitir 5
Algoritma Geliştirme Yöntemleri Akış diyagramı (Flow-chart) Algoritmanın görsel/şekilsel olarak ortaya koyulmasıdır. Problemin çözümü için yapılması gereken işlem adımları, başından sonuna kadar, geometrik şekillerden oluşan simgelerle ifade edilir. Evet Başla Alarm çal Uyandı mı? Hayır 5 dk. Bitir 6
Algoritma Geliştirme Yöntemleri Sözde kod (Pseudo-code) Problemin çözüm adımları, komut benzeri anlaşılır metinlerle veya kısaltmalarla ifade edilir. Diğer bir ifadeyle, bir algoritmanın yarı programlama dili kuralı, yarı konuşma diline dönük olarak ortaya koyulmasıdır. Sözde kodların İngilizce ifadelerle belirtilmesi dünyada yaygın olarak kabul görmektedir. INPUT (A) INPUT (B) IF A > B THEN C = A B ELSE C = A + B OUTPUT C 7
Algoritmada Kullanılan Terimler D e f i n i t i o n s o f Te r m s U s e d i n A l g o r i t h m 8
Algoritmada Kullanılan Terimler Tanımlayıcı (Identifier) Programdaki değişkenleri, sabitleri, alt yordamları, özel veri tiplerini vb. adlandırmak için kullanılan kelimelerdir. Tanımlayıcılar, yerini tuttukları ifadelere çağrışım yapacak şekilde seçilmelidir. İsimlendirme Kuralları İngiliz alfabesindeki A-Z veya a-z arası 26 harf kullanılır. 0-9 arası rakamlar kullanılabilir. Sembollerden sadece alt çizgi (_) kullanılabilir. Tanımlayıcı isimleri harfle veya alt çizgi ile başlayabilir. Tanımlayıcı isimleri rakamla başlayamaz veya sadece rakamlardan oluşamaz! İlgili programlama dilinin rezerve edilmiş kelimeleri kullanılamaz! 9
Algoritmada Kullanılan Terimler Değişken (Variable) Programın akışı içinde farklı değerleri tutmak üzere ayrılmış bellek bölümüdür. Örneğin C = A + B gibi bir ifadede A, B ve C tanımlayıcıları birer değişkendir. Değişken isimlendirilmeleri, tanımlayıcı kurallarına uygun biçimde yapılmalıdır. En çok kullanılan standart tanımlayıcı/değişken gösterimleri: Pascal Case: Tanımlayıcıdaki her kelimelerin ilk harfi büyük yapılır. Örnek: AdSoyad, OgrenciNo, EnBuyukSayi Camel Case: En baştaki kelimenin ilk harfi küçük, diğer kelimelerin ilk harfleri büyük yapılır. Örnek: adsoyad, ogrencino, enbuyuksayi 10
Algoritmada Kullanılan Terimler Sabit (Constant) Programdaki değeri değişmeyen ifadelere sabit denir. Program her çalıştığında ve programın içinde herhangi bir anda hep aynı değeri döndürürler. Tanımlayıcı kurallarına uygun olarak oluşturulur. Sabitlere sayısal veriler doğrudan, alfa sayısal veriler ise tek/çift tırnak içinde aktarılır. ÖRNEK A = 2018 kullaniciadi = "Abdullah Elen«PiSayisi = Math.PI 11
Algoritmada Kullanılan Terimler Atama/Aktarma Operatörü Bir değişkene değer aktarma durumlarında kullanılır. Eşitlik "=" sembolü ile gösterilir Değişken = ifade Değişken yazan kısım herhangi bir değişken ismidir. İfade yazan kısımda ise matematiksel, mantıksal veya alfa sayısal ifade olabilir. Öncelikle eşitliğin sağ tarafındaki işlem(ler) yapılır ve daha sonra soldaki değişkene aktarır. Bu durumda değişkenin bir önceki değeri silinir. ÖRNEK A = 0 AdiSoyadi = "Abdullah Elen«X = A * (B + C) 12
Algoritmada Kullanılan Terimler Sayaç Kullanımı Programlarda bazı işlemlerin belirli sayıda yapılması veya işlenen değerlerin sayılması gerekebilir. Örneğin; klavyeden girilen bir cümle içindeki sesli harfleri bulan bir programda, cümlenin her harfi sırasıyla çağrılır ve sesli harfler kümesine ait olup olmadığı araştırılır. Eğer sıradaki çağrılan harf bu kümeye ait ise, bunları sayacak olan değişkenin değeri bir artırılır. Sayaç Yapısı {Değişken Adı} = {Değişken Adı} + {Artış Miktarı} Sayac = Sayac + 1 Buradaki örnekte; Sayac isimli değişkenin eski değerinin üzerine 1 eklenerek (Sayac + 1), bulunan sonuç yine değişkenin kendisine yeni değer olarak atanmaktadır. 13
Algoritmada Kullanılan Terimler Döngü (Loop) Kullanımı Programlardaki belirli işlem bloklarını (kod parçalarını); aynı veya farklı değerlerle, verilen sayıda gerçekleştiren çevrim yapılarına döngü denir. Örneğin 1 ile 100 arasındaki tek sayıları ekrana yazdıracak program için; 1 ile 100 arasında ikişer ikişer artan bir döngü açılır. Döngü değişkeni ardışık olarak ekrana yazdırılır. Döngü Oluşturma Kuralları: Döngü değişkenine başlangıç değeri verilir. Döngünün artma veya azaltma değeri belirlenir. Döngünün bitiş değeri belirlenir. Örnek: Tek Sayıları Ekrana Yazdıran Kod. 1. Başla 2. Sayac = 1 3. Yaz Sayac 4. Sayac = Sayac + 2 5. Eğer (Sayac < 100) Git 3 6. Bitir Başlangıç değeri Artış değeri Bitiş değeri 14
Algoritmada Kullanılan Terimler Ardışık Toplama Çalışma prensibi sayacınkine benzer, aynı değerin üzerine yeni değerler eklemek için kullanılır. Genel kullanım şekli şöyledir: Toplam = Toplam + Sayi Toplam değişkenine başlangıç değeri olarak 0 atanır. ÖRNEK: Klavyeden girilen 5 adet sayının ortalamasını bulan algoritma. 15
Algoritmada Kullanılan Terimler Ardışık Çarpma Bu işlemde aynı değer, yeni değerlerle çarpılarak eskisinin üzerine yazılır: Genel kullanım şekli şöyledir: Toplam = Toplam * Sayi Toplam değişkenine başlangıç değeri olarak 1 atanır. ÖRNEK: Klavyeden girilen N sayısının faktöriyelinin hesaplanması. 16
Algoritma Yazma Kuralları B a s i c R u l e s f o r A l g o r i t h m D e v e l o p m e n t 17
Algoritma Yazma Kuralları Algoritmadaki tüm satırlar 1 den başlayarak numaralandırılmalıdır. Bütün algoritmalarda ilk satır 1. Başla şeklindedir. Bütün algoritmalar Bitir ile son bulur. Algoritmalarda kullanılan Git işlem akışı yönlendirme komutu satır numarasıyla birlikte kullanılmalıdır. Örneğin; Adım 3 e Git 1. Başla 2. Sayacı sıfırla (Sayac = 1) 3. Ekrana sayacı (Sayac) yazdır. 4. Sayacı 2 arttır (Sayac = Sayac + 2) 5. Eğer (Sayac < 100) Adım 3 e Git 6. Bitir 18
Algoritma Yazma Kuralları Algoritmalarda kullanılabilecek alt yordamlar, tanımlayıcı isimleri ve parametreleriyle birlikte verilmelidir. NotOrtalamasiHesapla(VizeNotu, FinalNotu) Algoritmalardaki adımlar, sınırlı sayıda, açık, net ve kesin olmalıdır. Algoritmalardaki ifadeler anlaşılır ve mümkün olduğunca sade (az ve öz) olmalıdır. Algoritmalardaki ifadeler, herhangi bir programlama diline, donanıma, işletim sistemine vb. bağlı olmamalıdır. 19
Algoritmik Problem Çözme Alıştırmaları E x e r c i s e s o n A l g o r i t h m i c P r o b l e m S o l v i n g 20
Örnek Problemler ÖRNEK 1: Bir öğrencinin TBP101 dersinden aldığı Vize ve Final notları klavyeden girilerek, ortalamasını hesaplayan ve sonuç 50 den büyükse ekrana «GEÇTİ» değilse «KALDI» yazdıran algoritmayı tasarlayınız. 1 BAŞLA 2 Vize notunu (V) klavyeden gir. 3 Final notunu (F) klavyeden gir. 4 Ortalama = (V * 0.4 + F * 0.6) 5 Eğer Ortalama>50 ise 6 Ekrana "GEÇTİ" yaz. 7 Değilse 8 Ekrana "KALDI" yaz. 9 BİTİR 21
Örnek Problemler ÖRNEK 2: 0 dan 100 e kadar olan sayıların içerisinde çift olanları ekrana yazdıran ve sayaç 100 den büyük değere ulaştığı anda ekrana «İşlem Tamamlandı!» yazdıran kodu yazınız. 1 BAŞLA 2 Sayacı sıfırla (Sayac = 0) 3 Ekrana Sayac değerini yaz. 4 Sayacı 2 arttır (Sayac = Sayac + 2) 5 Eğer (Sayac < 100) ise 6 Adım 3 e git. 7 Değilse 8 Ekrana "İşlem Tamamlandı" yaz. 9 BİTİR 22
Örnek Problemler ÖRNEK 3: Klavyeden girilen üç sayıdan en büyük olanını bulup ekrana yazdıran algoritmayı yazınız. 1 BAŞLA 2 Klavyeden üç sayı (x, y, z) gir. 3 İlk sayıyı en büyük olarak belirle (ebs = x) 4 Eğer (y > ebs) ise ebs = y 5 Eğer (z > ebs) ise ebs = z 7 Ekrana en büyük sayıyı (ebs) yaz. 8 BİTİR 23
Örnek Problemler ÖRNEK 4: Bir üçgene ait kenar büyüklükleri kullanıcı tarafından klavyeden girilsin. Buna göre kenar büyüklüklerini analize ederek, ne çeşit bir üçgen olduğunu bulan algoritmayı yazınız. a c b 1 BAŞLA 2 Kenar ölçülerini (a, b, c) klavyeden gir. 3 Eğer (a = b) ve (b = c) ise 4 Ekrana "Eşkenar Üçgen" yaz. 5 Değilse 6 Eğer (a = b) veya (a = c) veya (b = c) ise 7 Ekrana "İkizkenar Üçgen" yaz. 8 Değilse 9 Ekrana "Çeşitkenar Üçgen" yaz. 12 BİTİR 24
Örnek Problemler ÖRNEK 5: Bu örnekte küçük bir ücret bordrosu yapmaya çalışacağız. Yani çalışılan gün ile günlük ücret klavyeden girildiğinde aşağıdaki kurallara göre o kişinin eline geçecek net aylık ücreti hesaplayan algoritmayı yapacağız Aylık brüt gelir = günlük ücret * çalışılan gün sayısı Gelir vergisi = aylık brüt gelir * vergi oranı Net aylık ücret = Aylık brüt gelir Gelir vergisi Kurallar: Çalışılan gün sayısı 31 den fazla olmamalı. Gelir vergisi oranı, aylık brüt gelirin %20 si olarak uygulanmalı. Ancak aylık geliri 5.000 TL den fazla olanlar için %25 olarak uygulanmalıdır. 25
Örnek 5: (Devam) 1 BAŞLA 2 Çalışılan gün sayısını (cgs) gir. 3 Eğer cgs>31 ise 4 Adım 2 ye git. 5 Değilse 6 Günlük ücreti (gu) gir. 7 Aylık brüt gelir hesapla (abg = gu cgs) 8 Eğer abg > 5000 ise 9 Vergi oranını %25 olarak belirle (vo = 0. 25) 10 Değilse 11 Vergi oranını %20 olarak belirle (vo = 0. 2) 12 Gelir vergisi hesapla (gv = abg vo) 13 Net aylık ücreti hesapla (nau = abg gv) 14 BİTİR Değişkenler abg Aylık brüt gelir gu Günlük ücret cgs Çalışan gün sayısı vo Vergi oranı gv Gelir vergisi nau Net aylık ücret 26
Alıştırmalar 1) Klavyeden girilen üç sayıyı toplayan ve ortalamasını alıp sonuçları ekrana yazdıran algoritmayı 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 algoritmayı 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 algoritmayı yazınız. 4) Klavyeden girilen bir tamsayının pozitif, negatif veya sıfır olduğunu bulan algoritmayı yazınız. 5) Klavyeden girilen pozitif bir tamsayının tek ya da çift olduğunu bulan algoritmayı yazınız. 27
Alıştırmalar 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 algoritmayı yazınız. 7) Bir ürüne ait alış fiyatı, vergi oranı ve kar oranı parametreleri klavyeden girilerek satış fiyatını hesaplayan algoritmayı 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 algoritma 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. 28
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 Programlama Temelleri Ders Notları, Erkan Hürnalı, Ankara Üniversitesi (10.09.2018) 2 Programlama Temelleri Ders Notları, Yasin Şahin, Gümüşhane Üniversitesi (10.09.2018) 3 Algoritma ve Programlama, Umut Engin Ayten, Yıldız Teknik Üniversitesi (21.09.2018) 4 5 6 7 8 9 10 29