You are on page 1of 31

Programlamaya Giriş

HAFTA 1
Ders Tanıtımı & Giriş
Prof. Dr. Cemil ÖZ
Doç. Dr. Cüneyt BAYILMIŞ
Dr. Öğretim Üyesi Gülüzar ÇİT

BSM 103 Programlamaya Giriş 2019-2020 Güz


Konu & İçerik
ØDersin Tanıtımı & Amacı
ØDers İçeriği
ØDers Değerlendirme
ØÖnerilen Kaynaklar
ØTemel Kavramlar
ØYazılım Geliştirme Yaşam Döngüsü
ØYazılımın Kalitesi
ØProgramlama Dilleri
ØYazılımların Çalıştırılması
ØProgramlama Teknikleri
ØYapısal/Modüler Programlama
ØNesneye Dayalı Programlama

BSM 103 Programlamaya Giriş 2019-2020 Güz


Dersin Tanıtımı & Amacı
ØProgramlamaya Giriş
ØBir programlama probleminin çözümü için gerekli ilke ve evreleri
kavrayabilme.
ØBir problemin çözümü için gerekli algoritma ve akış şemalarının
oluşturulması.
ØProgramlama dili kullanılarak, bir programlama dilinin yapısını anlayabilme
ve kullanabilme.
ØAlgoritma ve akış şemaları hazırlanan problemlerin bir programlama dili
kullanarak kod yazımını yapabilme.
ØYapısal programlama ( Değişkenler, karar yapıları, döngüler, diziler, alt
programlar, yapı gibi kavramları anlayabilme ve kullanabilme.)
ØNesneye Dayalı Programlamaya giriş

BSM 103 Programlamaya Giriş 2019-2020 Güz


Ders İçeriği
ØAlgoritma Kavramı
ØAkış Diyagramı Kavramı
ØProgramlama Kavramı ve Programlama Dili (C/C++)
ØYapısal Programlama
ØDeğişkenler, karar yapıları, döngüler, diziler, alt programlar, yapılar, vs.
ØNesneye Dayalı Programlama
Øİşaretçiler
ØDosyalama

BSM 103 Programlamaya Giriş 2019-2020 Güz


Ders Değerlendirme
ØYıl İçi Başarı Oranı %55
ØVize %45
ØÖdev (4 adet) %40
ØProje %15
ØYıl Sonu Başarı Oranı %45

BSM 103 Programlamaya Giriş 2019-2020 Güz


Önerilen Kaynaklar
ØC++ How to Program, Deitel, P., Deitel, H.M., Ninth Edition
ØC++ ile Programlama, Çeviri Editörü: Cemil Öz, Dokuzuncu
Baskından Çiviri, Palme Yayıncılık, 2016
ØC++ ile Nesneye Yönelimli Programlamaya Giriş, Doç. Dr. Cemil ÖZ,
Sakarya Yayıncılık, 2014
ØFahri Vatansever, İleri Programa Uygulamaları, Seçkin Yayıncılık,
2006, Ankara
ØFahri Vatansever, Algoritma Geliştirme ve Programlamaya Giriş,
Seçkin Yayıncılık, 2002, Ankara.

BSM 103 Programlamaya Giriş 2019-2020 Güz


Temel Kavramlar
ØBilgisayar
ØGenel olarak, girilen veriler üzerinde aritmetiksel, mantıksal ve ilişkisel
işlemler yapabilen ve verileri depolama yeteneğine sahip olan
elektromekanik cihazlara bilgisayar denir.
ØDonanım
ØBilgisayarı oluşturan fiziksel parçalar
Ø Mikroişlemci
Ø Bellek
Ø Giriş / Çıkış Birimi
ØYazılım
ØGerçek dünya problemlerini bilgisayar yardımıyla çözmek için yazılım (program)
geliştirilir.
ØProbleme ilişkin çözümlerin, herhangi bir programlama dili kullanılarak, bilgisayarın
anlayacağı komutlar dizisi şeklinde yazılmasına program, bilgisayarda kullanılan
programların genel adına da yazılım denir.

BSM 103 Programlamaya Giriş 2019-2020 Güz


Temel Kavramlar…
ØProgramlama

ØGünlük hayatta karşılan genel veya özel bir problemin makineler ile
çözülmesi istendiğinde öncelikle problemin gerçek hayattan soyutlanıp
makineye anlatılması gerekir.

ØBu problemlerin makinelere tanıtılması, öğretilmesi ve öğretilen çözüm


yolları ile sonuca ulaştırılmasını sağlamama süreçlerimin tamamını
kapsayan süreç programlama olarak adlandırılır.

BSM 103 Programlamaya Giriş 2019-2020 Güz


Temel Kavramlar…
ØProgramlama Dili
ØGünlük hayatta karşılan genel veya özel bir problemin makineler ile çözülmesi
istendiğinde problemin gerçek hayattan soyutlanıp makineye anlatılmasını
sağlayan araç
ØProgramlama dilleri, yazılımcının bilgisayara neyi nasıl yapacağını hangi koşullarda
hangi işlemlerin yapılacağını tam olarak anlatmasını sağlar.
ØHer programlama dili diğerinden farklıdır. Her birinin farklı komutları ve kuralları
mevcuttur. En iyi programlama dili budur diye bir şey söylemeyiz. Çünkü her
programlama dilinin bir diğerine göre üstün ve zayıf tarafları vardır.
ØGünümüzde en yaygın kullanılan kullanılan programlama dilleri
ØJava ,C ,C++ ,C#, PHP, Python, JavaScript, ….

ØC/C++
ØNeden?
ØYapısal özellikleri güçlü
ØHer bilgisayar mühendisinin bilmesi gerekir
ØSonraki yıllarda görülecek derslerde detaylı olarak verilen C++, C#, Java, vs. gibi
programa dilleri ve diğer temel yazılım dersleri için temel teşkil etmekte

BSM 103 Programlamaya Giriş 2019-2020 Güz


Temel Kavramlar…
ØAlgoritma
ØBir problemin çözümüne yönelik işlem basamaklarının sıralı biçimde ve
sonlu olarak ifade edilmesi
ØBilgisayar dilinde “ bir sorunun çözümü için öngörülen işlemlerin mantıksal
ve sembolik anlatımı”
Ø9. yüzyılda yaşamış Türk-İslam matematikçi ve astronomu Harzemli
Mehmet, toplama, çıkarma, ikiye bölme, bir sayının iki katını bulma,
denklem çözümü, vb. gibi cebirsel işlemleri açıklayan bir çalışma yaptı.
Batılılar, onun bu çalışmalarına Latince "algorismus" yani bugünkü adı ile
algoritma dediler ve algoritma kavramı ilk defa burada kullanılmış oldu
ØBir algoritma yazmak için mutlaka bir dile bağımlı kalma zorunluluğu
yoktur. Önemli olan yazılan algoritmanın herhangi bir programlama diline
uyarlanabilir olmasıdır.

BSM 103 Programlamaya Giriş 2019-2020 Güz


Temel Kavramlar…
ØAkış Diyagramı
ØAlgoritmaların özel geometrik şekiller ile gösterilmesidir

ØSözde Kod
ØAlgoritmaların ifade edilmesinde akış diyagramlarının yanı sıra, konuşma
dili ile programlama dili arasında, sözde kod (pseudo-code) adı verilen bir
araç kullanılır.
ØProgramlama dilinden bağımsız olarak yazılan kodlardır, yani programlar
gibi derlenmez veya işlenmezler.
ØHer programcı kendi sözde kodunu geliştirebilir . Fakat kişisel sözde kodlar
başkaları tarafından anlaşılabilir bir biçimde açık olmalıdır.

BSM 103 Programlamaya Giriş 2019-2020 Güz


Büyük Resim – Algoritmik Problem
ØGerçek dünya problemlerini bilgisayar yardımıyla çözmek için yazılım (program)
geliştirilir.

BSM 103 Programlamaya Giriş 2019-2020 Güz


Yazılım Geliştirme Yaşam Döngüsü

1. Gereksinim
Analizi Aşaması

6. Kurulum ve 2. Mimari Aşaması


Bakım Aşaması

3.
Modelleme/Tasarım
5. Test Aşaması Aşaması

4. Gerçekleme
Aşaması

BSM 103 Programlamaya Giriş 2019-2020 Güz


Yazılım Geliştirme Yaşam Döngüsü…
ØÇözümleme (Analiz) / Gereksinim Analizi
ØBelirsizlik kalmayacak şekilde çözülmesi istenen problem anlaşılır ve
yazılımdan yapması beklenenler ayrıntılı olarak listelenir.
Øİhtiyaç listesi oluşturulur.
1. Gereksinim
Analizi Aşaması

6. Kurulum ve 2. Mimari
Bakım Aşaması Aşaması

3.
5. Test Modelleme/Tasa
Aşaması rım Aşaması

4. Gerçekleme
Aşaması

BSM 103 Programlamaya Giriş 2019-2020 Güz


Yazılım Geliştirme Yaşam Döngüsü…
ØModelleme / Tasarım Aşaması 1. Gereksinim
ØBu aşamada amaç, gerçek dünyadaki Analizi
Aşaması
problemin bilgisayarda temsil
edilebilecek soyut bir modelinin 6. Kurulum ve
Bakım
2. Mimari
Aşaması
oluşturulmasıdır. Çözümün hangi Aşaması
unsurlardan oluşacağı ve bu parçaların
nasıl modelleneceği tamamıyla 3.
programlama yöntemine bağlıdır. 5. Test Modelleme/Tas
Aşaması arım Aşaması
ØTasarım sonrası ortaya çıkacak olan
yazılımın kalitesini doğruda 4. Gerçekleme
etkilediğinden bu aşamada iyi ve doğru Aşaması
bir çözümün oluşturulması çok
önemlidir. Bu nedenle kodlamaya
geçilmeden önce kurulan modelin
sağlamasının (verification) yapılması
gerekir.
ØUML (Unified Modelling Language), akış
diyagramı, sözde kod, vs.

BSM 103 Programlamaya Giriş 2019-2020 Güz


Yazılım Geliştirme Yaşam Döngüsü…
ØGerçekleme Aşaması
ØTasarım aşamasında oluşturulan model, bir programlama dili ile bilgisayara bu
aşamada aktarılır.
1. Gereksinim
Analizi Aşaması

6. Kurulum ve 2. Mimari
Bakım Aşaması Aşaması

3.
5. Test Modelleme/Tasa
Aşaması rım Aşaması

4. Gerçekleme
Aşaması

BSM 103 Programlamaya Giriş 2019-2020 Güz


Yazılım Geliştirme Yaşam Döngüsü…
ØTest Aşaması
ØProgramın olası giriş değerleri için nasıl davrandığı incelenir.
ØÖzellikle kritik değerler için programın çalışması test edilmelidir.
ØHata Ayıklama
ØYazım Hatası, Mantıksal Hata, Çalışma Zamanı Hatası
1. Gereksinim
Analizi Aşaması

6. Kurulum ve 2. Mimari
Bakım Aşaması Aşaması

3.
5. Test Modelleme/Tasa
Aşaması rım Aşaması

4. Gerçekleme
Aşaması

BSM 103 Programlamaya Giriş 2019-2020 Güz


Yazılım Geliştirme Yaşam Döngüsü…
ØKurulum ve Bakım Aşaması
ØDokümantasyon
ØYazılım projesinin her aşamasında yapılan işleri açıklayan dokümanlar
hazırlamak gereklidir.
1. Gereksinim
Analizi Aşaması

6. Kurulum ve 2. Mimari
Bakım Aşaması Aşaması

3.
5. Test Modelleme/Tasa
Aşaması rım Aşaması

4. Gerçekleme
Aşaması

BSM 103 Programlamaya Giriş 2019-2020 Güz


Yazılım Kalitesi
ØEtkinlik
ØHız ve kaynak kullanımı
ØBakım kolaylığı
ØSağlamlık
ØHatalardan etkilenme
ØAnlaşılabilirlik
ØTaşınabilirlik
ØGeliştirilebilirlik
ØGüvenlik

BSM 103 Programlamaya Giriş 2019-2020 Güz


Programlama Dilleri…
ØMakine Dili (Düşük Seviye)
ØGeliştirilen ilk programlama dilidir
ØAnlaşılması çok zordur
ØKomutlar, ikili (0 ve 1) sayılardan oluşur.
ØBiraz daha kolay okunabilmesi için komutlar 16'lık sayı sistemi (hex) ile
yazılır fakat derlenme sonrası kod ikilik sisteme çevrilir.
Øİşlemci ikilik tabandaki kodu okur ve uygular.
ØMakine (yani, donanım) bağımlıdır.
Ø+1300042774
Ø+1400593419
Ø+1200274027

BSM 103 Programlamaya Giriş 2019-2020 Güz


Programlama Dilleri…
ØAssembly Dili (Orta Seviye)
Øİkinci kuşak dillerdir

ØAnlaşılması nispeten daha kolaydır

Øİngilizce kısaltmalardan oluşan semboller kullanılır

ØMakine bağımlıdır
ØAssembler derleyecisi ile makine koduna dönüştürülür
ØLOAD sayi1
ØADD sayi2
ØSTORE toplam

BSM 103 Programlamaya Giriş 2019-2020 Güz


Programlama Dilleri…
ØYüksek Seviyeli Diller
ØAnlaşılması çok daha kolaydır

ØYazılan programlar farklı makinelerdede kullanılabilirler.

ØAssembly dili veya makine dilindeki birçok satır tek bir komutla gösterilir.
Böylece program daha kısa bir sürede yazılır.
ØKomutlar İngilizce kelimeler ve matematiksel ifadelerden oluşur

ØPascal, Basic, Fortran, C/C++, Java, vs.

ØDerleyici tarafından makine koduna dönüştürülür

ØToplam = sayi1 + sayi2

BSM 103 Programlamaya Giriş 2019-2020 Güz


Yazılımların Çalıştırılması…
ØDerleme
ØDerlenen Dil / Compiled Language
ØBir programlama dilinde yazılan kodu başka bir kod haline dönüştüren programlar
ØPascal, C, C++, …
Kaynak Kod Makine Kodu
(Source Code) Derleme (native code)
(Compile)

ØYorumlama
ØYorumlanan Dil / Interpreted Language
ØKomutlar teker teker çalıştırılır
ØKomut okuma ve çevirme işlemi çalışma zamanında yapılır (düşük hız)
ØHata düzeltme daha kolaydır
ØDerleyiciden kaynaklanan sınırlamalar kalktığı için daha esnek bir çalışma ortamı sunar
ØPerl, TCL, Basic, MATLAB, …
ØBasitçe, bir kaynak kodu hedef koda çevirdikten sonra çalıştıran ve dolayısıyla koddaki
hataları yakalama işlemini ve kodun iyileştirilmesini daha kod çalıştırmadan yapan
çeviricilere derleyici, kodu satır satır veya bloklar halinde çalıştırıp sırası gelmeyen satırları
hiç çalıştırmayan ve bu satırlardaki hataları hiçbir zaman göremeyen ve kodun bütününe
ait iyileştirmeleri yapamayan çeviricilere de yorumlayıcı denir.

BSM 103 Programlamaya Giriş 2019-2020 Güz


Yazılımların Çalıştırılması…
ØKarma (Hybrid)
ØGenelde bir ortam yazılan dilin çalıştırılmasına kadar geçen sürede ya bir
derleyici yada bir yorumlayıcı kullanılmaktadır. Gelişmekte olan
teknolojiyle iki programı birden kullanan diller de türemiştir.
ØKodlar derlenerek byte koda dönüştürülür

ØByte kod yorumlanarak çalıştırılır


ØJava, Pyhton
ØJava’da yazılan kod önce derlenerek byte code adı verilen ve sadece java
sanal makinalarında (java virtual machine) çalıştırlabilen bir kod
üretilmektedir. Bu üretilen ara kod daha sonra java sanal makinasında bir
yorumlayıcı yapısına uygun olarak çalıştırılmaktadır.

BSM 103 Programlamaya Giriş 2019-2020 Güz


Programlama Teknikleri
ØYapısal / modüler Programlama tekniği
ØStructured Programming

ØNesne Yönelimli Programlama tekniği


ØObject Oriented Programming

BSM 103 Programlamaya Giriş 2019-2020 Güz


Yapısal/Modüler Programlama
ØProgramcı doğrudan probleme odaklanır ve problem çözümüne
ilişkin fonksiyonları / yöntemleri geliştirir.
ØAna fonksiyon/yöntem (main) programı başlatır ve her biri özel
görevleri yerine getiren yöntemler çağrılarak yapılması gerek işlem
gerçekleştirilir
ØYöntemlerin ihtiyaç duyduğu veriler genellikle veritabanlarında ya
da (her taraftan erişilebilen) değişkenlerde saklanır.

BSM 103 Programlamaya Giriş 2019-2020 Güz


Yapısal/Modüler Programlama…
ØÖğrenci, açılan dersler, not girişleri, vb. işlemleri gerçekleştiren bir
bilgi sistemi düşünelim:

Alt yordamlar Veri


ogrenciEkle() Ogrenciler

notGoruntule()
Sınavlar
notGir()

ogrenciSil() Dersler

transkript()

BSM 103 Programlamaya Giriş 2019-2020 Güz


Yapısal/Modüler Programlama…
ØSistem büyüdükçe ilişkiler ve bağımlılık daha da karmaşıklaşır
ØHata bulma zorlaşır
ØProgram içerisinde değiştirme, ekleme, çıkarma, vs. yapmak zorlaşır
ve beklenmeyen etkilere neden olabilir
ØÖğrenciler tablosunda öğrencinin doğum tarihi iki haneli olsun
ØBu alanı dört haneli yapmak istediğimizi varsayalım
ØÖğrenciler tablosu sınavlar ve dersler tabloları ile ilişkili olduğundan
beklenmeyen bir sorun çıkabilir
ØTüm yöntemler öğrenciler tablosunu bir şekilde kullanıyor
ØO nedenle ogrenciEkle() yöntemi kesinlikle sorun çıkaracaktır

BSM 103 Programlamaya Giriş 2019-2020 Güz


Nesneye Dayalı Programlama
ØYapısal teknikte programcı doğrudan Ogrenciler Dersler
probleme odaklanır ve problemin çözümüne ad dersKodu
ilişkin yöntemleri geliştirir. Nesneye soyad dersAdi
yönelimli programlama tekniğinde ise temel dTarihi kredi
bileşen nesnedir ve programlar nesnelerin ------------------- --------------------
birlikte çalışmasından meydana gelir. Nesne ogrenciEkle() dersEkle()
hem veriyi hem de bu veriyi işleyen ogrenciSil() dersSil()
fonksiyonları içerir. Programcılar dikkatlerini
nesneleri oluşturan sınıfları geliştirmeye
yoğunlaştırır.
Sinavlar
ØYapısal teknikte bir fonksiyon herhangi bir tarih
görevi yerine getirmek için veriye ihtiyaç derslik
duyarsa, gerekli veri parametre olarak ----------------------
gönderilir. NDP de ise yerine getirilmesi -
gereken görev nesne tarafından icra edilir ve notGir()
fonksiyonlar verilere parametre gönderimi notGoruntule()

yapılmaksızın erişebilirler. transkript()

BSM 103 Programlamaya Giriş 2019-2020 Güz


Nesne Yönelimli Programlama…
ØÖzellikleri / Avantajları
ØProblemler daha kolay tanımlanıp çözülebilir. Gerçek dünya düşünülerek
geliştirilmiştir. Geliştirme süreci daha kolay olur.
ØBilgi Gizleme ( Information Hiding, Data abstraction )
ØNesne içerisindeki işlemler (nasıl) diğer nesnelerden soyutlanır-sadece ne
yapacağını bilirler. Nesne içerisindeki değişiklik diğer nesneleri etkilemez.
Dolayısıyla bakım aşaması daha kolay olur.
ØGereksiz ayrıntılarla uğraşılmaz, probleme odaklanılır (arabanın gitmesi için
gaza basmak yeterli). Daha hızlı geliştirme süreci sağlar.
ØModüler Programlama ( Moduler Programming )
ØNesneler birbirinden tamamen bağımsız (veri + fonksiyon) (encapsulation,
responsibility driven design)
ØBüyük ve karmaşık bir problem küçük parçalara ayrılarak daha kolay çözülebilir.
Geliştirme ve bakım daha kolay olur.
ØProgramların geliştirilmesi daha hızlı, geliştirilen bir nesne diğer programlarda
da rahatlıkla kullanılabilir. Hata bulma-bakım daha kolaydır (Bisikleti başkasına
verdiğimiz zaman da çalışır).
ØGeliştirme sürecinde grup çalışmalarına olanak sağlanır.

BSM 103 Programlamaya Giriş 2019-2020 Güz


Nesne Yönelimli Programlama…
ØÖzellikleri / Avantajları…
ØKodların Tekrar Kullanımı (Code Reuse)
ØNesneler başka programlara kolaylıkla aktarılabilir. Bakım ve geliştirme
zamanı/maliyeti düşer
ØKalıtım, Çok şekillilik
ØHata Bulma – Bakım/Onarım ( Maintenance )
ØBileşenler arasındaki ilişkiler açık olduğundan (veri+fonksiyon aynı yapı
içerisinde) güncelleme, hata bulma ve bakım daha kolay
ØTasarım Desenler (Design Patterns)

ØGünümüzdeki en iyi yaklaşım. Gelecekte ?

BSM 103 Programlamaya Giriş 2019-2020 Güz

You might also like