Materiały dodatkowe

Transkrypt

Materiały dodatkowe
Materiały dodatkowe
Prowadzący: Łukasz Dunaj, strona kółka: atinea.pl/kolko
Pętla rep
Jeśli z góry wiemy ile razy ma się wykonać pętla, to zamiast używać kontrukcji while lub for
możemy użyć pętli rep. Najlepiej zobrazować ją za pomocą poniższego programu, który wczytuje
liczbę n, a następnie wypisuje liczby od 1 do n.
use console;
def test::main() {
var n = console::readln();
rep var i (n) {
console::print(i + 1);
console::println();
}
}
Jak widać skłania pętli rep jest bardzo prosta: po słowie kluczowym rep tworzymy zmienną, która
będzie tzw. licznikiem pętli – jej wartość będzie przebiegała od 0 do n-1 (to jest bardzo ważne!).
W nawiasach okrągłych podajemy, ile razy ma się wykonać pętla – w naszym przypadku jest to n.
Ciało pętli piszemy podobnie jak w innych rodzajach pętli; możemy tam korzystać z licznika pętli
(powyżej jest to i).
Ćwiczenie
Napisz program wykorzysując pętlę rep, który wczyta liczbę n, a następnie wczyta n liczb i po
każdej wczytanej liczbie wypisze ją zwiększoną o jej numer w kolejności wczytywania, np.
Podaj
Podaj
8
Podaj
4
Podaj
8
Podaj
13
Podaj
6
n: 5
liczbę: 7
liczbę: 2
liczbę: 5
liczbę: 9
liczbę: 1
Funkcje
Funkcja jest to fragment programu, który został wydzielony, nadano mu nazwę i który możemy
wykonać poprzez podanie jego nazwy oraz ewentualnych argumentów. Dzięki funkcjom można
pisać kod lepszy, czytelniejszy i przede wszystkim łatwiejszy w utrzymaniu.
Funkcja składa się ze słowa kluczowego def, po którym następuje nazwa funkcji i jej argumenty
podane po przecinkach w nawiasie okrągłym. Aby wykonać funkcję należy napisać jej nazwę oraz
ewentualne argumenty. Każda funkcja po wykonaniu swojego ciała może "komunikować" się
z miejscem programu, gdzie została wywołana poprzez zwrócenie wartości – służy do tego słowo
kluczowe return.
Przykład wyraża więcej niż tysiąc słów, zatem poniższy kod obrazuje program z wydzieloną
funkcją sprawdzającą, czy słowo podane jako argument zawiera literę 'b' i zwracającą odpowiednio
'Tak' lub 'Nie'.
use console;
use string;
def czy_zawiera_b(argument) {
rep var i (string::length(argument)) {
if (string::get_char(argument, i) eq 'b') {
return 'Tak';
}
}
return 'Nie';
}
def test::main() {
var slowo = console::readln();
var wynik = czy_zawiera_b(slowo);
console::print(wynik);
}
Ćwiczenie
Napisz program wykorzystując funkcje, który wczyta liczbę n, a następnie wczyta n liczb i po
każdej wczytanej liczbie wypisze ile zawiera ona w swoim zapisie dziesiętnym cyfr 4 lub 2, np
Podaj
Podaj
2
Podaj
0
Podaj
1
Podaj
4
Podaj
0
Podaj
8
n: 6
liczbę: 42
liczbę: 155687
liczbę: 8754
liczbę: 25548642
liczbę: 9876531
liczbę: 44424222
Instrukcje break i continue
break;
służy do zakończenia pętli wcześniej niż wskazywałby na to warunek (wykonanie tej
instrukcji natychmiastowo przerywa wykonywanie pętli – "wyskakuje" z niej)
continue;
przerywa wykonanie obecnego przebiegu pętli i próbuje wykonać następną iterację
(instrukcje w pętli po continue są ignorowane, a program wraca na początek pętli)
Przykład 1:
Program, który wczytuje liczby od użytkownika, dopóki nie poda on liczby 42.
use console;
def test::main() {
while (true) {
var x = console::readln();
if (x == 42) {
break;
}
}
console::print('Wpisałeś 42!');
}
Przykład 2:
Program, który wypisze liczby niepodzielne przez 4 ani 3 od 1 do wczytanej liczby.
use console;
def test::main() {
var n = console::readln();
for(var i = 1; i <= n; ++i) {
if (i % 3 == 0 || i % 4 == 0) {
continue;
}
console::print(i);
console::println();
}
}

Podobne dokumenty