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



Benzer belgeler
Bilgisayarların Gelişimi

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

1.BÖLÜM. Temel Kavramlar ve Tanımlar

Dr. Fatih AY Tel: fatihay@fatihay.net

PROGRAMLAMA TEMELLERİ

Bilgisayarda Programlama. Temel Kavramlar

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Bilgisayar Programlama Dilleri

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

Temel Bilgisayar (Basic Computer) Yazılım (Software)

ALGORİTMA VE PROGRAMLAMA. Öğr. Gör. Dr. Umut Engin AYTEN

PROGRAMLAMAYA GİRİŞ DERS 2

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

C Dersi Bölüm 1. Bilgisayar Donanımı

Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır.

BİLGİSAYAR ORGANİZASYONU

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

BMT 101 Algoritma ve Programlama I Güz Dönemi. Yük. Müh. Köksal Gündoğdu 1

Algoritma ve Akış Diyagramları

C++ Dersi: Nesne Tabanlı Programlama

5. PROGRAMLA DİLLERİ. 5.1 Giriş

3.3. İki Tabanlı Sayı Sisteminde Dört İşlem

1.1. Yazılım Geliştirme Süreci

Programlama Dillerinde Kullanılan Veri Tipleri

KODLAMAYA HAZIRLIK MODÜLÜ 1. YAZILI SINAV ÇALIŞMA SORULARI VE MODÜL ÖZETİ

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

Program Nedir?(1) Programlamaya Giriş

Bilgisayar Programlama. 1.Hafta

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

C Programlama Dilininin Basit Yapıları

2. Sayı Sistemleri. En küçük bellek birimi sadece 0 ve 1 değerlerini alabilen ikili sayı sisteminde bir basamağa denk gelen Bit tir.

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

MAK 1005 Bilgisayar Programlamaya Giriş. BİLGİSAYARA GİRİŞ ve ALGORİTMA KAVRAMI

Algoritmalar ve Programlama. Algoritma

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Giriş MİKROİŞLEMCİ SİSTEMLERİ. Elektronik Öncesi Kuşak. Bilgisayar Tarihi. Elektronik Kuşak. Elektronik Kuşak. Bilgisayar teknolojisindeki gelişme

ALGORİTMA VE PROGRAMLAMA I

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

Ünite-3 Bilgisayar Yazılımı.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

BÖLÜM 1: PROGRAMLAMAYA GİRİŞ

C PROGRAMLAMA DİLİ. Hedefler

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Algoritmalar ve Programlama. DERS - 2 Yrd. Doç. Dr. Ahmet SERBES

1. PROGRAMLAMAYA GİRİŞ

ALGORİTMA VE PROGRAMLAMA II

BİT in Temel Bileşenleri (Yazılım-1)

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

PROGRAMLAMAYA GİRİŞ DERS NOTLARI

2. Sayı Sistemleri. En küçük bellek birimi sadece 0 ve 1 değerlerini alabilen ikili sayı sisteminde bir basamağa denk gelen Bit tir.

BİL1002 Bilgisayar Programlama PROF.DR.TOLGA ELBİR

Programlama Dilinin Özellikleri

Konular MİKROİŞLEMCİ SİSTEMLERİ. Giriş. Bilgisayar Tarihi. Elektronik Kuşak. Elektronik Öncesi Kuşak

Bölüm1. İlk Bilgiler ISBN

KBÜ. TBP101 Programlama Temelleri. Öğr. Gör. Dr. Abdullah ELEN KARABÜK ÜNİVERSİTESİ.

ELN1001 BİLGİSAYAR PROGRAMLAMA I

4. Bölüm Programlamaya Giriş

C# nedir,.net Framework nedir?

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu


Hafta 1 Programlamaya Giriş

PASCAL PROGRAMLAMA DİLİ YAPISI

ALGORİTMA VE PROGRAMLAMA II

Hafta 7 C Programlama Diline Giriş ve C Derleyicisi

BLG 1306 Temel Bilgisayar Programlama

Algoritma ve Programlama: Karar Yapıları ve Döngüler

8. İŞARETCİLER (POINTERS)

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-1 Temel Kavramlar ve Algoritma

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

1 PROGRAMLAMAYA GİRİŞ

Bilgisayar Mimarisi Nedir?

Algoritma ve Akış Diyagramları

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

Bölüm 1. Bilgisayarlar ve C++ Programlama. Doç.Dr. Yıldıray Yalman. Kaynak: Problem Solving with C++, Walter Savitch Slide 1

A.Ü. GAMA MYO. Elektrik ve Enerji Bölümü ALGORİTMA VE PROGRAMLAMA 1.HAFTA

Bilgisayar Programı Nedir?

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

HSancak Nesne Tabanlı Programlama I Ders Notları

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Java Temel Özellikleri

PROGRAMLAMA TEMELLER. C Program Yap s

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

Temel Giriş/Çıkış Fonksiyonları

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

C PROGRAMLAMA D İ L İ

3. Bölüm Algoritmalar

Giriş. ENF102 Jeoloji

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

2. Bölüm Programlama Bilgisi

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Yrd.Doç.Dr. Celal Murat KANDEMİR. Kodlama (Coding) : Bir nesneler kümesinin bir dizgi (bit dizisi) kümesi ile temsil edilmesidir.

Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir.

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Transkript:

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 0000000000000000 01011110 00001100 11000010 0000000000000010 11101111 00010110 0000000000000101 11101111 10011110 0000000000001011 11111000 10101101 11011111 0000000000010010 01100010 11011111 0000000000010101 11101111 00000010 11111011 0000000000010111 11111100 10101101 11011111 0000000000011110 00000011 10100010 11011111 0000000000100001 11101111 00000010 11111011 0000000000100100 01111110 11110100 10101101 11111000 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 Yapısal programlama Nesne yönelimli dillerin ortaya çıkışı 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

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 ve tü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 Von-Neumann Mimarisi CPU Kontrol Devresi (Ör: PC: Program Counter) ALU Bellek I/O

Bilgisayar Mimarileri-2 Program Belleği PM Adres yolu PM Veri yolu CPU DM Adres yolu DM Veri yolu Veri Belleği 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ğlayan yazı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 Uygulama yazılımı ile çalışan kullanıcılar Donanımla iletişim halindeki sistem yazılımı Doğrudan Sistem yazılımı ile etkileşim halindeki kullanıcılar yada Yazılım geliştiriciler

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 edersiniz Bü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çlanan iş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 belirlenmesi 4. Kodlama : Program yazma işlemi. 5. Sistem Testi: Tüm programların birlikte test edilmesi 6. 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 dilinde ve 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ği Start Read R 1 Define variables false if R > 0 Print out the area A Ask for radius R true area A =3.1416*R 2 End 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örler Program 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ımlar ayrı 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 (Makefile vs..). 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 makefile aracılığıyla da çalıştırılabilir.

.c.cpp.pas.obj.out.coff Editör Derleyici Bağlayıcı.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*10 5 + 2*10 4 + 3*10 3 + 4*10 2 + 5*10 1 + 6*10 0 100101 = 1*2 5 + 0*2 4 + 0*2 3 + 1*2 2 + 0*2 1 + 1*2 0

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 -2 bitsayısı-1.. 0.. (2 bitsayı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. 2 bitsayısı sayı Örnek : -20 -(0001 0100) sayısını 8 bitlik ikili sayı ile ifade edelim 2 8-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ılan ASCII (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, Dennis Ritchie ve arkadaşları tarafından 1972 yılında AT&T Bell laboratuarlarında, genel amaçlı bir dil olarak BCPL ve B dillerinden geliştirilmiştir. Unix işletim sistemini yazabilmek amacıyla geliştirilmiştir. Donanım bağımsızdır. 1970 lerin sonunda Klasik C ye dönüşmüştür. 1989 yılında ANSI tarafından standartlaştırılmıştır. Standart ANSI tarafından 1999 da güncellenmiştir. Günümüzde hemen hemen tüm işletim sistemleri C yada C++ ile yazılmıştır. C++, C nin nesne yönelimli yapılar içeren daha gelişmiş bir 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 Kavramlar Atom (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. İfade Değ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çerirler C 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.