Upload
others
View
25
Download
0
Embed Size (px)
Citation preview
Programlama Temelleri« T E M E L K AV R A M L A R »
[email protected]ük Üniversitesi T.O.B.B. Teknik Bilimler Meslek YüksekokuluDemir Çelik Kampüsü 78050 Karabük/TÜRKİYE
KBÜKARABÜK ÜNİVERSİTESİ
Öğr. Gör. Dr. Abdullah ELEN
https://www.elenium.net
Dosya No: TBP101/01Revizyon: R-002
Yayın Tarihi: 03.10.2018
TBP101
İçindekiler
2
➢Bilgisayarın Tanımı ve Yapısı
➢Bilgisayar Programcılığı Kavramları
➢Programlamada Temel İşlemler
➢Binary (İkili) Sayı Sistemi
➢Algoritma Kavramı
Bilgisayarın Tanımı ve YapısıD e f i n i t i o n a n d S t r u c t u r e o f T h e C o m p u t e r
3
Æ
✓Belirli bir formatta veri girişi yapılabilen ve bir bilgi ya da sinyalşeklinde sonuç üretmek için önceden tanımlanmış programlar vasıtasıyla işlem yapabilen elektronik bir cihazdır.
✓Bir bilgisayarın çalışabilmesi için üç temel birime ihtiyacı vardır;
1. Merkezi İşlem Birimi (MİB)
2. Bellek Birimi
3. Giriş/Çıkış Birimi
4
Bilgisayar Nedir?
Giriş Birimi(Input)
Çıkış Birimi(Output)
Merkezi İşlem Birimi (MİB)
Central Process Unit(CPU)
Bellek (Memory) Birimi
Æ
1. Merkezi İşlem Birimi (MİB, CPU)✓Bilgisayardaki tüm karar verme ve kontrol işlemlerini gerçekleştirir.
✓Matematiksel ve mantıksal işlemleri yapar.
✓Hangi birimlerden giriş yapılacak, hangi sırada çıkış yapılacak, işlem öncelikleri vb. süreçleri yönetir.
2. Bellek Birimi✓Bilgisayarların çalıştıkları süre boyunca giriş birimlerinden aldıkları ya da
hesaplama işlemi sonucunda elde edilen verilerin saklandığı birimdir.
3. Giriş/Çıkış Birimi✓Giriş Birimi: Kullanıcıdan ya da diğer aygıtlardan (klavye, fare, mikrofon
vb.) bilgisayara veri aktarmak için kullanılan birimlerdir.
✓Çıkış Birimi: Bilgisayardaki mevcut verileri kullanıcıyı bilgilendirmek veya diğer aygıtlara (monitör, yazıcı, hoparlör vb.) göndermek amacıyla kullanılan birimlerdir.
5
Bilgisayar Nedir?
Æ
6
✓Bilgisayar sistemleri, donanım ve yazılımolmak üzere iki kısımdan meydana gelir.
✓Bilgisayar üzerindeki fiziksel parçalara donanım denir.
✓Yapılması gereken işlemler içindonanımlara gerekli komutları veren programlar topluluğunayazılım denir.
Bilgisayar Nedir?
Bilgisayar Programcılığı KavramlarıC o m p u t e r P r o g r a m m i n g C o n c e p t s
7
ÆProgramlama Kavramları✓Programlama (programming), bir bilgisayara nasıl davranması gerektiğini
anlayabileceği dilden ifade etme eylemidir.
✓Başka bir deyişle, gerçek dünyadaki problemlerin çözümüne yönelik geliştirilen algoritmaların bilgisayar üzerinde yapılan kodlama işlemleridir.
✓Programı yazan kişiye programcı (programmer) denir.
✓Programcıları genel olarak üç gruba ayırmak mümkündür:1. Mimar (Architect): Programların yazılması için gerekli teknolojileri belirleyen kişidir.
2. Geliştirici (Developer): Programı geliştiren/yazan/kodlayan kişidir.
3. Analist (Analyst): Programın geliştirme aşamasında oluşan hatanın kaynaklarını bulan ve geliştiricilere raporlayan kişidir.
8
ÆProgramlama KavramlarıKaynak Kodu (Source Code)
Bir programlama diliyle yazılmış metinlere kaynak kodu denir. Kaynak kod dosyalarının uzantıları kullanılan programlama diline göre değişir. Örneğin; Java: .java, C++: .cp, Visual Basic: .vb, C#: .cs gibi..
9
✓ Bir kaynak kod dosyasını Notepad veya Wordpad gibi herhangi bir metin düzenleyici programla açabiliriz.
✓ Kaynak kodlar, bilgisayarlar üzerinde direkt olarak çalıştırılamazlar.
ÆProgramlama KavramlarıKod Editörü/Düzenleyicisi (Code Editor)
Herhangi bir programlama dilinde kod yazmak için Notepad bile kullanılabilir. Ancak geliştirdiğimiz kodla ilgili ipuçları vermesi, hatalarımızı bularak bize göstermesi, hatta bazı hatalarımızı otomatik olarak düzeltmesi nedeniyle, ilgili programlama dili için yazılmış kod düzenleyicileri kullanırız. Örneğin; Visual Studio 2017
10
ÆProgramlama KavramlarıDerleyici (Compiler)
▪ Üst düzey bir programlama diliyle yazılmış olan kaynak kodunu daha alt düzeydeki bir dile (örn: makine dili) dönüştüren programlara derleyici denir.
▪ Gerçekleştirilen bu işleme de derleme (Compile) denilmektedir.
▪ Derleme işlemi sonunda, varsa tüm hatalar programcıya bildirilir.
11
Yorumlayıcı (Interpreter)
▪ Kaynak kodu satır satır veya bloklar halinde çalıştıran ve hedef dile çeviren programlara yorumlayıcı adı verilir.
▪ Yorumlayıcının amacı; programcının yazdığı programı satır satırişleterek, çalışmasını izlemesini ve varsa hatalarını bularak düzeltmesini sağlamaktır. Hata varsa tüm kod derlenmez!
ÆMakine Diline Dönüşüm
12
Programlama dilleri ile yazılan tüm kodlar, çevirici bir program aracılığı ile makine diline çevrilir. Böylece bilgisayar tarafından işlenebilecek hale dönüşmüş olur.
ÆProgramlama Dili Nedir?✓Belirli bir standarttaki yazım kuralına göre kodlama yaparak, bir
bilgisayarın nasıl davranması gerektiğini belirten araçtır.
✓Tüm yazılımlar programlama dili ile gerçekleştirilir.
✓Her programlama dilinin kendine ait bir yazım kuralı vardır.
13
Nesiller
Makine 1. 2. 3. 4. 5. İnsan
Makine Dili Assembly Dili Yapısal DillerÇözüme
Yönelik DillerZeki Diller
ARMIntel 80x86IBM 360
ASEM-51MASMEmu8086
FortranBASICC, C++
SQLMatlabInformix-4GL
PrologOPS5Mercury
ÆProgramlama DilleriI . N e s i l ( M a k i n e D i l l e r i )
14
• Birinci nesil programlama dilleri ilk bilgisayarlarla birlikte ortaya çıkmıştır.
• Tamamen geliştirildiği makinenin özelliklerine göre çalışan «makine seviyesi» dillerdir.
• Komutlar doğrudan bilgisayar üzerindeki bir panel aracılığıyla, herhangi bir derleyici ya da çevrime ihtiyaç duyulmadan giriliyordu.
• İşlemciye doğrudan verilen komutlarla çalışıyor olmaları, hız ve yetenekaçısından çok güçlü olmalarını sağlıyordu.
• Öğrenilmeleri ve uygulanmaları zor, hata durumlarını yönetmek sıkıntılıydı.
• Belirli bir işlemci/makine için yazılan kod, farklı yapıdaki başka bir makinede çalışmıyor, tamamen yeniden yazılması gerekiyordu.
IBM 360
ÆProgramlama DilleriI I . N e s i l ( A s s e m b l y D i l l e r i )
15
• İnsanlar tarafından makine dillerine oranla daha anlaşılır olan bu diller assembly olarak bilinirler.
• Direkt işlemciye/makineye özel kodların yerine komutlar ve kısaltmalar kullanılmaktadır.
• Fakat yine de makineye özel programlama yapılması gerekmektedir.
• Assembly ile geliştirilen programların makinelerde çalışabilmesi için «makine diline» çevrilmeleri gerekir.
• Bu noktada Assembler yani çevirmenler devreye giriyordu.
• Günümüzde halen özel donanımların programlanmasında, işletim sistemlerinin çekirdeklerinde Assembly dilleri kullanılmaktadır.
ÆProgramlama DilleriI I I . N e s i l ( Ya p ı s a l D i l l e r )
16
• Programlama dillerinin günümüzde yaygın kullanılan ve bilinen türlerinin geliştirildiği nesil, üçüncü nesildir.
• İngilizce ağırlıklı olarak insanların kullandığı dillere yakın, yüksek seviyede (insana yakın) yapısal dillerdir.
• Bu nesille birlikte yazılım geliştirme makine bağımlılıktan kurtarılmıştır.
• Yazılan programlar farklı makinelerde de kullanmaya başlanmıştır.
• Üçüncü nesil dillerin yüklendiklerini bilgisayarda çalışması için derleyici (compiler) ya da yorumlayıcı (interpreter) aracılığına ihtiyaç duyulur.
ÆProgramlama DilleriI V. N e s i l ( Ç ö z ü m e Yö n e l i k D i l l e r )
17
• Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına rağmen, ticaret ve iş yaşamında özel durumlara yönelik hızlı çözümler geliştirebilme ihtiyacı dördüncü nesil programlama dillerinin gelişimine neden olmuştur.
• Kullanımı çok daha kolay, daha az kod yazarak yönergeler, hazır şablonlar ve sihirbazlar sayesinde belirli ihtiyaçlarda uzmanlaşmış pratik çözümler geliştirmeye yöneliktir.
• Bu diller; rapor oluşturucu, form oluşturucu, olay tasarımı, veri yönetimi, istatiksel analitik gibi alanlarda uygulamalar geliştirmeye yöneliktir.
Matlab, SQL, Oracle Reports, Informix-4GL, …
ÆProgramlama DilleriV. N e s i l ( Z e k i D i l l e r )
18
• Beşinci nesil programlama dilleri, programcının algoritma geliştirerek çözüm geliştirmesinin ötesinde, koşulları ve kısıtları bilgisayara sunarak, bilgisayarın çözümü kendisinin bulmasına yönelik olarak tasarlanmaktadır.
• Açıkça kodlamanın yerine bildirimsel (declarative) yöntemle çalışan ve özellikle yapay zeka alanında araştırmalarda kullanılan bu yeni programlama dillerine örnek olarak Prolog, OPS5 ve Mercuryverilebilir.
Programlamada Temel İşlemlerB a s i c O p e r a t i o n s i n P r o g r a m m i n g
19
Æ
20
Programlamada Temel İşlemler
✓Programlamada üç temel işlem bulunur:
1. Matematiksel İşlemler2. Karar İşlemleri3. Mantıksal (Lojik) İşlemler
Æ
21
Matematiksel İşlemlerİşlem Matematik Bilgisayar
Toplama 𝐴 + 𝐵 𝐴 + 𝐵
Çıkarma 𝐴 − 𝐵 𝐴 − 𝐵
Çarpma 𝐴 × 𝐵 𝐴 ∗ 𝐵
Bölme𝐴
𝐵𝐴/𝐵
Üs Alma 𝐴𝐵 𝐴^𝐵
Sıra No İşlem Adı Bilgisayar
1 Parantezler ( a + b ∗ c)
2 Üs Alma 𝐴^𝐵
3 Çarpma ve Bölme 𝐴 ∗ 𝐵, 𝐴/𝐵
4 Toplama ve Çıkarma 𝐴 + 𝐵, 𝐴 − 𝐵
Matematiksel İşlemlerin Öncelik Sırası
Bilgisayar dilinde kodlanmış bir matematiksel ifadede, aynı önceliğe sahip işlemler mevcut ise;
Bu işlemlerin gerçekleştirme sırası Soldan Sağa doğrudur.
𝒇 = 𝑨 ∗ 𝑩/𝑪
Burada, önce 𝐴 ∗ 𝐵 işlemi yapılır ve daha sonrabulunan sonuç 𝐶’ye bölünür.
Æ
22
Matematiksel İşlemler
Matematik Bilgisayar
𝑎 + 𝑏 − 𝑐 + 2𝑎𝑏𝑐 − 3 𝑎 + 𝑏 − 𝑐 + 2 ∗ 𝑎 ∗ 𝑏 ∗ 𝑐 − 3
𝑎 + 𝑏2 − 𝑐3 𝑎 + 𝑏^2 − 𝑐^3
𝑎 −𝑏
𝑐+ 2𝑎𝑐 −
3
𝑎 + 𝑏𝑎 − 𝑏/𝑐 + 2 ∗ 𝑎 ∗ 𝑐 − 3/(𝑎 + 𝑏)
𝑎 + 𝑏 −2𝑎𝑏
𝑏2 − 4𝑎𝑐𝑎 + 𝑏 ^(1/2) − 2 ∗ 𝑎 ∗ 𝑏/(𝑏^2 − 4 ∗ 𝑎 ∗ 𝑐)
𝑎2 + 𝑏2
2𝑎𝑏(𝑎^2 + 𝑏^2)/(2 ∗ 𝑎 ∗ 𝑏)
Aşağıdaki örnekleri dikkatlice inceleyiniz. Dönüşüm esnasında mümkün mertebede parantez kullanmanız, hata yapmanızı önleyecektir.
Æ
23
Karar İşlemleri
Bilgisayar Matematik Sembol Anlamı Örnek
= = 𝐸ş𝑖𝑡𝑡𝑖𝑟 𝐴 = 𝐵
<> ≠ 𝐸ş𝑖𝑡 𝐷𝑒ğ𝑖𝑙 𝐴 <> 𝐵
> > 𝐵ü𝑦ü𝑘𝑡ü𝑟 𝐴 > 𝐵
< < 𝐾üçü𝑘𝑡ü𝑟 𝐴 < 𝐵
>= ≥ 𝐵ü𝑦ü𝑘 𝐸ş𝑖𝑡 𝐴 >= 𝐵
<= ≤ 𝐾üçü𝑘 𝐸ş𝑖𝑡 𝐴 <= 𝐵
Æ
24
Mantıksal İşlemler
Mantıksal İşlem Matematik Komut Kodu Örnek
VE ⋅ AND 𝑎 = 𝑏 𝑉𝐸 𝑏 = 𝑐
VEYA + OR 𝑎 = 𝑏 𝑉𝐸𝑌𝐴 𝑏 = 𝑐
DEĞİL ′ NOT 𝐷𝐸Ğİ𝐿 𝑎 = 𝑏
Mantıksal Operatörlerin Kullanılmasında;
▪ Bütün şartların sağlanması isteniyorsa VE,▪ Herhangi bir şartın sağlanması isteniyorsa VEYA,▪ Koşul sağlamayanlar isteniyorsa DEĞİL mantıksal operatörü kullanılır.
Æ
25
Mantıksal İşlemlerÖrnek 1:
Bir iş yerinde yaşı 25’ten büyük ve maaşı 1.500 TL olan personellerin bulunması istenirse;
• (YAŞ > 25) VE (MAAŞ = 1500)
Örnek 2:
Bir iş yerinde yaşı 25 ve üzerinde olan, maaşı 1.500 TL veya maaşı 2.500 TL olan personellerin bulunması istenirse;
• (YAŞ >= 25) VE ((MAAŞ = 1500) VEYA (MAAŞ = 2500))
Æ
26
Mantıksal İşlemlerÖrnek 3:
Bir iş yerinde yaşı 25’e eşit ve maaşı 1.500 TL ile 2.500 TL arasında olan personellerin bulunması istenirse;
• (YAŞ = 25) VE (MAAŞ >= 1500 VE MAAŞ <= 2500)
Örnek 4:
Bir iş yerinde yaşı 25 olmayan veya maaşı 1.500 TL olan personellerin bulunması istenirse;
• (YAŞ <> 25) VEYA (MAAŞ = 1500)
Binary Sayı SistemiB i n a r y N u m e r a l S y s t e m
27
ÆBinary Sayı Sistemi✓Günlük yaşantımızda 10’luk sayı sistemi kullanılır. Ancak, bilgisayar
sistemleri 2’lik (Binary) sayı sistemini kullanılır.
✓Sayı sistemlerinde her bir rakam dijit (digit) olarak isimlendirilir. Onluk sayı sistemlerinde her bir rakam decimal digit ya da digitiken, İkilik sayı sistemlerinde binary digit ya da kısaca bit olarak adlandırılır.
✓Onluk düzende rakamlar 0…9, İkilik düzende ise 0 ve 1’den oluşur.
28
12345678 8 digitlik decimal (8 basamaklı) sayı
10100101 8 bitlik binary sayı
ÆBinary Sayı Sistemi8 bitlik binary sayılara 1 byte’lık sayı denir.
➢10100101 sayısı 8 bit ya da 1 byte’dır.
16 bitlik binary sayılara 1 word’lük sayı denir. Ancak bazen bu kavram işlemcinin veri yolu uzunluğu kadar bit sayısı ile de eşleştirilmektedir.
➢1010010110100101 sayısı 1 word‘lük ya da 2 byte’dır.
4 bitlik binary sayılar nibble olarak adlandırılır.
➢1010 sayısı 4 bit ya da nibble’dır.
29
ÆBinary Sayı Sistemi
Örnek: Decimal 165 sayısının binary karşılığı.
30
1 0 1 0 0 1 0 127 26 25 24 23 22 21 20
128 0 32 0 0 4 0 1
Örnek: 1 byte’lık en küçük sayı 0’dır.
0 0 0 0 0 0 0 027 26 25 24 23 22 21 20
Örnek: 1 byte’lık en büyük sayı 255’tir.
1 1 1 1 1 1 1 127 26 25 24 23 22 21 20
ÆBinary Sayı SistemiBellek Ölçü Birimleri: Her bir seviye bir öncekinin 1.024 katıdır.
31
1 Byte = 8 Bit
1 Kilo Byte (KB) = 103 𝑏𝑦𝑡𝑒𝑠 = 1.024 𝑏𝑦𝑡𝑒𝑠
1 Mega Byte (MB) = 106 𝑏𝑦𝑡𝑒𝑠 = 1.048.576 𝑏𝑦𝑡𝑒𝑠
1 Giga Byte (GB) = 109 𝑏𝑦𝑡𝑒𝑠 = 1.073.741.824 𝑏𝑦𝑡𝑒𝑠
1 Tera Byte (TB) = 1012 𝑏𝑦𝑡𝑒𝑠 = 1.099.511.627.776 𝑏𝑦𝑡𝑒𝑠
1 Peta Byte (PB) = 1015 𝑏𝑦𝑡𝑒𝑠
1 Exa Byte (EB) = 1018 𝑏𝑦𝑡𝑒s
1 Zetta Byte (ZB) = 1021 𝑏𝑦𝑡𝑒𝑠
1 Yotta Byte (YB) = 1024 𝑏𝑦𝑡𝑒𝑠
1 Bronto Byte = 1027 𝑏𝑦𝑡𝑒𝑠
1 Geop Byte = 1030 𝑏𝑦𝑡𝑒𝑠
ÆBinary Sayı Sistemi▪ Bilgisayarlar yalnızca sayılarla çalışırlar. Oysa bizim harflere ve diğer sembollere de
ihtiyacımız vardır.
▪ Genelde bilgisayar sistemlerinde ANSI tarafından 1963 yılında standartlaştırılan ASCII(American National Code for Information Interchange) kodlaması kullanılmaktadır.
▪ Ancak günümüzde, ASCII kodları çok dilliliği sağlayabilmek için yetersiz kaldığından UNICODE kodlaması yaygınlaşmaktadır.
▪ ASCII temel olarak 7 bit’tir ve 127 karakterden oluşur. Ancak Extended kısmıyla birlikte 8 bit (255 karakter) kullanılmaktadır.
▪ UNICODE (https://unicode-table.com/tr/) Unicode Consortium organizasyonu tarafından geliştirilen ve her karaktere bir sayı değeri karşılığı atayan 16 bit (65.535 karakter) uzunluğundaki bir endüstri standardıdır.
▪ Unicode ile amaç; farklı karakter kodlama sistemlerinin birbiriyle tutarlı çalışmasını ve dünyadaki tüm yazım sistemlerinin tek bir standart altında temsil edilebilmesini sağlamaktır.
32
Algoritma KavramıT h e A l g o r i t h m C o n c e p t
33
ÆAlgoritma Nedir?▪ Algoritma, bir problemin çözümünde izlenecek yol anlamına gelir ve
sonlu sayıdaki işlem adımlarının bir araya getirilmesiyle oluşturulur.
▪ Algoritma ile oluşturulan çözümler sözel olarak ifade edilir. Algoritmaları belirli bir standarttaki şekil ve sembollerle anlatma biçimine akış diyagramı denir.
▪ Akış diyagramlarındaki her sembolün belli bir işlevi vardır.
▪ Algoritması oluşturulmuş bir problemin, bilgisayar ortamında çalıştırılabilir hale getirilmesine ise program denir.
▪ Program, problemin çözümünde yapılması gereken işlemler bütününün kod karşılığıdır.
▪ Algoritmaların program haline getirilmesi için programlama dillerikullanılır.
34
ÆAlgoritmanın Temel ÖzellikleriAlgoritmanın temel özellikleri şunlardır;
1. Kesinlik: Algoritmadaki işlem adımları herkes tarafından aynı şekilde anlaşılabiliyor olmalı, farklı anlamlara gelebilecek bulanık ifadeler içermemelidir. Emir cümleleri kullanınız!
2. Sıralı Olma: Her algoritma için bir başlangıç durumu söz konusudur. Oluşturulan çözüm, bu başlangıç durumu göz önünde bulundurularak gerçekleştirilir. İşlem adımlarının hangi sırada gerçekleştirileceği çok önemlidir ve net bir şekilde belirtilmelidir. Yemek Tarifi!
3. Sonluluk: Algoritma sonlu sayıda işlem adımlarından oluşmalı ve sınırlı bir zaman diliminde tamamlanmalıdır. Her algoritmanın bir sonnoktası, bitişi olmalıdır. Ömrümüzün Sonu!
35
ÆGünlük Yaşamdan Bir ÖrnekŞimdi algoritmanın tanımını ve özelliklerini günlük yaşamdan basit bir örnekle pekiştirelim.
ÖrnekBir öğrencinin okula giderken izleyeceği yolu ve okula girişinde yapacaklarını tarif edelim.
36
Çözüm
1. Evden/Yurttan dışarıya çık,2. Otobüs durağına git,3. Otobüsün geldiğinde otobüse bin,4. Yolcu ücretini öde,5. İneceğin yere yakınlaştığında arkaya yürü,6. İneceğini belirten ikaz lambasına bas,7. Otobüs durunca in,8. Okula doğru yürü,9. Okul giriş kapısından içeriye gir,10. Sınıfa gir,11. Dersi dinle.
Bu algoritmayı üç temel özelliği (kesinlik, sıralı olma, sonluluk) hatırlayarak inceleyiniz!!!
ÆProblem Çözmenin AdımlarıBir problemi çözmek için algoritma (çözüm yolu) geliştirmenintemel adımları şöyledir;
Problemi Tanımlamak
✓Algoritmanın amacı belirli bir problemi çözmektir.
✓Bu nedenle algoritma geliştirmenin esas öğesi problemdir.
✓Problemi ne kadar iyi anlarsak, algoritmayı geliştirmemiz o kadar kolay olur.
✓Eğer problemi iyi anlayamazsak, algoritma geliştirme aşamasında ciddi sıkıntılar yaşar, tekrar tekrar problemi tanımlama aşamasına geri döneriz.
✓Daha da kötüsü problemi yanlış anlarsak, bizi beklenmeyen bir sonuca götüren bir algoritma yazma ihtimalimiz söz konusu olacaktır.
37
ÆProblem Çözmenin AdımlarıGirdi ve Çıktıları Belirlemek
✓Problemi iyi tanımlamak için başlangıç ve bitiş noktalarını çok net belirlememiz gerekir.
✓Bizim bulacağımız şey, problemin çözüm yoludur.
✓Problem çözümünde kullanılacak parametreleri iyi tespit etmek gerekir.
✓Aksi halde geliştirilen algoritma problemin çözümü için yetersiz kalabilir.
✓Bunun için algoritmanın girdilerini ve çıktılarını iyice kavramalıyız.
38
ÆProblem Çözmenin AdımlarıAlgoritma (Çözüm Yolu) Geliştirmek
✓Bir problemin çözümü için çoğunlukla birden fazla seçeneğimiz olur.
✓İçinde bulunduğumuz duruma göre bazen zaman sıkışıklığından ilk bulduğumuz çözüm yolunu uygulamak durumunda kalırız.
✓Eğer yeterince vakit varsa, en iyi algoritmayı bulmaya çalışmalıyız.
✓Bunun için de bulabildiğimiz kadar çok çözüm yolu geliştirip, bunların içinden en uygununu tercih etmeliyiz.
✓Çözüm yolları geliştirirken, her bir çözüm yolu için çözümü adımlara ayrıştırıp, daha sonra da bu adımları uygun şekilde birbirleriyle ilişkilendirmeliyiz.
39
ÆProblem Çözmenin AdımlarıAkış Diyagramını Oluşturmak
✓Buna algoritmanın görselleştirilmiş halidir diyebiliriz.
✓Algoritma ve akış şeması programı en azhata ile en küçük ayrıntıları dahi atlamadan yazmamız için büyük kolaylık sağlayacaktır.
40
Başla
Bitir
Alarm çal
Uyandı mı?
5 dk.Evet Hayır
ÆProblem Çözmenin AdımlarıAlgoritmanın Test Edilmesi ve İyileştirilmesi
✓Algoritmayı geliştirdikten sonra, kodlama yapmadan önce kağıt üzerindenasıl çalışacağını sınamalıyız.
✓Eğer algoritmada bir eksiklik ya da hata bulunursa, bunu düzeltmeli ve tekrar sınamalıyız.
✓Sınama aşamasında eğer bellek ya da işlemci kullanımıyla ilgili bir iyileştirme fırsatı yakaladıysak, gerekli düzenlemeleri yaparak algoritmamızı daha uygun hale getirmeliyiz.
41
ÆProblem Çözmenin AdımlarıAlgoritmanın Kodlanması
✓Geliştirilen algoritma belirli bir programlama dilinde kodlanır.
✓Böylece kağıt üzerindeki çözümümüz bilgisayar üzerinde çalışabilecek hale gelmiş olur.
✓Algoritmayı kodlarken kullanılan programlama dili ve platformunun özellikleri de göz önünde bulundurulması gerekir.
42
ÆProblem Çözmenin AdımlarıKodun Sınanması ve İyileştirilmesi
✓Yazılan kod da algoritmada olduğu gibi sınanır.
✓Programın düzgün çalışıp çalışmadığını, komutlara gerekli tepkiyi gösterip göstermediğini, olası ve olağan dışı durumlarda nasıl tepki verdiğinin testini yapmaktır.
✓Bu aşamada sınama (test) işlemi bilgisayar üzerinde kod çalıştırılarakgerçekleştirilir.
✓Bu sınama sırasında ortaya çıkan hatalar ve performans sorunları giderilerek program iyileştirilir.
43
ÆAlgoritmaların SınıflandırılmasıAlgoritmalar karmaşıklık yapılarına göre 3 grupta incelenirler…
44
Alg
ori
tmal
ar Basit (Lineer) Algoritmalar
Mantıksal Algoritmalar
Döngüsel Algoritmalar
ÆBasit (Lineer) Algoritmalar▪ İçerisinde mantıksal ifadelerin ve dallanmaların yer almadığı algoritma
türüdür.
▪ Bu algoritmalarda akış, baştan sona doğru düz bir halde ilerler.
▪ Çoğunlukla küçük ve basit işlemleri gerçekleştirmek için kullanılırlar.
45
Adım Sözel İfade Kodlama
1 Klavyeden iki adet sayı gir A, B
2 Girilen sayıları topla TOPLAM = A + B
3 İşlem sonucunu ekrana yazdır TOPLAM
Örnek
ÆMantıksal Algoritmalar▪ Algoritma içerisinde mantıksal karşılaştırmaların bulunduğu yapılardır.
▪ Mantıksal karşılaştırmalara göre algoritmanın akışı farklı işlem adımlarına geçecektir. Duruma göre de bazı adımlara hiç uğramayacaktır.
46
Adım Sözel İfade Kodlama
1 Klavyeden iki farklı sayı gir. A, B
2 Eğer A>B ise ekrana «ilk sayı büyük» yazdır ve adım 4’e git. "ilk sayı büyük"
3 Eğer B>A ise ekrana «ikinci sayı büyük» yazdır ve adım 4’e git. "ikinci sayı büyük"
4 Programı bitir. -
Örnek
ÆDöngüsel Algoritmalar▪ Algoritmada bir işlem birden fazla tekrar ediyorsa döngülü algoritma
yapısı kullanılır.
▪ Döngüsel algoritmalarda mantıksal karşılaştırma yapısı özel olarak kullanılır.
▪ Eğer algoritma içerisinde kullanılan mantıksal karşılaştırma işlemi sonucunda, programın akışı karşılaştırma yapılan yerden daha sonraki bir adıma değil de daha önceki adıma gidiyorsa bu şekilde oluşturulmuş algoritmalara döngüsel algoritma denir.
▪ Kısaca, döngüsel algoritmalarda mantıksal karşılaştırma işlemi sonucunda program önceki adımlara geri döner.
47
ÆDöngüsel Algoritmalar
48
Adım Sözel İfade Kodlama
1 Sayacı 1’e eşitle. S = 1
2 Sayaç değerini ekrana yazdır. S
3 Sayacın değerini 1 arttır. S = S + 1
4 Eğer S<=5 ise adım 2’ye git. -
5 Ekrana «İşlem Tamam» yazdır. "İşlem Tamam"
6 Programı bitir. -
Örnek
Bu algoritma 1’den 5’e kadar olan tam sayıları ekrana yazdırır.
Æ
1 Algoritma ve Programlama Giriş Ders Notları, İbrahim Küçükkoç, Balıkesir Üniversitesi (10.09.2018)
2 Geçmişten Günümüze Programlama Dilleri, Kadir Çamoğlu, CHIP Online, (09.09.2018)
3
4
5
6
7
8
9
10
B u d e r s n o t u h a z ı r l a n ı r k e n a ş a ğ ı d a b e l i r t i l e n k a y n a k l a r d a n y a r a r l a n ı l m ı ş t ı r.
49
Kaynaklar