ELN1001 BİLGİSAYAR PROGRAMLAMA I



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

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

Dr. Fatih AY Tel: fatihay@fatihay.net

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

Bilgisayar Programlama Dilleri

Linux Assembly Programlamaya Giriş

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

PROGRAMLAMA TEMELLERİ

Bilgisayar Programlama. 1.Hafta

Bilgisayarda Programlama. Temel Kavramlar

C++ Dersi: Nesne Tabanlı Programlama

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

5. PROGRAMLA DİLLERİ. 5.1 Giriş

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

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

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

Program Nedir?(1) Programlamaya Giriş

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

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

ALGORİTMA VE PROGRAMLAMA I DERS#3

ALGORİTMA VE PROGRAMLAMA I

Bigisayar Programlama (GÜZ 2015)

PROGRAMLAMAYA GİRİŞ DERS NOTLARI

Bilgisayarın Yapıtaşları

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

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

Programlama Dilinin Özellikleri

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Yrd. Doç. Dr. İlhan AYDIN Güz Dönemi Fırat Üniversitesi Bilgisayar Mühendisliği Bölümü

C PROGRAMLAMA DİLİ. Hedefler

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

BİLGİSAYAR ORGANİZASYONU

Yazılım Mühendisliğine Giriş 2018 GÜZ

PROGRAMLAMAYA GİRİŞ DERS 2

Açık Kaynak Kodlu Yazılım

Hafta 7 C Programlama Diline Giriş ve C Derleyicisi

Bölüm1. İlk Bilgiler ISBN

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.

C Programlama Dili'ne Giriş

Bilgisayar Yazılımları

İŞ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

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

BİLGİ İŞLEM DERS 1. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ

Bölüm 1. Ön Hazırlıklar ISBN

Java Temel Özellikleri

1.PROGRAMLAMAYA GİRİŞ

İŞLETİM SİSTEMLERİ. (Operating Systems)

Öğr. Gör. Serkan AKSU 1

İNTERNET PROGRAMCILIĞI - II

4. Bölüm Programlamaya Giriş

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

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

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma

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

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

Bahar. BM 211 Programlama Dilleri 3 1

BBS515 Nesneye Yönelik Programlama. Ders 1 Zümra Kavafoğlu

1. PROGRAMLAMAYA GİRİŞ

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

C PROGRAMLAMA D İ L İ

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

Windows Programlama Güz Dönemi

PROGRAMLAMA DİLLERİ. Programlama Dilleri Programlama Dillerinin Önemi Dilleri Sınıflandırılması Anlambilim BNF Notasyonu Kontrol Deyimleri

R ile Programlamaya Giriş ve Uygulamalar

Algoritma ve Programlamaya Giriş. Mustafa Kemal Üniversitesi Kırıkhan Meslek Yüksekokulu Bilgisayar Teknolojileri Bölümü

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

Bilgisayar Mimarisi Nedir?

Ana Bellek (RAM) İşlemci (CPU) Depolama

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

Doğu Akdeniz Üniversitesi Bilgisayar ve Teknoloji Yüksek Okulu Bilgi teknolojileri ve Programcılığı Bölümü DERS 1 - BİLGİSAYAR VE ÇEVRE ÜNİTELERİ

Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması

Algoritma ve Programlamaya Giriş. Mustafa Kemal Üniversitesi Kırıkhan Meslek Yüksekokulu Bilgisayar Teknolojileri Bölümü

CSD İŞLETİM SİSTEMİNDE SİSTEM FONKSİYONLARININ ÇAĞIRILMASI

GÖRSEL PROGRAMLAMA - I

Temel Bilgisayar Programlama

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1

Hacettepe Robot Topluluğu

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

Bigisayar Programlama

Veritabanı. Ders 2 VERİTABANI

Yazılım Mühendisliği 1

Yazılım Mühendisliğine Giriş 2018 GÜZ

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

int faktoriyel(int sayi) { int sonuc = 1; for(int i=sayi;i>0;i--) sonuc*=i; return sonuc; } int main() { int sayi = faktoriyel(5); }

10.DERS Yazılım Gerçekleştirme

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-7 C Programlama Diline Giriş

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Linux ve Windows Üzerinde C ve C++ Kullanımı

AÇIK KAYNAK KODLU İŞLETİM SİSTEMLERİ DERS NOTLARI 1-İşletim Sisteminin görevi nedir? En çok kullanılan işletim sistemleri nelerdir?

C++ Programming: Program Design Including Data Structures, Third Edition. Bölüm 1: Bilgisayarlar ve Programlama Dillerine Kısa Bakış

Genel Programlama I

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

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

C# nedir,.net Framework nedir?

Bilgisayar Programlama. Programlama nedir? Program nasıl yazılır?

SIMAN KULLANIM KILAVUZU

Programlama Temelleri. Ders notları. Öğr.Gör. Hüseyin Bilal MACİT 2017

Kaynak Kodlardan Derleme. Turquaz Muhasebe. Versiyon 0.2. Hüseyin Ergün. 26 Mart 2005

Transkript:

ELN1001 BİLGİSAYAR PROGRAMLAMA I Bilgisayar Programlamaya Giriş Temel Programlama Kavramları Programlama Dilleri Program Oluşturma Teknikleri C++ Programlama Diline Giriş Temel Programlama Kavramları Bilgisayar nedir? Donanım Yazılım İşletim Sistemi Kullanıcı Programları Programlama nedir? Programlama dili nedir? Programcı kimdir? 1

BİLGİSAYAR - DONANIM ÇIKIŞ GİRİŞ -ÇIKIŞ İŞLEM GİRİŞ DEPOLAMA BİLGİSAYAR - YAZILIM Linux Debian FreeBSD 2

Programlama Nedir? Temel olarak, bilgisayar yardımıyla bir sorunun çözümü veya bir görevin gerçekleştirilmesi sürecinin, anahtar faaliyetidir. Programlama faaliyeti birkaç şekilde tanımlanabilir: Bilgisayara ne yapacağını anlatan komutların oluşturulması Bilgisayar programının oluşturulması için gerçekleştirilen adımlar dizisi Kaynak kodunun yazılması, test edilmesi ve çalıştırılması Genel olarak yazılımın oluşturulması Dahası Mimari ve tasarım Planlama Takım çalışması İletişim Öğrenme (ömür boyu sürecek) Deneyim 3

Kaynak Kodu nedir? Genel olarak kaynak veya sadece kod olarak adlandırılır. Belirli bir programlama dilinde yazılmış olan ifadelerin ve tanımların dizisidir. Bir veya daha fazla yazı dosyasında tutulur. Bilgisayar programının oluşturulması için gereken tüm kaynak kodlarının biraraya toplanması gerekmektedir. Örnek: Kaynak Kodu 4

PROGRAMLAMA DİLLERİ Programlama Dili nedir? 1GL Programlama Dili 2GL Programlama Dili 3GL ve üstü Yüksek Seviye Programlama Dilleri Programlama Dili nedir? Bilgisayar programlarının yazılması için kullanılan dil Bilgisayarın davranışlarını kontrol etmek için kullanılan sanal bir dil Sözdizimsel(syntactic) ve anlamsal (semantic) kurallarla tanımlı Doğal insan dilleriyle büyük benzerlik taşımaktadır: Anlaşılması için doğru kullanılmalıdır. Fakat doğal dillerin özgürlüğüne sahip değildir. 5

Programlama Dilleri 1GL Herhangi bir bilgisayarın anlayabileceği ve çalıştırabileceği tek bir dil vardır: Doğal ikilik(binary) makine kodu Bir bilgisayar programının yazılması için olası en düşük seviyeli dil makine kodudur. Program yazımında bit ve byte lar kullanılır: Bit 1 0 tek haneli bir binari (ikilik sayı) Byte 0 0 1 1 0 1 1 0 54 (8 bitlik ifade) 1GL 1. Nesil programlama dili olarak adlandırılır. Programlama Dili 1GL Kod Örneği: 8B542408 83FA0077 06B80000 0000C383 FA027706 B8010000 00C353BB 01000000 B9010000 008D0419 83FA0376 078BD98B C84AEBF1 5BC3 Anlaşılması ve takip edilmesi zordur. Tüm diller makine dillerine yakınlıklarına göre alçak seviye veya yüksek seviye dil sınıflarından birine dahil olurlar. 6

Programlama Dili 2 GL 2. Nesil programlama dili veya 2 GL assembler programlama dilidir. Assembler dili doğal makine kodunun insan tarafından okunabilir halidir. Bilgisayarın doğal makine kodu olmadığı halde, assembler programcısı, programını yazabilmek için programını yazdığı işlemcinin özelliklerini tamamen bilmelidir. Assembler dilinin komut seti, çok basit komut kelimelerinden oluşmaktadır. Bu kelimeler daha sonra doğrudan makine kodu şeklinde derlenmektedir. Programlama Dili 2GL Örnek kod: fib: mov edx, [esp+8+1] cmp edx, 0 ja @f mov eax, 0 ret @@: cmp edx, 2 ja @f mov eax, 1 Ret @@: push ebx mov ebx, 1 mov ecx, 1 @@: lea eax, [ebx+ecx] cmp edx, 3 jbe @f mov ebx, ecx mov ecx, eax dec edx jmp @b @@: pop ebx ret 8B542408 83FA0077 06B80000 0000C383 FA027706 B8010000 00C353BB 01000000 B9010000 008D0419 83FA0376 078BD98B C84AEBF1 5BC3 7

Programla Dili 3GL ve üstü-yüksek Seviye Diller Yüksek seviyenin anlamı alt seviyenin detaylarından uzaklaşılmasıdır. Alt seviye detaylarından uzaklaşıldığı miktarda dil daha üst seviye olarak değerlendirilir. Yüksek seviye dillerde, dilin komut setini oluşturan komut kelimeleri insan konuşma diline oldukça yaklaştırılmıştır. Örneğin printf ekrana yazı bastırma Printf tek bir fonksiyon olarak binlerce satır assembler koduna denktir. Programlama Dilleri Yüksek Seviye Diller C COBOL #include <stdio.h> int main(void) { printf("hello World"); return 0; } 000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. HELLOWORLD. 000300 000400* 000500 ENVIRONMENT DIVISION. 000600 CONFIGURATION SECTION. 000700 SOURCE-COMPUTER. RM-COBOL. 000800 OBJECT-COMPUTER. RM-COBOL. 000900 001000 DATA DIVISION. 001100 FILE SECTION. 001200 100000 PROCEDURE DIVISION. 100100100200 MAIN-LOGIC SECTION. 100300 BEGIN. 100400 DISPLAY " " LINE 1 POSITION 1 ERASE EOS. 100500 DISPLAY "Hello world!" LINE 15 POSITION 10. 100600 STOP RUN. 100700 MAIN-LOGIC-EXIT. 100800 EXIT. Kod Satırı Sayısı: 5 Kod Satırı Sayısı: 17 8

Bazı Programlama Dilleri Makine Kodu Assembler Cobol C C++ Visual Basic Pascal Delphi PHP Java C Sharp Perl Javascript Scheme Phyton Ruby Fortran Lisp BİLGİSAYAR PROGRAMCILIĞI Programcı kimdir? Programcı ne yapar? 9

Programcı Kimdir? Bilgisayar yazılımını oluşturan kişi Bilgisayar programlamanın belirli bir alanında uzmanlaşmış kişi Aşağıdaki durumlar için kaynak kodu oluşturan kişi Farklı programlama dilleri Farklı yazılım platformları Programcı ne yapar? İhtiyaç Analizi (Requirements Analysis) Tanımlamalar (Specifications) Yazılım Mimarisi (Software Architecture) Kodlama (Coding) Derleme (Compiling) Bağlama (Linking) Çalıştırma (Executing) Test etme (Testing) Dökümantasyon (Documentation) Bütünleme (Entegration) Bakım (Maintenance) 10

İhtiyaç Analizi Fonksiyonel İhtiyaçlar Sistemin davranış tarzının belirlenmesi Girişlerin belirlenmesi Çıkşların belirlenmesi Giriş çıkış arasındaki ilişkinin belirlenmesi Hesaplamalar Teknik detaylar Veri işleme algoritmaları Özel fonksiyonlar Kurallar İstenen davranış İhtiyaç Analizi Fonksiyonel olmayan ihtiyaçlar Performans Güvenilirlik Dayanıklılık Genişleyebilirlik Güvenlik Kullanışlılık 11

Tanımlamalar Sistemin girişlerinin tanımlanması Sistemin davranış tarzının tanımlanması Sistemin çıkışlarının tanımlanması. Kullanıcı arabiriminin tanımlanması. Fonksiyonel ihtiyaçların tanımlanması. Fonksiyonel olmayan ihtiyaçların tanımlanması. Dikkat: Tüm bu tanımlamalar yazılı olarak gerçekleştirilmelidir. Yazılım Mimarisi Yazılım sisteminin iç tasarımıdır. Sistemin yapısını tanımlar. Sistem dahilindeki farklı bileşenleri tanımlar. Bileşenler arasındaki ilişkileri tanımlar. Karmaşıklığı azaltır. İlerlemenin yönünü belirler. 12

Kodlama Bir yazılım geliştirme editöründe, kaynak kodunun oluşturulması sürecidir. Bu doğrultuda: Girişler tanımlanmalıdır. Çıkışlar tanımlanmalıdır. Algoritmalar oluşturulmalıdır. Algoritmalar hayata geçirilmelidir. Yorumlar yazılmalıdır. Varolan kaynak kodları yeniden kullanılmalıdır. Kodlama (Coding) 13

Derleme (Compiling) Kaynak Kodu Kaynak kodunun bilgisayarın anlayacağı dile dönüştürülmesi işlemidir. Kaynak kodu *.obj dosyası haline dönüştürülür..obj uzantılı dosya object dosyası olarak adlandırılır ve bilgisayarın anlayacağı şekilde ikilik yapıdadır. Genellikle göreceli olarak bağımsız belirli sayıda aşamada gerçekleştirilir: Sözlüksel (lexical) analiz Sözdizimsel (syntax) analiz Tip (Type) analizi Kodun oluşturulması Optimizasyon Sözlüksel Analiz Sözdizimsel Analiz Kod dönüştürücü Kod Optimizatörü Hedef Kod Dönüştürücüsü Bağlama (Linking) Kütüphane dosyası #1 KAYNAK KODU Kütüphane dosyası #2 Kütüphane dosyası #3 Kaynak kodumuzda kullandığımız, daha önceden derlenmiş kütüphane dosyaları ile kaynak kodu arasındaki bağlantıyı kurar ve bu kütüphanelerin içindeki bilgiyi kullanarak çalıştırılabilir programın oluşturulmasını sağlar. 14

Derleme(Compile) Bağlama(Link) Çalıştırılabilir(Executable) Dosya.exe Derleme ve bağlama işlemi sonucunda ortaya çalıştırılabilir(executable) dosya çıkar. Çalıştırılabilir(executable).exe dosyası çalıştırılarak hatalı davranışta bulunup bulunmadığı kontrol edilir. Program Oluşumu Programlama Dili Editörü Kaynak Kodu Format: Düz yazı Derleme İşlemi Başarılı object Dosyası Format: ikili Kütüphane amaçlı kullanılan diğer object Dosyaları Format: ikili Başarısız Bağlama İşlemi Hata Mesajları Yükleme İşlemi Çalıştırılabilir (.exe) Dosyası Format: ikili 15

Test Bilgisayar programının kalitesini ölçme süreci Hatalı davranışı bulmak için programın çalıştırılması Yazılımın değerlendirilmesi Kalite Güvenlik Doğruluk Bütünlük Dökümantasyon Yazılıma eşlik eden materyaller: Yazı Video Diyagramlar Yazılımın nasıl çalıştığını açıklar Yazılımın nasıl kullanılacağını açıklar Ana bileşenleri takip eder. 16

Dökümantasyon Tipleri Mimari/Tasarım Teknik Kod dökümantasyonu Algoritmalar Modüller ve arabirimler Kullanıcı Kullanım kılavuzu Destek kılavuzu Sistem Entegrasyonu Genellikle yazılım sistemleri çok sayıda modül (alt-sistem) içerir. Farklı modüller farklı insanlar tarafından oluşturulabilir. Modüller farklı zamanlarda hazırlanmış olabilir. Çoğu zaman uyumlu olmayabilirler. Sistem entegrasyonu bu şartlar altında farklı modüllerin bir araya getirilmesidir. Hepsinin bir uyum içinde çalışmasını sağlar. 17

Değerlendirme Yıl 1993 1994 1996 İşletim Sistemi Windows NT 3.1 Windows NT 3.5 Windows NT 4.0 SLOC (Milyon) 4-5 [1] 7-8 [1] 11-12 [1] İşletim Sistemi Red Hat Linux 6.2 Red Hat Linux 7.1 SLOC (Milyon) 17 [citation needed] 30 [citation needed] 2000 Windows 2000 more than 29 [1] Debian 2.2 55-59 [2][3] 2001 Windows XP 40 [1] Debian 3.0 104 [3] 2003 Windows Server 2003 50 [1] Debian 3.1 215 [3] Debian 4.0 283 [3] Grafik Yazılımı SLOC (Milyon) OpenSolaris 9.7 OpenOffice.org ~10 [citation needed] FreeBSD Mac OS X 10.4 8.8 86 [4] Blender 2.42 ~1 [citation needed] Linux kernel 2.6.0 5.2 GIMP v2.3.8 0.65 [citation needed] Paint.NET 3.0 0.13 [citation needed] C Programlama Dili C Programlama Dili Tarihçesi C Programlama Dili Temel Özellikleri 18

C Programlama Dili - Tarihçe UNIX İşletim sisteminin bir yan ürünü UNIX işletim sisteminin orijinal versiyonu AT&T Bell Laboratuarlarında Ken Thompson tarafından yazılmıştı. Zamanın tüm işletim sistemleri gibi UNIX de assembler dilinde yazılmaktaydı. Thompson, daha yüksek seviyeli bir dil tasarlamak amacıyla, 1960 lı yıllarda Martin Richards tarafından geliştirilmiş BCPL dilinden yola çıktı.thompson geliştirdiği yeni programlama diline B programlama dili adını verdi. Aynı laboratuardan Dennis Ritchie, B dilinin yetersizliklerinden yola çıkarak, dili geliştirdi ve yeni dile NB (New B) adını verdi. Zaman içinde geliştirdiği dille orijinal B dili arasında önemli farklar oluşmaya başlayınca, dilin adını C dili olarak değiştirdi. 1983 yılında ANSI (American National Standards Institute) tarafından standarize edildi ve buna ANSI C standardı adı verildi. 1990 ların başında ISO C olarak onaylandı. C++ ise 1980 li yılların başında aynı laboratuardan Bjarne Stroustrup tarafından geliştirildi. C Programlama Dili Temel Özellikler C, günümüzde neredeyse tüm işletim sistemlerinin yazıldığı dildir, kullanıcı uygulama programları da yoğun şekilde yazılmaktadır. Dünya üzerinde milyonlarca profesyonel C programcısı mevcuttur. C diğer pek çok programlama dilinden daha düşük düzeylidir. Bu yüzden C ye yüksek seviyeli assembler adı da uygun görülmüştür. 19

C Assembler Kıyaslama C kaynak kodunu okuması daha kolaydır ve özellikle, uzun programlar için yazması daha rahattır. Bir makine dili genellikle tek bir işlemci üzerinde çalışırken, C dilinde yazılmış program derleyicisi ve kütüphaneleri bulunmak kaydıyla herhangi bir işlemci veya sistemde çalışabilir. C programının başarısı derleyicisinin eniyileme (code optimizer) bağlıdır, bu programcının elinde değildir.assembler programının performansı ise doğrudan programcının yazdığı kodlara bağlıdır. Yine de, özellikle modern mimariye sahip işlemciler için, C derleyicilerinin eniyileyerek ürettiği assembler kodu genel olarak elle yazılan kadar hızlıdır. C Yüksek Seviyeli Diller Kıyaslama C Programının verimliliği daha yüksektir. Ancak C programlarını okumak ve yazmak daha zordur. Bununla birlikte yüksek seviyeli dillerin çok büyük bir kısmı C Programlama dilinde yazılmıştır. Bilgisayar oyunlarının da büyük bir kısmı C Programlama dilinde yazılmıştır. 20

Çalışma Konusu Verilen Programın satırlarında geçen ifadelerin anlamı Verilen Programın giriş ve çıkışının ne olduğu, kısaca programın ne iş yaptığı SORULAR? 21