Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Programlama, bir işlemin bilgisayarın anlayabileceği bir biçime dönüştürülmesi işlemidir. Program, bilgisayar sistemine yaptırılmak istenen işlemi özel kodlarla tanımlayan araç olarak bilinir. Program, bir programlama dili aracılığıyla hazırlanır. Kullanılacak programlama dili, çözülecek problemin niteliğine bağlı olarak seçilebilir. Hangi dilin seçileceğini belirleyen etkenlerin başında, verilerin işlenmesinde zaman tasarrufu yada komut sayısını sınırlamak olabilir. Programlama dili, program tasarımında sorulardan biri tasarlanan çözümlemeye uygun programlama dilini seçmektir. Programlama dilleri, bilgisayarda çalıştırılmak üzere hazırlanır.
Bir programlama dilinin belirli amaçlara hizmet eden bir çok deyimi vardır ve bu deyimler özel kodlarla ifade edilir. Programlama dillerinin ortak özellikleri vardır. Programlama dillerinin tümü simgesel’dir. Yani, bilgisayarın anlayacağı işlemleri insanların da anlayabileceği simgelerle ifade ederler. Örneğin program içinde yer alan write/print komutunun, yazma işlemini yerine getiren bir komut olduğu hemen anlaşılır. Bu simgeler, özel programlar yardımıyla bilgisayarın anlayabileceği bir biçime çevrilirler. Bu programlara derleyici adı verilir Programın yazımı, kaynak programın geçerli makine diline derleyici aracılığı ile çevrilmesi için kaynak programın bilgisayar ortamında bir yazım/editör programı yardımı ile, gerçekleştirilir.
Programım yazımında anlaşılabilirlik ve okunabilirlik önem taşır. Program yazma, ilk kez yazma veya var olan programı geliştirme şeklinde olabilir. Programlar çoğunlukla ilk kez yazıldığından sonra üzerinde düzeltme ve geliştirmeler yapma gerektirir. Bu nedenle, diğer taraftan programlar bir kez kullanılmak için de hazırlanmaz bir süre sonra programa bakıldığında anlaşılabilir olma önemli olur. Açıklama satırları eklemek, program işlem kümelerini, yordamları, yapıları izlenebilir yapıda yazmak sonrada izlenebilmeye kolaylık sağlar. Değişkenlere, yordamlara işlev ve görevini anımsatacak isimler vermek, karar işlemlerini anlaşılır açıklıkta yazmak, okunabilirliğine yardım edecektir.
Dil derleyiciler (compilers), elektronik ortamda disk kütüğü yapısında hazırlanan kaynak programın işleyebilir makine diline dönüştürülmesi, kullanılan üst düzey dil için hazırlanmış dil derleyicisi yazılımları ile gerçekleştirilir. Örneğin, C ve C++ destekleyen Turbo C++, Borland C++, MS Visual C++ derleyicileri yaygın kullanılan dil derleyicilerindendir. Derleme: derleme işlemi üst düzey dille hazırlanan kaynak programı geçerli makine dili içerikli amaç programa dönüştürür. Bu dönüştürme süreci bir adımda gerçekleşmez. Örneğin C Derleyicisi derleme (compile), bağlama (linker), yükleme (loader) işlemleri sonunda işleyebilir amaç programa (makine kodu) dönüşür.
C ve C++ tarihi (History of C and C++) C’nin tarihi gelişimi İki programlama dilinden türetilmiştir ○ BCPL and B Tip tanımlanması olmayan dillerdir (“Typeless” languages) 1970 yılların başında Dennis Ritchie (Bell Laboratories ○ Veri tiplerini ve diğer özellikleri eklemiştir(Added data typing, other features) UNIX işletim sisteminin geliştirilmesinde kullanılmıştır Donanımdan Bağımsızdır (Hardware independent) ○ Taşınabilir programlar(Portable programs) 1989: ANSI standard 1990: ANSI and ISO standard duyuruldu ○ ANSI/ISO 9899: 1990
C ve C++ tarihi (History of C and C++) C++ Tarihi C’ nin genişletilmişidir 1980 lerin başında Bjarne Stroustrup (Bell Laboratories) “Spruces up” C Nesneye dayalı programlama desteği sunmaktadır (Provides capabilities for object-oriented programming) ○ Nesneler: Yazılımın yeniden kullanılabilen elemanlarıdır. Gerçek dünyadaki modellerin benzerleridir. ○ Nesneye dayalı programlama dilleri(Object-oriented programs) Anlaşılması kolay, kolayca çözümlenebilir ve değişiklik yapılabilir Karma Diller(Hybrid language) ○ C benzeri ○ Nesneye dayalı ○ Her ikisi
C++ Standard Library C++ programs Sınıflardan ve fonksiyon parçalarından oluşturulur. C++ standard library Zengin bir sınıf ve fonksiyon topluluğuna sahiptir. Program oluşturmak için bloklar kullanılır. Böylece program yeniden kullanılabilir.
Java Java 1991: Sun Microsystems ○ Green project 1995: Sun Microsystems ○ Resmi olarak duyurulmuştur Web sayfaları dinamik ve etkileşimli hale getirilmiştir Büyük ölçekli uygulamalar gerçekleştirilebilir. Web servisleri fonksiyonelliği artırılmıştır. Ticari cihazlar için uygulamalar geliştirilebilir olmuştur. ○ Cep telefonları, pagers, personal digital assistants, …
Visual Basic, Visual C++ and C# BASIC Beginner’s All-Purpose Symbolic Instruction Code 1960 lı yılların ortasında: Prof. John Kemeny and Thomas Kurtz (Dartmouth College) Visual Basic 1991 ○ Microsoft Windows grafik arabiriminin geliştirilmesi sonucunda Microsoft Windows graphical user interface (GUI) 1990 lı yılların başında geliştirildi. Güçlü özellikleri ○ GUI, Olay denetimi(event handling), Win32 API ye erişim (access to Win32 API), Nesneye dayalı programlama(object-oriented programming), Hata yönetimi (error handling) Visual Basic.NET
Visual Basic, Visual C++ and C# Visual C++ C++ Microsoft tarafından geliştirilmiş ○ İlaveler içerir ○ Microsoft Foundation Classes (MFC) ○ Ortak kütüphaneler GUI, graphics, networking, multithreading, … Kütüphaneler, Visual Basic, Visual C++, C# .NET platform Web tabanlı uygulamalar ○ Yazılım geniş çaplıdır ve çok çeşitli aygıtları kapsar Cep telefonu, PDA,desktop computers
Visual Basic, Visual C++ and C# C# Anders Hejlsberg ve Scott Wiltamuth (Microsoft).NET platform platformu için dizayn edilmiştir. C, C++ ve Java dan faydalanılmıştır. Olay bazlı, Tam nesneye yönelimli(object-oriented), Görsel programlama dili(visual programming language) Entegre yazılım geliştirme Bileşenleri sunar(Integrated Development Environment -IDE) ○ C# programlarını oluşturabilir, derleyebilir ve çalıştırabilirsiniz ○ Hızlı program geliştirme(Rapid Application Development) Diğer programlama dilleri ile iç içe çalışabilme
Yüksek seviyeli diller FORTRAN FORmula TRANslator : IBM Karmaşık matematik denklemlerinin çözümü ○ Bilimsel ve matematiksel problemlerin çözümü COBOL COmmon Business Oriented Language 1959: computer manufacturers, government and industrial computer users Büyük dataların işlenmesi ve değerlendirilmesinde kullanılan programlama dili ○ Ticari uygulamalar
Yüksek seviyeli diller Pascal Prof. Niklaus Wirth Akademik kullanım
Basics of a Typical C++ Environment Phases of C++ Programs: 1.Edit 2.Preprocess 3.Compile 4.Link 5.Load 6.Execute Loader Primary Memory Program is created in the editor and stored on disk. Preprocessor program processes the code. Loader puts program in memory. CPU takes each instruction and executes it, possibly storing new data values as the program executes. Compiler Compiler creates object code and stores it on disk. Linker links the object code with the libraries, creates a.out and stores it on disk Editor Preprocessor Linker CPU Primary Memory Disk
C/C++ da yazılan programların derlenmesi Tüm yüksek seviyeli programlar gibi C ve C++ dillerinde de program yazıldıktan sonra çalıştırılabilmesi için derleyici ile makine diline çevrilmesi gerekir. Program ilk olarak bir editörde yazılır. Bu programa kaynak (source) program ve içindeki kodlara kaynak (source) kodlar denir. Derlendikten sonra programın makine dilindeki versiyonu nesne (object) program adını taşır ve.obj uzantılı olur. Derlendikten sonra çalışmaya hazır programın uzantısı.exe olur ve buna exe programı denir. {execute: yürütme} Derlenmeden önce kaynak program, sabit diske dosya şeklinde kaydedilmelidir. Bir çok C++ derleyicisi kaynak programın.cpp (.c) uzantılı bir dosya olmasını bekler. Örneğin: ornek1.cpp (ornek1.c) C++ dilinde bir programın oluşturulması, derlenmesi ve çalıştırılması aşağıdaki iş akış diyagramı ile ifade edilebilir;
Günümüzde en yaygın C/C++ derleyicileri, Turbo C++, Microsoft C++ ve Borland C++ derleyicileridir. Ayrıca Visual C++ ve Visual C++’ı içeren Microsoft Visual Studio.NET derleyicileri konsol (Windows ortamında çalışan DOS programları) denilen bir çeşidi ile C/C++ programlarını derleyebilmektedir. Bu derleyiciler program editörü ve derleyicisini bir arada bulundururlar.
. C/C++ da programlama C/C++ programlama dili, fonksiyon olarak adlandırılan altprogramların birleştirilmesi kavramına dayanır. Bir C/C++ programı, bir yada daha çok fonksiyonun bir araya gelmesi ile oluşur. Bir fonksiyona ait kodlar blok şeklinde iki büyük { } parantez içinde yazılır. C/C++ programlarında main() özel bir fonksiyondur ve programın yürütülmesine bu fonksiyon ile başlanır. Her C/C++ programında ana fonksiyon olan bir tane main() bulunmalıdır. Bir C++ programının temel yapısı aşağıdaki gibidir; /* Önişlemci komutları */ /* Genel bildirimler */ main () /* Ana fonksiyon */ { /* Program kodları */ }
. Örnek C/C++ programı; #include /* Önişlemci komutları */ int n;/* Genel bildirimler */ void main(void) /* Ana fonksiyon */ { n=7; printf("n degeri=%d",n); } ************************ #include void main() { printf("\nHello World\n"); } Hello World
C programlama dili C yapısal bir programlama dilidir. Yapısal programlamanın en önemli ayırt edici özelliği ifadelerden setinden oluşan bloklar ve mantıksal olarak bu blokların birbirine bağlı olmasıdır. Bir c programı, boyutu ne olursa olsun, fonksiyonlardan ve değişkenlerden oluşur. Bir fonksiyon, özel bir hesaplama işlemini gerçekleştirecek ifadeler ve hesaplama işlemleri sırasında kullanılan verilerin saklandığı değişkenlerden oluşur.
C programlama dili C fonksiyonları, Fortran programlama dilinin fonksiyonları ve alt programları veya Pascal programlama dilinin fonksiyonları benzeridir Verilen örneklerde, fonksiyon olarak main fonksiyonu görülmektedir. Normalde fonksiyon ismi olarak istenilen isim verilebilir( c ifadeleri olmamak koşulu ile) Main fonksiyonu c programları için önem arz eder. Çünkü main fonksiyonu içerisindeki ifadeler yürütülür. Diğer fonksiyonlar main fonksiyonu içerisinden çağrılarak kullanılır.
Yani her C programı bir main foksiyonuna sahip olmak zorundadır. Main fonksiyonu görevini yerine getirmek için kullanıcı ve kütüphanelerdeki dosyaları çağırır. #include void main() { printf("\nHello World\n"); } programda ilk satır #include Derleyiciye standart input/output library den bilgi yüklemesini söyler. Bu satırlar c program kodlarının başında görülür(kütüphane kavramı üzerinde sonra durulacaktır).
Fonksiyonlar ile veri iletişimi fonksiyondan sonra paranntezler içerisinde değerler listesini veya parametre bileşenlerini vererek sağlanır. main(parametre listesi) Bir fonksiyona ait ifadeler kapalı süslü parantezler arasında verilir. Örneğimizde, sadece main fonksiyonu yer almaktadır. İçerisinde ise bir ifade bulunur; printf("\nHello World\n"); Burada printf bir fonksiyondur, "\nHello World\n“ parametredir. Çift tırnak içerisindeki ifade karakter dizini olarak ifade edilir ve çift tırnak içinde verilmelidir.
\n ise yeni satır karakteridir. Derleyiciye yeni bir satır eklemesini söyler. Fonksiyon(printf) yeni satır ekleme işini otomatik olarak sağlamaz parametre kullanılmalıdır.
#include void main() { printf("Hello"); printf(" World"); printf("\n"); } /* ….*/ Açıklama lar(Comments), kaynak kodun içerisinde /* ile başlayıp */ ile bitmek kaydı ile istenilen yere yazılabilir ve istenilen karakter dizini olabilir. Bu açıklamalar derleyici tarafından dikkate alınmazlar. Kodun anlaşılmasında ve programın büyümesi durumlarında kodun anlaşılmasına yardımcı olur. ; ifadelerden sonra kullanılır.
#include void main(){printf("\nHello World\n");} #include void main() { printf("\n"); printf("Hello World"); printf("\n"); }
The following program, sine.c, computes a table of the sine function for angles between 0 and 360 degrees.
Araştırıyorum, öğreniyorum Değişken, değişken tipi nedir? Değişken tiplerine niye ihtiyaç duyulmuş? Değişkenlerin yaşam süreleri ne demektir? Temel ve türetilmiş veri tipi ne demektir? Operatörler çeşitleri ve işlevleri nelerdir?