49
Programlama Temelleri «TEMEL KAVRAMLAR» [email protected] Karabük Üniversitesi T.O.B.B. Teknik Bilimler Meslek Yüksekokulu Demir Ç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/01 Revizyon: R-002 Yayın Tarihi: 03.10.2018 TBP101

TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

  • Upload
    others

  • View
    25

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

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

Page 2: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

İçindekiler

2

➢Bilgisayarın Tanımı ve Yapısı

➢Bilgisayar Programcılığı Kavramları

➢Programlamada Temel İşlemler

➢Binary (İkili) Sayı Sistemi

➢Algoritma Kavramı

Page 3: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

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

Page 4: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ

✓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

Page 5: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ

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?

Page 6: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ

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?

Page 7: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

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

Page 8: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 9: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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.

Page 10: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 11: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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!

Page 12: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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.

Page 13: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 14: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 15: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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.

Page 16: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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.

Page 17: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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, …

Page 18: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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.

Page 19: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

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

Page 20: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ

20

Programlamada Temel İşlemler

✓Programlamada üç temel işlem bulunur:

1. Matematiksel İşlemler2. Karar İşlemleri3. Mantıksal (Lojik) İşlemler

Page 21: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ

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.

Page 22: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ

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.

Page 23: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ

23

Karar İşlemleri

Bilgisayar Matematik Sembol Anlamı Örnek

= = 𝐸ş𝑖𝑡𝑡𝑖𝑟 𝐴 = 𝐵

<> ≠ 𝐸ş𝑖𝑡 𝐷𝑒ğ𝑖𝑙 𝐴 <> 𝐵

> > 𝐵ü𝑦ü𝑘𝑡ü𝑟 𝐴 > 𝐵

< < 𝐾üçü𝑘𝑡ü𝑟 𝐴 < 𝐵

>= ≥ 𝐵ü𝑦ü𝑘 𝐸ş𝑖𝑡 𝐴 >= 𝐵

<= ≤ 𝐾üçü𝑘 𝐸ş𝑖𝑡 𝐴 <= 𝐵

Page 24: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ

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.

Page 25: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ

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))

Page 26: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ

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)

Page 27: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Binary Sayı SistemiB i n a r y N u m e r a l S y s t e m

27

Page 28: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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ı

Page 29: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 30: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 31: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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 𝑏𝑦𝑡𝑒𝑠

Page 32: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 33: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Algoritma KavramıT h e A l g o r i t h m C o n c e p t

33

Page 34: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 35: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 36: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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!!!

Page 37: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 38: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 39: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 40: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 41: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 42: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 43: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 44: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 45: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 46: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 47: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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

Page 48: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ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.

Page 49: TBP101 KBÜ Programlama Temelleri · Programlama Dilleri Æ IV. Nesil (Çözüme Yönelik Diller) 17 •Üçüncü nesil dillerin programlama anlamında çok ciddi ilerlemeler sağlamasına

Æ

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