Języki skryptowe. Język skryptowy – język

Transkrypt

Języki skryptowe. Język skryptowy – język
Języki skryptowe.
Język skryptowy – język programowania służący do kontrolowania danej aplikacji i
interpretowany wewnątrz niej.
Skrypty – programy napisane w językach skryptowych – wykonywane są wewnątrz pewnej
aplikacji, w odróżnieniu od programów ("normalnych", nieskryptowych), które wykonują się
niezależnie od innych aplikacji „wewnątrz” systemu operacyjnego.
Interpretery języków skryptowych są wykorzystywane przez serwery WWW do serwowania
dynamicznych stron internetowych (np. przez interfejs CGI lub dodatkowe funkcjonalności serwera
Apache). Używany w ten sposób jest m.in. PHP, Perl, Python i Ruby. Języki skryptowe osadzane
też są w grach komputerowych. Służą wtedy do sterowania przebiegiem gry – fabułą, dialogami,
zachowaniem wirtualnych postaci, a czasem nawet do sterowania działaniem całego interfejsu
graficznego. Coraz częściej języki skryptowe kompilowane są do binarnego kodu pośredniego,
który wykonywany jest w specjalnej prostej wirtualnej maszynie dużo szybciej, niż przebiegałaby
jego interpretacja bezpośrednio z tekstowej postaci źródłowej.
Biblioteka standardowa to zbiór podstawowych funkcji , dostarczana wraz kompilatorem lub
interpreterem danego języka programowania. Dla niektórych języków, np. ANSI C, istnieje
formalna specyfikacja zawartości i działania biblioteki standardowej. (STL Standard Template
Library, (pol. standardowa biblioteka szablonów)). Biblioteki standardowe mogą być statecznie lub
dynamicznie dołączane do programu.
Do najczęstszych funkcji bibliotek standardowych należą:
• operacje na tekstach,
• Operacje na typach danych, zarządzanie nimi,
• obsługa wejścia/wyjścia.
• Obsługa plików,
• obsługa wielowątkowości,
• zarządzanie pamięcią.
Algorytmy.
Algorytm – w matematyce skończony ciąg jasno zdefiniowanych czynności, koniecznych do
wykonania pewnego rodzaju zadań. Słowo "algorytm" pochodzi od starego angielskiego słowa
algorism, oznaczającego wykonywanie działań przy pomocy liczb arabskich (w odróżnieniu od
abacism – przy pomocy abakusa), które z kolei wzięło się od nazwiska, które nosił Muhammad ibn
Musa al-Chuwarizmi matematyk perski z IX wieku. Algorytm ma przeprowadzić system z
pewnego stanu początkowego do pożądanego stanu końcowego. Badaniem algorytmów zajmuje się
algorytmika. Każdy algorytm może zostać zaimplementowany w postaci programu komputerowego
ale nie każdy jeżyk programowania jest w stanie zaimplementować każdy algorytm.
Jako przykład stosowanego w życiu codziennym algorytmu podaje się często przepis kulinarny. Dla
przykładu, aby ugotować bigos należy w określonej kolejności oraz odstępach czasowych
(imperatyw czasowy) dodawać właściwe rodzaje kapusty i innych składników. Może istnieć kilka
różnych przepisów dających na końcu bardzo podobną potrawę. Przykład ten ma wyłącznie
charakter poglądowy, ponieważ język przepisów kulinarnych nie został jasno zdefiniowany.
Algorytmy zwykle formułowane są w sposób ścisły w oparciu o język matematyki.
Definicja klasyczna
Algorytm to jednoznaczny przepis obliczenia w skończonym czasie pewnych danych wejściowych do
pewnych danych wynikowych.
Zgodnie z założeniem o jednoznaczności dla identycznego zestawu danych początkowych,
algorytm zdefiniowany klasycznie zawsze zwróci identyczny wynik.
Cechy algorytmu:
Uporządkowanie operacji - działania wykonywane w algorytmie muszą posiadać określoną
kolejność. Powinna być wskazana pierwsza operacja. Po wykonaniu każdej operacji musimy
wiedzieć, którą z operacji wykonać jako następną. W algorytmie musi istnieć operacja ostatnia.
Skończona liczba operacji - od algorytmu żądamy praktyczności. Zatem ilość zawartych w nim
operacji nie może być nieskończona, ponieważ wtedy wykonanie algorytmu nigdy by się nie
zakończyło.
Określoność operacji - musimy wiedzieć jak wykonać każdą operację algorytmu. Co więcej,
każda operacja nie może być różnie interpretowana - musi być jednoznaczna, czyli taka, aby można
było ją wykonać tylko w jeden sposób.
Skończoność czasu wykonania - od algorytmu żądamy, aby dawał wynik w skończonym czasie.
W przeciwnym razie nigdy byśmy nie otrzymali wyniku, co jest przecież równoznaczne z brakiem
rozwiązania.
Ogólność - algorytm powinien dawać rozwiązanie wielu podobnych problemów. Złym
algorytmem jest obliczanie sumy 2+2=4. Dobrym algorytmem jest natomiast sposób obliczania
sumy dowolnych liczb.
Zadania niealgorytmiczne:
-malowanie obrazu, ponieważ nie istnieje przepis jak namalować obraz
-pisanie książki, do tego potrzebna jest wyobraźnia, której nie da się określić algorytmem
Występują następujące sposoby przedstawiania algorytmów:
• słowny opis algorytmu
• opis algorytmu w postaci listy kroków
• pseudokod
• schemat blokowy algorytmu
• drzewo algorytmiczne
Opis słowny algorytmu.
Algorytm opisujemy słowami przedstawiając kolejne operacje oraz sposób ich wykonania. Dla
przykładu przedstawimy algorytm Euklidesa znajdowania NWD.
NWD - największy wspólny dzielnik liczb a i b jest największą liczbą naturalną, która
jednocześnie dzieli a i b bez reszty. Euklides zauważył, że NWD liczb a i b dzieli również ich
różnicę. Fakt ten można prosto wyjaśnić geometrycznie:
Przy obliczaniu NWD liczb a i b postępujemy zatem w sposób następujący:
Dopóki liczby a i b są różne, odejmujemy od większej mniejszą. Gdy liczby a i b staną się równe, to
NWD(a,b) jest wartością dowolnej z tych liczb.
Lista kroków.
Wykonanie algorytmu opisujemy przedstawiając kolejne kroki tego procesu. W każdym kroku
opisujemy zwięźle wykonywaną operację. Kroki są numerowane i wykonywane zgodnie z
numerami, o ile nie zostanie nakazane inaczej. Przed listą kroków należy umieścić tzw. specyfikację
danych. Jest to opis danych wejściowych i wyjściowych algorytmu. Dane wejściowe to informacja,
którą musi otrzymać algorytm w celu rozwiązania problemu. Dane wyjściowe to wyniki pracy
algorytmu.
Algorytm Euklidesa wyznaczania NWD dwóch liczb a i b
Wejście: a,b - liczby naturalne, których NWD oblicza algorytm
Wyjście: a lub b - wartość NWD pierwotnych liczb a i b.
Krok 1:
Czytaj a,b
; wczytujemy dane wejściowe
K2: Jeśli a = b, to idź do kroku 5 ; jeśli a = b, to NWD jest a lub b
K3: Jeśli a > b, to a ← a - b. Inaczej b ← b - a
; jeśli a jest różne od b, to od większej odejmujemy mniejszą
K4: Idź do kroku 2
; wracamy do sprawdzania warunku w kroku 2
K5: Pisz a ; wypisujemy NWD
K6: Zakończ
; koniec algorytmu
Pseudokod
Jest to sposób zapisu algorytmu, który, zachowując strukturę charakterystyczną dla kodu
zapisanego w języku programowania, rezygnuje ze ścisłych reguł składniowych na rzecz prostoty i
czytelności. Pseudokod nie zawiera szczegółów implementacyjnych (jak np. inicjalizacja
zmiennych, alokacja pamięci), często też opuszcza się w nim opis działania podprocedur (jeśli
powinien być on oczywisty dla czytelnika), zaś nietrywialne kroki algorytmu opisywane są z
pomocą formuł matematycznych lub zdań w języku naturalnym.
Schemat blokowy to graficzny zapis algorytmu rozwiązania zadania, przedstawiający opis i
kolejność wykonywania czynności realizujących dany algorytm.
W schemacie blokowym poszczególne operacje przedstawione są za pomocą odpowiednio
połączonych skrzynek (klocków, bloków). Połączenia określają kolejność i sposób wykonywania
operacji
realizujących
dany
algorytm.
W literaturze informatycznej przyjęto pewne standardowe oznaczenia poszczególnych działań (są to
figury geometryczne), ale można również używać innych oznaczeń (muszą one jednak być takie
same dla określonego typu operacji).
Przykłady skrzynek (bloków) do prezentacji algorytmu w postaci graficznej:
Elementy schematu blokowego
Nazwa skrzynki
Symbol graficzny
Funkcja
Opis
(bloku)
Skrzynka
graniczna
Skrzynka
operacyjna
Skrzynka
wejścia/
wyjścia
Skrzynka
warunkowa
mają kształt owalu. Ze skrzynki
Początek algorytmu START wychodzi tylko jedno
lub koniec
połączenie, skrzynka STOP nie ma
połączenia wychodzącego.
Wykonywanie
różnych działań, np. ma kształt prostokąta.
sumowania
Wprowadzanie
(czytanie)
danych
jest równoległobokiem, wchodzi i
lub wyprowadzanie
wychodzi z niej jedno połączenie.
(drukowanie,
pisanie) wyników
mają kształt rombu. Ze skrzynki
Sprawdzanie
wychodzą tylko dwa połączenia:
warunku, np. czy N
jedno oznaczone TAK, a drugie
>0
NIE.
Zasady budowania schematu blokowego
• Każda operacja powinna być umieszczona w skrzynce (bloku)
• Schemat powinien posiadać tylko jedną skrzynkę "Start" i przynajmniej jedną skrzynkę
"Stop"
• Skrzynki powinny być ze sobą połączone
• Ze skrzynki powinno wychodzić jedno połączenie; wyjątek stanowią skrzynki "Stop" (z
której nie wychodzą już żadne połączenia) oraz "warunkowa" (z której wychodzą dwa
połączenia opisane Tak i Nie - w zależności od tego czy warunek jest spełniony czy też nie;
można wyjść jedną z dwóch dróg).
Drzewo algorytmiczne
Drzewo algorytmiczne, nazywane także drzewem obliczeń, jest szczególnym rodzajem schematu
blokowego, który przyjmuje postać drzewa w matematycznym tego słowa znaczeniu. W drzewie
algorytmu daje się wyróżnić korzeń- wierzchołek, w którym rozpoczynają się działania algorytmu,
wierzchołki pośrednie, w których są umieszczane operacje wykonywane w algorytmie, oraz
wierzchołki końcowe (liście), które odpowiadają różnym wynikom zakończenia obliczeń w
algorytmie.
Rodzaje algorytmów.
Zaraz będą ;-)