Yard. Doç. Dr. Ünal Küçük -...

54
TEMEL BİLGİSAYAR BİLİMLERİ Yard. Doç. Dr. Ünal Küçük

Transcript of Yard. Doç. Dr. Ünal Küçük -...

TEMEL BİLGİSAYAR BİLİMLERİ

Yard. Doç. Dr.Ünal Küçük

GİRİŞ

PROGRAMLAMA VE YAZILIM

Program: belirli bir işi gerçekleştirmek için gerekli komutlar dizisi olarak tanımlanabilir.

Programlama: Bir programı oluşturabilmek için gerekli komutların belirlenmesi ve uygun biçimde kullanılmasıdır.

Programlama Dilleri: Bir programın oluşturulmasında kullanılan komutlar, tanımlar ve kuralların belirtildiği programlama araçlarıdır.

Yazılım: Belirli bir amacı sağlayan, program yada programlar ve ilgili dökümantasyonlardır.

PROGRAMLAMA DİLLERİNİN SINIFLANDIRILMASI

• Alçak seviyeli diller

• Makine dili , sembolik diller (Assembler)

• Orta seviyeli Diller

• C , ADA

• Donanım tanımlama Dilleri: VHDL

• Yüksek seviyeli diller

•Pascal, Cobol, Fortran, Basic

•Çok yüksek seviyeli Diller

•Görsel diller (Visual C++, Delphi, Visual Basic, Java, C#,..)

•Veri tabanı yönetim dilleri (FoxPro,Paradox, Access, SQL,..)

•Bilimsel diller (Matlab, Mathcad, ..)

Programlama Dillerinin gelişimi

Bilgisayarlar tarafından anlaşılan tek dil 0 ve 1 lerden oluşan makine dilidir. Farklı bilgisayarlar tamamen farklı makine diline sahiptir. Sembolik diller makine diline çok benzerdir, yalnızca sayılar yerine semboller kullanılmaktadır (Assembler).

Sembolik diller ve daha yukarıdaki diller, bilgisayarda çaılştırılmadan önce mutlaka makine diline dönüştürülmelidir.

Makine dilinde çarpma

00000000 00000100 000000000000000001011110 00001100 11000010 0000000000000010

11101111 00010110 000000000000010111101111 10011110 0000000000001011

11111000 10101101 11011111 000000000001001001100010 11011111 0000000000010101

11101111 00000010 11111011 000000000001011111111100 10101101 11011111 000000000001111000000011 10100010 11011111 000000000010000111101111 00000010 11111011 000000000010010001111110 11110100 1010110111111000 10101110 11000101 0000000000101011

Bir Assembler Örneği

LDI temp,0x80 ; Analog Comparator disabled

OUT ACSR,temp

LDI temp,0x00

OUT DDRB,temp ; PORTB giriş

LDI temp,0b01110000 ; PD0,PD1,PD2,PD3 input diğerleri output

OUT DDRD,temp

LDI temp,0b01000000 ; init PORTD

OUT PORTD,temp

CLR hat1_time_out ;ilk değerleri atama bölümü

CLR hat2_time_out

CLR temp

LDI ZH,0 ;hat1 temp buffer' ı boşalt

LDI ZL,hat1_temp_adres

ST Z,temp

LDI YH,0 ;hat2 temp buffer' ı boşalt

LDI YL,hat2_temp_adres

ST Y,temp

LDI XH,0

PROGRAMLAMA DİLLERİNİN TARİHÇESİ

İlk programın, Ada Lovelace tarafından Charles Babbage’ın tanımlamış olduğu “Analytical Engine” i ile Bernoulli sayılarının hesaplanmasına ilişkin makalesinde olduğu söylenmektedir. Bu nedenle ilk gerçek anlamdaki programlama dillerinden birinin adı Ada Lovelace anısına ADA olarak isimlendirilmiştir.

1940 larda ilk modern bilgisayar ortaya çıktığında, programcılar yalnızca assembly dili kullanarak yazılım 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

1990 lar, Internet•1991 - Python

•1991 - Java

•1995 - PHP

•2000 - C#

Tamamı nesne yönelimli dillerdir. Yeni programlama kavramlarından ziyade, programlamanın kolaylaşmasını ve taşınabilirliği amaçlamaktadırlar

Nesne yönelimli dillerin ortaya çıkışı

Yapısal programlama

PROGRAMLAMA DİLLERİNİN SINIFLANDIRILMASI

• Alçak seviyeli diller

• Assembler, sembolik diller

• Orta seviyeli Diller

• C , ADA

• Donanım tanımlama Dilleri: VHDL

• Yüksek seviyeli diller

•Pascal, Cobol, Fortran, Basic

•Çok yüksek seviyeli Diller

•Görsel diller (Visual C++, Delphi, Visual Basic, Java, C#,..)

•Veri tabanı yönetim dilleri (FoxPro,Paradox, Access, SQL,..)

•Bilimsel diller (Matlab, Mathcad, ..)

PROGRAMLAMA DİLLERİNİN ÖZELLİKLERİ

•İfade yeteneği: Uygulamadaki Notasyonların, yada algoritmaların çok fazla değişikliğe uğramadan kullanılabilmesi

•Verimlilik: Daha küçük ve Hızlı bir kod ortaya çıkabilmesi

•Esneklik: Programlama kurallarının, yada argümanlarının esnek bir biçimde kullanılabilmesi

•Modülerlik: Alt programlama yeteneği

•Taşınabilirlik: İşletim sistemlerine yada çalışacak ortama göre program üzerinde az değişiklik gerekmesi

•Veri Türleri:Bir dilde dilin doğal desteği ile erişilebilecek vetürlerinin çokluğu önemlidir.

•Öğrenme Kolaylığı

•Yapısallık: Programlama tekniği, modülerliği de destekleyecek biçimde bloklar halinde yazmaya dayanır.

•Genellik: Yalnızca belirli alanlarda değil, her alanda kullanılabilme

•Nesne Yönelimlilik:Nesne tabanlı programlama desteği

TEMEL KAVRAMLAR

Bilgisayar Mimarileri-1

Temel Bilgisayar Mimarileri

•Von-Neumann mimarisi

•Harvard Mimarisi

Kontrol Devresi(Ör: PC: Program Counter)

ALUBellek I/O

CPUVon-Neumann Mimarisi

Bilgisayar Mimarileri-2

PM Veri yolu

PM Adres yoluProgram

Belleği DM Veri yolu

DM Adres yolu Veri

BelleğiCPU

Harvard Mimarisi

Günümüz tipik bilgisayarları Von-Neumann Mimarisine sahip Mikroişlemciler kullanırken (Intel x86, Pentium, AMD Athlon..) , Özellikle Görüntü, ses işleme, yüksek hız gerektiren uygulamalarda Harward mimarisine sahip mikroişlemlerciler (DSP’ler, ARM Cortex..)

Tipik bir Bilgisayar Sistemi

1. Donanım fiziksel aygıtlardır.2. Yazılım ise yapılması gereken işleri yapabilmek için donanıma komutlar veren programlar topluluğudur.

Bilgisayar yazılımının türleri

Sistem Yazılımı : Uygulama yazılımı :

1. Aygıt Yazılımı (Firmware) (BIOS) 1. Genel Amaçlı2. İşletim Sistemi 2. Uygulamaya Özel 3. Sistem destek yazılımı4. Sistem Geliştirme Yazılımı

Bilgisayar yazılımının türleri

Sistem Yazılımı•Aygıt Yazılımı: Sistemi oluşturan donanımların çalışması için gerekli olan yazılımlardır.

•İşletim sistemi: Kullanıcı arayüzü, ağ bağlantı arayüzleri, Dosya erişimi ve organizasyonu, Çoklu çalışma gibi hizmetleri sağlayanyazılımlardır. Örneğin: DOS, Windows, Linux, PARDUS, Unix vs..

•Sistem destek yazılımları: Sistemle ilişkili faydalı yazılımlardır. Örneğin,Disk formatlayıcı, hesap makinesi, test ve iletişim yazılımları, Hyperterminal, Telnet vs..

•Sistem Geliştirme Yazılımları: Bunlar, çeşitli kütüphaneler, Uygulama Programı arayüzü (API) (Winsock, setupapi, mmtools, SAPI, DDK..), Derleyiciler, Debugger’lar..

Bilgisayar yazılımının türleri

Uygulama Yazılımları

•Genel Amaçlı

•Kelime işlemciler, Veri tabanı yönetim programları, SpreadSheet programları ..

•Özel yazılımlar

Yazılım ve Donanım ilişkileri

Doğrudan Sistem yazılımı ile etkileşim halindeki kullanıcılar yada Yazılım geliştiriciler

Donanımla iletişim halindeki sistem yazılımı

Uygulama yazılımı ile çalışan kullanıcılar

Yazılım Geliştirme Modeli

Yazılım geliştirme modeli, programınızın kalitesini ve başarımını etkileyen kritik bir işlemdir.Eğer, programınızı düzgün biçimde yapılandırılmış geliştirme teknikleri ile dikkatlice tasarlarsanız, verimli, hatasız, bakımı kolay, anlaşılabilir bir program elde edersinizBüyük ölçekli, modern programlama projeleri, yazılım geliştirme yaşam süreci olarak birbiri ile ilişkili evrelerden oluşurÖrneklerden bir şelale (waterfall) yöntemidir.

Her bir adımdaki ilerleme oklarla gösterilmektedir

İleri yönlü geliştirme

Yazılım Geliştirme Evreleri

1. Sistem Gereklilikleri : Önerilen yazılımın yapması amaçlananişlerin belirlenmesi

2. Analiz : Yazılım açısından farklı alternatiflerin araştırılması3. Tasarım : Sistemin nasıl inşa edileceğinin belirlenmesi4. Kodlama : Program yazma işlemi.5. Sistem Testi: Tüm programların birlikte test edilmesi6. Bakım: Sistemin çalışır halde tutulması

Program Geliştirmede Yardımcı Araçlar-1

1. Yapısal (genellikle Hiyerarşik) tablolar

Program Geliştirmede Yardımcı Araçlar-2

2. Sözde (Pseudo) Programlar

Sözde programlar, doğrudan konuşma dilindeve programlama mantığı altında, eğer, iken gibi koşul kelimeleri ve > = < gibi ifadeler ile beraber yazılır. İyi bir biçimde yazılmış, sözde koddan, programlama diline kolaylıkla geçilebilir.

Örnek: Verilen bir sıcaklık derecesine göre suyun durumunu belirten bir sözde program yazınız.•Örnek Giriş/Çıkış

–Bu Program, Sıcaklığa göre suyun durumunu gösterir–Su, Buz, Buhar–----------------------------------------------------------–Lütfen derece cinsinden sıcaklığı giriniz : 140–BUHAR elde edeceksiniz.

Örnek Sözde kod.

1. Program açıklama mesajı yaz.2. Kullanıcın sıcaklığı gimesi için bir uyarı mesajı yaz.3. Girilen Sıcaklığı Oku.4. Durumu belirle– Eğer Sıcaklık > 0 ise – Eğer Sıcaklık >= 100 ise– Durum = “Buhar”– değilse– Durum = “Su”– degilse– Durum= “Buz”

5. Sonucu Yaz

Akış Diyagramları

Akış Diyagramı Sembolleri

Sonlandırma Kutusu:Başlangıç yada bitişi gösterir

İşlem kutusu:Bir işlemin çalışmasını temsil eder

Karar Kutusu:Bir karar verilmesi gerektiğinde kullanılır.

Akış Diyagramları

Giriş, Çıkış kutusu

Bağlantı kutusu

Akış çubuğu

Akış Diyagramı ÖrneğiAkış Diyagramı Örneği

Start

Definevariables

Read R

ifR > 0

area A

=3.1416*R2

EndAsk forradius R

Print outthe area

A

true

false

1

1

Yazılım Geliştirme Araçları

•Editörler- Tümleşik geliştirme ortamları(IDE)

•Derleyicilerle birlikte kullanılır

•Derleyiciler- Bağlayıcılar (Compilers – Linkers)

•Yorumlayıcılar (Interpreter)

EditörlerProgram kodlarını yazmak için kullanılan, metin düzenleyicilerdir.

Program kodları saf metin biçiminde yazıldığından, herhangi bir metin düzenleyicisi, program yazılımı için kullanılabilir.

•Kodlamadaki hatalar görülmez.

•Anahtar kelimeler, fonksiyonlar ve parametreleri, vb.. Tanımlarayrı renklendirilmediğden kod yaznak daha zordur.

•Breakpoint, yada watch gibi, hata ayıklama unsurları yoktur.

•Notepad, Wordpad.. editör olarak kullanılabilir.

•Program derleme ve bağlama işlemi editör dışında genellikle komut satırı üzerinde yapılır.

IDE (Tümleşik geliştirme ortamı)

Tümleşik geliştirme ortamları, Genellikle derleyicileri –bağlayıcıları ortam içinden kullanabilmeyi yada derleyici ve bağlayıcıya ortam içinden erişme yollarını sağlarlar (Makefilevs..). Bunun yanı sıra;

•Derleyici ve bağlayıcı tümleşik olna yapılarda Hata ayıklama, Gözlem penceresi gibi bileşenler mevcuttur.

•Yazım işlemini kolaylaştıracak vurgulamalar ve uyarılar mevcuttur.

•Derleyici ve bağlayıcı parametreleri menülerden ayarlanabilir.

•Yardımlar mevcuttur.

•Her yazılım dilinin kendi IDE si mevcuttur. Ancak bazı IDE’ler birden fazla yazılım dili için ortam sağlayabilir.

IDE (Tümleşik geliştirme ortamı)

Programmer’s NotePad

Gömülü sistem programlaması için Keil uVision3 IDE

Windows Ortamındaki geliştirmeler için MS VS C++ 6.0

DERLEYİCİLER –BAĞLAYICILAR (COMPILERS - LINKERS

Derleyiciler: Bir derleyici, bir metin editörü yada IDE üzerinde yazılan program kodlarını, makinenin anlayabileceği OBJ kodlara dönüştüren bir uygulama yazılımıdır. Derleyicilerin birçoğu, Program dilinin yanısıra makine dilinin(assembler) de kullanılmasına izin verir.

Bağlayıcılar: Bir bağlayıcı, derleyici tarafından derlenmiş olan OBJ program kodlarını uygun bellek bölgelerine yerleştirerek, değişkenlerin ve sabitlerin bellek atamalarını ve ilklemelerini gerçekleyerek tek bir çalıştırılabilir program elde eden bir uygulama yazılımıdır (windows için exe dosya).

Örnek derleyiciler ve bağlayıcılar:

MS VC++ 6.0 için CL.exe derleyici, Link.exe bağlayıcı

Keil uVision 8051 için c51.exe derleyici, Ld51.exe bağlayıcı

gcc.exe açık kaynaklı ücretsiz bir derleyici ve bağlayıcı

Bir derleyici ve bağlayıcı komut satırından çalıştırılabileceği gibi bir makefilearacılığıyla da çalıştırılabilir.

Editör Derleyici Bağlayıcı

.c

.cpp

.pas

.obj

.out

.coff

.exe

.hex

.bin

.asm

YORUMLAYICILAR (INTERPRETERS)

Yorumlayıcılar, program kodunu bir bütün olarak değerlendirmez. Program kodunu satır, satır yorumlayarak çalıştırırlar. Bu nedenle günümüzde derleyicilere göre daha kısıtlı uygulamalara sahiptirler, internet uygulamaları ve bilimsel alanda yaygın kullanılmaktadırlar.

•Bazı yorumlayıcılar, yazılan program satırını, daha etkin bir biçime çevirip, hemen uygularlar. Bunlar arasında: Perl, Phyton, Matlab, Mathcad gibi yorumlayıcılar sayılabilir.

•Bazı yorumlayıcılar ise, yorumlayıcı sistemin bir parçası olan bir derleyici tarafından önceden derlenip saklanmış kodları uygularlar. Java bunlar arasında sayılabilir.

SAYI SİSTEMLERİ

Günlük yaşantımızda 10 luk sayı sistemi kullanılır. Ancak, bilgisayar sistemleri 2 lik sayı sistemini kullanılırlar. 10 luk sistemde taban 10, ikilik sistemde taban 2 dir.

Sayı sistemlerinde sayıyı oluşturan her bir rakam digit olarak adlandırılır. Onluk sayı sistemlerinde herbir rakam decimal digit yada sadece digit ken, ikilik sistemde binary digit yada kısaca bit olarak adlandırılır.

123456 6 digit lik onlu sayı

100101 6 bit lik ikili sayı

Sayı sembolleri 0 .. (Taban –1) arasındadır.

Onluk düzende rakamlar 0..9, ikilik düzende rakamlar 0 , 1 den oluşur.

Sayıların oluşturulması

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 sayılara bir byte lık sayılar denir

10011101 8 bit yada bir byte dır.

16 bit uzunluklu sayılara 1 word luk sayılar sayılar denmesine rağmen, bu kavram bazen işlemcinin veri yolu uzunluğu kadar bit sayısı ile de eşleştirilmektedir.

11001001 11100011 2 byte lık yada 1 word luk sayı.

Ayrıca her 4 bit, bir Nibble olarak adlandırılır.

POZİTİF VE NEGATİF SAYILAR

Bir byte’lık en küçük ve en büyük pozitif sayılara bakalım

00000000 (decimal 0)

11111111 (decimal 255)

Buradaki tüm sayılar, pozitiftir. Bir başka deyişle sayı işaretsizdir. Negatif sayılar söz konusu olduğunda bu sayıların yarısının pozitif, yarısının negatif olduğu söylenebilir.

Örneğin 1 byte’lık sayı -127 ile +127 arasında değişecektir.

İkilik sistemde negatif sayılar, çıkarma işleminin toplama aracılığıyla yapılabilmesini sağlamak amacıyla tümleyen sayılarla gösterilir.

Tümleyen sayı, verilen sayıyı, o bit sayısı için temsil edilen en büyük sayıya tamamlayan sayıdır. (Pratikte bit evirerek yapılır.)

Örneğin 00001010 ın tümleyeni 11110101 dir. (255 – 10). Bu türden tümleyene 1’e tümleyen sayı denir. Dikkat edilirse en ağırlıklı (en soldaki) bit negatif sayılar için 1 olmaktadır. Pratikte pek kullanılmaz, çünkü burada iki tane 0 söz konusudur (0000 0000 ve 1000 0000) ve işlemcinin doğrudan toplamasıyla çıkarma elde edilemez.

İkiye Tümleyen (2’s Complement)

İkiye tümleyen sayıda tek bir 0 vardır. Sayılar -2bitsayısı-1 .. 0 .. (2bitsayısı-1 – 1) arasında değişir. Örneğin 8 bit için -128 ..0 .. 127.

İkiye tümleyen sayı aşağıdaki şekilde elde edilir.

2bitsayısı – sayı

Örnek : -20 -(0001 0100) sayısını 8 bitlik ikili sayı ile ifade edelim 28 - 20 =256 –20 =236= 1110 1100

Pratik yöntem sayıyı evirip 1 eklemektir.

0001 0100

1110 1011 + 1 = 1110 1100

Çıkarma işlemi

Örneğin 40 –20 yi 2’ye tümleyenle hesaplayalım

0010 1000

+ 1110 1100

0001 0100 = (20 dec)

Hexadecimal sayılar (Hex)

Bilgisayar sistemlerinde uzun bit dizilerini temsil etmek zor olacağı için yazım biçimi olarak hexadecimal sayılar tercih edilmektedir. Hex sayılar 16 lık sayılardır. Herbir Nibble bir Hex sayı ile temsil edilebilir. Böylelikle ikili sayının yazım uzunluğu 4 te bir digite düşecektir.

Hex sistemde sayılar 16 sembolden oluşur ve aşağıdaki gibidir

0000 0 0100 4 1000 8 1100 C

0001 1 0101 5 1001 9 1101 D

0010 2 0110 6 1010 A 1110 E

0011 3 0111 7 1011 B 1111 F

Örnek 0011 1010 = 3A Hex, 1110 0101 = E5 Hex

0101 1101 1100 1001 0110 0111 =5DC967 Hex

KOD SİSTEMLERİ

Bilgisayarlar yalnızca sayılarla çalışırlar, oysa bizim harflere ve diğer sembollere de gereksinimimiz vardır. Bu semboller de sayılara karşılık düşürülecek biçimde kodlanırlar. Program örneğin bu sayı ile karşılaşırsa ekrana karşılık düşen sembolü basar, yada klavyeden gelen sayının sembolik karşılığını , yazıcıdan çıkarır.

Bir çok kodlama türü olmasına karşın dünyada bilgisayar ortamlarında ANSI tarafından 1963 yılında standartlaştırılanASCII (American National Code for Information Interchange) kodlaması yoğun olarak kullanılamaktadır. Ancak günümüzde , ASCII kodları çok dilliği sağlayabilmek için yetersiz kaldığından UNICODE kodlaması yaygınlaşmaktadır. Ancak pek çok uygulamada ASCII kodlaması hala geçerliliğini korumaktadır.

ASCII temel olarak 7 bit’ tir. 127 karakterden oluşur. Ama Extended kısmıyla birlikte 8 bit kullanılmaktadır. Ancak genişletilmiş kısımdaki semboller yazılım ortamına göre değişebilmektedir

ASCII İlk 128 sembol

ASCII genişletilmiş kısım

C

PROGRAMLAMA

DİLİ

TARİHÇE VE STANDARTLAŞMA

C Dili, C Dili, Dennis RitchieDennis Ritchie ve arkadaşları tarafından 1972 yılında ve arkadaşları tarafından 1972 yılında AT&T Bell AT&T Bell laboratuarlarında, genel amaçlı bir dil olarak BCPL laboratuarlarında, genel amaçlı bir dil olarak BCPL ve B dillerinden geliştirilmiştir.ve B dillerinden geliştirilmiştir.

Unix Unix işletim sistemini yazabilmek amacıyla geliştirilmiştir.işletim sistemini yazabilmek amacıyla geliştirilmiştir.

Donanım bağımsızdır.Donanım bağımsızdır.

1970 1970 lerin lerin sonunda Klasik C ye dönüşmüştür.sonunda Klasik C ye dönüşmüştür.

1989 yılında ANSI tarafından standartlaştırılmıştır. Standart 1989 yılında ANSI tarafından standartlaştırılmıştır. Standart ANSI tarafından 1999 da güncellenmiştir. ANSI tarafından 1999 da güncellenmiştir.

Günümüzde hemen hemen tüm işletim sistemleri C yada Günümüzde hemen hemen tüm işletim sistemleri C yada C++ ile yazılmıştırC++ ile yazılmıştır..

C++ C++ , C , C nin nin nesne yönelimli yapılar içeren daha gelişmiş bir nesne yönelimli yapılar içeren daha gelişmiş bir halidir. halidir.

C PROGRAMLAMA DİLİNE GİRİŞ

•C yapısal bir programlama dilidir.

•C yüksek seviyeli bir dildir.

• Hemen hemen makine ve işletim sistemi bağımsızdır.

• Yazılımcının, programın çalışacağı bilgisayar yerine problem üzerine yoğunlaşmasını sağlar.

• C dili, büyük küçük harf duyarlıdır.

Temel KavramlarAtom (Token): Bir programlama dilinde anlam taşıyan en küçük birimdir.

#include <stdio.h>

void main()

{

int Deger1,Deger2;

printf(“Lütfen Bir Sayı Giriniz:\n”);

scanf(“%d”,&Deger1);

Deger2=Deger1 * Deger1;

printf(“Sayının Karesi =%d\n”,Deger2);

}

Burada

# include < stdio.h >

void main ( ) { int Deger1 , Deger2 ; printf ( “Lütfen Bir Sayı Giriniz:\n” ) ;

vb.. birer atomdur.

ATOMLARIN SINIFLARI

Atomları 6 sınıfa ayırabiliriz.

1. Anahtar kelimeler:Programlama dili için belli bir anlam taşıyan ve değişken olarak kullanılması yasak olan sözcüklerdir

Örnek: printf, scanf, include, int

2. Değişkenler: Bellekte geçici yada kalıcı bir yer belirten belirli yazım kurallarına göre isimlendirilen atomlardır.

Örnek: Deger1, Deger2

3. Operatörler: Tanımlanmış bir takım işlemleri yapan atomlardır.

Örnek: +, -, *, / , & , =, ==, <, <<, >> ...

4. Sabitler: Değişken bilgi içermeyen atomlardır.

Örnek: 10 , 3.14

5. String’ler: İki tırnak arasındaki karakterlerden oluşan atomlardır.

Örnek: “Lütfen Bir Sayı Giriniz:\n”

6. Ayraçlar: Ayraç ve sonlandırıcı olarak kullanılan atomlardır.

Örnek: { , } , ; gibi.

Nesne

•Bellekte yer kaplayan ve değerlerine erişilebilen bölgelere Nesne denir

• Nesneler aşağıdaki parametreler ile tanımlanır.

•İsimleri: Nesnelerin yazılımcı tarafından belirlenen adıdır.

•Değerleri: Nesnelerin gösterdiği bellek bölgesindeki değerleridir.

•Türleri: Nesnelerin, bellekte kapladığı yerler ve derleyici tarafından nasıl değerlendirileceğidir. Örneğin char, integer, float vs..

•Ömürleri ve geçerli olduğu bölgeler: Nesnenin mevcut olduğu süre ve yazılının hangi kısımlarında kullanılabileceğini ifade eder.

Örnek : z= x+y;

a=200;

Burada z, x, ve a birer nesnedir.

a nesnenin adıdır, nesnenin değeri 200 dür.

Nesne sabit bir değere sahip olabileceği gibi değişken bir değere de sahip olabilir.

Buna göre değişken yada sabit olarak isimlendirilir.

İfadeDeğişken , operatör ve sabitlerin oluşturduğu işlemlere ifade denir.

X-y+1 , 2*x+y gibi..

Sol Taraf Değeri (Left Value)

İçerisine değer atanabilen nesnelere sol taraf değeri denilir.

Örneğin y=x+2; burada y sol taraf değeridir.

x+2 ise sol taraf değeri olmaz.

•Sol taraf değerleri

•Değişkenler, a,b

• dizi elemanları a[1], b[10]

•Göstericiler *a, **b

gibi nesnelerden oluşur.

C derleyicisinin içeriği

C derleyicileri hız ve verimlilikler assembly diline yakın bir kod üretirler. Ancak, bunun yanı sıra, yüksek seviyeli bir dilin özelliklerini de içerirlerC derleyicileri, birleşik nesneler üzerinde işlem yapmaz ( C++ bu konuda farklılaşmıştır) , Giriş-Çıkış olanakları sunmaz, dosya erişim yöntemleri sağlamaz. Tüm bu yüksek seviyeli mekanizmalar, ayrıca çağrılacak bir standart fonksiyonlar kütüphanesi ile sağlanır.