(cid:3)(cid:125)(cid:152)(cid:171)(cid:141)(cid:0)(cid:204) (cid:16)(cid:117)(cid:114)(cid:106)(cid:117)(cid:100)(cid:112)(cid:114)(cid:122)(cid:100)(cid:113)(cid:108)(cid:104)(cid:0)(cid:100)(cid:115)(cid:111)(cid:108)(cid:110)(cid:100)(cid:102)(cid:109)(cid:108)(cid:0) (cid:108)(cid:113)(cid:119)(cid:104)(cid:117)(cid:113)(cid:104)(cid:119)(cid:114)(cid:122)(cid:124)(cid:102)(cid:107) (cid:11)(cid:122)(cid:100)(cid:111)(cid:108)(cid:131)(cid:110)(cid:100)(cid:102)(cid:109)(cid:100)(cid:0)(cid:9)(cid:14)(cid:6)(cid:221)(cid:211)(cid:204) (cid:20)(cid:122)(cid:114)(cid:117)(cid:125)(cid:104)(cid:113)(cid:108)(cid:104)(cid:0)(cid:108)(cid:0)(cid:100)(cid:103)(cid:112)(cid:108)(cid:113)(cid:108)(cid:118)(cid:119)(cid:117)(cid:114)(cid:122)(cid:100)(cid:113)(cid:108)(cid:104)(cid:0)(cid:0) (cid:118)(cid:119)(cid:117)(cid:114)(cid:113)(cid:100)(cid:112)(cid:108)(cid:0)(cid:108)(cid:0)(cid:100)(cid:115)(cid:111)(cid:108)(cid:110)(cid:100)(cid:102)(cid:109)(cid:100)(cid:112)(cid:108)(cid:0)(cid:108)(cid:113)(cid:119)(cid:104)(cid:117)(cid:113)(cid:104)(cid:119)(cid:114)(cid:122)(cid:124)(cid:112)(cid:108)(cid:0) (cid:114)(cid:117)(cid:100)(cid:125)(cid:0)(cid:101)(cid:100)(cid:125)(cid:100)(cid:112)(cid:108)(cid:0)(cid:103)(cid:100)(cid:113)(cid:124)(cid:102)(cid:107) (cid:16)(cid:114)(cid:103)(cid:117)(cid:152)(cid:102)(cid:125)(cid:113)(cid:108)(cid:110)(cid:0)(cid:103)(cid:114)(cid:0)(cid:113)(cid:100)(cid:120)(cid:110)(cid:108)(cid:0)(cid:125)(cid:100)(cid:122)(cid:114)(cid:103)(cid:120) (cid:119)(cid:104)(cid:102)(cid:107)(cid:113)(cid:108)(cid:110)(cid:0)(cid:108)(cid:113)(cid:105)(cid:114)(cid:117)(cid:112)(cid:100)(cid:119)(cid:124)(cid:110)(cid:0)(cid:108)(cid:0)(cid:119)(cid:104)(cid:102)(cid:107)(cid:113)(cid:108)(cid:110)(cid:0)(cid:115)(cid:117)(cid:114)(cid:106)(cid:117)(cid:100)(cid:112)(cid:108)(cid:118)(cid:119)(cid:100) (cid:10)(cid:114)(cid:111)(cid:100)(cid:113)(cid:119)(cid:100)(cid:0)(cid:16)(cid:114)(cid:110)(cid:114)(cid:117)(cid:118)(cid:110)(cid:100) Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Helion SA nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Redaktor prowadzący: Joanna Zaręba Projekt okładki: Jan Paluch Fotografia na okładce została wykorzystana za zgodą Shutterstock. Helion SA ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: [email protected] WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie?inf033_ebook Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. ISBN: 978-83-283-7054-8 Copyright © Helion 2020 (cid:120) Poleć książkę na Facebook.com (cid:120) Księgarnia internetowa (cid:120) Kup w wersji papierowej (cid:120) Lubię to! » Nasza społeczność (cid:120) Oceń książkę Spis treści Wstęp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Rozdział 1. Podstawy programowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.1. Zasady programowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2. Proste algorytmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.3. Środowiska programistyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.4. Pytania i zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Rozdział 2. Aplikacje internetowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.1. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.2. Wzorce projektowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.3. Serwery aplikacji internetowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.4. Pakiet XAMPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.5. Pytania i zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Rozdział 3. Język JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.1. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2. Struktura języka JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.3. Składnia języka JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.4. Instrukcje sterujące . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.5. Funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.6. Obiekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.7. Obiekty wbudowane języka JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.8. Obiekty DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.9. Obsługa zdarzeń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 3.10. Wykorzystanie skryptów na stronie internetowej . . . . . . . . . . . . . . . . . . . . . . . . . . 103 3.11. Walidacja formularzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 3.12. Pytania i zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Rozdział 4. Biblioteka jQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 4.1. Opis biblioteki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 4.2. Zdarzenia biblioteki jQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 4.3. Zastosowanie biblioteki jQuery na stronie internetowej . . . . . . . . . . . . . . . . . . . . . 136 3 Spis treści 4.4. Walidacja formularzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 4.5. Pytania i zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Rozdział 5. Inne biblioteki języka JavaScript . . . . . . . . . . . . . . . . . . . . . . . . 157 5.1. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 5.2. Angular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 5.3. React.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 5.4. Pytania i zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Rozdział 6. Język PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 6.1. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 6.2. Struktura języka PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 6.3. Składnia języka PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 6.4. Instrukcje sterujące . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 6.5. Funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 6.6. Funkcje wbudowane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 6.7. Funkcje obsługi plików . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 6.8. Obsługa formularzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 6.9. Pliki cookies i sesje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 6.10. Bazy danych w PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 6.11. Biblioteka PDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 6.12. Pytania i zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Rozdział 7. Walidacja kodu aplikacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 7.1. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 7.2. Testy aplikacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 7.3. Debugowanie aplikacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 7.4. Pytania i zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Rozdział 8. Dokumentowanie aplikacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 8.1. Komentarze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 8.2. Tworzenie dokumentacji programu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 8.3. Automatyczne generowanie dokumentacji użytkownika . . . . . . . . . . . . . . . . . . . . . 309 8.4. Pytania i zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 Skorowidz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 4 Wstęp Szybki rozwój internetu i pojawienie się nowych technologii pozwoliły na tworzenie aplikacji internetowych, z których można korzystać za pomocą przeglądarki interneto- wej. Aplikacje webowe stały się narzędziem do nowoczesnego zarządzania firmą, umoż- liwiły także stałą kontrolę nad procesami biznesowymi z każdego miejsca na świecie. Nauka zawodów technik informatyk i technik programista pozwala na pogłębienie wie- dzy z zakresu projektowania i tworzenia aplikacji internetowych. Zdobyte kwalifikacje dają możliwość szybkiego znalezienia bardzo atrakcyjnej pracy. Podręcznik Kwalifikacja INF.03. Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych. Część 3. Programowanie aplikacji internetowych. Podręcznik do nauki zawodu technik informatyk i technik programista zawiera treści przeznaczone dla osób kształcących się w zawodach technik informatyk i technik programista. Podręcznik został opracowany zgodnie z nową podstawą programową, obowiązującą od 1 września 2019 r., i obejmuje materiał kwalifikacji INF.03. Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych w zakresie programowania aplikacji internetowych. W publikacji zostały omówione zagadnienia teoretyczne z zakresu programowania apli- kacji webowych. Zamieszczono też liczne ćwiczenia, które ułatwią nabycie umiejętności praktycznych, a proponowane rozwiązania pomogą w ugruntowaniu zdobytej wiedzy. Podręcznik składa się z ośmiu rozdziałów. Ich budowa pozwala na realizację treści programowych w sposób wybrany przez nauczyciela oraz umożliwia samodzielne roz- wijanie umiejętności przez uczniów. Rozdział 1., „Podstawy programowania”, zawiera omówienie podstawowych zagadnień z zakresu programowania i algorytmiki. Dotyczy efektów związanych z przestrzeganiem zasad programowania. Efektami tymi są: stosowanie zasad programowania struktural- nego, analiza problemów programistycznych i korzystanie z algorytmów. Rozdział 2., „Aplikacje internetowe”, zawiera omówienie podstawowych zagadnień z zakresu użycia aplikacji internetowych. Dotyczy efektów związanych z tworzeniem oraz wykorzystywaniem aplikacji webowych. Efektami tymi są: rozpoznawanie techno- logii działających po stronie klienta i serwera, identyfikowanie wzorców projektowych, korzystanie z frameworków, instalowanie serwerów WWW. Rozdział 3., „Język JavaScript”, zawiera omówienie zagadnień z zakresu stosowania skryptów wykonywanych po stronie klienta przy tworzeniu aplikacji internetowych. Dotyczy efektów związanych ze stosowaniem funkcji, obiektów i metod w języku Java- Script, z tworzeniem własnych funkcji, obiektów i metod oraz testowaniem powstającej aplikacji i modyfikowaniem jej kodu źródłowego. Efektami tymi są: identyfikowanie operatorów arytmetycznych, bitowych i logicznych, stosowanie obsługi zdarzeń myszy 5 Wstęp i klawiatury, definiowanie skryptów obsługujących formularze i kontrolki HTML, wyko- rzystywanie mechanizmów walidacji formularzy HTML, korzystanie z funkcji modelu DOM, analizowanie poprawności tworzonych obiektów i metod. Rozdział 4., „Biblioteka jQuery”, zawiera omówienie zagadnień z zakresu wykorzysta- nia biblioteki jQuery do tworzenia własnych aplikacji. Dotyczy efektów związanych ze stosowaniem funkcji, metod i obiektów biblioteki jQuery, tworzeniem własnych funkcji, obiektów i metod z użyciem biblioteki jQuery oraz wykorzystywaniem ich na stronie internetowej. Efektami tymi są: identyfikowanie i stosowanie instrukcji, metod, obiektów i zdarzeń biblioteki jQuery, używanie odpowiednich instrukcji, pro- cedur i metod biblioteki jQuery do tworzenia efektów na stronie internetowej oraz do walidacji formularzy. Rozdział 5., „Inne biblioteki języka JavaScript”, zawiera omówienie zagadnień z zakre- su wykorzystania bibliotek Angular i React do tworzenia własnych aplikacji. Dotyczy efektów związanych z przygotowaniem środowiska uruchomieniowego tych bibliotek oraz stosowaniem ich do tworzenia strony internetowej. Efektami tymi są: dobieranie środowisk programistycznych do określonych zadań, tworzenie programów w wybranych środowiskach programistycznych, instalowanie i konfigurowanie środowisk programi- stycznych, korzystanie z bibliotek i frameworków języka JavaScript. Rozdział 6., „Język PHP”, zawiera omówienie podstawowych zagadnień z zakresu stosowania skryptów wykonywanych po stronie serwera przy tworzeniu aplikacji internetowych. Dotyczy efektów związanych z wykorzystaniem wbudowanych typów danych, stosowaniem funkcji i tworzeniem własnych funkcji w języku PHP oraz testo- waniem powstającej aplikacji i modyfikowaniem jej kodu źródłowego. Efektami tymi są: identyfikowanie operatorów arytmetycznych, bitowych i logicznych, tworzenie włas- nych typów danych, stosowanie instrukcji i funkcji języka PHP do określonych zadań, wykorzystywanie operacji na plikach i katalogach, tworzenie i walidacja formularzy, wysyłanie danych z formularza, używanie plików cookie i sesji, stosowanie bibliotek do obsługi bazy danych, analizowanie poprawności tworzonych aplikacji. Rozdział 7., „Walidacja kodu aplikacji”, zawiera omówienie zagadnień z zakresu testo- wania i debugowania kodu aplikacji internetowej. Dotyczy efektów związanych z ana- lizą testów tworzonej aplikacji oraz sposobami debugowania aplikacji. Efektami tymi są: analiza błędów w kodzie źródłowym programu, poprawianie błędów, stosowanie debugera w przeglądarce internetowej, rozpoznawanie rodzajów testów. Rozdział 8., „Dokumentowanie aplikacji”, zawiera omówienie zagadnień z zakresu dokumentowania tworzonej aplikacji. Dotyczy efektów związanych z opracowywaniem dokumentacji programu. Efektami tymi są: identyfikowanie sposobów dokumento- wania powstającej aplikacji, tworzenie dokumentacji programu, przygotowywanie instrukcji użytkownika, stosowanie komentarzy w celu automatycznego generowania dokumentacji użytkownika. 6 1 Podstawy programowania 1.1. Zasady programowania Język programowania służy do tworzenia programów komputerowych, których zada- niem jest przetwarzanie danych, wykonywanie obliczeń i algorytmów. Może zawierać konstrukcje składniowe do manipulowania strukturami danych i zarządzania prze- pływem sterowania. Niektóre języki programowania mają specyfikację swojej składni i semantyki, inne zdefiniowane są jedynie przez oficjalne implementacje. Elementy języka: q Składnia — zbiór reguł opisujących sposób definiowania struktur danych, rodzaje dostępnych słów kluczowych i symboli oraz zasady, według których symbole mogą być łączone w większe struktury. q Semantyka — zbiór reguł definiujących znaczenie słów kluczowych i symboli oraz ich funkcji w programie. q Typy danych — dostępne typy danych, ich właściwości oraz operacje, które mogą być wykonane na wartościach danego typu. Przykładami używanych obecnie języków programowania są: C, C++, C#, Java, PHP, Perl, Python, Ruby. Niektóre z tych języków wywodzą się z języka C, na przykład C++ czy C#. Języki Java i Python są popularne, gdyż pozwalają na bardzo szybkie tworzenie aplikacji. Wy- dajniejsze języki, takie jak C czy C++, posłużyły do napisania programów biurowych typu edytory tekstu czy edytory grafiki. Języki PHP i Java są popularne w aplikacjach internetowych. Python bywa wykorzystywany w administrowaniu systemami i do tworzenia aplikacji. Wybór języka programowania może zależeć od przeznaczenia końcowej aplikacji, indywidualnych upodobań lub strategii firmy tworzącej oprogramowanie. Najlepszym 7 Rozdział 1. t Podstawy programowania wyjściem jest wybór języka programowania najbardziej dostosowanego do rozwiązy- wanego zadania i istniejącej infrastruktury. Kod źródłowy programu jest tworzony i zapisywany w formacie tekstowym. Rozszerzenie pliku zależy od wybranego języka programowania. Identyfikuje ono język, w którym program został napisany, na przykład c dla języka C, cpp dla C++, java dla Javy, cs dla C#. Niezależnie od rozszerzenia plik zawierający kod źródłowy programu można ot- worzyć w dowolnym edytorze tekstu. 1.1.1. Paradygmaty programowania Paradygmat programowania to pewien wzorzec określający sposób pisania i wykonania programu komputerowego. Języki programowania korzystają z różnych paradygmatów. Paradygmaty programowania opisują między innymi programowanie: q strukturalne, q funkcyjne, q obiektowe, q uogólnione. q proceduralne, Różnice polegają na różnych strukturach programów oraz na różnym podejściu do problemu. Najbardziej rozpowszechniony jest paradygmat strukturalny (programowanie struktu- ralne) oraz obiektowy (programowanie zorientowane obiektowo). W programowaniu strukturalnym następuje dzielenie kodu na bloki (procedury i funk- cje). Instrukcje są pobierane ze stosu i są wykonywane z wykorzystaniem pętli i instrukcji warunkowych. W większości języków można programować strukturalnie. W programowaniu obiektowym programy definiowane są za pomocą obiektów. Pro- gram napisany zgodnie z zasadami programowania obiektowego składa się ze zbioru obiektów, które komunikują się między sobą, aby wykonać określone zadania. W programowaniu proceduralnym program dzielony jest na procedury, czyli fragmenty wykonujące ściśle określone operacje. Procedury nie powinny korzystać ze zmiennych globalnych, lecz wszystkie dane powinny być pobierane i przekazywane jako parametry wywołania. W programowaniu uogólnionym kod programu powstaje bez wcześniejszej znajomości typów danych, na których będzie pracował. Do języków programowania wykorzystu- jących uogólnienia należą: C++, Java. Określony język może wspierać różne paradygmaty programowania. Może przykładowo zawierać elementy programowania proceduralnego, obiektowego i uogólnionego. Wtedy jest to język hybrydowy. Można w takim języku programować, stosując się na przykład wyłącznie do paradygmatów programowania strukturalnego lub wykorzystując elementy wielu paradygmatów. To programista decyduje, w jaki sposób będzie tworzył program. 8 1.1. Zasady programowania 1.1.2. Programowanie strukturalne W programowaniu strukturalnym kod programu jest dzielony na hierarchicznie ułożone bloki. Program tworzony jest z wcześniej zdefiniowanych struktur, takich jak sekwencja (ciąg kolejnych instrukcji), instrukcja warunkowa ( , ), pętla ( , if if...else while ), instrukcja wyboru. Struktury te są stosowane do małych bloków programu repeat zawierających podstawowe instrukcje typu podstawienia, wejścia-wyjścia lub wywołania procedur i funkcji. Dzięki temu kod jest przejrzysty i łatwy w utrzymaniu. Występujące w językach strukturalnych instrukcje skoku ( ) lub przerwania ( goto con- , ) są niezgodne z zasadami strukturalności, ale pojawiają się w językach tinue switch programowania, ponieważ zwiększają czytelność programu. Prawie w każdym języku można programować strukturalnie. Jednak niektóre z nich są do tego celu specjalnie przeznaczone. Modelowym przykładem języka strukturalnego był język Pascal. Reasumując: programowanie strukturalne zachęca do dzielenia programu na bloki (moduły, podprogramy), a powstałych bloków na mniejsze jednostki w kolejności wy- konywania. Wykorzystuje instrukcje sterowania i pętle do kontrolowania przebiegu programu. K od staje się dzięki temu bardziej przejrzysty i wzrasta jego wydajność. Sposób programowania w tym paradygmacie może być różny w zależności od zasto- sowanego systemu operacyjnego i języka programowania. Jednak podstawowe zasady programowania powinny zostać niezmienne. Zmienna Jednym z podstawowych elementów języków programowania jest zmienna. Jest ona abstrakcją komórki pamięci komputera. Każdą zmienną można opisać za pomocą nazwy, adresu, wartości, typu, okresu życia i zakresu widoczności. Nazwa — określa nazwę, przez którą następuje odwołanie do zmiennej. Dla nazwy powinny zostać zdefiniowane: zakres dozwolonych znaków, liczba dozwolonych zna- ków, rozróżnialność małych i dużych liter. Adres — określa bieżący adres zmiennej w pamięci. Wartość — określa wartość przypisaną do zmiennej. Typ — określa zbiór dopuszczalnych wartości, jakie zmienna może przyjmować. Zakres widoczności — określa blok instrukcji, w których zmienna jest widoczna i można się do niej odwołać. Okres życia — określa czas, przez który zmienna istnieje. Przykładowo okres życia zmiennej zadeklarowanej w funkcji zaczyna się od wejścia do funkcji i kończy się w momencie zakończenia funkcji. Istnieją również zmienne zadeklarowane w funkcji, które widoczne są tylko w tej funkcji, ale okres życia dotyczy całego czasu wykonania programu. 9 Rozdział 1. t Podstawy programowania Proste typy danych Typ to zbiór wartości, które może przyjmować zmienna. Większość języków progra- mowania ma zestaw typów prostych. Typ całkowity (int, integer) odpowiada liczbom całkowitym, ale mogą wystąpić jego warianty związane z rozmiarem liczby (byte, short, long) i jej znakiem (signed, unsigned). Typy zmiennopozycyjne odpowiadają liczbom rzeczywistym (float, double). Typy znakowe przechowują informacje o znakach zapisane w kodzie ASCII lub coraz częściej w Unicode (char, character). Typ logiczny przechowuje wartość logiczną Prawda lub Fałsz i jest zapisywany za pomocą jednego bitu lub całego bajta. Typy stałoprzecinkowe mają ustaloną liczbę cyfr i miejsc po przecinku. Z typów prostych można tworzyć typy złożone, na przykład rekordy, tablice, typy wy- liczeniowe. Operatory Z każdym typem związana jest grupa operacji, które mogą zostać wykonane na war- tościach tego typu. Przykładowo: Typ całkowity — operacje dodawania (+), odejmowania (–), mnożenia (*), dzielenia (/). Typ logiczny — operacje koniunkcji (And), alternatywy (Or), negacji (Not). Typ znakowy — operacja łączenia tekstów (+). Operacje wejścia-wyjścia Operacje wejścia-wyjścia pozwalają na pobieranie i wypisywanie danych z konsoli. Instrukcje Sekwencja — ciąg kolejnych poleceń (rysunek 1.1). Instrukcja warunkowa — pozwala na rozgałęzienie przebiegu działania programu (rysunek 1.2). Instrukcja1 Nie Tak Wyrażenie Instrukcja2 Instrukcja1 Instrukcja2 Instrukcja3 Rysunek 1.1. Sekwencja Rysunek 1.2. Instrukcja warunkowa 10