2013 Język maszyn zeszyt ćwiczeń mgr Agnieszka Antas-Kucypera & mgr Łukasz Jastrzębski Wrocław 2013
Spis treści I. Kształty 3 II. Paczki 5 III. Pętle 12 IV. Instrukcja warunkowa 16 V. Funkcje 17 VI. BRUDNOPIS 27 str. 2
I. Kształty Ćwiczenie 1.1 Wydaj mrówce rozkaz narysowania kształtów takich jak na rysunkach poniżej. Wskazówki: Instrukcja ^xl obraca mrówkę o x stopni w lewo, po wykonaniu tej operacji l- powoduje obrót mrówki o x stopni w lewo. Mrówka ma specjalną zdolność do klonowania się. Służą do tego dwa polecenia: { i }. Polecenie { każe mrówce wykonać swoją kopię, nazwijmy ją mrówką-córką. Mrówka-matka w tym momencie zastyga w bezruchu. Kolejne polecenia dotyczyć będą tylko mrówki-córki. Poleceniem } możemy zakończyć pracę mrówki-córki, która natychmiast wyparowuje. Wtedy mrówka-matka kontynuuje swoją pracę jakby nic się nie stało. Dla wygody warto mieć możliwość ustawienia nowej długości kroku. Służy do tego polecenie x. Ustawia ono nową długość kroku poprzez wymnożenie dotychczasowej długości przez współczynnik x.. Rysunek 1.1 Rysunek 1.2 Rysunek 1.3 Rysunek 1.4 Rysunek 1.5 Rysunek 1.6 str. 3
Rysunek 1.7 Rysunek 1.8 Rysunek 1.9 Rysunek 1.10 Rysunek 1.11 Rysunek 1.12 Rysunek 1.13 Rysunek 1.14 Rysunek 1.15 Rysunek 1.16 Rysunek 1.17 Rysunek 1.18 str. 4
II. Paczki Ćwiczenie 2.1 Rysunek 2.1 Wykorzystując poznane kształty z Ćwiczenia 1.1, zdefiniuj paczki o nazwie Wzor1, Wzor2, Wzor3, które wydadzą mrówce rozkaz narysowania wzorów jak na rysunkach poniżej. Rysunek 2.2 Rysunek 2.3 str. 5
Ćwiczenie 2.2 Rysunek 2.4 Wiedząc, że instrukcja ^x powoduje obrót mrówki o x stopni zapisz paczkę o nazwie trojkat, która wyda mrówce rozkaz narysowania trójkąta równobocznego jak na Rysunku 2.4. Ćwiczenie 2.3 Paczka kwadrat zdefiniowana jest następująco: kwadrat = 'FlFlFlFl' Sprawdź, co zrobi mrówka gdy wydasz jej następujący rozkaz: kwadraty = [kwadrat, 'f', kwadrat] mrowkago(kwadraty) Ćwiczenie 2.4 Zdefiniuj paczkę domy, która wyda mrówce rozkaz narysowania 3 domków jak na Rysunku 2.5. Każdy następny domek jest większy od poprzedniego. Następnie zdefiniuj paczkę domki, która wyda mrówce rozkaz narysowania 6 domków jak na Rysunku 6. Rysunek 2.5 str. 6
Rysunek 2.6 Ćwiczenie 2.5 Skorzystaj z paczki trojkat zdefiniowanej w Ćwiczeniu 2.2 i zapisz paczkę trojkaty, która wyda mrówce rozkaz narysowania trzech trójkątów tak jak na Rysunku 2.7. Rysunek 2.7 Ćwiczenie 2.6 Wykorzystaj paczkę trojkaty z poprzedniego ćwiczenia do zdefiniowania paczki wzorek, która wyda mrówce rozkaz narysowania wzoru jak na Rysunku 2.8. str. 7
Rysunek 2.8 Ćwiczenie 2.7 Wykorzystaj paczkę trojkaty z Ćwiczenia 2.5 do zdefiniowania paczki wzorek2, która wyda mrówce rozkaz narysowania wzoru jak na Rysunku 2.9. Rysunek 2.9 Ćwiczenie 2.8 Wykorzystaj paczkę trojkat z Ćwiczenia 2.2 do zdefiniowania paczki wzorek3, która wyda mrówce rozkaz narysowania wzoru jak na Rysunku 2.10. str. 8
Rysunek 2.10 Ćwiczenie 2.9 Wykorzystaj paczkę trojkat z Ćwiczenia 2.2 do zdefiniowania paczki wzorek4, która wyda mrówce rozkaz narysowania wzoru jak na Rysunku 2.11. Rysunek 2.11 Ćwiczenie 2.10 Zdefiniuj paczkę gwiazda, która wyda mrówce rozkaz narysowania gwiazdy jak na Rysunku 2.12. str. 9
Rysunek 2.12 Ćwiczenie 2.11 Zdefiniuj paczki, które wykorzystasz do wydania mrówce rozkazu narysowania zamku jak na Rysunku 2.13. Rysunek 2.13 Wskazówka: Podziel rysunek na części definiując na przykład paczki: kwadrat, prostokat1, prostokat2, wieza. Następnie wykorzystaj te paczki do wydania mrówce rozkazu narysowania zamku. str. 10
Ćwiczenie 2.12 Zdefiniuj paczkę o nazwie prostokat, która wyda mrówce rozkaz narysowania prostokąta o boku długości 2 oraz boku długości 1. Następnie wykorzystaj paczkę prostokat do zdefiniowania paczki chodnik, która wyda mrówce rozkaz narysowania poniższego rysunku. Rysunek 2.14 str. 11
III. Pętle Ćwiczenie 3.1 Zapisz paczkę domek, która wyda mrówce rozkaz narysowania domku jak na Rysunku 1. Zadbaj o to, aby w skład paczki domek wchodziła paczka prostokat oraz paczka trojkat. Rysunek 3.1 Ćwiczenie 3.2 Wykorzystując paczkę domek z Ćwiczenia 3.1 i wydaj mrówce rozkaz narysowania poniższego obrazka. W zapisie rozkazu wykorzystaj pętlę. Rysunek 3.2 str. 12
Ćwiczenie 3.3 Wykorzystując paczkę domek z Ćwiczenia 3.1 zapisz za pomocą pętli rozkaz dla mrówki narysowania poniższego obrazka. Rysunek 3.3 Ćwiczenie 3.4 Wykorzystując paczkę domek z Ćwiczenia 3.1 zapisz za pomocą pętli rozkaz dla mrówki narysowania poniższego obrazka. str. 13
Rysunek 3.4 Ćwiczenie 3.5 Wydaj mrówce rozkaz narysowania poniższego obrazka. Podziel zadanie na podzadania, wykorzystaj paczki i pętlę. Rysunek 3.5 Ćwiczenie 3.6 Wydaj mrówce rozkaz narysowania poniższego obrazka. Podziel zadanie na podzadania, wykorzystaj paczki i pętlę str. 14
Rysunek 3.6 str. 15
IV. Instrukcja warunkowa Ćwiczenie 4.1 Zapisz instrukcję, która wylosuje liczbę z przedziału [1,3], a następnie wygeneruje dla mrówki rozkaz: - jeśli wylosowana zostanie liczba 1 mrówka narysuje trójkąt równoboczny o boku długości 2 - jeśli wylosowana zostanie liczba 2 mrówka narysuje kwadrat o boku długości 2 - jeśli wylosowana zostanie liczba 3 mrówka narysuje prostokąt o bokach długości 2 oraz 3 str. 16
V. Funkcje Ćwiczenie 5.1 Zapisz funkcję o nazwie kwadrat(a), która wyda mrówce rozkaz narysowania kwadratu o boku długości a. Przykładowe rozwiązanie function kwadrat (a) bok = '' for i=1:a bok = [bok 'F'] end kw = [bok 'l' bok 'l' bok 'l' bok 'l'] mrowkago(kw) end Ćwiczenie 5.2 Zapisz funkcję o nazwie prostokat(a,b), która wyda mrówce rozkaz narysowania prostokąta o bokach długości a i b. Ćwiczenie 5.3 Zapisz funkcję o nazwie rozeta1(n), która wyda mrówce rozkaz narysowania poniższego obrazka (po narysowaniu kwadratu o boku długości 2 mrówka obraca się o 10 stopni i rysuje następny kwadrat, kwadratów na rysunku jest n). Rysunek 5.1 158 159 160 161 162 163 164 165 Rysunek dla wywołania rozeta1(4) str. 17
Wywołaj funkcję rozeta1 dla parametru n = 36. Ćwiczenie 5.4 Zapisz funkcję o nagłówku rozeta2(n), która wyda mrówce rozkaz narysowania poniższego obrazka (po narysowaniu trójkąta równobocznego o boku długości 2 mrówka obraca się o 10 stopni i rysuje następny trójkąt; trójkątów na rysunku jest n). Rysunek 5.2 174 175 176 177 178 179 180 181 Rysunek dla wywołania rozeta2(3) 182 Wywołaj funkcję rozeta2 dla parametru n = 36. Ćwiczenie 5.5 Zapisz funkcję o nazwie rozeta3(n), która wyda mrówce rozkaz narysowania poniższego obrazka (po narysowaniu prostokąta o bokach długości 2 oraz 3 mrówka obraca się o 20 stopni i rysuje następny prostokąt; prostokątów na rysunku jest n). Rysunek 5.3 190 191 192 193 194 195 196 Rysunek dla wywołania rozeta3(4) str. 18
Wywołaj funkcję rozeta3 dla parametru n = 18. Ćwiczenie 5.6 Zapisz funkcję o nazwie rozeta4(n), która wyda mrówce rozkaz narysowania poniższego obrazka, po narysowaniu domku mrówka obraca się o 20 stopni. Rysunek 5.4 203 204 205 206 207 208 209 210 Rysunek dla wywołania rozeta4(5) Wywołaj funkcję rozeta4 dla parametru n = 18. Czy otrzymałeś poniższy rysunek? Rysunek 5.5 211 str. 19
Ćwiczenie 5.7 Zapisz funkcję o nazwie rozeta5(n), która wyda mrówce rozkaz narysowania poniższego obrazka. Po narysowaniu flagi mrówka obraca się o 20 stopni. Rysunek 5.6 221 222 223 224 225 226 227 228 Rysunek dla wywołania rozeta5(5) 229 230 Po wywołaniu funkcji rozeta5(18) powinieneś otrzymać poniższy rysunek. Rysunek 5.7 str. 20
Zmień wymiar kąta o jaki obraca się mrówka na 10 stopni i wywołaj funkcję rozeta5 dla parametru n = 36. Czy otrzymałeś poniższy obrazek? Rysunek 5.8 Zmniejsz kąt o jaki obraca się mrówka i wywołaj funkcję rozeta5 dla odpowiedniego parametru n. Ćwiczenie 5.8 Zapisz funkcję o nazwie kwadraty(a,n), która wyda mrówce rozkaz narysowania poniższego obrazka. Pierwszy kwadrat jaki został narysowany ma bok długości a, każdy następny kwadrat ma bok o 2 większy od poprzedniego, kwadratów na rysunku jest n. Rysunek 5.9 245 246 247 248 249 250 251 252 253 Rysunek dla wywołania kwadraty(1,5) 254 str. 21
Ćwiczenie 5.9 Zapisz funkcję o nazwie spirala1(a,n), która wyda mrówce rozkaz narysowania spirali jak na Rysunku 8, gdzie początkowy bok spirali ma długość a, a każdy następny jest od poprzedniego dłuższy o 1, kąt wewnętrzny spirali wynosi 60 stopni, n określi liczbę boków spirali do narysowania. Rysunek 5.10 262 263 264 265 266 267 268 269 Rysunek dla wywołania spirala1(1,14) 270 Ćwiczenie 5.10 Zapisz funkcję o nazwie spirala2(a,n), która wyda mrówce rozkaz narysowania spirali jak na Rysunku 9, gdzie dwa pierwsze jej boki mają długość a, a każde następne dwa są o 1 dłuższe od poprzednich, kąt wewnętrzny spirali wynosi 90 stopni, n określa ile par boków ma zostać narysowanych. Rysunek 5.11 277 278 279 280 281 282 283 284 Rysunek dla wywołania spirala2(1,7) 285 str. 22
Ćwiczenie 5.11 Zapisz funkcję o nazwie kwadraty2(a,n), która wyda mrówce rozkaz narysowania kwadratów jak na Rysunku 10, gdzie pierwszy kwadrat ma bok o długości a, a każdy następny kwadrat ma bok o 2 dłuższy od poprzedniego, kwadratów na rysunku jest n. Rysunek 5.12 293 294 295 296 297 298 299 300 301 Rysunek dla wywołania kwadraty2(1,10) 302 Ćwiczenie 5.12 Zapisz funkcję o nazwie kwadraty3(a,n), która wyda mrówce rozkaz narysowania kwadratów jak na Rysunku 11, gdzie pierwszy kwadrat ma bok długości a, a każdy następny kwadrat ma bok o 1 dłuższy od poprzedniego, kwadratów na rysunku jest n. Rysunek 5.13 309 310 311 312 313 314 315 316 317 Rysunek dla wywołania kwadraty1(2,5) 318 str. 23
Ćwiczenie 5.13 Zapisz funkcję o nazwie taniec(), która wyda mrówce rozkaz narysowania kroków opisanych następująco: przed każdym poruszeniem się mrówka rzuca kostką, gdy wypadnie: 1 lub 6 - mrówka idzie do przodu o jeden krok i zostawia ślad 2 - mrówka idzie do przodu o jeden krok i nie zostawia śladu 3 - mrówka obraca się w prawo 4 - mrówka obraca się w lewo 5 - mrówka nie robi nic Taniec mrówki kończy się gdy mrówka stojąc w miejscu wykona pełny obrót. Ćwiczenie 5.14 Zapisz funkcję o nazwie kwadraty(), która wyda mrówce rozkaz narysowania kwadratów. Mrówka przed każdym narysowaniem kwadratu rzuca kostką, rysuje kwadrat tylko wtedy gdy wypadnie liczba nieparzysta, kończy rysowanie gdy suma wszystkich wylosowanych liczb jest podzielna przez 6. Rysunek 5.14 Kolejno zostały wylosowane liczby: 4, 1, 3, 2, 6, 5, 4, 6, 3, 1, 2, 3, 2. Wśród tych liczb jest 6 liczb nieparzystych dlatego narysowanych jest sześć kwadratów. Suma wylosowanych liczb wynosi 42 i jest podzielna przez 6 dlatego mrówka zakończyła rysowanie. Ćwiczenie 5.15 Zapisz funkcję o nazwie piramida(n), która wyda mrówce rozkaz narysowania piramidy. W podstawie piramidy znajduje się n (podanych jako parametr) prostokątów, w każdym następnym rzędzie jest o jeden prostokąt mniej. Rysunek 5.15 344 345 346 347 348 Rysunek dla wywołania piramida(10) str. 24
Ile zostanie narysowanych prostokątów dla wywołania funkcji piramida z parametrem n = 10? Zapisz ile zostanie narysowanych prostokątów dla wywołania funkcji piramida z dowolnym parametrem n będącym liczbą naturalną. Wzór uzależnij od n. Ćwiczenie 5.16 Poniższe spirale zostały narysowane za pomocą tej samej funkcji, różnią się jedynie kątem o jaki obraca się mrówka. Zapisz funkcję o nazwie spirala(n), która wyda mrówce rozkaz narysowania spirali jak na rysunku poniżej. Rysunek 5.16 Rysunek 5.17 Rysunek dla wywołania spirala(100) Rysunek dla wywołania spirala(100) Rysunek 5.18 Rysunek 5.19 Rysunek dla wywołania spirala(100) Rysunek dla wywołania spirala(100) str. 25
Przykładowe rozwiązanie function spirala(a) bok = 'F' rozkaz = '' for i=1:a end rozkaz = [rozkaz bok '^80l'] bok = [bok 'F'] mrowkago(rozkaz) end Kolejne spirale z Rysunku 14 zostały narysowane dla obrotu mrówki o kąt: - 80 stopni w lewo - 160 stopni w lewo - 175 stopni w lewo - 145 stopni w lewo Ćwiczenie 5.17 Zapisz funkcję o nazwie graj(), która wylosuje trzy liczb całkowitych z przedziału [1,3]. Jeśli wylosowane zostaną trzy takie same liczby funkcja wypisze komunikat "WYGRAŁEŚ", w przeciwnym razie wypisze komunikat "PRZEGRAŁEŚ". Ćwiczenie 5.17 Zapisz funkcję o nazwie lotto(), która wylosuje 6 różnowartościowych liczb całkowitych z przedziału [1,49]. str. 26
VI. BRUDNOPIS str. 27
BRUDNOPIS str. 28
BRUDNOPIS str. 29
BRUDNOPIS str. 30
BRUDNOPIS str. 31