Uploaded by zehra sevinç

Hafta #1

advertisement
EEM-103
Bilgisayar Programlama
Hafta # 1
İnsanoğlundan milyarlarca kez daha hızlı işlem yapabilen
ve lojik kararlar verebilen cihazlara bilgisayar diyoruz.
Bilgisayar kendisine
programlandığı şekilde;
verilen
bilgileri;
daha
önce
mantıksal ve aritmetiksel işlemler yapan;
yaptığı işlemlerin sonucunu saklayabilen;
sakladığı bilgilere istenildiğinde ulaşılabilen;
donanım (Hardware) ve yazılım (software) dan oluşan,
elektronik bir makinedir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
2
Bir bilgisayar 2 ana bileşenden oluşur :
Donanım (Hardware)
Klavye, fare, ekran, diskler, bellek, CD/DVD-Rom gibi
Bilgisayarın her türlü fiziki aksamı.
Yazılım (Software)
Bir bilgisayar üzerinde çalışan her türlü program. İşlemcinin
nasıl davranması gerektiğini belirten, belirli kuralları olan
kodlardır. En temel yazılım BIOS ve İşletim Sistemidir.
Bilgisayarlar, “bilgisayar programları” adını verdiğimiz
birbiri ardına sıralanmış komut setlerinin kontrolu altında
bilgi işlerler.
04.10.2022
Mehmet Barış TABAKCIOĞLU
3
Bir bilgisayar 6 ana bileşenden oluşur
Giriş Ünitesi (Input Unit):
Bilgisayarda işlenecek bilgi çesitli giriş cihazlarından elde
edilir.
Klavye, fare, mikrofon, tarayıcı, webcam, barkod okuyucu
vs.
Çıkış Ünitesi (Output Unit ):
Bilgisayarda işlenen bilgiler çesitli çıkış cihazlarına aktarılır.
Ekran, yazıcı, hoparlör, plotter vs.
04.10.2022
Mehmet Barış TABAKCIOĞLU
4
Bellek Ünitesi (Memory Unit ):
Bellek ya da ana bellek olarak da adlandırılır.
Bilgiye gerektiğinde (işleme esnasında) hızlı ulaşmayı
mümkün kılan bir depo vazifesi görür.
ALU (Arithmetic and Logic Unit ) (Aritmetik ve Lojik
İşlem Birimi):
Toplama, çıkarma, çarpma, bölme gibi temel aritmetik
işlemlerin yanında bellekte saklı olan iki sayının birbirine
eşitliğini test etmek gibi lojik bir vazifesi de vardır.
04.10.2022
Mehmet Barış TABAKCIOĞLU
5
CPU (Central Processing Unit ) (Merkezi İşlem Birimi):
Bilgisayarın patronudur diyebiliriz 
Giriş ünitesi hangi anda belleğe bilgiyi yazmalıdır veya
ALU gercekleştireceği işlemler için gerekli olan bilgiyi
bellekten ne zaman almalıdır ya da bellekten çıkış
ünitesine bilgi ne zaman yollanmalıdır?
İkincil Depolama Ünitesi (Secondary Storage Unit):
Hard diskler gibi bellekten daha fazla kapasiteye sahip
ama daha yavaş, enerjisi kesildiğinde bile sahip olduğu
bilgiyi kaybetmeyen depolama üniteleridir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
6
BİLGİSAYARLA PROBLEM ÇÖZÜMÜNÜN AŞAMALARI
04.10.2022
Mehmet Barış TABAKCIOĞLU
7
ANALİZ:
Çözülmesi istenen problemin
sağlayacak ön çalışmalardır.
tamamen
anlaşılmasını
Daha çok kağıt kalem kullanılarak bol miktarda zihin
jimnastiğinin yapıldığı aşamadır.
ALGORİTMA GELİŞTİRME:
Problemi çözecek adımların sıralı olarak ifade edilmesidir.
AKIŞ ŞEMASI ÇİZİMİ:
Geliştirilen algoritmanın şekillerle ifade edilmesidir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
8
PROGRAMLAMA DİLİ SEÇİMİ:
Geliştirilen algoritmayı kolay bir şekilde bilgisayar ortamına
aktaracak bir bilgisayar programlama dilinin seçilmesidir.
Programlama dili bir problemin algoritmik çözümünün
bilgisayar ortamına aktarılmasını mümkün kılan kurallar
dizisidir.
En iyi programlama dili budur diye bir şey söylemeyiz.
04.10.2022
Mehmet Barış TABAKCIOĞLU
9
Çünkü her programlama dilinin bir diğerine göre üstün ve
zayıf tarafları vardır.
Günümüzde MATLAB,C,C++,C#, Java, Python ve Visual
Basic en çok kullanılan programa dilleridir.
PROGRAMIN YAZILMASI:
Geliştirilen algoritmanın seçilen
kuralları
kullanılarak
bir
dönüştürülmesi aşamasıdır.
04.10.2022
Mehmet Barış TABAKCIOĞLU
programlama
bilgisayar
dilinin
programına
10
DERLEME/YORUMLAMA:
Kullanılan Programlama dilinin uygun komutlardan oluşan
ve artık bir bilgisayar yazılımı olarak temsil edilen problem
çözümünün, muhtemel yazım hataları içerip içermediğinin
test edildiği ve sonrasında bilgisayarın anladığı tek dil olan
makine diline dönüştürüldüğü aşamadır.
ÇALIŞTIRMA:
Derlenmiş programın programın işletim sisteminin yükleyici
denen bileşeni tarafından bilgisayarın sabit diskinden
alınıp bellekte boş bir alana yerleştirildiği ve sonrasında
programın ilk komutunun adresinin (CPU)’ya bildirildiği
aşamadır.
04.10.2022
Mehmet Barış TABAKCIOĞLU
11
TEST/HATA AYIKLAMA:
Programın muhtemel her giriş için doğru sonuçlar üretip
üretmediğinin test edildiği ve programdaki
hataların (eğer varsa) ayıklandığı aşamadır.
04.10.2022
Mehmet Barış TABAKCIOĞLU
mantıksal
12
BİLGİSAYAR PROGRAMI VE PROGRAMLAMA
Bilgisayarla problem çözümünün aşamaları takip
edildikten sonra ortaya çıkan ve problemimizi bilgisayar
ortamında çözüme kavuşturan ürüne bilgisayar programı
denir.
Bilgisayarla problem çözebilmek amacıyla takip edilen
adımların tümüne birden bilgisayar programlama denir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
13
PROGRAMLAMA DİLLERİ
Programlama dilleri derlenen ve yorumlanan olmak üzere 2
kısımdır.
Derlenen dillerde yazılan programların çalışabilmesi için, bu
programların öncelikle derleyici (compiler) adı verilen özel
yazılımlar sayesinde makine koduna çevrilmeleri gerekir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
14
Yorumlanan dillerle yazılmış programlar ise yorumlayıcı
(interpreter) adı verilen yazılımlar ile satır satır makine
koduna çevrilir ve işletilirler.
Genelde yorumlanan diller, derlenenlere göre daha yavaş
çalışırlar.
Örneğin MATLAB, Python yorumlanan bir dildir. C++ ise
derlenen bir dildir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
15
PROGRAMLAMA DİLLERİ
• Düşük Seviyeli Diller
• Makine Dili
• Assembly
• Orta Seviyeli Diller
• Yüksek Seviyeli Diller
• Çok Yüksek Seviyeli Diller
• Yapay Zekaya ait Diller
04.10.2022
Mehmet Barış TABAKCIOĞLU
16
Düşük Seviyeli Diller
Düşük seviyeli diler kendi içinde Makine dili ve Assembly
olmak üzere 2 gruba ayrılır.
Makine Dilleri
Makine dili, geliştirilen ilk programlama dilidir, öğrenilmeleri
çok zordur. Bu dilde yazılan tüm komutlar 0 ve 1’lerden
oluşur.
Makine dili donanıma bağlıdır. Belirli bir işlemci/makine için
yazılan kod, farklı yapıdaki başka bir makinede çalışmaz,
tamamen yeniden yazılması gerekir.
Örneğin 1011101100010001 farklı yapıdaki işlemcilerde
farklı işlemleri yapar.
04.10.2022
Mehmet Barış TABAKCIOĞLU
17
Türk alfabesinde 29 harf vardır. Bu harfler bir araya
getirilerek kelimeler, kelimeler bir araya getirilerek cümleler
elde edilir. Cümlelerden de metinler elde edilir.
Bilgisayarların alfabesi ise 1 ve 0 olmak üzere sadece 2
karakter içerir. 1’leri ve 0’ları bilgisayar mimarilerinin
tasarlandığı formata uygun olarak yan yana getirerek
komutları, ve komutları birleştirerek bilgisayar programlarını
elde ederiz.
Hangi seviyede yazılırsa yazılsın, bir bilgisayar programı
çalıştırılmadan önce muhakkak bilgisayarın tanıdığı
alfabenin karakterlerini içeren 1’ler ve 0’lardan oluşan
temsile yani makine koduna çevrilmelidir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
18
A 1000001
a 1100001
, 101100
04.10.2022
Mehmet Barış TABAKCIOĞLU
19
ASCII (İngilizce: American
Standard Code for Information
Interchange, Türkçe: Bilgi
Değişimi İçin Amerikan Standart
Kodlama Sistemi) Latin alfabesi
üzerine kurulu 7 bitlik bir karakter
setidir. İlk kez 1963 yılında ANSI
tarafından standart olarak
sunulmuştur. ASCII'de 33 tane
basılmayan kontrol karakteri ve 95
tane basılan karakter olmak üzere
128 karakter bulunur. Kontrol
karakterleri ; metnin akışını kontrol
eden, ekranda çıkmayan
karakterlerdir. Basılan karakterler;
ise ekranda görünen, okuduğumuz
metni oluşturan karakterlerdir.
04.10.2022
Karakter A → (ASCII 65 → 0 1 0 0 0 0 0 1 )
Alt + 13 -> Enter (Return) Tuşu Alt + 65 ->
A yazar Alt + 64 -> @ yazar Alt + 126 -> ~
yazar
Mehmet Barış TABAKCIOĞLU
20
Makine Dilinde yazılan aşağıdaki program ekrana "Hello
world" yazısını yazar.
1011101100010001 0000000110111001
0000110100000000101101000000111010001010000001
101000011110011010001000011100010111110011100110
10010000001001000011001010110110001101100011011
11001011000010000001010111011011110111001001101
1000110010000100001
04.10.2022
Mehmet Barış TABAKCIOĞLU
21
Makine dili biraz daha kolay okunabilmesi için 16'lık sayı
sistemi ile yazılır.
Derlenme sonrası kod ikilik sisteme çevrilir. Çünkü işlemci
ikilik tabandaki kodu okur ve uygular. ARM, Intel 80x86, IBM
360, Motorola 680x makine dilleridir.
Aşağıda yazılan program ekrana "Hello world" yazısını yazar.
BB 11 01 B9 0D 00 B4 0E 8A 07 43 CD 10 E2 F9 CD 20 48
65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
04.10.2022
Mehmet Barış TABAKCIOĞLU
22
Assembly
İkinci kuşak dillerdir.
Bu dillerde komutlar sembollerle ifade edilir.
Makine koduna oldukça yakındırlar.
Yüksek seviyeli dillerin yaygın kullanımına karşın, halen
hızın ve verimin önemli olduğu noktalarda yazılan çoğu
programda assembly dili kullanılmaktadır.
ASEM-51, Emu8086, BAL, COMPASS başlıca Assembly
dilleridir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
23
Assembly dilinde yazılan aşağıdaki kod ekrana "Hello World" yazısını yazar.
Dosseg
.model small
.stack 100h
.data
hello_message db 'Hello World!',0dh,0ah,'$‘
.code
main proc
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset hello_message
int 21h
mov ax,4C00h
int 21h
main endp
end main
04.10.2022
Mehmet Barış TABAKCIOĞLU
24
Orta Seviyeli Diller
Orta seviye ve üstündeki dillerde yazılan programlar
donanımdan bağımsız çalışırlar.
Yani yazılan programlar farklı makinelerde de kullanılabilirler.
Oldukça esnek olan bu diller hem üst hem alt seviye
programlama yapabilirler.
Yüksek seviye dillerine göre kullanımı daha zordur fakat
programcıya daha özgür bir program geliştirme imkanı
sunarlar.
Örneğin: C ,C++, C# , Java orta seviye programlama
dilleridir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
25
C++ dili C dilinden o da BCPL ve B dilleri üzerinden
gelişmiştir.
BCPL 1967 yılında Martin Richards tarafından işletim
sistemi ve derleyici yazmak amacıyla geliştirilmiştir.
Ken Thompson Bell Laboratuvarlarında BCPL’den
faydalanarak B dilini geliştirmiştir ve bu dili UNIX işletim
sisteminin ilk versiyonlarını yazmak için kullanmıştır.
C dili Bell Laboratuvarlarında Dennis Ritchie tarafından
1972 yılında B dili baz alınarak geliştirilmiştir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
26
C dili ilk başlarda UNIX işletim sisteminin programlama
dili olarak geniş kabul görmüştür.
C++ ise Bjarne Stroustrup tarafından, 1980`li yılların
başında, Bell Laboratuvarlarında, C dilinin bir uzantısı
olarak birçok ek özelliği bünyesinde barındıran bir
programlama dili olarak geliştirilmiştir.
Bu özelliklerin en önemlisi bu dilin bir object-oriented
programming yani nesne tabanlı programlama dili
olmasıdır.
04.10.2022
Mehmet Barış TABAKCIOĞLU
27
Aşağıdaki program C dilinde ekrana "Hello World" yazısını
yazar.
#include<stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
04.10.2022
Mehmet Barış TABAKCIOĞLU
28
Makine dilinde A ve B sayısını toplayıp C sayısına atayan
program
00100010011
01000100010
00011010100
Assembly A ve B sayısını toplayıp C sayısına atayan
program
load A
add B
store C
Yüksek seviyeli dillerde A ve B sayısını toplayıp C
sayısına atayan program
C=A+B
04.10.2022
Mehmet Barış TABAKCIOĞLU
29
Yüksek Seviyeli Diller
Yüksek seviyeli dilde, Assembly dili veya makine dilindeki
birçok satır tek bir komutla gösterilir.
Böylece program daha kısa bir sürede yazılır.
Bu dillerin komutları İngilizce bir kelimenin tamamından
alındığından öğrenmek kolaydır.
Pascal, Basic, Fortran yüksek seviyeli dillere örnektir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
30
Aşağıdaki programlar ekrana pascal ve visual basic
dillerinde "hello world" yazısını yazar.
begin
writeln(‘hello world'); end.
print "hello world"
04.10.2022
Mehmet Barış TABAKCIOĞLU
31
Çok Yüksek Seviyeli Diller
Bu programlama dilleri programlama hâkimiyetini azaltırlar,
bunun yanında en hızlı ve en etkili programlama dilleri bu
kategoridedir.
Çok yüksek seviye programlama dillerini kullanmak ve
öğrenmek kolaydır fakat bu tip diller ile yapabilecekleriniz
kısıtlıdır.
VisualBasic, VB.NET, Acces , Foxpro gibi diller çok yüksek
seviyeli dillerdir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
32
Aşağıdaki program ekrana visual basic ve foxpro dillerinde
«hello world" yazısını yazar.
Private Sub Button1_Clicked() Handles Button1.Click
MsgBox("Hello World") End Sub
? "Hello World!"
04.10.2022
Mehmet Barış TABAKCIOĞLU
33
Yapay zekaya yönelik diller
Beşinci nesil programlama dilleridir. Yapay zeka programlama
dillerinin çalışma mantığı diğer dillere göre farklıdır.
Diğer dillerde bir problemin çözülmesi için gerekenler adım
adım yazılır ve programa nasıl yapacağı öğretilirdi.
Kısacası bir algoritma oluşturulur ve program buna göre
yazılırdı. Yapay zekada ise koşulları ve kısıtlamaları
programa verdiğinizde, çözümü programın kendisi bulur.
Açıkça kodlamanın yerine bildirimsel yöntemle çalışır. Julia,
Haskell, JavaScript, Lisp, Python yapay zekaya yönelik
dillerdir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
34
SAYI SİSTEMLERİ
Elektronik sistemlerde dört farklı sayı sistemi
kullanılır.
i) İkili(Binary) Sayı Sistemi
ii) Onlu(Decimal) Sayı Sistemi
iii) Onaltılı(Heksadecimal) Sayı Sistemi
iv) Sekizli(Oktal) Sayı Sistemi
04.10.2022
Mehmet Barış TABAKCIOĞLU
35
İkili(Binary) Sayı Sistemi
Bu sistemde 0 ve 1 olmak
üzere 2 tane sembol vardır ve
bu sebeple ikili sayı sistemi
denir. Her birine bir “dijit” denir
ve bir biti temsil eder. BIT
ifadesi de Bİnary digiT’ten
gelmektedir.
Elektronik
sistemlerde 0 volt lojik 0, 5 volt
veya 3.3 volt lojik 1 değeri ile
ifade edilir. Sayı tabanı 2’dir.
04.10.2022
Mehmet Barış TABAKCIOĞLU
Onluk Binary
0
1
2
3
4
5
6
7
8
9
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
36
Binary Decimal Dönüşümü:
Her dijit 2’nin basamak kuvveti ile çarpılır ve bunlar
toplanarak decimal sayı sistemine çevrilir.
(101011)2 = 1 ∗ 25 + 0 ∗ 24 + 1 ∗ 23 + 0 ∗ 22 + 1 ∗ 21 +
1 ∗ 20 =43
Decimal Binary Dönüşümü:
Onluk sayı 2’ye bölünerek ikilik
sisteme çevrilir. Onluk sayı 2’ye
bölünebildiği sürece bölme işlemine
devam edilerek kalan değerler
tersten yazılarak ikilik karşılığı
bulunur.
04.10.2022
Mehmet Barış TABAKCIOĞLU
37
(110)2
= (6)10
(11011)2
= (27)10
(101000)2 = (40)10
(10010)2
04.10.2022
= (18)10
Mehmet Barış TABAKCIOĞLU
38
Onaltılı(Hexadecimal) Sayı Sistemi
Bu sayı sistemi 0-9 arası rakamlar
ve A-F arası harfler olmak üzere
toplam 16 sembolden olur.
04.10.2022
Mehmet Barış TABAKCIOĞLU
Onluk
Binary
Hexadecimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
39
Hexadecimal Decimal Dönüşümü:
(2AF3)16 = (?)10
(2AF3)16 = 2 ∗ 163 + 10 ∗ 162 + 15 ∗ 161 + 3 ∗ 160
(2AF3)16 = 8192 +2560 +240 +3
(2AF3)16 = (10995)10
Decimal Hexadecimal Dönüşümü:
Decimal sayı 16’ya bölünerek Hexadecimal karşılığı bulunur.
(10995)10 = (?)16
10995:16=687 Kalan=3
687:16=42 Kalan=15
42:16=2 Kalan=10
2:16=0 Kalan=2
(10995)10 = (2AF3)16 Kalanlar sondan başa doğru yazılır.
(10)16 = (16)10
04.10.2022
(2A9)16 = (681)10
Mehmet Barış TABAKCIOĞLU
40
Oktal Decimal Dönüşümü:
Sekiz tabanına göre sayı sisteminde 0,1,2,3,4,5,6,7 rakamları olmak üzere sekiz
sembol kullanılır. İkilik sistemde sayıların uzun olması yüzünden bilgilerin daha
kısa şekilde gösterilmesi ihtiyacından doğmuştur.
(427)8 = 4*82 + 2*81 + 7*80 = 256 + 16 + 7 = (279)10
Decimal Oktal Dönüşümü:
Decimal sayı sekizli sisteme çevrildiği için bölme 8 metodu kullanılır.
(127)10 = (?)8
127 / 8 = 15 + 7
15 / 8 = 1 + 7
1/8=0+1
(127)10 = (177)8
(6)8 = (6)10
04.10.2022
(70)8 = (56)10
(147)8 = (103)10
Mehmet Barış TABAKCIOĞLU
(12)8 = (10)10
41
04.10.2022
Mehmet Barış TABAKCIOĞLU
42
04.10.2022
Mehmet Barış TABAKCIOĞLU
43
04.10.2022
Mehmet Barış TABAKCIOĞLU
44
(15)8
(46)8
(732)8
(4567)8
(32632)8
(1A2)16
(12)16
(D34)16
(3C5)16
(79)16
04.10.2022
= (13)10 = (1101)2
= (100110)2
= (111011010)2
= (100101110111)2
= (11010110011010)2
= (110100010)2
= (10010)2
= (110100110100)2
= (1111000101)2
= (1111001)2
Mehmet Barış TABAKCIOĞLU
45
Download