Akdeniz Üniversitesi
Bilgisayar Programlama
Dönem: İlkbahar 2014
Hazırlayan: Yrd. Doç. Dr. Murat Ak
DERS 2
Örnek Bir Java Kodu…
public class Selamlama {
Class tanımlaması ve parantezini açma
public static void main(String[] args) {
String selamlanacak;
main metot
Değişken ilanı (variable declaration)
selamlanacak = "dünya";
Değişkene bir değer verme (atama)
selamver(selamlanacak);
Selamver metodunu çağırma
}
Selamver metodu
public static void selamver(String metin) {
System.out.print("Merhaba " + metin);
Yazdırma komutu
}
}
Ayrılmış Kelimeler (Reserved Words)
•
•
•
Nasıl dillerimizde bağlaç, edat, zamir gibi durumlardan bağımsız, dillerin
kullanımına has özel sözcükler varsa, programlama dillerinde de benzer özel
kelimeler vardır.
Bir Java programında metinler hariç göreceğiniz kelimeler üç çeşit olabilir:
•
•
•
Kendi seçtikleriniz: Selamlama, args, selamlanacak, selamver, metin gibi.
Başka bir programcının seçtiği: String, System, out, print, println, main gibi.
Java’nın ayrılmış kelimeleri: public, class, static, void, return gibi.
Burada her grup altındaki gruplar dışında kelimeler kullanmak zorundadır.
Java’daki Ayrılmış Kelimeler
İnsan dillerindeki bağlaç, zamir gibi belirli kelimelere benzer. Dilin öz tasarımında vardır.
abstract
assert
boolean
break
byte
case
catch
char
class
const*
continue
default
double
do
else
enum
extends
false
final
finally
float
for
goto*
if
implements
import
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
true
try
void
volatile
while
http://en.wikipedia.org/wiki/List_of_Java_keywords
Başka Birinin Seçtikleri
•
•
•
İnsan dillerindeki atasözü ve deyimlere benzer. Bunları biz oluşturmayız, hazır
olarak alır kullanırız.
Programlama dillerinde önceden yazılmış kodlar vardır. Dilin hazır temelleri
üzerinde bazı karmaşık işleri herkes ayrı ayrı uğraşmasın diye en başta birileri
yazmıştır.
Mesela String class’ı birilerinin önceden yazdığı hazır bir class’tır:
•
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
String kelimesinin üstüne sağ tıklayıp navigate – go to source derseniz bu
class’ın kodunu görürsünüz.
Kendi Seçtiğimiz İsimler
•
•
•
İnsan dillerinde konuşurken bizim duruma göre seçtiğimiz kelimelere benzer.
Yazdığımız classlar ve metotlar, kullandığımız değişkenlerin isimleri sözkonusu
programcının yani bizim seçtiğimiz isimlerdir.
Kendi oluşturduğumuz class, metot ve değişkenlere istediğimiz ismi verebiliriz.
•
•
•
•
•
class’ın ismi dosyanın adıyla aynı olmak zorunda.
Türkçe karakter kullanamıyoruz.
Sadece İngilizce’deki harfler ve sayılardan oluşabilir.
Alfanümerik olmalı, yani harf ile başlamak zorunda, rakamla başlayamaz.
Java’nın ayrılmış kelimeleri ve kullandığımız kütüphanelerdeki isimlerden farklı olmalı.
System.out.println
•
•
•
System, java.lang paketinde bir class.
out bu class içerisinde bir PrintStream nesnesi.
print ve println ise PrintStream classının önceden derlenmiş (precompiled) bir
metodu.
•
•
print sadece verilen metni yazar.
println, verilen metni yazdıktan sonra alt satıra iner.
sout yazıp hemen Tab tuşuna basarsanız otomatik olarak
System.out.println(""); yazmış olursunuz.
Yorumlar
•
•
•
•
Programa dahil olmayan, sadece okuyan kişinin kodu daha iyi anlaması için yazılan
yazılardır.
/* ile başlayıp */ ile biten yerler yorum şeklinde algılanır ve programa etkisi olmaz.
Yorum tek satır olacaksa // ile başladığınız yerden itibaren tamamı yorum olur.
İstisna: Metin içerisinde (yani çift tırnak arasında) /*…*/ veya // yazsanız da yorum
olmaz. Metne dahil olur yani normal metin gibi algılanır.
: System.out.println("hello
/*bakalım burası yorum olacak mı?*/ world");
Kelimelerin Ayrılması
•
Java’da iki ayrı kelimenin arasındaki zaruri boşluk dışında tüm boşluklar ve satır
atlamalar önemsizdir. Kelimeler arasındaki ayırmalar
•
•
•
•
•
Kıvrımlı parantezler { }
(class, metot ve döngü sınırları)
Normal parantezler ( )
(fonksiyon girdileri, aritmetik işlemler, casting, vs.)
;
(komutlar arasında ayrım)
:
(switch-case, break, vs. gibi bazı durumlar)
.
(Alt elemanlara ve metotlara erişim)
karakterleriyle yapılır.
Girintileme (Indentation)
•
•
•
C, C++, C# ve Java gibi dillerin tamamında yapılır.
Class, metot, ve daha sonra göreceğimiz döngülerin nereden başlayıp nerede
bittiğini daha rahat görebilmek için yapılır.
Zorunlu değildir ama pratikte zorunluymuş gibi yapılması önerilir.
programda bir yeri seçip üstünde sağ tıklayıp Format derseniz
otomatik olarak gerekli girintilemeleri yapar.
: Kodunuzu çalıştırınca anlamadığınız bir şekilde hata alıyorsanız formatlayı
deneyin. Bir kıvrımlı parantez } kapamayı unutmuş olabilirsiniz. Formatlayınca bu
hemen belli olur.
Sentaks ve Semantik
• Sentaks: Bir dildeki kelimelerin ve cümlelerin dilbilgisel açıdan yapısıyla
alakalıdır. Programlama dillerinde de bu tip kurallar vardır, bu kurallara dilin
sentaksı denir.
• Semantik: Dillerdeki cümlelerin anlamıyla alakalıdır. Programlama dillerinde
de komutların anlamlarını ifade eder.
Hatalar (Errors) ve Hata Mesajları
• Programlamada hatalar üçe ayrılır:
•
•
•
Derleme zamanı hataları: Programın sentaksı yanlış.
Gerçek zamanlı hatalar: Sentaks doğrudur ama çalışırken hata olur.
Mantıksal hatalar: Program düzgünce çalışır fakat program yanlış bir mantıkla
yazılmıştır ve yanlış neticeler verir.
Derleme Zamanı Hatası (compile-time error)
• En zararsız hata türüdür.
• Derleyici (compiler) hatanın nerede olduğunu çoğu zaman direkt olarak
gösterir. Siz de gereken değişikliği yaparsınız.
Çalışma Zamanı Hatası (run-time error)
•
•
•
Programın sentaksı doğrudur ve derleme hatasız olarak yapılır.
Fakat bir şeyler yanlış gider ve beklenmedik bir hata alırsınız.
Mesela bir yerde sıfıra bölme yaparsanız bu hata oluşur.
:
a = 4;
b = 0;
•
System.out.println("bölme işlemi: "+(a/b));
b değişkeni sıfır olmasaydı güzelce çalışacaktı. Bu şekilde ise exception verir.
Mantıksal Hatalar
• Program yazılmadan önce istenen sonucu vermesi için güzel tasarlanmazsa
büyük ihtimalle bu sonuçla karşılaşılır.
• Derleme başarılı olur, program düzgün çalışır ama istediğiniz şeyi yapmaz.
• Farklı bir şey yapar. Çünkü kodu yanlış yazmışsınızdır.
Küçük-Büyük Harf Duyarlılığı
• Java ve diğer birçok programlama dili küçük-büyük harfe duyarlıdır.
• Mesela System.out.println yerine system.out.println
yazarsanız hata oluşur.
• Çünkü System class’ının adı System ’dır, system değildir.
• Kendiniz de abc diye bir değişken tanımlarsanız daha sonra Abc yazarsanız
hata olur.
Kaçış Karakterleri
•
Diyelim ki metninizin içinde " karakterini kullanmak istiyorsunuz…
: System.out.println("kesme işareti " şeklindedir ");
•
•
Bunun bir hata olduğunu daha çalıştırmadan NetBeans altını kırmızı ile çizerek size
gösterecektir.
Burada sorun ne?
•
•
Metinleri belirtmede başlatma ve bitirmede kullandığımız karakteri metin içinde kullanırsak
orada metin bitiyor ve geri kalan kısım tamamen yanlış oluyor.
Çözüm?
•
\ karakteri çift tırnağı özel anlamından sıyırır (kaçış yaptırır) ve sıradan bir metne dönüştürür.
: System.out.println("kesme işareti \" şeklindedir ");
Kaçış Karakteri: \
• Karakterleri asıl kullanımlarından sıyırıp
(kaçırıp) başka iş yaptırır
:
System.out.println("Thaice’de
bir harf: \u0E06 ");
• http://en.wikipedia.org/wiki/L
ist_of_Unicode_characters
Escape
Sequence
Character
\n
Newline – yeni satıra geç
\t
Tab – tab arası koy
\b
Backspace – geriye doğru sil
\f
form feed
\r
Başa dönme
\"
" (çift tırnak)
\'
' (tek tırnak)
\\
\ (ters bölme işareti)
\uA0E1
Unicode karakterler
Temel Veri Tipleri (Primitive Data Types)
• Java’da her şey
nesneler üzerinden
tanımlanır, temel
veri tipleri hariç.
• 8 tane temel veri
tipi vardır:
Tip
İçeriği
Varsayılan
Büyüklük
Menzil
boolean
true or false
false
1 bit
yok
char
Unicode
character
unsigned
\u0000
16 bits or
2 bytes
0 to 216-1 or
\u0000 to \uFFFF
8 bit or
1 byte
16 bit or
2 bytes
32 bit or
4 bytes
-27 to 27-1 or
-128 to 127
-215 to 215-1 or
-32768 to 32767
-231 to 231-1 or
-2147483648 to 2147483647
-263 to 263-1 or
-9223372036854775808 to
9223372036854775807
byte
Signed integer
0
short
Signed integer
0
int
Signed integer
0
long
Signed integer
0
64 bit or
8 bytes
0.0f
32 bit or
4 bytes
1.4E-45 to
3.4028235E+38
0.0
64 bit or
8 bytes
439E-324 to
1.7976931348623157E+308
float
double
IEEE 754 floating
point
single-precision
IEEE 754 floating
point
double-precision
Download

Yardımcı Java Ders-2 - Akdeniz Üniversitesi