Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Powtórzenie informacji o używaniu funkcji

W początkowym okresie nauki programowania zwykle pisaliśmy programy w sposób sekwencyjny – program stanowił ciąg komend wykonywanych po kolei. W przypadku bardziej złożonych projektów taka technika niestety się nie sprawdzi. Dlaczego?

Z czasem program „rozrasta się” nie tylko w kontekście nowych funkcjonalności, ale także w rozmiarze samego kodu źródłowego, gdzie często różne fragmenty kodu się powtarzają. Nie jest to sytuacja komfortowa. Przykładowo, jeżeli we fragmencie kodu, który został użyty w stu różnych miejscach, pojawi się błąd, to poprawki też trzeba będzie wprowadzić w stu miejscach.

Z pomocą przychodzą nam funkcje, które pozwalają na wyodrębnienie danego fragmentu kodu w jednym miejscu, a następnie ponowne użycie tego fragmentu dowolną liczbę razy. W takim przypadku ewentualną poprawkę wystarczy wprowadzić tylko w jednym miejscu. Jest to tzw. programowanie funkcyjneprogramowanie funkcyjneprogramowanie funkcyjne.

Przykładowe zadania maturalne

Zadanie 1. Kod ASCII

Kod ASCII jest systemem kodowania, który liczbom z zakresu 0‑127 przyporządkowuje litery alfabetu łacińskiego, cyfry, znaki przestankowe oraz inne symbole.

Według tradycji Bitolandu słowa muszą mieć odpowiednio dużą sumę kodów ASCII swoich znaków – nie może być ona niższa niż 500.

Zapisz w wybranej przez siebie notacji funkcję, która dla łańcucha znaków wyraz zwróci wartość logiczną, informującą, czy suma kodów ASCII znaków łańcucha spełnia warunek mieszkańców Bitolandu. W przypadku zapisu w pseudokodzie, możesz wykorzystać funkcję ascii(znak), która zwraca kod ASCII podanego znaku oraz funkcję dlugosc(napis), zwracającą długość podanego napisu.

Specyfikacja problemu:

Dane:

  • wyraz – łańcuch znaków

Wynik:

Funkcja zwraca wartość logiczną PRAWDA, jeśli łańcuch wyraz spełnia warunek Bitolandu, lub wartość logiczną FAŁSZ w przeciwnym wypadku.

Praca domowa

Przedstaw rozwiązanie zadania w postaci programu w języku C++, Java lub Python.

Rozwiązanie

Rozwiązanie zadania przedstawimy w postaci pseudokodu.

Nasza funkcja będzie przyjmować wyłącznie łańcuch znaków, zatem jej sygnatura powinna wyglądać następująco:

Linia 1. funkcja suma podkreślnik kodow otwórz nawias okrągły wyraz zamknij nawias okrągły.

Następnie skorzystamy z funkcji dlugosc(), zwracającej liczbę znaków w łańcuchu. Na egzaminie maturalnym jej implementacja jest dostępna w każdym języku programowania. Przypisujemy długość słowa pomocniczej zmiennej n:

Linia 1. funkcja suma podkreślnik kodow otwórz nawias okrągły wyraz zamknij nawias okrągły. Linia 2. n ← dlugosc otwórz nawias okrągły wyraz zamknij nawias okrągły.

W celu zliczenia sumy kodów ASCII potrzebujemy zadeklarować zmienną przechowującą tę sumę oraz przejść po wszystkich znakach wyrazu, dodając ich kody do sumy. Wykonamy to w pętli dla:

Linia 1. funkcja suma podkreślnik kodow otwórz nawias okrągły wyraz zamknij nawias okrągły. Linia 2. n ← dlugosc otwórz nawias okrągły wyraz zamknij nawias okrągły. Linia 3. suma ← 0. Linia 5. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek n wykonuj dwukropek.

Wewnątrz pętli użyjemy funkcji ascii() zwracającej kod ASCII dla danego znaku. Na egzaminie maturalnym implementacja funkcji jest dostępna w każdym języku programowania. Zwrócony przez funkcję kod dodajemy do zmiennej suma:

Linia 1. funkcja suma podkreślnik kodow otwórz nawias okrągły wyraz zamknij nawias okrągły. Linia 2. n ← dlugosc otwórz nawias okrągły wyraz zamknij nawias okrągły. Linia 3. suma ← 0. Linia 5. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek n wykonuj dwukropek. Linia 6. suma ← suma plus ascii otwórz nawias okrągły wyraz otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły.

Po zakończeniu pętli sprawdzamy wartość zmiennej suma. Jeśli jest ona większa lub równa 500, zwracamy prawda. W przeciwnym wypadku zwracamy fałsz.

Linia 1. funkcja suma podkreślnik kodow otwórz nawias okrągły wyraz zamknij nawias okrągły. Linia 2. n ← dlugosc otwórz nawias okrągły wyraz zamknij nawias okrągły. Linia 3. suma ← 0. Linia 5. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek n wykonuj dwukropek. Linia 6. suma ← suma plus ascii otwórz nawias okrągły wyraz otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły. Linia 8. jeżeli suma zamknij nawias ostrokątny znak równości 500 dwukropek. Linia 9. zwróć prawda. Linia 10. w przeciwnym wypadku dwukropek. Linia 11. zwróć fałsz.

Schemat oceniania

  • 2 pkt – za poprawny algorytm,

  • 0 pkt – za odpowiedź błędną lub brak odpowiedzi.

Słownik

programowanie funkcyjne
programowanie funkcyjne

jeden z kilku paradygmatów programowania, w którym podstawową jednostką konstrukcyjną programu są funkcje