Programlama Dili Prensipleri. Lab Notları 1

Benzer belgeler
Veri Yapıları Lab Notları 1

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

C++ Giriş. C++ Programlama Dili

Programlama Dillerinde Kullanılan Veri Tipleri

Programlama Dili Prensipleri. Lab Notları 4

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

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Nesneye yönelik: Javada herşey bir nesnedir. Java nesne yönelimli olduğu için kolayca geliştirilebilir.

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

1 PROGRAMLAMAYA GİRİŞ

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

HSancak Nesne Tabanlı Programlama I Ders Notları

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

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

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

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

BİL-141 Bilgisayar Programlama I (Java)

BİL-141 Bilgisayar Programlama I (Java)

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

Karşılaştırma İşlemleri ve Koşullu İfadeler

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

BİLG Dr. Mustafa T. Babagil 1

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

C++ Dersi: Nesne Tabanlı Programlama

BMT 106 Algoritma ve Programlama II Bahar Dönemi

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Bölüm 2 - C ile Programlamaya Giriş

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Nesne Yönelimli Programlama

Java Temel Özellikleri

Görsel Programlama. Temel Veri Tipleri, Değişkenler, Operatörler, Akış Kontrolü, Sınıflar, Metotlar, Paketler ve JavaDoc

Sunum İçeriği. Programlamaya Giriş

Nesne Yönelimli Programlama

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

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

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

C# Çalışma Örnekleri

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Klavyeden Basit Giriş/Çıkış İşlemleri

Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

Java da İşleçler, Ders #3 (4 Kasım 2009)

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

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

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

EMT2226 Nesne Yönelimli Programlamaya Giriş

C++ Dersi: Nesne Tabanlı Programlama

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

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Android Ders Notları

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

Lab Notları 4. for ( ilklenme yeri bir kez çalışır ; Kontrol yeri her döngüde bakılır ; Güncelleme yeri her döngüde )

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Ders - 7 while döngüsü

3.Hafta. . Kontrol Deyimleri/İfadeler

GÖRSEL PROGRAMLAMA - I

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

BİL-142 Bilgisayar Programlama II

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

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

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

C PROGRAMLAMA D İ L İ

Lambda İfadeleri (Lambda Expressions)

HSancak Nesne Tabanlı Programlama I Ders Notları

İÇERİK 2 Java Kodlaması için Gerekli Programlar JRE, JDK kurulması ve Başlangıç Ayarları Java Kodlamayı Kolaylaştıran IDE ler Java Kod Yapısı İlk Java

Java da Program Denetimi ve Operatörler

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

Sınav tarihi : Süre : 60 dak.

Bahar. BM 211 Programlama Dilleri 3 1

// hataları işaret eden referans

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Veri Tanımları ve Mantıksal İşlemler

NESNEYE YÖNELİK PROGRAMLAMA

ALGORİTMA VE PROGRAMLAMA I

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

HSancak Nesne Tabanlı Programlama I Ders Notları

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Güz Yarıyılı Balıkesir Üniversitesi Bilgisayar Mühendisliği Bölümü

Ders 2: Veri Tipleri, Değişkenler ve Sabitler

PROGRAMLAMAYA GİRİŞ DERS 2

Transkript:

Programlama Dillerinin Tarihçesi: Programlama Dili Prensipleri Lab Notları 1 1. Derleme Bir Programın derlenme süreci 1

Lexical: Sözdizimsel analiz. Lexeme: Bir programlama dilindeki en düşük düzeyli sözdizimsel birim x=10*x+5 => Lexical Analizi => Yukarıdaki her bir kareye token denir. 1 X 2 = Syntax Analiz: Syntax e bakarak yazılan kodun hangi programlama diline ait olduğu anlaşılır. 3 10 4 * 5 X 6 + 7 5 C++ Programlama Dili C++ dili, hızlı ve düşük seviye özelliklere erişmek isteyen uygulamaların yazılması için popüler bir dildir. C programlama diline birçok ekstra özellik katmıştır. En önemlisi nesne yönelimli bir programlama dilidir. Sınıfları destekler. Çok biçimlilik ve kalıtımı destekler. Bütün C kodlarını derleyebilir. C++ programlama dilini kullanacak bir programcı bellek yönetimini çok iyi bilmelidir. Kaynak dosyaları.cpp,.cxx,.c gibi uzantılara sahip olabilir. Bu derste kodlar derlenirken bir GNU derleyicisi olan MinGW kullanılacaktır. MinGW kurulumunu yapmak için https://dosya.sakarya.edu.tr/dokumanlar/2015/bsm208/553679379_mingw_kurulumu.pdf dosyası incelenebilir. İlk Program Girilen 4 basamaklı bir sayıyı basamaklarına ayırmak. #include <iostream> using namespace std; int main() { int sayi; setlocale(lc_all,"turkish"); // Türkçe karakter desteği için do{ cout<<"4 Basamaklı bir sayı girin:"; cin>>sayi; while(sayi<1000 sayi>10000); //4 basamaklı sayı kontorlü short birler,onlar,yuzler,binler; binler=sayi/1000; yuzler=(sayi%1000)/100; onlar=(sayi%100)/10; birler=sayi%10; cout<<endl<<"binler:"<<binler<<endl; cout<<endl<<"yüzler:"<<yuzler<<endl; cout<<endl<<"onlar:"<<onlar<<endl; cout<<endl<<"birler:"<<birler<<endl; cin.get(); cin.ignore(); return 0; 2

Nasıl Derlenir: Komut satırından kodun bulunduğu klasöre gelerek g++ -o basamak basamak.cpp girilip enter tuşuna basılırsa derleme gerçekleşip basamak.exe dosyası oluşacaktır. Kod incelendiğinde yorum satırlarının // ifadesiyle başladığı görülecektir. Birden çok satırda yorum yapmak için /* yorumlar */ şeklinde bir kullanım yapılmalıdır. Yorum satırları derleyiciler tarafından görülmez ve o satırlar atlanır. Bu satırlar programcılar için açıklama mahiyetindedirler. # karakteri ile başlayan ifadeler, ön işlemci komutlarıdır. Derleme işleminin hemen öncesinde çalıştırılırlar. Bir başka dosya veya kütüphane ekleme işlemleri bu şekilde yapılmaktadır. { ifadeleri C++ dilinde kod bloklarının açılma ve kapanma ifadeleridir. Fonksiyonlar, sınıf tanımlamaları döngüler, kontrol ifadelerinin hepsi birer kod bloğu olduğu için bu ifadeler ile başlayıp biterler. Fakat bu ifadeleri kullanmak için illaki bu bahsi geçen yapıların olmasına gerek yoktur. Aşağıdaki örnek kod C++ dilinde derlenip çalışacaktır. #include <iostream> using namespace std; int main(){ int a=10; { cout<<a<<endl; { cout<<"merhaba"; return 0; iostream kütüphanesinin eklenmesinin nedeni cout ve cin gibi girdi ve çıktı fonksiyonlarının tanınması içindir. cin girdi alma ifadesidir ve bir dosyadan girdi alınabileceği gibi ekrandan da girdi almak için kullanılabilir. cout ise çıktı verme için kullanılır. Çalıştırılabilir bir C++ programı olabilmesi için bir main yani giriş fonksiyonuna ihtiyaç vardır. Bu derleyicinin kodun hangi satırından başlayacağını bilmesi içindir. main fonksiyonu tamamlandığında program kapanmış demektir. main fonksiyonun sonudaki return 0; ifadesi programın, işletim sistemine her şey yolunda gitti ve işlem başarıyla tamamlandı demesidir. C++ ta çalıştırılacak tüm ifadeler ; ile biter. C++ programlama dilinde kaynak kodda bırakılan boşluk miktarının bir önemi yoktur örneğin aşağıdaki program başarıyla çalışır. Sadece okunabilirliği düşüktür. #include <iostream> using namespace std; int main(){ for(int i=0; i<10; i++)cout<<i<<endl; Java Programlama Dili İlk başlarda Oak ismiyle tasarlanan Java programlama dili gömülü uygulamalar için kullanılıyordu. 1995 yılında Java ismini aldı. Internet uygulamaları geliştirmek için yeniden tasarlandı. Bundan sonra 3

Java gittikçe popülerleşti. Java nın hızlı bir şekilde yükselişinin ve bu kadar popüler olmasının ardındaki en büyük etken verdiği sözde yatmaktaydı. Kodu bir kere yaz ve istediğin yerde çalıştır. Java dilinin desteklediği özellikleri madde halinde yazacak olursak - Tasarımı kolay - Nesne Yönelimli - Taşınabilen - Yorumlanabilen - Güvenli - Yüksek Performanslı - Çoklu-Thread destekleyen - Dinamik Günümüzde Java, sadece web uygulaması için değil bilgisayar uygulaması için de kullanılmaktadır. Yüksek seviyeli bir dilde yazılan programa kaynak program denir. Bilgisayar kaynak programı anlayamaz bunun için bir dönüştürücüye ihtiyaç vardır. Kaynak koddan makinenin anlayacağı asambly koda çevirenlere derleyici denir. Derleyiciler ekstra kütüphane ve nesne dosyalarını da linker yardımıyla derleme sürecine dahil ederler. Uygun derleyici yardımıyla bir program kodu herhangi bir makine koduna çevrilebilir. Fakat bir makine kodu sadece ilgili özel makinede çalışacaktır. İşte Java bu engeli ortadan kaldırmak için herhangi bir platformda çalışabilecek şekilde tasarlamıştır. Bunun yaparken Java, kaynak kodu özel bir makine koduna çevirir. Bu makine koduna Byte kod (bytecode) denir. Bu Byte kod istediğiniz herhangi bir makinede Java sanal makinesi (Java Virtual machine) yardımıyla çalıştırılabilir. Java Byte Kod Java Sanal Makinesi Herhangi bir platform Bir Java programı birçok yolla yazılabilir. Bir Java uygulaması, bir Applet veya bir Servlet olabilir. Uygulamalar herhangi bir bilgisayarda Java Sanal Makinesi yardımıyla çalıştırılabilen programlardır. Appletler web üzerinden çalışan özel uygulamalardır. Servlet ler ise server üzerinden çalışan ve dinamik web içeriği üreten programlardır. Bu ders kapsamında sadece bilgisayar üzerinde çalışan Java uygulamaları üzerinde durulacaktır. Her Java programı en az bir sınıfa sahiptir. Sınıf metot ve verileri içeren bir yapıdır. Sınıflar.java uzantılı dosyalardır. Nesne dosyası oluşturulduğunda.class şeklinde bir dosya oluşur. Bu ders kapsamında Java derleyicisi olarak NetBeans kullanılacaktır. NetBeans kurulumu için aşağıdaki dosyadan yardım alabilirsiniz. https://dosya.sakarya.edu.tr/dokumanlar/2015/bsm208/352180945_netbeans_kurulumu.pdf Örneğin aşağıdaki programı NetBeans ta yazarsak. Program girilen ifadeyi ekrana yazmaktadır. Programdan da görüleceği üzere Java, C++ ile aynı altyapıdan geldiği için birçok yönden benzerlikler bulunmaktadır. 4

package ilkproje; import java.util.scanner; /** * * @author M.Fatih */ public class IlkProje { /** * @param args the command line arguments */ public static void main(string[] args) { // TODO code application logic here Scanner scan = new Scanner(System.in); String girilen = scan.nextline(); System.out.println(girilen); Yorum açısından C++ ile aynıdır. /** */ bu şekilde bir yorum tarzı dokümantasyon için kullanılır. İlk satırda bulunan package, paket tanımlaması için kullanılır. Amacı isim benzerliğinin ve bundan doğacak problemlerin önüne geçmektir. Paket ismi klasör ismi ile aynı olmalıdır. Örneğin yukarıdaki IlkProje sınıfı ilkproje klsörünün içerisindedir. Farklı bir paket ismi de olabilirdi. Buradaki önemli nokta paket ismi ile klasör isminin aynı olmasıdır. Java da kütüphanelerin, sınıfların veya farklı dosyaların yazılan projeye eklenmesi import kelimesi ile olmaktadır. Yukarıdaki kodda girdi almak için kullanılan Scanner sınıfı import kelimesi ile projeye eklenmiştir. import java.util.*; * karakteri de kullanılabilir. * karakteri paketin hepsini dahil eder. util paketindeki herşey dahil edilecektir. Eğer import yazılmadan kullanılmak isteniyorsa bu durumda her kullanışta tam paket yolu yazılmalıdır. java.util.scanner scan = new java.util.scanner(system.in); gibi C++ ve Java da ayrılmış kelimeler (her ikisi içinde geçerlidir) break case catch char class const continue default do double else float for goto if int long new private protected public return short static switch throw try void volatile while Bu kelimelerden const ve goto artık Java için tanımsız olup kullanılmamaktadır. Aşağıdaki kelimeler ise sadece Java için özeldir. abstract boolean byvalue cast extends final finally future generic implements import inner instanceof interface native null operator outer package rest super synchronized this throws transient var Yukarıda kırmızı ile yazılanlar şuanda Java da tanımsız olup kullanılmamaktadır. C++ a özgü olan kelimeler aşağıda listelenmiştir. auto enum extern friend inline register signed sizeof struct typedef union unsigned 5

C++ ta main metodu bir sınıf içerisinde olmadan tanımlanıyordu. Fakat Java da tanımlamak bir zorunluluktur. Fakat Java da main metodunun başında static ifadesi bulunuyor. Bu ifadelerin daha detaylı bir şekilde anlatımı ileriki bölümlerde açıklanacaktır. static konmasının sebebi main metodu nesne oluşumu başlamadan önce çalışmaya başlıyor. Eğer static olmasaydı nesnesi oluşturulup metodun çağrılması gerekecekti. /* Dene.java */ public class Dene { public void F(){ System.out.println("Cagrildi..."); Dene d = new Dene(); d.f(); Eğer F metodu static tanımlansa idi aşağıda görüldüğü gibi Dene sınıfının nesnesi oluşturulmadan çağrılabildi. /* Dene.java */ public class Dene { public static void F(){ System.out.println("Cagrildi..."); Dene.F(); Komut Satırı Parametreleri Komut satırı parametreleri, daha program çalışmaya başlamadan önce programa belli parametreleri girmeyi sağlar. Bu C++ ve Java da main metodunun parametreleri ile sağlanır. Örneğin aşağıdaki iki kod sırasıyla C++ ve Java da komut satırından aldığı parametreyi ekrana yazar. C++ ta 1. İndekstekini almamızın sebebi 0. İndekste programın kendisini tutmaktadır. Bunun dışında C++ ta argc isminde bir başka parametrede bulunmaktadır. Bu argc, komut satırından kaç adet parametre girildiğini gösterir. Java da Netbeans ortamında komut satırı parametresi girebilmek için proje adına ters tıklayıp Properties kısmına gelinir. Buradan da Run alt alanına gelindikten sonra Arguments yazan kısım komut satırı parametrelerini ifade eden kısımdır. Birden çok parametre girmek için parametreler arası boşluk bırakılmalıdır. // Java public static void main(string[] args) { // TODO code application logic here System.out.println(args[0]); // C++ int main(int argc,char *argv[]){ cout<<argv[1]<<endl; Hazırlayan Arş. Gör. M. Fatih ADAK 6