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