Przeczytaj
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 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.
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:
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
:
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
:
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
:
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
.
Schemat oceniania
2 pkt – za poprawny algorytm,
0 pkt – za odpowiedź błędną lub brak odpowiedzi.
Słownik
jeden z kilku paradygmatów programowania, w którym podstawową jednostką konstrukcyjną programu są funkcje