Doç. Dr. Emine TANIR KAYIKÇI Yrd. Doç. Dr. Esra TUNÇ GÖRMÜŞ KTÜ Harita Müh. Böl. Bilgisayar Programlama Dersi KTÜ Harita Müh. Böl. 2017/2018 Bahar Dönemi Doç. Dr. Emine TANIR KAYIKÇI Yrd. Doç. Dr. Esra TUNÇ GÖRMÜŞ etanir@ktu.edu.tr
Dersin Amacı: Programlama becerisini geliştirmek, Algoritmik düşünme yeteneği kazandırmak, Jeodezik problemleri çözmeye yönelik olarak MATLAB yazılımını öğretmek
DERS KAYNAKLARI Gürol Banger, Bilgisayar Programlamanın Temel Bilgileri; KTÜ Mühendislik Mimarlık Fakültesi Yayınları; Cilt 1 ve Cilt 2. Mehmet Uzunoğlu, Ali Kızıl, Ömer Çağlar Onar, Her Yönü ile MATLAB, Genişletilmiş 2. Baskı, Türkmen Kıtabevi,ISBN 975-6392-07-X, İstanbul 2003. Brian H. Hahn, Daniel T. Valentine, Temel MATLAB-Mühendisler ve Fen Bilimciler İçin (Essential MATLAB-for Engineers and Scientiscts), 5. Basımdan Çeviri, 2016, Nobel Yayın Dağıtım, ISBN 978-605-320-540-1. Ömer Gündoğru, Osman KOPMAZ, M. Akif CEVİZ, Mühendislik ve Fen Uygulamalarıyla MATLAB, 2. Basım 2004, Nobel Yayın Dağıtım, ISBN 975-591-681-4. İbrahim Yüksel, MATLAB ile Mühendislik Sistemlerinin Analizi ve Çözümü, Genişletilmiş 3. Baskı, Paradigma Kitabevi, Nobel Yayın Dağıtım, ISBN 975-591-656-3. Bilgisayar Programlamaya Giriş Ders Notları, A. Oral, www.mfyz.com/dosyalar/Pascal_Dersleri_PDF/bolum01.pdf
bilgisayar yazılımının oluşturulması adımları Problemin tanımı Problem anlaşılmalıdır. Mevcut bilgiler ve bunların, elde edilmesi istenen sonuçlarla ilişkileri öğrenilmeli. Çözüm yönteminin belirlenmesive Algoritma/İş Akış Şeması geliştirme Mevcut bilgilerle, problemin çözümü için izlenecek yol tanımlanır (Algoritma) Gerekirse, problem alt birimlere bölünerek, her birimin çözümü ayrı ayrı yapılır. (Bir problemin birden fazla çözümü olabilir, en uygun olanı belirlenir). Çözüm adımlarına uygun yazılan algoritmanın daha anlaşılabilir olması ve çözüm adımlarının birbirleriyle ilişkileri için akış şeması oluşturulur. Program Kodlama Problemin yapısına uygun seçilen bir programlama dili yardımıyla akış şemaları dilin kurallarına uygun olarak bilgisayarın anlayabileceği duruma getirilir. Programın çalışır duruma getirilmesi (varsa, yazım ve mantıksal hatalar düzeltilerek) Programın test edilmesi Çözümü daha önceden bilinen problemlerin, yazılan program kodları yardımıyla çözümü bulunarak, programın doğru çalışıp çalışmadığı test edilir. Belgeleme ve güncelleştirme
Bilgisayar programlaması sırasında izlenebilecek bir çok yol ve yöntem vardır. Bilgisayar programcısının probleme ilişkin çözümü ortaya çıkarabilmesi için problem çözümü ile ilgili bilgileri bilmesi gerekir. Bilgisayar programlamasında genel olarak belirli kalıp ve kurallara uyulur.
www.mfyz.com/dosyalar/Pascal_Dersleri_PDF/bolum01.pdf
www.mfyz.com/dosyalar/Pascal_Dersleri_PDF/bolum01.pdf
ya kişi otobüsü kaçırmışsa! bir sorunun çözümü için birbirinden farklı birden fazla sayıda algoritma hazırlanabilir, ve birbirinden farklı yüzlerce program yazılabilir!!! www.mfyz.com/dosyalar/Pascal_Dersleri_PDF/bolum01.pdf
Algoritmalarda Kullanılan Operatörler İşlemleri belirten sembollere bilgisayar dilinde operatör denir. http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
1. Aritmetik Operatörler Uygulama: 1'den 10‘a kadar sayıları ekrana yazdırma başla sayi=1 sayıyı ekrana yaz sayi=sayi+1 eğer sayi<=10 ise 3.adıma git dur http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
1. Aritmetik Operatörler Uygulama: 1'den 100‘e kadar 3'e bölünen sayıları bulma ve ekrana yazdırma başla a=1 b=a%5 eğer b=0 ise a yı ekrana yaz a=a+1 eğer a<=100 ise 3.adıma git dur. http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
1. Aritmetik Operatörler Uygulama: 1'den 100‘e kadar tek sayıları sayıları bulma ve ekrana yazdırma başla a=0 a=a+1 b=a%2 eğer b!=0 ise sayıyı ekrana yaz eğer a<100 ise 3.adıma git dur http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
2. Mantıksal Operatörler Uygulama: girilen sayının sıfırdan büyük ve tek olduğunu bulma başla sayıyı gir (a) b=a%2 eğer a>0&&b!=0 ise ekrana "sıfırdan büyük ve tek" yaz 5. dur. http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
2. Mantıksal Operatörler Uygulama: girilen sayı 10‘dan büyük ya da çift ise ekrana EVET yazdırma başla sayıyı gir(a) b=a%2; eğer a>10||b=0 ise ekrana «EVET» yaz dur.
Algoritmalarda Kullanılan Terimler Değişken Sabit Atama Sayaç Döngü Ardışık Toplama Ardışık Çarpma http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
Değişken Farklı oturumlarda, farklı değerler alan bellek alanlarıdır. Değişken isimlendirilmeleri, belli kurallara göre yapılabilir; Programcı tarafından oluşturulur. İngiliz alfabesindeki A-Z veya a-z arası 26 harften 0-9 arası rakamlar kullanılabilir. Sembollerden sadece alt çizgi (_) kullanılabilir. değişken isimleri harfle veya alt çizgiyle başlayabilir, rakamla başlayamaz veya sadece rakamlardan oluşamaz. Koordinat bilgisi için atanan değişken; xkoor, ykoor, zkoor İstasyon Numarası için atanan değişken; istNo http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
Programdaki değeri değişmeyen değişkenlere“sabit” denir. Sabitlerin isimleri değişken atama kurallarına göre yapılır. Sayısal veriler doğrudan doğrudan = operatörü ile atanır. Alfa sayısal veriler ise tek/çift tırnak içinde = operatörü ile atanır. http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
Uygulama: Hesaplanan ve değişkene atanan koordinat sonuçlarının ekrana yazıdırılmasında, sabit ve değişken terimlerinin bir arada kullanımı. xkoor değişkeni B sabiti sonuc 1234.678 X koordinatı metre biriminde X koordinatı metre biriminde 1234.678 http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
Atama Herhangi bir değişkene veya sabite veri yazma, herhangi bir değişkenin sonucunu başka bir değişken sonucunda gösterme uygulamaları için Atama operatörü kullanılır. Uygulama: değişken=sonuç işleminde ATAMA uygulaması nasıldır. değişken, herhangi bir değişken ismidir. sonuç, matematiksel, mantıksal veya alfa sayısal ifade olabilir. = sembolü, atama operatörüdür ve sağdaki sonucun/işlemin sonucunu soldaki değişkene atar. Bu durumda değişkenin eğer varsa bir önceki değeri silinir. http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
İşlemlerin belirli sayıda yaptırılması için sayaç kullanılır. Uygulama: say=say+1 işleminde sayaç kullanımı Bu işlemde sağdaki işlemde say değişkeninin eski değerine 1 eklenmekte; bulunan sonuç yine say değişkenine kendisine yeni değer olarak aktarılmaktadır. sayaç değişkeni=sayaç değişkeni+adım Eski değişken s İşlem s=s+1 Yeni değişken 1 2 3 http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
T=0+2+4+6 ….gibi uzunca işlem yapmak yerine Döngü İşlemleri, belirli ardışık değerlerle gerçekleştirilmek veya tekrarlı yapmak için işlem bloklarını, verilen sayıda gerçekleştiren işlem çevrimlerine “döngü” denir. T=0+2+4+6 ….gibi uzunca işlem yapmak yerine 1 ile 10000 arasında ikişer artan bir döngü açılır ve döngü değişkeni ardışık toplanır. Uygulama: 1 ila 10000 arasındaki çift sayıların toplamını hesaplama http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
Uygulama: 1 ila 10000 arasındaki çift sayıların toplamını bulma Başla s=0 j=2 Eğer j>10000 ise git 8 s=s+j j=j+2 Git 4 Dur Eski s j Yeni s=s+j j=j+2 2 4 6 12 8 20 10 … http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
Ardışık Toplama Uygulama: Toplam =Toplam + Sayı Başla T=0 S=0 Aynı değişken değerinin üzerine yeni değerler eklemek için kullanılır. Uygulama: Toplam =Toplam + Sayı Başla T=0 S=0 Eğer S>4 ise git 9 S=S+1 Sayıyı (A) gir T=T+A Git 4 Ortalama=T/5 Yaz Ortalama Dur Klavyeden girilen 5 sayısının ortalamasını bulan programın algoritması http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
Ardışık Çarpma Uygulama: Çarpma =Çarpma*Sayı Başla N sayısını gir Çarpma işlemlerinde, aynı değer, yeni değerlerle çarpılarak eskisinin üzerine aktarılmaktadır. Uygulama: Çarpma =Çarpma*Sayı Başla N sayısını gir Fak=1 S=0 Eğer S>N-1 ise git 9 S=S+1 Fak=Fak*S Git 5 Yaz Fak Dur Klavyeden girilen N sayısının faktöriyelini hesaplayan programın algoritması http://www.yildiz.edu.tr/~ayten/algortimaveprogramlama_bolum1-2.pdf
www.mfyz.com/dosyalar/Pascal_Dersleri_PDF/bolum01.pdf
www.mfyz.com/dosyalar/Pascal_Dersleri_PDF/bolum01.pdf
Programlamada Mantıksal Yapı 1. Sıralı Yapı
2. Karar Verme Yapısı If...Then... Else
3. Tekrarlı Yapı
Sırada öğrenci varsa 3. adıma yoksa 5. adıma geç Uygulama: Bir dizinin en büyük elamanını bulma algoritması: 50 kişilik bir sınıfta en yüksek notun bulunması örneği Dizideki ilk notu en yüksek not olarak seç ve sırayı ikinci öğrenciye geçir. Sırada öğrenci varsa 3. adıma yoksa 5. adıma geç Sıradaki öğrencinin notu bu ana kadarki en yüksek nottan büyükse bu yeni notu en yüksek not olarak seç Sırayı bir sonraki öğrenciye geçir ve 2. adıma dön En yüksek notu bildir
algoritmanın biçimsel ifadesi notlar: 50 elamanlı tamsayı dizisi max: o ana kadar bulunmuş en yüksek not için değişken i: öğrenci sırasını gösteren sayaç
Algoritmaya ait akış diyagramı
Uygulama: 1'den 100'e kadar olan sayıların toplamlarını ve ortalamalarını veren programın akış diyagramı
Uygulama: 1' den 100'e kadar sayıların karelerini, kareköklerini, küplerini, küpköklerini toplamlarını ve ortalamalarını veren programın akış diyagramı karar mantığı yapısı ile
Uygulama: 1' den 100'e kadar sayıların karelerini, kareköklerini, küplerini, küp köklerini toplamlarını ve ortalamalarını veren programın akış diyagramı döngü yapısı ile
Uygulama: Ax2+Bx+C=0 şeklinde 2 Uygulama: Ax2+Bx+C=0 şeklinde 2. derece denklemin köklerini bulan programa ait akış diyagramını çiziniz.
Uygulama: 10 tane sayının faktöriyelini hesaplayan programın akış diyagramını çiziniz.
Uygulama: Bir önceki Uygulamayı tekrarlı yapı olarak tanımladığımız döngü yapısı ile çözdüğümüzde.
Uygulama: Elimizde bulunan A,B ve C gibi 3 adet sayıdan en büyüğünü ve en küçüğünü bulan akış diyagramını çiziniz.
Uygulama: Elimizde bilinmeyen sayıda koni bulunmaktadır ve koniye ait yarıçap R ve yükseklik (H) değerleri girilmek suretiyle V=R2.H/3 formülü ile hacim hesabı yapılacaktır. Koniye ait yarıçap değeri 0 girildiğinde programın çalışması duracaktır. Programda her girilen veri için hacim değeri rapor edilecek, programın çalışması bittiğinde toplam kaç koni için hacim hesabı yapıldığı da belirtilecektir.
Uygulama: Klavyeden girilen bir sayının pozitif, negatif veya sıfıra eşit olma durumuna göre ekrana sırasıyla “Sayı Pozitiftir”, “Sayı Negatiftir” veya “Sayı Sıfıra Eşittir” 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
BAŞLA OKU S S > 0 S = 0 ? S < 0 YAZ “Pozitif” YAZ “Negatif” S = 0 YAZ “Sıfıra eşit” DUR
UYGULAMA 11: 10 elemanlı bir sayı dizisinde negatif ve pozitif elemanların ayrı ayrı ortalamasını bulan akış şemasın oluşturunuz. A1. Başla, A2. I=1, TN=0, TP=0, N=0, P=0, ORTP=0, ORTN=0 al, A3. A(I)’ yı gir, A4. Eğer A(I)=0 ise A7. adıma git, A5. Eğer A(I)<0 ise TN=TN+A(I), N=N+1 al ve A7. adıma git, A6. TP=TP+A(I), P=P+1 al A7. Eğer I=0 ise A9. adıma git, A8. I=I+1 al ve A3. adıma geri dön, A9. Eğer P=0 ise A11. adıma git, A10. ORTP=TP/P A11. Eğer N=0 ise A13. adıma git, A12. ORTN=TN/N al, A13. ORTP ve ORTN’ yi yaz, Başla A14. Dur.
Uygulama: Girilen bir tam sayının tam kare olup olmadığını araştıran akış şemasını oluşturunuz. A1. Başla, A2. A sayısını gir, A3. B=A^(1/2) al, A4. C=TAM(B) al, A5. D=C^2 al, A6. Eğer A=D ise A9. adıma git, A7. “tam kare değil” yaz, A8. A10. adıma git, A9. “tam kare”yaz, A10. Dur.
Uygulama: 100 kişilik bir sınıfta 18-22 arası her yaş grubunda kaç öğrencinin bulunduğunu belirleyip yazan programın akış çizelgesi şöyledir OSA:Öğrenci sayısını, I18:18 yaşında olan öğrencilerin sayısını I19:19 yaşında olan öğrencilerin sayısını I20:20 yaşında olan öğrencilerin sayısını I21:21 yaşında olan öğrencilerin sayısını I22:22 yaşında olan öğrencilerin sayısını IYOS:İşlem yapılan öğrenci sayılarını göstersin.
Adım 1-Başla Adım 2-I18=0 I19=0 I20=0 I21=0 I22=0 IYOS=0 Adım 3-OSA oku Adım 4-OSA=18 ise I18'i arttır, Adım 9'a git Adım 5-OSA=19 ise I19'u arttır, Adım 9'a git Adım 6-OSA=20 ise I20'yi arttır,Adım 9'a git Adım 7-OSA=21 ise I21'i arttır,ADım 9'a git Adım 8-OSA=22 ise I22'Yİ arttır,Adım 9'a git Adım 9-IYOS<100 ise Adım 3'e git Adım 10-I18,I19,I20,I21,I22,yaz Adım 11-DUR
INO:öğrencinin numarasını, AD:öğrencinin ismini, Uygulama: Klavyeden girilen,bir öğrencinin numarasını,ismini ve bilgisayar programlama dersinin 3 vize sınavından aldığı notları okuyan,bu notların aritmetik ortalamasını bulan,eğer ortalaması 50'ye eşit veya 50'den büyükse yazıcıya numara,isim,notlar ve vize notlarının ortalamasını,küçükse numara,isim ve "tekrar" mesajı yazan programın algoritma ve akış şeması şu şekildedir. INO:öğrencinin numarasını, AD:öğrencinin ismini, VIZE1:1.vize sınavını, VIZE2:2.vize sınavını, VIZE3:3.vize sınavını, VIZORT:üç vize sınavının aritmetik ortalamasını, VIZTO:üç vizenin toplamını göstersin. Adım 1-Başla Adım 2-INO,AD,VIZE1,VIZE2,VIZE3,oku Adım 3-VIZTO=(VIZE1+VIZE2+VIZE3) ve VIZORT=VIZTO/3 bul. Adım 4-Eğer VIZORT>=50 ise Adım 6'ya git. Adım 5-INO,AD ve "TEKRAR" yaz ve Adım 7'ye git. Adım 6-INO,AD,VIZE1,VIZE2,VIZE3,VIZORT yaz Adım 7-DUR
Uygulama: 300 elemanlı bir veri grubunda bulunan pozitif,sıfır ve negatif değerlerin sayısını bulup yazan programın algoritması ve akış şeması şöyledir: SS:Okunan sayı adedi PSS:pozitif sayı adedi NSS:Negatif sayı adedi SSS:Sıfır sayı adedi Adım 1-Başla Adım 2-SS=PSS=NSS=SSS=0 Adım 3-Sayı oku Adım 4-SS=SS+1 Adım 5-Eğer SS>300 ise dur Adım 6-Eğer sayı<0 ise adım 9'a git Adım 7-Eğer sayı=0 ise adım 10'a git Adım 8-PSS=PSS+1 hesapla,adım 3'e git Adım 9-NSS=NSS+1 hesapla,adım 3'e git Adım 10-SSS=SSS+1 hesapla,adım 3'e git
Başla Say=0 Yaz “Ecren Kayıkçı” say=say+1 sayac<10 mi? Git 3 Dur Uygulama: İsim ve soyadınızı ekrana 10 defa yazdıran bir programın algoritma ve iş akış diyagramı hazırlayınız. Başla Say=0 Yaz “Ecren Kayıkçı” say=say+1 sayac<10 mi? Git 3 Dur
Uygulama: 1-100 arasındaki çift sayıların toplamını bulan programın algoritmasını ve yazın? BAŞLA Sayac=2, Toplam=0 Sayac=Sayac+2 Sayac< =100 Toplam=Toplam+Sayac Yaz “1-100 arası çift sayıların toplamı=” ,Toplam BİTİR 1. BAŞLA 2. Sayac=2, Toplam=0 3. Toplam=Toplam+Sayac 4. Sayac=Sayac+2 5. EĞER Sayac<=100 İSE GİT 3 6. YAZ “1-100 Arası Çift Sayıların Toplamı=”, Toplam 7. BİTİR
Uygulama: 1-100 arasındaki tek sayıların toplamını bulan programın algoritmasını ve yazın? BAŞLA Sayac=1, Toplam=0 Sayac=Sayac+2 Sayac< =100 Toplam=Toplam+Sayac Yaz “1-100 arası tek sayıların toplamı=” ,Toplam BİTİR 1. BAŞLA 2. Sayac=1, Toplam=0 3. Toplam=Toplam+Sayac 4. Sayac=Sayac+2 5. EĞER Sayac<=100 İSE GİT 3 6. YAZ “1-100 Arası Çift Sayıların Toplamı=”, Toplam 7. BİTİR