programlama dilleri -...

33
PROGRAMLAMA DİLLERİ Program Yazılım Geliştirme Süreci Programlama Dilleri Tarihçesi Kod Sözdizimi Nesneye Yönelik Programlama Tür Kontrolü Alt Programlar Programlama Dilleri Programlama Dillerinin Önemi Dilleri Sınıflandırılması Anlambilim BNF Notasyonu Kontrol Deyimleri Muhammet Baykara [email protected]

Upload: vuongque

Post on 01-Nov-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

PROGRAMLAMA DİLLERİ

• Program

• Yazılım Geliştirme Süreci

• Programlama Dilleri Tarihçesi

• Kod Sözdizimi

• Nesneye Yönelik Programlama

• Tür Kontrolü

• Alt Programlar

• Programlama Dilleri

• Programlama Dillerinin Önemi

• Dilleri Sınıflandırılması

• Anlambilim

• BNF Notasyonu

• Kontrol Deyimleri

Muhammet Baykara [email protected]

Page 2: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Program Nedir?

• Program: Bilgisayarın bir işlevi yapması için tasarlanmış komutlarzinciridir.

• Ardışık simgeler dizisi.

• Programlama Dili: Bir makinenin davranışını kontrol etmek içinkullanılabilen ve program üretimi için kullanılan yapay dil.

Muhammet Baykara [email protected]

Page 3: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Yazılım Geliştirme Süreci

• Gereksinim Analizi: Yazılım projesinin ilk etabındaprojenin ihtiyaç duyduğu ana modüller analizedilmeli, (software requirements specification)proje amaçları ve hedefleri detaylandırılmalıdır.

• Tasarım: Oluşturmak istenilen proje web tabanlı,mobil veya masaüstü olabilir. Bu doğrultudayapacağınız tasarımın bu platformlara veyacihazlara uygun olması gerekmektedir.

• Kodlama: Güçlü bir yazılım mimarisi ile çalışılmalıve sonradan çıkabilecek tüm isteklere kolaylıklacevap verebilecek şeklide kodlama yapılmalıdır.

Muhammet Baykara [email protected]

Page 4: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Yazılım Geliştirme Süreci

• Sertifikasyon (Test): Önceden belirlenengereksinimlerin karşılanıp, karşılanmadığı doğruçıktıyı üretip, üretmediği testleri yapılmalıdır.Kalite denetimi yapılarak kullanıcıyasunulmasıdır.

• Bakım: Teslimat sonrasında çıkan sorunlarıgidermek ve performansı artırmak için yazılımuygulamasını değiştirmek ve güncellemektir. Budeğişimler basit kodlama hatası şeklindeolabileceği gibi tasarımdan kaynaklananhataların giderilmesi şeklinde de olabilir.

Muhammet Baykara [email protected]

Page 5: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dilinin Önemi

• 1. Yazılım Güvenilir Olmalıdır

• Güvenli yazılımlar kullanmak programcılar için önemlidir. Kullanılanprogramların güvenli sayılabilmesi için bazı kalite ölçütlerine sahip olmasıgerekir. Bu ölçütler;

• a. Yazılabilirlik: Problemin gerektirdiği veri giriş çıkış, akış denetimi gibiunsurların programlama dili tarafından karşılanabilir olması ile ilgili birkavramdır.

• b. Okunabilirlik: Okunabilirlik programın mantığını takip etmek, sınamak vehata ayıklayabilmek ile ilgili bir kavramdır.

• c. Sıra dışı durumları karşılayabilme: Programlama dili hatalı giriş, aritmetiktaşma gibi durumlara hazırlıklı olmalı bu durumlara uygun çözümleriiçermelidir.

Muhammet Baykara [email protected]

Page 6: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dilinin Önemi

• 2. Yazılım Bakıma Elverişli Olmalıdır

• Daha önceden geliştirilmiş bir yazılımın hatalarının ayıklanması vegiderilmesi, yeni modüller eklenmesi ve çıkarılması kullanıcı ihtiyaçlarıdoğrultusunda yazılımın geliştirilmesi yazılım bakımının temel unsurlarıdır.

• Yazılımın okunabilirliğinin yanında değiştirilebilirliğinin de yüksek olması oprogramlama dilinin bakıma elverişli olması anlamına gelmektedir.

Muhammet Baykara [email protected]

Page 7: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dilinin Önemi

• 3. Yazılım Verimli Çalışmalıdır.

• Geliştirilen yazılımların verimliliği kullanılan programlama dilline doğrudanbağlıdır. Verimlilik esas olarak programlama dilinin tasarımı sırasında elealınan bir konudur.

• İlk dönem programlama dillerinde verimlilik programlama dilinin mevcutdonanımı etkin ve hızlı bir şekilde kullanması ile ölçülmekteydi.

• Bu gün bu anlayış değişmiş ve programlama dilinin verimliliği işletim hızı,bellek gereksinimi, geliştirme ve bakım sırasında harcanacak zaman gibikavramlarla ölçülen bir değer olmuştur.

Muhammet Baykara [email protected]

Page 8: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Okunabilirlik Temel Teorem

• Kod, başkaları tarafından en az zamanda anlaşılsın diye yazılmalıdır.

• Az kod her zaman daha iyi midir?

Genellikle, daha az kod yazmak daha iyidir ama her zaman az olan iyiolacak diye bir şey yok.

Muhammet Baykara [email protected]

Page 9: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

İyi kaynak kodu göze kolay gelmelidir! Estetik

Muhammet Baykara [email protected]

Page 10: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Tarihçesi

• İlk programlar fiziksel olarak yazılıyordu. Daha sonra fiziksel programlamayerini elektrik sinyaline bıraktı. Artık, kurulan elektronik devrelere düşük yada yüksel voltajda akım gönderilerek bilgisayarın davranışı belirlenmeyebaşlandı. Yüksel voltaj 1, düşük voltaj 0 sayılarını ifade ediyordu.

• Böylelikle bugün de kullanılan makine dilinin ortaya çıkması için ilk adımlaratılmış oldu.

Muhammet Baykara [email protected]

Page 11: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Tarihçesi

• Ancak bu şekilde programlar yazmak, sistemi oluşturan elektronik devrelerinher program için baştan kurulmasını gerektiriyordu. Bundan dolayıprogramlar bazı kavramlar çerçevesinde yazılmaya başlandı.

• Öncelikle bilgisayar donanımı her program için baştan kurulmamalı, bununyerine basit bir donanımın üzerine yazılan komutlar kullanılmalıdır. Dahasonra, programlar tek bir komutlar zinciri yerine, küçük parçalar halindeyazılmalıdır.

• Bu parçaların programın içinde defalarca kullanılabilmesi yordam(subroutine) kavramını ortaya çıkarmıştır. Bu modelin kullanılması isemantıksal karşılaştırmaları, döngülerin kullanılmasını ve yazılan kodlar tekrarkullanıldığı için kütüphane (library) mantığını ortaya çıkarmıştır.

Muhammet Baykara [email protected]

Page 12: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Tarihçesi

• 1957 yılında IBM, düşük seviye (makine diline yakın) bir programlama diliolan FORTRAN dilini ortaya çıkardı.

• FORTRAN ile beraber basit mantıksal karşılaştırmalar, döngüler, (true-false)lojik ve (integer, double) sayısal değişkenler kullanılmaya başlandı.

• 1959 yılında, bu programlama dilinin özelliklerini alıp, giriş çıkış (Input –Output IO) gibi yeni işlevler sağlayan COBOL dili ortaya çıktı.

• Daha sonra 1968 yılında, COBOL ve FORTRAN dillerinin en iyi özelliklerinialarak Pascal ortaya çıktı. Ayrıca Pascal dili, hafızadaki adresler üzerinde işlemyapmaya olanak veren işaretçi (pointer) kavramını beraberinde getirdi.

Muhammet Baykara [email protected]

Page 13: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Tarihçesi

• 1972 yılında C, Pascal dilindeki birçok hatayı gidererek ortaya çıktı. C dili ilkdefa Unix işletim sistemini yazmak için kullanılmaya başlanmıştır.

• C, orta seviye bir dil olması, kuvvetli giriş çıkış işlemleri sağlaması gibi birçoközelliği ile işletim sistemleri yazılmasında tercih edilmiştir.

• Bütün programlama dilleri birçok özelliğe sahip olmasına rağmen, modülerprogramlamanın birçok eksiğini gidermek amacıyla, yeni bir programlamamodeli olan nesneye yönelik programlama - OOP (object orientedprogramming) ortaya çıkarıldı. C dilinin ve OOP modelinin tüm özellikleriyleC++dili oluşturdu

Muhammet Baykara [email protected]

Page 14: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Tarihçesi

• C++ dilini, Sun Microsystems tarafından çıkartılan Java takip etti. Java dilininkullanım alanları, nesneye yönelik bir programlama dili olması veberaberinde getirdiği çöp toplama GC (garbage collection) gibi performansarttırıcı özellikleri ile büyük ölçüde genişledi.

• Microsoft, 2000 yılında .NET platformunu sunarak, otuzdan fazlaprogramlama dilini aynı çatı altına topladı. VisualBasic.NET ve VisualC# .NETplatformunu kullanan günümüzdeki en güçlü yüksek seviyeli programlamadilleri arasında yer almışlardır.

Muhammet Baykara [email protected]

Page 15: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Tarihçesi

• C++ dilini, Sun Microsystems tarafından çıkartılanJava takip etti. Java dilinin kullanım alanları, nesneyeyönelik bir programlama dili olması ve beraberindegetirdiği çöp toplama GC (garbage collection) gibiperformans arttırıcı özellikleri ile büyük ölçüdegenişledi.

• Microsoft, 2000 yılında .NET platformunu sunarak,otuzdan fazla programlama dilini aynı çatı altınatopladı. VisualBasic.NET ve VisualC# .NETplatformunu kullanan günümüzdeki en güçlü yüksekseviyeli programlama dilleri arasında yer almışlardır.

Muhammet Baykara [email protected]

Page 16: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Sınıflandırılması

1- Genel Sınıflandırma

Muhammet Baykara [email protected]

Page 17: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Sınıflandırılması

2- Uygulama Alanlarına

Göre Sınıflandırma

Muhammet Baykara [email protected]

Page 18: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Sınıflandırılması

3-Seviyelerine Göre Sınıflandırma

Muhammet Baykara [email protected]

Page 19: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Nesneye Yönelik Programlama

• Nesneye yönelik programlama nesne kavramına dayanmaktadır. Buradanesne gerçek dünyada var olan veya programcı tarafından oluşturulmuşmantıksal bir varlıktır. Nesne, kendisini tanımlayan veriler ve bu verilerüzerinde yapılacak tüm işlemler ile bir bütün olarak düşünülür.

• Veri Soyutlama (Data Abstraction) : Kullanıcı tarafından yeni veri türlerinimodelleyen sınıflar oluşturulmasıdır.

• Kalıtım (Inheritance) : Oluşturulan bu sınıfların genişleterek veyaözelleştirilerek yeni sınıflar oluşturulmasıdır.

• Çok Biçimlilik (Polymorphism) : Aynı isimdeki işlemlerin değişik nesnegrupları tarafından farklı algılanmasıdır.

Muhammet Baykara [email protected]

Page 20: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Nesneye Yönelik Programlama Dilleri

Muhammet Baykara [email protected]

Page 21: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Muhammet Baykara [email protected]

Page 22: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Ortamı

• Programlama ortamı, programlama dili ile birlikte birçok bileşenden oluşur.

• Bu bileşenler, sembolik olarak tasarlamış programın bilgisayar donanımıtarafından istenilen işlevleri yerine getirmesi için gereken tüm unsurlardır.

• Programlama ortamının temel unsurları Editör (Editor), Derleyici(Compiler), Kütüphane (Library), Bağlayıcı, Hata ayıklayıcı (Debugger) veyorumlayıcı (Interpreter) dır.

Muhammet Baykara [email protected]

Page 23: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Muhammet Baykara [email protected]

Page 24: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Muhammet Baykara [email protected]

Page 25: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Muhammet Baykara [email protected]

Page 26: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Ortamı • Editör (Editor): Kaynak kodu oluşturmak ve gerektiğinde değişiklik yapmak

için gerekli olan araçtır. Editörde yazılanlar seçilen dilin komutlarından oluşanmetinlerdir.

• Derleyici (Compiler): Editörde yazılan kaynak kodu makine koduna çevirenbir programdır.

• Kütüphane (Library): Nesne dosyalarından oluşur.

• Bağlayıcı: Programın içerdiği tüm nesne dosyalarını birleştirerek tek dosyahaline getirerek yürütülebilir bir dosya haline getirir.

• Hata ayıklayıcı (Debugger): Programcının hataları ayıklayabilmesi içinprogramın adım adım yürütülmesini sağlar.

• Yorumlayıcı (Interpreter): Programın kaynak kodunu doğrudan satır satıryürüten bir programdır. Muhammet Baykara [email protected]

Page 27: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Bir Derleyicinin Genel Yapısı

Muhammet Baykara [email protected]

Page 28: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Elemanları • Sözdizimi/Yazım (Syntax): Temel olarak bir dilde (language) tanımlı olan

öğelerin (kelime, işlem, sembol yada değerlerin) anlamlı bir dizilimoluşturmasıyla ilgilenen bilimdir.

• Anlambilim (Semantics): Bir programlama dilindeki bir ifadenin ne anlamageldiğidir.

• Veri (Data): Bir programda farklı veri tipleriyle işlem yapmamız gerekebilir.Örneğin, tamsayılar, kesirli sayılar, karakterler (harfler ve klavyedeki diğersimgeler), metinler (string), mantıksal (boolean) değerler (doğru=true,yanlış=false) ilk aklımıza gelen farklı veri tipleridir

Muhammet Baykara [email protected]

Page 29: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Elemanları • Atama Deyimi (Assignment Statement): Şeklindeki satırlar

birer atama deyimini (assignment statement)göstermektedir. Bu atama deyimleri ile x değişkenininbellekteki adresinde 5 değeri ve y değişkeninin bellektekiadresinde ise 6 değeri görünecektir.

• Tür Kontrolü: Programlama dillerinde yapılan her işlemöncesi hataları önlemek için verilerin tip kontrolü yapılır. Butür kontrollere ”Checking” adı verilir. Checking işlemlericompile-time (derleme esnasında) veya run-time (çalışmaesnasında) olarak yapılır. İşte bu farklılık Statik Tipli veDinamik Tipli dillerin temel ayrım noktalarından biridir.

Muhammet Baykara [email protected]

Page 30: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Elemanları • Kontrol Deyimleri: Program içerisinde bir işin olumlu veya olumsuz

sonucuna göre yapılması gereken işlemler olabilir. Bu aşamada devreyekontrol deyimleri girer. Örnek kontrol deyimleri; If Else Deyimi, Switch-CaseDeyimi.

• Alt Programlar: Bir programda aynı tür hesaplama işlemi programın farklıyer(ler)inde birden fazla kullanılabilir. Aynı işlem adımlarını bir çok keztekrarlamak, programdaki deyim sayısını arttıracağından hem programınyavaş işlemesini, özellikle programı(n çalışması açısından) izlemeyi güçleştirir.Bu tür tekrarlanan program parçaları, ALT PROGRAM adı altında (anaprogramdan) ayrı bir program olarak yazılabilir.

Muhammet Baykara [email protected]

Page 31: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Muhammet Baykara [email protected]

Page 32: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Programlama Dillerinin Elemanları • Modüller: programlama (modular programming) tekniğinde, birbirleriyle

ilgili olduğu düşünülen ya da aynı çağrışım kümesi içinde olduğu düşünülenfonksiyonlar bir araya toplanarak genellikle farklı bir dosya içinde tutulurlar.

Muhammet Baykara [email protected]

Page 33: Programlama Dilleri - muhammetbaykara.commuhammetbaykara.com/wp-content/uploads/2018/10/bbg_5.pdf · Yazılım Geliştirme Süreci •Gereksinim Analizi: Yazılımprojesinin ilk etabında

Kaynaklarhttp://content.lms.sabis.sakarya.edu.tr/Uploads/50101/39475/bmg_programlamadilleri.pdfhttp://www.farukkirmizi.com/programlama-ve-programlama-ortami.htmlhttps://algoritmaveprogramlama.wordpress.com/2013/09/21/programlama-terimleri-ve-programlama-ortami/https://www.baskent.edu.tr/~tkaracay/etudio/ders/prg/java/ch05/dataTypes.htmhttps://mhmtyylc.com/c-sharp-kontrol-deyimlerihttps://acikders.ankara.edu.tr/pluginfile.php/20859/mod_resource/content/1/fzm205_8.pdf

Muhammet Baykara [email protected]