Bölüm 2.1: Programlama
Giriş
Öğrenme Çıktıları
Programlama dilini tanımlamak; dilleri soyutlama düzeyi, uygulama alanı, yürütme biçimi ve paradigmaya göre sınıflandırmak.
Kaynak kodun javac ile bytecode'a derlenip JVM'de çalıştırılmasını açıklamak.
Söz dizimi, statik anlam ve anlam kavramlarını ayırmak; derleme, çalışma zamanı ve mantık hatalarını tanımak.
İşleç önceliği, soldan sağa değerlendirme ve tam sayı bölmesiyle bir ifadenin değerini bulmak.
Değişken tanımlamak, atamayı iki adımda izlemek; statik ve dinamik tiplemeyi, tipler arası işlemleri açıklamak.
İfade ile deyimi ayırt etmek; bir algoritmayı Java programına çevirmek ve deyim sırasının önemini göstermek.
Giriş
Bu Bölümün Amacı
Programlama Dilleri
Programlama Dili Nedir?
- Programlama dili (programming language): bir makinenin yapabileceği hesaplamaları ifade etmek için tasarlanmış yapay bir dildir.
- Makinenin davranışını kontrol eden programlar yazmak için kullanılır:
- algoritmaları açık ve kesin biçimde ifade etmek için,
- programcılar arasında bir iletişim aracı olarak.
- Bilgisayarlara, telefonlara ve gömülü cihazlara işlevsellik kazandırır.
- Soyutlama düzeyine göre: makine dili ve assembly düşük düzeyli; Java, Python yüksek düzeyli.
- Dil seçimi projenin ihtiyaçlarına göre yapılır.
- Örnekler: C, C++, Java, Python, Prolog, Haskell, Scala…
Programlama Dilleri
Genel Amaçlı ve Hedefe Odaklı
- Diller, uygulama alanına göre genel amaçlı (general-purpose) ya da hedefe odaklı (targeted, domain-specific) olabilir.
Genel amaçlı
- Çok çeşitli uygulamaları destekleyen geniş bir temel komut kümesi.
- Java, C, C++, Python: masaüstü, web, mobil, gömülü sistem…
Hedefe odaklı
- Belirli bir uygulama türüne odaklanır, o işlemleri kolaylaştırır.
- MATLAB: sayısal hesaplama; matris ve vektör işlemleri optimize. SQL: veri tabanı sorguları.
MATLAB · matris çarpımı
C = A * B; % tek satırJava · aynı iş, elle yazılan döngüler
for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) for (int k = 0; k < n; k++) C[i][j] += A[i][k] * B[k][j];
Programlama Dilleri
Derlenen ve Yorumlanan Diller
Diller, kodun yürütülme biçimine göre derlenen (compiled) ve yorumlanan (interpreted) olarak sınıflandırılır.
Derlenen dil (C, C++, Go, Rust)
Yorumlanan dil (Python, JavaScript)
| Derlenen | Yorumlanan | |
|---|---|---|
| Nasıl? | Tüm kaynak kod, çalıştırılmadan önce derleyiciyle nesne (object) / makine koduna çevrilir. | Yorumlayıcı kaynak kodu okur ve komutları sırayla o anda çalıştırır. |
| Hız | Hızlı ve optimize yürütme | Genellikle daha yavaş |
| Hatalar | Birçoğu derleme sırasında bulunur | Çoğu ancak o satır çalışınca görülür |
Java ikisini birleştirir: javac → bytecode (.class) → JVM (yorum + JIT).
Programlama Dilleri
Programlama Paradigmaları
Paradigma (paradigm): bir problemi çözerken izlenen temel yaklaşım. Diller, problemi farklı yaklaşımlarla çözebilir.
Programlama Dilleri
Aynı Problem: Buyruksal ve Fonksiyonel
Problem: 1'den 5'e kadar sayıların toplamını bul.
import java.util.stream.IntStream; public class Paradigma { public static void main(String[] args) { // Buyruksal: adım adım durum değiştir int toplam = 0; for (int i = 1; i <= 5; i++) { toplam = toplam + i; } System.out.println("Buyruksal: " + toplam); // Fonksiyonel (Java 8+): ne istediğini söyle int sonuc = IntStream.rangeClosed(1, 5).sum(); System.out.println("Fonksiyonel: " + sonuc); } }
Çıktı
Buyruksal: 15 Fonksiyonel: 15
- Buyruksal:
toplamdeğişkeni her adımda değiştirilir; “nasıl” yapılacağı yazılır. - Fonksiyonel: “1..5 aralığının toplamı” istenir; değişken güncellenmez.
Programlama Dilleri · Adım adım kod izleme
Buyruksal ve Fonksiyonel: Kod İzleme
Buyruksal yaklaşımda toplam adlı bir durum değişkeni 0 ile başlar.
i = 1: 1 <= 5 doğru → toplam = 0 + 1 = 1. Durum her turda değişir.
i = 2: 2 <= 5 doğru → toplam = 1 + 2 = 3.
i = 3: 3 <= 5 doğru → toplam = 3 + 3 = 6.
i = 4: 4 <= 5 doğru → toplam = 6 + 4 = 10.
i = 5: 5 <= 5 doğru → toplam = 10 + 5 = 15.
i 6 oldu: 6 <= 5 yanlış → döngü biter.
Sonuç yazdırılır: beş turda biriken toplam 15.
Fonksiyonel: rangeClosed(1, 5) 1…5 sayılarını üretir, sum() hepsini toplar. Hiçbir değişken adım adım güncellenmez.
İki yaklaşım aynı sonucu verir; fark, nasıl yapılacağını mı yoksa ne istendiğini mi yazdığımızdadır.
int toplam = 0; for (int i = 1; i <= 5; i++) { toplam = toplam + i; } System.out.println("Buyruksal: " + toplam); int sonuc = IntStream.rangeClosed(1, 5).sum(); System.out.println("Fonksiyonel: " + sonuc);
Programlama Dilleri
Mantıksal ve Nesne Yönelimli
Mantıksal · Prolog
% olgular ebeveyn(ali, ayse). ebeveyn(ayse, can). % kural dede(X, Z) :- ebeveyn(X, Y), ebeveyn(Y, Z). % sorgu ?- dede(ali, can). true.
Yalnızca olgular ve bir kural verilir; sorunun nasıl çözüleceğine (arama sırasına) Prolog kendisi karar verir.
Dikdortgen nesnesi hem veriyi (en, boy) hem de o veri üzerinde çalışan metodu (alan()) taşır.
Nesne yönelimli · Java
public class Dikdortgen { double en, boy; // veri (durum) Dikdortgen(double en, double boy) { this.en = en; this.boy = boy; } double alan() { // davranış return en * boy; } public static void main(String[] args) { Dikdortgen d = new Dikdortgen(3, 4); System.out.println("Alan: " + d.alan()); } }
Çıktı
Alan: 12.0
Programlama Dilleri · Adım adım kod izleme
Nesne Yönelimli: Kod İzleme
main çalışmaya başlar. Yığında main çerçevesi var; d henüz bir nesneyi göstermiyor.
new heap'te nesneye yer ayırır; alanlar varsayılan 0.0. Yapıcı çağrılır: 3 ve 4, double'a genişletilir.
this.en nesnenin alanıdır, sağdaki en parametredir: alan 3.0 olur.
boy alanı 4.0 olur. Yapıcı biter, çerçevesi yığından kalkar.
new ifadesinin değeri nesnenin referansıdır; d artık bu nesneyi gösterir.
d.alan(): this ile d aynı nesneyi gösterir. en * boy = 3.0 × 4.0 = 12.0 döndürülür.
Dönen 12.0 dizgiyle birleştirilir: Alan: 12.0. Veri (en, boy) ve davranış (alan) aynı nesnede durur.
public class Dikdortgen { double en, boy; Dikdortgen(double en, double boy) { this.en = en; this.boy = boy; } double alan() { return en * boy; } public static void main(String[] args) { Dikdortgen d = new Dikdortgen(3, 4); System.out.println("Alan: " + d.alan()); } }
Söz Dizimi ve Anlam
Temel Yapılar ve Söz Dizimi
Programlama dilleri ile doğal diller birçok ortak yön paylaşır.
| Türkçe (doğal dil) | Java (programlama dili) | |
|---|---|---|
| Temel yapılar | kelimeler, noktalama işaretleri | sayılar, dizgiler, basit işleçler (+ - * /), anahtar sözcükler |
| Söz dizimi (syntax) | “kedi köpek çocuk”: kelimeler doğru ama cümle kuruluşu yok → geçersiz | hangi karakter ve sembol dizilerinin düzgün olduğunu belirler |
Söz dizimi dilin kurallarını belirler ve dilin anlaşılırlığını etkiler. Derleyici, kurala uymayan bir sembol dizisini kabul etmez:
✓ Geçerli
int x = 5;✗ Geçersiz: sıralama yanlış
int = x 5;Hata.java:3: error: not a statement
int = x 5;
^
...
4 errorsSöz Dizimi ve Anlam
Statik Anlam
- Statik anlam (static semantics): söz dizimi doğru olan bir ifadenin anlamlı olup olmadığını, program çalışmadan önce denetler.
- İngilizce: “I are big” biçim olarak
<isim> <fiil> <isim>kalıbına uyar; ama “I” tekil, “are” çoğuldur → dil açısından geçersiz. - Java:
<değer> <işleç> <değer>geçerli bir kalıptır; ama bir sayıyı bir dizgiye bölmenin anlamı yoktur → statik anlam hatası.
double sonuc = 2.3 / "abc";error: bad operand types for binary operator '/'
first type: double
second type: Stringint x = "beş";error: incompatible types: String cannot be converted to int
Söz Dizimi ve Anlam
Anlam (Semantics)
- Anlam (semantics): söz dizimi doğru bir ifadenin ne anlama geldiğini belirler.
- Doğal dillerde çok anlamlılık olabilir: “They saw the man with the telescope.”
- adamı teleskopla gördüler, ya da
- teleskobu olan adamı gördüler.
- Programlama dilinde her geçerli ifadenin tek bir anlamı vardır.
- Ancak bu anlam, programcının beklediği şey olmayabilir: yanlış bir işlem beklenmeyen bir sonuç üretir.
int a = 7, b = 8; int ortalama = (a + b) / 2; System.out.println(ortalama); // 7.5 beklenirken System.out.println(a + b / 2); // öncelik System.out.println((a + b) / 2.0); // doğru
Çıktı
7 11 7.5
7 ile 8'in ortalaması 7.5'tir. İlk satır tam sayı bölmesi yapar, ikinci satırda / işlemi +'dan önce yapılır. Derleyici bu satırlarda hata görmez.
Söz Dizimi ve Anlam · Adım adım kod izleme
Anlam Hatası: Kod İzleme
a = 7, b = 8; ikisi de int. Ağaç, (a + b) / 2 ifadesinin yapısını gösterir.
Parantez önce: a + b = 15 (int).
15 / 2: iki işlenen de int → tam sayı bölmesi, kesir atılır: 7.
7 yazılır. Program hatasız çalıştı ama anlamı beklenenden farklı.
Parantez yok: / önceliği + işlecinden yüksek. Önce b / 2 = 4.
Sonra 7 + 4 = 11 yazılır.
2.0 bir double: 15 de double'a genişletilir, 15 / 2.0 = 7.5.
int a = 7, b = 8; int ortalama = (a + b) / 2; System.out.println(ortalama); // 7.5 değil System.out.println(a + b / 2); // öncelik System.out.println((a + b) / 2.0); // doğru
Söz Dizimi ve Anlam
Neler Yanlış Gidebilir?
| Hata türü | Ne zaman fark edilir? | Java örneği | Belirti |
|---|---|---|---|
| Söz dizimi | derlemede (derleyici) | System.out.println("Merhaba") | ';' expected |
| Statik anlam | derlemede (tip denetimi) | int x = "beş"; | incompatible types |
| Çalışma zamanı | program çalışırken | a / b (b sıfırken) | çökme: ArithmeticException |
| Mantık | derleyici fark etmez; ancak testle | (a + b) / 2 ile ortalama | yanlış sonuç, sonsuz döngü |
- Söz dizimi hataları yazım hataları gibi açıkça tanımlanmış kurallara aykırılıktır; bilgisayar tarafından kolayca tespit edilir.
- Statik anlam hataları program çalışmadan önce dile özgü denetimlerle aranır. Bu denetimi zayıf olan dillerde yakalanmayan hatalar programın davranışını öngörülemez kılar.
- Söz dizimi ve statik anlam açısından kusursuz bir program bile beklenen sonucu üretmeyebilir: çöker, sonsuz döngüye girer ya da istenmeyen bir sonuç verir.
Söz Dizimi ve Anlam
Hata Mesajlarını Okumak
Derleme hatası
public class Selam { public static void main(String[] args) { System.out.println("Merhaba") } }
Selam.java:3: error: ';' expected
System.out.println("Merhaba")
^
1 errorSelam.java:3: dosya ve satır numarasıerror: ';' expected: ne bekleniyordu^işareti: hatanın konumu- Hata varsa
.classdosyası oluşmaz; program hiç çalışmaz.
Çalışma zamanı hatası (istisna)
public class Bolme { public static void main(String[] args) { int a = 10, b = 0; System.out.println(a / b); } }
Exception in thread "main" java.lang.ArithmeticException: / by zero at Bolme.main(Bolme.java:4)
- Kod derlenir, ama çalışırken istisna (exception) fırlatılır.
/ by zero: tam sayı sıfıra bölünemez.(Bolme.java:4): hatanın oluştuğu satır.- İstisna
try-catchile yakalanmazsa program bu satırda sonlanır.
Birden çok hata listelendiğinde düzeltmeye ilkinden başlanır; sonrakiler çoğu zaman ilk hatanın yan etkisidir.
İfadeler ve Değişkenler · Adım adım
İfade Değerlendirme Adım Adım
Bilgisayar bir ifadeyi tek seferde değil, öncelik kurallarına göre adım adım sadeleştirir.
Önce parantez içi hesaplanır: 72 − 32 = 40.
/ ile * aynı önceliktedir → soldan sağa: önce 40 / 9.
İki işlenen de int → tam sayı bölmesi: 4.44… değil, 4.
Sonuç 20. Matematiksel olarak beklenen 22.22… idi: bir anlam (mantık) hatası.
Şimdi 72.0 yazalım: double − int işleminde int önce double'a genişletilir; sonuç 40.0.
40.0 / 9 artık gerçek bölmedir: 4.444444444444445.
Çarpma: double × int → double.
Doğru sonuç. Ondalıklı sonuç gerekiyorsa işlenenlerden en az biri double olmalıdır.
İfade ağacı: alttaki işlem önce yapılır; numaralar işlem sırasıdır.
İfadeler ve Değişkenler
Dinamik ve Statik Tipleme
Dinamik tipli diller (Python, JavaScript)
- Değişkenin tipi önceden belirtilmez; değer atanınca belirlenir.
- Tip çalışma zamanında değişebilir.
- Esneklik sağlar, ama hatalar ancak çalışırken ortaya çıkar.
Statik tipli diller (Java, C, C#)
- Değişkenin tipi açıkça belirtilir ve değişmez.
- Dizgi ile tam sayı gibi uyumsuz işlemler derleme zamanında hata olarak bulunur.
- Daha güvenli; derleyici hızlı kod üretebilir.
Python
x = 5 # x şimdi int x = "beş" # artık str: sorun yok print(x + 1) # çalışırken: # TypeError: can only concatenate # str (not "int") to str
Java
int x = 5; x = "beş"; // derlenmez: // error: incompatible types: // String cannot be converted to int
Java 10+: var adet = 3; tipi yazmadan tanımlar, ama tip yine derlemede (int olarak) sabitlenir; Java statik tipli kalır.
Dizgiler ve Tipler
Farklı Tipler Karşılaştırılmamalıdır
- Farklı veri tiplerini doğrudan karşılaştırmak hataya yol açar: bir tam sayı ile bir dizgi karşılaştırılamaz.
- Diller, tiplerin karşılaştırılması için kurallar ve tip dönüşümü (type conversion) yolları tanımlar.
✗ Doğrudan karşılaştırma
int sayi = 5; String metin = "5"; boolean b = sayi == metin;
error: bad operand types for binary operator '=='
first type: int
second type: String✓ Önce aynı tipe dönüştür
int sayi = 5;
String metin = "5";
System.out.println(Integer.parseInt(metin) == sayi);
System.out.println(metin.equals(String.valueOf(sayi)));
System.out.println(metin.equals(sayi));true true false
metin.equals(sayi) derlenir ama her zaman false döndürür: String hiçbir zaman bir Integer'a eşit değildir. Dizgiler == ile değil equals ile karşılaştırılır.
Dizgiler ve Tipler
Farklı Tiplerde İşlemler
İşlemler farklı tipler üzerinde farklı davranır: dizgiler üzerinde + toplama değil birleştirmedir (concatenation).
| İfade | Java sonucu | Tipi | Açıklama |
|---|---|---|---|
3.0 + 4.0 | 7.0 | double | iki ondalıklı sayı |
3 + 4 | 7 | int | iki tam sayı |
3 + 4.0 | 7.0 | double | int otomatik olarak double'a genişletilir (widening) |
"3" + "4" | "34" | String | birleştirme |
3 + "4" | "34" | String | bir taraf dizgiyse diğeri dizgiye çevrilir. Hata değildir (Python'da TypeError) |
3 + true | derlenmez | — | bad operand types for binary operator '+' |
'a' + 1 | 98 | int | char bir sayısal koddur ('a' = 97) |
Farklı tipler arasında işlem, dilin kuralları bilinmiyorsa beklenmeyen sonuçlara ya da hatalara yol açar. Java'da bu kurallar kesindir ve derleyici uygular.
Program ve Algoritma · Adım adım kod izleme
Bir Program Nedir? Sıra Önemlidir
Program bir talimatlar dizisidir; bilgisayar talimatları birer birer ve sırayla işler. Bu yüzden işlem sırasını doğru belirlemek önemlidir.
Amaç: a ile b'nin değerlerini takas etmek (yer değiştirmek).
a = b: a'ya 5 yazılır. a'nın eski değeri 3 kayboldu!
b = a: b'ye a'nın şimdiki değeri (5) yazılır.
Çıktı 5 5: takas başarısız. Deyimlerin sırası sonucu belirler.
Doğru yöntem: üçüncü bir geçici değişken.
c'nin değeri önce gecici'de saklanır.
Artık c'nin üzerine yazılabilir: c = 5.
d'ye saklanan eski c değeri (3) yazılır.
Çıktı 5 3: takas başarılı.
int a = 3, b = 5; a = b; b = a; System.out.println(a + " " + b); int c = 3, d = 5; int gecici = c; c = d; d = gecici; System.out.println(c + " " + d);
Program ve Algoritma
İfadeler, Deyimler ve Programlar
3 + 4 ifadesinin değeri 7'dir.pi = 3.14159; değişkene değer atar, System.out.println(pi); ekrana yazar. Java'da deyimler ; ile biter.double alan = pi * r * r;Bir deyim, bir ifadenin içinde yer alamaz. println ekrana yazar (etki) ama bir değer döndürmez (void):
double d = 3 + System.out.println(pi);error: 'void' type not allowed here3 + 4; // değer üretir ama etkisi yokerror: not a statementJava'da atama da bir değer üretir: int y = (x = 4) + 1; → x = 4, y = 5. Derlenir ama okunması zor olduğundan tercih edilmez.
Popüler Diller
Popüler Programlama Dilleri
- Programlama dilleri farklı görevler için farklı avantajlar sunar.
- Programcılar, projenin ihtiyaçlarına göre en uygun dili seçer.
- Dillerin popülerliği her yıl anketler ve dizinlerle (Stack Overflow anketi, TIOBE, IEEE Spectrum) değerlendirilir.
- 2023'te öne çıkan dillerden bazıları yandaki tabloda.
| Dil | Öne çıktığı alan |
|---|---|
| Python | veri analizi, yapay zekâ, web geliştirme |
| Java | büyük ölçekli kurumsal uygulamalar, Android |
| JavaScript | web tarayıcıları, web geliştirme |
| C# | Windows uygulamaları, oyun geliştirme |
| C++ | oyun, sistem programlama, performans odaklı yazılım |
| Rust | güvenli ve hızlı sistem programlama |
| Swift | Apple platformlarında uygulama geliştirme |
| Kotlin | Android uygulama geliştirme (JVM üzerinde çalışır) |
| Go (Golang) | basit ve etkili; ağ ve bulut uygulamaları |
Özet
Özet
| Konu | Hatırlanacaklar |
|---|---|
| Dil sınıfları | düşük / yüksek düzey; genel amaçlı / hedefe odaklı; derlenen / yorumlanan |
| Java | javac → bytecode (.class) → JVM (yorum + JIT); “bir kez yaz, her yerde çalıştır” |
| Paradigmalar | buyruksal, fonksiyonel, mantıksal, nesne yönelimli; Java: nesne yönelimli + buyruksal |
| Söz dizimi / anlam | söz dizimi: biçim; statik anlam: derlemede tip denetimi; anlam: tek ve kesin, ama beklenen olmayabilir |
| Hata türleri | söz dizimi ve statik anlam (derleme), çalışma zamanı (istisna), mantık (yanlış sonuç) |
| İfadeler | parantez → * / % → + -, soldan sağa; int / int tam sayı bölmesi; üs için Math.pow |
| Değişken ve atama | tip + ad; önce sağ taraf hesaplanır, sonra yazılır; = atama, == karşılaştırma |
| Tipler | Java statik tipli; int + double → double; dizgi + herhangi → birleştirme |
| Program | önce algoritma, sonra kod; ifade değer üretir, deyim etki yaratır; deyimler sırayla çalışır |
Özet
Sık Yapılan Hatalar
System.out.println("Merhaba") → ';' expected. javac, ^ ile ; eksik satırın sonunu gösterir.if (x = 100) → int cannot be converted to boolean. Karşılaştırma =='dir.(a + b) / 2 ile 7 ve 8'in ortalaması 7 çıkar. Gerçek bölme için / 2.0 gerekir.2 ** 3 → illegal start of expression; 2 ^ 3 derlenir ama XOR'dur (1). Doğrusu Math.pow(2, 3)."Toplam: " + 2 + 3 → Toplam: 23. Toplama için "Toplam: " + (2 + 3).Sayi tanımlayıp sayi kullanmak → cannot find symbol. Java harf duyarlıdır.int s; System.out.println(s); → variable s might not have been initialized.nextDouble() girdisi 7,5 biçimindedir; 7.5 yazmak InputMismatchException verir.Özet
Örnek Problemler
- Değerlerini bulun: (a)
10 + 6 / 4 * 2(b)(10 + 6) / 4 * 2(c)10 + 6 / 4.0 * 2 - Çıktıları nedir?
System.out.println("Toplam: " + 2 + 3);veSystem.out.println(2 + 3 + " toplam"); - Kod çalıştıktan sonra
avebkaçtır?int a = 4; int b = a * 3; a = b - a; b = b / a; - Hata türünü söyleyin: (a)
int n = 4.5;(b)System.out.println("Merhaba";(c) dairenin alanı içinalan = 2 * pi * r; double c = (f - 32) * 5 / 9;ilef = 100için sonuç nedir?fvecintolsaydı?
Cevapları göster
- (a) 6 / 4 = 1, 1 * 2 = 2 → 12 (b) 16 / 4 = 4, 4 * 2 → 8 (c) 6 / 4.0 = 1.5, × 2 = 3.0 → 13.0
Toplam: 23(soldan sağa birleştirme) ve5 toplam(önce ikiinttoplanır).- b = 12, a = 12 − 4 = 8, b = 12 / 8 = 1 (tam sayı bölmesi) → a = 8, b = 1.
- (a) statik anlam:
possible lossy conversion from double to int(b) söz dizimi:')' or ',' expected(c) mantık hatası: derlenir ama çevreyi hesaplar; doğrusupi * r * r. - 68 × 5 / 9 = 37.77777777777778.
intile: 340 / 9 = 37 (kesir atılır).
Özet
Alıştırmalar
- Değerlerini ve tiplerini yazın:
7 % 3,-7 / 2,1 / 3 * 3,1.0 / 3 * 3,Math.pow(2, 10). - Hangileri geçerli değişken adıdır?
toplam2,2toplam,_sayac,ogrenci sayisi,$fiyat,int,ortalamaNot - Kullanıcıdan Fahrenhayt değeri okuyup Celsius'a çeviren programın önce algoritmasını, sonra Java kodunu yazın.
- Şunları ifade ya da deyim olarak sınıflandırın:
x * 2,x = 5;,x > 3,System.out.println(x); 5 / 9 * (f - 32)ifadesiint f = 100için neden 0 verir? İki farklı biçimde düzeltin.
Cevaplar / ipuçları
1(int),-3(int, sıfıra doğru kesilir),0(int: 1 / 3 = 0),1.0(double),1024.0(double).- Geçerli:
toplam2,_sayac,$fiyat,ortalamaNot. Geçersiz:2toplam(rakamla başlar),ogrenci sayisi(boşluk),int(anahtar sözcük). - Oku →
c = (f - 32) * 5 / 9→ yazdır;double f = giris.nextDouble();. 100 → 37.77777777777778. - İfadeler:
x * 2,x > 3(değer üretir). Deyimler:x = 5;,System.out.println(x);(etki yaratır). - 5 / 9 tam sayı bölmesiyle 0'dır, 0 × 68 = 0. Çözüm:
5.0 / 9 * (f - 32)ya da(f - 32) * 5 / 9(önce çarpma: 37).
Özet
Kaynaklar
- Oracle, The Java Tutorials: “Language Basics” (değişkenler, işleçler, ifadeler, deyimler ve bloklar).
- J. Gosling ve diğerleri, The Java Language Specification, Java SE 21 Edition, Oracle, 2023 (Bölüm 3: Sözcük yapısı, Bölüm 15: İfadeler).
- P. Deitel ve H. Deitel, Java: How to Program, Early Objects, 11. baskı, Pearson, 2017 (Bölüm 1–2).
- A. B. Downey ve C. Mayfield, Think Java: How to Think Like a Computer Scientist, 2. baskı, O'Reilly, 2019 (Bölüm 1–2).
- K. Sierra ve B. Bates, Head First Java, 3. baskı, O'Reilly, 2022.
- C. S. Horstmann, Core Java, Volume I: Fundamentals, 12. baskı, Pearson, 2022 (Bölüm 2–3).
- J. Guttag, Introduction to Computation and Programming Using Python, 3. baskı, MIT Press, 2021 (Bölüm 2: söz dizimi, statik anlam ve anlam).