Ćwiczenia w wykorzystywaniu pętli.

Witaj! Minęło już sporo czasu odkąd obiecałem Ci post, w którym zajmiemy się ćwiczeniami w wykorzystywaniu pętli i pozostałych instrukcji sterujących. Zdaję sobie sprawę, że obecna aura pogodowa nie sprzyja umysłowym wysiłkom, jednak wierzę, że wspólnie damy radę! Zadania, które dla Ciebie zebrałem i przygotowałem podzieliłem na cztery poziomy o rosnącej trudności. Aby móc rozwiązać te zadania, musisz mieć opanowane zagadnienia, które prezentowałem w poprzednich częściach kursu. Czasami pojawią się zagadnienia, które mogą być dla Ciebie nowe, wtedy wyjaśnię je pokrótce. Wyszukiwanie dodatkowych informacji na takie tematy jak trójkąt Pascala również nie będzie oszukiwaniem, wręcz zachęcam Cię do takiego poszerzenia swojej wiedzy. 😉

Zadania, które znajdziesz poniżej możesz spotkać w czasie studiowania, na przedmiotach związanych z podstawą algorytmiki lub programowania. Dlatego może Ci się wydawać, że przykłady te są mało praktyczne i nie warto się nimi zajmować. Cóż, nawet jeśli te przykłady faktycznie przydadzą Ci się głównie przy zaliczeniu przedmiotów na studiach, to umiejętność budowania algorytmów i rozwiązywania problemów matematycznych jest już bardzo ważną umiejętnością praktyczną. Przykładowo, często jest ona weryfikowana w procesie rekrutacji do pracy na stanowiska związane z inżynierią oprogramowania za pomocą testów, na przykład na platformie Codility. Dlatego warto popracować nad tymi umiejętnościami już na samym początku przygody z programowaniem. Dodatkowo, zadania tego typu są doskonałym treningiem mózgu, co może pozytywnie wpłynąć na zdrowie. Mam nadzieję, że czujesz się teraz pełen energii i motywacji do podjęcia wyzwania, zaczynajmy więc!

Poziom 1 – Nowicjusz

Zadania na tym poziomie wymagają od Ciebie podstawowego zrozumienia działania i opanowania składni trzech typów pętli. Wykorzystasz tę wiedzę do wykonania absolutnie podstawowych zadań.

1. Wypisywanie pierwszych 10 liczb naturalnych (od 1 do 10) za pomocą 3 typów pętli.

Wykorzystaj wszystkie 3 typy pętli (for, while, do…while) do wypisania liczb od 1 do 10.

ROZWIĄZANIE

2. Wyświetlanie kolejnych cyfr malejąco (od 9 do 0) za pomocą 3 typów pętli.

Analogicznie do poprzedniego przykładu – wypisz cyfry od 9 do 0 ćwicząc wykorzystanie składni wszystkich typów pętli.

ROZWIĄZANIE

3. Liczby parzyste.

Wypisz pierwsze 10 liczb parzystych za pomocą wybranego typu pętli. To zadanie ma wiele możliwych wariantów rozwiązania, zerknij do podpowiedzi, która pomoże znaleźć Ci część z nich.

Podpowiedź
Możesz użyć operatora skróconego dodawania, aby zwiększać zmienną sterującą pętlą o 2, pamiętaj aby dostosować wtedy warunek przerwania pętli. Innym rozwiązaniem jest zwiększanie zmiennej sterującej o 1 i wypisywanie wartości pomnożonej razy 2.

ROZWIĄZANIE

Poziom 2 – Początkujący

Wyższy poziom trudności przetestuje Twoją umiejętność połączenia wiedzy o pętlach z wiedzą na temat operatorów arytmetycznych. Zaproponowane zadania wciąż cechują się jednak niską złożonością.

1. Wypisywanie sumy pierwszych 10 liczb naturalnych.

Użyj wybranego typu pętli do obliczenia sumy pierwszych 10 liczb naturalnych.

Podpowiedź
W tym zadaniu wcale nie musisz używać pętli. O wiele efektywniejszym rozwiązaniem jest wykorzystanie wzoru na sumę ciągu arytmetycznego. Przy dużej ilości wyrazów ciągu otrzymamy wynik znacznie szybciej niż obliczając go przy pomocy pętli.

ROZWIĄZANIE

2. Wypisywanie średniej arytmetycznej pierwszych 10 liczb naturalnych.

Zadanie dosyć podobne do poprzedniego – wykorzystaj wiedzę o pętlach do obliczenia średniej arytmetycznej pierwszych 10 liczb naturalnych.

Podpowiedź
Pamiętaj, że operacja dzielenia musi być wykonywana z użyciem typu danych zmiennoprzecinkowych (float, double), aby uniknąć błędu będącego efektem rzutowania typu danych.

ROZWIĄZANIE

Poziom 3 – Zaawansowany

Dochodzimy do ciekawszych wyzwań. Zadania z poziomu 3 będą wymagały od Ciebie tworzenia bardziej skomplikowanych algorytmów z wykorzystaniem wielu pętli w obrębie jednego programu. Poćwiczysz również wypisywanie różnego typu danych w monitorze portu szeregowego.

1. Wyświetlanie trójkąta prostokątnego z gwiazdek (*, **, *** itp.) w „podstawie” ma być 5 gwiazdek.

Oczekiwany wynik działania programu, to następujący wzór złożony ze znaków „*”:

*
**
***
****
*****
Podpowiedź
Użyj zagnieżdżania pętli, czyli umieść pętlę wewnątrz pętli.

ROZWIĄZANIE

2. To samo, tylko piętra mają być ułożone z kolejnych liczb (np. 1, 1 2, 1 2 3, 1 2 3 4 5), max 9 pięter.

W wyniku działania programu w oknie Monitora Portu Szeregowego powinien się pojawić następujący wzór:

1
12
123
1234
12345

ROZWIĄZANIE

3. Piramida z gwiazdek.

Napisz program, który będzie wyświetlał następujący wzór:

    *
   * *
  * * *
 * * * *
* * * * *
Podpowiedź
W celu uzyskania estetycznego efektu zgodnego z przedstawionym powyżej przykładem, użyj komendy Serial.print(„* „) (dodaj spację za każdą gwiazdką). Pamiętaj też, że w jednej pętli może być umieszczona więcej niż jedna pętla! 😉

ROZWIĄZANIE

4. Diamencik z gwiazdek.

Podobnie jak w poprzednim przykładzie, jednak wyświetlany wzór powinien wyglądać jak poniżej:

    *
   * *
  * * *
 * * * *
* * * * *
 * * * *
  * * *
   * *
    *

ROZWIĄZANIE

5. Obliczanie sumy ciągu 1 + x + x^2/2! + x^3/3! + … + x^n/n!

Jako jawną podpowiedź dodam tutaj, że w celu wyświetlenia wyniku o większej dokładności niż 2 miejsca po przecinku możesz użyć komendy:

String(suma, 4);

Gdzie suma jest zmienną typu zmiennoprzecinkowego (float, double) a 4 jest pożądaną ilością miejść po przecinku do wyświetlenia.

Dane testowe:

Wartość x = 3

Liczba wyrazów ciągu (n) = 5

Oczekiwany wynik: 16.375

Podpowiedź
Do obliczania wyrazu ciągu wykorzystaj wartość wyliczonego poprzedniego wyrazu ciągu.

ROZWIĄZANIE

Poziom 4 – Programistyczny Ninja

Jeśli dotarłeś do tego poziomu bez podglądania rozwiązań lub podpowiedzi to ogromny szacun! Ten poziom stawia jednak poprzeczkę jeszcze wyżej! Sprawdzi on Twoją umiejętność wykorzystania składni wielu instrukcji języka Arduino do realizacji bardzo złożonych zadań, wymagających dużej dozy logicznego myślenia.

1. Sprawdzanie, czy liczba jest doskonała.

Napisz program, który sprawdzi, czy wpisana przez użytkownika liczba jest doskonała. Liczba doskonała, to taka liczba, która jest sumą wszystkich swoich dzielników właściwych (czyli mniejszych od niej samej).

Przykłady liczb doskonałych: 6 (6 = 1 + 2 + 3), 28, 496, 8128.

Podpowiedź
W celu sprawdzenia czy liczba jest dzielnikiem możesz wykorzystać operator modulo (%) oraz instrukcję if.

ROZWIĄZANIE

2. Sprawdzanie, czy liczba jest liczbą pierwszą.

Sprawdź, czy podana przez użytkownika liczba jest liczbą pierwszą. Dla przypomnienia – liczba pierwsza to liczba naturalna większa od siebie, która ma dokładnie dwa dzielniki naturalne – 1 oraz samą siebie.

Przykłady liczb pierwszych: 2, 3, 5, 7, 11, 13.

ROZWIĄZANIE

3. Wyświetlanie trójkąta Pascala.

Trójkąt Pascala to trójkątna tablica liczb, na której bokach znajdują się liczby 1, a pozostałe wartości między nimi powstają przez zsumowanie dwóch liczb znajdujących się bezpośrednio nad nią. Więcej na temat obliczania wartości elementów trójkąta Pascala znajdziesz w artykule na Wikipedii.

Przykład trójkąta Pascala:

         1                                                                                                
       1   1                                                                                              
     1   2   1                                                                                            
   1   3   3   1                                                                                          
 1   4   6   4   1
Podpowiedź
Skorzystaj z faktu, że wartość liczby stojącej na miejscu k w wierszu n można obliczyć za pomocą symbolu Newtona.

ROZWIĄZANIE

4. Wypisywanie kolejnych wyrazów ciągu Fibonacciego.

Ciąg Fibonacciego, to ciąg liczb naturalnych określony w sposób rekurencyjny. Pierwszy wyraz ciągu jest równy 0, drugi 1, a każdy kolejny jest sumą dwóch poprzednich wyrazów ciągu.

Kilka początkowych wartości ciągu Fibonacciego: 0, 1, 1, 2, 3, 5, 8, 13… itd.

Podpowiedź
Pierwsze dwa wyrazy ciągu możesz uzupełnić ręcznie przed wejściem do pętli, natomiast obliczanie rozpocząć od trzeciego wyrazu ciągu.

ROZWIĄZANIE

5. Odwracanie liczby

Napisz program, który będzie odwracał kolejność cyfr w liczbie. Przykładowo liczba 12345 w wyniku działania programu zostanie wyświetlona jako 54321, lub 407 zostanie zamienione na 704.

Podpowiedź
Kolejne cyfry, począwszy od ostatniej możesz pobierać sprawdzając resztę z dzielenia liczby wejściowej przez 10 (x % 10). Przechodzić do kolejnych cyfr liczby wejściowej możesz osiągnąć dzieląc ją przez 10. Natomiast liczbę wynikową możesz osiągnąć przez mnożenie poprzednio uzyskanej liczby razy 10, a następnie dodawanie kolejnej odczytanej cyfry.

ROZWIĄZANIE

Podsumowanie

Udało nam się wreszcie dobrnąć do końca! Wiem, że momentami było bardzo ciężko, uwierz mi jednak, że ten wysiłek zaprocentuje w przyszłości! Zdaję sobie sprawę, że to może nie być najciekawszy wpis, dlatego obiecuję, że już wkrótce przejdziemy do znacznie ciekawszych, praktycznych zagadnień. Wśród materiałów, które planuję opublikować w najbliższym czasie jest jeszcze jeden mocno teoretyczny, lecz krótki wpis dotyczący instrukcji continue i break. Następnie postaram się wrzucić pewien ekstra materiał-niespodziankę, który będzie podsumowaniem teoretycznej części naszego kursu. Później już zajmiemy się tworzeniem prawdziwych, praktycznych projektów. W czasie ich rozwijania poruszymy całą masę nowych zagadnień, często wykraczających poza proste pisanie kodu Arduino.

Źródła

Przykłady zostały opracowane na podstawie strony: https://www.w3resource.com/c-programming-exercises/for-loop/

Obrazek wyróżniający posta pochodzi ze strony: https://www.freepik.com/free-photos-vectors/book autor: dooder – www.freepik.com

Podziel się stroną ze znajomymi! :)

Dodaj komentarz