PHP/Ćwiczenia/Podstawy języka

Z Wikibooks, biblioteki wolnych podręczników.
< PHP

Ćwiczenia[edytuj]

Ćwiczenia utrwalające materiał z pierwszego rozdziału.

Odpowiedzi

Zasada działania PHP[edytuj]

  1. PHP jest językiem skryptowym. Co to oznacza?
  2. Wskaż czynności, które można wykonać przy pomocy PHP. Jeżeli czegoś nie da się zrobić w PHP, jakiej technologii użyjesz?
    • Licznik odwiedzin
    • Otwarcie pliku na dysku internauty
    • Rozwijane menu
    • Otwarcie pliku na serwerze
    • Rejestrowanie informacji o osobach przychodzących
    • System newsów
    • Aktualizacja fragmentu załadowanej strony WWW
    • Zareagowanie na kliknięcie myszką
    • Pobranie adresu MAC karty sieciowej internauty
    • Wyszukiwarka treści
  3. Co powinien generować skrypt PHP uruchamiany na serwerze WWW?

Podstawy języka[edytuj]

Szybkie pytania:

  1. Do czego służy komenda echo?
  2. Dlaczego tekst, który chcemy wyświetlić przy pomocy echo nie musi być otoczony nawiasami, a przy printf musi?
  3. Objaśnij różnicę w działaniu cudzysłowów i apostrof.
  4. Do czego służą zmienne? Jakimi atrybutami można je opisać?
  5. Wskaż niepoprawne nazwy zmiennych:
    • $_
    • $zmienna
    • $Napis383
    • $dZi33cI_N30
    • $15newsow
    • $gżegżółka
    • $_i
  6. Opisz na przykładzie, dlaczego powinno się inicjować zmienne przed pierwszym użyciem.

Poniżej pokazane są dwie sytuacje, w których stosujemy zmienne tymczasowe, lecz w jednej z nich są one niepotrzebne. Wskaż "błędną" sytuację oraz objaśnij, dlaczego w jednym przypadku zmienna tymczasowa jest pożądana, a w drugim nie?

Przykład 1:
<?php
$tresc = $_POST['tresc'];
$tresc = htmlspecialchars($tresc);
$tresc = nl2br($tresc);
zapisz($tresc);
Przykład 2:
<?php
$wynik = skomplikowaneObliczenia();
if($wynik > 4)
{
   przetwarzajDalej($wynik * 536 - 832 / ($wynik / 2));
}
else
{
  buforuj($wynik);
}

Pętle i instrukcje warunkowe[edytuj]

Szybkie pytania:

  1. Jaka musi być wartość wyrażenia w pętli while, aby jej treść wykonała się ponownie?
  2. Jaka musi być wartość wyrażenia w pętli do... while, aby jej treść wykonała się ponownie?
  3. Co najmniej ile razy wykona się kod w pętli do... while, a ile w while?
  4. W jaki sposób wykonać określony kod, gdy żądany przez nas warunek nie jest spełniony?
  5. Zamień podane wyrażenia logiczne na ich odwrotności (tj. odwrotność ma dawać true, gdy wyrażenie jest fałszywe i na odwrót) bez użycia operatora negacji !
    • $a == $b
    • ($a > 8) && ($a < 20)
    • ($a == 7) || ($b < 20)
  6. Opisz słownie, co opisują wyrażenia oraz ich odwrotności z poprzedniego ćwiczenia.

Funkcje[edytuj]

Poniżej pokazany jest fragment pewnego skryptu. Podana funkcja ma dodawać formatowanie do podanego w argumencie ciągu tekstowego, lecz nie działa zgodnie z zamierzeniami autora. Znajdź błąd i zaproponuj jego rozwiązanie. Jeżeli nie znasz niektórych z funkcji, znajdź je w dokumentacji.

<?php

function formatuj($tekst)
{
   echo '<strong>'.$tekst.'</strong>';
} // end formatuj();

// ...

$dane = file('dane.txt');
echo '<ul>';
foreach($dane as $linia)
{
   $wiersz = explode('|', trim($linia));
   echo '<li>'.formatuj($wiersz[0]).': '.$wiersz[1].'</li>';
}
echo '</ul>';

Ćwiczenia praktyczne[edytuj]

Ćwiczenie 1

Matematyczną operację x! (czyt. x silnia) definiujemy następująco: , , - innymi słowy jest to mnożenie wyniku przez kolejne liczby naturalne aż do n. Zaimplementuj silnię w PHP w dwóch wariantach: rekurencyjnym oraz przy użyciu pętli for. Spróbuj przy pomocy każdej z nich policzyć silnię z 50 oraz 105. Co zaobserwowałeś?

Ćwiczenie 2

Na wielu stronach internetowych wykorzystuje się podział listy wyników na strony, aby ograniczyć ilość jednocześnie wyświetlanych informacji i przyspieszyć ładowanie strony. Wbrew pozorom, Twoja wiedza jest już w pełni wystarczająca, aby stworzyć taki system. Twoim zadaniem jest napisanie funkcji o następujących właściwościach:

  • Funkcja przyjmuje za argumenty:
    • łączną liczbę elementów,
    • liczba elementów na jedną stronę,
    • numer aktualnej strony.
  • Zwraca tablicę zawierającą:
    • kod HTML z listą dostępnych stron,
    • numer pierwszego elementu wyświetlonego na aktualnej stronie,
    • ilość elementów wyświetlanych na aktualnej stronie (pamiętaj, że na ostatniej stronie nie musi znajdować się pełna liczba elementów).
  • Funkcja musi wygenerować kod HTML z odnośnikami do wszystkich dostępnych stron. Aktualna strona musi być wyróżniona, np. pogrubieniem.
  • Funkcja musi obliczyć, który element powinien wyświetlać się jako pierwszy na aktualnej stronie.

Napisz skrypt testujący napisaną funkcję, który pobiera numer strony z adresu URL. Uwzględnij sytuację, gdy w adresie URL nie ma podanego numeru. Sprawdź, czy funkcja poprawnie zachowuje się, gdy próbujesz podać np. ujemną albo nieistniejącą stronę. Powinieneś zostać wtedy przerzucony do strony pierwszej. Dodaj do skryptu pętlę for, którą zasymulujesz wyświetlane elementy poprzez zwykłe wyświetlanie liczb naturalnych.

Ćwiczenie 3

Dodaj napisany system stronicowania do księgi gości z poprzedniego rozdziału.