Kontrol Deyimleri 1

Download Report

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.