You are on page 1of 11

22.10.

2012 09:20:01

Jzyki, automaty, obliczenia


Laboratorium 1
Celem wiczenia jest zapoznanie si z podstawami programowania w jzyku PHP. Naley napisa program, ktry wczyta z dysku plik zawierajcy informacj o N zbiorach, zapamita t informacj w odpowiednich zmiennych i wywietli wczytane dane zbiory na konsoli. Zawarto pliku z danymi:
{A,B,C,D,E} {1,2,3} {x1,x2,x3,x4} {y1,y2,y3,y4,y5}

1. Inspiracja do samodzielnego mylenia


Przygotuj si na wejciwk. Pytania s w punkcie 4.

2. Wstp do wiczenia
Jzyk programowania PHP jest jzykiem skryptowym, czcym elementy programowania strukturalnego i obiektowego. Poniewa programowanie strukturalne naley obecnie do historii informatyki, na zajciach skupimy si na programowaniu obiektowym.

2.1. Program w jzyku PHP


Wg paradygmatu programowania obiektowego, program skada si z klas. Dobra praktyka programistyczna nakazuje umieszcza deklaracj jednej klasy w jednym pliku. Nazwa klasy jest jest identyczna z nazw pliku. Do klasy moemy przypisa pola lub metody: pole to zmienna przypisana do klasy, metoda to funkcja przypisana do klasy. Klasy s podobne do struktur z jzyka C oprcz danych zawieraj te kod operacji na danych.

W powyszym kodzie pokazano klas o nazwie ProgramJAO, ktra posiada pole o nazwie wynik i metod o nazwie main. Metoda main otrzymuje dwa parametry. Sowo public mwi, e pole i metoda mog by uywana przez dowoln inna klas.

Strona 1 z 11

2.2. Zmienne, funkcje, parametry funkcji w jzyku PHP


W jzyku PHP nazwa zmiennej musi by poprzedzona znakiem $. W przeciwiestwie do jzyka C, nie trzeba deklarowa zmiennych. Deklaracja nastpuje w momencie pierwszego przypisania wartoci do zmiennej. W PHP wystpuj nastpujce typy zmiennych: boolean, integer, float, string, array i typy obiektowe. Interpreter PHP przypisuje typ do zmiennej podczas wykonywania programu. W deklaracji funkcji nie okrelamy typw parametrw.

2.3. Konwencje nazewnicze


Przez lata rozwoju informatyki programici wypracowali pewne nawyki, ktrych bezwzgldnie naley przestrzega: 1. Nazwy klas piszemy zawsze wielk liter, np. klasa ProgramJAO. 2. Nazwy zmiennym piszemy zawsze ma liter, np. $parametr. 3. Nazwy funkcji i metod piszemy zawsze ma liter. 4. Na granicy sw stosujemy wielk liter, np. klasa StudentPolitechniki, zmienna $ocenaKoncowa, funkcja wystawOcen($student).

2.4. Klasy i obiekty


Klasa jest opisem informacji i zachowania pewnej grupy obiektw, charakteryzujcych si wsplnymi cechami. Obiekt jest instancj klasy.

Powyszy kod deklaruje zmienn o nazwie program i przypisuje do niej obiekt klasy ProgramJAO. Druga linijka wywouje metod main obiektu program. Trzecia linijka wywietla warto pola wynik obiektu program. Operatorem dostpu do pl i metod obiektu jest ->.

2.5. Dostp do pl w klasie


Z kodu metody klasy moemy uzyska dostp do pl klasy, poprzedzajc ich nazwy sowem kluczowym this:

Strona 2 z 11

2.6. Tablice
W jzyku PHP wystpuj asocjacyjne tablice dynamiczne, tworzone nastpujco:
$tablica1 = $tablica1[] $tablica1[] $tablica1[] $tablica2 = array(); // tworzy pust tablic = 1; // dodaje element do tablicy = 2; = abc; array(1, 2, abc); // tworzy tablic

W powyszym przykadzie $tablica1 i $tablica2 zawieraj identyczne dane.

2.7. Wczytywanie danych tekstowych z pliku


Uywamy instrukcji podobnych do jzyka C.

Linia 36 otwiera plik o nazwie dane.txt w trybie do odczytu. W ptli while (linia 38) wczytujemy kolejne linie tekstu z pliku (linia 40). W linii 42 sprawdzamy, czy przeczytano pust lini. Po zakoczeniu operacji na pliku, plik jest zamykany (linia 47).

2.8. Pobieranie znakw z tekstu


W celu odczytania z acucha tekstowego znaku z pozycji n, uywamy funkcji:

Mona rwnie uy konstrukcji znanych z jzyka C:

2.9. Zastpowanie znakw w tekcie


W jzyku PHP do zastpowania znakw w tekcie uywamy funkcji str_replace:

W linii 41 tworzymy tablic zawierajc znaki, ktre bd wyszukiwane w tekcie. Linia 42 powinna zawiera tablic przechowujc znaki, ktrymi zastpione zostan znalezione. Poniewa zmienna ta jest pusta, funkcja str_replace usunie znalezione znaki. Linia 43 wykonuje operacj zastpienia. Ze zmiennej linia usunite zostan elementy tablicy znaki.

Strona 3 z 11

2.10. Usuwanie znakw


W jzyku PHP do usunicia znakw z pocztku lub koca linii uywamy funkcji ltrim i rtrim:
$linia = rtrim($linia, ","); // usuwa , z koca linii $linia = ltrim($linia, "#"); // usuwa # z pocztku linii $linia = trim($linia, "-+"); // usuwa +- z pocztku i koca linii

2.11. Zamiana tekstu na tablic


W jzyku PHP zamian tekstu na tablic wykonuje funkcja explode:
// jeeli jest $linia=a:b:c; // to bdzie $zbior=array(a, b, c); $zbior = explode(:, $linia);

Pierwszym parametrem funkcji explode jest separator elementw tablicy. W przykadzie powyej w zmiennej zbior pojawi si tablica utworzona z zawartoci zmiennej linia.

2.12. czenie i wywietlanie tekstw


Operatorem czenia acuchw tekstowych w jzyku PHP jest . (kropka):
$linia = $linia . " tekst";

Do wywietlania informacji na konsoli suy m.in. funkcja echo:


echo "{" . $linia . "}\n";

Do wywietlania zmiennych w sposb zrozumiay dla czowieka suy funkcja print_r:


print_r($tablica);

3. Przebieg wiczenia
Uruchom program Netbeans. Z menu Window wybierz polecenie Projects. Pojawi si okno z projektami (moe by puste). Jeeli okno ma aktywny przycisk dokowania (po ustawieniu kursora myszy, pojawi si podpowied Pin), kliknij go.

Strona 4 z 11

3.1. Zamknij otwarte projekty w Netbeans


Moe si zdarzy, e po uruchomieniu rodowiska Netbeans, otwarte zostan projekty z innych zaj. Zamknij je wszystkie. Na rysunku poniej otworzone s trzy projekty. Dla kadego projektu: kliknij lewym przyciskiem myszy w nazw projektu, eby go podwietli, wcinij na klawiaturze klawisz z napisem Delete lub Del, w okienku Delete Project zaznacz opcj Also delete sources, w okienku Delete Project kliknij przycisk z napisem Yes.

Nazwa projektu

Czy po wykonaniu tych czynnoci okno projektw w Netbeans wyglda tak, jak na rysunku niej?

?
NIE wykonaj jeszcze raz punkt 3.1 TAK przejd do punktu 3.2

Strona 5 z 11

3.2. Utworzenie Projektu


Upewnij si, czy wykonany zosta punkt 3.1 instrukcji do wiczenia. Utwrz nowy projekt z kategorii PHP, typ PHP Application, wybierajc z menu File polecenie New Project.

Podaj nazw projektu, np. JAOLab1 i wybierz folder na pliki projektu. Wybierz taki folder, ktry jest pusty i w ktrym masz uprawnienia do zapisu. Na systemie operacyjnym Windows prawa do zapisu masz w folderze o nazwie Moje Dokumenty.

W kroku o nazwie Run Configuration wybierz opcj Run as Script (run in command line) . Jeeli rodowisko Netbeans nie znalazo interpretera jzyka PHP, osoba prowadzca zajcia poda odpowiedni ciek.

Strona 6 z 11

3.3. Struktura programu


W okienku Projects rozwi utworzony projekt i grup Source Files. Czy w grupie Source Files jest plik o nazwie index.php? Tak przejd do punktu 3.3.2 Nie przejd do punktu 3.3.1

3.3.1 Utworzenie pliku index.php

Jeeli w grupie Source Files nie ma pliku o nazwie index.php, utwrz go: kliknij prawym przyciskiem myszy w grup Source files i z menu kontekstowego wybierz polecenie New PHP File, w oknie kreatora pliku wpisz nazw pliku: index, w oknie kreatora pliku kliknij przycisk z etykiet Finish.

Strona 7 z 11

3.3.2 Kontrola poprawnoci wykonywania wiczenia Czy okno Netbeans wyglda tak, jak na rysunku niej?

NIE przejd do punktu 3.1 instrukcji. TAK kontynuuj wykonywanie wiczenia. 3.3.3 Utworzenie klasy programu

1. Utwrz now klas PHP: rozwi zawarto projektu, kliknij prawym przyciskiem myszy w grup Source files i z menu kontekstowego wybierz polecenie New PHP Class.

2. W oknie kreatora klasy wpisz nazw klasy: ProgramJAO. 3. W grupie plikw rdowych Utwrz nowy pusty plik ( New empty file) o nazwie dane z rozszerzeniem txt (dane.txt). Wypenij plik danymi postaci:
{ A, B,C, D , E} {1,2,3 } {x1,x2,x3,x4}

4. Zapisz plik z danymi. Strona 8 z 11

5. Przejd do klasy ProgramJAO. W miejscu, w ktrym podpowiada rodowisko Netbeans (put your code here) wpisz nastpujcy kod (patrz przykady w punkcie 2.1): utwrz publiczne pole o nazwie wynik, utwrz publiczn bezparametrow metod o nazwie main. zadeklaruj zmienn o nazwie program i przypisz do niej obiekt klasy ProgramJAO (patrz punkt 2.4), wywoaj metod main obiektu program, wywietl przy uyciu funkcji print_r pole wynik obiektu program (punkt 2.12). Sprawd, czy liczba linii kodu wpisanych przez ciebie jest rwna 3. Jeeli wpisane zostao wicej ni 3 linie kodu, skasuj je wszystkie i wykonaj punkt 6 od pocztku. 7. W pliku index.php, w pierwszej linijce, ktra zostaa napisana przez ciebie, kliknij prawym przyciskiem myszy na nazw klasy ProgramJAO. Z menu kontekstowego wybierz polecenie Fast import. Pojawi si okno z propozycjami klas, ktre naley doczy do programu. Wybierz instrukcj require_once ProgramJAO.php. 8. Z menu Run wybierz polecenie Run project. Okno Output rodowiska Netbean powinno by puste.

6. Przejd do pliku index.php. Pomidzy znacznikami <?php i ?> dopisz nastpujcy kod:

3.4. Implementacja algorytmu


Piszc kod programu, przestrzegaj nastpujce zasady: 1. Wstawiaj w komentarzach odnoniki do krokw algorytmu, np. punktom 1 i 2 algorytmu odpowiada nastpujcy kod PHP:
$zbiory = array(); $zbior = array(); // punkt 1 // punkt 2

while(true) { for($i = 0; $i<10; $i++) { echo $i; } } W metodzie main klasy ProgramJAO doda kod dziaajcy wg algorytmu:

2. Stosuj tabulatory w celu uczynienia kodu czytelnym, np.:

Strona 9 z 11

1. Utwrz zmienn o nazwie zbiory i przypisz do niej pust tablic (punkt 2.6). Ta tablica bdzie przechowywa wszystkie zbiory z pliku. 2. Utwrz zmienn o nazwie zbior i przypisz do niej pust tablic (punkt 2.6). Ta tablica bdzie przechowywa dane jednego zbioru. 3. Otwrz plik z danymi w trybie do odczytu (punkt 2.7). 4. Dopki s dane w pliku, w ptli wykonuj algorytm: 4.1. Pobierz lini z pliku. Zapisz j do zmienne o nazwie linia. 4.2. Jeeli linia wczytana z pliku jest pusta, przerwij ptl. 4.3. Usu z wczytanej linii znaki , \r, \n (punkt 2.9). 4.4. Sprawd, czy linia zaczyna si znakiem { i koczy znakiem } (punkt 2.8). Przerwij ptl, jeeli linia nie zaczyna si znakiem { i nie koczy znakiem }. 4.5. Usu znaki { i } z pocztku i koca linii (patrz 2.10). 4.6. Zamie lini na tablic o nazwie zbior. Separatorem elementw zbioru jest przecinek (znak , ) (punkt 2.11). 4.7. Dodaj zmienn zbior do tablicy zbiory (punkt 2.6) 5. Zamknij plik. 6. Przypisz zawarto zmiennej zbiory do pola wynik (patrz punkt 2.5).

3.5. Kontrola poprawnoci wykonywania wiczenia


Sprawd, czy: 1. Program napisany przez ciebie wykonuje si bez bdw i realizuje cel wiczenia. 2. Program skada si z trzech plikw: dane.txt, index.php i ProgramJAO.php. 3. Plik index.php zawiera instrukcj doczenia pliku ProgramJAO.php i 3 linijki kodu. 4. W pliku ProgramJAO.php znajduje si wycznie klasa ProgramJAO. 5. Klasa ProgramJAO zawiera jedno publiczne pole o nazwie wynik i jedn publiczn bezparametrow metod o nazwie main. 6. Kod wpisany do metody main klasy ProgramJAO jest zgodny z algorytmem z punktu 3.4 7. Linie kodu z metody main klasy ProgramJAO zawieraj w komentarzach odnoniki do punktw algorytmu. 8. Kod klasy ProgramJAO jest prawidowo sformatowany1.

3.6. Koniec wiczenia


1. Zamknij projekt w rodowisku Netbeans. 2. Zarchiwizuj katalog z projektem. 3. Przelij archiwum utworzone w punkcie 2 na adres e-mail: adres: jao_lab_2fdi@prz-rzeszow.pl temat e-maila: JAiO Lab1 LXX
- XX to numer grupy zapisany z uyciem 2 cyfr

tre wiadomoci e-mail: imi i nazwisko zacznik: archiwum utworzone w punkcie 2.

1 Zaznacz cay kod klasy (Ctrl+A). Z menu Source wybierz polecenie Format.

Strona 10 z 11

4. Pytania na wejciwk
1. Czy z tego wiczenia trzeba wykona sprawozdanie2? 2. Jak przetumaczy Put your code here. na jzyk polski nastpujce zdanie w jzyku angielskim:

Wskazwka: jest to zdanie w trybie rozkazujcym, czasownikiem jest sowo put. 3. W jzyku C, zadeklaruj zmienn o nazwie i typu int. 4. Jaka jest rnica midzy instrukcjami break i continue w jzyku C? 5. W jzyku C, zadeklaruj zmienn typu wskanikowego do typu FILE. Uywajc dynamicznej alokacji pamici, zarezerwuj obszar pamici o rozmiarze typu FILE i przypisz wskanik do tej pamici do zadeklarowanej zmiennej. 6. W jzyku C, zadeklaruj bezparametrow funkcj o nazwie main, nie zwracajc adnej wartoci. 7. Napisz program w jzyku C wg algorytmu: dana jest tablica znakw (char [] tablica;) pobierz pierwszy i ostatni znak z tablicy (uyj funkcji strlen), jeeli pierwszy znak jest rny od { i ostatni jest rny od }, wywietl komunikat o treci bd.

5. Sprawozdanie z wiczenia
Na stronie internetowej z materiaami dydaktycznymi znajduje si szablon sprawozdania z wiczenia 1. Naley go zastosowa do wykonania sprawozdania.

2 Odpowiedzi na to pytanie szukaj na ostatniej stronie instrukcji do wiczenia.

Strona 11 z 11

You might also like