sayısal türler

63
Sayısal Türler • Tamsayılar (byte, short, int, long) – Tam sayılardır – exact – Yaklaşık olarak ~10 19 rakamında sınırlıdır • Kayan noktalı (float, double) – kesirli – Genelde yaklaşma (0.33333) – Yaklaşık olarak ~10 308 rakamında sınırlıdır

Upload: cybele

Post on 21-Jan-2016

70 views

Category:

Documents


0 download

DESCRIPTION

Sayısal Türler. Tamsayılar (byte, short, int, long) Tam sayılardır exact Yaklaşık olarak ~10 19 rakamında sınırlıdır Kayan noktalı (float, double) kesirli Genelde yaklaşma (0.33333) Yaklaşık olarak ~10 308 rakamında sınırlıdır. Veri Türlerinin Listesi. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Sayısal Türler

Sayısal Türler

• Tamsayılar (byte, short, int, long)– Tam sayılardır– exact– Yaklaşık olarak ~1019 rakamında sınırlıdır

• Kayan noktalı (float, double)– kesirli– Genelde yaklaşma (0.33333)– Yaklaşık olarak ~10308 rakamında sınırlıdır

Page 2: Sayısal Türler

Veri Türlerinin ListesiTemel Türler Default Value

boolean falsechar '\u0000' (null)byte (byte) 0short (short) 0int 0long 0Lfloat 0fdouble 0dvoid N/A

Note: “Void “ C/C++ dillerindeki gibi temel bir tür değildir. Java ‘da void türüne doğru bir tür değişimi yapılamaz.

Page 3: Sayısal Türler

Veri Türlerinin Değer Sınırları

Tür Boyut En az Varsayılan

boolean false

En fazla

1 false* true*

char '\u0000' (null)16

byte (byte) 08 -128 127

short (short) 016 -32,768 32,767

int 032 -2,147,483,648 2,147,483,647

long 0L64 -9,223,372,036,854,775,808 9,223,372,036,854,775,807

float 0.0F32 Yaklaşık olarak ±3.4E+38 ve 7 haneli

double 0.0D64 Yaklaşık olarak ±1.7E+308 ve 15 haneli

void

* En az ve en fazla gibi durumlar geçerli değildir.

Page 4: Sayısal Türler

Doğru Doğru !!derlenirderlenir

Tür Dönüşümü (Casting)Bir önceki derste tür dönüşümü ile ilgili temel birkaç şey gördük. Bazen açık tür dönüşümü gerekebilir bazen de gerekmez.

int x = 10;float f1 = x;

float f2 = 11.234f;int y = f2;

Derlenebilmesi için hangisinde tür dönüşümüne ihtiyaç vardır? Neden?

HATAHATAAçık tür dönüşümü gereklidirAçık tür dönüşümü gereklidir

Page 5: Sayısal Türler

Tür Dönüşümü (Devam)

Tür dönüşümünün ne zaman gerekli olduğunu anlayabilmek için aşağıdaki örneğe bakalım.

Aşğıdaki gibi iki ayrı türden iki adet değişkenimiz olsun:

int x;

char c;

Asıl soru, Bu veri türlerinin bellekte kapladığı alan ne kadardır?

Page 6: Sayısal Türler

RecallDaha önce Java ‘daki veri türlerinin bellekte kapladığı alanları gördük. Her tamsayı (int) türünde tanımlanmış bir değişken için bellekten 4 baytlık yer ayrılır. Bize ayrılan yeri bir kutu gibi düşünebilirsiniz.

java intjava int

Besin değerleriServis miktarı 1 int

Her serviste ikram edilen

Kalori değeri 0

% günlük miktar

Toplam bayt sayısı 4 100%

tahıl kutusu

Page 7: Sayısal Türler

And recall...

java charjava char

Besin değerleriServis miktarı 1 char

Her serviste ikram edilen

Kalori değeri 0

% günlük miktar

Toplam bayt sayısı 2 50%

Karakter türünde tanımlanmış bir değişken için 2 bayt alan tahsis edilir . Tamsayı (int) türüne göre daha az bir alandır. Dolayısıyla bunu daha küçük bir kutu olarak düşünebiliriz.

Ton balığı konservesi

Page 8: Sayısal Türler

Öyleyse...Bir karakter yani char veri türü 2 bayt, ve bir tamsayı yani int türü 4 bayt yer kaplar. Dolayısıyla aşağıdaki kodu incelersek:

int x; char c;Aşağıdaki şekle bakarsak:

x

c

DeğişkenDeğişken Belleğin resmiBelleğin resmi

Her bir blok 1 bayt

temsil eder

0000 0000

0000 0000 0000 0000 0000 0000

0100 0001

0101 0110

Page 9: Sayısal Türler

Gerçeklik kontrolü

java charjava char

java intjava int

Konserve kutusu tahıl kutusunun içine sığabilir mi? Evet, küçük olduğu için sığar.

Peki, tahıl kutusu konserve kutusunun içine sığabilir mi? Düzgün bir şekilde mümkün değil, çünkü tahıl kutusu daha büyüktür.

Page 10: Sayısal Türler

Aynı mantıkla...

char türündeki bir değer int türündeki bir alana sığar mı?

int türündeki bir değer char türündeki bir alana sığar mı?

x

c

DeğişkenDeğişken Belleğin ResmiBelleğin Resmi

Page 11: Sayısal Türler

Gerçeklik kontrolü

java charjava char

java intjava int

Peki tahıl kutusunun yarısını konserve kutusuna yerleştirmek istersek mümkün mü? İşte bu olur !

Örneğin, eğer tahıl kutusunun yarısının boş olduğunu biliyorsak o boş kısmı atabiliriz.

Page 12: Sayısal Türler

Açık tür dönüşümü: Kasıtlı olarak yapılan duyarlılık kaybı

x

c

DeğişkenDeğişken Belleğin resmi Belleğin resmi

int x = 45;char c = ‘A’;c = (char) x; // tür dönüşümü gereklidir

Tür dönüşümü

gerekli!

Page 13: Sayısal Türler

Kendinizi sınayın

Eğer aşağıdakileri uygularsak ne olur:

int someInt = 2000; long longNumber; longNumber = (long) someInt;

Bu tür değişimi kurallara uygun mudur?Öyleyse gerek var mıdır?

Boşlukları doldurun.

Page 14: Sayısal Türler

Diğer bir örnek

float f;int i, j;i = 9;j = 2;f = i / j;

f = (float) i / j;

Sonuç 4 olur, çünkü yapılan tamsayı

bölmesi sonucu kesirli kısım budanır!

f = (float) i / (float) j;

Eğer beklenen değer bu değilse,3 türlü çözüm vardır

f = i / (float)j;

Page 15: Sayısal Türler

Diğer bir örnek

İşaret biti Veri için 31 bit ayrılır

Dikkat etmemiz gereken diğer bir husus tür dönüşümü yapılırken Java ‘nın tür dönüşümü yapılan değerin işaretini korumasıdır. int türü için ayrılan 4 bayt ‘lık alanı düşünelim. En yüksek anlamlı bit işaret biti olarak kullanılır. 0 ise pozitif, 1 ise negatif anlamına gelir.

intint

Page 16: Sayısal Türler

Tür dönüşümü ve işaret

İşaret bitini korur

intint

baytbayt

Tür dönüşümü sadece bir veri türünü diğerine dönüştürürken bir kısmını budamaktan ibaret değildir. Orjinal işaret neyse o korunur.

Page 17: Sayısal Türler

Diğer bir örnekElimizde çok eskiden kalma, tarih bilgisinin tamsayı (int yani 4 bayt) şeklinde ifade edildiği bir veri olduğunu kabul edelim, şu şekilde:

19291031

1929 10(ekim)

31

Bu çok kabaca, fakat eskiden kalma veri kaynakları bu formatta verilere sahiptir.

Page 18: Sayısal Türler

Açık tür dönüşümü gerekli

public class CutData { public static void main(String[] args) {

int iDate = 20001225; // eskiden böyleydibyte byDay = (byte) (iDate % 100);

System.out.println (“Gün " + byDay);

iDate = iDate / 100;

byte byMonth = (byte) (iDate % 100);

System.out.println (“Ay " + byMonth);

iDate = iDate / 100;

short sYear = (short) iDate;

System.out.print (“Yıl = " + sYear); }} // Veriyi parçalara ayırdık

Page 19: Sayısal Türler

public class PackDate {

public static void main(String[] args) {

byte month = 12;byte day = 25;short year = 2000;

int date = year * 10000 + month * 100 + day;

System.out.println ("The date = " + date); } } // PackDate

Ters yönde çalışırsak yani byte veya short türündeki bir veriyi int türündeki bir alana aktarmak istersek tür dönüşümü gerekli değildir çünkü herhangi bir duyarlılık veya veri kaybı olmaz.

Page 20: Sayısal Türler

• Verilenler: int start = 10;

float temp = 5.5f;

temp = (int) temp * start;

• temp değişkenin değeri şimdi ne oldu?

Tür dönüşümü: Bilginizi sınayın

• Verilenler: char c = ‘A’;

int x;

c = x;

• Kurallara uygun mudur? Hızlı tekrar

Page 21: Sayısal Türler

Bilginizi sınayın• İşte problem:

int iVar = 10;float fVar = 23.26f;

// derleme zamanı hatası veririVar = iVar * fVar

• Hangi çözüm en iyi çalışır?

iVar = (int) iVar * fVar

iVar = (int) (iVar * fVar)

iVar = iVar * (int) fVar

1

2

3

iVar = (int) ((float) iVar * fVar)

4

232

Aynı derleme hatası

232

230

Hızlı tekrar

Page 22: Sayısal Türler

Kısayol operatörleri• counter = counter + 1; VEYA counter++;• counter = counter - 1; VEYA counter--;• counter = counter + 2; VEYA counter+=2;• counter = counter * 5; VEYA counter*=5;

Son iki örnekte : İlk önce artırma ve çarpma işlemleri yapılır daha sonra atama işlemi yapılır.

Hızlı tekrarBu ifadeleri anlayın fakat kullanmamaya çalışın

Page 23: Sayısal Türler

The Short End of ShorthandAkıllı ifadeleri kısayol operatörlerle birlikte kullanırken dikkatli olun.

Örneğin, “_” gibi bir değişken tanımlayabiliriz. Alt çizgi karakteri geçerli bir değişken ismidir.

int _ = 1;int _ = 1;Aşağıdaki gibi Morse kodu oluşturacak şekilde değişik karakterlerin kombinasyonundan oluşan bir değişken ismi de oluşturabiliriz:

_ -= --_ - _--;_ -= --_ - _--;Evet, yukarıdaki ifade geçerlidir, ancak tamamen anlamsız ve okunamaz bir ifadedir.

Page 24: Sayısal Türler

Dokümantasyon ve Açıklamalar

• Üç çeşit yöntem vardır:// satır sonuna kadar olan her şeyi açıklama olarak kabul eder

/* ve */ işaretleri arasında kalan tüm ifadeler satır sonu gözetmeksizin açıklama olrak kabul edilir.

/*** Bu sentaks biçimi Javadoc açıklamaları için kullanılır,

* HTML biçimlendirme özelliklerini sunar.

*/

• BİLM 217 için, Javadoc açıklamalarını kullanın

Hızlı Tekrar

Javadoc örneği üzerinde çalışalım

Page 25: Sayısal Türler

Javadoc: Basit bir örnekimport java.util.*;/** * HelloComments.java * * * Created: Wed Jan 12 18:17:29 2000 * * @author David Dagon * @version 98 beta */public class HelloComments { /** * Basit <b> bir </b> değişken. */ public int x = 10;

Javadoc açıklamaları

değişiklik yapılan öğenin üzerinde yer

almalıdır.Sınıf açıklamaları yapılacağı zaman

açıklamaları import ifadelerinin altına koymak gerekir.

HTML terimleri!

Page 26: Sayısal Türler

Short, one-liner,followed by period

Basit bir örnek (devam)

Sadece değişken isimlerini belirtin.

/** * This comment is reproduced twice, because * of the comma delimited declaration of ints. * The solution would be to use separate lines * for each declaration. */ public int y = 4, z = 11;

/** * Bu sınıf çalıştırılırsa Main metodu programın * başlangıç noktasıdır. * @param args Komut satırından girilen parametreler */ public static void main(String[] args) {

} } // HelloComments

Page 27: Sayısal Türler

@author @param@return @exception @deprecated // jdk 1.1 @since // jdk 1.1@serial // jdk 1.2

@see <class name> @see <full-class name> @see <full-class

name#method.name>@version

• HTML etiketleri ekleyebilirsiniz fakat <H1> gibi yapısal etiketler kullanmaktan kaçının.

• Javadoc comments should immediately preceed the declaration of the class, field or method. İlk cümle özet olmalıdır. Javadoc ‘a özel etiketler kullanın, örneğin --@ . Eğer @ etiketi kullanılırsa diğer bir

@ etiketine kadar parse işlemi devam eder.

Javadoc (devam)

Kendi javadoc açıklamalarınıza geri dönerseniz bu notlara geri

dönersiniz.

Page 28: Sayısal Türler

Sorular?

Page 29: Sayısal Türler

Sabitler

• Java:– public final static <tür> <IDer> = <değer>;

– public final static int MIN_PASSING = 60;– public final static float PI = 3.14159f;

• Neden bu sentaks kullanıldığı konusunda detaylı bilgi ileride...

Hızlı tekrar

Page 30: Sayısal Türler

Printing to Screen• Java:

– System.out.println(<argüman>);– System.out.println( ); // boş satır ekler– System.out.println(5); // ekrana 5 yazar

System.out.println(“Merhaba Dünya”); // ekrana Merhaba Dünya yazar

– “println” vs. “print” :• println komutu ekrana mesajı bastıktan sonra

imlecin bir alt satırın başına geçmesini sağlar• print komutu ise ekrana mesajı bastıktan sonra

imlecin kaldığı yerden devam etmesini sağlar

Quick Review

Page 31: Sayısal Türler

Metod Çılgınlığı

Page 32: Sayısal Türler

Dikkat

Java ‘daki metodları konuşmaya başlamadan önce yüksek seviyeli programlama dillerine bir göz atmamız gerekir.

Slaytlardaki sentaks konusunda endişelenmeyin. Büyük resimde kod detayları önemli değildir önemli olan neyin önemli olduğudur.

Page 33: Sayısal Türler

Programlama Modelleri

Prosedürel Programlama (Procedural Programming)

‘Imperative’ assignment used to create state, and procedures manipulate state. E.g., C, Assembly, Pascal int y; int x = 3; y = manipulateData(x);

Fonksiyonel Programlama (Functional Programming)

Functions (procedures that do not depend on outside data) are used to provided data. E.g., Lisp.

(defun check-member (input-item input-list) (cond ((null input-list) nil) ((equal input-item (first input-list)) T) (T (check-member input-item (rest input-list)))))

Page 34: Sayısal Türler

Nesneye yönelik programlama

Bütün veriler objelerin içinde tutulur; bütün etkileşim objeler arasında olur. Even numbers are objects that know how to add themselves. E.g., SmallTalk:

| array |array := Array new: 5.rect := 0@0 corner: [email protected] to: array size do: [ :item | rect origin: item@item. array at: item put: rect copy ].

Java ‘nın yeri neresidir?

Nesneye yöneliktir ancak %100 değildir çünkü, temel veri tiplerine sahiptir ve de az da olsa prosedürel programlamaya izin verir.

Programlama Modelleri

Başka modeller de mevcuttur ancak, bu üçü Java ‘nın nereden geldiğini açıklamaya yeter

Page 35: Sayısal Türler

Java Java MetodlarıMetodlarıJava ‘da hem prosedürler hem de fonksiyonlar için method adı verilen bir yapı mevcuttur:

• aşağıda prosedür geriye değer döndürmediği için metod adından önce “void” ifadesi kullanılmıştır.

public void printHelloWorld( ) {

System.out.println(“Hello World!”);

} // printHelloWorld

• Not: Bütün metodlar, parametre almasa dahi metod isminden sonra ( ) kullanmak zorundadır.

Açıklamayı not edin

Page 36: Sayısal Türler

hem prosedürler hem de fonksiyonlar için tek bir yapı:

• fonksiyon tanımlaması yapıldığı zaman geri dönüş değerinin türü belirtilmesi gerekir.

public float average (float num1, float num2, float num3) { float answer; answer = (num1 + num2 + num3)/ 3; return (answer); } // of average

Java MetJava Metodlarıodları

Page 37: Sayısal Türler

Metod Yazımı : Büyük BakışMetod Yazımı : Büyük BakışJava kuralı:

--Her metod bir nesneye aittir ya da bir sınıfa. --Bir metod çağrıldığı zaman hangi sınıfa ya da nesneye ait olduğu kesin belli olmalıdır. --Bir uygulamayı çalılştırabilmek için programın aynı adında bir sınıf ve bu sınıfın içinde de main metodu bulunmalıdır.

Sınıf metodu olduğunu

belirtir, üye metodu değil

Herkese açık

Geri dönüş değeri yok

Metod adı

Komut satırı parametreleri için

public static void main (String[ ] argv)

Page 38: Sayısal Türler

class A{

public static void main(...}

class B{

public static void main(...}

class C{

public static void main(...}

Öyleyse, her sınıf kendi main

metoduna sahip olabilir. Bunlardan

hangisinin çalışacağına siz

karar vereceksiniz.Debug testi yapmak

için gerekli olan main metodlarını yazmayı öğrendiğimiz zaman

yukarıda bahsettiğimiz konu kritik bir hal alacak.

Page 39: Sayısal Türler

Metod İmzaları“Metod imzası, metod adı, parametre sayısı ve türleridnen oluşur. Herhangi bir sınıf aynı imzaya sahip iki metod tanımlayamaz, yoksa derleme zamanı hatası oluşur.

Aynı isme sahip metodlar farklı varyasyonlarda parametrelere sahip

olurlarsa Method overloading meydana gelir.

public int getCube(int num){return num*num*num;

}

public int getCube(float num){return (int)(num*num*num);

}

public int getCube(double num){return (int) (num*num*num);

}

Page 40: Sayısal Türler

Metodlarda yapılan genel hatalar

public float average (float num1, float num2, float num3); { float answer; answer = (num1 + num2 + num3)/ 3; return (answer); } // average

‘;’ Noktalı virgül hakkında -- Eğer yukarıdaki gibi bir kullanım söz konusu olursa metod abstract metod gibi görünebilir. -- Çözümlenmesi zor bir hata mesajı ile karşılaşılabilir.-- Çok kolay yapılan hatalardan biridir.

Page 41: Sayısal Türler

Metotlar nereye?

Tıpkı main metodunda olduğu gibi oluşturulan bütün metodlar bir sınıfa ya da bu sınıfın bir üyesine ait olmalıdır. Daha sonra nasıl sınıf ve nesne oluşturulur göreceğiz...

Şimdilik, metodların bir sınıfa ait olması gerektiğini bilmeniz yeter.

Page 42: Sayısal Türler

Nesneye Yönelik Programlama Hakkında

Nesneye yönelik programlama ile ilgili önemli noktaları görmüş olduk :

Veri ve metodlar birlikte bir sınıfa aittir.

Şu anda sadece, değişkenlerin ve metodların sınıflara ait olduğunu bilmeniz yeterli.

Daha sonra, bu özelliği kullanarak durumları (değişken), davranışlarla (behaviour) nasıl sarmalanır göreceğiz...

Öyleyse, bugün neler öğrendiğimizi hatırlayalım. Nesneye yönelik programlamanın temel taşlarını öğrenmeye başladınız.

Page 43: Sayısal Türler

Sorular?

Page 44: Sayısal Türler

Koşullu ifadeler

Page 45: Sayısal Türler

Karar ifadeleri• Java:

if (koşul) tek bir ifade;else tek bir ifade;

• Ya da:

if (koşul){ bir ya da daha fazla ifade;}else{ bir ya da dah fazla ifade;}

Page 46: Sayısal Türler

Örnekler• Java: Aşağıdaki örnekte ne yapılmıştır?

int testGrade = 65;

boolean passing = true;

if (testGrade < 60)

passing = false;

System.out.println(testGrade + ”notu geçer demek” + passing + ”olur”);

Page 47: Sayısal Türler

Boole ve İlişkisel operatörler• Boole: Java:

VE &&

VEYA ||

DEĞİL !

• İlişkisel: eşittir ==

eşit değildir !=

küçüktür <

küçük ya da eşittir <=

büyüktür >

büyük ya da eşittir >=

• Not:Atama =

Page 48: Sayısal Türler

Örnek

if (enrolled && passing) {// etc.

}

Java, şartlardan sadece bir tanesinin değerlendirilmesi gibi bir imkan da sunar.

if (enrolled(studentNum) || getPassing(studentNum)) {

// etc. }

Eğer ilk şart doğruysa,

ikinci şarta bakılmaksızın

toplam koşul doğru kabul

edilir ve değerlendirme

sona erer.

Page 49: Sayısal Türler

Biraz da kodpublic static void main(String args[]) {

int quiz1 = 42;

int quiz2 = 99;

if(isPassing(quiz1) && isPassing(quiz2))

System.out.println(“Passed both quizzes”);

}

public static boolean isPassing(int testGrade) {

boolean passing = true;

if (testGrade < 60)

passing = false;

System.out.println(“Is “ + testGrade +

“ passing? “ + passing);

return passing;

}

Page 50: Sayısal Türler

Sonuç?

Is 42 passing? false

Is 42 passing? false

Is 99 passing? true

ab

Page 51: Sayısal Türler

SwitchSwitch koşul ifadesi koşul ifadesi

Tek koşul için if yapısını kullanın.

İki koşul varsa if/else yapısını kullanın.

İkiden daha fazla koşul varsa switch yapısını kullanın. Switch yapısının alternatifi if-elseif-elseif-else yapılarıdır.

Not:

• Eğer aynı değişkenin değişik değerleri arasından seçim yapılcaksa kullanmak elverişlidir.• Ancak, farklı değişkenlerin değerlerinde seçim yapılacaksa kullanılmamalıdır.

Page 52: Sayısal Türler

Switch

switch (<değişken>){case <değer1>://yapılmasını istediğiniz herhangi bir şeybreak; // isteğe bağlıcase <değer2>://yapılmasını istediğiniz herhangi bir şeybreak; // isteğe bağlıdefault: //yapılmasını istediğiniz herhangi bir şeybreak; // isteğe bağlı

}

Page 53: Sayısal Türler

Switch (devam)

Switch yapısının en sonundaki default durumuna dikkat edin. (Seçimlidir)(Seçimlidir)

switch (iNumber) { case 1:

System.out.println (“Bir”);break;

case 2:System.out.println (“İki”);break;

case 3:System.out.println (“Üç”);break;

default: System.out.println(“Not 1, 2, veya 3”); break; // Gerekli mi???

} // switch

Pratikte her zaman default ifadesini kullanmanız gerekir.

Default olmadan da

çalışırdı ancak basit

bir programlama

olurdu.

Page 54: Sayısal Türler

Kaç gün?

if(month == 4 || month == 6 ||

month == 9 || month == 11)

numdays = 30;

else if(month == 2)

{

numdays = 28;

if(leap)

numdays = 29;

}

else

numdays = 31;

Page 55: Sayısal Türler

Switchswitch (month)

{

case 4:

case 6:

case 9:

case 11:

numdays = 30;

break;

case 2:

numdays = 28;

if(leap)

numdays = 29;

break;

default: /* iyi bir fikir mi? */

numdays = 31;

}

Page 56: Sayısal Türler

• Switch yapısı sadece aşağıdaki veri türleriyle birlikte kullanılır.

int, char, short & byte

• Case değerleri mutlaka aynı türden olmak zorundadır.

• Case değerleri mutlaka sabit değerler olmalıdır.

Switch yapısı ile ilgili bazı notlarSwitch yapısı ile ilgili bazı notlar

Page 57: Sayısal Türler

Switch yapısıSwitch yapısı

switch (grade) { case ‘A’: case ‘a’: countOfAGrades++; break; case ‘B’: case ‘b’: countOfBGrades++; break; case ‘C’: case ‘c’: countOfCGrades++; break; case ‘D’: case ‘d’: countOfDGrades++; break; case ‘F’: case ‘f’: countOfFGrades++; break; default: System.out.println(“Invalid grade”); break;}

(yukarıda kullanılan değişkenlerin dahan önceden oluşturulmuş olduğunu ve bir değere sahip olduklarını kabul ediyoruz.)

if (grade==‘A’ || grade==‘a’)countOfAGrades++;

else if (grade==‘B’ || grade==‘b’)countOfBGrades++;

else if (grade==‘C’ || grade==‘c’)countOfCGrades++;

else if (grade==‘D’ || grade==‘d’) countOfDGrades++;

else if (grade==‘F’ || grade==‘f’) countOfFGrades++;

elseSystem.out.println (“Invalid grade”);

aynı

Page 58: Sayısal Türler

Daha ileriye gitmeden önce...

• Program kodunuz ne yapılmak istendiğini açık ve net bir şekilde ifade ediyor olmalı.

• Bununla ilgili 2 tür izleyici var– Makine– Diğer programcılar

Page 59: Sayısal Türler

IfTarz 1

if(<boole ifade>)

{

// doğruysa bu işlemleri yap

}

else

{

// yanlışsa bu işlemleri yap

}

Page 60: Sayısal Türler

IfTarz 2

if(<boole ifade>) {

// doğruysa bu işlemleri yap

} // açıklama

else {

// yanlışsa bu işlemleri yap

} // açıklama

Page 61: Sayısal Türler

Koşula bağlı atamaKoşula bağlı atama

boolean b; int count;

b = checkCompletion();count = (b) ? 3 : 1;

Boole değer olmalı

Eğer doğruysa . . .

. . . Eğer yanlışsa

<boole> ? <doğruysa yapılacak>: <yanlışsa yapılacak>

Not: Bu sentaks hızlı veya daha okunaklı falan değildir. Sadece C hacker ‘ları ile ilgili bir konu.

Page 62: Sayısal Türler

Koşullu ifadeler özet

• Kontrol yapıları

–İki tür koşullu yapı vardır:• if { ... } else { ... }

– Boole değere göre dallanmalar var

• switch (...) { case ...; break; default: ... }– Sabit değere göre dallanma var– break deyimini unutmayın

Page 63: Sayısal Türler

Sorular?