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.
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. Hammadde Makine Ürün Veri Program Sonuç
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 Dili Komut 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. Sembolik Dil ile yazılmış Kod KAYNAK KOD Derleyici (Pascal, C, Basic, ..) 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
matematiksel ifadelerin bilgisayar kodları?
Ö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 olarak Bilgisayar Dilinde Doğru 1 True (1) Yanlış 0 False (0)
Mantıksal İşlemler A B A VE B VE (AND) VEYA (OR) DEGiL(NOT) A B 1 VE (AND) VEYA (OR) DEGiL(NOT) A B A VEYA B 1 A DEGiL A 1
Örnek 1nci koşul 2nci koşul 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 > 65 VE (İngilizce > 65 VEYA Almanca > 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
AKIŞ DİYAGRAMLARI 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 c=(a^2+b^2) / (1/2)
AKIŞ DİYAGRAMLARI / DÖNGÜ 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 I=1,20,3 J=30,4,-2 K=1,80
AKIŞ DİYAGRAMLARI KARŞILAŞTIRMA BİLGİ, VERİ YAZMA AKIŞ YÖNÜ
i=1,n,1 İşlem A i=1,n,1 İşlem B j=1,n,1 DIŞ DÖNGÜ İÇ DÖNGÜ
Soru 1 den, girilen N değerine kadar olan sayıların toplamını bulan algoritmanın akış diyagramını oluşturunuz.
N 5 olarak girilirse
Soru Girilen N değerinin FAKTÖRİYELİNİ hesaplayan algoritmanın akış diyagramını oluşturunuz.
N = 5 olarak girilirse F=1 F=F*I F I Eski F Yeni F 1 1*1=1 2 1*2=2 3 2*3=6 4 6 6*4=24 5 24 24*5=120
Bu akış diyagramı ne yapmaktadır?
Peki bu?
Ders Geçme/Kalma Durumu Aşağıdaki şartlara göre problemin akış diyagramını çiziniz. Ortalama = vize . %40 + final . %60 Finalden 60 ve üzerini aldı ise Ortalamadan da 60 ve üzerini aldı ise GEÇER Diğer durumlarda kalır.
Örnek Girilen N sayısına göre T1, 1 den N’e kadar 1er artan sayılar toplamı T2, 1 den N’e kadar 2şer artan sayılar toplamı T3, 1 den N’e kadar 3er artan sayılar toplamı T1,T2,T3 ü bulup yazdıran akış diyagramını çiziniz.
If (Karar) If ŞART Then ……………………………………………… Else Enf If
For (Döngü) For i = başlangıç değeri to Bitiş değeri Step Artım değeri ……………………………………………… Next
Basic Kodu Input "N sayısını giriniz", N T1=0; T2=0; T3=0; FOR I=1 TO N T1=T1+I NEXT I FOR I=1 TO N STEP 2 T2=T2+I FOR I=1 TO N STEP 3 T3=T3+I PRINT "1 DEN N'E KADAR SAYI TOPLAMI";T1 PRINT "1 DEN N'E KADAR 2'ER ARTAN SAYILAR TOPLAMI";T2 PRINT "1 DEN N'E KADAR 3'ER ARTAN SAYILAR TOPLAMI";T3 END
Klavyeden toplam eleman sayısı (n) ve alt eleman sayısı (r) girilen bir kümenin belirtilen kombinasyonlarının sayısını hesaplayan bir akış şeması ve programını yazınız.
Program Kodu input "n'i giriniz",n input "r'i giriniz",r f1=1; f2=1; For i=1 to n f1=f1*i If i<=r then f2=f2*i End If If i<=n-r then f3=f3*i Next i sonuc=f1/(f2*f3) print "Cevap :", sonuc end If bloğu End If ile biter for bloğu Next ile biter If bloğu End If ile biter
A sayısı B sayısının katı mı ? Input "a nedir?",a Input "b nedir?",b If a MOD b = 0 Then Print a,"sayısı",b,"sayısına tam bölünür" Else Print a,"sayısı",b,"sayısına tam bölünemez" End If
Örnek:Tam bölenler Klavyeden girilen a sayısının tam bölenlerini veren akış diyagramını çizin, programı yazın.
Ödev 1 ile 10000 arasındaki sayılarda, kareler toplamı, küpler farkına eşit olan ardışık iki sayıyı yazdırın. 1 ile 10000 arasındaki sayılardan, karesi yarısına eşit olan ve ardışık olması önemli olmayan sayıları bulun.
İkinci dereceden denklem ax2+bx+c=0 denkleminin katsayıları (a,b,c) kullanıcı tarafından girilecektir. Denklemin kökleri varsa ayrı ayrı köklerini ekrana basan, Kökü yoksa “kökü yoktur” mesajı veren akış diyagramı ve programı yapınız.
INPUT "A Katsayı gir",A INPUT "B Katsayı gir",B INPUT "C Katsayı gir",C D=B^2-4*A*C If D<0 Then Print "Kök Sanal!" End If If D=0 Then X1=-1*B/(2*A) X2=X1 Print "Çift Katlı Kök",X1,X2 If D>0 Then X1=(-1*B+D^0.5)/(2*A) X2=(-1*B-D^0.5)/(2*A) Print "Kök 1",X1 Print "Kök 2",X2
Kenarları bilinen üçgenin alanı
Üs Alma Klavyeden girilen bir tamsayının, girilen derecedeki üssünü nasıl alırız? xy=x.x. ………… .x <- y adet ->
Klavyeden girilen bir noktanın P(X1,Y1) ax+by+c=0 doğrusu üzerinde olup olmadığını bulan, Doğru üzerinde değilse doğruya uzaklığını bulan akış diyagramını ve programı yazınız. INPUT a,b,c,x1,y1 denklem= a*x1+b*y1+c If denklem<>0 Then uz=denklem/(a^2+b^2)^0.5 Print “uzaklık:”,uz Else Print “Nokta doğru üzerinde” End If
Örnek-2 Bir komisyoncu sattığı mallardan fiyatı 50 TL’ye kadar olanlardan %3, daha fazla olanlardan ise %2 komisyon almaktadır. Klavyeden ürün fiyatı girilen bir malın komisyonunu bularak ekranda gösteren programın akış diyagramını çiziniz, Program kodunu yazınız.
ORNEK-3 İş başvurusu Bir işveren fabrikasında istihdam edilmek üzere 3 ayrı birime personel alacaktır. Muhasebe bölümünde görevlendirilecek personelin en az bir yabancı dil, halkla ilişkiler biriminde görev alacak personelin birisi ingilizce olmak üzere en az 2 dil, Dış ticaret departmanına alınacak personelin ise şart olmaksızın en az 3 dil bilmesi gerekmektedir. İş başvurusuna bu 3 bölümden 200 kişi başvurmuştur. Başvuruda dil ile ilgili olarak ingilizce biliyor musunuz? , toplam kaç dil biliyorsunuz? soruları sorulmuştur. İnsan kaynaklarında görevli bir personel başvuruda sordukları bu soruların cevaplarını bilgisayar programına girip kimlerin işe alınamadığını, işe alınanların da hangi departmana alındığını bulacaktır. İş alımında kadro sınırlaması göz önüne alınmadığı varsayılacak, işe alınacak kişilerin görevlendirileceği departman ise bildiği dil sayılarına göre belirlenecektir. İşe alma algoritmasını ve programını yazınız.
Operatör Seçimi Kemal bey cep telefonuna hat almak için operatöre başvurmuştur. Operatörde, Ayda 300 dakikaya kadar, dakikası 11 kuruşa bundan sonraki dakikalar için 19 kuruşa konuşturan, sms göndermenin 15kuruş olduğu, GPRS ücretinde KiloByte başına 1 kuruş ücret talep edilen “A” kampanyası, 500 dakikaya kadar dakikası 9 kuruşa, süre aşımında dakikası 11 kuruşa konuşturan, Sms ücreti 8 kuruş olan ve KB başı 1,5 kuruş talep edilen GPRS hizmeti içeren B kampanyası, 100 dakikası 15 kuruş, limit aşımında dakikası 25 kuruş, GPRS için 1,80 kuruş talep eden ve aynı zamanda 120 sms ücretsiz olmak şartıyla her SMS için 10 kuruşa fiyatlandıran C kampanyası vardır. Kemal bey yapacağınız programa/algoritmaya aylık konuşma süresini, attığı mesaj sayısını ve ortalama aylık olarak gerçekleştirdiği internet trafiğini MB olarak girecektir(1MB=1024KB). Bu girişlere göre en uygun paketi öneren algoritmayı kurup akış diyagramını çizdikten sonra programını yazınız.
Örnek Bir diyet uzmanı insanlara , geliştirmiş olduğu değişik üç tür diyeti uygulamayı düşünmektedir. 1.tür diyet 60 kilo ve altındaki insanlara uygulanacak kilo aldırıcı program. 2.tür diyet 61 ile 80 kilo arasındaki insanlara uygulanacak kilo aldırmayan program. 3.tür diyet 81 ile 150 kilo arasındaki insanlara uygulanacak kilo zayıflatıcı programdır Buna göre 10 kişi arasında yapılan bir anketle ,bu üç programa kaçar kişinin düştüğünü ve bu gruplardaki ortalama kiloları bulan algoritmanın akış diyagramını çizip, programını yazınız.