Kurs: Kurs wstępu do programowania KONKURS

Lekcja: Więcej o pętlach i tablicach

Część programistyczna

W dzisiejszej części programistycznej wprowadzimy raczej niewiele nowych elementów języka programowania. Skoncentrujemy się raczej na tym, jak wykorzystać znane nam elementy do pisania coraz ciekawszych programów. Zwieńczeniem części programistycznej będzie napisanie programu, który szuka wystąpień zadanego słowa w tekście.

Typ logiczny bool


Zobacz tekst nagrania

Zagnieżdżanie pętli


Zobacz tekst nagrania

Tablice znaków, czyli napisy


Zobacz tekst nagrania

Wyszukiwanie wzorca w tekście

Problem wyszukiwania wzorca w tekście pojawia się w informatyce bardzo często. Możemy szukać wystąpienia jakiegoś słowa lub fragmentu słowa w dokumencie czy na danej stronie internetowej. Możemy też poszukiwać jakiegoś słowa czy frazy w wiadomościach e-mail lub w całej sieci Internet, za pomocą wyszukiwarki (tu jednak mamy do czynienia z bardziej złożonym problemem, gdyż poszukujemy wzorca w wielu tekstach naraz i dodatkowo dopuszczamy, że różne słowa wzorca występują w różnych miejscach tekstu). My przyjmiemy, że wzorzec i tekst są ciągami znaków i poszukujemy wszystkich fragmentów tekstu, które są takie jak wzorzec. Napiszemy teraz najprostszy program rozwiązujący to zadanie.


Zobacz tekst nagrania

Na koniec kilka pytań do uczestników kursu:
  • Jak myślisz, jak zadziałałby program, gdybyśmy w zewnętrznej pętli for rozważali \(i\) od 0 do \(n-1\)? Sprawdź to!
  • Jak napisać wewnętrzną pętlę bez użycia instrukcji warunkowej if?
  • Jak zmienić powyższy program, by wypisywał tylko TAK lub NIE w zależności od tego, czy w tekście jest choć jedno wystąpienie wzorca?
  • Jak zmienić powyższy program, by dodatkowo zliczał wszystkie wystąpienia wzorca w tekście?

Komentarz: Sortowanie

Dzisiaj poznamy bardzo prosty algorytm sortowania znany pod nazwą Sortowania przez wybór. Naszym celem będzie uporządkowanie niemalejąco tablicy \(a[0..n-1]\) zawierającej \(n\) liczb całkowitych. Innymi słowy, będziemy chcieli rozwiązać następujące zadanie algorytmiczne:

Sortowanie

Dane
dodatnia liczba całkowita \(n\)
tablica \(n\) liczb całkowitych \(a[0..n-1]\)

Wynik
tablica \(a\) z tą samą zawartością, ale uporządkowana niemalejąco, czyli \(a[0] \le a[1] \le\ldots\le a[n-1]\).

Przykład
Dla \(n = 5\), \(a = [3,1,5,4,3]\), wynikiem będzie \(a = [1,3,3,4,5]\).


Zobacz tekst nagrania

Część techniczna: Odpluskwianie, czyli błędne odpowiedzi cz. 4

Odpluskwianie (z ang. debuggowanie) polega na wykonywaniu programu krok po kroku w celu znalezienia w nim usterek (tj. pluskiew, bugów). W tej części technicznej pokażemy, jak działa odpluskwianie w środowisku Code Blocks, na przykładzie poprawnego programu wyszukiwania wzorca w tekście oraz błędnych programów z części technicznej w poprzedniej lekcji.


Zobacz tekst nagrania

Zadania przypisane do tej lekcji:
1. Liczby pierwsze
2. Palindrom
3. Oceny
4. Szyfr Cezara (*)