Transcript Kontrol Deyimleri 1
Slide 1
Bölüm 4 – Kontrol İfadeleri:1.kısım
Outline
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
4.13
Giriş
Algoritmalar
Pseudocode
Kontrol İfadeleri
if tek-seçimli ifadeler
if else seçimli ifadeler
while döngü ifadeleri
Algoritmaların Tasarımı : Örnek Çalışma 1(Sayaç Kontrollü Döngüler)
Algoritmaların Tasarımı: Örnek Çalışma 2 (SonlandırcıKontrollü Döngüler)
Algoritmaların Tasarımı: Örnek Çalışma 2 (İçiçe Kontrollü
Yapılar)
Birleşik Atama Operatörleri
Artırma ve Azaltma Operatörleri
İlkel Tipler
Slide 2
4.1
Giriş
• Bu bölümde Kontrol İfadelerini öğreneceğiz.
– Yapısal programlama prensibi
– Kontrol ifadeleri objelerin yapımına yardım eder. (Chapter
8)
Slide 3
4.2
Algoritmalar
• Algoritma
– Belli bir sırada takip edilen işler
• İşler gerçekleştirilir.
• Sıra, hangi işin gerçekleştireceğini tespit eder.
• Program kontrolü
– Kontrol ifadeleri bu sıranın oluşumuna yardım eder.
Slide 4
4.3
Pseudocode
• Pseudocode (Program tasarımı)
– Algoritma geliştirmek için kullanılan esnek bir dil
– Bilgisayarda çalıştırılamaz
– Algoritmayı yapanlara kurallardan bağımsız ifade etmeyi
sağlar.
Slide 5
4.4
Kontrol İfadeleri
• Sıralı çalışma
– Program kodları baştan başlayıp satır satır çalışır.
• Kontrolün transferi
– 3 tip kontrol ifadesi bu kodlar arasında transfer sağlar.
• Sıralı yapılar
• Seçimli yapılar
• Döngüsel yapılar
• Akış diagramı
– İş akışını modeller
• İşi tanımlayan semboller
• İş sırasını gösteren oklar
Slide 6
Notu toplama ekle
Sayacı 1 artır
Java karşılığı:
toplam = toplam + not;
Java karşılığı:
sayac = sayac + 1;
Fig 4.1 Sıralı akış diyagramı.
Slide 7
Ja v a Ke y w o rd s
abstract
assert
case
catch
default
do
final
finally
implements import
long
native
protected public
strictfp
super
throw
throws
volatile
while
boolean
char
double
float
instanceof
new
return
switch
transient
break
class
else
for
int
package
short
synchronized
try
K eyw o rd s th a t a re reserved , b u t n o t cu rren tly u sed
const
goto
Fig . 4 .2
Ja v a k e y w o rd s.
byte
continue
extends
if
interface
private
static
this
void
Slide 8
4.4
Kontrol İfadeleri
• Java sıralı akışa sahiptir.
• Java 3 farklı seçim komutu sağlar.
– if
– If…else
– switch
• Java 3 farklı döngü komutu sağlar.
– while
– do…while
– do
• Bu komutların herbiri ayrılmış kelimelerdir.
Slide 9
4.5
if tek-seçimli durum
• Tek-giriş/tek-çıkış kontrol ifadeleri
• Şart doğru (true) olduğu zaman komut çalışır.
Slide 10
[not >= 60]
print “Geçti”
[not < 60]
Fig 4.3 if tek-seçimli durum iş iş akış diyagramı.
Slide 11
4.6
if…else seçimli durum
• Şart doğru (true) olduğu zaman komut çalışır.
• Şart yanlış (false) olduğu zaman başka bir
komut çalışır.
• Şart operatörü (?:)
• İçiçe if…else ifadeleri
Slide 12
[not < 60]
print “Kaldı”
[not >= 60]
print “Geçti”
Fig 4.4 if…else iki seçimli durumlar için akış diyagramı.
Slide 13
4.7
while Tekrarlama İfadeleri
• Şart doğru (true) olduğu müddetçe dögüye ait
komutları çalıştır.
Slide 14
birleşim
karar
[ürün <= 1000]
Ürün değerinin 2 katını al
[ürün > 1000]
Java karşılığı:
ürün = 2 * ürün;
Fig 4.5 while tekrarlama ifadelerinin akış dyagramı.
Slide 15
4.8 Algoritmaların Tasarlanması: Örnek
Çalışma 1 (Kontrollü Sayaç Döngüsü)
• Sayaç
– İfadelerin kaç defa tekrar ettiğini kontrol eden değişken
• Ortalama1.java not ortalamasını hesaplar.
– Döngüyü kontrol için sayaç kullanılır.
Slide 16
Toplam değişkenini sıfırla
Sayaç değişkenine 1 ata
Syaç 10 ‘a eşit yada küçük olduğu müddetçe
Diğer notu gir
Toplamı not kadar artır
Sayacı 1 artır
Toplamı 10 ‘a bölerek sınıf ortalamasına ata
Sınıf ortalamasını yazdır
Fig. 4.6 Pseudocode algoritması : sınıf ortalamasını
bulmak için kontrollü sayaç döngüsü kullanılır.
Slide 17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Fig. 4.7: Ortalama1.java
// Class-average program with counter-controlled repetition.
import javax.swing.JOptionPane;
public class Ortalama1 {
public
{
int
int
int
int
static void main(
toplam;
notSayaci;
not;
ortalama;
Declare variables;
is the counter
StringgradeCounter
args[] )
// sum of grades input by user
// number of grade to be entered next
// grade value
// average of grades
Continue looping as long as
is less than or
equal to 10
String notString; // grade typed by user
gradeCounter
// initialization phase
toplam = 0;
// initialize total
notSayaci = 1;
// initialize loop counter
// processing phase
while (notSayaci <= 10 ) {
// loop 10 times
// prompt for input and read grade from user
notString = JOptionPane.showInputDialog(
“Sayısal not girişi: " );
// convert gradeString to int
not = Integer.parseInt( notString );
Average1.java
gradeCounter
Line 21
Slide 18
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
toplam = toplam + not;
notSayaci = notSayaci + 1;
// add grade to total
// increment counter
} // end while
Average1.java
// termination phase
ortalama = toplam / 10;
// integer division
// display average of exam grades
JOptionPane.showMessageDialog( null, “Sınıf ortalaması" + ortalama,
“Sınıf Ortlaması", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class Average1
// terminate the program
Slide 19
Ortalama1.java
Slide 20
4.9 Algoritmaların Tasarlanması: Örnek
Çalışma 2 (Sonlandırıcı-Kontrollü Döngüler)
• Sonlandırıcı değer
– Veri girişini sonlandırmak amaçlı kullanılır.
• Ortalama2.java döngünün sayısı belli değil
– Kullanıcı sonlandırıcı değere (-1) basarak döngüyü
bitiriyor.
Slide 21
Toplam değişkenini sıfırla
Sayaç değişkenine 1 ata
İlk not girişi yap (sonlandırıcı değer de mümkün)
Kullanıcı sonlandırıcı değer girmediği müddetçe
Toplamı not değeri kadar artır
Sayacı 1 artır
Yeni notu gir(sonlandırcı değer de mümkün)
Eğer sayaç 0 eşit değilse
Ortalamayı toplamı sayaca bölerek bul
Ortalamayı yazdır
else
“Hiçbir not girilmedi” yazdır
Fig. 4.8 Pseudocode algoritması : sınıf
ortalamasını bulmak için sonlandırıcı kontrollü
döngüs kullanılır.
Slide 22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Fig. 4.9: Ortalama2.java
// Class-average program with sentinel-controlled repetition.
import java.text.DecimalFormat; // class to format numbers
import javax.swing.JOptionPane;
public class Ortalama2 {
public static void main( String args[] )
{
int toplam;
// sum of grades
int notSayaci;
// number of grades entered
int not;
// grade value
double ortalama;
String notString;
// number with decimal point for average
// grade typed by user
// initialization phase
toplam = 0;
// initialize total
notSayaci = 0; // initialize loop counter
// processing phase
// get first grade from user
notString = JOptionPane.showInputDialog(
“Not Girişi yada Çıkış için -1 :" );
// convert gradeString to int
not = Integer.parseInt( notString );
Average2.java
Slide 23
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// loop until sentinel value read from user
while ( not != -1 ) {
toplam = toplam + not;
//loop
add until
gradegradeCounter
to total
notSayaci = notSayaci + 1; // increment counter
equals sentinel value (-1)
// get next grade from user
notString = JOptionPane.showInputDialog(
" Not Girişi yada Çıkış için -1 :" );
// convert gradeString to int
not = Integer.parseInt( notStringFormat
);
} // end while
Line 31
numbers to nearest
hundredth
// termination phase
DecimalFormat ikiDigit = new DecimalFormat( "0.00" );
// if user entered at least one grade...
if ( notSayaci != 0 ) {
// calculate average of all grades entered
ortalama = (double) toplam / notSayaci;
// display average with two digits of precision
JOptionPane.showMessageDialog( null,
“Sınıf Ortalaması " + ikiDigit.format( ortalama ),
“Sınıf Ortalaması", JOptionPane.INFORMATION_MESSAGE );
} // end if part of if...else
Average2.java
Line 45
Slide 24
60
61
62
63
64
65
66
67
68
else // if no grades entered, output appropriate message
JOptionPane.showMessageDialog( null, “Not girişi yapılmadı",
“Sınıf Ortalaması", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class Ortalama2
// terminate application
Ortalama2.java
Slide 25
4.10 Algoritmaların Tasarlanması: Örnek
Çalışma 3 (İçiçe Kontrol Yapıları)
• İçiçe kontrol yapıları
Slide 26
Gecenler ‘e 0 ilk değeri ver
Kalanlar’ a 0 ilk değeri ver
Ogrenci ‘ye 1 ilk değer ver
Sayac 10 ‘a eşit yada küçük olduğu müddetçe
Sınav sonucu gir
Eğer öğrenci geçmiş ise
Gecenlere 1 ekle
else
Kalanlara 1 ekle
Sayacı 1 artır
Kaç kişi geçtiğini yazdır
Kaç kişi kaldığını yazdır
Eğer 8 kişiden fazla kişi geçmiş ise
“Öğretim başarılı” yazdır
Fig 4.10 Pseudocode :sınav sonucu problemi için.
Slide 27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Fig. 4.11: Analysis.java
// Analysis of examination results.
import javax.swing.JOptionPane;
public class Analysis {
Loop until student counter is
greater than 10
Analysis.java
Line 19
public static void main( String args[] )
{
// initializing variables in declarations
int gecenler = 0;
// number of passes
int kalanlar = 0;
// number of failures
int sayac = 1; // student counter
int sonuc;
// one exam result
String giris;
String cikis;
// user-entered Nested
value
// output string
Line 29
control structure
// process 10 students using counter-controlled loop
while ( sayac <= 10 ) {
// prompt user for input and obtain value from user
giris = JOptionPane.showInputDialog(
"Enter result (1 = geç, 2 = kal)" );
// convert result to int
sonuc = Integer.parseInt( giris );
// if result 1, increment passes; if...else nested in while
if ( sonuc == 1 )
gecenler = gecenler + 1;
Slide 28
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
else // if result not 1, increment failures
kalanlar = kalanlar + 1;
// increment studentCounter so loop eventually terminates
sayac = sayac + 1;
} // end while
// termination phase; prepare and display results
cikis = “Geçenler: " + gecenler + "\nKalanlar: " + kalanlar;
// determine whether more than 8 students passed
if ( gecenler > 8 )
cikis = cikis + "\nÖğretim Başarılı";
JOptionPane.showMessageDialog( null, cikis,
"Analysis of Examination Results",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class Analysis
// terminate application
Analysis.java
Slide 29
4.11 Birleşik Atama Operatörleri
• Atama Operatörleri
– Kısaltılmış atama operatörleri
– Herhangi bir atama işlemi
• değişken = değişken operatör ifade;
– Şu şekilde de yazılabilir
• değişken operatör = ifade;
– Örneğin toplam atama operatörü +=
•c = c + 3
– Şu şekilde de yazılabilir
• c += 3
Slide 30
A ssig n m e n t
o p e ra t o r
A ssu m e: i n t c = 3 ,
d = 5, e = 4, f
= 6, g = 12;
+=
-=
*=
/=
%=
Sa m p le
e xp re ssio n
Exp la n a t io n
A ssig n s
c
d
e
f
g
c
d
e
f
g
1 0 to c
1 to d
2 0 to e
2 to f
3 to g
+=
-=
*=
/=
%=
7
4
5
3
9
Fig . 4 .1 2 A rit h m e t ic a ssig n m e n t o p e ra t o rs.
=
=
=
=
=
c
d
e
f
g
+
*
/
%
7
4
5
3
9
Slide 31
4.12 Artırma Azaltma Operatörleri
• Bir artırma (++)
– Değer 1 artırır.
• Bir azaltma (--)
– Değeri 1 azaltır
• Önceden artırma / önceden azaltma operatör
• Sonradan artırma / sonradan-azaltma operatör
Slide 32
O p e ra t o r
C a lle d
++
p rein crem en t
Sa m p le
e xp re ssio n
++a
++
p o stin crem en t
a++
--
p red ecre m en t
--b
--
p o std ecrem en t
b--
Exp la n a t io n
In cre m en t a b y 1 , th en u se th e n ew
v alu e o f a in th e ex p ressio n in
w h ich a resid es.
U se th e cu rren t v alu e o f a in th e
ex p ressio n in w h ich a resid es, th en
in crem en t a b y 1 .
D ecre m en t b b y 1 , th en u se th e
n ew v alu e o f b in th e ex p ressio n in
w h ich b resid es.
U se th e cu rren t v alu e o f b in th e
ex p ressio n in w h ich b resid es, th en
d ecrem en t b b y 1 .
Fig . 4 .1 3 Th e in c re m e n t a n d d e c re m e n t o p e ra t o rs.
Slide 33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
5
5
6
5
6
6
// Fig. 4.14: Increment.java
// Preincrementing and postincrementing operators.
public class Increment {
Line 13 postincrements c
public static void main( String args[] )
{
int c;
// demonstrate postincrement
c = 5;
//
System.out.println( c );
//
System.out.println( c++ ); //
System.out.println( c );
//
System.out.println();
// skip a line
// demonstrate preincrement
c = 5;
//
System.out.println( c );
//
System.out.println( ++c ); //
System.out.println( c );
//
} // end main
} // end class Increment
assign 5 to c
print 5 Line 21 preincrements
print 5 then postincrement
print 6
assign 5 to c
print 5
preincrement then print 6
print 6
Increment.java
Line 13 postincrement
Line 21 preincrement
c
Slide 34
Operators
Associativity
Type
++ -right to left
unary postfix
++ -- +
(type)
right to left
unary
*
/
%
left to right
multiplicative
+
left to right
additive
<
<= >
>=
left to right
relational
== !=
left to right
equality
?:
right to left
conditional
=
+= -= *= /= %=
right to left
assignment
Fig. 4.15 Bu zamana kadar öğrendiğimiz tüm operatörler.
Slide 35
4.13 İlkel Veri Tipleri
• Java da tüm değişkenlerin mutlaka bir veri tipi
olması lazımdır.
• Java ilkel veri tipleri
Slide 36
Ty p e
boolean
Size in b it s
V a lu e s
St a n d a rd
t r u e or f a l s e
char
16
byte
8
short
16
int
32
long
64
float
32
double
64
[N ote: T he representation of a boolean is
specific to the Java V irtu al M achine on each
com puter platform .]
' \ u 0 0 0 0 ' to ' \ u F F F F '
(IS O U nicode character set)
(0 to 65535)
– 128 to + 127
7
7
(– 2 to 2 – 1)
– 32,768 to + 32,767
15
15
(– 2 to 2 – 1)
– 2,147,483,648 to + 2,147,483,647
31
31
(– 2 to 2 – 1)
– 9,223,372,036,854,775,808 to
+ 9,223,372,036,854,775,807
63
63
(– 2 to 2 – 1)
N egative range:
(IE E E 754 floatin g point)
– 3.40282346 6 3 8 5 2 8 8 6 E + 3 8 to
– 1.40129846432481707e – 4 5
P ositive range:
1.40129846432481707e – 45 to
3.4028234663852886E + 38
N egative range:
(IE E E 754 floatin g point)
– 1.7976931348623157E + 308 to
– 4.94065645841246544e – 3 2 4
P ositive range:
4.94065645841246544e – 3 2 4 to
1.7976931348623157E + 308
Fig . 4 .1 6 Th e Ja v a p rim it iv e t y p e s.
Bölüm 4 – Kontrol İfadeleri:1.kısım
Outline
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
4.13
Giriş
Algoritmalar
Pseudocode
Kontrol İfadeleri
if tek-seçimli ifadeler
if else seçimli ifadeler
while döngü ifadeleri
Algoritmaların Tasarımı : Örnek Çalışma 1(Sayaç Kontrollü Döngüler)
Algoritmaların Tasarımı: Örnek Çalışma 2 (SonlandırcıKontrollü Döngüler)
Algoritmaların Tasarımı: Örnek Çalışma 2 (İçiçe Kontrollü
Yapılar)
Birleşik Atama Operatörleri
Artırma ve Azaltma Operatörleri
İlkel Tipler
Slide 2
4.1
Giriş
• Bu bölümde Kontrol İfadelerini öğreneceğiz.
– Yapısal programlama prensibi
– Kontrol ifadeleri objelerin yapımına yardım eder. (Chapter
8)
Slide 3
4.2
Algoritmalar
• Algoritma
– Belli bir sırada takip edilen işler
• İşler gerçekleştirilir.
• Sıra, hangi işin gerçekleştireceğini tespit eder.
• Program kontrolü
– Kontrol ifadeleri bu sıranın oluşumuna yardım eder.
Slide 4
4.3
Pseudocode
• Pseudocode (Program tasarımı)
– Algoritma geliştirmek için kullanılan esnek bir dil
– Bilgisayarda çalıştırılamaz
– Algoritmayı yapanlara kurallardan bağımsız ifade etmeyi
sağlar.
Slide 5
4.4
Kontrol İfadeleri
• Sıralı çalışma
– Program kodları baştan başlayıp satır satır çalışır.
• Kontrolün transferi
– 3 tip kontrol ifadesi bu kodlar arasında transfer sağlar.
• Sıralı yapılar
• Seçimli yapılar
• Döngüsel yapılar
• Akış diagramı
– İş akışını modeller
• İşi tanımlayan semboller
• İş sırasını gösteren oklar
Slide 6
Notu toplama ekle
Sayacı 1 artır
Java karşılığı:
toplam = toplam + not;
Java karşılığı:
sayac = sayac + 1;
Fig 4.1 Sıralı akış diyagramı.
Slide 7
Ja v a Ke y w o rd s
abstract
assert
case
catch
default
do
final
finally
implements import
long
native
protected public
strictfp
super
throw
throws
volatile
while
boolean
char
double
float
instanceof
new
return
switch
transient
break
class
else
for
int
package
short
synchronized
try
K eyw o rd s th a t a re reserved , b u t n o t cu rren tly u sed
const
goto
Fig . 4 .2
Ja v a k e y w o rd s.
byte
continue
extends
if
interface
private
static
this
void
Slide 8
4.4
Kontrol İfadeleri
• Java sıralı akışa sahiptir.
• Java 3 farklı seçim komutu sağlar.
– if
– If…else
– switch
• Java 3 farklı döngü komutu sağlar.
– while
– do…while
– do
• Bu komutların herbiri ayrılmış kelimelerdir.
Slide 9
4.5
if tek-seçimli durum
• Tek-giriş/tek-çıkış kontrol ifadeleri
• Şart doğru (true) olduğu zaman komut çalışır.
Slide 10
[not >= 60]
print “Geçti”
[not < 60]
Fig 4.3 if tek-seçimli durum iş iş akış diyagramı.
Slide 11
4.6
if…else seçimli durum
• Şart doğru (true) olduğu zaman komut çalışır.
• Şart yanlış (false) olduğu zaman başka bir
komut çalışır.
• Şart operatörü (?:)
• İçiçe if…else ifadeleri
Slide 12
[not < 60]
print “Kaldı”
[not >= 60]
print “Geçti”
Fig 4.4 if…else iki seçimli durumlar için akış diyagramı.
Slide 13
4.7
while Tekrarlama İfadeleri
• Şart doğru (true) olduğu müddetçe dögüye ait
komutları çalıştır.
Slide 14
birleşim
karar
[ürün <= 1000]
Ürün değerinin 2 katını al
[ürün > 1000]
Java karşılığı:
ürün = 2 * ürün;
Fig 4.5 while tekrarlama ifadelerinin akış dyagramı.
Slide 15
4.8 Algoritmaların Tasarlanması: Örnek
Çalışma 1 (Kontrollü Sayaç Döngüsü)
• Sayaç
– İfadelerin kaç defa tekrar ettiğini kontrol eden değişken
• Ortalama1.java not ortalamasını hesaplar.
– Döngüyü kontrol için sayaç kullanılır.
Slide 16
Toplam değişkenini sıfırla
Sayaç değişkenine 1 ata
Syaç 10 ‘a eşit yada küçük olduğu müddetçe
Diğer notu gir
Toplamı not kadar artır
Sayacı 1 artır
Toplamı 10 ‘a bölerek sınıf ortalamasına ata
Sınıf ortalamasını yazdır
Fig. 4.6 Pseudocode algoritması : sınıf ortalamasını
bulmak için kontrollü sayaç döngüsü kullanılır.
Slide 17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Fig. 4.7: Ortalama1.java
// Class-average program with counter-controlled repetition.
import javax.swing.JOptionPane;
public class Ortalama1 {
public
{
int
int
int
int
static void main(
toplam;
notSayaci;
not;
ortalama;
Declare variables;
is the counter
StringgradeCounter
args[] )
// sum of grades input by user
// number of grade to be entered next
// grade value
// average of grades
Continue looping as long as
is less than or
equal to 10
String notString; // grade typed by user
gradeCounter
// initialization phase
toplam = 0;
// initialize total
notSayaci = 1;
// initialize loop counter
// processing phase
while (notSayaci <= 10 ) {
// loop 10 times
// prompt for input and read grade from user
notString = JOptionPane.showInputDialog(
“Sayısal not girişi: " );
// convert gradeString to int
not = Integer.parseInt( notString );
Average1.java
gradeCounter
Line 21
Slide 18
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
toplam = toplam + not;
notSayaci = notSayaci + 1;
// add grade to total
// increment counter
} // end while
Average1.java
// termination phase
ortalama = toplam / 10;
// integer division
// display average of exam grades
JOptionPane.showMessageDialog( null, “Sınıf ortalaması" + ortalama,
“Sınıf Ortlaması", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class Average1
// terminate the program
Slide 19
Ortalama1.java
Slide 20
4.9 Algoritmaların Tasarlanması: Örnek
Çalışma 2 (Sonlandırıcı-Kontrollü Döngüler)
• Sonlandırıcı değer
– Veri girişini sonlandırmak amaçlı kullanılır.
• Ortalama2.java döngünün sayısı belli değil
– Kullanıcı sonlandırıcı değere (-1) basarak döngüyü
bitiriyor.
Slide 21
Toplam değişkenini sıfırla
Sayaç değişkenine 1 ata
İlk not girişi yap (sonlandırıcı değer de mümkün)
Kullanıcı sonlandırıcı değer girmediği müddetçe
Toplamı not değeri kadar artır
Sayacı 1 artır
Yeni notu gir(sonlandırcı değer de mümkün)
Eğer sayaç 0 eşit değilse
Ortalamayı toplamı sayaca bölerek bul
Ortalamayı yazdır
else
“Hiçbir not girilmedi” yazdır
Fig. 4.8 Pseudocode algoritması : sınıf
ortalamasını bulmak için sonlandırıcı kontrollü
döngüs kullanılır.
Slide 22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Fig. 4.9: Ortalama2.java
// Class-average program with sentinel-controlled repetition.
import java.text.DecimalFormat; // class to format numbers
import javax.swing.JOptionPane;
public class Ortalama2 {
public static void main( String args[] )
{
int toplam;
// sum of grades
int notSayaci;
// number of grades entered
int not;
// grade value
double ortalama;
String notString;
// number with decimal point for average
// grade typed by user
// initialization phase
toplam = 0;
// initialize total
notSayaci = 0; // initialize loop counter
// processing phase
// get first grade from user
notString = JOptionPane.showInputDialog(
“Not Girişi yada Çıkış için -1 :" );
// convert gradeString to int
not = Integer.parseInt( notString );
Average2.java
Slide 23
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// loop until sentinel value read from user
while ( not != -1 ) {
toplam = toplam + not;
//loop
add until
gradegradeCounter
to total
notSayaci = notSayaci + 1; // increment counter
equals sentinel value (-1)
// get next grade from user
notString = JOptionPane.showInputDialog(
" Not Girişi yada Çıkış için -1 :" );
// convert gradeString to int
not = Integer.parseInt( notStringFormat
);
} // end while
Line 31
numbers to nearest
hundredth
// termination phase
DecimalFormat ikiDigit = new DecimalFormat( "0.00" );
// if user entered at least one grade...
if ( notSayaci != 0 ) {
// calculate average of all grades entered
ortalama = (double) toplam / notSayaci;
// display average with two digits of precision
JOptionPane.showMessageDialog( null,
“Sınıf Ortalaması " + ikiDigit.format( ortalama ),
“Sınıf Ortalaması", JOptionPane.INFORMATION_MESSAGE );
} // end if part of if...else
Average2.java
Line 45
Slide 24
60
61
62
63
64
65
66
67
68
else // if no grades entered, output appropriate message
JOptionPane.showMessageDialog( null, “Not girişi yapılmadı",
“Sınıf Ortalaması", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class Ortalama2
// terminate application
Ortalama2.java
Slide 25
4.10 Algoritmaların Tasarlanması: Örnek
Çalışma 3 (İçiçe Kontrol Yapıları)
• İçiçe kontrol yapıları
Slide 26
Gecenler ‘e 0 ilk değeri ver
Kalanlar’ a 0 ilk değeri ver
Ogrenci ‘ye 1 ilk değer ver
Sayac 10 ‘a eşit yada küçük olduğu müddetçe
Sınav sonucu gir
Eğer öğrenci geçmiş ise
Gecenlere 1 ekle
else
Kalanlara 1 ekle
Sayacı 1 artır
Kaç kişi geçtiğini yazdır
Kaç kişi kaldığını yazdır
Eğer 8 kişiden fazla kişi geçmiş ise
“Öğretim başarılı” yazdır
Fig 4.10 Pseudocode :sınav sonucu problemi için.
Slide 27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Fig. 4.11: Analysis.java
// Analysis of examination results.
import javax.swing.JOptionPane;
public class Analysis {
Loop until student counter is
greater than 10
Analysis.java
Line 19
public static void main( String args[] )
{
// initializing variables in declarations
int gecenler = 0;
// number of passes
int kalanlar = 0;
// number of failures
int sayac = 1; // student counter
int sonuc;
// one exam result
String giris;
String cikis;
// user-entered Nested
value
// output string
Line 29
control structure
// process 10 students using counter-controlled loop
while ( sayac <= 10 ) {
// prompt user for input and obtain value from user
giris = JOptionPane.showInputDialog(
"Enter result (1 = geç, 2 = kal)" );
// convert result to int
sonuc = Integer.parseInt( giris );
// if result 1, increment passes; if...else nested in while
if ( sonuc == 1 )
gecenler = gecenler + 1;
Slide 28
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
else // if result not 1, increment failures
kalanlar = kalanlar + 1;
// increment studentCounter so loop eventually terminates
sayac = sayac + 1;
} // end while
// termination phase; prepare and display results
cikis = “Geçenler: " + gecenler + "\nKalanlar: " + kalanlar;
// determine whether more than 8 students passed
if ( gecenler > 8 )
cikis = cikis + "\nÖğretim Başarılı";
JOptionPane.showMessageDialog( null, cikis,
"Analysis of Examination Results",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class Analysis
// terminate application
Analysis.java
Slide 29
4.11 Birleşik Atama Operatörleri
• Atama Operatörleri
– Kısaltılmış atama operatörleri
– Herhangi bir atama işlemi
• değişken = değişken operatör ifade;
– Şu şekilde de yazılabilir
• değişken operatör = ifade;
– Örneğin toplam atama operatörü +=
•c = c + 3
– Şu şekilde de yazılabilir
• c += 3
Slide 30
A ssig n m e n t
o p e ra t o r
A ssu m e: i n t c = 3 ,
d = 5, e = 4, f
= 6, g = 12;
+=
-=
*=
/=
%=
Sa m p le
e xp re ssio n
Exp la n a t io n
A ssig n s
c
d
e
f
g
c
d
e
f
g
1 0 to c
1 to d
2 0 to e
2 to f
3 to g
+=
-=
*=
/=
%=
7
4
5
3
9
Fig . 4 .1 2 A rit h m e t ic a ssig n m e n t o p e ra t o rs.
=
=
=
=
=
c
d
e
f
g
+
*
/
%
7
4
5
3
9
Slide 31
4.12 Artırma Azaltma Operatörleri
• Bir artırma (++)
– Değer 1 artırır.
• Bir azaltma (--)
– Değeri 1 azaltır
• Önceden artırma / önceden azaltma operatör
• Sonradan artırma / sonradan-azaltma operatör
Slide 32
O p e ra t o r
C a lle d
++
p rein crem en t
Sa m p le
e xp re ssio n
++a
++
p o stin crem en t
a++
--
p red ecre m en t
--b
--
p o std ecrem en t
b--
Exp la n a t io n
In cre m en t a b y 1 , th en u se th e n ew
v alu e o f a in th e ex p ressio n in
w h ich a resid es.
U se th e cu rren t v alu e o f a in th e
ex p ressio n in w h ich a resid es, th en
in crem en t a b y 1 .
D ecre m en t b b y 1 , th en u se th e
n ew v alu e o f b in th e ex p ressio n in
w h ich b resid es.
U se th e cu rren t v alu e o f b in th e
ex p ressio n in w h ich b resid es, th en
d ecrem en t b b y 1 .
Fig . 4 .1 3 Th e in c re m e n t a n d d e c re m e n t o p e ra t o rs.
Slide 33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
5
5
6
5
6
6
// Fig. 4.14: Increment.java
// Preincrementing and postincrementing operators.
public class Increment {
Line 13 postincrements c
public static void main( String args[] )
{
int c;
// demonstrate postincrement
c = 5;
//
System.out.println( c );
//
System.out.println( c++ ); //
System.out.println( c );
//
System.out.println();
// skip a line
// demonstrate preincrement
c = 5;
//
System.out.println( c );
//
System.out.println( ++c ); //
System.out.println( c );
//
} // end main
} // end class Increment
assign 5 to c
print 5 Line 21 preincrements
print 5 then postincrement
print 6
assign 5 to c
print 5
preincrement then print 6
print 6
Increment.java
Line 13 postincrement
Line 21 preincrement
c
Slide 34
Operators
Associativity
Type
++ -right to left
unary postfix
++ -- +
(type)
right to left
unary
*
/
%
left to right
multiplicative
+
left to right
additive
<
<= >
>=
left to right
relational
== !=
left to right
equality
?:
right to left
conditional
=
+= -= *= /= %=
right to left
assignment
Fig. 4.15 Bu zamana kadar öğrendiğimiz tüm operatörler.
Slide 35
4.13 İlkel Veri Tipleri
• Java da tüm değişkenlerin mutlaka bir veri tipi
olması lazımdır.
• Java ilkel veri tipleri
Slide 36
Ty p e
boolean
Size in b it s
V a lu e s
St a n d a rd
t r u e or f a l s e
char
16
byte
8
short
16
int
32
long
64
float
32
double
64
[N ote: T he representation of a boolean is
specific to the Java V irtu al M achine on each
com puter platform .]
' \ u 0 0 0 0 ' to ' \ u F F F F '
(IS O U nicode character set)
(0 to 65535)
– 128 to + 127
7
7
(– 2 to 2 – 1)
– 32,768 to + 32,767
15
15
(– 2 to 2 – 1)
– 2,147,483,648 to + 2,147,483,647
31
31
(– 2 to 2 – 1)
– 9,223,372,036,854,775,808 to
+ 9,223,372,036,854,775,807
63
63
(– 2 to 2 – 1)
N egative range:
(IE E E 754 floatin g point)
– 3.40282346 6 3 8 5 2 8 8 6 E + 3 8 to
– 1.40129846432481707e – 4 5
P ositive range:
1.40129846432481707e – 45 to
3.4028234663852886E + 38
N egative range:
(IE E E 754 floatin g point)
– 1.7976931348623157E + 308 to
– 4.94065645841246544e – 3 2 4
P ositive range:
4.94065645841246544e – 3 2 4 to
1.7976931348623157E + 308
Fig . 4 .1 6 Th e Ja v a p rim it iv e t y p e s.