Veri Yapıları 2010 Java Programlama Diline Giriş. Doç. Dr. Aybars UĞUR



Benzer belgeler
Veri Yapıları 2007 Java Programlama Diline Giriş. Yrd. Doç. Dr. Aybars UĞUR

İç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

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

MAT213 Bilgisayar Programlama I. Anadolu Üniversitesi Fen Fakültesi Matematik Bölümü Emrah Akyar Sunum #1

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

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

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

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

DATA STRUCTURES. Part I C# Programlama Dili Temelleri

// hataları işaret eden referans

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.

EMT2226 Nesne Yönelimli Programlamaya Giriş

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

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

JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN

Programlama Dillerinde Kullanılan Veri Tipleri

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

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

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

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

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

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

Java da Program Denetimi ve Operatörler

Ç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# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

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

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

Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.

Nesne Yönelimli Programlama

D İ Z İ L E R A R R A Y S

HSancak Nesne Tabanlı Programlama I Ders Notları

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

Java: printf() Metodu İle Çıktıyı Biçemleme

JAVADA DİZİ İŞLEMLERİ

MAT213 Bilgisayar Programlama I

OPERATÖRLER Alıştırmalar

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

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

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

Temel Veri Türü İşlemleri

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

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

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

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

C# Diziler Sınıf metotları Erişim (kullanım hakkı) deyimleri Üyelerin ömrü(geçerlilik süresi) Hata ayıklama (debug) aracı

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

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

Nesne Yönelimli Programlama

YZM 2105 Nesneye Yönelik Programlama

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

Diziler İndisli Değişkenler

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

PROGRAMLAMAYA GİRİŞ DERS 2

Aritmetik Operatörleri Hemen her programlama dilinde olduğu gibi java dilinde de aritmetik işlemler yaparken aşağıdaki operatörleri kullanırız:

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

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

11- FONKSİYONLAR (FUNCTIONS)

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

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

Dizi ( Array ) ve Dizgi ( String )

BASİT VERİ TÜRLERİ, STRİNGLER, VE KONSOL GİRİŞ/ÇIKIŞ

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Ders - 7 while döngüsü

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Nesne Tabanlı Programlama

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

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

M.ilkucar MAKU MYO 1

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

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

Nesne Yönelimli Programlama

Mantıksal (Logic) Operatörler

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

HSancak Nesne Tabanlı Programlama I Ders Notları

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

JAVA DEĞİŞKEN VE OPERATÖRLER. M.İLKUÇAR - 1

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

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

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

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

ALGORTMA ve PROGRAMLAMA - II (C# Sürümü) DERS NOTLARI

1 JAVASCRIPT NEDİR? 1

Floating Point (Kayan Noktalı Sayılar)

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

İnternet Programcılığı Dersi 2.Dönem Ders Notu

C Programlama Dilininin Basit Yapıları

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

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

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

BİL1001 Bilgisayar Bilimlerine Giriş 1

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Görsel Programlama 1

Dr. Fatih AY Tel: fatihay@fatihay.net

Transkript:

Veri Yapıları 2010 Java Programlama Diline Giriş Doç. Dr. Aybars UĞUR

Bölüm 1 GİRİŞ

Java Java, ilk olarak Sun Microsystems tarafından geliştirilen nesne yönelimli programlama dilidir. 1995 yılında piyasaya sürülmüştür. James Gosling, Haziran 1991 de Oak adıyla geliştirmiştir. Platform bağımsızlığı (programı bir kere yaz, derle ve her platformda çalıştır), tasarım amaçlarındandır. Birçok donanım, işletim sistemi ve platformda çalışabilmektedir. 3

Önemli Java Gerçekleştirimleri Sürüm Ad Açıklama JDK 1.1 (1995) Java 1.0 İlk sürüm J2SE 1.2(1998) J2SE 5.0(2004) J2SE Java 2 J2SE Tiger J2SE (Java 2 Platform, Standard Edition) J2EE (Java 2 Platform, Enterprise Edition) J2ME (Java 2 Platform, Micro Edition). Generic yapılar, Autoboxing/Unboxing Gelişmiş for döngüsü, Varargs (Değişken sayıda argüman) J2SE 6 (2006 sonu) : Mustang J2SE 7 (Ağustos 2006-2010) : Dolphin Son gelişmeler için : http://en.wikipedia.org/wiki/java_version_history 4

JVM ve Bytecode JVM (Java Virtual Machine) veya Java Sanal Makinesi: Java nın özgün sanal makine modelini gerçekleştiren bilgisayar programları ve yapılarından oluşan bir bütündür. Java Bytecode adı verilen, bilgisayar ara dilini kabul eder. Bir programın bytecode u, Java dili derleyicileri tarafından üretilir. 5

İlk Java Programı Prog1 adlı java programı : class Prog1 { public static void main(string args[]) { System.out.println("Merhaba"); } } ekrana merhaba yazdırmaktadır. 6

Java Uygulaması Java programlarında // Satırın geri kalan kısmının açıklama satırı olduğunu gösterir. Geleneksel /* Açıklama */ işaretleri de özellikle çok satıra yayılan açıklamalarda kullanılır. Deyimler ; ile sonlandırılmalıdır. Her java programı en az bir sınıf tanımı içermelidir. 7

Java Programının Çalıştırılması JVM i (Java Virtual Machine) açmak üzere Java komutu kullanıldığında işletilen bilgisayar programına Java uygulaması (application) denilir. Kaynak Kod Prog1.java DERLEME javac derleyicisi Byte Kod Prog1.class class Prog1 { public static void main(string args[]) { System.out.println("Merhaba"); } } > javac Prog1.java Byte Kod Prog1.class.......... 80 1a.......... ÇALIŞTIRMA java yorumlayıcısı > java Prog1.......... 80 1a.......... JVM tarafından yorumlanabilir. > Merhaba 8

Entegre Geliştirme Ortamları Programların IDE (Integrated Development Environment) kullanılarak yazılması, işletilmesi, test edilmesi ve hatalardan arındırılması kolay olduğu için, bu şekilde uygulama yazılması işlemine RAD (Rapid Application Development) adı verilmektedir. Eclipse (http://www.eclipse.org/) NetBeans (http://www.netbeans.org/products/platform/) JDeveloper (from Oracle) IntelliJ (JetBrains) JCreator (http://www.jcreator.com/) 9

Bölüm 2 JAVA da VERİ TİPLERİ

Veri Tipleri Java da iki tür veri tipi vardır: Temel Referans İki tür veri tipi arasındaki fark atama işlemi sırasında ortaya çıkar. Temel tipteki bir değişkenin diğer bir değişkene ataması sırasında veri kopyalanır. Referans değişkeninin diğer bir değişkene ataması sırasında ise, her iki değişken de aynı veriyi gösterir. Referanslar, C/C++ işaretçilerine (pointer) benzerler. Diziler ve Nesnelerin tümü referans veri tipindedir. 11

Java da Temel Veri Tipleri Type Size in bits Values boolean 1 true or false byte 8-128 to +127 char 16 Unicode short 16 integer int 32 integer long 64 integer float 32 float double 64 double 12

Temel Veri Tiplerinin Sınırları Tamsayıların Sınırları Ondalıklı Sayıların Sınırları 13

Java nın 8 Temel Veri Tipi Type Size in bits Values Standard boolean 8 true or false char 16 \u0000 to \uffff (ISO Unicode character set) byte 8 128 to +127 short 16 32,768 to +32,767 int 32 2,147,483,648 to +2,147,483,647 long 64 9,223,372,036,854,775,808 to +9,223,372,036,854,775,807 float 32 3.40292347E+38 to +3.40292347E+38 double 64 1.79769313486231570E+308 to +1.79769313486231570E+308 (IEEE 754 floating point) (IEEE 754 floating point) Sarmalayıcı (Wrapper) Sınıflar java.lang.byte java.lang.short java.lang.integer java.lang.long java.lang.float java.lang.double java.lang.character java.lang.boolean 14

ASCII ve UNICODE Karakter Setleri ASCII, 8 bit kodlama düzenindedir ve en yaygın karakter setidir. 256 karakterle sınırlıdır. Unicode, 16 bitlik kodlama düzenindedir ve 65536 karakterlik sahası vardır. Java programlama dili Unicode u kullanır. 15

İkiye Tümleyen (Two s Complement) İkiye tümleyen, negatif sayıları İkili sayılar içerisinde göstermek için kullanılan bir yöntemdir. İlave bir + ve sembolüne ihtiyaç duyulmaz. İkili (binary) bir sayının ikiye tümleyeni (two s complement), sayının ikinin üssünden çıkartılması ile elde edilir (n bitlik ikinin tümleyeni için, 2 N den çıkarılır). Negatif sayıların ikili kodlanması esnasında ikiye tümleme metodu kullanılmadığı taktirde, sayının işareti için ayrı bir bit harcanması gerekir. Birbirinden farklı işarete sahip birden fazla 0 sayısının oluşmasına sebep olur. Bitlerin değerlerini ve anlamlarını değerlendirecek bir yönetimdenetim mekanizması kullanılması gerekir. 16

8 Bitlik İkinin Tümleyeni Tamsayılar A two's-complement system or two's-complement arithmetic is a system in which negative numbers are represented by the two's complement of the absolute value. Pozitif Sayılar doğal şekildedir: this system is the most common method of representing signed integers on computers. In such a system, a number is negated (converted from positive to negative or vice versa) by computing its two's complement. Sınırları : [-2 N-1 2 N-1-1] 17

Java Byte Data Type Decimal 8 bit Binary Invert add 1 for Twos Complement Decimal 0 0000 0000 - - - +1 0000 0001 1111 1110 1111 1111-1 +2 0000 0010 1111 1101 1111 1110-2 +3 0000 0011 1111 1100 1111 1101-3 +4 0000 0100 1111 1011 1111 1100-4 +5 0000 0101 1111 1010 1111 1011-5 124 0111 1100 1000 0011 1000 0100-124 125 0111 1101 1000 0010 1000 0011-125 126 0111 1110 1000 0001 1000 0010-126 127 0111 1111 1000 0000 1000 0001-127 - - - 1000 0000-128 18

IEEE 754 Standard for Floating-Point Arithmetic http://tr.wikipedia.org/wiki/ieee_754 http://en.wikipedia.org/wiki/ieee_754-1985 IEEE Kayan Nokta Aritmetiği Standardı, kayan noktalı sayıların gösteriminde en çok kullanılan standarttır. IEEE 754 standardına göre sayılar tek duyarlı (32 bit) ve çift duyarlı(64 bit) şekilde gösterilebilirler. 19

IEEE 754 : Tek Duyarlı Gösterim Tek duyarlı gösterimde sayı 32 bitle ifade edilir. Bu bitlerden biri işaret, 8'i üs 23 tanesi ise anlamlı kısmın gösterimi için kullanılır. Tek duyarlı gösterimde üs için kaydırma değeri 2 8-1 -1 = 127 olarak hesaplanır. 1 bit 8 bit 23 bit İşaret sign Üs exponent Anlamlı Kısım fraction 20

IEEE 754 : Tek Duyarlı Gösterim Tek duyarlı gösterimde 6,375 sayısını temsil etmek istersek : 6 (110) 2 0,375 2 = 0,75 0,75 2 = 1,5 0,5 2 = 1,0 0,375 = (0,011) 2 6,375 = (110,011) 2 Sayıyı olağan duruma getirirsek : 110,011 = 1,10011x2 2 Sayı > 0 olduğundan işaret biti : 0 Sayının üst değerinin saptırılmış hali : 2+127 = 129 129 10 = 10000001 2 Anlamlı kısım : 10011000000000000000000 Sayı son olarak : 0 10000001 10011000000000000000000 şeklinde ifade edilir. 21

IEEE Tek Duyarlı Gösterimdeki Bir Sayının Onluk Düzendeki Değerinin Bulunması v = s 2 e m where s = +1 (positive numbers and +0) when the sign bit is 0 s = 1 (negative numbers and 0) when the sign bit is 1 e = exponent 127 (in other words the exponent is stored with 127 added to it, also called "biased with 127") m = 1.fraction in binary (that is, the significand is the binary number 1 followed by the radix point followed by the binary bits of the fraction). Therefore, 1 m < 2. (1+fraction) 0 10000001 10011000000000000000000 v = +1 * 2 2 * (1,10011) 2 = 6,375 1+ 0,5+ 0,0625+ 0,03125 = 1,59375 22

IEEE 754 : Çift Duyarlı Gösterim Çift duyarlı gösterimde sayı 64 bitle ifade edilir. Bu bitlerden biri işaret, 11'i üs ve 52 tanesi de anlamlı kısmı ifade etmek için kullanılır. Bu gösterimde üs için sapma değeri 2 11-1 -1 = 1023 olarak hesaplanır. 1 bit 11 bit 52 bit İşaret sign Üs exponent Anlamlı Kısım fraction 23

Değişkenler - I Tip değişken ismi int sayi1; // int veri tipidir. /* sayi1 değişkeninin tamsayı tipinde olduğunu belirtir */... sayi1=5; float sayi=5.7f; 24

Değişkenler - II Değişkenler, tanımlandıkları gibi değer alırlar: int a = -5; double b = 10.3; Aynı satırda birden çok değişken tanımı yapılabilir. C++ programlama Dilinde olduğu gibi değişkenler, herhangi bir yerde tanımlanabilir. Metodun en üstünde tanımlanma zorunluluğu yoktur. Değişkenlerin, gerekli olduğu yerde tanımlanması uygundur. Java Dilinde değişkenlerin kullanılmadan önce değerleri olması gerekir. Değişkenler sadece tanımlandıkları blokta kullanılabilirler. 25

Veri Tipi Dönüştürme (Casting) Daha geniş bir tipi, daha dar bir veri tipine dönüştürürken casting yapmak gerekir. double sayi1=5; // float sayi2 = sayi1; // Yanlış float sayi2 = (float)sayi1; // Doğru double sayi3 = sayi2; /* Geniş tip olduğundan problem yok */ 26

Yazdırma Komutu System.out.print ve System.out.println System.out.print( Merhaba ); System.out.println( Java Dili ); Merhaba Java Dili System.out.println( \nortalama="+57); System.out.println(5); int sayi = 5; System.out.println("Sayi\tKaresi"); System.out.println(sayi+"\t"+(sayi*sayi)); Sayi Karesi 5 25 System.out.printf (J2SE 5.0 ın yeni özelliklerindendir) String str = "Java"; double versiyon = 5.0; System.out.printf("Merhaba %s %f ", str, versiyon); 27

Java da Klavyeden Okuma import java.util.scanner; class Dene { public static void main(string args[]) { Scanner str = new Scanner(System.in); int i = str.nextint(); } } System.out.println(""+(i*i)); Ayrıntılar için : http://java.sun.com/j2se/1.5.0/docs/api/java/util/scanner.html 28

OPERATÖRLER - I Hesaplamalarda kullanılan operatörler : Aritmetik : +, -, *, /, % (Mod, kalan), ++, -- Mantıksal : &&,,!, &,,... İlişkisel : == (eşittir)!= (eşit değildir) >, <, >=, <= 29

OPERATÖRLER - II Atama Operatörü : değişken = deyim; int x = 5; double sayi = -3.5; int a, b, c; a=b=c=100; // Atama zinciri Bileşik Atamalar : +=, -=, *=, /=,... x-=10; // x = x - 10 ile eşdeğer 30

Operatörler ve Öncelik Sırası Gruplama Operatorler Postfix []. (params) exp++ exp-- Unary ++exp --exp +exp -exp ~! Creation, cast new (type)exp Multiplicative * / % Additive + - Shift << >> >>> Relational < > <= >= instanceof Equality ==!= Bitwise AND & Bitwise EXOR ^ Bitwise OR Logical AND && Logical OR Conditional?: Assignment = *= /= %= += -= >>= <<= >>>= &= ^= = 31

Bölüm 3 YAPISAL PROGRAMLAMA ve DENETİM YAPILARI

YAPISAL PROGRAMLAMA Yapısal Programlamada üç tür denetim yeterlidir: Sıra (Sequence) Seçim (Selection) Tekrar (Repetition) Sıralı işletim? 33

PROGRAM DENETİM YAPILARI SEÇİM YAPILARI if if/else switch TEKRAR YAPILARI (Döngüler) while do/while for 34

SEÇİM YAPILARI : IF if (koşul) ifade if(notu>=60) System.out.println("Geçti"); Koşul : boolean veri tipindedir. true veya false olabilir. int notu=65, sayac=0; if(notu>=60) // İfade bloğu { System.out.println("Gecti"); sayac++; }; 35

SEÇİM YAPILARI : IF/ELSE if (koşul) ifade; else ifade; if(notu>=60) System.out.println("Gecti"); else System.out.println("Kaldı"); 36

CONDITIONAL OPERATOR (?:) System.out.println(notu>=60? "Geçti":"Kaldı"); Eşdeğer ifade : if (notu>=60) System.out.println("Geçti"); else System.out.println("Kaldı"); 37

IF-ELSE-IF MERDİVENİ (CASCADING IF) if(koşul) ifade else if (koşul) ifade else if (koşul) ifade... else ifade; if (notu>=90) str = A ; else if (notu>=80) str = B ; else if (notu>=70) str = C ; else if (notu>=60) str = D ; else str = E ; System.out.println(str); 38

SEÇİM YAPILARI : SWITCH Çoklu Seçim switch (deyim) { case sabit1: ifade1; break; case sabit2: ifade2; break;... default : ifade; break; } int sayi = 4; switch(sayi) { case 0 : System.out.println(" Sayı 0"); break; case 1 : System.out.println(" Sayı 1"); break; case 2 : System.out.println(" Sayı 2"); break; default : System.out.println("X"); break; 39

DÖNGÜLER : FOR sayac : kontrol değişkeni olmak üzere, for(int sayac=0; sayac<10; ++sayac) ifade for(başlangıç; devam koşulu; kontrol değişkeni değişimi) ifade for(int sayac=0; sayac<10; ++sayac) { } ifadeler 40

DÖNGÜLER : WHILE ve DO-WHILE while(koşul) ifade do { ifadeler } while (koşul); int sayac=1, toplam=0; while(sayac<10) { toplam+=sayac; sayac++; }; 41

DÖNGÜDEN ÇIKMAK : BREAK for(int x=1; x<10; ++x) { } toplam+=x; if (x==5) break; System.out.println("1 ile 5 arasındaki sayıların toplamı = "+toplam); break sadece en içteki döngüden çıkar. 42

DÖNGÜDE ERKEN TEKRAR : CONTINUE 1 ile 100 arasındaki tek sayıları yazan program : for(int i=0; i<100; ++i) { if ( (i%2)!=1) continue; System.out.println(i); } 43

Mantıksal Operatörler VE : Conditional AND && VEYA : Conditional OR if ( (yas>50) && (boy>170) ) ; Conditional ve/veya, kısa devre hesaplaması yapabilir. VE : Boolean Logical AND & VEYA : Boolean Logical OR if ( (yas>50) && (boy>170) ) ; Boolean mantıksal ve/veya, tüm operand ları hesaplar. 44

Bölüm 4 DİZİLER

DİZİLER - I Dizi (array), aynı tipteki değişkenler topluluğudur. int[] arr = new int[10]; int[] dizi = {5,7,12,2,9,8,14,21,-6,5}; 0 1 2 3 4 5 6 7 8 9 5 7 12 2 9 8 14 21-6 5 double[] sayilar; sayilar = new double[5]; -3.4 12.5 27.0 1.1 25.33 46

Diziler - II Diziler, temel veri tipi listesi veya referans listesi içerebilirler. Diziler, köşeli parantezlerle ifade edilirler : [] Köşeli parantezler veri tipinden sonraya yerleştirildiğinde, tüm değişkenleri dizi olarak tanımlar: int[] sayilar, numaralar; Köşeli parantezlerin değişkenden sonraya yerleştirilmesi sadece o değişkeni dizi yapar: int sayilar[], sayac; 47

Diziler - III Diğer referans tipleri (nesneler) gibi diziler de, ya bazı verileri gösteriyordur veya hiçbir yere işaret etmiyordur. Hiçbir yeri göstermiyorsa, int sayilar[] = null; şeklinde olduğu gibi tanımlanmalıdır. Bellekten 15 tamsayılık yer ayırmak için : sayilar = new int[15]; şeklinde kullanılabilir. new operatöründen sonraki veri tipi, tanımlı değişkenin veri tipi ile aynı olmalıdır. Java dizinin her elemanına default olarak 0 değerini atar. 48

DİZİ KULLANIM ÖRNEKLERİ dizi[2]++; dizi[3]=dizi[1]+dizi[2]; System.out.println(dizi[5]); Dizi elemanlarının toplamını bulduran programı yazınız : dizi.length kullanınız! 49

İKİ BOYUTLU DİZİLER (MATRİSLER) M x N M satır, N sütun M=4 tablo 0 1 2 2 15 9 21 33 8 3 17 61 89 3 5 0 1 2 3 N=3 Oluşturulması : int[][] tablo = new int[4][3]; Kullanımı : tablo[0][2] 50

ÇOK BOYUTLU DİZİLER Tip [] [] isim = new tip[büyüklük1]...[büyüklükn] Tip isim[] [] = new tip[büyüklük1]...[büyüklükn] Örnek : float cbdizi[][][][]; // 4 boyutlu dizi cbdizi = new float[3][4][2][6]; 51

STRING LER ve KARAKTER DİZİLERİ Karakter dizisi : Karakterlerden oluşan dizidir. char harfdizi[] = { T', 'e', s', t' }; for(int i=0; i<harfdizi.length;++i) System.out.println(harfDizi[i]); String : Karakter dizisinden farklıdır. Çok sayıda metot içerir. Java nın String sınıfı kullanılır. String str = "Merhaba"; System.out.println(str); str = new String(harfDizi); System.out.println(str); 52

Dizilerden Oluşan Diziler int[][] list = new int[10][]; list[0] = new int[5]; list[1] = new int[10]; list[1][6] = 23; list[0][6] = 23; /* Hata! Exception in thread "main" java.lang.arrayindexoutofboundsexception: 6 at Ornek3.main(Ornek3.java:34) */ 53

Bölüm 5 METOTLAR

BÖL ve ÇÖZ (Divide and Conquer) Yazılım Mühendisliği deneyimleri, büyük programlar geliştirmenin en iyi yolunun küçük program parçaları (modül) yazıp onları birleştirmek olduğunu göstermiştir. Böl ve Çöz olarak bilinen bu yöntem aynı zamanda, hatalardan arındırmayı, programı gelişen şartlara göre büyütmeyi, değişiklikler yapmayı kolaylaştırmak ve anlaşılırlığı artırmak gibi birçok avantajı da beraberinde getirmektedir. Java da temel modüller, sınıf (class) ve metotlardır (method). Metotlar yazılım içinde yeniden kullanılarak kodu ve yazılım geliştirme süresini kısaltmaktadır. 55

METOTLAR (METHOD) Bir işlemin yapılması için bir veya daha fazla ifade kullanmak gerekir. Verilen bir matrisi ekrana yazdırmak gibi. İlgili kodu yazdir() adını verdiğimiz bir metot içine yazarak istediğimiz zaman, ismi ile çağırabiliriz. Java, matematik hesaplamalarını, string, karakter, girdi/çıktı işlemlerini ve diğerlerini yapmak için hazır sınıflar ve metotlar içermektedir. Ayrıca değişik alanlarda hazırlanmış veya kendimizin daha önceden hazırladığı metotları da kullanmak mümkündür. Hazır veya kullanıcı tanımlı paketleri, import java.util.random; import java.util.*; biçimlerinde görüldüğü gibi import kullanılarak yüklenirler. 56

Java Paketleri Hazır Java paketleri içerisinde, birçok sınıf mevcuttur. java.applet java.awt java.awt.event java.io Java.lang Java.net Java.text Java.util Java.swing Java.swing.event Java.lang paketi, Java da çok kullanılan sınıfları içerir. Bu paketteki java.lang.math sınıfı içerisinde bulunan bazı sahalar ve metotlar sonraki slaytlarda gösterilmiştir. (Sadece lang paketine özgü olarak, kullanıcının getirme import zorunluluğu yoktur) 57

Field Summary static double E static double PI Method Summary static double abs(double a) Returns the absolute value of a double value. static float abs(float a) Returns the absolute value of a float value. static int static long abs(int a) Returns the absolute value of an int value. abs(long a) Returns the absolute value of a long value. static double acos(double a) Returns the arc cosine of a value; the returned angle is in the range 0.0 through pi. static double asin(double a) Returns the arc sine of a value; the returned angle is in the range -pi/2 through pi/2. static double atan(double a) Returns the arc tangent of a value; the returned angle is in the range - pi/2 through pi/2. static double atan2(double y, double x) Returns the angle theta from the conversion of rectangular coordinates (x, y) to polar coordinates (r, theta). static double ceil(double a) Returns the smallest (closest to negative infinity) double value that is greater than or equal to the argument and is equal to a mathematical integer. static double cos(double a) Returns the trigonometric cosine of an angle. static double exp(double a) Returns Euler's number e raised to the power of a double value. static double floor(double a) Returns the largest (closest to positive infinity) double value that is less than or equal to the argument and is equal to a mathematical integer. 58

Hazır java.lang.math sınıfının bazı metotları static double log(double a) Returns the natural logarithm (base e) of a double value. static double log10(double a) Returns the base 10 logarithm of a double value. static double max(double a, double b) Returns the greater of two double values. static double min(double a, double b) Returns the smaller of two double values. static double pow(double a, double b) Returns the value of the first argument raised to the power of the second argument. static long round(double a) Returns the closest long to the argument. static double sin(double a) Returns the trigonometric sine of an angle. static double sqrt(double a) Returns the correctly rounded positive square root of a double value. static double tan(double a) Returns the trigonometric tangent of an angle. static double todegrees(double angrad) Converts an angle measured in radians to an approximately equivalent angle measured in degrees. static double toradians(double angdeg) Converts an angle measured in degrees to an approximately equivalent angle measured in radians. http://java.sun.com/javase/6/docs/api/java/lang/math.html 59

METOTLARIN GENEL BİÇİMİ erişim dönüş_tipi isim(parametre listesi) { metodun gövdesi } Erişim : public, private gibi Dönüş_tipi : metodun döndürdüğü veri tipi. Değer döndürmüyorsa void. Parametre listesi :, lerle ayrılmış tip ve parametre ismi. 60

Değer Döndürmeyen Metotlar void metotları public void yazdir() { System.out.println("Merhaba"); } Çağrılması : yazdir(); 61

Değer Döndüren Metotlar public int topla(int a, int b) { return (a+b); } Çağrılması : int y=topla(5,6); Metodun iki de parametresi var. 62

Parametre, Argüman, Return Argüman : Metoda aktarılan değer Parametre : Argümanı kabul eden değişken Return : Metottan çıkmak veya geri dönmek 63

Değişkenlerin Kapsama Alanı { int x = 5; if(sayi>5) { int y = 12; } // y tanımlı değil // x tanımlı } y değişkeninin tanımlı olduğu bölge for(int i=0; i<5; ++i) System.out.println(i); i=10; // Hatalı! 64

Metotlar Örnek 1 int dizi[] = { 5,6,7,8 }; veya benzer şekilde verilen bir tamsayı dizisinin elemanlarının toplamını bulan metodu içeren java programını yazınız. class DiziTopla { public static void main(string args[]) { int dizi[] = { 5,6,7,8 }; System.out.println(topla(dizi)); } public static int topla(int dizi[]) { int toplam = 0; for(int i=0; i<dizi.length; ++i) toplam+=dizi[i]; return toplam; } } 65

Metotlar Örnek 2 class Ornek2 { public static void main(string args[]) { String str = "test"; nyazdir(str,10); } } public static void nyazdir(string str, int n) { for(int i=0; i<n; ++i) System.out.println(str); } 66

Metotlar Örnek 3 Faktöriyel class Ornek3 { public static String f(int n) { int carpim = 1; if (n<0) return "Invalid Input For Function"; else } } for(int i=1; i<=n;++i) carpim*=i; return ""+carpim; public static void main(string args[]) { int sayi = 5; System.out.println(f(sayi)); } Sayı döndüren faktöriyel fonksiyonunu yazınız. 67

Geliştirilmiş for (enhanced for) Java 5.0 ile gelen bir özelliktir. For ( parameter : arrayname) Statement İki parçadan oluşur : Type and identifier : int sayi gibi arrayname : dolaşılacak (iterate) dizi Ayrıca, diziler dışında koleksiyonların da dolaşılmasını sağlar. 68

Varargs Varargs (Variable arguments), bir metodun değişken sayıda parametre alabilmesidir. Java 5.0'ın sunduğu kolaylıklardan biridir. Aynı amaçla dizi de kullanılabilir ama elemanları diziye yerleştirmekten kurtarır. Değerler metot içine dizi olarak gelir. Bir metotta sadece 1 varargs bulunabilir. class DegSayParametre { public static void merhabalar(string... names) { for (String name : names) { System.out.println("Merhaba " + name); } } public static void main(string[] args) { merhabalar("ali", "Veli", "Ayse"); } } Merhaba Ali Merhaba Veli Merhaba Ayse 69