Skip to content

Commit abae259

Browse files
committed
add raw translation to section 2.2
1 parent dbf27a6 commit abae259

1 file changed

Lines changed: 63 additions & 42 deletions

File tree

data/osa-2/2-toistaminen.md

Lines changed: 63 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -6,87 +6,108 @@ title: 'Toiminnallisuuden toistaminen'
66

77
<text-box variant='learningObjectives' name='Oppimistavoitteet'>
88

9-
- Tunnet käsitteen toistolause ja osaat luoda ohjelman, joka sisältää toistolauseen.
10-
- Osaat käyttää `break`-komentoa toistolauseen suorituksen lopettamiseen ja toistolausetta seuraavaan käskyyn siirtymiseen.
11-
- Osaat käyttää `continue`-komentoa toistolauseen alkuun palaamiseen.
12-
- Osaat luoda ohjelman, joka lukee käyttäjältä syötettä kunnes käyttäjä syöttää tietynlaisen syötteen -- esim luku 0 tai merkkijono "loppu", jonka jälkeen ohjelma kertoo ennen lopettamista syötetyistä syötteistä (esim. syötteiden lukumäärä, lukujen tapauksessa summa ja keskiarvo).
9+
<!-- - Tunnet käsitteen toistolause ja osaat luoda ohjelman, joka sisältää toistolauseen. -->
10+
- You are familiar with while-loops and know how to utilize them in your program.
11+
12+
<!-- - Osaat käyttää `break`-komentoa toistolauseen suorituksen lopettamiseen ja toistolausetta seuraavaan käskyyn siirtymiseen. -->
13+
- You know how to use the `break`-command in order to break out of the while-loop and onto the next statement.
14+
15+
<!-- - Osaat käyttää `continue`-komentoa toistolauseen alkuun palaamiseen. -->
16+
- You know how to use `continue`-command to go to the beginning of the while-loop.
17+
18+
<!-- - Osaat luoda ohjelman, joka lukee käyttäjältä syötettä kunnes käyttäjä syöttää tietynlaisen syötteen -- esim luku 0 tai merkkijono "loppu", jonka jälkeen ohjelma kertoo ennen lopettamista syötetyistä syötteistä (esim. syötteiden lukumäärä, lukujen tapauksessa summa ja keskiarvo). -->
19+
- You are able to create a program that reads user inputs until a specific input is given, for example number 0 or a string "end", after which the program prints something about the given inputs (if the inputs were numbers, then the sum and the average of the numbers)
1320

1421
</text-box>
1522

16-
Tietokoneen sisältämä käskyjen suorittamiseen erikoistunut prosessori pystyy -- moderneissa tietokoneissa -- suorittamaan yli miljardi (konekielistä) käskyä sekunnissa. Tässä osassa tutustumme toistettavan ohjelmakoodin määrittelyyn toistolauseiden avulla.
23+
<!-- Tietokoneen sisältämä käskyjen suorittamiseen erikoistunut prosessori pystyy -- moderneissa tietokoneissa -- suorittamaan yli miljardi (konekielistä) käskyä sekunnissa. Tässä osassa tutustumme toistettavan ohjelmakoodin määrittelyyn toistolauseiden avulla. -->
24+
<!-- TODO Missä muodossa tulisi ilmaista? -->
25+
Computer contains a processor that can, in modern computers, process over billions of (machinecode) commands per second. In this section we will get familiar with writing program code that's going to be repeated with while-loops.
1726

18-
Motivoidaan toistolauseiden käyttöä hieman. Alla on esimerkki ohjelmasta, missä kysytään käyttäjältä viisi lukua ja lasketaan niiden summa.
27+
<!-- Motivoidaan toistolauseiden käyttöä hieman. Alla on esimerkki ohjelmasta, missä kysytään käyttäjältä viisi lukua ja lasketaan niiden summa. -->
28+
As a motivation to using while-loops, there's an example code bellow which asks five numbers from the user and calculates their sum.
1929

2030
```java
21-
Scanner lukija = new Scanner(System.in);
22-
int summa = 0;
31+
Scanner scanner = new Scanner(System.in);
32+
int sum = 0;
2333

24-
System.out.println("Syötä luku");
25-
summa = summa + Integer.valueOf(lukija.nextLine());
34+
System.out.println("Input a number: ");
35+
sum = sum + Integer.valueOf(scanner.nextLine());
2636

27-
System.out.println("Syötä luku");
28-
summa = summa + Integer.valueOf(lukija.nextLine());
37+
System.out.println("Input a number: ");
38+
sum = sum + Integer.valueOf(scanner.nextLine());
2939

30-
System.out.println("Syötä luku");
31-
summa = summa + Integer.valueOf(lukija.nextLine());
40+
System.out.println("Input a number: ");
41+
sum = sum + Integer.valueOf(scanner.nextLine());
3242

33-
System.out.println("Syötä luku");
34-
summa = summa + Integer.valueOf(lukija.nextLine());
43+
System.out.println("Input a number: ");
44+
sum = sum + Integer.valueOf(scanner.nextLine());
3545

36-
System.out.println("Syötä luku");
37-
summa = summa + Integer.valueOf(lukija.nextLine());
46+
System.out.println("Input a number: ");
47+
sum = sum + Integer.valueOf(scanner.nextLine());
3848

39-
System.out.println("Lukujen summa on " + summa);
49+
System.out.println("The sum of the numbers is " + sum);
4050
```
4151

42-
Hoitaa asian, mutta ei kovin tyylikkäästi. Entä jos ohjelman pitäisi lukea sata tai vaikkapa tuhat lukua ja tulostaa niiden summa? Entä jos ohjelman pitäisi lukea kolme lukua?
52+
<!-- Hoitaa asian, mutta ei kovin tyylikkäästi. Entä jos ohjelman pitäisi lukea sata tai vaikkapa tuhat lukua ja tulostaa niiden summa? Entä jos ohjelman pitäisi lukea kolme lukua? -->
53+
It does the trick, but not quite elegantly. What if the program had to read one hundred or perhaphs one thousand numbers and print their sum? What if the program had to read only three numbers?
4354

44-
Tämän ongelman voi ratkaista toistolauseella, joka pitää kirjaa sekä summasta että lukemiskerroista. Viiden luvun summan tulostava toistolauseella toteutettava ohjelma näyttää seuraavalta.
55+
<!-- Tämän ongelman voi ratkaista toistolauseella, joka pitää kirjaa sekä summasta että lukemiskerroista. Viiden luvun summan tulostava toistolauseella toteutettava ohjelma näyttää seuraavalta. -->
56+
This problem can be solved with a while-loop, which keeps track of both the sum and the amount of read numbers. The program that prints the sum of five numbers looks now as follows
4557

4658
```java
47-
Scanner lukija = new Scanner(System.in);
59+
Scanner scanner = new Scanner(System.in);
4860

49-
int luettujaLukuja = 0;
50-
int summa = 0;
61+
int numbersRead = 0;
62+
int sum = 0;
5163

5264
while (true) {
53-
if (luettujaLukuja == 5) {
65+
if (numbersRead == 5) {
5466
break;
5567
}
5668

57-
System.out.println("Syötä luku");
58-
summa = summa + Integer.valueOf(lukija.nextLine());
59-
luettujaLukuja = luettujaLukuja + 1;
69+
System.out.println("Input number");
70+
sum = sum + Integer.valueOf(scanner.nextLine());
71+
numbersRead = numbersRead + 1;
6072
}
6173

62-
System.out.println("Lukujen summa on " + summa);
74+
System.out.println("The sum of the numbers is " + sum);
6375
```
6476

65-
Tutustutaan seuraavaksi toistolauseisiin.
77+
<!-- Tutustutaan seuraavaksi toistolauseisiin. -->
78+
Next, we will get familiar with while-loops.
6679

67-
## Toistolause ja ikuinen toisto
68-
69-
Toistolause sisältää lausekkeen, jonka perusteella päätellään jatketaanko toistoa, sekä lohkon, joka sisältää toistettavan lähdekoodin. Toistolauseen muoto on seuraava.
80+
<!-- ## Toistolause ja ikuinen toisto -->
81+
## While-loop and infinite loop
82+
<!-- Toistolause sisältää lausekkeen, jonka perusteella päätellään jatketaanko toistoa, sekä lohkon, joka sisältää toistettavan lähdekoodin. Toistolauseen muoto on seuraava. -->
83+
The while-loop contains a statement which determines if the code within the loop should be repeated. The form of a while-loop is as follows
7084

7185
```java
72-
while (_lauseke_) {
73-
// aaltosuluilla rajatun lohkon sisältö
74-
// lohkossa voi olla käytännössä
75-
// rajaton määrä sisältöä
86+
while (_statement_) {
87+
// TODO häh?
88+
//* aaltosuluilla rajatun lohkon sisältö
89+
//* lohkossa voi olla käytännössä
90+
//* rajaton määrä sisältöä
91+
92+
// The content of the block surrounded by curly brackets
93+
// the block can have practically endless amount of content
7694
}
7795
```
7896

79-
Käytämme toistaiseksi lausekkeena `true`-arvoa, eli boolean-tyyppista arvoa "totta". Tämä tarkoittaa sitä, että toistolauseen toistamista jatketaan aina kun ohjelma on tilantessa, missä selvitetään tuleeko toistolauseen suoritusta jatkaa. Tämä tapahtuu sekä silloin kun ohjelman suoritus päätyy toistolauseeseen ensimmäistä kertaa että silloin kun ohjelman suoritus päätyy toistolauseen lohkon loppuun.
80-
81-
Toistolauseen suoritus etenee askeleittain lause kerrallaan. Seuraava ohjelma tulostaa merkkijonoa _osaan ohjelmoida!_ ikuisesti eli "äärettömän monta kertaa":
97+
<!-- Käytämme toistaiseksi lausekkeena `true`-arvoa, eli boolean-tyyppista arvoa "totta". Tämä tarkoittaa sitä, että toistolauseen toistamista jatketaan aina kun ohjelma on tilantessa, missä selvitetään tuleeko toistolauseen suoritusta jatkaa. Tämä tapahtuu sekä silloin kun ohjelman suoritus päätyy toistolauseeseen ensimmäistä kertaa että silloin kun ohjelman suoritus päätyy toistolauseen lohkon loppuun. -->
98+
<!-- TODO Muokkaa "execution of the program first ..." parempaan muotoon -->
99+
We will use the value `true` as the while-loop's statement. This means that the while-loop always decides to repeat when it enters the statement. This happens when the execution of the program first arrives to the while-loop statement and also when it's at the end of the while-loop block.
82100

101+
<!-- Toistolauseen suoritus etenee askeleittain lause kerrallaan. Seuraava ohjelma tulostaa merkkijonoa _osaan ohjelmoida!_ ikuisesti eli "äärettömän monta kertaa": -->
102+
The execution of while-loop proceeds line by line. The following outputs _I can program_ infite amount of time.
83103
```java
84104
while (true) {
85-
System.out.println("osaan ohjelmoida!");
105+
System.out.println("I can program!");
86106
}
87107
```
88108

89-
Ikuisen toiston sisältävä ohjelma ei sammu itsestään. Ohjelman sammutus tapahtuu NetBeansissa tulostusikkunan vasemmalla puolella olevaa punaista nappia painamalla.
109+
<!-- Ikuisen toiston sisältävä ohjelma ei sammu itsestään. Ohjelman sammutus tapahtuu NetBeansissa tulostusikkunan vasemmalla puolella olevaa punaista nappia painamalla. -->
110+
The program that runs infinitely does not close on its own. The program can be closed from the red square button located in the Netbean's output window.
90111

91112

92113
## Toistolauseen päättäminen

0 commit comments

Comments
 (0)