Funkcje – zadania

Zadanie 1: Liczenie średniej wartości

Opis: Napisz funkcję, która przyjmuje tablicę liczb (całkowitych lub rzeczywistych) i zwraca ich średnią arytmetyczną.

Kroki rozwiązania:

  1. Sprawdź, czy tablica nie jest pusta. Jeśli jest, wynik średniej można zdefiniować jako 0 (lub umówić się, że funkcja zwróci 0 albo null w takim przypadku), aby uniknąć dzielenia przez zero.
  2. Zsumuj wszystkie liczby z tablicy (np. iterując pętlą foreach lub używając wbudowanej funkcji array_sum).
  3. Oblicz liczbę elementów tablicy (funkcją count).
  4. Podziel sumę przez liczbę elementów, aby uzyskać średnią.
  5. Zwróć obliczoną średnią.

Dane wejściowe:

 $dane = [2, 8, 4, 6];

Zadanie 2: Formatowanie daty

Opis: Napisz funkcję, która przyjmuje datę w formacie „RRRR-MM-DD” (rok-miesiąc-dzień, np. „2023-07-15”) i zwraca tę datę w formacie „DD.MM.RRRR” (dzień.miesiąc.rok, np. „15.07.2023”).

Kroki rozwiązania:

  1. Przyjmij parametr będący łańcuchem znaków z datą w formacie rok-miesiąc-dzień.
  2. Rozbij ten łańcuch na trzy części: rok, miesiąc, dzień. Można to zrobić funkcją explode(„-„, $data) lub innym sposobem (np. substr).
  3. Ułóż nowy łańcuch w żądanej kolejności: najpierw dzień, potem miesiąc, potem rok. Między części wstaw kropki.
  4. Zwróć sformatowany łańcuch.

Zadanie 3: Walidacja adresu e-mail

Opis: Napisz funkcję, która sprawdza, czy podany tekst jest prawidłowym adresem e-mail. Jeśli tak, funkcja ma zwrócić true, w przeciwnym razie false.

Kroki rozwiązania:

  1. Funkcja powinna przyjąć jeden parametr (łańcuch znaków) – adres e-mail do sprawdzenia.
  2. Najprostszym sposobem w PHP jest użycie wbudowanego filtra FILTER_VALIDATE_EMAIL poprzez funkcję filter_var. Zwraca on adres (jako string) jeśli jest poprawny lub false jeśli nie.
  3. Można też sprawdzić ręcznie, np. czy adres zawiera znak „@” i po nim kropkę, ale to niewystarczające kryteria – dlatego lepiej zaufać gotowej funkcji.
  4. Zastosuj filtr i na jego podstawie zwróć wartość logiczną.
  5. (Opcjonalnie) Usuń ewentualne zbędne spacje na początku/końcu napisu przed walidacją (funkcja trim).

Zadanie 4: Sortowanie listy wartości

Opis: Napisz funkcję, która przyjmuje tablicę wartości (np. liczb lub napisów) i zwraca nową tablicę z tymi wartościami posortowanymi w porządku rosnącym.

Kroki rozwiązania:

  1. Przyjmij tablicę jako parametr funkcji.
  2. Skopiuj tę tablicę lub operuj na niej bezpośrednio (w PHP tablice przekazywane są przez wartość, więc wewnątrz funkcji mamy kopię, ale dla przejrzystości można zrobić własną kopię).
  3. Użyj wbudowanej funkcji sortującej, np. sort() dla sortowania rosnącego.
  4. sort($tablica) posortuje elementy tablicy (numerycznie lub leksykograficznie dla stringów).
  5. Zwróć posortowaną tablicę.

Dane wejściowe:

 $wartosci = [5, 2, 8, 1];
 $slowa = ["gruszka", "jabłko", "śliwka"];

Zadanie 5: Wyszukiwanie wartości w tablicy

Opis: Napisz funkcję, która sprawdza, czy w podanej tablicy znajduje się określona wartość. Funkcja powinna zwracać true jeśli znajdzie wartość, lub false w przeciwnym przypadku.

Kroki rozwiązania:

  1. Funkcja przyjmuje dwa argumenty: tablicę oraz szukaną wartość.
  2. Można wykorzystać pętlę (foreach lub for), iterując przez elementy tablicy i porównując każdy z szukaną wartością.
  3. Jeśli któryś element jest równy (==) lub identyczny (===) szukanej wartości, można natychmiast zwrócić true.
  4. Jeśli zakończono przeglądanie całej tablicy bez znalezienia elementu, zwrócić false.
  5. Alternatywnie, skorzystaj z wbudowanej funkcji in_array($wartosc, $tablica), która wykonuje dokładnie powyższe sprawdzenie i zwraca wynik logiczny.

Dane wejściowe:

 $owoce = ["jabłko", "banan", "wiśnia"];

Zadanie 6: Znajdowanie wartości minimalnej i maksymalnej

Opis: Napisz funkcję, która przyjmuje tablicę liczb i zwraca dwuelementową tablicę, zawierającą odpowiednio najmniejszą i największą liczbę z tej tablicy.

Kroki rozwiązania:

  1. Upewnij się, że tablica nie jest pusta (jeśli jest, można zwrócić np. pustą tablicę lub [null, null] – zależnie od założeń).
  2. Zainicjalizuj zmienne min i max pierwszym elementem tablicy.
  3. Przejdź przez kolejne elementy tablicy (pętla).
  4. Dla każdego elementu:
    • Jeśli jest mniejszy od obecnego min, zaktualizuj min.
    • Jeśli jest większy od obecnego max, zaktualizuj max.
  5. Po zakończeniu pętli, min i max będą skrajnymi wartościami.
  6. Zwróć tablicę [$min, $max].

Dane wejściowe:

 $wartosci = [7, 2, 9, 4, 5];

Zadanie 7: Pobieranie rozszerzenia nazwy pliku

Opis: Napisz funkcję, która przyjmuje nazwę pliku (np. „dokument.txt”, „archiwum.tar.gz”) i zwraca jego rozszerzenie (czyli wszystko, co znajduje się po ostatniej kropce w nazwie). Jeśli plik nie ma rozszerzenia (brak kropki w nazwie), funkcja powinna zwrócić pusty string.

Kroki rozwiązania:

  1. Funkcja przyjmuje jeden argument – nazwę pliku jako string.
  2. Znajdź pozycję ostatniego wystąpienia kropki „.” w tym napisie. Można użyć funkcji strrpos($nazwa, „.”).
  3. Jeśli kropka nie została znaleziona (strrpos zwróci false), zwróć pusty string (brak rozszerzenia).
  4. Jeśli kropka jest ostatnim znakiem w nazwie (np. nazwa kończy się na „.”), również potraktuj to jako brak rozszerzenia.
  5. W przeciwnym razie, skorzystaj z substr, aby wyciąć fragment napisu od pozycji po ostatniej kropce do końca.
  6. Zwróć otrzymany fragment.

Przykładowe rozwiązanie:

Zadanie 8: Tworzenie akronimu z podanej frazy

Opis: Napisz funkcję, która z podanego zdania/frazy tworzy akronim (skrót utworzony z pierwszych liter wyrazów). Na przykład dla wejścia „Polska Akademia Nauk” funkcja powinna zwrócić „PAN”.

Kroki rozwiązania:

  1. Przyjmij łańcuch znaków (fraza) jako argument.
  2. Podziel frazę na słowa. Najprościej użyć explode(” „, $fraza) zakładając, że słowa są oddzielone spacjami (dla bardziej rozbudowanej wersji można by uwzględnić także inne znaki interpunkcyjne jako separatory).
  3. Iteruj przez uzyskaną tablicę słów. Z każdego słowa weź jego pierwszą literę.
  4. Skonwertuj tę literę na wielką literę (funkcja strtoupper lub mb_strtoupper dla polskich znaków).
  5. Dodaj literę do akronimu (np. do zmiennej wynikowej poprzez konkatenację).
  6. Zwróć zbudowany akronim.

Zadanie 9: Konwersja stopni Celsjusza na Fahrenheita

Opis: Napisz funkcję, która przelicza temperaturę podaną w stopniach Celsjusza na stopnie Fahrenheita. Wzór przeliczenia: F = C * 9/5 + 32. Funkcja powinna przyjmować temperaturę w °C jako liczbę (int lub float) i zwracać odpowiadającą temperaturę w °F.

Kroki rozwiązania:

  1. Funkcja przyjmuje jeden argument – temperaturę w stopniach Celsjusza.
  2. Zastosuj wzór: pomnóż wartość przez 9/5 (czyli 1.8) i dodaj 32.
  3. Otrzymany rezultat to temperatura w Fahrenheitach.
  4. Zwróć tę wartość (ewentualnie można zaokrąglić wynik do jednej czy dwóch cyfr po przecinku, ale to zależy od założeń – w tym zadaniu nie jest to konieczne).
  5. (Opcjonalnie) Można również napisać analogiczną funkcję odwrotną, przeliczającą °F na °C, ale tu skupiamy się na jednym kierunku.

Zadanie 10: Usuwanie duplikatów w tablicy

Opis: Napisz funkcję, która przyjmuje tablicę zawierającą duplikaty i zwraca nową tablicę z unikalnymi wartościami (tj. usuwa powtarzające się elementy).

Kroki rozwiązania:

  1. Funkcja przyjmuje tablicę (wartości mogą być np. liczbami lub napisami).
  2. Można utworzyć nową tablicę wynikową i przejść przez oryginalną tablicę, dodając do wynikowej tylko te elementy, których jeszcze w niej nie ma.
  3. Do sprawdzania obecności można użyć in_array na tablicy wynikowej lub utrzymywać pomocniczą tablicę kluczy.
  4. Alternatywnie, PHP oferuje funkcję array_unique($tablica), która zwraca nową tablicę z usuniętymi duplikatami – co znacząco ułatwia zadanie.
  5. Zwróć przefiltrowaną tablicę unikalnych wartości.

Dane wejściowe:

 $dane = [1, 5, 2, 5, 3, 1, 4];