algorİtma ve akiŞ dİagramlari - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/babagil-bilg213-ders...

179
BİLGİSAYAR NEDİR Bilgisayar elektronik-digital bir alet olup, kendisine verilen ham bilgileri işlemcisi ve bellek yardımı ile işleyip (temelde 4 işlem yaptığını söyleyebiliriz), sonucunda kullanıcıya anlaşılır bilgi üreten bir makinedir. Bilgisayar, kullanıcıdan aldığı verilerle mantıksal ve aritmetiksel işlemleri yapan, yaptıgı işlemlerin sonucunu saklayabilen, sakladığı bilgilere istenildiğinde ulaşılabilen elektronik bir makinedir.Bilgisayarlar temel yapı itibariyle donanım ve yazılım olmak üzere iki kısımdan oluşmaktadır. Bilgisayar sistemi, fiziksel tüm parçalar (iç/dış donanım) ve programları ile uyumlu çalışabilen ve işlem yapabilen birimin tümüne bilgisayar sistemi denir. 20.10.2009 Dr. Mustafa T. Babagil 1

Upload: lythuy

Post on 06-May-2019

246 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

BİLGİSAYAR NEDİRBilgisayar elektronik-digital bir alet olup, kendisine verilen ham bilgileri işlemcisi ve bellek yardımı ile işleyip (temelde 4 işlem yaptığını söyleyebiliriz), sonucunda kullanıcıya anlaşılır bilgi üreten bir makinedir.Bilgisayar, kullanıcıdan aldığı verilerle mantıksal ve aritmetiksel işlemleri yapan, yaptıgı işlemlerin sonucunu saklayabilen, sakladığı bilgilere istenildiğinde ulaşılabilen elektronik bir makinedir.Bilgisayarlar temel yapı itibariyle donanım ve yazılım olmak üzere iki kısımdan oluşmaktadır.Bilgisayar sistemi, fiziksel tüm parçalar (iç/dış donanım) ve programları ile uyumlu çalışabilen ve işlem yapabilen birimin tümüne bilgisayar sistemi denir.

20.10.2009 Dr. Mustafa T. Babagil 1

Page 2: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Bilgisayarlar temel olarak 2 kısımdan oluşmaktadır.

DONANIMBilgisayarların elle tutulur gözle görülür fiziksel olan kısımına donanım denilmektedir. Ör. Ekran, klavye, Sabit disk (harddisk), fare, yazıcı, bellek, mikroislemci, tarayıcı, ...

Bir bilgisayarın donanımı genel olarak dört ana bölümde incelenebilir. Bunlar, veri girişbirimleri, sonuç çıkış birimleri, hafızalar (bellekler) ve merkezi işlem birimi(CPU) olarak sayılabilir.

20.10.2009 Dr. Mustafa T. Babagil 2

Page 3: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Bilgisayarlar 2 kısımdan oluşmaktadır.

• YAZILIMBir problemin bilgisayar yardımıyla çözümünüsağlayan, çizim yapan, yazı yazan, Internet’tegezinme işlemini gerçekleştiren her türlüprograma, bu programları hazırlayanprogramlara ve bunların ürettikleri veri veyabelgelere, hepsine birden yazılım denir.

20.10.2009 Dr. Mustafa T. Babagil 3

Page 4: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

DONANIM

1-)Veri giriş birimleriBelli kurallara göre düzenlenmiş verilerin ve komutların merkezi işlem birimine aktarılmasınısağlayan donanımlardır. En çok kullanılan girişbirimleri olarak klavye (key board), fare (mouse, optik okuyucu (optical reader), tarayıcı(scanner), kamera, barkod okuyucu, ses kayıt cihazı, ağa bağlı diğer bilgisayarlar ve yardımcıbellekler (sabit disk, disket ve kompakt disk) sayılabilir.

20.10.2009 Dr. Mustafa T. Babagil 4

Page 5: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

DONANIM

2-)Sonuç çıkış birimleriBilgisayar ortamında mevcut olan bilgileri belirtilen dış ortama aktarılması için kullanılan cihazlardır. Bu birimlerden bazıları aynı zamanda giriş birimi olarak da görev yaparlar. Çıkışbirimlerinden en çok kullanılanları ekran, yazıcıve çizici olarak sayılabilir. Sabit disk, disket, kompakt disk, hoparlör, bilgisayar ağına bağlıdiğer bilgisayarlar, faks-modem gibi cihazlar girişbirimi olduğu kadar aynı zamanda birer çıkışbirimi olarak da görev yaparlar.

20.10.2009 Dr. Mustafa T. Babagil 5

Page 6: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

DONANIM3-)Bellek (hafıza / memory), Bilgisayarlarda bulunan bütün verilerin, bilgilerin ve programların geçici ya da uzun vadeli olarak saklandığıbirimlere denir. Bilgisayar bellekleri dış bellek (yardımcı bellek) ve iç bellek (ana bellek) olmak üzere ikiye ayrılabilir.

Dış bellekler, bilgisayarda bulunan bütün programların ve bilgilerin uzun üseli olarak depolandığı birimdir. İşletim sistemi programları ve uygulama programları bu birime kayıt edilerek kalıcı hale getirilir. Hart disk (sabit disk), disket (floppy disk), CD-ROM (compact disc – read only memory) en yaygın kullanılan dış belleklerdir.

İç bellekler, komutların, verilerin ve sonuçların bilgisayarın içinde aktif olarak bulunduğu yerlerdir. Herhangi bir veri ve o veriyi işleyecek olan program mutlaka belleğe yerleştirilmiş olması gerekir. Bilgisayarın çalışması sırasında programlar kullanılan ve üretilen bilgiler bu bellekte yer alır. Fakat bu bellekte bulunma işlemi geçicidir. Bilgisayarın kapatılmasıveya enerjinin kesilmesi durumunda bellekte kayıtlı olan bilgiler silinir. Ana bellekler yapılarına göre RAM (Random Access Memory) ve ROM (Read Only Memory) olmak üzere ikiye ayrılabilir.

20.10.2009 Dr. Mustafa T. Babagil 6

Page 7: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

DONANIM

– RAM, geçici bellek, ana bellek, direkt erişimli bellek olarak da anılır. Programların çalışmasını sağlar ve direkt olarak Merkezi İşlem Birimi ile bilgi alışverişi yapar. Sadece RAM’de bulunan program çalışıp işlem yapar, sadece RAM’de bulunan veri işlenir. Programıyüklemek, dosya açmak, aslında onu RAM’e yüklemek demektir.

CD sürücü Kasa Disket SürücüMonitör Tarayıcı Hoparlör KlavyeKumanda Fare

20.10.2009 Dr. Mustafa T. Babagil 7

Page 8: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

DONANIM

ROM ise üzerine kayıtlı bilgilerin bir daha değişmesine izin verilmeyen bellektir. Bilgisayar imalatçıları tarafından içlerine bilgiyazılan bu bellek bilgisayar her açıldığında çalışma esaslarının yer aldığı komutların devreye girmesini ve işletim sisteminin de temel program parçalarının RAM belleğe aktarılmasınısağlar.

20.10.2009 Dr. Mustafa T. Babagil 8

Page 9: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

DONANIM

4-)Merkez İşlemci Birimi (CPU), bilgisayarın en önemli yapısını oluşturur. Verilerin işlendiği, önceliklerin belirlendiği, bütün birimlere görevlerinin hatırlatıldığı bölümdür. Mikroişlemci veya microprocessor olarak da adlandırılır. MİB’nin yaptığıgörevler şu şekilde sıralanabilir: Önceden verilen komutları veriliş sırasına göre yapılan işlemleri denetler.Aritmetik ve mantıksal işlemleri gerçekleştirir.Giriş biriminden gelen komutların ve verilerin alınarak bellek bölümüne aktarılmasını sağlar.Sonuçların bellek ortamına veya istenen dış ortama aktarılır.

20.10.2009 Dr. Mustafa T. Babagil 9

Page 10: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

YAZILIM

Yazılım temel olarak iki ana başlık altında incelenebilir.1-Sistem yazılımları (İşletim Sistemi)İşletim Sistemleri (Operating System - OS), bilgisayar donanımının kullanımına ve düzenlenmesine imkân sağlayan, bilgisayar işlevlerini görecek şekilde kullanmaya hazır hale getiren, açık durduğu sürece kullanıcı ile bilgisayarın arasındaki iletişimi sağlayan programlar topluluğudur. Kişisel ve orta boy bilgisayarlarda kullanılan pek çok işletim sistemi vardır. OS-2, DOS, MOS (Machintosh Operating System), UNIX, XENIX, Windows 9X, Windows 2000, NT, Windows XP örnek olarak sayılabilir.20.10.2009 Dr. Mustafa T. Babagil 10

Page 11: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

YAZILIM

2-Uygulama ProgramlarıBilgisayarı kullanarak günlük hayattaki bir işin görülmesini sağlayan her türülü yazılıma uygulama programı denir. Aslında sistem yazılımları, programlama dilleri ve belgelerin dışında kalan bütün yazılımlara uygulama programı denir. Bilgisayarda yazıyazmak (Word), resim yapmak (Paint), çizim yapmak (CorelDraw), internette dolaşmak (Explorer), oyun oynamak (Chess), müzik dinlemek (Media Player) gibi her işi yapan çok sayıda uygulama programı vardır. Aslında bilgisayarın maksadı da kullanıcılara uygulama programları vasıtasıyla yardımcı olmaktır.

20.10.2009 Dr. Mustafa T. Babagil 11

Page 12: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

PROGRAMLAMA DİLİBilgisayardaki her türlü yazılımın hazırlanmasınısağlayan programlara “programlama dili” denir. Kullanılan her türlü program mutlaka herhangi bir programlama dili ile hazırlanmıştır. Programlama dilleri kendilerine özgü kodlar kullanarak hazırlanan uygulama programlarının çalışmasını, dolayısıyla kullanıcının istediği amaçlar doğrultusunda program hazırlamasını sağlarlar. Basic, Cobol, Fortran, C++, Delpi programlama dillerine örnek verilebilir. Meselâ bir kullanıcıbilgisayarda bir mektup yazmak isterse önce bilgisayara bir yazı yazma programı yüklemelidir.

20.10.2009 Dr. Mustafa T. Babagil 12

Page 13: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

PROGRAMLAMA DİLİ

Yazı yazma programı ise başkaları tarafından hazırlanmış bir yazılımdır. Fakat bunu yapmak için programlama dili kullanmışlardır. Tabi ki, programlama dillerini hazırlamak için de yine programlama dilleri gerekmiştir. Programlama dilleriyle yazılan programlar derlenerek .EXE dosyaları haline dönüştürülürler. Böylece bir programın dosya ismi yazılarak program çalıştırılabilir. Programlama dilleri ile yazılmış bu yazılımlara programın source (kaynak) kodu dosyası denir.

20.10.2009 Dr. Mustafa T. Babagil 13

Page 14: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

PROGRAMLAMA DİLİ

• Bir programlama dilinde aranan başlıca özellikler:

• (1) Kullanım kolaylığı, • (2) Tasarım kolaylığı, • (3) Farklı donanımlara uyum, • (4) Program hatalarını takip edebilirlik ve • (5) Belgeleme kolaylığı olarak sayılabilir

(Banger, 1995).

20.10.2009 Dr. Mustafa T. Babagil 14

Page 15: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

PROGRAMLAMA DİLİ

• Programlama dilleri pek çok özelliğine göre sınıflandırılabilir. Günümüzde aslında dilleri birbirinden farklı kılan özellikler azalmakta, programlama dilleri gittikçe birdirine yaklaşmaktadır. Buna rağmen programlama dilleri kabaca dört grupta toplanabilir.

20.10.2009 Dr. Mustafa T. Babagil 15

Page 16: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

PROGRAMLAMA DİLİMakine Dili : Her işlemi, ikili sayı sistemindeki kod numarasıile ifade ederek program yazılmasını sağlayan dildir. Dolayısıyla komutlar doğrudan bilgisayarın anlayacağışekildedir. Ayrıca bir yorumlayıcı veya çeviriciye gerek yoktur. Aslında bilgisayarlar zaten makine kodlarına göre çalışmaktadır. Ancak makine dilinde programlamayıöğrenmek ve uygulamak çok zor ve zaman alıcıdır.

Alt Düzey Diller : Makine diline en yakın dillerdir. Sembolik kodlar ve isimler kullanılır. Kendilerine ait birleştirici ve derleyici programları yardımıyla hazırlanan uygulama programlarını makine diline çevirerek çalıştırırlar. Öğrenmesi ve uygulaması oldukça zor dillerdir. Assebler bu grubun en tipik örneğidir .

20.10.2009 Dr. Mustafa T. Babagil 16

Page 17: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

PROGRAMLAMA DİLİÜst Düzey Diller : Makine dili komutlarıyla şeklen hiçbir benzerliği bulunmayan, değim, komut ve ifadeler kullanarak işlem yapılmasını sağlayan dillerdir. Öğrenmesi ve uygulaması Alt Düzey dillerine göre daha kolaydır. Hazırlanan uygulama programları derleyici (compiler), yorumlayıcı (intepretater) veya çevirici (assebler) yardımıyla makine diline dönüştürülerek çalıştırılırlar. Fortran, Cobol, PL/1, RPG ve C bu gruba dahil edilebilir.

Etkileşimli Diller : Programcının bir bilgisayar ile karşılıklıetkileşim içinde program geliştirmesini sağlayan dillerdir. Programcı editör vasıtasıyla komutlar yazarak bilgisayara iletir. Bilgisayar komutu hemen işleme sokarak makine diline çevirerek (yorumlayarak) gereken işlemi yapar. Basic ve APL bu grup programlama diline örnek verilebilir.20.10.2009 Dr. Mustafa T. Babagil 17

Page 18: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

PROGRAM-YAZILIM

• İnsanla bilgisayar arasındaki iletişim aracı• Programlama dili, programcı ile bilgisayar

arasındaki iletişimi sağlayan bir araç olup programların yazılımında kullanılan bir notasyondur.

20.10.2009 Dr. Mustafa T. Babagil 18

Page 19: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Bilgisayarda problem çözme aşamaları:

• Problemin tanımı• Çözüm yolunun tespiti• Algoritmanın hazırlanması• Akışı diyagramının çizilmesi• Programın hazırlanması• Hazırlanan programın test edilmesi• Uygulama

20.10.2009 Dr. Mustafa T. Babagil 19

Page 20: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

1. DESİN SONU

• HAFTAYA HAZIRLANMASI GEREKENLER.

GELECEK HAFTA İÇİN;• ALGORİTMA NEDİR?• AKIŞ DİAGRAMI NEDİR?• AKIŞ DİAGRAMINDA KULLANILAN

SEMBOLLER.

20.10.2009 Dr. Mustafa T. Babagil 20

Page 21: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ALGORİTMA VE AKIŞDİAGRAMLARI

20.10.2009 Dr. Mustafa T. Babagil 21

Page 22: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ALGORİTMA NEDİR

• Algoritma,herhangi bir sorunun çözümü için izlenecek yol anlamına gelmektedir.

• Algoritma verilerin bilgisayara hangi çevre biriminden girileceğinin,problemin nasıl çözüleceğinin,hangi basamaklardan geçirilerek sonuç alınacağının,sonucun nasıl ve nereye yazılacağının sözel olarak ifade edilmesi biçiminde tanımlanabilir.

20.10.2009 Dr. Mustafa T. Babagil 22

Page 23: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

BASİT bir örnek: Verilen iki sayının toplamının bulunmasının

Algoritma

Adım 1-Başla

Adım 2-Birinci sayıyı oku

Adım 3-İkinci sayıyı oku

Adım 4-İki sayıyı topla

Adım 5-Dur

20.10.2009 Dr. Mustafa T. Babagil 23

Page 24: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

DİKKAT!..

• Algoritma yazımı, sorunun çözümünün başladığını gösteren "BAŞLA" ifadesi ile başlamakta ve işlemlerin bittiğini belirten "DUR" ifadesi ile sona ermektedir.

20.10.2009 Dr. Mustafa T. Babagil 24

Page 25: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Algoritmada kullanılan terimler

Tanımlayıcı (programdaki değişkenleri, sabitleri, kayıt alanlarını, özel bilgi tiplerinin adlandırılması veya belirlenmesi)Değişken (x, ad, tel_no, sayi1 vs. )Aktarma (değişken = ifade)Sayaç (sayac = sayac + 1, x = x+3, s=s-5)Döngüde◦ Döngü değişkeninin başlangıç ve bitiş değeri,◦ Artma ya da azalma miktarı belirlenir.Ardışık toplama ve çarpma◦ top_degis= top_degis+sayi◦ carp_degis= carp_degis*sayi

NOT: bu değişkenleri kullanmanız gerekli değildir. Bunlar, sizlere kolaylık olması için örneklendirme için verilmiştir.

20.10.2009 Dr. Mustafa T. Babagil 25

Page 26: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Örnek 1:• Bir öğrencinin numarası, adı ve soyadı, vize

notu ve final notu girilmektedir. Verilere göre vize notunun %30'ü ile final notunun %70'i alınarak ortalaması hesaplanmak isteniyor. Algoritmayı maddeler halinde yazınız.

20.10.2009 Dr. Mustafa T. Babagil 26

Page 27: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Çözüm 1:

20.10.2009 Dr. Mustafa T. Babagil 27

Page 28: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Örnek 2:• Klavyeden girilen herhangi 5 sayının

ortalamasını bulan programın algoritmasını ve çalışmasını inceleyelim..

20.10.2009 Dr. Mustafa T. Babagil 28

Page 29: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Çözüm 2:

20.10.2009 Dr. Mustafa T. Babagil 29

Page 30: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

AKIŞ ŞEMALARI

Yaygın olarak FLOWCHART olarak da türkçede isimlendirilmektedir.Herhangi bir sorunun çözümü için izlenmesi gerekli olan aritmetik ve mantıksal adımların söz veya yazı ile anlatıldığı algoritmanın, görsel olarak simge ya da sembollerle ifade edilmişşekline denir.Algoritmadan farkı,adımların simgeler şeklinde kutular içine yazılmış olması ve adımlar arasındaki ilişkilerin ve yönünün oklar ile gösterilmesidir.20.10.2009 Dr. Mustafa T. Babagil 30

Page 31: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Algoritmanın başladığınıya da sona erdiğini

belirtmek için kullanılır.

Klavye aracılığı ile giriş ya da okuma

yapılacağını gösterir.

Yazıcı aracılığı ile çıkış yapılacağını gösterir.

Kart okuyucu aracılığıyla giriş yapılacağını gösterir.

Araç belirtemeden giriş ya da çıkış

yapılacağını gösterir.

Hesaplama ya da değerlerin değişkenlere aktarımını gösterir.

Aritmetik ve mantıksal ifadeler

için karar verme ya da karşılaştırma durumunu gösterir.

Diskten okuma veya diskete

yazmayıgösterir.

Dr. Mustafa T. Babagil 3120.10.2009

Page 32: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Disketten okuma veya diskete

yazmayıgösterir.

Teyp kütüğünügösterir.

Yapılacak işler birden fazla sayıda yinelecek İse, diğer bir deyişle

iş akışında çevrim (döngü) var ise bu sembol kullanılır.

Oklar işin akış yönünügösterir.

20.10.2009 Dr. Mustafa T. Babagil 32

Page 33: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Akış şemaları içerik ve biçimlerine göre genel olarak üç grupta sınıflandırılabilirler.

> Doğrusal Akış Şemaları

> Mantıksal Akış Şemaları

> Döngüsel (iteratif, çevrimli, yineli) Akış Şemaları

20.10.2009 Dr. Mustafa T. Babagil 33

Page 34: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Doğrusal Akış Şemaları

20.10.2009 Dr. Mustafa T. Babagil 34

İş akışları giriş, hesaplama, çıkış biçiminde olan akış şemaları bu grup kapsamına girer.

Örnek 1: İki sayının çarpımının bulunmasıyla ilgili algoritma aşağıdaki gibidir.Değişkenler:A: Birinci sayıyıB: İkinci sayıyıC: İki sayının çarpımını (A*B) göstersin

Algoritma:Adım 1 – BaşlaAdım 2 – A’yı okuAdım 3 – B’yi okuAdım 4 – C=A*B’yi hesaplaAdım 5 – C’yi yazAdım 6 - Dur

Page 35: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Doğrusal Akış Şemaları

• Örnek 2: Klavyeden girilen İki sayının toplamını hesaplayıp yazan algoritma ve akış şemasını hazırlayınız.

(X: Birinci sayı, Y: İkinci sayı, Z: toplam)A1 : BaşlaA2 : Klavyeden oku XA3 : Klavyeden oku YA4 : Hesapla Z = X + YA5 : Yaz ZA6 : Dur

20.10.2009 Dr. Mustafa T. Babagil 35

Page 36: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Örnek 2 – Akış Şeması

20.10.2009 Dr. Mustafa T. Babagil 36

BAŞLA

DUR

OKU X

OKU Y

Z=X+Y

YAZ Z

Page 37: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÖRNEK: KLAVYEDEN İKİ DEĞİŞKEN GİRİLİP BUNLARIN ÇARPIMININ BAŞKA BİR DEĞİŞKENE

ATANMASI VE SONUCUN HESAPLANMASI

20.10.2009 Dr. Mustafa T. Babagil 37

Page 38: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Mantıksal Akış Şemaları• Geniş ölçüde mantıksal kararları içeren akışşemalarıdır. Hesap düzenleri genellikle basittir.

Örnek 3: Klavyeden girilen bir sayının pozitif, negatif veya sıfıra eşit olma durumunu hesaplayıp yazdıran algoritma ve akış şemasını hazırlayınız.

(S : Sayı)A1 : BaşlaA2 : Oku SA3 : Eğer S > 0 ise “Pozitif” yaz, A4 : Eğer S < 0 ise “Negatif” yaz,A5 : Eğer S = 0 ise “Sıfıra eşit” yaz,A6 : Dur

20.10.2009 Dr. Mustafa T. Babagil 38

Page 39: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Örnek 3 – Mantıksal Akış Şemaları(klavyeden girilen sayının 0 ile kıyaslanması)

20.10.2009 Dr. Mustafa T. Babagil 39

BAŞLA

DUR

OKU S

S : 0

YAZ“Sıfıra eşit”

YAZ “Pozitif”

YAZ “Negatif”

S < 0S > 0

S = 0

Page 40: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Döngüsel Akış Şemaları

• Sorunun çözümü için, çözümde yer alan herhangi bir adım ya da aşamanın birden fazla kullanıldığı akış şemalarına denir. İş akışlarıgenel olarak giriş ya da başlangıç değeri verme, hesaplama, kontrol biçiminde olmaktadır.

20.10.2009 Dr. Mustafa T. Babagil 40

Page 41: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Döngüsel Akış Şemaları• Örnek 4: Klavyeden girilen bir yazıyı 5 kez yazdıran algoritma

ve akış şemasını oluşturunuz.

( Y : Yazı, S : Sayaç )A1 : BaşlaA2 : Oku YA3 : Yaz YA4 : S = S + 1A5 : Eğer S < 5 ise A3 e gitA6 : Dur

20.10.2009 Dr. Mustafa T. Babagil 41

Page 42: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Örnek 4 – Döngüsel Akış Şemaları

20.10.2009 Dr. Mustafa T. Babagil 42

BAŞLA

DUR

OKU Y

YAZ Y

S = 0 , 5, 1

S

Sayısı bilinen döngülerde; başlangıçdeğeri, son değer, artışsayısı

Döngünün çalıştığıbölüm

Page 43: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÇALIŞMA SORULARI -1: ALIŞTIRMALAR

• Girilen 2 sayının toplamını, çarpımını ve farkını hesaplayan bir algoritma ve akışdiagramı hazırlayınız.

• Girilen 2 sayınında 10’dan büyük olup olmadığını veya 10’a eşit olduğunu hesaplayan bir algoritma ve akış diagramıhazırlayınız.

• Girilen 2 sayının ikisinin de 10’dan büyük girilene kadar girişin devam edileceği bir algoritma ve akış diagramı hazırlayınız.

20.10.2009 Dr. Mustafa T. Babagil 43

Page 44: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÇALIŞMA1: Girilen 2 sayının toplamını, çarpımını ve farkını hesaplayan bir algoritma ve akış diagramı hazırlayınız.

• Başla• Sayı1 ve Sayı2 gir.• Toplam= Sayı1+Sayı2• Çarpım= Sayı1*Sayı2• Fark=Sayı1-Sayı2• Dur.

Dr. Mustafa T. Babagil 4420.10.2009

Dur

Başla

Oku Sayı1, Sayı2

Toplam= sayı1+sayı2Çarpım=sayı1*sayı2

Fark=sayı1-sayı2

Yaz Sayı1, Sayı2, Toplam, Çarpım, Fark İstenirse, Dur’dan önce

eklenebilir!..

Page 45: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Adım adım algoritmaların Çalışmasını inceleyelim. İleride aynı adım adım çalıştırma işini programlar ve program parçaları için de yapacağız.

Çalıştır Sayı 1 Sayı 2 Toplam Çarpım Fark1. Kez 2 5 7 10 -3

2. Kez 10 10 20 100 0

20.10.2009 Dr. Mustafa T. Babagil

Yukarıdaki Tablo, Çalışma 1’in 2 kere çalıştırılmış durumudur. Unutmayın Sayı1 ve Sayı 2 bizim tarafımızdan girilen sayılardır.

45

Page 46: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÇALIŞMA 2: Girilen 2 sayınında 10’dan büyük olup olmadığını veya 10’a eşit olduğunu hesaplayan bir algoritma ve akış diagramı hazırlayınız.

• Adım 1: Başla• Adım 2: Sayı1 ve Sayı2 gir.• Adım 3: Eğer (Sayı1>10 ve

Sayı2>10) ise Adım 6’e git, Sayı1 ve Sayı2 10’a eşit ise Adım 5’e git

• Adım 4: Yaz, Sayı1 ve Sayı2 aynıanda 10’dan büyük değil. Git Adım 7.

• Adım 5: Yaz, “Sayı1 ve Sayı2 10’a eşit!” Git Adım 7.

• Adım 6: Yaz, “Sayı1 ve Sayı2 10’dan büyüktür”

• Adım 7: Dur.

20.10.2009 Dr. Mustafa T. Babagil 46

Dur

Başla

Oku Sayı1, Sayı2

Sayı1 >10Sayı2>10

Sayı1 ve sayı2 10’dan

büyük

Sayı1 ve sayı2 10’dan büyük değil

Sayı1 ve sayı2 10’a

eşit.

İki sayı da 10’dan büyük

En az bir sayı10’dan küçük

İki sayı da 10’a eşit

Page 47: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Adım adım algoritmaların Çalışmasını inceleyelim. İleride aynı adım adım çalıştırma işini programlar ve program parçaları için de yapacağız.

Çalıştır Sayı 1 Sayı 2 İkisi de Büyük Biri 10’dan büyük Birbirlerine Eşit

1. Kez 1 13 - Evet -2. Kez 14 10 - Evet -3. Kez 11 25 Evet - -4. Kez 10 10 - - Evet

20.10.2009 Dr. Mustafa T. Babagil 47

Yukarıdaki Tablo, Çalışma 2’in 4 kez çalıştırılmış durumudur. Unutmayın Sayı1 ve Sayı 2 bizim tarafımızdan girilen sayılardır.

Page 48: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Versiyon1-ÇALIŞMA 3: Girilen 2 sayının ikisinin de 10’dan büyük girilene kadar girişin devam edileceği bir algoritma ve akış diagramı hazırlayınız.

• Adım 1: Başla• Adım 2: S1 gir.• Adım 3: S1 < 10 Adım 2’ye git.• Adım 4: S2 gir.• Adım 5: S2 < 10 Adım 4’e git.• Adım 6: Dur.

20.10.2009 Dr. Mustafa T. Babagil 48

Başla

İstenirse, Dur’dan önce eklenebilir!..

Oku S1

S1>10S1 10’dan küçük

Oku S2

S2>10S2 10’dan küçük

S1 10’dan büyük

S2 10’dan büyük

Dur

Yaz Sı1, Sı2

NOT: TABİİ Kİ FARKLI ALGORİTMALAR VE AKIŞDİAGRAMLARI HAZIRLANABİLİR.

Page 49: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Adım adım algoritmaların Çalışmasını inceleyelim. İleride aynı adım adım çalıştırma işini programlar ve program parçaları için de yapacağız.

Çalıştır Sayı 1 Sayı 2 İkisi de Büyük Biri 10’dan büyük Birbirlerine Eşit

1. Kez2. Kez 3. Kez4. Kez

20.10.2009 Dr. Mustafa T. Babagil 49

Versiyon 1: Yukarıdaki Tablo, Çalışma 3’ün ?? kere çalıştırılmış durumudur. Unutmayın Sayı1 ve Sayı 2 bizim tarafımızdan girilen sayılardır.

Page 50: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Versiyon2-ÇALIŞMA 3: Girilen 2 sayının ikisinin de 10’dan büyük girilene kadar girişin devam edileceği bir algoritma ve akış diagramı hazırlayınız.

• Adım 1: Başla• Adım 2: S1,S2 gir.• Adım 3: S1 < 10 ve S2 < 10

Adım 2’ye git.• Adım 4: Dur.

20.10.2009 Dr. Mustafa T. Babagil 50

Başla

İstenirse, Dur’dan önce eklenebilir!..

Oku S1,S2

S1>10S2 > 10

S1, S2 10’dan büyük değil

S1 ve S2 10’dan büyük

Dur

Yaz Sı1, Sı2

Page 51: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Adım adım algoritmaların Çalışmasını inceleyelim. İleride aynı adım adım çalıştırma işini programlar ve program parçaları için de yapacağız.

Çalıştır Sayı 1 Sayı 2 İkisi de Büyük Biri 10’dan büyük Birbirlerine Eşit

1. Kez2. Kez 3. Kez4. Kez

20.10.2009 Dr. Mustafa T. Babagil 51

Versiyon 2: Yukarıdaki Tablo, Çalışma 3’ün ?? kere çalıştırılmış durumudur. Unutmayın Sayı1 ve Sayı 2 bizim tarafımızdan girilen sayılardır.

Page 52: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Versiyon3-ÇALIŞMA 3: Girilen 2 sayının ikisinin de 10’dan büyük girilene kadar girişin devam edileceği bir algoritma ve akış diagramı hazırlayınız.

• Adım 1: Başla• Adım 2: S1,S2 gir.• Adım 3: S1 <10 ise Adım 4’e git, S2

<10 ise Adım 5’e git değil ise Adım 6’ya git.

• Adım 4: S1 gir, Adım 3’e git.• Adım 5: S2 gir, Adım 3’e git.• Adım 6: Dur.

20.10.2009 Dr. Mustafa T. Babagil 52

Başla

İstenirse, Dur’dan önce eklenebilir!..

Oku S1, S2

S1 10’dan büyük değil

Dur

Yaz Sı1, Sı2

S1 >10S2 > 10

Oku S1 S2 10’dan büyük değil

Oku S2

Evet

Page 53: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Adım adım algoritmaların Çalışmasını inceleyelim. İleride aynı adım adım çalıştırma işini programlar ve program parçaları için de yapacağız.

Çalıştır Sayı 1 Sayı 2 İkisi de Büyük Biri 10’dan büyük Birbirlerine Eşit

1. Kez2. Kez 3. Kez4. Kez

20.10.2009 Dr. Mustafa T. Babagil 53

Versiyon 3: Yukarıdaki Tablo, Çalışma 3’ün ?? kere çalıştırılmış durumudur. Unutmayın Sayı1 ve Sayı 2 bizim tarafımızdan girilen sayılardır.

Page 54: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Çalışma Soruları 2: Algoritma, Akış Diagramı ve test çalıştırmasını yapınız (en az 5 kez).

1. Gerekli ölçüleri girilen 100 dikdörtgenin alanını ve çevresini hesaplayınız. Ekrana boyutlar, alan ve çevreyi yazdırınız.

2. 20 öğrenci için, Bilg213 dersinden, 2 arasınav(%30) ve 1 final(%40) sınav notunu klavyeden girerek, dersten geçilip geçilmediğini hesaplayınız ve ekrana notlar, ortalama ve başarılı olup olmadığını yazdırınız.

3. Klavyeden 0 sayısı girdi verilene kadar girilecek sayıların ortalamasını hesaplayınız ve ekrana girilen tüm sayıları, kaçtane sayı girildiğini ve ortalamayı yazdırınız.

20.10.2009 Dr. Mustafa T. Babagil 54

Page 55: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

1- Gerekli ölçüleri girilen 100 dikdörtgenin alanını ve çevresini hesaplayınız. Ekrana boyutlar, alan ve çevreyi yazdırınız.

• A1: Başla• A2: sayaç=0• A3: boy, en gir• A4: sayac=sayaç+1• A5: Alan=boy*en,

çevre=2*boy+2*en• A6: yaz, boy, en, alan,

çevre• A7: Eger sayaç < 100 git

A3• A8: Dur

20.10.2009 Dr. Mustafa T. Babagil 55

Başla

Sayaç=0

Boy, en

Sayaç=sayaç+1

Alan=boy*enÇevre=2*en+2*boy

En, boy Alan, çevre

Sayaç<100evet

Dur

hayır

Page 56: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

1- Gerekli ölçüleri girilen 100 dikdörtgenin alanını ve çevresini hesaplayınız. Ekrana

boyutlar, alan ve çevreyi yazdırınız.

Çalıştır en boy Sayaç Alan Çevre Ekran Çıktısı

İlk durum - - 0 - - -

1. Kez 2 3 1 6 10 3, 2, 6, 10

2. Kez 4 5 2 20 18 5, 4, 20, 18

3. Kez 10 10 3 100 40 10, 10, 100, 40

4. Kez 7 5 4 35 24 5, 7, 35, 24

5. Kez 6 3 5 18 18 3, 6, 18, 18

20.10.2009 Dr. Mustafa T. Babagil 56

Page 57: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

2- 20 öğrenci için, Bilg213 dersinden, 2 arasınav(%30) ve 1 final(%40) sınav notunu

klavyeden girerek, dersten geçilip geçilmediğini hesaplayınız ve ekrana notlar,

ortalama ve başarılı olup olmadığını yazdırınız.

A1: BaslaA2: sayaç=0A3: snv1, snv2, final girA4: sayaç=sayaç+1A5: ortalama= 0.3*snv1+0.3*snv2+0.4*finalA6: eger ortalama >= 50 git A7

degilse git A8.A7: yaz, “Gecti”A8: yaz “Kaldi”A9: snv1, snv2, final, ortalama A10:eger sayac < 20 git A3A11: Dur

20.10.2009 Dr. Mustafa T. Babagil 57

Başla

Sayaç=0

snv1, snv2, final

Ortalama=snv1*0.3+snv2*0.3+final*0.4

Ortalama >=50 Geçti

Kaldı

Hayır Evet

Sayac<20

Sayaç=sayaç+1

hayır DurEvet

Snv1, snv2, final, ortalama

Page 58: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

2- 20 öğrenci için, Bilg213 dersinden, 2 arasınav(%30) ve 1 final(%40) sınav notunu klavyeden girerek, dersten geçilip geçilmediğini hesaplayınız ve ekrana notlar,

ortalama ve başarılı olup olmadığını yazdırınız.

Çalıştır snv1 snv2 final sayaç ortalama Geçti/Kaldı Ekran Çıktısı

İlk durum - - - 0 - - -

1. Kez 50 50 50 1 50 Geçti Geçti, 50,50,50,50

2. Kez 30 50 80 2 56 Geçti Geçti, 30, 50, 80, 56

3. Kez 50 90 90 3 78 Geçti Geçti, 50, 90, 90, 78

4. Kez 60 70 80 4 71 Geçti Geçti, 60,70, 80, 71

5. Kez 30 40 50 5 41 Kaldı Kaldı, 30, 40, 50, 41

20.10.2009 Dr. Mustafa T. Babagil 58

Page 59: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

3- Klavyeden 0 sayısı girdi verilene kadar girilecek sayıların ortalamasını hesaplayınız ve

ekrana girilen tüm sayıları, kaç tane sayıgirildiğini ve ortalamayı yazdırınız.

• A1: Basla• A2: sayaç=0, toplam=0,

ortalama=0• A3: Sayi gir• A4: eğer sayi = 0 git A7• A5: sayaç=sayaç+1• A6: toplam=toplam+sayi, git A3• A7: ortalama=toplam/sayaç• A8: yaz sayaç, ortalama• A9: Dur

20.10.2009 Dr. Mustafa T. Babagil 59

Başla

sayaç=0Toplam=0 ortalama=0

sayı

Sayı =0

Sayaç=sayaç+1

Toplam=toplam+sayı

Ortalama=toplam/sayaç

Sayac, ortalama

Dur

evet

Page 60: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

3- Klavyeden 0 sayısı girdi verilene kadar girilecek sayıların ortalamasını hesaplayınız ve ekrana girilen tüm sayıları, kaç tane sayı girildiğini ve ortalamayı yazdırınız.

Çalıştır sayı sayaç toplam ortalama Ekran Çıktısıİlk Durum - 0 0 0 -

1. Kez 5 1 5 - -2. Kez 7 2 12 - -3. Kez 8 3 20 - -4. Kez 10 4 30 - -

5. Kez 0 4 30 7.5 4, 7.5

20.10.2009 Dr. Mustafa T. Babagil 60

Page 61: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Çalışma Soruları 3: Algoritma, Akış Diagramı ve test çalıştırmasını yapınız (1 ve 2’yi en az 5 kez, 3’ü ise

XXX çıkana kadar çalıştırınız.).1- İkinci dereceden bir denklemin gerçel köklerinin olup olmadığını inceleyen ve ekrana

yazdıran bir algoritma hazırlayınız. Klavyeden girilecek olan katsayılar olmalı ve x2 nin katsayısı 0 girilene kadar program çalışmalı. En sonunda ekrana diğer çıktılara ek olarak bir de, kaçtane hesaplandığını yazdırınız.

2- 2’nin 20’nci kuvvetine kadar hesaplayan ve 2’nin 0’ıncı kuvvetinden başlayarak tüm bu kuvvetlerini yazdıran bir algoritma hazırlayınız.

3- Ekrana aşağıdaki çıktıları yazdırabilen bir algoritma hazırlayınız.1 2 3 X1 2 3X X1 2 3X XX1 2 3X XXX.........

20.10.2009 Dr. Mustafa T. Babagil 61

Yani, 3’e kadar say ve X yazdır, bir kere daha 3’e kadar say, XX yazdır, sonra yine 3’e kadar say XXX koydur. Bu işlemi 10 tane X koydurana kadar tekrarlayınız.

Page 62: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

1- İkinci dereceden bir denklemin gerçel köklerinin olup olmadığını inceleyen ve ekrana yazdıran bir algoritma hazırlayınız. Klavyeden girilecek olan

katsayılar olmalı ve x2 nin katsayısı 0 girilene kadar program çalışmalı. En sonunda ekrana diğer çıktılara ek olarak bir de, kaçtane hesaplandığını yazdırınız.

• A1: Başla• A2: sayaç=0• A3: a,b,c gir• A4: Eğer a=0 git A9• A5: D=b2 – 4.a.c• A6: Eğer D < 0 ise Git A10• A7: Yaz “gerçek kökleri vardır!..”• A8: sayaç=sayaç+1 git A3• A9: Yaz “ikinci dereceden fonk. değil” git

A11• A10: Yaz “Gerçek kök yoktur!.”• A11: Yaz sayaç• A12: Dur.

20.10.2009 Dr. Mustafa T. Babagil 62

Başla

Sayaç=0

a,b,c

A<0

D=b2 – 4.a.c

D<0

“gerçek kökleri vardır”

Sayaç=sayaç+1

“ikinci derece fonk.değil”

“gerçek kökleri yoktur”

sayaç

Dur

evet

hayır

evet

hayır

Page 63: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

2- 2’nin 20’nci kuvvetine kadar hesaplayan ve 2’nin 0’ıncı kuvvetinden başlayarak tüm

bu kuvvetlerini yazdıran bir algoritma hazırlayınız.

• A1: Başla• A2: sayac=1, kvt=1• A3: Yaz kvt.• A4: Eğer sayaç > 21 git

A8• A5: kvt=kvt*2• A6: Yaz kvt• A7: sayaç=sayaç+1 git

A4• A8: Dur

20.10.2009 Dr. Mustafa T. Babagil 63

Başla

Sayaç=sayaç+1

kvt

Sayaç >21

kvt=kvt*2

kvt

Sayaç=1 kvt=1

Dur

hayır

evet

Page 64: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Ekrana aşağıdaki çıktıları yazdırabilen bir algoritma hazırlayınız.1 2 3

X1 2 3X X1 2 3X XX1 2 3

X XXX.........

• A1: Başla• A2: i=0• A3: k=i, s=0• A4: Eğer i=10 git A12• A5: s=s+1• A6: yaz s• A7: Eğer s<3 git A5• A8: k=k+1, i=k;• A9: Eğer k<1 git A3• A10:Yaz “X”• A11: k=k-1git A9• A12: Dur

20.10.2009 Dr. Mustafa T. Babagil 64

Başla

i=0

k=i, s=0

s=s+1

i=10

k=k+1 i=k

s

s<3

K<1

“X”

k=k-1

Dur

evet

hayır

hayır

evet

hayır

evet

Page 65: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

C++ PROGRAMLAMAYA GİRİŞ• C ve C++ büyük ve küçük harf duyarlılığına sahiptir.

Kullandığımız ifadeleri birbirinden farklı ve aynıifade olarak kullanıyorsak programımız hataverecektir. Buna bir örnek olarak

ProgramPROGRAMprogRAMProgRam

Kelimelerini verebiliriz. Hepside farklı kelimeler olarak kabul edilirler!...

20.10.2009 Dr. Mustafa T. Babagil 65

Page 66: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

C++ İle Programlamaya Giriş• C++ ‘ın Genel Formu

20.10.2009 Dr. Mustafa T. Babagil 66

Page 67: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

İlk programımız!• // ilk1.cpp• // Ekrana "Bu benim ilk programım" yazdırıyoruz• #include <iostream.h>• int main()• { • cout << "Bu benim ilk programım";• return 0; • }

20.10.2009 Dr. Mustafa T. Babagil 67

Page 68: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Şimdi Yazdığımız programı inceleyelim:

• "//" işaretini açıklama satırlarında kullanıyoruz. C++ derleyicisi bu notasyonla başlayan satırı okumaz. Bununla birlikte daha uzun cümlelerimiz olursabunları da " /* */ " notasyonunun içinde yazıcağız. Bu özellik de C den bize kalma. Demiştik zaten C `nin tüm özelliklerini C++ içerir. Fakat biz genelde " // " yi kullanacağız.

20.10.2009 Dr. Mustafa T. Babagil 68

Page 69: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

#include <iostream.h> : Bu bizim C++ da bulunankütüphane dosyamızı çağırmaya yarıyor.

iostream.h kütüphanesindeki hazır olan " cout " fonksiyonunu çağırıyor. Yani buda bizim fazla kodyazmamıza engel oluyor. .h ile biten dosyalarkütüphane dosyalarıdır. Bunu şuna da benzetebiliriz. Farz edelim ki elimizde bir alet çantası var içindentornavidayı çağırdığımızda vida sıkacağızdır. Bu daona benziyor. C++ da ki hazır kütüphanelerde bir çokhazır fonksiyonlar vardır. İlerde Bu hazır fonksiyonlarişimizi görmemeye başlayınca kendi kütüphanemiziyapmaya başlayacağız. Tabi bu seviyeye geldiğimizdeolayı hemen hemen kavramış olacağız,

20.10.2009 Dr. Mustafa T. Babagil 69

Page 70: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

• Daha sonraki satır her C++ programında mutlakabulunması gereken bir satırdır. Her C++ programında main() fonksiyonu olmak zorundadır; bu fonksiyonumuzun önünde ise o fonksiyonundönderdiği değişkenin veri tipi olmalıdır. Tabi ki C++ fonksiyonlar ve onların dönderdikleri değerlerkonusunu da ileride işleyeceğiz.

• Bir sonraki satırda ise; C++ fonksiyonlar ve kodblokları " { } " parantezleri arasında bulunmalıdır. main de bir fonksiyon ise onun içindeki kodlar doğalolarak { } parantezleri arasındadır.

20.10.2009 Dr. Mustafa T. Babagil 70

Page 71: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Program derlenip çalıştırıldığında ise ( Turbo C++ 3.1 kullanıyorsanız ctrl+f9 kısa yoluyla programıçalıştırabilirsiniz (Run) ) karşımıza "Bu benim ilk programım" yazısı çıkacaktır. İşte bu yazıyı ekrana veren komut da iostream.h kütüphanesindeki cout fonksiyonudur.Önemli bir nokta ise C++ dilinde her satır ifadenin sonuna " ; " koymak zorundayız. Bundan farklı olarak #include satırlarının ve bir kaç farklı satırın arkasına " ; " gelmez. Bunları ileride göreceğiz.Return 0 : programımızın (aynı zamanda main fonksiyonumuzun) çıkış noktasıdır. Eğer return ile 0 değeri dönderirsek programımızın güvenle çıktığınıişletim sistemine bildirmiş oluruz. Bu sayede güvenleprogramımızın çalıştığını göreceğiz.

20.10.2009 Dr. Mustafa T. Babagil 71

Page 72: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Bazı gerekli notasyonlar

20.10.2009 Dr. Mustafa T. Babagil 72

Dizi: Adı:

\a Alarm

\b Bir karakter geri (Backspace)

\f Formu itekle

\n Yeni satır ( yukarda kullandığımız (newline) )

\r Return

\t Yatay boşluk

Page 73: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

C++ Programlamanın temel parçaları

// örnek C++ programı#include <iostream>using isim std;int main() {

cout << “merhaba, nasılsın!";return 0;

}

20.10.2009 Dr. Mustafa T. Babagil 2-73

Yorum

Hazır kütüphane dosyası çağırımı

Kullanılacak isimler

Main ismindeki başlangıç fonksiyonu

Main bloğunun başlangıcı

output statement

Mesaj olarak Düz yazı.

0 tam sayısını işletim sistemine gönderme

Main bolğunun bitişi

Page 74: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÖZEL KARAKTERLERCharacter Name Meaning// Çift slaş Yorum başlangıcı# Numaralandırma

işaretiKütüphane dosyası başlangı

20.10.2009 Dr. Mustafa T. Babagil 2-74

cı, (çağırılması)

< > Açma/kapama sembolleri

#include daki dosya adlarının başına ve sonuna konur.

( ) Açma/kapama parantezleri

Fonksiyonlar isimlendirilirken kullanılır.

{ } Açma/kapama parantezleri

Birden çok, grup komutlarıyazılırken kullanılır.

“ “ Aç/kapat tırnak işaretleri

Düz yazı yazdırılacağında kullanılır.

; Noktalı virgül Bir program komutunun sonunu bildirir.

Page 75: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

cout Objesi

• Bilgisayar ekranına çıktıyı göndermeye yarar.

• cout’a bilgi gönderirken << işareti kullanılır.

cout << “Programlama çok zevkli!";

20.10.2009 Dr. Mustafa T. Babagil 2-75

Page 76: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

• Aşağıdaki tek satırda gözüken bir çıktıoluşturacaktır.

cout << “Programlama çok”;cout << “zevkli!”;

ccoutout ObjesiObjesi

20.10.2009 Dr. Mustafa T. Babagil 2-76

Page 77: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

endl uygulayıcısı

• endln, yeni bir satır oluşturmak, bu komutun kullanıldığı yerde yeni satıra geçmek için kullanılır. Aşağıdaki iki satır çıktı oluşturur.

cout << “Programlama çok” << endl;cout << “zevkli!”;

20.10.2009 Dr. Mustafa T. Babagil 2-77

Page 78: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

endl uygulayıcısı

20.10.2009 Dr. Mustafa T. Babagil 2-78

Programlama çokgüzel!

cout << “Programlama çok” << endl;cout << “güzel!”;

Page 79: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

#include direktifleri.

• Yazmakta olduğunuz programın içerisine bir başka dosyanın içeriğini dahil etmek amaçlıkullanımlar için emir komutudur.

• Bu bir C++ komutundan ziyade bir işlem öncesiemir aktarımı olarak kabul edilebilir.

• #include satırları derleyici tarafından dikkate alınmazlar.

• #include bir komut olmadığından dolayısonuna ; işareti konmamalıdır.

20.10.2009 Dr. Mustafa T. Babagil 79

Page 80: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Değişkenler (variables)

• Değişken (variable) hafızada yer tutabilecek bir isimlendirmedir.

• Tutacağı yada saklayacağı bilginin ismini ve türünü gösterir.

• Kullanılmadan önce tanımlanmalıdırlar.

int degisken2;

şeklinde, kullanılırlar.20.10.2009 Dr. Mustafa T. Babagil 80

Page 81: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

// Bu programda variable uygulaması görülmektedir.#include <iostream>using namespace std;int main(){int sayi;

sayi=5;

// ekrana yazdırmak için

cout << “ sayimizin değeri “ << sayi << endl;

return(0);}

Programın çıktısı isesayimizin değeri 5 şeklindedir.20.10.2009 Dr. Mustafa T. Babagil 81

Page 82: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Tanımlayıcılar. (identifiers)• Bir tanımlayıcı, programın belli bir parçasını

tanımlayandır. Bunlar, bir fonksiyon, bir değişken ya da bir başka dosya adı olabilirler.

• Bir sonraki slayt da yalnızca C++’a ait, C++’a özel ayrıltılmış (reserved) kelimeler vardır. Bunlar tanımlayıcı olarak kullanılamazlar.

20.10.2009 Dr. Mustafa T. Babagil 82

Page 83: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

C++C++’’ a a öözel, ayrzel, ayrııltltıılmlmışış kelimeler kelimeler aaşşaağığıdaki gibidirler.daki gibidirler.

20.10.2009 Dr. Mustafa T. Babagil 83

Page 84: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Değişken isimleri

• Değişkenlerin isimleri seçilirken neyi temsil ettiklerini anlatabilmeleri gerekliliği üstünde durmalıyız. Yani anlaşılabilir değişken isimleri seçilmelidir.

20.10.2009 Dr. Mustafa T. Babagil 84

Page 85: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Temel Değişken kuralları

Bir değişkenin:1. İlk karakteri alfabetik bir karakter olmalıdır.2. Eğer alfabetik bir karakterle başlamayacak ise

“_ “ alt çizgi ile başlamalıdır.3. İlk karakterden sonra alfabetik, sayısal yada alt

çizgi karakterleri kullanılabilir.4. Unutmayınız ki Büyük ve küçük harf kullanımı

farklılık göstermektedir. Yani, “Mustafa” ve “mustafa” C++ için farklı iki değişken olabilir.

20.10.2009 Dr. Mustafa T. Babagil 85

Page 86: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Geçerli ve geçerli olmayan değişkenlere örnek

20.10.2009 Dr. Mustafa T. Babagil 86

DEĞİŞKEN (IDENTIFIER)

GEÇERLİ? Geçerli değilse, nedeni!...

toplamsatis Evet

toplam_satis Evet

toplom.Satış hayır . İşareti ve türkçe kullanıldı

4tebirsatis hayır Sayı ile başlamamalı.

toplamsati$ hayır $ işareti içermemeli.

Toplam_satıs hayır Türkçe karakter kullanıldı.

Toplam-satış hayır Hem türkçe karakter hem de –işareti kullanıldı.

Page 87: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Tam sayı değişkeni (integer, int)

• integer değişkeni 5, 100, 3, 0, -34 gibi sayılarısaklamakta kullanılır.

20.10.2009 Dr. Mustafa T. Babagil 87

Tam sayı değişkeni yani integer değişken çeşitinin büyüklüğü ve hafızada tutabileceği sayı aralığı değerleri.

Büyüklüğü AralığıBilgi çeşiti

Page 88: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Değişken tanımlamaları

Ayni cinsten olan değişkenler farklı satırlarda olabileceği gibi aynı satırlar içerisinde de tanımlanabilirler.

int genislik;int yukseklik;int alan;

Veya

int genislik, yukseklik, alan;20.10.2009 Dr. Mustafa T. Babagil 88

Page 89: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Char data çeşiti

• 1 byte yer tutar• Tek karakter temsil etmekte kullanılır.• Karakterin sayısal değeri bellekte tutulur.

CODE:char harf;harf = 'C';

BELLEK:harf

20.10.2009 Dr. Mustafa T. Babagil 89

67

Page 90: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Char data çeşiti

• Değişkene atamalar yapılırken yada ekrana yansıtma (çıktı) yapılırken tek tırnak işareti arasında kullanılır.

harf=‘W’;

‘A’

şeklinde.

20.10.2009 Dr. Mustafa T. Babagil 90

Page 91: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Akışkan sayı (Floating point) data çeşiti• Floating point sayıları aslında reel sayılar olarak

adlandırılabilirler.• Bu data tipleri şunlardırfloatdoublelong double3.48, -2.13 gibi sayıları bellekte tutmaya yararlar.float 4 byte bilgi tutar ve +/-3.4E-38 ve +/-3.4E+38 aralığındadır.double 8 byte’tır ve +/-1.7E-308 ile +/-1.7E+308 aralığındadır.long double 8 byte’tır ve +/-1.7E-308 ile +/-1.7E+308 aralığındadır.

20.10.2009 Dr. Mustafa T. Babagil 91

Page 92: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Floating point programı// reel sayı uygulaması yapalım#include<iostream>using namespace std;

int main(){float katedilenyol;float zaman, hiz;

katedilenyol=308; //kilometrezaman=2.5; //saathiz=katedilenyol/zaman;cout<<katedilenyol<<“ km. mesafeyi “<<hiz<<“km.saatte bir hizla gittiniz.”<<endl;return(0);}

20.10.2009 Dr. Mustafa T. Babagil 92

Programın çıktısı şöyle olacaktır.

308 km. Mesafeyi 123.2km.saatte bir hizla gittiniz.

Page 93: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

•• cincin objesi tanımlamış olduğunuz değişken için klavyeden bir değer atamak için kullanılır.

Kullanışı ise aşağıdaki gibidir.........

int yukseklik;cout << “yukseklik gir”;cin >> yukseklik;

...20.10.2009 Dr. Mustafa T. Babagil

cincin ObjesiObjesi

2-93

Page 94: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

•• cincin objesi ile birden çok değişken de girilebilir.

Kullanışı ise aşağıdaki gibidir.........int yukseklik, taban;cout << “yukseklik ve taban gir”;cin >> yukseklik >> taban;

...Unutulmamalıdır ki, ilk girilen değer birinci değişkene atanmaktadır.

20.10.2009 Dr. Mustafa T. Babagil 2-94

cincin ObjesiObjesi

Page 95: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

•• cincin objesi ile bir karatter dizisi yani bir kelime girişi (klavyeden) aşağıdaki gibi yapılabilir.

Kullanışı........string isim[21]; cout << “adınızı giriniz”;cin >> isim;

...

20.10.2009 Dr. Mustafa T. Babagil 2-95

cincin ile karakter dizisi okumak. (yani ile karakter dizisi okumak. (yani bir kelime giribir kelime girişşi yapmak!..)i yapmak!..)

Page 96: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

•string isim[21];

Bunun anlamı 22 karakterden oluşan bir diziyi isim değişkeni üzerine tanımlamaktır. 0, 1, 2, ... 21 ‘ inci karakterler olarak tutulmaktadır. Önemli bir başka nokta ise NULL karakterinin de 22 karakter olarak bu değişkene atanmasıdır. Yani 0 dan 21’e kadar 22 karakter var. Bunu iyice anlamamız gereklidir.

20.10.2009 Dr. Mustafa T. Babagil 2-96

cincin ile karakter dizisi okumak. (yani ile karakter dizisi okumak. (yani bir kelime giribir kelime girişşi yapmak!..)i yapmak!..)

Page 97: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Matematiksel Tanımlar

• Birden fazla matematiksel operatör yardımı ile çok komplex formüller yazılabilir.

• Bir matematiksel tanım, birden fazla matematiksel operatör ile değişkenler kullanılarak, yada değkenler kullanılmadan da yazılabilir!..

• Çıktı ekrana gönderilirken de, cout, objesi güvenle kullanılabilir:

Alan = 2 * PI * yaricap;cout << “cevre = " << 2*(l+w);

gibi..

20.10.2009 Dr. Mustafa T. Babagil 3-97

Page 98: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Matematiksel işlem sırası

• Birden fazla operasyon içeren matematiksel tanımlamalarda işlem sırası aşağıdaki gibidir.

• * , /, +, -

• Örnek: 2 + 2 * 2 – 2

ikinci

20.10.2009 Dr. Mustafa T. Babagil 3-98

ilk üçüncü

Page 99: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Operasyon sırası

20.10.2009 Dr. Mustafa T. Babagil 3-99

Bazı Tanımlamalarda İşlem sonuçları

Tanım Değer

Page 100: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Parantezler ile Gruplama

20.10.2009 Dr. Mustafa T. Babagil 3-100

Bazı Tanımlamalarda İşlem sonuçları

Tanım Değer

Page 101: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Değişken tiplerinde hiyararşi

En Yüksek değer:

En düşük:Saklayabilecekleri (tutabilecekleri) en büyük sayıya göre sıralanmışlardır.

20.10.2009 Dr. Mustafa T. Babagil 3-101

long doubledoublefloatunsigned longlongunsigned intint

Page 102: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

İsimlendirilmiş Sabitler• İsimlendirilmiş sabitler (constant variable): Değeri

değiştirilemeyen değişken tanımlarıdırlar. Sabit olarak program başında tanımlanırlar.

• Sabit değişkenleri temsil etmekte kullanılırlar.const double VERGI_ORANI = 0.0675;const int IL_SAYISI = 50;

• Tercihen büyük harflerle tanımlanmaları uygundur.

20.10.2009 Dr. Mustafa T. Babagil 3-102

Page 103: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Sabitler (Constants) ve Sıralı değişkenler (ARRAYS)

• Genel olarak bir isim sabiti kullanımı boyutu bildirilen bir array ile anlatılır.

const int boyut = 21;char isim[boyut];

Olarak tanımlanır. Bunun anlamı 21 karakterlik bir ism girilebileceğidir.

20.10.2009 Dr. Mustafa T. Babagil 3-103

Page 104: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

#define kullanımı

#define boyut 50–Tanımın sonunda ; olmadığına dikkat edin!..• Bellekte const gibi yer tutmaz. Bu bir

avantaj olarak sayılabilir.

20.10.2009 Dr. Mustafa T. Babagil 3-104

Page 105: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Bileşik Atamalar

• Aşağıdaki tanımı inceleyelim:

toplam = toplam + 1;

Toplam üzerine devamlı olarak 1 ekler.

20.10.2009 Dr. Mustafa T. Babagil 3-105

Page 106: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Benzer tanımlar

20.10.2009 Dr. Mustafa T. Babagil 3-106

X=6 olarak kabul edelim

Tanım

x e 4 ekler

X’in tanımdan sonraki değeri

x den 3 çıkartır

X’i 10 ile çarpar

X’i, x’in 2 ye bölümüne eşitler

X’i x/4 sonundaki kalana eşitler

Ne yapar

Page 107: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

• cmath kütük dosyasını ister.• double alır, ve double çıkartır.• Genelde kullanılan fonksiyonlar:

sin Sine cos Cosinetan Tangentsqrt Kare köklog Doğal (e) logabs Mutlak değer (bir int alır ve bir int çıkartır)

BazBazıı Matematiksel KMatematiksel Küüttüüphane Fonksiyonlarphane Fonksiyonlarıı

20.10.2009 Dr. Mustafa T. Babagil 3-107

Page 108: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Bazı Matematiksel Kütüphane Fonksiyonları

• Aşağıdakiler ise cstdlib kütüğünü isterler.• rand(): 0 ile enbüyük tutabileceği sayı arasında

rastgele bir sayı üretir (int). Her program çalıştığında ayni sırayla sayılar üretir.

• srand(x): Yukardaki sayı üreticiyi başlangıçdurumuna getirmeye yarar. unsigned int xkullanır. Amacı ise değişik sayılar üretilmesini sağlamaktır.

20.10.2009 Dr. Mustafa T. Babagil 3-108

Page 109: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

20.10.2009 Dr. Mustafa T. Babagil 109

Karar MekanizmalarKarar Mekanizmalarıı

Page 110: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

İlişki (Kıyaslama) Operatörleri

• Sayıların kıyaslanmasında kullanılır.• Operatörler:

> Büyüktür< Küçüktür>= Büyük veya eşit<= Küçük veya eşit== Eşittir!= Eşit değildir

20.10.2009 Dr. Mustafa T. Babagil 4-110

Page 111: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Bazı kıyaslamalar• Boolean tanımlamalar – doğru veya yanlış

• Örnek:12 > 5, doğru7 <= 5, yanlış

eğer x 10 ise, (if x = 10 then)x == 10, doğru, x != 8, doğru, vex == 8, yanlış

olarak değerlendirilir.

= ve == karıştırmamaya dikkat ediniz!..

20.10.2009 Dr. Mustafa T. Babagil 4-111

Page 112: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

if ...then... else...

Dr. Mustafa T. Babagil20.10.2009 4-112

Dışarısı soğuk mu?

Ceket giy

Eldiven tak

Bere tak

Doğru

Yanlış

Page 113: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

if ...then... else...

• Genel Format:

if (kıyaslama)tanım;

Burada tanım, bir ekran çıktısıkomutu, bir matematiksel işlem, bir başka kıyaslama yada bir atama, v.s. olabilir.

20.10.2009 Dr. Mustafa T. Babagil 4-113

Page 114: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

if ...then... else...

20.10.2009 Dr. Mustafa T. Babagil 4-114

Ortalama 50’den büyük

mü?

Başarılı

Doğru

Yanlış

Başarısız

Page 115: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

if kıyaslamasını geliştirebiliriz• Birden fazla komutu çalıştırmak için { }

kullanılmalıdır:if (ortalama > 90){

Harfnotu = 'A';cout << “İyi is cıkarttınız!\n";

}

• { } belli bir blok komutu işletmek, çalıştırmak için kullanılır.

• Çok önemli bir başka durum da, iç içe İf kıyaslarıkullanılabileceğidir.

20.10.2009 Dr. Mustafa T. Babagil 4-115

Page 116: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Mantık Operatörleri• Kıyaslamalardan oluşan kıyaslamalar

oluşturmada kullanılırlar• Operatör aslında açıklama anlamına gelebilir:

&& AND Eğer her iki kıyas da doğru olursa,yeni kıyaslama da doğrudur.

|| OR Eğer iki kıyastan biri doğru ise, yeni kıyas da doğru olur.

! NOT Bir tanımın değerini ters çevirir ve doğru tanım yanlış olur, yanlış tanım da doğru olur.

20.10.2009 Dr. Mustafa T. Babagil 4-116

Page 117: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Mantık Operatörleri - örnekEğer tanım aşağıdaki gibi ise,int x = 12, y = 5, z = -4;

(x > y) && (y > z) doğru

(x > y) && (z > y) yanlış

(x <= z) || (y == z) yanlış

(x <= z) || (y != z) doğru

!(x >= z) yanlış

4-117

Page 118: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

switch Komutu• Birçok alternatif içerisinden seçim yapmaya

yarar.• Bazı durumlarda if/else if kıyaslaması

yerine kullanılır.

20.10.2009 Dr. Mustafa T. Babagil 4-118

Page 119: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

switch Kullanımıswitch (tanım) //integer çıkmalı

{ case durum1: tanım1;case durm2: tanım2;...case durumn: tanımn;kabul edilen: tanımn+1;

}

** break komutu ile switch tanımından çıkış yapılabilir.Harf notu çıkarmak için kullanılabilir!.. Menü hazırlamada kullanılabilir!..

20.10.2009 Dr. Mustafa T. Babagil 4-119

Page 120: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Döngüler (Loops)while (kıyaslama) tanım;

tanım:komut, atama, v.s (bu tanım bir blok olarak da {} arasında yazılabileceği unutulmamalı).

int sayi;sayi=0;while (sayi <= 5){

cout << “selam\n";sayi++;

}

Çıktı 6 tane alt alta selam yazısı olacaktır!.. (sayaçuygulaması)Unutmayın başta kıyaslama yapılıp döngüye giriliyor.

20.10.2009 Dr. Mustafa T. Babagil 120

Page 121: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

do-while döngüsü• do-while: önce döngü gerçekleşir sonra kıyaslama

tanımlaması test edilir. (alttan test yöntemi) • Genel Format:

dotanım; // yada bir blok tanım{ }

while (kıyaslama);

• Unutmayın ki ; konulması illa ki şarttır!.

20.10.2009 Dr. Mustafa T. Babagil 5-121

Page 122: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

for döngüsü (Loop)• Sayaç kontrolü bilinen döngüler için çok kullanışlıdır.

• Genel Yapısı:

for(başlangıç; test; değer değişimi)komut; // yada blok olarak komutlar{ }

• 3 üncü komut sonrası ; yok!.. Yada şöyle diyelim ) sonrası ; yok!...

20.10.2009 Dr. Mustafa T. Babagil 5-122

Page 123: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

for döngüsü (Loop) - Örnekint sayac;

for (sayac = 1; sayac <= 5; sayac++)cout << “selam" << endl;

5 kere alt alta selam yazacaktır!... Veee,

int sayackuvvet=1;for (sayac=1; sayac <=10; sayac++)

kvvet=kuvvet*2;

Yukarıdaki ise 2’nin 10uncu kuvvetine kadar hesaplayacaktır.

İç içe for döngüleri ve iç içe while döngüleri kurulabileceğini de asla unutmayınız.

20.10.2009 Dr. Mustafa T. Babagil 5-123

Page 124: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÖDEV1- ALGORİTMA1-AKIŞDİAGRAMI!.. C++ PROGRAM KODU-1

20.10.2009 Dr. Mustafa T. Babagil 124

#include<iostream.h>#include<conio.h>#include<stdio.h>

int main(){ // * main blogunun baslangici

int sayi1,sayi2; //klavyeden girilecek sayilarint toplam, carpim, fark; //islem sonucunda elde edilecekler

clrscr; // ekranin temizlenmesi için komut (TC4.5’de pek gerekli değil!.. )cout <<"1. sayi ="; cin >> sayi1; cout << "\n"; // klavyeden 1. sayinin girilmesicout <<"2. sayi ="; cin >> sayi2; cout << "\n"; // klavyeden 2. sayinin girilmesitoplam=sayi1+sayi2; carpim=sayi1*sayi2; fark=sayi1-sayi2; // hesaplamalar

cout << "toplam="; cout <<toplam; cout << "\n"; // ekran çiktisi "toplam"cout<<"carpim="; cout<< carpim; cout << "\n"; // ekran çiktisi "carpim"cout<< "fark="; cout<<fark; // ekran çiktisi "fark"

return 0; // main bloguna bir tamsayi(integer) dönulmesi

}// * main blogunun bitimi

Page 125: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÖDEV1- ALGORİTMA2-AKIŞDİAGRAMI!.. C++ PROGRAM KODU-2

20.10.2009 Dr. Mustafa T. Babagil 125

#include<iostream.h>#include<conio.h>#include<stdio.h>

int main(){ // * main blogunun baslangici

int sayi1,sayi2;

cout <<"1. sayi ="; cin >> sayi1; cout << "\n"; // klavyeden 1. sayinin girilmesicout <<"2. sayi ="; cin >> sayi2; cout << "\n"; // klavyeden 2. sayinin girilmesi

if ((sayi1 >10) && (sayi2 >10)) cout << "sayilar 10 dan buyuk!"; // 1. ve 2. sayinin 10 ile //kiyaslanmasi

else if ((sayi1 ==10) && (sayi2 ==10)) // 1. ve 2. sayinin 10 ile kiyaslanmasi

cout << "sayilar esit"; // ekran çiktisi

else cout << "sayilar 10 dan buyuk degil"; // ekran çiktisi

return 0; // main bloguna bir tamsayi(integer) dönulmesi} // * main blogunun bitimi

Page 126: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÖDEV1- ALGORİTMA3-AKIŞDİAGRAMI!.. C++ PROGRAM KODU-3

#include<iostream.h>#include<conio.h>#include<stdio.h>

int main(){ // * main blogunun baslangiciint s1,s2; // klavyeden girilecek olan 1. ve 2. sayinin tanimlanmasi

cout << "sayi1="; cin >> s1; cout<<"\n"; // klavyeden 1. sayinin girilmesiwhile (s1 <= 10) { cout << "sayi1="; cin >> s1; cout<<"\n"; } // 1. sayinin 10 ile kiyaslanmasi ve 10 dan

//büyük girilene kadar giris yapilmasicout << "sayi2="; cin >> s2; cout<<"\n"; // klavyeden 2. sayinin girilmesiwhile (s2 <= 10) { cout << "sayi2="; cin >> s2; cout<<"\n"; } // 2. sayinin 10 ile kiyaslanmasi ve 10 dan

//büyük girilene kadar giris yapilmasi

cout << "sayi1= " << s1; cout<< " sayi2= " << s2; // 1. ve 2. sayinin ekrana yazdirilmasi

return 0; // main bloguna bir tamsayi(integer) dönulmesi} // * main blogunun bitimi

20.10.2009 Dr. Mustafa T. Babagil 126

Page 127: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÖDEV

VERİLEN ALGORİTMA PROBLEMLERİNİN (ÖDEV SETİ 2)

PROGRAMLARINI YAZINIZ. ÇALIŞTIRIP, KONTROL ETTİKTEN SONRA

LABORATUVARDA DERS HOCANIZA BUNLARI TESLİM EDİNİZ.

20.10.2009 Dr. Mustafa T. Babagil 127

Page 128: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÖDEV2- ALGORİTMA1-AKIŞ DİAGRAMI!.. C++ PROGRAM KODU- 4

Gerekli ölçüleri girilen 100 dikdörtgenin alanını ve çevresini hesaplayınız. Ekrana boyutlar, alan ve çevreyi yazdırınız.

#include<iostream.h>#include<conio.h>#include<stdio.h>

int main(){ // * main blogunun baslangici

int sayac; // dikdörtgenleri sayacak olan sayac(tamsayi olmak zorunda)float boy,en; // boyutlarin tanimlanmasi (reel sayi olabilir)float alan,cevre; // hesaplanacak olanlarsayac=0; // baslangic olarak sifirlanmasi gerekli. Nedeni ise ileriki

// adimlarda +1 yapilacagindan dolayi bilgisayarin kendince atamis// oldugu degeri sifira getirmektir.

20.10.2009 Dr. Mustafa T. Babagil 128

PROGRAM KODU 4, SAYFA 1/2

Page 129: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

while (sayac < 100)// 100 den kucuk oldugu sürece asagidakileri yapacak{ // ** dongunun baslangici// ölçülerin girilmesicout << " boy="; cin >> boy; cout <<"\n";cout << " en="; cin >> en; cout <<"\n";

//hesaplamalarin yapilmasi ve sayacin bir arttirilmasisayac=sayac+1;alan=boy*en;cevre=2*(boy+en);//bilgilerin ekrana yazdirilmasicout << "boy="; cout << boy; cout <<"\n";cout << "en="; cout << en; cout <<"\n";cout << "alan="; cout << alan; cout <<"\n";cout << "cevre="; cout << cevre; cout <<"\n";} // ** dongunun sonu

return 0; // main bloguna tamsayi(integer) donulmesi} // * main blogunun bitimi

20.10.2009 Dr. Mustafa T. Babagil 129

PROGRAM KODUNUN DEVAMI(4) SAYFA 2/2

Page 130: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÖDEV2- ALGORİTMA2-AKIŞ DİAGRAMI!.. C++ PROGRAM KODU- 5

20 öğrenci için, Bilg213 dersinden, 2 arasınav(%30) ve 1 final(%40) sınav notunu klavyeden girerek, dersten geçilip geçilmediğini hesaplayınız ve ekrana notlar, ortalama ve başarılı olup

olmadığını yazdırınız.

#include<iostream.h>#include<conio.h>#include<stdio.h>

int main(){ // * main blogunun baslangiciint sayac; // kac ögrenci oldugunu sayacak olan sayac(tamsayi olmak zorunda)int snv1,snv2,final; // sinavlarfloat ortalama; // hesaplanacak olan

sayac=0; // baslangic olarak sifirlanmasi gerekli. Nedeni ise ileriki// adimlarda +1 yapilacagindan dolayi bilgisayarin kendince atamis// oldugu degeri sifira getirmektir.

20.10.2009 Dr. Mustafa T. Babagil 130

PROGRAM KODU 5, SAYFA 1/2

Page 131: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

while (sayac < 20) // 20 den kucuk oldugu sürece asagidakileri yapacak{ // ** dongunun baslangici// sinav notlarinin girilmesicout << "arasinav-1="; cin >> snv1; cout << "\n";cout << "arasinav-2="; cin >> snv2; cout << "\n";cout << "final="; cin >> final; cout << "\n";// hesaplamalarin yapilmasi ve sayacin bir arttirilmasisayac=sayac+1;ortalama=0.3*snv1+0.3*snv2+0.4*final;// hesaplanan ortalamanin 50 ile kiyaslanmasi ve ekrana sonuc çikartilmasiif (ortalama >= 50) cout << "Basarili!.. :)) ";

else cout << "Basarisiz!.. :)) ";// ekrana sinav notlari ve ortalamanin eklenmesicout << "arasinav-1= "; cout << snv1; cout << " arasinav-2= "; cout << snv2;cout << " final= "; cout << final; cout << " ortalama= "; cout << ortalama;cout << "\n \n"; // satir atlanmasi.} // ** dongunun sonureturn 0; // main bloguna tamsayi(integer) donulmesi} // * main blogunun bitimi

20.10.2009 Dr. Mustafa T. Babagil 131

PROGRAM KODUNUN DEVAMI(5) SAYFA 2/2

Page 132: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÖDEV2- ALGORİTMA3-AKIŞ DİAGRAMI!.. C++ PROGRAM KODU- 6

Klavyeden 0 sayısı girdi verilene kadar girilecek sayıların ortalamasını hesaplayınız ve ekrana girilen tüm sayıları, kaç tane sayı girildiğini ve ortalamayı yazdırınız.

#include<iostream.h>#include<conio.h>#include<stdio.h>

int main(){ // * main blogunun baslangiciint sayac; // ortalamasi bulunacak sayilarin kac tane oldugunu sayacakfloat sayi,toplam,ortalama; // girilecek olan, hesaplanacak toplam

// ve hesaplanacak olan ortalama degiskenlerisayac=0; toplam=0; ortalama=0; // degiskenlerin sifirlanmasi

20.10.2009 Dr. Mustafa T. Babagil 132

PROGRAM KODU 6, SAYFA 1/2

Page 133: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

cout << "sayi= "; cin >> sayi; cout << " \n"; // sayinin girilmesiwhile (sayi != 0) { // sayi 0 girilene kadar calisacak olan dongu

sayac=sayac+1; // girilen sayinin sayilmasitoplam=toplam+sayi; // girilen sayilarin toplanmasicout << "sayi= "; cin >> sayi; cout <<"\n \n"; // yeni sayi girisi

} // dongunun (saglanmasi) sonuortalama= toplam/sayac; // ortalamanin hesaplanmasi

cout << " ortalama= "; cout << ortalama; // ortalamanin ekrana yazilmasi

return 0; // main bloguna tamsayi(integer) donulmesi

} // * main blogunun bitimi

20.10.2009 Dr. Mustafa T. Babagil 133

PROGRAM KODUNUN DEVAMI(6) SAYFA 2/2

Page 134: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Hangi Döngüyü, Nerede Kullanmalı!..Aslında bu sorunun pek de net bir yanıtı yoktur. Ancak elimizdeki problemin çözümü için izlenecek yolu programı yazan kişi belirlediğine göre, seçim de tamamen programı yazana aittir!..•while: Bu döngü önce test eder ve döngü bloğunu çalıştırır yada çalıştırmaz!..

• do-while: Döngü bloğu bir kez çalışır ve sonunda test edilir, uygunsa döngü çalışmaya devam eder!..

• for: eğer belirli sayıda tekrarlama gerekiyorsa bu döngüyükullanmak doğru olur.

•NOT: while ve do-while döngülerinde tekrar sayısıbilinmiyor ve belirli bir şart sağlaması için döngü devam ediyor.

20.10.2009 Dr. Mustafa T. Babagil 5-134

Page 135: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

TANIMLANMIŞ FONKSİYONLAR

Fonksiyonları anlatmaya başlamadan önce fonksiyonların neden önemli olduğunu, modüler programlamanın temeli olduğundan biraz bahsedelim.

Modüler programlama, bir programı küçük, fonksiyonel, ve daha basit parçalara bölme işlemine denir. Bu küçük ve daha basit parçaların her biri fonksiyon olarak adlandırılır.

Bir fonksiyon, kendi içinde belirli bir işi yapması için düzenlenmişbir komutlar dizisidir (küçük programdır).

Fonksiyonlar, bir programın işlerliliğini artırıcı ve program yazılımını basitleştirici bir etkiye sahiptir.

20.10.2009 Dr. Mustafa T. Babagil 5-135

Page 136: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

20.10.2009 Dr. Mustafa T. Babagil 136

Bu program uzun ve komplex komutlardan oluşmaktadır. Ancak Biz problemi yandaki gibi daha basit parçalara bölerek yazmayı tercih ettik.

Bu programda, program küçük parçalar halinde (gerktiği kadar!..) hazırlandı ve kendileri ayrı ayrıçalışabilen programlar (fonksiyonlar) olarak yazıldı.

int main () {

komut;komut;komutkomut;komut;komut;komut;komut;komutkomut;komut;komutkomut;komut;komut;komut;

}

��� ���� ��

� ���������1�

����� ������� ���ı �������� �������������2�

����� ������� ���ı �������� ������������� 0�

���� ���������1 ��

�����1�

�����2�

�����3�

���� ���������2 ��

� �����1�

�����2�

�����3�

�����4�

Page 137: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

• Bir önceki slaytta görüldüğü gibi fonksiyon tanımlamaları basitce yapılabilir. Ama unutulmamalıdır ki her yazılan yeni fonksiyon, MAIN program içerisinde kullanılmadan önce tanımlanmalıdır. Derleyici böyle bir fonksiyonun varlığından haberdar edilmeli ve MAIN içerisinde gördüğü her fonksiyonu, tüm program kodu içerisinde function olarak tanımlanmış şekilde bulmalıdır. Eğer function olarak bulamazsa derleyici bize hata gönderecektir.

20.10.2009 Dr. Mustafa T. Babagil 137

Page 138: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Fonksiyon tanımlama

20.10.2009 Dr. Mustafa T. Babagil 138

Hepimizin bildiği gibi MAIN de bir fonksiyondur, yani bir function olarak tanımlanmıştır aslında. Buna göre, bir function tanımını MAIN üzerinde anlatabiliriz.

Fonksiyonun dışarıya vereceği değer çeşidi.

Funksiyon ismi.

Funksiyon parametreleri

Burada parametre yoktur, verilmemiştir

Fonksiyonun esas bölümü.

MERHABA ...............

Page 139: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

• Ancak yukarıdaki tanımda olduğu gibi, fonksiyonun, ana programa muhakkak bir değer göndermesi gerekli değildir. (int main () , yani burada int tanımıolmadan da fonksiyon tanımlaması yapılabilir. Ancak böyle bir tecihte int yerine void yazmak gereklidir.)

• Bu durumu şöyle de açıklayabiliriz. Eğer bir fonksiyon, dışarıya değer döndürmeyecekse, o fonksiyonun dışarıya vereceği değer çeşidi voidolmalıdır..void basligiyazdir(){

cout << "Aylik satislar\n";}

20.10.2009 Dr. Mustafa T. Babagil 139

Page 140: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Fonksiyonların Ana programda çağrılması

• Eğer fonksiyonumuz void olarak tanımlanmışsa fonksiyon isminin arkasından () yazılarak kullanılır. Yani,

basligiyazdir();

şeklinde çağrılır.Çağrılan fonksiyon çalıştırıldıktan sonra,

programda fonksiyonun çağrıldığı noktadan sonraki komuta dönülür ve oradan itibaren program devam eder.

20.10.2009 Dr. Mustafa T. Babagil 140

Page 141: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

• Aşagıdaki program bir fonksiyonun tanımlanması ve kullanımını gösteriyor.

#include<iostream.h>

void mesajgonder();

void mesajgonder(){cout <<“ fonksiyondan mesaj.........." << "\n";}

int main(){cout <<" ana programdan mesaj!...." << "\n";mesajgonder();cout <<" tekrar ana programdan mesaj!....";return 0;}

20.10.2009 Dr. Mustafa T. Babagil 141

PROGRAMIN ÇIKTISI AŞAĞIDAKİ GİBİDİR!.ana programdan mesaj!....fonksiyondan mesaj..........tekrar ana programdan mesaj!....

Page 142: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Tüm fonksiyonlardaki çalışma şekli şöyledir.

20.10.2009 Dr. Mustafa T. Babagil 142

void mesajgonder(){cout <<“ fonksiyondan mesaj.........." << "\n";}

int main(){cout <<" ana programdan mesaj!...." << "\n";mesajgonder();cout <<" tekrar ana programdan mesaj!....";return 0;}

Page 143: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Önemli!..

• İstenildiği kadar fonksiyon yazılabilir.• Main içerisinde istenildiği kadar fonksiyon

çağrılabilir.• Fonksiyonlar başka fonksiyonları çağırabilir.• Derleyicilerin fonksiyon hakkında bilmesi

gerekenler;• Fonksiyonun ADI• Fonksiyonun return değer tipi (tabii ki varsa)• Kaç parametresi olduğu (tabii ki varsa)• Her parametrenin bilgi tipi (int, char, float ...)20.10.2009 Dr. Mustafa T. Babagil 143

Page 144: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

#include<iostream.h>

float dikdortgen_alan(float, float);

float dikdortgen_alan(float x, float y){float alan;alan=x*y;return (alan);}

int main(){float dikkenar, taban, dikdortgeninalani;

cout <<" dik kenari gir---->"; cin >> dikkenar; cout <<"\n";cout <<" taban uzunlugunu gir---->"; cin >> taban; cout << "\n";

dikdortgeninalani = dikdortgen_alan(dikkenar,taban);cout << dikdortgeninalani;

return 0;}

Parametreli Bir Örnek!.

20.10.2009 Dr. Mustafa T. Babagil 144

Page 145: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

#include<iostream.h>#include<stdlib.h>

float dikdortgen_alan(float, float);float ucgen_alan(float , float );

float dikdortgen_alan(float x, float y){float alan;alan=x*y;return (alan);}

float ucgen_alan(float x, float y){float alan;alan=(x*y)/2;return (alan);}

int main(){float dikkenar,taban, dikdortgeninalani, ucgeninalani;int secim;

while (secim!=0){cout << " Menuden cikis için -------------> 0" << "\n";cout << " Dikdortgenin alani için -------------> 1" << "\n";cout << " Ucgenin alani için -------------> 2" << "\n";cout << " Programdan Cikis için -------------> 3" << "\n";20.10.2009 Dr. Mustafa T. Babagil 145

Page 146: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

20.10.2009 Dr. Mustafa T. Babagil 146

cin >> secim;

switch (secim){case 1: {

cout <<" dikdortgenin dik kenarini gir -------->"; cin >> dikkenar; cout <<"\n";cout <<" dikdortgenin taban uzunlugunu gir ---->"; cin >> taban; cout << "\n";

dikdortgeninalani = dikdortgen_alan(dikkenar,taban);cout << dikdortgeninalani << "\n \n";break;}

case 2: {cout <<" ucgenin dik kenarini gir -------->"; cin >> dikkenar; cout <<"\n";cout <<" ucgenin taban uzunlugunu gir ---->"; cin >> taban; cout << "\n";

ucgeninalani = ucgen_alan(dikkenar,taban);cout << ucgeninalani << "\n \n";break;}

case 3: exit (0);}

}cout << " SWITCH UYGULAMASI BITTI!..";

return 0;}

Page 147: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

DİZİLER - ARRAYS• Diziler birden çok aynı bilgi tipinde olan değişkeni

barındırabilen bir tür değişken çeşitidir.• Diziler değişik boyutlarda olabilirler. Bir boyutlu diziler

olabileceği gibi, çok boyutlu diziler de tanımlanabilir. Örnek:

A:A bir tamsayı dizisi olarak tanımlanabilir. Bir boyutlu ve

10 tane aynı çeşitte bilgi saklayabiliyor.tanımlaması int A[10] olarak yapılmalıdır!..

20.10.2009 Dr. Mustafa T. Babagil 147

-5 0 2 3 15 -26 7 8 9 1

Page 148: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

A:A bir tamsayı dizisi için

A[0]= -5 A[1]= 0 A[2]= 2A[3]= 3 A[4]= 15 A[5]= -26A[6]= 7 A[7]= 8 A[8]= 9A[9]= 1

Önemli NOT: A Bilgi dizisi 0,1,2,3,4,5,6,7,8,9 lokasyonları olarak yerleştirilmiştir. 0 dan başladığına dikkat etmelisiniz!...

20.10.2009 Dr. Mustafa T. Babagil 148

-5 0 2 3 15 -26 7 8 9 1

Page 149: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

• Bir de çok boyutlu dizilere örnek olarak aşağıdaki gibi bir tanım yapabiliriz.

• int A[4][5]

Bu tanım, dizimizin 4 satır ve 5 kolondan oluşacağını ve saklayacağı bilgi tipinin tam sayı olacağını belirtiyor.

A

20.10.2009 Dr. Mustafa T. Babagil 149

1 2 4 -1 3

0 7 8 5 4

0 1 0 9 2

-3 4 5 8 17

Page 150: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

• int A[4][5]

A

A[0][0]=1 A[0][1]=1 A[0][2]=4 A[0][3]=-1 A[0][4]=3A[1][0]=0 A[1][1]=7 A[1][2]=8 A[1][3]=5 A[1][4]=4A[2][0]=0 A[2][1]=1 A[2][2]=0 A[2][3]=9 A[2][4]=2A[3][0]=-3 A[3][1]=4 A[3][2]=5 A[3][3]=8 A[3][4]=17

20.10.2009 Dr. Mustafa T. Babagil 150

1 2 4 -1 3

0 7 8 5 4

0 1 0 9 2

-3 4 5 8 17

Page 151: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

DİZİLER İÇERİSİNDEKİ BİLGİLERE ERİŞİM, VE BİLGİLERİN İŞLENMESİ

• Bir Dizideki bilgilerin her biri, bir alt_numaraya atanarak saklanmıştır. Yukarıdaki 2 slaytta da bunu gözlemleyebileceğiniz gibi alttaki örneğe dikkat ederek bunu daha iyi anlamanız da mümkündür.

• Yukarıda görüldüğü gibi, numaralandırma, herzaman 0’dan başlamaktadır. Bu numaralandırmayı, bir apartmanın daire numaralarına benzetebilirsiniz!..

20.10.2009 Dr. Mustafa T. Babagil 151

0 1 2 3 4

Page 152: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

• Eğer dizideki eleman sayısı n ise ozaman dizinin son elemanının numaralandırması n-1 olur.

• Aşağıdaki dizi 5 eleman için tanımlanmıştır. Buna göre 0,1,2,3 ve 4 numaralandırması toplam olarak 5 elemana denk gelmektedir.

20.10.2009 Dr. Mustafa T. Babagil 152

0 1 2 43

Page 153: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Bir dizinin elemanları, normal değişkenler nasıl işlem görüyorsa,

aynen öyle işleme girebiliyor.• Diziler (Arrays), eleman eleman, tek bir

numaralandırma olarak işlenmelidirler.Cin >> sinavlar[0]; (0 lokasyonuna değer girilmesi için

kullanılır.)

sinavlar[0]=85; sinavlar[1]=75; sinavlar[2]=50;

ortalama=0.3*sinavlar[0]+0.3*sinavlar[1]+0.4*sinavlar[0];

cout << sinavlar; (yanlış bir tanımdır!...)

cout <<sinavlar[0]<<sinavlar[1]<<sinavlar[2]; (Doğrudur!.)

20.10.2009 Dr. Mustafa T. Babagil 153

Page 154: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Aşağıdaki program bir öğrencinin sınav notlarını, 3 elemanlı tanımlanmış bir dizi içerisine klavyeden girip,

ortalamasını hesaplar.#include <iostream.h>

İnt main()

{ int sinavlar[3]; float ortalama;

cout << “arasinav 1 =“; cin >> sinavlar[0];

cout << “arasinav 2 =“; cin >> sinavlar[1];cout << “final =“; cin >> sinavlar[2];

ortalama=0.3*sinavlar[0]+0.3*sinavlar[1]+0.4*sinavlar[2];

cout <<“ortalama= “<<ortalama;

return 0;}

20.10.2009 Dr. Mustafa T. Babagil 154

Page 155: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÖNEMLİ

• Bir dizi (array) tanımlandığı zaman o dizinin boyutu yani kapasitesi kadar, hangi değişken tipinde tanımlanmış ise, bellekte, o değişkenin gerektirdiği kadar yer ayrılır. Yani char isim[15]; tanımı, bellekte 15 tane char değişkeni yeri ayırır. Kullanılsa da kullanılmasa da bu 15 char değişkeni bellekte ayrılmıştır. Bu da, belleği iyi kullanmamız gerektiğini bize gösteren en önemli noktalardan biridir.

20.10.2009 Dr. Mustafa T. Babagil 155

Page 156: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÖNEMLİ

• Bir başka önemli nokta ise, ARRAY kullanımında dikkatli olmamızı gerektiren diğer bir özelliktir. Genelde, sayisal değerler saklanacak olan ARRAYler için, kullanmadan önce tüm değerleri yani ARRAY lokasyonlarını ilk değerlere atamak gerekliliği vardır. Aslında bu yapılmazsa herzaman sorun oluşturmayacağı gibi, boş bırakılmışolabilecek olası lokasyonların olası kullanımlarında sorunlarla karşılaşabiliriz.

20.10.2009 Dr. Mustafa T. Babagil 156

Page 157: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Bir dizi içerisine döngü yardımı ile bilgi girişi yapma işlemi. İşimizi çok kolaylaştırıcı bir örnek

#include <iostream.h>

int main(){ long int ogrencinumarasi[10]; int i;

//asagidaki dongu 10 tane ogrenci numarasini tek tek girmemizi saglayacak.for(i=0;i<10;i++){cout << (i+1) <<"." <<" ogrencinin numarasini giriniz---> "; cin >> ogrencinumarasi[i]; cout <<"\n";}

//asagidaki dongu ise girdigimiz ogrenci numaralarini ekrana yansitmamizi saglayacak.

for(i=0;i<10;i++){cout << (i+1) <<"." <<" ogrencinin numarasi---> " << ogrencinumarasi[i];cout <<"\n";}

return 0;}

20.10.2009 Dr. Mustafa T. Babagil 157

Page 158: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Bir dizi içerisine döngü yardımı ile bilgi girişi yapma işlemi. İşimizi çok kolaylaştırıcı bir örnek. Kırmızı ile

yazılan bölüme dikkat ediniz.#include <iostream.h>

int main(){ long int ogrencinumarasi[10]; int i;

//asagidaki dongu, ARRAYi başlangic kabul edilen değerlere atayacaktir.

for(i=0;i<10;i++) ogrencinumarasi[i]=0;

//asagidaki dongu 10 tane ogrenci numarasini tek tek girmemizi saglayacak.for(i=0;i<10;i++){cout << (i+1) <<"." <<" ogrencinin numarasini giriniz---> "; cin >> ogrencinumarasi[i]; cout <<"\n";}

//asagidaki dongu ise girdigimiz ogrenci numaralarini ekrana yansitmamizi saglayacak.

for(i=0;i<10;i++){cout << (i+1) <<"." <<" ogrencinin numarasi---> " << ogrencinumarasi[i];cout <<"\n";}

return 0;}

20.10.2009 Dr. Mustafa T. Babagil 158

Page 159: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Dizilerin (Array) başlangıç değerleri atamaları

• Diziler bazen ilk değerler atanarak işleme koyulabilirler. Bunlar, program içerisinde aritmetik veya mantıksal işlemlerle değişebilen değerlerdir. Bu işlem, program başlangıcında veya tanımlama sırasında, aşağıdaki gibi yapılabilir. (Aşağıdaki programı yazıp deneyiniz!..)

#include <iostream.h>

int main(){ long int ogrencinumarasi[4]={100000,100900,100350,100542};

int i;

for(i=0;i<=3;i++){cout << (i+1) <<"." <<" ogrencinin numarasi---> " << ogrencinumarasi[i];cout <<"\n";}

return 0;}

20.10.2009 Dr. Mustafa T. Babagil 159

Page 160: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Diziler (ARRAY) ve Sakladıkları Bilgilerin İşleme Koyulması

• Bir DİZİ (ARRAY) içerisindeki bilgileri çağırabilmek için bir indeks numarasına ihtiyaç vardır. Bu indeks numarası bir tam sayı olmalıdır ( yani bu indeks numarası, “ int “ olarak tanımlanmalıdır).cout << ogrencinumarasi[3] << endl;

Şöyle kullanılmalıdır: (kullanılabilir!..)int i = 5;cout << ogrencinumarasi[i] << endl;

20.10.2009 Dr. Mustafa T. Babagil 160

Page 161: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Aşağıdaki program SAYI adında 100 elemanlı bir ARRAY tanımlayıp her bir elemanına -1 değeri atamaktadır. Sonra da içeriğin tümünü ekrana yazdırıyor.#include <iostream.h>

int main()

{const int MAX = 100; // sadece MAX değerini değişerek farklıint SAYI[MAX]; // büyüklükte ARRAY oluşturabilirsiniz.

int i;

for (i=0;i<MAX;i++) SAYI[i]=-1;

for (i=0;i<MAX;i++) {cout << SAYI[i]; cout <<"\n";}

return 0;

}

20.10.2009 Dr. Mustafa T. Babagil 161

Page 162: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

ÖNEMLİ!..• Array için kullanmış olduğunuz indeks numarası bir

tamsayı ise, derleyici bu indeks numarasının doğru yerde kullanılıp doğru numaralandırma olup olmadığınıkontrol EDEMEZ!..

• Bu yanlışlık, yanlış bellek kullanımına ve bilgisayarın kilitlenmesine, programın hata raporu vermesine yada derleyicinin durmasına sebep olabilir!.. Bu hata indeks numaralarının 0 ile başlaması gerektiği halde 1 ile başlanıldığındagenelde karşımıza çıkar!.. (döngü kullanımlarında dikkat edilmesi gereken bir nokta)

• Başka bir deyişle kullanmış olduğumuz indeks numarası ARRAY için tanımlı olmayabilir. Buna dikkat etmeliyiz. Derleyici, sadece, indeks numarasının tam sayı olup olmadığını kontrol eder.20.10.2009 Dr. Mustafa T. Babagil 162

Page 163: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Aşağıdaki örnek size yukarıda anlattığım durumu açıklamak için yazılmıştır. Burada sayiarrayi içerisinde index numaralandırması artırılmıştır ama program çalışacaktır. (mantıksal olarak yanlış olsa dahi çalışır). Kırmızı ile yazılmış ikinci program ise giriş yapılan yerde hata oluşturacaktır ve çalışmayacak. Ancak Program kodunda hata olmadığına dikkat ediniz!....

#include<iostream.h>

int main(){int sayiarrayi[3];int i;

for (i=0;i<3;i++) sayiarrayi[i++]=i*2;

return 0;}

20.10.2009 Dr. Mustafa T. Babagil 163

#include<iostream.h>

int main(){

int sayiarrayi[3];int i;

for (i=0;i<=3;i++) // hata burda!.. = kaldırınsayiarrayi[i]=i*2;

for (i=0;i<3;i++) cout <<sayiarrayi[i]<<"\n";

return 0;

}

Page 164: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Alttaki program, 10 elemanlı bir ARRAY tanımlar ve başlangıç olarak ilk 4 değeri 3,6,9,12 olarak atanır. Ancak geriye kalan diğer 6

ARRAY elemanına ise, 0 değeri, otomatik olarak derleyici tarafındanatanır.

#include<iostream.h>

int main(){int sayiarrayi[10]={3,6,9,12}; // ARRAY‘in ilk 4 elemanına değerler atıyor.int i;

//for (i=0;i<3;i++) sayiarrayi[i]=i*2;

for (i=0;i<10;i++) cout <<sayiarrayi[i] << "\n";

return 0;}

20.10.2009 Dr. Mustafa T. Babagil 164

Page 165: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Derleyicinin açıklamış olduğum 0 değerlerini atamaması için C++ bize, aşağıdaki gibi, boyut belirlemeyi, bizim girdiğimiz başlangışdeğerleri sayısı kadar otomatik belirlenmesine yardımcı olur.

20.10.2009 Dr. Mustafa T. Babagil 165

#include<iostream.h>

int main(){int sayiarrayi[ ]={3,6,9,12}; // buraya dikkat ediniz!...int i;

for (i=0;i<10;i++) cout <<sayiarrayi[i] << "\n"; // ekrana yazdırmak için..return 0;}

Şunu asla unutmayınız ki, buradaki çıktı sırasında ilk 4 elemandan sonraki elemanlar bilgisayarın işlemcisi tarafından gelişi güzel ekrana yazılmaktadır. Aslında o lokasyonlarda bilgi yoktur ve varmış gibi davranmaktadır!...

Page 166: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Aşağıdaki program, ALFANUMERİK değişkenler (STRING’ler) için, NUMERİK ARRAY’lerde yapmış olduklarımızı, ARRAY tanımınıkullanarak ALFANUMERİK değişkenler için örneklendiriyor.

#include<iostream.h>

int main(){

char sayiarrayi[]="BABAGIL";int i;

//for (i=0;i<3;i++) sayiarrayi[i]=i*2;

for (i=6;i>=0;i--) // BABAGIL yazısını Tersten,cout <<sayiarrayi[i] << "\n"; // L I G B A B A olarak

// Yukarıdan aşağıya doğru yazacaktır.return 0;}

20.10.2009 Dr. Mustafa T. Babagil 166

Page 167: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Aşağıda, soldaki program, İçerisine tanımlama sırasında bilgi girilen ARRAY’in, index numarasıolan i değişkenini artırarak içeriğini ekrana yazmaktadır.

#include<iostream.h>

int main(){ int A[10]={2,4,6,8,10,12,14,16,18,20};int i;

i=0;while (i<10) {

cout << A[i++] << "\n";}return 0;}

20.10.2009 Dr. Mustafa T. Babagil

Aşağıda, sağdaki program, İçerisine tanımlama sırasında bilgi girilen ARRAY’in, her bir elemanının

167

değerini 1 artırarak bu değişmişiçeriğini ekrana yazmaktadır.

#include<iostream.h>

int main(){ int A[10]={2,4,6,8,10,12,14,16,18,20};int i;

for(i=0;i<10;i++){ A[i]++;cout << A[i] << "\n";

}return 0;}

Page 168: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

20.10.2009 Dr. Mustafa T. Babagil 168

#include<iostream.h>#include<conio.h>#include<stdio.h>

int main(){ // * main blogunun baslangiciint sayac; // ikinci derecen fonksiyonlarin kactane girildigini sayacak olan sayacfloat a,b,c; // aX^2+bX+c=0 fonksiyonundaki katsayilar.float D; // Discriminant

sayac=0; a=-1; // gerekli baslangic degerleri. a degeri sifirdan farkli herhangibirsey!..

while (a !=0 ) // X^2 nin katsayisi 0 olmadıgi sürece bu döngü isleyecek{ // ** döngünün baslangici

cout << "X^2 nin katsayisini, yani a= "; cin >> a; cout << "\n"; // ilk a degerinin kontrol edilmesiif (a != 0) { // sifir degeri girilmemis ise diger katsayilarin girilmesine devam edilecekcout << "X nin katsayisini, yani b= "; cin >> b; cout << "\n"; // b katsayisi girisicout << "sabit sayiyi, yani c= "; cin >> c; cout << "\n"; // c katsayisi girisi

D=b*b-4*a*c; // discriminant degerinin hesaplanmasi// D degerine göre, köklerin olup olmadiginin degerlendirilmesi

if (D < 0) cout << " Gerçek kokler yoktur!.. \n";else cout << " Gerçek kokleri vardir!.. \n \n";

sayac=sayac+1; // bir sonraki katsayilar girilmeden önce sayacin arttirilmasi} // if kiyaslamasinin sonu (a!=o) icin..

} // ** döngünün sonu

//ekrana kaç kez giris yapildiginin ve hesaplama yapildiginin yansitilmasicout << sayac; cout << ", tane ikinci derece denklem incelendi!.";

return 0; // main bloguna tamsayi(integer) donulmesi

} // * main blogunun bitimi

ÖDEV, PROGRAM KODU 7, SAYFA 1/1

Page 169: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

20.10.2009 Dr. Mustafa T. Babagil 169

#include<iostream.h>

int main(){ // * main blogunun baslangiciint sayac; // ikinin 20 kuvvetinin sayilmasiint kvt; // kuvvetlerin hesaplanacagi degisken

sayac=1; kvt=1; // degerlerin baslangic durumlarinin belirtilmesi

while (sayac < 20){ // **ikinin 20 kuvvetine kadar hesaplayacak olan döngü baslangicikvt=kvt*2; // kuvvetin hesaplanmasi

cout << " 2 nin "; cout << sayac; cout <<" inci kuvveti = "; // hesaplanan kuvvetin ekrana yansitilmasicout << kvt; cout <<" \n"; // hesaplanan kuvvetin ekrana yansitilmasi

sayac=sayac+1; // sayacın arttirilmasi} // **ikinin 20 kuvvetine kadar hesaplayacak olan döngünün sonu

return 0; // main bloguna tamsayi(integer) donulmesi

} // * main blogunun bitimi

ÖDEV, PROGRAM KODU 8, SAYFA 1/1

Page 170: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

20.10.2009 Dr. Mustafa T. Babagil 170

#include<iostream.h>

int main(){ // * main blogunun baslangiciint i,k,s; // Kullanilacak olan degiskenlerin tanimlanmasi

i=0; k=0; s=0; // baslangic degerleri, yada degiskenlerin sifirlanmasiwhile (i<10) { // **bu islemin 10 kez yapilmasini saglayacak olan döngü baslangici

k=i; // X yazdirilmasinda kullanilacak olan k degiskenine deger atamawhile (s<3) { // 1 2 3 yazacak olan döngü baslangici. s ile yazilacaks=s+1; // s nin 1 arttirilmasicout << s; cout << " "; // ekrana yadirilmasi

} // 1 2 3 döngüsü sonucout <<" \n"; // yeni satira geçilmesik=k+1; // bu sayac kaç kez 1 2 3 yazdirilmis onun bilgisini tutuyori=k; // k bilgisi toplam isin kaç kez yapilacagi ile ilgili

// olarak da kaybedilmemesi gerekli bir bilgi. Bundan dolayi// bu bilgiyi kaybetmemek için i degiskeni tutuluyor.

s=0; // s=0 olmak zorunda. çünkü her defasinda tekrardan 1 2 3 yazilacakwhile (k>=1) { // Ekrana X yazdirilmasi için döngü

// kac kez 1 2 3 yazilmissa o kadar X,// herdefasinda yazdirilacak..cout <<" X "; // ekrana X yazdiriliyork=k-1; // döngünün sona erdirilmesi için..

} // döngü sonucout << " \n \n"; // 2 satır atlayarak yeni satira geçer} // 10 uncu kez yazdirilip, döngünün bitirilmesi

// **döngü sonu

cout << " Bitti!.. ";

return 0; // main bloguna tamsayi(integer) donulmesi

} // * main blogunun bitimi

ÖDEV, PROGRAM KODU 9, SAYFA 1/1

Page 171: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

20.10.2009 Dr. Mustafa T. Babagil

#include<iostream.h>

double fact(int);

double fact(int k){double faktoriyel;

if (k==0)faktoriyel = 1; else faktoriyel= fact(k-1) * k;

return faktoriyel;}

int main(){int a;

cout << " sayi gir ---> "; cin >> a; cout <<" \n";

cout << " factorial " << a << " = " << fact(a);

return 0;}

Yandaki Program çalıştırıldığızaman, klavyeden gireceğiniz tam sayının faktöriyelini hesaplıyor.

171

Page 172: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

20.10.2009 Dr. Mustafa T. Babagil

;

fibo=0; else {if (k==1) fibo=1;elsefibo=fibonacci(k-2)+fibonacci(k-1);

}

)

< "sayi giriniz ---> "; cin >> sayi; cout << "\n";

< fib;

Yandaki Program Fibonacci sayılarını

hesaplamaktadır. Fibonacci sayıları,

1,1,2,3,5,8,13,21,34,55,89,144.... olarak

yazılan bir sira tam sayıdır. Görüldüğü gibi,

dizideki her sayı kendinden önceki 2

sayının toplamı olarak hesaplanır. Bundan

dolayı yandaki program, rikörsiv olarak

kendi kendisini çağırmakta ve istenilen

sıradaki Fibonacci sayısını hesaplar.

172

#include<iostream.h>

double fibonacci(int )

double fibonacci(int k){double fibo;

if (k<1)

return fibo;}

int main({ int sayi; double fib;

cout <fib=fibonacci(sayi);cout <

return 0;}

Page 173: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Klavyeden girişi yapılan bir

dizi sayının en büyük

olanını bulur ve ekrana

yansıtır. Bu programda

dizinin eleman sayısını

sabit olarak 10 verdik.

(#define max 10 )

#include<iostream.h>

#define max 10

int main(){ int A[max],i,maxi;

for (i=0;i<max;i++){ cout << "sayi giriniz ---> ";

cin >> A[i]; cout << "\n";}

maxi=A[0];

i=1;while (i<max){if (A[i] > maxi) maxi=A[i];i=i+1;}

cout << "max= " <<maxi;

return 0;}

20.10.2009 Dr. Mustafa T. Babagil 173

Page 174: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

#include<iostream.h>

#define max 100

int main(){ int A[max],i,k; // i ve k döngülerde kullanilacak degiskenlerint elemansayisi; // A bir dizi (ARRAY). elemansayisi ise kacchar devam; // tane sayi girildigini tutacak olan degiskenint gecici; // devam ise sayi girisini denetleyecek olan degisken.

// sayilarin yer degismesinde kullanilacak degisken.

for (i=0;i<max;i++) A[i]=0; // tüm dizi degerlerine 0 degeri ata.

i=0;while ((i<max) && (devam!='H')) // biz dur diyene kadar A dizisine{ cout << (i+1) << ". sayiyi giriniz ---> "; // degerler girilmesi icin hazirlanan

cin >> A[i]; cout << "\n"; // dongu modulu.i=i+1;cout << " DEVAM ETMEK ISTIYORMUSUNUZ? --->E/H ";cin >> devam; cout << " \n";}

elemansayisi = i;

// tüm girilen sayilari KÜCÜKTEN BÜYÜGE dogru siralayacak olan modül.

for (i=1;i<elemansayisi;i++) // donguyu 1. elemandan baslattik{ k=i; // hangi elemani kiyasliyorsak onun yerini

while ((A[k]<A[k-1]) && (k>0)) // kaybetmemek icin k degiskenini kullandik{ // while dongusu, dogru oldugu süre sayilaringecici=A[k]; // yerleri degismeye devam edecek.A[k]=A[k-1]; // 0 pozisyonu kontrol edildikten sonra duracakA[k-1]=gecici; // ve onceden siralanmislara dokunmayacakk--; // tabii ki kiyaslanan sayi kücük oldugu sürece} // yer degisimi devam edecek.

}

for (i=0;i<elemansayisi;i++) cout << A[i] <<" \n"; // siralanmis sayilarin ekrana// aktarilmasi.

return 0; // isletim sistemine tam sayi donulmesi.}

20.10.2009 Dr. Mustafa T. Babagil 174

Yandaki program, eleman

sayısı 100 ile sabitlenmiş olan

bir tam sayı dizisi içerisine,

klavyeden biz dur diyene

kadar veya 100 tane sayı

girilene kadar sayı girişi

yapılmasına izin verir. Giriş

bittikten sonra ise bu girilen

sayıları küçükten büyüğe

doğru sıralar.

Önemli: Büyükten küçüğe

doğru sıralayan programı da

siz yazınız. Bu program

kodunda ufak bir değişiklik

yeterli olacaktır.

Page 175: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Yandaki program, paskal

üçgenini 2 boyutlu dizi

kullanarak ekrana

yansıtmaktadır. Dizinin

boyutunu 10 satır ve 10 kolon

olarak sabit tanımladım.

İsterseniz değiştirerek

denemeler yapınız.

Örneğin, değişiklik denemesi,

klavyeden girilecek bir sabit

sayıya kadar paskal üçgenini

hazırlatınız.

#include<iostream.h>

int main(){ int k,n;

int A[10][10];

for(n=0; n<10; n++){

for(k=0; k<=n; k++){

if(k==0){A[n][k]=1;}

else if(A[k]==A[n]){A[n][k]=1;}

else if(k>0){A[n][k] = A[n-1][k-1] + A[n-1][k];}

cout << " " << A[n][k];

}cout << "\n";

}

return 0;}

20.10.2009 Dr. Mustafa T. Babagil 175

Page 176: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Yandaki program yine

paskal üçgenini

ekrana getiriyor.

Ancak bizim

istediğimiz kadar sıra

ekrana çıkartıyor.

Ayrıca DİZİ

kullanılmamasına

dikkat ediniz.

#include <iostream.h>

int main(){int n,c;int i,j;

cout << " kac satirdan olusmasini istiyorsunuz? ---> ";

cin >> n;for (i = 0; i < n; i++){

c = 1;for (j = 0; j <= i; j++){

cout << c << " ";c = c * (i - j) / (j + 1);

}cout<<"\n";;

}cout<<"\n";return 0;

}

20.10.2009 Dr. Mustafa T. Babagil 176

Page 177: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Yine bir paskal üçgeni

ancak kendi kendisini

çağıran, rikörsive bir

fonksiyon uygulaması

olarak yazılmış.

#include <iostream.h>

int pascal_ucgeni(int row, int col){

if (row == 0 || col == 0 || row == col + 1)return 1;

return pascal_ucgeni(row - 1, col - 1) + pascal_ucgeni(row - 1, col);

}

int main(){int i,j;

for (i = 0; i <= 15; ++i) {for (j = 0; j < i; ++j)

cout << pascal_ucgeni(i, j) << " ";cout << "\n";

}

return 0;}

20.10.2009 Dr. Mustafa T. Babagil 177

Page 178: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Yandaki program, 2-boyutlu bir 2 tane dizinin carpımını(yani matriks çarpımı) yapmaktadır. Döngülere dikkat ediniz. İki matriks de 3x3 matriks olarak tanımlanmıştır.

#include<iostream.h>

#define satir 3#define kolon 3

int main(){int A[satir][kolon], B[satir][kolon], CARPIM[satir][kolon];int i,j,k,toplam;

//A matriksinin elemanlarini girinizfor (i=0;i<satir;i++)

{ cout <<" ";for(j=0;j<kolon;j++){ cout<<"A["<<i+1<<"]["<<j+1<<"]= "; cin>>A[i][j]; cout<<" "; }

cout <<"\n";}

//B matriksinin elemanlarini girinizfor (i=0;i<satir;i++)

{ cout <<" ";for(j=0;j<kolon;j++){ cout<<"B["<<i+1<<"]["<<j+1<<"]= "; cin>>B[i][j]; cout<<" "; }

cout <<"\n";}

// CARPIM=AxB isleminin sonucu ise asagidaki gibidir.

for (i=0;i<satir;i++)for (j=0;j<kolon;j++)

{toplam=0;for(k=0;k<3;k++)

toplam=toplam+A[i][k]*B[k][j];

CARPIM[i][j]=toplam;}

// CARPIM sonucunun ekrana yazdirilmasifor (i=0;i<3;i++)

{ cout <<" ";for(j=0;j<3;j++){ cout<<CARPIM[i][j]; cout<<" "; }

// { cout<<"B["<<i+1<<"]["<<j+1<<"]= "; cout<<CARPIM[i][j]; cout<<" "; }cout <<"\n";}

return 0;}

Çalışma: Programı adım

adım inceleyiniz ve elde

çalıştırarak deneyiniz. Bu

sizlerdeki, döngü mantığını

geliştirmeye yardımcı

olacaktır.

20.10.2009 Dr. Mustafa T. Babagil 178

Page 179: ALGORİTMA VE AKIŞ DİAGRAMLARI - brahms.emu.edu.trbrahms.emu.edu.tr/babagil/BABAGIL-BILG213-DERS NOTLARI.pdf · • Algoritma,herhangi bir sorunun çözümü için izlenecek yol

Yandaki program, 2-boyutlu bir 2 tane dizinin carpımını(yani matriks çarpımı) yapmaktadır. Döngülere dikkat ediniz. Burada 3x3 ve 3x2 matriks carpımı yapılmıştır.

#include<iostream.h>

#define satir 3#define kolon 3

int main(){int A[satir][kolon], B[kolon][2], CARPIM[satir][2];int i,j,k,toplam;

//A matriksinin elemanlarini girinizfor (i=0;i<satir;i++)

{ cout <<" ";for(j=0;j<kolon;j++){ cout<<"A["<<i+1<<"]["<<j+1<<"]= "; cin>>A[i][j]; cout<<" "; }

cout <<"\n";}

//B matriksinin elemanlarini girinizfor (i=0;i<satir;i++)

{ cout <<" ";for(j=0;j<2;j++){ cout<<"B["<<i+1<<"]["<<j+1<<"]= "; cin>>B[i][j]; cout<<" "; }

cout <<"\n";}

// CARPIM=AxB isleminin sonucu ise asagidaki gibidir.

for (i=0;i<satir;i++)for (j=0;j<2;j++)

{toplam=0;for(k=0;k<3;k++)

toplam=toplam+A[i][k]*B[k][j];

CARPIM[i][j]=toplam;}

// CARPIM sonucunun ekrana yazdirilmasifor (i=0;i<3;i++)

{ cout <<" ";for(j=0;j<2;j++){ cout<<CARPIM[i][j]; cout<<" "; }

// { cout<<"B["<<i+1<<"]["<<j+1<<"]= "; cout<<CARPIM[i][j]; cout<<" "; }cout <<"\n";}

return 0;}

Çalışma: Programı adım

adım inceleyiniz ve elde

çalıştırarak deneyiniz. Bu

sizlerdeki, döngü mantığını

geliştirmeye yardımcı

olacaktır.

20.10.2009 Dr. Mustafa T. Babagil 179