Algoritma ve Programlama: Karar Yapıları ve Döngüler



Benzer belgeler
C/C++ ile Programlamaya Giriş. Yrd.Doç.Dr.Bülent Çobanoğlu

Yrd.Doç.Dr.Bülent Çobanoğlu

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Temel Giriş/Çıkış Fonksiyonları

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Eln 1001 Bilgisayar Programlama I

Java da Dizi Tanımlama

3. VERİ GİRİŞ-ÇIKIŞI (4ncü hafta)

C Programlama Dilininin Basit Yapıları

Ders 4: Temel Giriş/Çıkış Fonksiyonları

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

PROGRAMLAMAYA GİRİŞ DERS 2

C Konsol Giriş Çıkış Fonksiyonları

8. Bölüm DİZİLER. tip dizi_ismi[eleman_sayısı]; Bütün diziler 0 ile baţlar.

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

C++ Operatörler (Operators)

C Programlama printf() Fonksiyonu

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

NOT: Bu kodlar çeşitli internet siteleri, üniversite siteleri ve ders kitaplarından derlenerek hazırlanmıştır.

BİL1001 Bilgisayar Bilimlerine Giriş 1

Genel Programlama II

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

BİL1001 Bilgisayar Bilimlerine Giriş 1

C dilinde if-else yapısı

C PROGRAMLAMA D İ L İ

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

C PROGRAMLAMA DİLİNE GİRİŞ

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Bölüm 3 Yapısal Programlama

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Giris {\} /\ Suhap SAHIN Onur GÖK

IF / ELSE IF / ELSE. Bu deyimler, koşullu işlem yapan deyimlerdir ve daima if deyimi ile başlar, else if veya else ile devam eder.

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

Fonksiyonlar (Altprogram)


KONTROL YAPILARI (CONTROL STRUCTURES)

Hafta 8 C Dilinde Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

AKIŞ ŞEMASI AKIŞ ŞEMASI AKIŞ ŞEMASI ŞEKİLLERİ GİRİŞ

for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) { ifadeler; }

Algoritmalar ve Programlama. Algoritma

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Döngü ve Koşul Deyimleri

Giriş. ENF102 Jeoloji

disp VEYA fprintf KOMUTLARIYLA EKRANA MESAJ YAZDIRMA

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

STRING (SÖZEL) İŞLEMLER. Yrd. Doç.Dr. Bülent Çobanoğlu

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

Sınav tarihi : Süre : 60 dak.

C PROGRAMLAMA D İ L İ

int printf (const char *format [, argument,...]);

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

Ders - 7 while döngüsü

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

2. BÖLÜM (2nci hafta)

Adı Soyadı : Öğrenci No :

Temel Bilgisayar Programlama

İnternet Programcılığı Dersi 2.Dönem Ders Notu

Bölüm 2 - C ile Programlamaya Giriş

5. BÖLÜM (10ncu ve 11nci hafta)

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

BÖLÜM 7: DÖNGÜ KONTROL YAPILARI

HSancak Nesne Tabanlı Programlama I Ders Notları

Adım Adım C. Dr. Hidayet Takcı

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

ALGORİTMA TASARIMI VE SCRATCH UYGULAMASI

Bölüm 8, Yrd. Doç. Dr. A. Kadir YALDIR PAÜ Bilgisayar Mühendisliği Bölümü BÖLÜM 8: DİZİLER

ALGORİTMA VE PROGRAMLAMA I

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

Program Akış Kontrol Yapıları

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

İLKEL VERİ TİPLERİ, STRINGLER VE KONSOL G/Ç

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar

C PROGRAMLAMA D İ L İ

Program Çözümleme. Aşağıdaki örneklerde printf() ve scanf() fonksiyonlarının işlevleri gösterilmektedir. Liste 1.1. Çözümleme:

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Döngüler - Loops 4/9/2010. ENF-102 Jeoloji Giriş. Sayaç kontrollü bir döngüdeki temel öğeler. Sayaç (counter) Kontrollü Döngüler.

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek

Python Programlama Dili

BÖLÜM 1b: C++ PROGRAMLAMANIN YAPISI. C++, hard diskte TC, BIN, INCLUDE, LIB gibi alt dizinlere yüklenir.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

BÖLÜM 2 C PROGRAMLAMADA AKIŞ KONTROLÜ. GOTO: C programında programın herhangi bir yerinden bir yerine şartsız olarak atlanmasını sağlayan komuttur.

Hafta 9 C Dilinde Kontrol ve Döngü Yapıları

pfrintf fonksiyonu: Çıkışın formatlı olması ve bunun bir dosyaya yazdırılması durumlarında kullanılır. fprintf fonksiyonunun genel yazım biçimi,

2. Dereceden Denklemin Köklerini Bulan Program

Bil Hafta Çalışma Soruları (Yanıtlar)

Programlama Dilleri 1. Ders 4: Diziler

Transkript:

Algoritma ve Programlama: Karar Yapıları ve Döngüler Bir algoritma, herhangi bir programlama dili (C, C++, Pascal, Visual Basic, Java gibi) ile kodlandığında program haline gelir. Algoritmada yer alan her bir emir, birer komuttur. Komutlar programlama dillerine göre değişse de algoritma ve algoritmadaki akış şemaları her zaman aynıdır. Yani algoritma veya akış şemalarının dili evrenseldir. Algoritmadaki emir kiplerinin (Gir, Yaz gibi) ve her bir akış şemasının programlama dillerinde (C, C++ ve Java) hangi komutla temsil edildiğini aşağıdaki tablodan (Tablo 1) görebilirsiniz. Tablo 1. Akış şemalarındaki simgelerin programlama dillerindeki komut karşılıkları Akış şeması C C++ int main () int main () Başla a Veri girişi (Gir) a Ekran çıktısı (Yaz, Göster) a=a+1; İşlem (Hesapla) koş ul Karar (Eğer ise) a=1,6, 1 Döngü (Tekrarla) isim Alt program (Çağır) Dur scanf (%d, a); printf ( a ); işlem (a=a+1; gibi) işlem-1; else işlem-2; for(a=1,6,a++) işlemler; tip isim (). scanf (%d, a); veya cin>> a; printf ( a ); veya cout<< a ; işlem (a=a+1; gibi) işlem-1; else işlem-2; for(a=1,6,a++) işlemler; tip isim (). Dr.Bülent Çobanoğlu1

Ekrana Yazdırma (Çıktı işlemi) Komutları Ekrana yazdırma (çıktı işleminde) kullanılan komutları, algoritmada Göster, Yaz emir kipleri ile ifade ettik. Aşağıdaki tabloda görüldüğü üzere, ekrana karakter, mesaj veya bir değişken içeriğini yazdırmada C dilinde printf komutu, C++ dilinde printf ve cout<< komutları kullanılır. Örnek 1. C\C++ dili printf kullanım örneği #include <stdio.h> #include <conio.h> int main() int a=9; printf ("girilen..:%d",a) ; C++ dili cout kullanım örneği #include <iostream> #include <conio.h> using namespace std; int main() int a=9; cout<< "girilen..:" << a << ; Bu iki programında ekran çıktısı aynıdır. İkisi de çıktısını verir. printf komutu <stdio.h> kütüphanesine ihtiyaç duyarken, cout komutu <iostream> kütüphanesine ihtiyaç duyar. Ayrıca cout komutunu yazmadan önce using namespace std; deyimini program başına eklemeliyiz. Aksi takdirde cout komutunu std::cout şeklinde yazmak gerekir. Tablo 1: printf ve scanf komut yapısında kullanılan format karakterleri Basılacak Karakter Çıkış Karakteri Açıklama Tamsayı (işaretli) %d char veya int türlerini onlu tamsayı formatında gösterir. Tamsayı (işaretsiz) %u Ondalıklı sayı %f unsigned int türünü işaretsiz onlu tamsayı formatında gösterir. float ve double türlerini onlu sistemde ondalıklı olarak gösterir. Ondalıklı sayı %g İşaretli veya üstel formatta ondalıklı sayı olarak gösterir. Dr.Bülent Çobanoğlu2

Ondalıklı sayı %e float ve double türlerini üstel biçimde gösterir. Karakter (Tek) %c Tek bir karakteri ekrana basar String (Karakter dizisi) %s Hexadecimal (Onaltılı) %x %X Octal ( Sekizli) %O Stringleri karakter dizisi şeklinde ekranda gösterir. veya int türünü hexadecimal- Onaltılık tamsayı (0,1,2, A,B,..F) formatında gösterir. int türünün Octal-Sekizlik tamsayı (0,1,2,3,4,5,6,7) formatında gösterir. Örnek 2. Komut Satırı int a= 13; printf("%f", (float)a); printf("a=%d",a); printf("a=%x",a); printf( "%c",'a' ); printf("%s","bade"); Ekran Çıktısı 13.0000 a=13 a=d A bade Tablo 2: printf komut yapısında kullanılan çıkış (escape) karakterleri Basılacak Karakter Çıkış Karakteri Örnek kod Ekran Çıktısı ' (Tek Tırnak) \' "Bade\'nin Evi" Bade nin Evi " (Çift Tırnak) \" "Bade dedi \"Selam\" " Bade dedi "Selam" \ (Backslash) \\ "C:\\" C:\ Bir alt satıra geç \n printf ("a\nb"); Bir tab boşluk \t "1\t2" 1 Ø 2 Backspace tuşu \b "12\b3" 13 a b Enter tuşuna basıldı (Satır başı) \r "Bade\rZehra" Bade Zehra Örnek 3. Aşağıdaki C programında printf komutu ile birlikte \n ve \t çıkış karakterlerinin kullanımını öğreneceksiniz. Dr.Bülent Çobanoğlu3

Veri giriş komutları Klavyeden yâda dışardan veri girişini algoritmadaki Gir emir kipi ile ifade ettik. Aşağıdaki tablodan da görüleceği üzere klavyeden veri girişi için C dilinde scanf komutu, Java dilinde Scanner sınıfının metotları, C++ dilinde ise scanf ve cin>> komutları kullanılmaktadır. C dili int a; scanf ("%d", &a); C++ Dili int a; scanf (" %d", &a); int a; std::cin>>a; scanf komutu: Dışardan veri girişi için kullanılan bir C\C++ komutudur. scanf komutunun ilk parametresi (çıkış formatı) printf ile aynıdır. İkinci parametresi ise tanımlanan bir değişken ismidir ve önüne & operatörü gelmelidir. Kullanım şekli; scanf ( çıkış formatı, &degisken); çıkış formatı kısmına sadece Tablo 1 deki % simgesi ile gösterilen format karakterleri yazılabilir. Örnek 4: scanf komutunun kullanım örnekleri scanf (%u, &b); //Klavyeden veri girişi yaparken işaretsiz tamsayı girmelisiniz. scanf ("%d, %d, %c", &a, &b, &c); //Klavyeden veri girişi yaparken 3, 4, a gibi aralarında virgül kullanmalısınız. scanf ("%c %c %f", &c1, &c2, &a); //Klavyeden veri girişi yaparken a h 5.4 gibi aralarında boşluk kullanmalısınız. scanf ("%d-%c- %f", &s1, &c1, &s2); //Klavyeden veri girişi yaparken 4- a- 5.4 gibi aralarında tire kullanmalısınız. Dr.Bülent Çobanoğlu4

Tek seçimli yapılarda if deyiminin kullanım şekli; işlem-1; işlem-1; Çift seçimli yapılarda if else deyiminin kullanım şekli; işlem-1; else işlem-2; işlem-1; else işlem-2;? : Operatörü Ayrıca çift seçimli yapı, if /else deyimi kullanılmadan sadece?: operatörü ile gerçekleştirilebilir. Koşul doğru ise <işlem-1>, yanlışsa <işlem-2> gerçekleştirilir. Kullanım şekli; (Koşul)? <işlem-1> : <işlem-2> ; Örnek 5. Klavyeden girilen quiz1, quiz2, odev, vize ve final notuna göre o dersin ortalamasını hesaplayan programı yazınız. Çözüm: Dr.Bülent Çobanoğlu5

Algoritması 1.Başla 2.Gir, notları (q1,q2,od,v,f); 3.Hesapla, Başarı Notunu yi=q1*0.1+q2*0.1+od*0.1+v*0.7; Not=yi*0.5+f*0.5; 4. Eğer (Not>=50) ise Yaz "gectiniz"; Değilse Yaz "kaldınız"; 5.Dur Akış Şeması H Başla q1,q2,od,v,f yi=q1*0.1+q2*0.1+od*0.1+v*0.7; Not=yi*0.5+f*0.5; kaldın Not>= 50 E geçtin Dur C\C++ Dili Kodlaması #include<stdio.h> #include<conio.h> int main() unsigned int q1,q2,odev,vize,fin; double yi, sonuc; printf ("Gir,quz1-quz2-odev-vize-finalnotlarını\n"); scanf("%d %d %d %d %d", &q1,&q2,&odev,&vize,&fin); yi=q1*0.1+q2*0.1+odev*0.1+vize*0.7; sonuc= yi*0.5+fin*0.5; printf("basari Notunuz..:%g\n", sonuc); printf ( (sonuc>=50)? "gectiniz": "kaldiniz"); Örnek 6. 100 lük sisteme göre girilen başarı notunu harfli sisteme çeviren programı yazınız. Kriter: Girilen Not 90 ve üzeri ise AA, 80 89 arası ise BA, 70 79 arası ise BB, 60 69 arası ise CB, 50 59 arası ise CC, 50 den aşağı ise FF şeklinde gösterecek. Çözüm: Dr.Bülent Çobanoğlu6

Algoritması 1. Başla 2. Gir başarı notunu (not) 3. Eğer notunuz 90 ve üzeri ise Yaz AA 4. Değilse eğer notunuz 80 ile 89 arası ise Yaz BA 5. Değilse eğer notunuz 70 ile 79 arası ise Yaz BB 6. Değilse eğer notunuz 60 ile 69 arası ise Yaz CB 1. Değilse eğer notunuz 50 ile 59 arası ise Yaz CC 2. Değilse eğer notunuz 50 den küçükse Yaz FF 3. Dur C\C++ Dili Kodlaması #include <stdio.h> #include <conio.h> int main() int not; printf ("Gir Notu..:\n"); scanf ("%d", &not); if (not >= 90) printf("aa"); else if (not >= 80) printf("ba"); else if (not >= 70) printf("bb"); else if (not >= 60) printf("cb"); else if (not >= 50) printf("cc"); else printf("ff"); Döngüler Programlama dillerindeki döngü komutlarını da aşağıdaki gibi sıralayabiliriz; for döngüleri while döngüleri do / while döngüleri for deyiminin kullanım şekli; Dr.Bülent Çobanoğlu7

for( değişken=başlangıç değeri; koşul; artım ya da azalım miktarı ) tekrarlanacak işlem-1; for döngü yapısında birden fazla tekrarlanacak işlem var ise tekrarlanacak işlemler aç- kapa süslü parantezleri arasına alınmalıdır. for( değişken=başlangıç değeri; koşul; Artım ya da azalım miktarı ) tekrarlanacak işlem-1; tekrarlanacak işlem-2; Örnek 7. 0 dan 24 e kadar olan çift sayıların toplamını ekranda gösteren programı for döngüsü ile yazınız. Çözüm: Akış Şeması i=0; i<= 24; i=i+2; T=T+i; T while döngüsü kullanım şekli; C\C++ Kodlaması #include <stdio.h> #include <conio.h> int main() int i,t=0; for (i = 0; i <= 24; i += 2) T=T+i; printf("%d ", T); while (koşul) İşlemler; Sürece ( koşul ) tekrarla (işlemleri) Verilen koşul doğru olduğu sürece döngü içerisindeki işlemler tekrar edilir. Koşul kontrol işlemi, döngü başında yapılır. Dr.Bülent Çobanoğlu8

do/while döngüsü kullanım şekli; do İşlemler; while (koşul); Tekrarla (işlemleri) ta ki <koşul> doğru olduğu sürece Bir defa işlem yapıldıktan sonra koşula bakılır, koşul doğru olduğu sürece döngü içerisinde belirtilen işlemler tekrarlanır. Koşul kontrol işlemi döngünün sonunda yapılır. Örnek 8. Aşağıdaki program parçaları çalıştırıldıktan sonra a değişkeninin en son değeri ne olur? int a=5; do a=a+1; while (a<3); int a=5; while (a<3) a=a+1; İlk önce işlem gerçekleşir sonra koşula bakılır. Koşul gerçekleşmediği için döngüden çıkılır. Buna göre a=6 değerini alır. İlk önce koşula bakılır, koşul gerçekleşmediği için döngüden çıkılır. Buna göre a=5 değerini alır. Örnek 9. Dışarıdan girilen sayı sıfırdan farklı olduğu sürece o sayının karesini alan programı yazınız. Çözüm: Algoritması Akış şeması 1. Başla 2. Değişkenleri tanımla 3. Döngüyü başlat (do ) 4. Gir bir sayı (A) 5. Hesapla karesini ( kare=a*a; ) 6. Göster sonucu (kare) 8. Döngü kontrolü yap ( while (A!= 0); ) 9. Dur Basla A kare=a*a; kare E A!=0 H Dur Dr.Bülent Çobanoğlu9

C\C++ Kodlaması #include <stdio.h> #include <conio.h> int main() int A; printf("çıkış için 0 giriniz\n"); do printf("gir bir sayi..:"); scanf ("%d", &A); printf ("karesi= %d \n", A*A); while(a!=0); İç içe Döngü Örneği Örnek 10. Çarpım Tablosunu oluşturup ekranda gösteren programı yazınız. Çözüm: İç içe for döngülerine en güzel örneklerden biri çarpım tablosudur. İçteki döngünün her tamamlanışından sonra dıştaki döngü otomatik olarak bir artar. Dıştaki döngü değişkeni i=1 iken içteki döngü değişkeni j, 1 den 10 a kadar değer alır. j en son değerine ulaştıktan sonra (j=10 olduktan sonra) i değişkeni 2 değerini alır. i=2 iken j değişkeni tekrar 1 den 10 a kadar değer alır ve bu işlem 10 kez tekrarlanır. Yani toplam 100 kez çarpma işlemi gerçekleşir. Dr.Bülent Çobanoğlu10