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
Bilgisayarlar temel olarak 2 kısımdan oluşmaktadır. DONANIM Bilgisayarları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
Bilgisayarlar 2 kısımdan oluşmaktadır. YAZILIM Bir problemin bilgisayar yardımıyla çözümünü sağlayan, çizim yapan, yazı yazan, Internet te gezinme işlemini gerçekleştiren her türlü programa, bu programları hazırlayan programlara ve bunların ürettikleri veri veya belgelere, hepsine birden yazılım denir. 20.10.2009 Dr. Mustafa T. Babagil 3
DONANIM 1-)Veri giriş birimleri Belli 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
DONANIM 2-)Sonuç çıkış birimleri Bilgisayar 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
DONANIM 3-)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
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 Klavye Kumanda Fare 20.10.2009 Dr. Mustafa T. Babagil 7
DONANIM ROM ise üzerine kayıtlı bilgilerin bir daha değişmesine izin verilmeyen bellektir. Bilgisayar imalatçıları tarafından içlerine bilgi yazı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
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
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 20.10.2009 Dr. Mustafa T. Babagil 10 sayılabilir.
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
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
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
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
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
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
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
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
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
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
ALGORİTMA VE AKIŞ DİAGRAMLARI 20.10.2009 Dr. Mustafa T. Babagil 21
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
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
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
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
Ö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
Çözüm 1: 20.10.2009 Dr. Mustafa T. Babagil 27
Ö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
Çözüm 2: 20.10.2009 Dr. Mustafa T. Babagil 29
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 20.10.2009 gösterilmesidir. Dr. Mustafa T. Babagil 30
Algoritmanın başladığını ya da sona erdiğini belirtmek için kullanılır. Araç belirtemeden giriş ya da çıkış yapılacağını gösterir. Klavye aracılığı ile giriş ya da okuma yapılacağını gösterir. Hesaplama ya da değerlerin değişkenlere aktarımını gösterir. Yazıcı aracılığı ile çıkış yapılacağını gösterir. Aritmetik ve mantıksal ifadeler için karar verme ya da karşılaştırma durumunu gösterir. 20.10.2009 Kart okuyucu aracılığıyla giriş yapılacağını gösterir. Diskten okuma veya diskete yazmayı gösterir. Dr. Mustafa T. Babagil 31
Disketten okuma veya diskete yazmayı gösterir. Oklar işin akış yönünü 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. 20.10.2009 Dr. Mustafa T. Babagil 32
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
Doğrusal Akış Şemaları İş 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şla Adım 2 A yı oku Adım 3 B yi oku Adım 4 C=A*B yi hesapla Adım 5 C yi yaz Adım 6 - Dur 20.10.2009 Dr. Mustafa T. Babagil 34
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şla A2 : Klavyeden oku X A3 : Klavyeden oku Y A4 : Hesapla Z = X + Y A5 : Yaz Z A6 : Dur 20.10.2009 Dr. Mustafa T. Babagil 35
Örnek 2 Akış Şeması BAŞLA OKU X OKU Y Z=X+Y YAZ Z DUR 20.10.2009 Dr. Mustafa T. Babagil 36
Ö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
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şla A2 : Oku S A3 : 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
Örnek 3 Mantıksal Akış Şemaları (klavyeden girilen sayının 0 ile kıyaslanması) BAŞLA OKU S S > 0 S < 0 YAZ Pozitif S : 0 YAZ Negatif S = 0 YAZ Sıfıra eşit DUR 20.10.2009 Dr. Mustafa T. Babagil 39
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
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şla A2 : Oku Y A3 : Yaz Y A4 : S = S + 1 A5 : Eğer S < 5 ise A3 e git A6 : Dur 20.10.2009 Dr. Mustafa T. Babagil 41
Örnek 4 Döngüsel Akış Şemaları BAŞLA OKU Y S = 0, 5, 1 Sayısı bilinen döngülerde; başlangıç değeri, son değer, artış sayısı YAZ Y S Döngünün çalıştığı bölüm DUR 20.10.2009 Dr. Mustafa T. Babagil 42
Ç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
Ç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. Başla Oku Sayı1, Sayı2 Toplam= sayı1+sayı2 Çarpım=sayı1*sayı2 Fark=sayı1-sayı2 Dur 20.10.2009 Yaz Sayı1, Sayı2, Toplam, Çarpım, Fark İstenirse, Dur dan önce eklenebilir!.. Dr. Mustafa T. Babagil 44
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 Fark 1. Kez 2 5 7 10-3 2. Kez 10 10 20 100 0 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. 20.10.2009 Dr. Mustafa T. Babagil 45
Ç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. İki sayı da 10 dan büyük Sayı1 ve sayı2 10 dan büyük Başla Oku Sayı1, Sayı2 Sayı1 >10 Sayı2>10 Sayı1 ve sayı2 10 a eşit. Dur İki sayı da 10 a eşit En az bir sayı 10 dan küçük Sayı1 ve sayı2 10 dan büyük değil 20.10.2009 Dr. Mustafa T. Babagil 46
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 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. 20.10.2009 Dr. Mustafa T. Babagil 47
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. S1 10 dan küçük Başla Oku S1 S1>10 S1 10 dan büyük Oku S2 NOT: TABİİ Kİ FARKLI ALGORİTMALAR VE AKIŞ DİAGRAMLARI HAZIRLANABİLİR. S2 10 dan küçük S2>10 Yaz Sı1, Sı2 İstenirse, Dur dan önce eklenebilir!.. S2 10 dan büyük Dur 20.10.2009 Dr. Mustafa T. Babagil 48
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 2. Kez 3. Kez 4. Kez 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. 20.10.2009 Dr. Mustafa T. Babagil 49
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. S1, S2 10 dan büyük değil Başla Oku S1,S2 S1>10 S2 > 10 S1 ve S2 10 dan büyük Dur Yaz Sı1, Sı2 İstenirse, Dur dan önce eklenebilir!.. 20.10.2009 Dr. Mustafa T. Babagil 50
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 2. Kez 3. Kez 4. Kez 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. 20.10.2009 Dr. Mustafa T. Babagil 51
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. S1 10 dan büyük değil Oku S1 Başla Oku S1, S2 S1 >10 S2 > 10 S2 10 dan büyük değil Oku S2 Evet Dur Yaz Sı1, Sı2 İstenirse, Dur dan önce eklenebilir!.. 20.10.2009 Dr. Mustafa T. Babagil 52
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 2. Kez 3. Kez 4. Kez 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. 20.10.2009 Dr. Mustafa T. Babagil 53
Ç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
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 Başla Sayaç=0 Boy, en Sayaç=sayaç+1 Alan=boy*en Çevre=2*en+2*boy En, boy Alan, çevre Sayaç<100 20.10.2009 Dr. Mustafa T. Babagil 55 evet hayır Dur
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
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. Başla Sayaç=0 snv1, snv2, final A1: Basla A2: sayaç=0 A3: snv1, snv2, final gir A4: sayaç=sayaç+1 A5: ortalama= 0.3*snv1+0.3*snv2+0.4*final A6: eger ortalama >= 50 git A7 degilse git A8. A7: yaz, Gecti A8: yaz Kaldi A9: snv1, snv2, final, ortalama A10:eger sayac < 20 git A3 A11: Dur Kaldı Ortalama=snv1*0.3+snv2*0.3+final*0.4 Ortalama >=50 Evet Sayac<20 hayır Dur 20.10.2009 Dr. Mustafa T. Babagil 57 Hayır Sayaç=sayaç+1 Snv1, snv2, final, ortalama Evet Geçti
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
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 evet Ortalama=toplam/sayaç Sayac, ortalama 20.10.2009 Dr. Mustafa T. Babagil 59 Dur Başla sayaç=0 Toplam=0 ortalama=0 sayı Sayı =0 Sayaç=sayaç+1 Toplam=toplam+sayı
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
Ç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 x 2 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 X 1 2 3 X X 1 2 3 X XX 1 2 3 X XXX......... 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. 20.10.2009 Dr. Mustafa T. Babagil 61
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 x 2 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=b 2 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. evet evet Başla Sayaç=0 a,b,c A<0 D=b 2 4.a.c D<0 gerçek kökleri vardır Sayaç=sayaç+1 ikinci derece fonk.değil hayır hayır gerçek kökleri yoktur sayaç 20.10.2009 Dr. Mustafa T. Babagil Dur 62
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 evet Başla Sayaç=1 kvt=1 kvt Sayaç >21 kvt=kvt*2 kvt Sayaç=sayaç+1 Dur hayır 20.10.2009 Dr. Mustafa T. Babagil 63
Ekrana aşağıdaki çıktıları yazdırabilen bir algoritma hazırlayınız. 1 2 3 X 1 2 3 X X 1 2 3 X XX 1 2 3 X XXX......... Başla i=0 k=i, s=0 i=10 hayır s=s+1 evet 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 evet s s<3 hayır k=k+1 i=k hayır K<1 X k=k-1 evet Dur 20.10.2009 Dr. Mustafa T. Babagil 64
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 hata verecektir. Buna bir örnek olarak Program PROGRAM program ProgRam Kelimelerini verebiliriz. Hepside farklı kelimeler olarak kabul edilirler!... 20.10.2009 Dr. Mustafa T. Babagil 65
C++ İle Programlamaya Giriş C++ ın Genel Formu 20.10.2009 Dr. Mustafa T. Babagil 66
İ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
Ş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 olursa bunları 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
#include <iostream.h> : Bu bizim C++ da bulunan kü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 kod yazmamıza engel oluyor..h ile biten dosyalar kütüphane dosyalarıdır. Bunu şuna da benzetebiliriz. Farz edelim ki elimizde bir alet çantası var içinden tornavidayı çağırdığımızda vida sıkacağızdır. Bu da ona benziyor. C++ da ki hazır kütüphanelerde bir çok hazır fonksiyonlar vardır. İlerde Bu hazır fonksiyonlar işimizi görmemeye başlayınca kendi kütüphanemizi yapmaya başlayacağız. Tabi bu seviyeye geldiğimizde olayı hemen hemen kavramış olacağız, 20.10.2009 Dr. Mustafa T. Babagil 69
Daha sonraki satır her C++ programında mutlaka bulunması gereken bir satırdır. Her C++ programında main() fonksiyonu olmak zorundadır; bu fonksiyonumuzun önünde ise o fonksiyonun dönderdiği değişkenin veri tipi olmalıdır. Tabi ki C++ fonksiyonlar ve onların dönderdikleri değerler konusunu da ileride işleyeceğiz. Bir sonraki satırda ise; C++ fonksiyonlar ve kod blokları " { } " parantezleri arasında bulunmalıdır. main de bir fonksiyon ise onun içindeki kodlar doğal olarak { } parantezleri arasındadır. 20.10.2009 Dr. Mustafa T. Babagil 70
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üvenle programımızın çalıştığını göreceğiz. 20.10.2009 Dr. Mustafa T. Babagil 71
Bazı gerekli notasyonlar 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 20.10.2009 Dr. Mustafa T. Babagil 72
C++ Programlamanın temel // örnek C++ programı parçaları #include <iostream> using isim std; int main() Main ismindeki başlangıç fonksiyonu { Main bloğunun başlangıcı cout << merhaba, nasılsın!"; return 0; } Main bolğunun bitişi Yorum Hazır kütüphane dosyası çağırımı Kullanılacak isimler Mesaj olarak Düz yazı. 0 tam sayısını işletim sistemine gönderme output statement 20.10.2009 Dr. Mustafa T. Babagil 2-73
ÖZEL KARAKTERLER Character Name Meaning // Çift slaş Yorum başlangıcı # Numaralandırma işareti < > Açma/kapama sembolleri ( ) Açma/kapama parantezleri { } Açma/kapama parantezleri Aç/kapat tırnak işaretleri Kütüphane dosyası başlangıcı, (çağırılması) #include daki dosya adlarının başına ve sonuna konur. Fonksiyonlar isimlendirilirken kullanılır. Birden çok, grup komutları yazılırken kullanılır. Düz yazı yazdırılacağında kullanılır. ; Noktalı virgül Bir program komutunun sonunu bildirir. 20.10.2009 Dr. Mustafa T. Babagil 2-74
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
cout Objesi Aşağıdaki tek satırda gözüken bir çıktı oluşturacaktır. cout << Programlama çok ; cout << zevkli! ; 20.10.2009 Dr. Mustafa T. Babagil 2-76
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
endl uygulayıcısı cout << Programlama çok << endl; cout << güzel! ; Programlama çok güzel! 20.10.2009 Dr. Mustafa T. Babagil 2-78
#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 öncesi emir 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
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
// 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ı ise sayimizin değeri 5 şeklindedir. 20.10.2009 Dr. Mustafa T. Babagil 81
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
C++ a özel, ayrılt ltılmış kelimeler aşağıdaki gibidirler. 20.10.2009 Dr. Mustafa T. Babagil 83
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
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
Geçerli ve geçerli olmayan değişkenlere örnek DEĞİŞKEN (IDENTIFIER) toplamsatis toplam_satis GEÇERLİ? Evet Evet Geçerli değilse, nedeni!... 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ı. 20.10.2009 Dr. Mustafa T. Babagil 86
Tam sayı değişkeni (integer, int) integer değişkeni 5, 100, 3, 0, -34 gibi sayıları saklamakta kullanılır. Tam sayı değişkeni yani integer değişken çeşitinin büyüklüğü ve hafızada tutabileceği sayı aralığı değerleri. Bilgi çeşiti Büyüklüğü Aralığı 20.10.2009 Dr. Mustafa T. Babagil 87
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
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 67 20.10.2009 Dr. Mustafa T. Babagil 89
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
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ır float double long double 3.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
Floating point programı // reel sayı uygulaması yapalım #include<iostream> using namespace std; int main() { float katedilenyol; float zaman, hiz; katedilenyol=308; //kilometre zaman=2.5; //saat hiz=katedilenyol/zaman; cout<<katedilenyol<< km. mesafeyi <<hiz<< km.saatte bir hizla gittiniz. <<endl; return(0); } Programın çıktısı şöyle olacaktır. 308 km. Mesafeyi 123.2km.saatte bir hizla gittiniz. 20.10.2009 Dr. Mustafa T. Babagil 92
cin Objesi cin 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 2-93
cin Objesi cin 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
cin ile karakter dizisi okumak. (yani bir kelime girişi i yapmak!..) cin 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
cin ile karakter dizisi okumak. (yani bir kelime girişi i yapmak!..) 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
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
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 ilk üçüncü 20.10.2009 Dr. Mustafa T. Babagil 3-98
Operasyon sırası Bazı Tanımlamalarda İşlem sonuçları Tanım Değer 20.10.2009 Dr. Mustafa T. Babagil 3-99
Parantezler ile Gruplama Bazı Tanımlamalarda İşlem sonuçları Tanım Değer 20.10.2009 Dr. Mustafa T. Babagil 3-100
Değişken tiplerinde hiyararşi En Yüksek değer: long double double float unsigned long long unsigned int En düşük: int Saklayabilecekleri (tutabilecekleri) en büyük sayıya göre sıralanmışlardır. 20.10.2009 Dr. Mustafa T. Babagil 3-101
İ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
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
#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
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
Benzer tanımlar X=6 olarak kabul edelim Tanım Ne yapar 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 20.10.2009 Dr. Mustafa T. Babagil 3-106
Bazı Matematiksel Kütüphane K Fonksiyonları cmath kütük dosyasını ister. double alır, ve double çıkartır. Genelde kullanılan fonksiyonlar: sin Sine cos Cosine tan Tangent sqrt Kare kök log Doğal (e) log abs Mutlak değer (bir int alır ve bir int çıkartır) 20.10.2009 Dr. Mustafa T. Babagil 3-107
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 x kullanır. Amacı ise değişik sayılar üretilmesini sağlamaktır. 20.10.2009 Dr. Mustafa T. Babagil 3-108
Karar Mekanizmaları 20.10.2009 Dr. Mustafa T. Babagil 109
İ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
Bazı kıyaslamalar Boolean tanımlamalar doğru veya yanlış Örnek: 12 > 5, doğru 7 <= 5, yanlış eğer x 10 ise, (if x = 10 then) x == 10, doğru, x!= 8, doğru, ve x == 8, yanlış olarak değerlendirilir. = ve == karıştırmamaya dikkat ediniz!.. 20.10.2009 Dr. Mustafa T. Babagil 4-111
if...then... else... Dışarısı soğuk mu? Doğru Yanlış Ceket giy Eldiven tak Bere tak 20.10.2009 Dr. Mustafa T. Babagil 4-112
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
if...then... else... Ortalama 50 den büyük mü? Doğru Yanlış Başarılı Başarısız 20.10.2009 Dr. Mustafa T. Babagil 4-114
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
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
Mantık Operatörleri - örnek Eğ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
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
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
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
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: do tanı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
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
for döngüsü (Loop) - Örnek int sayac; for (sayac = 1; sayac <= 5; sayac++) cout << selam" << endl; 5 kere alt alta selam yazacaktır!... Veee, int sayac kuvvet=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
ÖDEV1- ALGORİTMA1-AKIŞ DİAGRAMI!.. C++ PROGRAM KODU-1 #include<iostream.h> #include<conio.h> #include<stdio.h> int main() { // * main blogunun baslangici int sayi1,sayi2; int toplam, carpim, fark; //klavyeden girilecek sayilar //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 girilmesi cout <<"2. sayi ="; cin >> sayi2; cout << "\n"; // klavyeden 2. sayinin girilmesi toplam=sayi1+sayi2; carpim=sayi1*sayi2; fark=sayi1-sayi2; // hesaplamalar cout << "toplam="; cout <<toplam; cout << "\n"; cout<<"carpim="; cout<< carpim; cout << "\n"; cout<< "fark="; cout<<fark; // ekran çiktisi "toplam" // ekran çiktisi "carpim" // ekran çiktisi "fark" return 0; // main bloguna bir tamsayi(integer) dönulmesi }// * main blogunun bitimi 20.10.2009 Dr. Mustafa T. Babagil 124
ÖDEV1- ALGORİTMA2-AKIŞ DİAGRAMI!.. C++ PROGRAM KODU-2 #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 girilmesi cout <<"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 20.10.2009 Dr. Mustafa T. Babagil 125
ÖDEV1- ALGORİTMA3-AKIŞ DİAGRAMI!.. C++ PROGRAM KODU-3 #include<iostream.h> #include<conio.h> #include<stdio.h> int main() { // * main blogunun baslangici int s1,s2; // klavyeden girilecek olan 1. ve 2. sayinin tanimlanmasi cout << "sayi1="; cin >> s1; cout<<"\n"; // klavyeden 1. sayinin girilmesi while (s1 <= 10) { cout << "sayi1="; cin >> s1; cout<<"\n"; } // 1. sayinin 10 ile kiyaslanmasi ve 10 dan //büyük girilene kadar giris yapilmasi cout << "sayi2="; cin >> s2; cout<<"\n"; // klavyeden 2. sayinin girilmesi while (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
Ö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
Ö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 PROGRAM KODU 4, SAYFA 1/2 int sayac; // dikdörtgenleri sayacak olan sayac(tamsayi olmak zorunda) float boy,en; // boyutlarin tanimlanmasi (reel sayi olabilir) float alan,cevre; // hesaplanacak olanlar 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 128
while (sayac < 100)// 100 den kucuk oldugu sürece asagidakileri yapacak { // ** dongunun baslangici // ölçülerin girilmesi cout << " boy="; cin >> boy; cout <<"\n"; cout << " en="; cin >> en; cout <<"\n"; //hesaplamalarin yapilmasi ve sayacin bir arttirilmasi sayac=sayac+1; alan=boy*en; cevre=2*(boy+en); //bilgilerin ekrana yazdirilmasi cout << "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 PROGRAM KODUNUN DEVAMI(4) SAYFA 2/2 return 0; // main bloguna tamsayi(integer) donulmesi } // * main blogunun bitimi 20.10.2009 Dr. Mustafa T. Babagil 129
Ö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 baslangici int sayac; // kac ögrenci oldugunu sayacak olan sayac(tamsayi olmak zorunda) int snv1,snv2,final; // sinavlar float ortalama; // hesaplanacak olan PROGRAM KODU 5, SAYFA 1/2 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
while (sayac < 20) // 20 den kucuk oldugu sürece asagidakileri yapacak { // ** dongunun baslangici // sinav notlarinin girilmesi cout << "arasinav-1="; cin >> snv1; cout << "\n"; cout << "arasinav-2="; cin >> snv2; cout << "\n"; cout << "final="; cin >> final; cout << "\n"; // hesaplamalarin yapilmasi ve sayacin bir arttirilmasi sayac=sayac+1; ortalama=0.3*snv1+0.3*snv2+0.4*final; // hesaplanan ortalamanin 50 ile kiyaslanmasi ve ekrana sonuc çikartilmasi if (ortalama >= 50) cout << "Basarili!.. :)) "; else cout << "Basarisiz!.. :)) "; // ekrana sinav notlari ve ortalamanin eklenmesi cout << "arasinav-1= "; cout << snv1; cout << " arasinav-2= "; cout << snv2; cout << " final= "; cout << final; cout << " ortalama= "; cout << ortalama; cout << "\n \n"; // satir atlanmasi. } // ** dongunun sonu return 0; // main bloguna tamsayi(integer) donulmesi } // * main blogunun bitimi PROGRAM KODUNUN DEVAMI(5) SAYFA 2/2 20.10.2009 Dr. Mustafa T. Babagil 131