800 likes | 1.09k Views
Bilgisayar Mühendisliği ne Giriş. Algoritmalar ve Programlama. Giriş. Bilgisayar verilen giriş verilerini belirtilen yöntemlerle işleyerek istenilen sonuçları üreten kompleks bir elektronik sistemdir.
E N D
Bilgisayar Mühendisliğine Giriş Algoritmalar ve Programlama
Giriş • Bilgisayar verilen giriş verilerini belirtilen yöntemlerle işleyerek istenilen sonuçları üreten kompleks bir elektronik sistemdir. • İşlenecek veriler ve kullanılacak çözüm yöntemleri bilgisayara insan tarafından program ile bildirilir. Bu nedenle bilgisayarın problemi çözmesi için programa ihtiyacı vardır. • İnsan ile bilgisayar arasındaki iletişim aracı olan program, giriş değerlerini kullanarak istenilen çıkış değerlerinin elde edilebilmesi için bilgisayara iletilen komutlar dizisidir.
Hammadde Makine Ürün Veri Program Sonuç Giriş / Çıkış (Input / Output) • Aynı benzer durum fabrikalarda da vardır. İşletmede üretimin olabilmesi için hammadde(giriş değer) ve makinelere ihtiyaç vardır. • Bilgisayarda olduğu gibi işletmede de işin merkezinde insan vardır. Her iki türde de yapılacak işler makineye / bilgisayara insan tarafından bildirilir.
Bilgisayar insanın programlarla verdiği komutları yerine getirmektedir. • Kullanıcı bilgisayara ne tarif etmişse onun karşılığını alır. Yani program, bilgisayara sonuçları üretirken problem çözümünde hangi verileri nasıl işleyeceğini ve ne tür sonuçlar üreteceğini bildirir. • Program ile bunun bilgisayara tarif edilebilmesi için kişinin temelde o problemin nasıl çözüleceğini tam olarak bilmesi gerekmektedir.
Bir problemin birden fazla çözümü olabilir. • Programcı (programı tasarlayan kişi) en kısa ve etkili yöntemi yeteneği ölçüsünde bulmalıdır. • Eğer yazılan programdaki çözüm yolu yanlış ise bilgisayarın bulacağı sonuçlar da yanlış olur. Dolayısıyle program yazılmadan önce problemin iyice irdelenmesi, uygun çözüm yolunun belirlenip bilgisayara doğru şekilde tarif edilmesi gerekir.
Problem çok uzun ve karmaşık bir problem ise mümkün olduğunca parçalara ayrılabilir. Her bir bölüm(*) ayrı ayrı yazılıp çalıştırılır ve herhangi bir hata yoksa bunlar birleştirilir. • (*) Bu her bir alt bölüme programlama dillerinde subroutine/function/procedure gibi isimler verilebilmektedir.
Programlama Dilleri • Programlama dili, bilgisayar ile programcı arasındaki iletişimi sağlayan bir araç olup programların yazımında kullanılan bir çeşit araçtır(programdır). • Yazdır komutuna örnekler Programlama DiliKomut Basic Print C printf Pascal writeln
Programlama Dilleri Sınıflaması • Programlama dillerini grublara ayırsak. • Makine dili (Makine kodu): Bilgisayarın hiçbir değişikliğe gerek duymaksızın algılayabilip çalıştırabildiği komutların yazıldığı programlama dilidir. Mesela : assembler • Sembolik diller: Makine dilinden daha gelişmiş, program yazmanın makine diline göre daha kolay olduğu programlama dilleridir. Mesela : C, C++, Pascal...
Sembolik dillerde yazılmış bir kodun bilgisayar tarafından algılanabilmesi, çalıştırılabilmesi için makine diline çevrilmesi gerekir. • Bu dönüşüm, derleyici olarak adlandırılan yazılımlar(programlar) ile yapılır. Derleyici (Pascal, C, Basic, ..) Sembolik Dil ile yazılmış Kod KAYNAK KOD Makine kodu AMAÇ PROGRAM
Bilgisayarın yaptığı işlemler • Aritmetiksel işlemler toplama, çıkarma, .. • Karşılaştırma işlemleri (KARAR) iki nesnenin kıyaslanması • Mantıksal işlemler (LOGİC) ve, veya , değil
Aritmetiksel işlemler • Toplama a+b • Çıkarma a-b • Çarpma a*b • Bölme a/b • Üs alma a^b
İşlem önceliği Matematiksel işlemler içeren kümenizin içindeki matematiksel işaretlerin bir işlem önceliği vardır. • İşlem Önceliği Sırası 1. Parantezler ( ) 2. Üs alma a^b 3. Çarpma ve bölme a*b veya a/b 4. Toplama ve çıkarma a+b veya a-b • Aynı önceliğe sahip işlemler yan yana bulunuyorsa işlem önceliği genelde soldan sağa doğrudur. X=2*3/6+2
Örnek • a=4, b=6, c=8, d=10 değerleri için bilgisayar dilinde kodlanmış notasyonların sonuçlarını bulunuz. • a*b/(c-b)+b (?) • c*d/a*d+b+c*d/a (?) • c*d/a*d+(b+c)*d/a (?)
Örnek-2 • a=1, b=2, c=3, d=4, e=-2 • a+d/b+d^2+2*a*b*c/d+e ? • (a+b)/c+d^2+2*a*b*c/(d+e) ? • a+b/(c+d)^2+2*a*b*c/d+e ? • (a+b)/(c+d)^2+2*a*b*c/(d+e) ?
Karşılaştırma İşlemleri • Eşittir = • Eşit değildir <> • Büyüktür > • Küçüktür < • Büyük eşittir >= • Küçük eşittir <=
Örnek Algoritma • Başla • A sayısını gir • B sayısını gir • Eğer A>B ise Yaz “A sayısı, B sayısından büyüktür” • Eğer A<B ise Yaz “A sayısı, B sayısından küçüktür” • Eğer A=B ise Yaz “A sayısı, B sayısına eşittir” • Dur Girilen A sayısı Girilen B sayısı Ekrana yazılan sonuç 3 7 ?
Mantıksal İşlemler • Programlarda, birden fazla karşılaştırma ifadesi bir anda kullanılmak istenebilir. Bu gibi durumlarda mantıksal ifadeler kullanılması zorunludur. MANTIKSAL KOMUTLAR MATEMATİKSEL İŞLEMLER SEMBOL • VE AND . • VEYA OR + • DEĞİL NOT ′
Mantıksal İşlem Sonuçları SonuçRakam olarakBilgisayar Dilinde Doğru 1 True (1) Yanlış 0 False (0)
Örnek Bir işyerinde çalışan işçiler arasından yalnızca yaşı 23’ün üzerinde olup maaş olarak asgari ücret alanların isimleri istenebilir. Burada iki koşulun da doğru olması gerekmektedir.(Asgari ücret 527) 1nci koşul 2nci koşul Eğer Yaş>23 ve Maaş=Asgariücret ise Yaz İsim
Örnek Algoritma • Bir sınıfta Bilgisayar dersinden 65 in üzerinde not almış olup Seçmeli Yabancı Dil (İngilizce) veya Seçmeli Yabancı Dil (Almanca) derslerinin herhangi birinden 65 in üzerinde not alanların isimleri istenmektedir. • Eğer Bilgisayar notu > 65VE (İngilizce > 65VEYAAlmanca > 65) ise Yaz “Öğrencinin ismini”
Algoritma Hazırlama • İnsan günlük yaşamında herhangi bir işi gerçekleştirmeden önce genellikle plan yapar. Plan, yapılacak olan işin adımlarını belirtir ve hedefe ulaşmada hem yol gösterir hem de büyük kolaylıklar sağlar. • Bilgisayardaki bir işlemin gerçekleştirilmesinde izlenecek adımlar dizisine de algoritma denilmektedir. • O zaman algoritma, işlemleri yaptırabilmek için bilgisayara tarif edilen işlem basamaklarıdır.
Bilgisayar bir problemi çözerken “hangi ve neredeki giriş değerlerini alacak, bunları işlerken ne tür yöntemleri kullanacak, ne tür sonuçlar üretecek ve bu sonuçları nerede gösterecek veya saklayacak” gibi adımları gözönüne alır. • Bu adımların hepsi, hazırlanan algoritmanın herhangi bir programlama dilinin kurallarına uygun olarak yazılmış komutlarıyla bilgisayara iletilir. • Algoritmanın özel geometrik şekillerle çizilmiş haline akış diyagramı denilmektedir.
Tanımlayıcı • Program yazan kişi tarafından düşünülüp oluşturulan ve programdaki değişkenleri, sabitleri, kayıt alanlarını, alt programları, vs.. adlandırmak için kullanılan kelimelere tanımlayıcı denir. • Bu kelimeler isimlendirilirken kurallara dikkat edilmelidir: • İngiliz alfabesindeki A-Z veya a-z arası 26 harf kullanılabilir. • 0-9 rakamları kullanılabilir. • Sembollerden alt çizgi kullanılabilir. ( _ ) • Tanımlayıcı ifadeleri harf veyha altçizgi ile başlayabilir ama rakamla başlamaz. • İsimler oluşturulurken boşluk kullanılmamalıdır. maaş katsayısı değil maas_katsayisi
Aktarma Herhangi bir ifadenin sonucunu başka bir değişkende göstermedir. degisken = ifade ifade kısmında matematiksel, mantıksal veya harfsel (alfasayısal) ifade olabilir. = sembolü atama operatörüdür. Bu operatör, sağda hesaplanan ifadenin değerini degisken içine (sola) iletir.
Değişken değerinin artırılıp azaltılması c’nin ilk değeri 10 olsun. c=c+1 ifadesi çalıştığında şöyle bir işlem yapılır: • = işaretinin sağındaki c’nin değeri alınır, 1 ile toplanır, sonuç ise soldaki c’ye atanır. Bu şekilde c’nin son değeri 11 olmuş olur. • Demekki c bir değişken ise bu değişkenin değerini bir artırmak için c=c+1 kullanılabilir. • Aynı mantık ile değişken değerini iki azaltmak için de c=c-2 kullanılabilir.
Örnek • Başla • t=0 • Bir sayı gir (a = 5) • t=t+a işlemini yap • Başka bir sayı gir (b = 4) • t=t+b işlemini yap • Başka bir sayı gir (c = 6) • t=t+c işlemini yap • Yaz t • Dur
Sayaç Programda bazı işlemlerin belirli sayıda yapılması isteniyorsa sayaç kullanılır. Örneğin “girilen sayılardan kaç tanesi çift” sorusunun cevabı için sayaç kullanılmalıdır. Sayaç ta bir tip değişkendir. Programda girilen sayıya bakılır, eğer çift ise sayac değişkeninin değeri bir artırılır. Bu şekilde sayac değişkeninin son değeri çift sayıların adedi olur.
Aşağıdaki algoritma nasıl bir çıktı verir? • Başla • sayac=0 • Eğer sayac>4 ise Git 7 • sayac=sayac+1 • Yaz sayac • Git 3 • Dur
Aşağıdaki algoritma ne iş yapmaktadır? • Başla • sayac=0 • Bir sayı gir. (sayi) • Eğer sayi=0 ise Git 7 • Eğer mod(sayi,2)=0 ise sayac=sayac+1 • Git 3 • Yaz sayac • Dur
Döngü • Bazı işlemler belli ardışık değerlerle veya belli sayıda gerçekleştirilmektedir. • Programda belirli komut bütünlerini belirli sayıda yaptırabilmek için döngüler kullanılır.
Döngü Örneği • Örneğin 1 ile 100 arasındaki sayıların toplamını hesaplayan programda toplam=1+3+5+..+99 yapmak yerine 1 ile 100 arasında ikişer artan döngü kurup toplamak daha doğru olacaktır. • Başla • toplam=0 • sayac=1 • Eğer sayac>100 ise git 8 • Eğer sayac mod 2 = 1 toplam=toplam+sayac • sayac=sayac+1 • Git 3 • Yaz toplam • Dur
1 .. 100 arası 5 in katı olan sayıların adedi? • başla • sayac=0 • sayi=1 • Eğer sayi > 100 ise git 8 • Eğer sayi mod 5 = 0 ise sayac=sayac+1 • sayi=sayi+1 • Git 4 • Yaz sayac • Dur
x ile y arasındaki z nin katı olan sayıların adedini ve toplamlarını bulan algoritma • başla • sayac=0 • toplam=0 • ilk sayıyı gir (x) • son sayıyı gir (y) • kacın katı oldugunu gir (z) • sayi=x • Eğer sayi > y ise git 13 • Eğer sayi mod z = 0 ise sayac=sayac+1 • Eğer sayi mod z = 0 ise toplam=toplam+sayi • sayi=sayi+1 • Git 8 • Yaz sayac,toplam • Dur
Klavyeden 0 girene kadar girilen sayıları ekrana yazan algoritma 1.Başla 2.Bir sayı gir. (sayi) 3.Eğer sayi=0 ise Git 6 4.Yaz sayi 5.Git 2 6.Dur
Sayıyı parçalara ayırmak (Cevabı) • basla • us=4 • eğer us<1 git 10 • bolum=sayi/10^us • kalan=sayi mod (10^us) • sayi=sayi-bolum*(10^us) • yaz bolum • us=us-1 • git 3 • yaz kalan • son
Onluk sistemi 2lik sisteme çevir • Kullanıcının girdiği onluk sistemde olan bir sayıyı ikilik sisteme çevirip 1 ve 0 bitlerini ekrana basan algoritmayı yazınız.
Çözüm 1.basla 2.sayiyi gir 3.bolum=sayi/2 4.kalan=sayi mod 2 5.Yaz kalan 6.sayi = bolum 7.Eğer bolum>=2 ise Git 3 8.Yaz bolum 9.Yaz "tersten yazdık.." 10.Son
2lik sistemin Onluk sisteme çevrimi • İkilik sistemdeki sayı kaç basamaklı? (n) • Basamakları sıra ile giriniz. • İkilik sistemdeki sayı onluk sisteme çevrilir.
Çözüm 1.basla 2.basamak sayısını gir (n) 3.toplam=0 4.bir bit gir (digit) 5.toplam=toplam+digit*2^(n-1) 6.n=n-1 7.Eğer n>=1 ise Git 4 8.Yaz "Sonuç şudur:",toplam 9.Son
Örnek • Bir çok sayı girilecektir. • Bu sayılardan en küçüğünü ekrana basan algoritma?
Çözüm 1.basla 2.kac sayi karşilastırılacak(n) 3.sayi gir (x) 4.en_kucuk_sayi = x 5.sayi gir (x) 6.Eğer en_kucuk_sayi > x ise en_kucuk_sayi = x 7.n=n-1 8.Eğer n>=2 ise Git 5 9.YAz en_kucuk_sayi 10.Son
Klavyeden girilen rakamı Yazıya döken Algoritma • 0 ile 9 arasında bir rakam girilecektir. Bu rakamı yazı ile ekrana basan algoritmayı tasarlayınız.
ORNEK-1 Yıldızlar * ** *** **** ***** ****** ******* Bu çıktıyı veren algoritmayı tasarlayınız.
Rakamlar 123456 23456 3456 456 56 6 Bu çıktıyı veren algoritmayı tasarlayınız.
Soru 6 65 654 6543 65432 654321
Başla/Dur Klavyeden giriş (N=10) Program çalışması esnasında yapılacak işleri ifade eder. Formüller aynen yazılır. Örnek: c= için AKIŞ DİYAGRAMLARI BAŞLA DUR c=(a^2+b^2) / (1/2)
Döngü: Bir çok programda belirli işlem blokları ardışık değerlerle veya bazı koşullar sağlanana kadar devam eder. Döngü şemasının için değişken adı, başlangıç değeri, bitiş değeri ve adım miktarı yazılır. Kontrol değişkeni = Başlangıç değeri , Bitiş değeri, Adım AKIŞ DİYAGRAMLARI / DÖNGÜ I=1,20,3 J=30,4,-2 K=1,80
KARŞILAŞTIRMA BİLGİ, VERİ YAZMA AKIŞ YÖNÜ AKIŞ DİYAGRAMLARI