You are on page 1of 54

TEMEL BLGSAYAR BLMLER

Yard. Do. Dr. nal Kk

GR

PROGRAMLAMA VE YAZILIM

Program: belirli bir ii gerekletirmek iin gerekli komutlar dizisi olarak tanmlanabilir. Programlama: Bir program oluturabilmek iin gerekli komutlarn belirlenmesi ve uygun biimde kullanlmasdr. Programlama Dilleri: Bir programn oluturulmasnda kullanlan komutlar, tanmlar ve kurallarn belirtildii programlama aralardr. Yazlm: Belirli bir amac salayan, program yada programlar ve ilgili dkmantasyonlardr.

PROGRAMLAMA DLLERNN SINIFLANDIRILMASI


Alak seviyeli diller Makine dili , sembolik diller (Assembler) Orta seviyeli Diller C , ADA Donanm tanmlama Dilleri: VHDL Yksek seviyeli diller Pascal, Cobol, Fortran, Basic ok yksek seviyeli Diller Grsel diller (Visual C++, Delphi, Visual Basic, Java, C#,..) Veri taban ynetim dilleri (FoxPro,Paradox, Access, SQL,..) Bilimsel diller (Matlab, Mathcad, ..)

Programlama Dillerinin geliimi

Bilgisayarlar tarafndan anlalan tek dil 0 ve 1 lerden oluan makine dilidir. Farkl bilgisayarlar tamamen farkl makine diline sahiptir. Sembolik diller makine diline ok benzerdir, yalnzca saylar yerine semboller kullanlmaktadr (Assembler). Sembolik diller ve daha yukardaki diller, bilgisayarda altrlmadan nce mutlaka makine diline dntrlmelidir.

Makine dilinde arpma


01011110 00000000 00001100 11101111 11101111 10101101 01100010 00000010 10101101 10100010 00000010 11110100 10101110 00000100 11000010 00010110 10011110 11011111 11011111 11111011 11011111 11011111 11111011 10101101 11000101 0000000000000000 0000000000000010 0000000000000101 0000000000001011 0000000000010010 0000000000010101 0000000000010111 0000000000011110 0000000000100001 0000000000100100 0000000000101011

11111000 11101111 11111100 00000011 11101111 01111110 11111000

Bir Assembler rnei


LDI temp,0x80 OUT ACSR,temp LDI temp,0x00 OUT DDRB,temp OUT DDRD,temp LDI temp,0b01000000 ; init PORTD OUT PORTD,temp CLR hat1_time_out CLR hat2_time_out CLR temp LDI ZH,0 ST Z,temp LDI YH,0 ST Y,temp LDI XH,0 ;hat2 temp buffer' boalt LDI YL,hat2_temp_adres ;hat1 temp buffer' boalt LDI ZL,hat1_temp_adres ;ilk deerleri atama blm ; PORTB giri LDI temp,0b01110000 ; PD0,PD1,PD2,PD3 input dierleri output ; Analog Comparator disabled

PROGRAMLAMA DLLERNN TARHES

lk programn, Ada Lovelace tarafndan Charles Babbagen tanmlam olduu Analytical Engine i ile Bernoulli saylarnn hesaplanmasna ilikin makalesinde olduu sylenmektedir. Bu nedenle ilk gerek anlamdaki programlama dillerinden birinin ad Ada Lovelace ansna ADA olarak isimlendirilmitir. 1940 larda ilk modern bilgisayar ortaya ktnda, programclar yalnzca assembly dili kullanarak yazlm yapabiliyorlard. 1950 1960
* FORTRAN (1955), the "FORmula TRANslator * LISP, the "LISt Processor", * COBOL, the COmmon Business Oriented Language * ALGOL Algorithmic Language

1962 - APL 1964 - BASIC 1964 - PL/I 1970 - Pascal 1970 - Forth 1972 - C 1972 - Prolog 1978 - SQL 1983 - Ada 1983 - C++ 1987 - Perl Nesne ynelimli dillerin ortaya k Yapsal programlama

1990 lar, Internet


1991 - Python 1991 - Java 1995 - PHP 2000 - C# Tamam nesne ynelimli dillerdir. Yeni programlama kavramlarndan ziyade, programlamann kolaylamasn ve tanabilirlii amalamaktadrlar

PROGRAMLAMA DLLERNN SINIFLANDIRILMASI


Alak seviyeli diller Assembler, sembolik diller Orta seviyeli Diller C , ADA Donanm tanmlama Dilleri: VHDL Yksek seviyeli diller Pascal, Cobol, Fortran, Basic ok yksek seviyeli Diller Grsel diller (Visual C++, Delphi, Visual Basic, Java, C#,..) Veri taban ynetim dilleri (FoxPro,Paradox, Access, SQL,..) Bilimsel diller (Matlab, Mathcad, ..)

PROGRAMLAMA DLLERNN ZELLKLER


fade yetenei: Uygulamadaki Notasyonlarn, yada algoritmalarn ok fazla deiiklie uramadan kullanlabilmesi Verimlilik: Daha kk ve Hzl bir kod ortaya kabilmesi Esneklik: Programlama kurallarnn, yada argmanlarnn esnek bir biimde kullanlabilmesi Modlerlik: Alt programlama yetenei Tanabilirlik: letim sistemlerine yada alacak ortama gre program zerinde az deiiklik gerekmesi Veri Trleri:Bir dilde dilin doal destei ile eriilebilecek ve trlerinin okluu nemlidir. renme Kolayl Yapsallk: Programlama teknii, modlerlii de destekleyecek biimde bloklar halinde yazmaya dayanr. Genellik: Yalnzca belirli alanlarda deil, her alanda kullanlabilme Nesne Ynelimlilik:Nesne tabanl programlama destei

TEMEL KAVRAMLAR

Bilgisayar Mimarileri-1
Temel Bilgisayar Mimarileri Von-Neumann mimarisi Harvard Mimarisi

Von-Neumann Mimarisi
CPU Kontrol Devresi (r: PC: Program Counter) ALU Bellek I/O

Bilgisayar Mimarileri-2

Program Bellei

PM Adres yolu

DM Adres yolu

CPU
DM Veri yolu

Veri Bellei

PM Veri yolu

Harvard Mimarisi Gnmz tipik bilgisayarlar Von-Neumann Mimarisine sahip Mikroilemciler kullanrken (Intel x86, Pentium, AMD Athlon..) , zellikle Grnt, ses ileme, yksek hz gerektiren uygulamalarda Harward mimarisine sahip mikroilemlerciler (DSPler, ARM Cortex..)

Tipik bir Bilgisayar Sistemi

1. Donanm fiziksel aygtlardr. 2. Yazlm ise yaplmas gereken ileri yapabilmek iin donanma komutlar veren programlar topluluudur.

Bilgisayar yazlmnn trleri

Sistem Yazlm : 1. 2. 3. 4. Aygt Yazlm (Firmware) (BIOS) letim Sistemi Sistem destek yazlm Sistem Gelitirme Yazlm

Uygulama yazlm : 1. Genel Amal 2. Uygulamaya zel

Bilgisayar yazlmnn trleri


Sistem Yazlm
Aygt Yazlm: Sistemi oluturan donanmlarn almas iin gerekli olan yazlmlardr. letim sistemi: Kullanc arayz, a balant arayzleri, Dosya eriimi ve organizasyonu, oklu alma gibi hizmetleri salayan yazlmlardr. rnein: DOS, Windows, Linux, PARDUS, Unix vs.. Sistem destek yazlmlar: Sistemle ilikili faydal yazlmlardr. rnein,Disk formatlayc, hesap makinesi, test ve iletiim yazlmlar, Hyperterminal, Telnet vs.. Sistem Gelitirme Yazlmlar: Bunlar, eitli ktphaneler, Uygulama Program arayz (API) (Winsock, setupapi, mmtools, SAPI, DDK..), Derleyiciler, Debuggerlar..

Bilgisayar yazlmnn trleri


Uygulama Yazlmlar Genel Amal Kelime ilemciler, Veri taban ynetim programlar, SpreadSheet programlar .. zel yazlmlar

Yazlm ve Donanm ilikileri

Uygulama yazlm ile alan kullanclar

Donanmla iletiim halindeki sistem yazlm

Dorudan Sistem yazlm ile etkileim halindeki kullanclar yada Yazlm gelitiriciler

Yazlm Gelitirme Modeli


Yazlm gelitirme modeli, programnzn kalitesini ve baarmn etkileyen kritik bir ilemdir. Eer, programnz dzgn biimde yaplandrlm gelitirme teknikleri ile dikkatlice tasarlarsanz, verimli, hatasz, bakm kolay, anlalabilir bir program elde edersiniz Byk lekli, modern programlama projeleri, yazlm gelitirme yaam sreci olarak birbiri ile ilikili evrelerden oluur rneklerden bir elale (waterfall) yntemidir.

leri ynl gelitirme

Her bir admdaki ilerleme oklarla gsterilmektedir

Yazlm Gelitirme Evreleri


1. Sistem Gereklilikleri : nerilen yazlmn yapmas amalanan ilerin belirlenmesi 2. Analiz : Yazlm asndan farkl alternatiflerin aratrlmas 3. Tasarm : Sistemin nasl ina edileceinin belirlenmesi 4. Kodlama : Program yazma ilemi. 5. Sistem Testi: Tm programlarn birlikte test edilmesi 6. Bakm: Sistemin alr halde tutulmas

Program Gelitirmede Yardmc Aralar-1


1. Yapsal (genellikle Hiyerarik) tablolar

Program Gelitirmede Yardmc Aralar-2


2. Szde (Pseudo) Programlar Szde programlar, dorudan konuma dilinde ve programlama mant altnda, eer, iken gibi koul kelimeleri ve > = < gibi ifadeler ile beraber yazlr. yi bir biimde yazlm, szde koddan, programlama diline kolaylkla geilebilir.
rnek: Verilen bir scaklk derecesine gre suyun durumunu belirten bir szde program yaznz.
rnek Giri/k Bu Program, Scakla gre suyun durumunu gsterir Su, Buz, Buhar ---------------------------------------------------------Ltfen derece cinsinden scakl giriniz : 140 BUHAR elde edeceksiniz.

rnek Szde kod.


1. Program aklama mesaj yaz. 2. Kullancn scakl gimesi iin bir uyar mesaj yaz. 3. Girilen Scakl Oku. 4. Durumu belirle Eer Scaklk > 0 ise Eer Scaklk >= 100 ise Durum = Buhar deilse Durum = Su degilse Durum= Buz 5. Sonucu Yaz

Ak Diyagramlar
Ak Diyagram Sembolleri Sonlandrma Kutusu: Balang yada bitii gsterir

lem kutusu:Bir ilemin almasn temsil eder

Karar Kutusu:Bir karar verilmesi gerektiinde kullanlr.

Ak Diyagramlar
Giri, k kutusu

Balant kutusu

Ak ubuu

Ak Diyagram rnei

Start

Read R

Define variables

false

if R>0
true

Print out the area A

Ask for radius R

area A =3.1416*R2

End

Yazlm Gelitirme Aralar


Editrler- Tmleik gelitirme ortamlar(IDE) Derleyicilerle birlikte kullanlr Derleyiciler- Balayclar (Compilers Linkers) Yorumlayclar (Interpreter)

Editrler
Program kodlarn yazmak iin kullanlan, metin dzenleyicilerdir. Program kodlar saf metin biiminde yazldndan, herhangi bir metin dzenleyicisi, program yazlm iin kullanlabilir. Kodlamadaki hatalar grlmez. Anahtar kelimeler, fonksiyonlar ve parametreleri, vb.. Tanmlar ayr renklendirilmediden kod yaznak daha zordur. Breakpoint, yada watch gibi, hata ayklama unsurlar yoktur. Notepad, Wordpad.. editr olarak kullanlabilir. Program derleme ve balama ilemi editr dnda genellikle komut satr zerinde yaplr.

IDE (Tmleik gelitirme ortam)


Tmleik gelitirme ortamlar, Genellikle derleyicileri balayclar ortam iinden kullanabilmeyi yada derleyici ve balaycya ortam iinden erime yollarn salarlar (Makefile vs..). Bunun yan sra; Derleyici ve balayc tmleik olna yaplarda Hata ayklama, Gzlem penceresi gibi bileenler mevcuttur. Yazm ilemini kolaylatracak vurgulamalar ve uyarlar mevcuttur. Derleyici ve balayc parametreleri menlerden ayarlanabilir. Yardmlar mevcuttur. Her yazlm dilinin kendi IDE si mevcuttur. Ancak baz IDEler birden fazla yazlm dili iin ortam salayabilir.

IDE (Tmleik gelitirme ortam)

Programmers NotePad

Gml sistem programlamas iin Keil uVision3 IDE

Windows Ortamndaki gelitirmeler iin MS VS C++ 6.0

DERLEYCLER BALAYICILAR (COMPILERS - LINKERS


Derleyiciler: Bir derleyici, bir metin editr yada IDE zerinde yazlan program kodlarn, makinenin anlayabilecei OBJ kodlara dntren bir uygulama yazlmdr. Derleyicilerin birou, Program dilinin yansra makine dilinin(assembler) de kullanlmasna izin verir. Balayclar: Bir balayc, derleyici tarafndan derlenmi olan OBJ program kodlarn uygun bellek blgelerine yerletirerek, deikenlerin ve sabitlerin bellek atamalarn ve ilklemelerini gerekleyerek tek bir altrlabilir program elde eden bir uygulama yazlmdr (windows iin exe dosya).
rnek derleyiciler ve balayclar: MS VC++ 6.0 iin CL.exe derleyici, Link.exe balayc Keil uVision 8051 iin c51.exe derleyici, Ld51.exe balayc gcc.exe ak kaynakl cretsiz bir derleyici ve balayc Bir derleyici ve balayc komut satrndan altrlabilecei gibi bir makefile araclyla da altrlabilir.

.c .cpp .pas Editr Derleyici

.obj .out .coff Balayc

.exe .hex .bin

.asm

YORUMLAYICILAR (INTERPRETERS)
Yorumlayclar, program kodunu bir btn olarak deerlendirmez. Program kodunu satr, satr yorumlayarak altrrlar. Bu nedenle gnmzde derleyicilere gre daha kstl uygulamalara sahiptirler, internet uygulamalar ve bilimsel alanda yaygn kullanlmaktadrlar. Baz yorumlayclar, yazlan program satrn, daha etkin bir biime evirip, hemen uygularlar. Bunlar arasnda: Perl, Phyton, Matlab, Mathcad gibi yorumlayclar saylabilir. Baz yorumlayclar ise, yorumlayc sistemin bir paras olan bir derleyici tarafndan nceden derlenip saklanm kodlar uygularlar. Java bunlar arasnda saylabilir.

SAYI SSTEMLER
Gnlk yaantmzda 10 luk say sistemi kullanlr. Ancak, bilgisayar sistemleri 2 lik say sistemini kullanlrlar. 10 luk sistemde taban 10, ikilik sistemde taban 2 dir. Say sistemlerinde sayy oluturan her bir rakam digit olarak adlandrlr. Onluk say sistemlerinde herbir rakam decimal digit yada sadece digit ken, ikilik sistemde binary digit yada ksaca bit olarak adlandrlr. 123456 6 digit lik onlu say

100101 6 bit lik ikili say Say sembolleri 0 .. (Taban 1) arasndadr. Onluk dzende rakamlar 0..9, ikilik dzende rakamlar 0 , 1 den oluur.

Saylarn oluturulmas 123456 = 1*105 + 2*104+ 3*103 + 4*102 + 5*101 + 6*100 100101 = 1*25 + 0*24+ 0*23 + 1*22 + 0*21 + 1*20

BYTE VE WORD ve NIBBLE KAVRAMLARI


Sekiz bitlik ikili saylara bir byte lk saylar denir 10011101 8 bit yada bir byte dr. 16 bit uzunluklu saylara 1 word luk saylar saylar denmesine ramen, bu kavram bazen ilemcinin veri yolu uzunluu kadar bit says ile de eletirilmektedir. 11001001 11100011 2 byte lk yada 1 word luk say. Ayrca her 4 bit, bir Nibble olarak adlandrlr.

POZTF VE NEGATF SAYILAR


Bir bytelk en kk ve en byk pozitif saylara bakalm 00000000 (decimal 0) 11111111 (decimal 255) Buradaki tm saylar, pozitiftir. Bir baka deyile say iaretsizdir. Negatif saylar sz konusu olduunda bu saylarn yarsnn pozitif, yarsnn negatif olduu sylenebilir. rnein 1 bytelk say -127 ile +127 arasnda deiecektir. kilik sistemde negatif saylar, karma ileminin toplama araclyla yaplabilmesini salamak amacyla tmleyen saylarla gsterilir. Tmleyen say, verilen sayy, o bit says iin temsil edilen en byk sayya tamamlayan saydr. (Pratikte bit evirerek yaplr.) rnein 00001010 n tmleyeni 11110101 dir. (255 10). Bu trden tmleyene 1e tmleyen say denir. Dikkat edilirse en arlkl (en soldaki) bit negatif saylar iin 1 olmaktadr. Pratikte pek kullanlmaz, nk burada iki tane 0 sz konusudur (0000 0000 ve 1000 0000) ve ilemcinin dorudan toplamasyla karma elde edilemez.

kiye Tmleyen (2s Complement)


kiye tmleyen sayda tek bir 0 vardr. Saylar -2bitsays-1 .. 0 .. (2bitsays-1 1) arasnda deiir. rnein 8 bit iin -128 ..0 .. 127. kiye tmleyen say aadaki ekilde elde edilir. 2bitsays say rnek : -20 -(0001 0100) saysn 8 bitlik ikili say ile ifade edelim 28 - 20 =256 20 =236= 1110 1100 Pratik yntem sayy evirip 1 eklemektir. 0001 0100 1110 1011 + 1 = 1110 1100 karma ilemi rnein 40 20 yi 2ye tmleyenle hesaplayalm 0010 1000 + 1110 1100 0001 0100 = (20 dec)

Hexadecimal saylar (Hex)


Bilgisayar sistemlerinde uzun bit dizilerini temsil etmek zor olaca iin yazm biimi olarak hexadecimal saylar tercih edilmektedir. Hex saylar 16 lk saylardr. Herbir Nibble bir Hex say ile temsil edilebilir. Bylelikle ikili saynn yazm uzunluu 4 te bir digite decektir. Hex sistemde saylar 16 sembolden oluur ve aadaki gibidir 0000 0001 0010 0011 0 1 2 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F

rnek 0011 1010 = 3A Hex,

1110 0101 = E5 Hex

0101 1101 1100 1001 0110 0111 =5DC967 Hex

KOD SSTEMLER
Bilgisayarlar yalnzca saylarla alrlar, oysa bizim harflere ve dier sembollere de gereksinimimiz vardr. Bu semboller de saylara karlk drlecek biimde kodlanrlar. Program rnein bu say ile karlarsa ekrana karlk den sembol basar, yada klavyeden gelen saynn sembolik karln , yazcdan karr. Bir ok kodlama tr olmasna karn dnyada bilgisayar ortamlarnda ANSI tarafndan 1963 ylnda standartlatrlan ASCII (American National Code for Information Interchange) kodlamas youn olarak kullanlamaktadr. Ancak gnmzde , ASCII kodlar ok dillii salayabilmek iin yetersiz kaldndan UNICODE kodlamas yaygnlamaktadr. Ancak pek ok uygulamada ASCII kodlamas hala geerliliini korumaktadr. ASCII temel olarak 7 bit tir. 127 karakterden oluur. Ama Extended ksmyla birlikte 8 bit kullanlmaktadr. Ancak geniletilmi ksmdaki semboller yazlm ortamna gre deiebilmektedir

ASCII lk 128 sembol

ASCII geniletilmi ksm

C PROGRAMLAMA DL

TARHE VE STANDARTLAMA
C Dili, Dennis Ritchie ve arkadalar tarafndan 1972 ylnda AT&T Bell laboratuarlarnda, genel amal bir dil olarak BCPL ve B dillerinden gelitirilmitir. Unix iletim sistemini yazabilmek amacyla gelitirilmitir. Donanm bamszdr. 1970 lerin sonunda Klasik C ye dnmtr. 1989 ylnda ANSI tarafndan standartlatrlmtr. Standart ANSI tarafndan 1999 da gncellenmitir. Gnmzde hemen hemen tm iletim sistemleri C yada C++ ile yazlmtr. C++ , C nin nesne ynelimli yaplar ieren daha gelimi bir halidir.

C PROGRAMLAMA DLNE GR
C yapsal bir programlama dilidir. C yksek seviyeli bir dildir. Hemen hemen makine ve iletim sistemi bamszdr. Yazlmcnn, programn alaca bilgisayar yerine problem zerine younlamasn salar. C dili, byk kk harf duyarldr.

Temel Kavramlar
Atom (Token): Bir programlama dilinde anlam tayan en kk birimdir.
#include <stdio.h> void main() { int Deger1,Deger2; printf(Ltfen Bir Say Giriniz:\n); scanf(%d,&Deger1); Deger2=Deger1 * Deger1; printf(Saynn Karesi =%d\n,Deger2); }

Burada # include < stdio.h > printf ( Ltfen void main ( ) { int Deger1 , Deger2 ; Bir Say Giriniz:\n ) ; vb.. birer atomdur.

ATOMLARIN SINIFLARI
Atomlar 6 snfa ayrabiliriz. 1. Anahtar kelimeler:Programlama dili iin belli bir anlam tayan ve deiken olarak kullanlmas yasak olan szcklerdir rnek: printf, scanf, include, int 2. Deikenler: Bellekte geici yada kalc bir yer belirten belirli yazm kurallarna gre isimlendirilen atomlardr. rnek: Deger1, Deger2 3. Operatrler: Tanmlanm bir takm ilemleri yapan atomlardr. rnek: +, -, *, / , & , =, ==, <, <<, >> ...

4. Sabitler: Deiken bilgi iermeyen atomlardr. rnek: 10 , 3.14 5. Stringler: ki trnak arasndaki karakterlerden oluan atomlardr. rnek: Ltfen Bir Say Giriniz:\n 6. Ayralar: Ayra ve sonlandrc olarak kullanlan atomlardr. rnek: { , } , ; gibi.

Nesne
Bellekte yer kaplayan ve deerlerine eriilebilen blgelere Nesne denir Nesneler aadaki parametreler ile tanmlanr.
simleri: Nesnelerin yazlmc tarafndan belirlenen addr. Deerleri: Nesnelerin gsterdii bellek blgesindeki deerleridir. Trleri: Nesnelerin, bellekte kaplad yerler ve derleyici tarafndan nasl deerlendirileceidir. rnein char, integer, float vs.. mrleri ve geerli olduu blgeler: Nesnenin mevcut olduu sre ve yazlnn hangi ksmlarnda kullanlabileceini ifade eder.

rnek : z= x+y; a=200; Burada z, x, ve a birer nesnedir. a nesnenin addr, nesnenin deeri 200 dr. Nesne sabit bir deere sahip olabilecei gibi deiken bir deere de sahip olabilir. Buna gre deiken yada sabit olarak isimlendirilir.

fade
Deiken , operatr ve sabitlerin oluturduu ilemlere ifade denir. X-y+1 , 2*x+y gibi..

Sol Taraf Deeri (Left Value)


erisine deer atanabilen nesnelere sol taraf deeri denilir. rnein y=x+2; burada y sol taraf deeridir. x+2 ise sol taraf deeri olmaz. Sol taraf deerleri Deikenler, a,b dizi elemanlar a[1], b[10] Gstericiler *a, **b gibi nesnelerden oluur.

C derleyicisinin ierii
C derleyicileri hz ve verimlilikler assembly diline yakn bir kod retirler. Ancak, bunun yan sra, yksek seviyeli bir dilin zelliklerini de ierirler C derleyicileri, birleik nesneler zerinde ilem yapmaz ( C++ bu konuda farkllamtr) , Giri-k olanaklar sunmaz, dosya eriim yntemleri salamaz. Tm bu yksek seviyeli mekanizmalar, ayrca arlacak bir standart fonksiyonlar ktphanesi ile salanr.

You might also like