I200:Juhtimisstruktuurid: Difference between revisions

From ICO wiki
Jump to navigationJump to search
 
(8 intermediate revisions by the same user not shown)
Line 12: Line 12:
{| border="1" style="border-collapse:collapse"
{| border="1" style="border-collapse:collapse"
!  
!  
! if
! style="font-size: 3em; padding: 1em;" | if
! switch
! style="font-size: 3em; padding: 1em;" | switch
! try-catch
! style="font-size: 3em; padding: 1em;" | try-catch
|-
|-
! eesmärk
! style="font-size: 1.3em; padding: 0.5em;" | point
| Teha programmis keeruliste tingimustega valikuid (==, !=, <=)
| Teha programmis keeruliste tingimustega valikuid (==, !=, <=)
| Teha paljude variantidega, aga lihtsama tingimusega (ainult ==), valikuid.
| Teha paljude variantidega, aga lihtsama tingimusega (ainult ==), valikuid.
| Try-catch on nagu if-else, ainult, et on mõeldud veaohtlike koodijuppidele.
| Try-catch on nagu if-else, ainult, et on mõeldud veaohtlike koodijuppidele.
|-
|-
! näidis ülesanne
! style="font-size: 1.3em; padding: 0.5em;" | näiteks
| Kui punkte on 50 või rohkem, saab tudeng ainest läbi. Kui on vähem, siis ei saa.
| Kui punkte on 50 või rohkem, saab tudeng ainest läbi. Kui on vähem, siis ei saa.
| Järgmise aasta ilmateade: kui on suvi, paistab päike; kui on talv, sajab lund, kevadel ja sügisel sajab vihma.
| Järgmise aasta ilmateade: kui on suvi, paistab päike; kui on talv, sajab lund, kevadel ja sügisel sajab vihma.
| Loe kõvakettalt fail üles, kui millegipärast toiming ebaõnnestub, anna sellest teada.
| Loe kõvakettalt fail üles, kui millegipärast toiming ebaõnnestub, anna sellest teada.
|-
|-
! näite lahendus
! style="font-size: 1.3em; padding: 0.5em;" | näide<br/>koodis
|  
|  
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
Line 71: Line 71:
{| border="1" style="border-collapse:collapse"
{| border="1" style="border-collapse:collapse"
!  
!  
! while
! style="width: 20%; font-size: 3em; padding:1em;" | while
! for
! style="width: 20%; font-size: 3em; padding:1em;" | for
! foreach
! style="width: 20%; font-size: 3em; padding:1em;" | foreach
! do..while
! style="width: 20%; font-size: 3em; padding:1em;" | do..while
|-
|-
! eesmärk
! style="font-size: 1.3em; padding:0.5em;" | point
| Korrata koodi kuni tingimus on tõene
| Korrata koodi kuni tingimus on tõene
| Korrata koodi x arv kordi
| Korrata koodi x arv kordi
| Käia tsükliga läbi mõni andmete kogum (nt. massiiv)
| Käia tsükliga läbi mõni andmete kogum (nt. massiiv)
| Korrata koodi kuni tingimus on tõene, aga vähemalt ühe korra.
| Identne while tsükliga, aga käiatakse vähemalt ühe korra, sest tingimuse kontrollimine toimub lõpus.
|-
|-
! prindi numbrite jada 1-10
! style="font-size: 1.3em; padding:0.5em;" | prindi numbrite<br/>jada 1-10
|  
|  
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
int count = 0;
while (count < 10) {
while (count < 10) {
     System.out.println(count + 1);
     System.out.println(count + 1);
     count = count + 1;
     count = count + 1;
}
}
for (int i = 0; i < 10; i++) {
    System.out.println(i + 1);
}
int count = 0;
do {
    System.out.println(count + 1);
    count = count + 1;
} while (count < 10);
</syntaxhighlight>
</syntaxhighlight>
|  
|  
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
while (count < 10) {
    System.out.println(count + 1);
    count = count + 1;
}
for (int i = 0; i < 10; i++) {
for (int i = 0; i < 10; i++) {
     System.out.println(i + 1);
     System.out.println(i + 1);
}
}
int count = 0;
do {
    System.out.println(count + 1);
    count = count + 1;
} while (count < 10);
</syntaxhighlight>
</syntaxhighlight>
| X
| X
|  
|  
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
while (count < 10) {
    System.out.println(count + 1);
    count = count + 1;
}
for (int i = 0; i < 10; i++) {
    System.out.println(i + 1);
}
int count = 0;
int count = 0;
do {
do {
Line 130: Line 107:
</syntaxhighlight>
</syntaxhighlight>
|-
|-
! Prindi välja väärtused massiivist <syntaxhighlight lang="Java">String[] m = {"olen", "lihtne", "ülesanne"};</syntaxhighlight>
! style="font-size: 1.3em; padding:0.5em;" | Prindi välja väärtused massiivist<br/><syntaxhighlight lang="Java">String[] m = {
    "olen",
    "lihtne",
    "ülesanne"
};</syntaxhighlight>
|  
|  
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
Line 138: Line 119:
     count = count + 1;
     count = count + 1;
}
}
for (int i = 0; i < m.length; i++) {
    System.out.println(m[i]);
}
for (String s : m) {
    System.out.println(s);
}
int count = 0;
do {
    System.out.println(m[count]);
    count = count + 1;
} while (count < m.length);
</syntaxhighlight>
</syntaxhighlight>
|  
|  
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
int count = 0;
while (count < m.length) {
    System.out.println(m[count]);
    count = count + 1;
}
for (int i = 0; i < m.length; i++) {
for (int i = 0; i < m.length; i++) {
     System.out.println(m[i]);
     System.out.println(m[i]);
}
}
for (String s : m) {
    System.out.println(s);
}
int count = 0;
do {
    System.out.println(m[count]);
    count = count + 1;
} while (count < m.length);
</syntaxhighlight>
</syntaxhighlight>
|  
|  
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
int count = 0;
while (count < m.length) {
    System.out.println(m[count]);
    count = count + 1;
}
for (int i = 0; i < m.length; i++) {
    System.out.println(m[i]);
}
for (String s : m) {
for (String s : m) {
     System.out.println(s);
     System.out.println(s);
}
}
int count = 0;
do {
    System.out.println(m[count]);
    count = count + 1;
} while (count < m.length);
</syntaxhighlight>
</syntaxhighlight>
|  
|  
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
int count = 0;
while (count < m.length) {
    System.out.println(m[count]);
    count = count + 1;
}
for (int i = 0; i < m.length; i++) {
    System.out.println(m[i]);
}
for (String s : m) {
    System.out.println(s);
}
int count = 0;
int count = 0;
do {
do {

Latest revision as of 14:30, 16 April 2015

Juhtimisstruktuurid on programmeerija põhilised tööriistad, nagu ehitajal on haamer ja kruvikeeraja. Siin käsitleme kahte liiki: "kui" ja "kuni", ehk "kui" tingimus on täidetud käitu sedasi ja "kuni" tingimus on täidetud käitu sedasi. Muud neil vahet polegi, kui ühed juhivad programmi kulgemist vaid ühe korra ja teised panevad ühe koodi jupi tsükliliselt kordama.

"Kui" tüüpi juhtimisstruktuurid on if, switch ja try-catch. "Kuni" tüüpi tsüklid on while, for, foreach ja do..while.

"Kui" tüüpi hargnevused

Üldiselt kasutad tõenäoliselt if tingimust. Teisi kasutad pigem siis, kui eraldi vajadus tekib.


if switch try-catch
point Teha programmis keeruliste tingimustega valikuid (==, !=, <=) Teha paljude variantidega, aga lihtsama tingimusega (ainult ==), valikuid. Try-catch on nagu if-else, ainult, et on mõeldud veaohtlike koodijuppidele.
näiteks Kui punkte on 50 või rohkem, saab tudeng ainest läbi. Kui on vähem, siis ei saa. Järgmise aasta ilmateade: kui on suvi, paistab päike; kui on talv, sajab lund, kevadel ja sügisel sajab vihma. Loe kõvakettalt fail üles, kui millegipärast toiming ebaõnnestub, anna sellest teada.
näide
koodis
int punkte = 55;
if (punkte >= 50) {
    System.out.println("tudeng sai ainest läbi");
} else {
    System.out.println("tudeng ei saanud ainest läbi");
}
String aastaaeg = "kevad";
switch (aastaaeg) {
    case "talv":
        System.out.println("Sajab lund");
        break;
    case "suvi":
        System.out.println("Päike");
        break;
    case "kevad": // kevade ja sügise tulemus on sama
    case "sügis":
        System.out.println("Sajab vihma");
        break;
}
BufferedReader br;
try {
    br = new BufferedReader(new FileReader("file.txt"));
} catch (FileNotFoundException e) {
    System.out.println("Faili ei loetud, sest:");
    e.printStackTrace(); // prindib detailse errori
}

"Kuni" tüüpi tsüklid

Kui programmil on vaja nüüd mitte lihtsalt hargneda (otsus langetada) vaid ühte koodijuppi käiata kümneid või isegi tuhandeid kordi, siis on tsüklid selle jaoks. While tsükkel on selles mõttes universaalne, et sellega saab kõike teha, mida teistegagi. Teiste tsüklite mõte on lihtsustada kindlaid igapäevaseid toiminguid. Näiteks kui sul on vaja just numbritega mängida, siis saad for tsükliga kiiremini asja tehtud. Kui soovid massiivi väärtustega tegeleda, on foreach ideaalne.


while for foreach do..while
point Korrata koodi kuni tingimus on tõene Korrata koodi x arv kordi Käia tsükliga läbi mõni andmete kogum (nt. massiiv) Identne while tsükliga, aga käiatakse vähemalt ühe korra, sest tingimuse kontrollimine toimub lõpus.
prindi numbrite
jada 1-10
int count = 0;
while (count < 10) {
    System.out.println(count + 1);
    count = count + 1;
}
for (int i = 0; i < 10; i++) {
    System.out.println(i + 1);
}
X
int count = 0;
do {
    System.out.println(count + 1);
    count = count + 1;
} while (count < 10);
Prindi välja väärtused massiivist
String[] m = {
    "olen",
    "lihtne",
    "ülesanne"
};
int count = 0;
while (count < m.length) {
    System.out.println(m[count]);
    count = count + 1;
}
for (int i = 0; i < m.length; i++) {
    System.out.println(m[i]);
}
for (String s : m) {
    System.out.println(s);
}
int count = 0;
do {
    System.out.println(m[count]);
    count = count + 1;
} while (count < m.length);