Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Bölüm 2 Temel Programlama

Benzer bir sunumlar


... konulu sunumlar: "Bölüm 2 Temel Programlama"— Sunum transkripti:

1 Bölüm 2 Temel Programlama

2 Hedefler Bir önceki bölümde bir Java programı yaratmayı, derlemeyi ve çalıştırmayı gördük. Bu bölümden itibaren problemleri programsal olarak çözmeyi öğreneceğiz. Bu problemlerle uğraşırken basit Java data tiplerini ve bunlarla alakalı olarak değişkenleri, sabitleri, operatörleri, giriş ve çıkışları öğreneceğiz.

3 Amaçlar Basit hesaplamalar yazan Java programları yazmak(§2.2).
Scanner sınıfını kullanarak konsoldan veri çekmek(§2.3). Değişkenleri, sabitleri, metotları ve sınıfları tanımlamak için tanıtıcı sözcükler (§2.4). Veri depolamak için değişken kullanma(§§ ). Atama ifadeleri kullanarak programlama (§2.6). Verileri kalıcı olarak depolamak için sabit kullanma (§2.7). Basit Java tiplerini tanımlama: byte, short, int, long, float, double, ve char (§§2.8.1). Operatör kullanarak sayısal ifadeler tanımlama (§§2.8.2–2.8.3). Zamanı ve saati gösterme (§2.9). Operatörleri kısayollarla ifade etme(§2.10). Bir tipi başka tipe çevirme (§2.11). Kira ödemesi hesapma (§2.12). Char tipini kullanarak karakterleri simgeleme (§2.13). Kur değişikliklerini hesaplama (§2.14). String tipiyle metin yazma (§2.15). Java dökümentasyonuyla, stiliyle, isimlendirme şekliyle aşina olma (§2.16). Syntax, runtime, mantıksal ve debug hatalarını ayırt etme (§2.17). (GUI) JOptionPane aracığıyla diyalog kutularıyla veri çekme(§2.18).

4 Bir örnekle başlıyoruz
Listing 2.1 Dairenin alanını hesaplma public class AlanHesapla { /** Main methot */ public static void main(String[] args) { double yaricap; double alan; // Yarı çapı ata yaricap = 20; // Alanı hesapla alan = yaricap * yaricap * ; // Sonucu göster System.out.println("Yarı capı " + yaricap + " olan dairenin alanı " + alan + "dır."); }

5 Programın çalışmasını takip etme
Animasyon Programın çalışmasını takip etme Yarıçap için bellekte yer tutma public class AlanHesapla { /** Main methot */ public static void main(String[] args) { double yaricap; double alan; // Yarı çapı ata yaricap = 20; // Alanı hesapla alan = yaricap * yaricap * ; // Sonucu göster System.out.println("Yarı capı " + yaricap + " olan dairenin alanı " + alan + "dır."); } yaricap Değer yok

6 Programın çalışmasını takip etme
animation Programın çalışmasını takip etme public class AlanHesapla { /** Main methot */ public static void main(String[] args) { double yaricap; double alan; // Yarı çapı ata yaricap = 20; // Alanı hesapla alan = yaricap * yaricap * ; // Sonucu göster System.out.println("Yarı capı " + yaricap + " olan dairenin alanı " + alan + "dır."); } Hafıza / RAM yaricap Değer yok alan Değer yok Bu sefer alan için

7 Programın çalışmasını takip etme
animation Programın çalışmasını takip etme 20 değerini atama public class AlanHesapla { /** Main methot */ public static void main(String[] args) { double yaricap; double alan; // Yarı çapı ata yaricap = 20; // Alanı hesapla alan = yaricap * yaricap * ; // Sonucu göster System.out.println("Yarı capı " + yaricap + " olan dairenin alanı " + alan + "dır."); } yaricap 20 alan Değer yok

8 Programın çalışmasını takip etme
animation Programın çalışmasını takip etme public class AlanHesapla { /** Main methot */ public static void main(String[] args) { double yaricap; double alan; // Yarı çapı ata yaricap = 20; // Alanı hesapla alan = yaricap * yaricap * ; // Sonucu göster System.out.println("Yarı capı " + yaricap + " olan dairenin alanı " + alan + "dır."); } Hafıza / RAM yaricap 20 area Alanı hesaplayıp değişkene atama

9 Programın çalışmasını takip etme
animation Programın çalışmasını takip etme public class AlanHesapla { /** Main methot */ public static void main(String[] args) { double yaricap; double alan; // Yarı çapı ata yaricap = 20; // Alanı hesapla alan = yaricap * yaricap * ; // Sonucu göster System.out.println("Yarı capı " + yaricap + " olan dairenin alanı " + alan + "dır."); } Hafıza / RAM yaricap 20 alan Ekrana yazma

10 ComputeAreaWithConsoleInput
Konsoldan veri çekme 1. Scanner nesnesi yaratma Scanner input = new Scanner(System.in); 2. next(), nextByte(), nextShort(), nextInt(), nextLong(), nextFloat(), nextDouble(), nextBoolean() metotlarını kullanarak string, byte, short, int, long, float, double, boolean değerlerini olulturma. Örneğin, System.out.print("double bir değer giriniz:"); double d = input.nextDouble(); ComputeAreaWithConsoleInput ComputeAverage

11 Identifier’lar (Tanımlayıcılar)
Bir identifier harflerin, sayıların ve birtakım özel karakterlerin ( _ ya da $) dizilimiyle oluşur. Bir identifier sayıyla başlayamaz, özel karakter veya harfle başlayabilir. ‘Reserved’ kelimeler identifier olamaz. true, false, null kelimeleri de kullanılmaz. Identifier için uzunluk kısıtlaması yoktur.

12 Değişkenler // Birinci alanı hesapla yaricap = 1.0;
alan = yaricap * yaricap * ; System.out.println("Yarı capı " + yaricap + " olan dairenin alanı " + alan + " dır."); // İkinci alanı hesapla yaricap = 2.0;

13 Değişken tanımlama int x; // x isminde bir integer
double yaricap;// yarıçap isminde bir // double tanımlama; char a; // a isminde bir karakter

14 Atama ifadeleri x = 1; // x e bir ata;
yarıcap = 1.0; // yarıcap a 1.0 ata; a = 'A'; // a ya 'A‘ ata;

15 Tanımlama ve atama işlemini aynı anda yapma
int x = 1; double d = 1.4;

16 Sabitler final veritipi SABIT_ISMI = DEGERI;
final double PI = ; final int SIZE = 3;

17 Sayısal veri tipleri

18 Sayısal operatörler

19 Bölme +, -, *, /, ve % 5 / 2 işleminin sonucu 2.
5 % 2 işleminin sonucu 1 (kalanı gösterir)

20 Mod Operatörü Mod operatörü oldukça faydalıdır. Örneğin çift sayılar % 2 işlemiyle 0 sonucunu verirken tek sayılar 1 verir. Böylece sayının tek ya da çift olduğu kolayca belirlenir. Diyelim ki bugün C.tesi ve arkadaşlarınızla 10 gün içinde buluşacaksınız. 10 gün sonrası hangi gündür? O günün Salı olacağını şu ifadeyle rahatça görebilirsiniz:

21 Problem: Zamanı gösterme
Saniye verisinden saat ve dakikayı bulan programı yazın. DisplayTime

22 NOT Ondalıklı sayılarla yapılan işlemler yakın değerlere çekilir. Örneğin, System.out.println( ); Sonuç olarak gösterir, 0.5 göstermez. System.out.println( ); gösterir, 0.1 göstermez. Tam sayılarda böyle bir şey yoktur, her işlemin sonucu kesin olarak gösterilir.

23 Literal (sabitler) değerler
Bir literal programın içinde doğrudan görünen sayılardır. Örneğin 34, 1,000,000, 5.0 değerleri: int i = 34; long x = ; double d = 5.0;

24 Integer Integer değer aralıklarında olan herhangi bir sayı int veri tipiyle tutulabilir. Mesela byte b = 1000 hata verir, çünkü 1000 değerini byte tipiyle tutamazsınız. Integer değerler -231 ( ) ve 231–1 ( ) arasındadır. Bir sayıyı long olarak ifade etmek istiyorsanız sayının sonuna L ve l eklerseniz. Genelde büyük L tercih edilir çünkü küçük l harfi sayı olan 1 ile karışabilir.

25 Ondalıklı sayılar Ondalıklı sayılara double değişken muamelesi yapılır. Örneğin, 5.0 double kabul edilir. Sonuna F harfi koyarak değişkeni float tipine çevirebilirsiniz. Örneğin float olarak 100.2f veya 100.2F, double olarak 100.2d ya da 100.2D yazabilirsiniz.

26 Bilimsel Gösterim Örneğin, e+2 ya da e2, ’ya eşittir, e-2 ise ya eşittir. E (ya da e) değeri büyük veya küçük harfle ifade edilebilir.

27 Matematiksel ifadeler
Şu şekilde yazılır: (3+4*x)/5 – 10*(y-5)*(a+b+c)/x + 9*(4/x + (9+x)/y)

28 İfade nasıl yorumlanır
Matematikteki işlem sırası Java için de geçerlidir.

29 Problem: Sıcaklık değerlerini çevirme
Fahrenheit’u Celcius’a çeviren programı yazın: FahrenheitToCelsius

30 Problem: Zamanı gösterme
GMT’de şu anki zamanı gösteren programı yazın. (Mesela 1:45:19). currentTimeMillis metodu System sınıfındadır ve 1 Ocak, 1970 GMT’den itibaren geçen milisaniye değerini gösterir. Bu metodu şu anki saat, dakika ve saniye değerlerini bulak için kullanabilirsiniz. ShowCurrentTime

31 Atama operatörleri kısayolları
Operatör Örnek Eş değeri += i += 8 i = i + 8 -= f -= 8.0 f = f - 8.0 *= i *= 8 i = i * 8 /= i /= 8 i = i / 8 %= i %= 8 i = i % 8

32 Arttırma ve Azaltma Operatörleri
Operatör Tanımlama ++var Önce arttır sonra ata. var++ Önce ata, sonra arttır. --var Önce eksilt sonra ata. var-- Önce ata, sonra eksilt.

33 Art. ve Az. Op. Devam

34 Art. ve Az. Op. Devam Bu kısayolları kullanmak işlemleri kolaylaştırır ama bazen okumayı zorlaştırabilir. Şöyle ifadeler kullanmaktan kaçının: int k = ++i + i.

35 Sayı tipi çevirme Aşağıdaki ifadelere bakalım: byte i = 100;
long k = i * 3 + 4; double d = i * k / 2;

36 Çevirme kuralları İki farklı operand kullanılarak bir işlem yapıldığında Java şu kuralları takip eder: 1.    Bir operand double ise diğeri de double’a çevrilir.. 2.    Biri float ise diğeri de float’a çevrilir. 3.    long is long’a çevrilir. 4.    Diğer durumlarda iki operand da int’e çevrilir.

37 Tür Dönüşümü (Type Casting)
Gizli casting double d = 3; (tür genişlemesi) Açık casting int i = (int)3.0; (tür daralması) int i = (int)3.9; (Ondalıklı kısım kaybedilir) Hata nerede? int x = 5 / 2.0;

38 Problem: Virgülden sonra iki sayı tutma
Satış değerini virgülden sonraki iki basamakla beraber ifade eden programı yazın. SalesTax

39 Problem: Kira ödemesi hesaplama
Bu programda kullanıcı faiz oranını, yıl sayısını ve kira tutarını girip aylık ve toplam ödeme miktarını buluyor. ComputeLoan

40 Char data tipi char harf = 'A'; (ASCII)
16 lık sayı char harf = 'A'; (ASCII) char sayiKarakter = '4'; (ASCII) char harf = '\u0041'; (Unicode) char sayiKarakter = '\u0034'; (Unicode) NOT: Artı ve eksi operatörleri bir sonraki unicode karakterini bulmak için kullanılabilir. Örneğin b harfi şu şekilde ekrana basılabilir: char ch = 'a'; System.out.println(++ch);

41 Unicode Format Java characters use Unicode, a 16-bit encoding scheme established by the Unicode Consortium to support the interchange, processing, and display of written texts in the world’s diverse languages. Unicode takes two bytes, preceded by \u, expressed in four hexadecimal numbers that run from '\u0000' to '\uFFFF'. So, Unicode can represent characters. Unicode \u03b1 \u03b2 \u03b3 for three Greek letters

42 Problem: Unicode ların gösterimi
Ekrana iki Çince üç Yunan karakteri basan programı yazınız. DisplayUnicode

43 Özel karakterler için kısayollar
Tanım Escape Sequence Unicode Backspace \b \u0008 Tab \t \u0009 Linefeed \n \u000A Carriage return \r \u000D Backslash \\ \u005C Single Quote \' \u0027 Double Quote \" \u0022

44 Appendix B: ASCII Character Set
ASCII Character Set is a subset of the Unicode from \u0000 to \u007f

45 ASCII Character Set, cont.
ASCII Character Set is a subset of the Unicode from \u0000 to \u007f

46 Karakter ve sayısal tipler arasındaki ilişki
// int i = (int)'a'; ile aynı şey int i = 'a'; // char c = (char)97; ile aynı şey char c = 97;

47 Problem: Parasal birimler
Ekrana dolar ve sent miktarını belirten ondalıklı bir sayı girin. Bu miktarın single dollars, quarters, dimes, nickels, and pennies karşılıklarını bulun. ComputeChange Run

48 remainingAmount set edilir
Trace ComputeChange 11.56 girilsin int remainingAmount = (int)(amount * 100); // Find the number of one dollars int numberOfOneDollars = remainingAmount / 100; remainingAmount = remainingAmount % 100; // Find the number of quarters in the remaining amount int numberOfQuarters = remainingAmount / 25; remainingAmount = remainingAmount % 25; // Find the number of dimes in the remaining amount int numberOfDimes = remainingAmount / 10; remainingAmount = remainingAmount % 10; // Find the number of nickels in the remaining amount int numberOfNickels = remainingAmount / 5; remainingAmount = remainingAmount % 5; // Find the number of pennies in the remaining amount int numberOfPennies = remainingAmount; remainingAmount 1156 remainingAmount set edilir

49 numberOfOneDollars assigned
animation Trace ComputeChange Suppose amount is 11.56 int remainingAmount = (int)(amount * 100); // Find the number of one dollars int numberOfOneDollars = remainingAmount / 100; remainingAmount = remainingAmount % 100; // Find the number of quarters in the remaining amount int numberOfQuarters = remainingAmount / 25; remainingAmount = remainingAmount % 25; // Find the number of dimes in the remaining amount int numberOfDimes = remainingAmount / 10; remainingAmount = remainingAmount % 10; // Find the number of nickels in the remaining amount int numberOfNickels = remainingAmount / 5; remainingAmount = remainingAmount % 5; // Find the number of pennies in the remaining amount int numberOfPennies = remainingAmount; remainingAmount 1156 numberOfOneDollars 11 numberOfOneDollars assigned

50 remainingAmount güncellenir.
animation Trace ComputeChange Suppose amount is 11.56 int remainingAmount = (int)(amount * 100); // Find the number of one dollars int numberOfOneDollars = remainingAmount / 100; remainingAmount = remainingAmount % 100; // Find the number of quarters in the remaining amount int numberOfQuarters = remainingAmount / 25; remainingAmount = remainingAmount % 25; // Find the number of dimes in the remaining amount int numberOfDimes = remainingAmount / 10; remainingAmount = remainingAmount % 10; // Find the number of nickels in the remaining amount int numberOfNickels = remainingAmount / 5; remainingAmount = remainingAmount % 5; // Find the number of pennies in the remaining amount int numberOfPennies = remainingAmount; remainingAmount 56 numberOfOneDollars 11 remainingAmount güncellenir.

51 numberOfOneQuarters assigned
animation Trace ComputeChange Suppose amount is 11.56 int remainingAmount = (int)(amount * 100); // Find the number of one dollars int numberOfOneDollars = remainingAmount / 100; remainingAmount = remainingAmount % 100; // Find the number of quarters in the remaining amount int numberOfQuarters = remainingAmount / 25; remainingAmount = remainingAmount % 25; // Find the number of dimes in the remaining amount int numberOfDimes = remainingAmount / 10; remainingAmount = remainingAmount % 10; // Find the number of nickels in the remaining amount int numberOfNickels = remainingAmount / 5; remainingAmount = remainingAmount % 5; // Find the number of pennies in the remaining amount int numberOfPennies = remainingAmount; remainingAmount 56 numberOfOneDollars 11 numberOfOneQuarters 2 numberOfOneQuarters assigned

52 remainingAmount updated
animation Trace ComputeChange Suppose amount is 11.56 int remainingAmount = (int)(amount * 100); // Find the number of one dollars int numberOfOneDollars = remainingAmount / 100; remainingAmount = remainingAmount % 100; // Find the number of quarters in the remaining amount int numberOfQuarters = remainingAmount / 25; remainingAmount = remainingAmount % 25; // Find the number of dimes in the remaining amount int numberOfDimes = remainingAmount / 10; remainingAmount = remainingAmount % 10; // Find the number of nickels in the remaining amount int numberOfNickels = remainingAmount / 5; remainingAmount = remainingAmount % 5; // Find the number of pennies in the remaining amount int numberOfPennies = remainingAmount; remainingAmount 6 numberOfOneDollars 11 numberOfQuarters 2 remainingAmount updated

53 String tipi Char tipi tek bir karakteri ifade etmeye yarar. Birden çok karakteri ifade etmek için String tipi kullanılır. String message = "Welcome to Java"; String System veya JOptionPane sınıfları gibi önceden Java kütüphanesinde tanımlanmıştır. String tipi primitif değil referans tipindedir. Java sınıfları değişkenleri refere ederken kullanılabilir.

54 String birleştirme // Three strings are concatenated
String message = "Welcome " + "to " + "Java"; // String Chapter is concatenated with number 2 String s = "Chapter" + 2; // s becomes Chapter2 // String Supplement is concatenated with character B String s1 = "Supplement" + 'B'; // s1 becomes SupplementB

55 Programlama biçimi ve dökümantasyonu
Açıklayıcı yorumlar İsimlendirme Kuralları Doğru biçimlendirme Block Styles

56 Yorumlar Programın başına özet olarak programın ne yaptığını, hangi özelliklere sahip olduğunu, hangi veri yapılarını barındırdığını yazın. İsminizi, biriminizi, tarihi, üstünüzü ve kısa bir açıklamayı ekleyin.

57 İsimlendirme Anlamlı ve açıklayıcı isimler seçin.
Değişkenler ve metot isimleri: Küçük harfler kullanın. Birden fazla kelime varsa camel notation. Örnek: computeArea

58 devam Sınıf isimleri: Sabitler: Büyük harfle başlayın: AlanHesapla.
Hepsi büyük harf ve boşluk gelmesi gereken yerlere alt tire konur. For example, the constant PI ve MAX_VALUE

59 Biçimlendirme Girinti Boşluk
Parantezden sonra bir tab içerden başlayın. Boşluk Kod segmentleri arasında bir satır boşluk bırakın.

60 Block Styles Use end-of-line style for braces.

61 Programlama Hataları Syntax Hataları Runtime Hataları Mantık hataları
Derleyici tespit eder. Runtime Hataları Programın başarısız olmasına sebep olur Mantık hataları Hatalı sonuç üretir.

62 Sentaks hatası public class ShowSyntaxErrors {
public static void main(String[] args) { i = 30; System.out.println(i + 4); }

63 Çalışma zamanı hataları
public class ShowRuntimeErrors { public static void main(String[] args) { int i = 1 / 0; }

64 Logic Errors public class ShowLogicErrors {
// Determine if a number is between 1 and 100 inclusively public static void main(String[] args) { // Prompt the user to enter a number String input = JOptionPane.showInputDialog(null, "Please enter an integer:", "ShowLogicErrors", JOptionPane.QUESTION_MESSAGE); int number = Integer.parseInt(input); // Display the result System.out.println("The number is between 1 and 100, " + "inclusively? " + ((1 < number) && (number < 100))); System.exit(0); }

65 Debugging Mantık hatalarına bug denir. Hataları bulup düzeltme işlemine debugging denir. Genellikle bug ın buluduğu segmentler kullanılarak hatayı giderme yoluna gidilir. Programı okuyarak ya da basitçe ekrana birtakım değerler bastırarak küçük programları debug edebilirsiniz. Fakat büyük ve karmaşık programlar için yardımcı yazılımlar gerekir.

66 Debugger Debugger debugging işleminin yapıldığı birimdir.
Bir zaman aralığında tek komut çalıştırma. Bir metotu takip etme ya da gerekmiyorsa atlama. Breakpoint oluşturma. Değişkenleri gösterme. Display call stack. Değişkenleri düzenleme gibi işlevleri vardır.

67 JOptionPane Input Derste iki tip input göreceğiz.
Scanner sınıfı (konsol input) JOptionPane input diyalogları

68 Input diyalog kutusundan input alma
String input = JOptionPane.showInputDialog( "Enter an input");

69 Devam String string = JOptionPane.showInputDialog(
null, “Prompting Message”, “Dialog Title”, JOptionPane.QUESTION_MESSAGE);

70 Metotu çağırmak için iki yol
: String string = JOptionPane.showInputDialog(null, x, y, JOptionPane.QUESTION_MESSAGE); x ekrana gelen soru, y kutunun başlığı. JOptionPane.showInputDialog(x); X ekrana gelen soru.

71 String leri integer a çevirme
Integer sınıfında parseInt metotu kullanılır: int intValue = Integer.parseInt(intString); intString bir sayısal String ifadesidir, mesela “123”.

72 String i double a çevirme
Double sınıfından parseDouble metotu kullanılır: double doubleValue =Double.parseDouble(doubleString); doubleString mesela “123.45” olabilir.

73 Problem: Input diyaloglarıyla kira hesaplama
Daha önceki faiz sorusunu bu sefer diyalog kutularıyla yapalım. ComputeLoanUsingInputDialog Run

74 Companion Website Debugging in NetBeans Supplement II.E, Learning Java Effectively with NetBeans

75 Companion Website Debugging in Eclipse Supplement II.G, Learning Java Effectively with NetBeans


"Bölüm 2 Temel Programlama" indir ppt

Benzer bir sunumlar


Google Reklamları