Blok 3
Wasze pliki z bloku 2
Section titled “Wasze pliki z bloku 2”Podsumowanie bloku 2 na 25 pracach: 8 dwójek, 9 jedynek za nazwę albo miejsce pliku, 3 pliki, które się nie otwierają albo mają niedomknięty HTML. Większość jedynek nie dotyczyła kodu, tylko tego, jak plik został nazwany i oddany.
Trzy rzeczy z bloku 2
Section titled “Trzy rzeczy z bloku 2”Trzy wnioski z bloku 2. Nazwa pliku jest częścią zadania, tak jak na arkuszu egzaminacyjnym. Przed oddaniem trzeba odświeżyć stronę i sprawdzić, czy się otwiera. Funkcje definiuje się na górze pliku, nie w środku tabeli. Wspólna praca nad zadaniem jest dozwolona, ale każdy broni tego, co oddaje.
Quiz z funkcji
Section titled “Quiz z funkcji”Na otwarciu bloku quiz z funkcji: kod na slajdzie, potem odsłona.
1. Co się wypisze?
Section titled “1. Co się wypisze?”Pytanie 1: funkcja robi echo zamiast return, a jej wynik trafia do tablicy. Czasy wypisują się od razu i w złym miejscu, sklejone ze sobą, a tablica zostaje pusta, bo funkcja niczego nie zwróciła.
1. Co się wypisze?
Section titled “1. Co się wypisze?”Odpowiedź: b. echo wypisuje natychmiast w miejscu wywołania, a funkcja bez return oddaje null, więc tablica zawiera puste wartości.
2. Co zobaczy wywołujący?
Section titled “2. Co zobaczy wywołujący?”Pytanie 2: funkcja oblicza średnią, ale nie ma return. Wywołujący dostaje null, bez żadnego ostrzeżenia, więc obliczenie przepada.
2. Co zobaczy wywołujący?
Section titled “2. Co zobaczy wywołujący?”Odpowiedź: c. Brak return nie jest błędem dla PHP, więc nic nie ostrzeże — dlatego ten błąd trudno zauważyć.
3. Co się stanie?
Section titled “3. Co się stanie?”Pytanie 3: funkcja próbuje użyć zmiennej zadeklarowanej poza nią. Zmienna z zewnątrz nie istnieje wewnątrz funkcji, więc PHP ostrzega o nieznanej zmiennej, a potem strona pada na count(null). Dane wchodzą do funkcji przez parametr.
3. Co się stanie?
Section titled “3. Co się stanie?”Odpowiedź: c. Funkcja widzi wyłącznie swoje parametry. Żeby użyła danych z zewnątrz, trzeba jej je przekazać.
4. Co wypisze?
Section titled “4. Co wypisze?”Pytanie 4: w funkcji są dwa return. Wykonuje się pierwszy i na nim funkcja się kończy, więc drugi nigdy nie zadziała.
4. Co wypisze?
Section titled “4. Co wypisze?”Odpowiedź: a. Pierwszy return kończy działanie funkcji. Wykorzystuje się to do wczesnego wyjścia, na przykład gdy lista jest pusta.
5. Co wypiszą te dwie linie?
Section titled “5. Co wypiszą te dwie linie?”Pytanie 5: funkcja z parametrem domyślnym. Wywołana bez drugiego argumentu używa wartości domyślnej, wywołana z argumentem — tej podanej.
5. Co wypiszą te dwie linie?
Section titled “5. Co wypiszą te dwie linie?”Odpowiedź: a. Pierwsze wywołanie używa domyślnego dwukropka, drugie podanego separatora.
6. Co się stanie?
Section titled “6. Co się stanie?”Pytanie 6: wywołanie funkcji bez nawiasów. PHP szuka wtedy stałej o takiej nazwie, nie znajduje jej i zgłasza błąd. Funkcję wywołuje się z nawiasami, nawet gdy nie ma argumentów.
6. Co się stanie?
Section titled “6. Co się stanie?”Odpowiedź: c. Bez nawiasów PHP traktuje nazwę jako stałą, a nie jako wywołanie funkcji.
7. Zapasowe: czy to zadziała?
Section titled “7. Zapasowe: czy to zadziała?”Pytanie zapasowe: nazwy funkcji w PHP nie rozróżniają wielkości liter, więc formatczas i FORMATCZAS wywołają funkcję formatCzas. Nazwy zmiennych natomiast wielkość liter rozróżniają: $IMIE to inna zmienna niż $imie.
7. Zapasowe: czy to zadziała?
Section titled “7. Zapasowe: czy to zadziała?”Odpowiedź: b. Wywołania funkcji zadziałają mimo innej wielkości liter, odwołanie do $IMIE już nie.
8. Zapasowe: która wersja gubi uwagę?
Section titled “8. Zapasowe: która wersja gubi uwagę?”Pytanie zapasowe: elseif wyklucza kolejne warunki, więc gdy zawodnik zasługuje na dwie uwagi naraz, zostanie tylko pierwsza. Dwa niezależne if sprawdzają oba warunki osobno. Dane testowe, które nie trafiają w drugi przypadek, ukrywają taki błąd.
8. Zapasowe: która wersja gubi uwagę?
Section titled “8. Zapasowe: która wersja gubi uwagę?”Odpowiedź: b. Wersja z elseif pokaże jedną uwagę zamiast dwóch.
Jak w ogóle powstaje ta strona
Section titled “Jak w ogóle powstaje ta strona”Druga część godziny pierwszej: skąd bierze się strona w PHP, dlaczego odświeżenie jest nowym żądaniem i skąd skrypt bierze dane od użytkownika.
Kto z kim gada
Section titled “Kto z kim gada”Strona w PHP powstaje na serwerze: przeglądarka wysyła żądanie, serwer wykonuje skrypt od początku do końca, skrypt oddaje gotowy HTML, a przeglądarka go rysuje. W źródle strony (Ctrl+U) nie ma kodu PHP — jest tylko jego wynik.
Ile pokaże za trzecim razem?
Section titled “Ile pokaże za trzecim razem?”Demonstracja: skrypt zwiększa licznik od zera i wypisuje go. Po każdym odświeżeniu wynik to nadal 1, a zegar obok pokazuje, że strona naprawdę powstała na nowo. Zmienna nie przeżywa żądania — przy każdym wejściu skrypt startuje od zera.
Skoro nie z pamięci, to skąd?
Section titled “Skoro nie z pamięci, to skąd?”Dane od użytkownika przyjeżdżają razem z żądaniem. To, co dopiszesz w adresie po znaku zapytania, ląduje w tablicy $_GET jako pary klucz-wartość. Jest to zwykła tablica, taka sama jak te, na których pracowaliście.
Formularz to generator adresu
Section titled “Formularz to generator adresu”Formularz wysyła dane na dwa sposoby. Metoda GET dokleja je do adresu, więc widać je w pasku i można taki adres wysłać dalej; trafiają do tablicy $_GET. Metoda POST wysyła je w treści żądania, adres zostaje czysty, a dane trafiają do $_POST. Atrybut name pola staje się kluczem w tej tablicy.
Zadanie A: zawody z karami
Section titled “Zadanie A: zawody z karami”Zadanie A: starter zawiera gotową tabelę i dane zawodów. Okrążenie jest rekordem z kluczami czas i kary, gdzie jedna kara dolicza 5 sekund. Plik trzeba nazwać nazwisko_imie_blok3.php.
Etap 1: dwie funkcje z pustym ciałem
Section titled “Etap 1: dwie funkcje z pustym ciałem”Etap 1 zadania A: napisać ciała dwóch funkcji. czasZKarami liczy czas okrążenia razem z karami, najlepsze zwraca najkrótszy czas zawodnika, a dla pustej listy null. Jeden zawodnik nie ma żadnego okrążenia i to właśnie jego przypadek wymaga zwrócenia null.
Etap 2: ten sam kod stoi dwa razy
Section titled “Etap 2: ten sam kod stoi dwa razy”Etap 2 zadania A: w pliku dwa fragmenty kodu są napisane po dwa razy, oba oznaczone komentarzem. Trzeba wyciąć każdy z nich do funkcji srednia i kategoria, samodzielnie decydując, co ma być parametrem. Refactor zmienia kod, a nie wynik: strona po zmianie ma wyglądać identycznie.
Sesja robocza
Section titled “Sesja robocza”Sesja robocza nad zadaniem A. Dla tych, którzy skończą oba etapy: w pliku jest jeszcze jedno, nieoznaczone powtórzenie — fragment robiący to samo, co jedna z gotowych funkcji.
Zadanie B: formularz
Section titled “Zadanie B: formularz”Zadanie B: do kopii pliku dochodzi formularz dodający zawodnikowi okrążenie. Formularz używa metody POST, a skrypt dokłada nowe okrążenie do danych, zanim cokolwiek policzy. Inaczej podsumowanie i licznik nie zobaczą nowego czasu. Zadanie jest bez punktów i robione wspólnie na lekcji.
Dodane okrążenie zniknie
Section titled “Dodane okrążenie zniknie”Dodane przez formularz okrążenie znika po odświeżeniu strony i jest to zachowanie zamierzone: skrypt przy każdym żądaniu startuje od zera, a dane są zapisane w kodzie. Trwałym zapisywaniem danych zajmiemy się w kolejnym bloku. Rozszerzenie: drugi formularz metodą GET, filtrujący tabelę po kategorii.
Oddanie
Section titled “Oddanie”Oddanie: plik nazwisko_imie_blok3.php (punktowany 0/1/2, dwójka wymaga obu etapów; plik pod inną nazwą dostaje najwyżej 1) i nazwisko_imie_formularz_blok3.php (przeglądany, bez punktów). Grupa 1 wypycha pliki do swojego repozytorium, grupa 2 wysyła na Teams. Przed wysłaniem trzeba odświeżyć stronę i sprawdzić, czy się otwiera.
Wolna końcówka
Section titled “Wolna końcówka”Koniec bloku.