• Sonuç bulunamadı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

N/A
N/A
Protected

Academic year: 2022

Share "ELN1001 BİLGİSAYAR PROGRAMLAMA I"

Copied!
21
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

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?

(2)

BİLGİSAYAR - DONANIM

GİRİŞ GİRİŞ

ÇIKIŞ ÇIKIŞ

DEPOLAMA DEPOLAMA İŞLEMİŞLEM

GİRİŞ

GİRİŞ --ÇIKIŞÇIKIŞ

BİLGİSAYAR - YAZILIM

Linux Linux

FreeBSD FreeBSD Debian

Debian

(3)

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



(4)

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

(5)

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.

(6)

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.

(7)

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

(8)

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 printfekrana yazı bastırma

 Printf tek bir fonksiyon olarak binlerce satır assembler koduna denktir.

Programlama Dilleri Yüksek Seviye Diller

Kod Satırı Sayısı: 17 Kod Satırı Sayısı: 5

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.

#include <stdio.h>

intmain(void) { printf("Hello World");

return0;

}

COBOL C

(9)

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?

(10)

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)

(11)

İ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

(12)

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.

(13)

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)

(14)

Derleme (Compiling)

 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

Kaynak Kodu

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)

KAYNAK KODU

Kütüphane dosyası

#1

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ı

(15)

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

Hata Mesajları

object Dosyası Format: ikili

Kütüphane amaçlı kullanılan

diğer object Dosyaları Format: ikili

Bağlama İşlemi

Çalıştırılabilir (.exe) Dosyası Format: ikili Yükleme

İşlemi Başarısız

Başa

(16)

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.

(17)

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.

(18)

Değerlendirme

50[1]

Windows Server 2003 2003

40[1]

Windows XP 2001

more than 29[1]

Windows 2000 2000

11-12[1]

Windows NT 4.0 1996

7-8[1]

Windows NT 3.5 1994

4-5[1]

Windows NT 3.1 1993

SLOC (Milyon) İşletim Sistemi

Yıl

5.2 Linux kernel2.6.0

86[4]

Mac OS X10.4

8.8 FreeBSD

9.7 OpenSolaris

283[3]

Debian 4.0

215[3]

Debian 3.1

104[3]

Debian 3.0

55-59[2][3]

Debian 2.2

30[citation needed]

Red Hat Linux 7.1

17[citation needed]

Red Hat Linux6.2

SLOC (Milyon) İşletim Sistemi

0.13[citation needed]

Paint.NET3.0

0.65[citation needed]

GIMPv2.3.8

~1[citation needed]

Blender2.42

~10[citation needed]

OpenOffice.org

SLOC (Milyon) Grafik Yazılımı

C Programlama Dili

C Programlama Dili Tarihçesi C Programlama Dili Temel Özellikleri

(19)

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.

(20)

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.

(21)

Ç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?

Referanslar

Benzer Belgeler

İşte bu nedenle, Hızırla Kırk Saat, Hızır’ın yeniden diriliş, uykudan uyanış ya da unutkanlığın sona ermesi için zaman içindeki çeşitli bengisuyu kaynaklarına

Bilimin doğasının pek çok boyutu ile ilgili (bilimin deneysel doğası, bilimin kesin olmayan doğası, bilimde teori ve kanunun yapısı ve arasındaki ilişki,

Özet: Bu çalışmada; koçlarda aşı m sezonunda semen lrüktoz, düzeltilmiş früktoz, IrCıktolizis indeksi, seminal plazma çinko, kan plazması çinko ve leslosleronun

Ayrıca mandalarda hidatidozun incelend iği bir çalışmada (Türkmen. 32) ki s t h idatik tespit edildiği ak- ciğerlerde karaciğerden daha fazla kist hidatik

Çalışmada verilen örneklerde de görüldüğü gibi görsel metin gibi okunduğunda geleneksel mimari, kültürel mirasın farklı alan- larının birbiriyle olan

İki temel bö- lümden oluşan kitabın ilk bölümünde ikinci Dede Korkut anlatısı olan “Sa- lur Kazan’ın Evinin Yağmalanması” karşıt yansımalı yapı ve

2) Batı Grubu Ağızları: Adana, Adıyaman, Amasya, Ankara, Aydın, Balıkesir, Giresun, Hatay, KahramanmaraĢ, Kastamonu, Kayseri, KırĢehir, Kütahya, Manisa, Muğla,

Dikitin etraf~nda bir ara~t~rma yap~lamad~~~ndan, anlam~~ ve i~levi konu- sunda kesin ~eyler söyleyemiyoruz. Ariassos ve üçkap~lar gibi Roma yerle~melerinin çok yak~n~nda