Podstawy informatyki (3)
dr in˙z. Sebastian Pluta
pluta@icis.pcz.pl
Instytut Informatyki Teoretycznej i Stosowanej
Przegl ˛ ad podstawowych poj˛e´c (1)
Program komputerowy to sekwencja instrukcji wykonywanych przez komputer w pewnym ustalonym porz ˛adku
instrukcje programu zapisane s ˛a w kodzie maszynowym Oprogramowanie jest poj ˛eciem szerszym od programu: jest to zbiór jednego lub kilku programów i danych potrzebnych w czasie ich działania
Proces (ang. process) to twór abstrakcyjny, który składa si ˛e z:
wykonywanego (działaj ˛acego) programu zapisanego w sekcji kodu bie˙z ˛acych danych o jego stanie i zasobach:
licznika rozkazów reprezentuj ˛acego bie˙z ˛ac ˛a czynno´s´c stosu przechowuj ˛acego dane tymczasowe
sekcji danych
Podstawy informatyki (3) – p.1
Przegl ˛ ad podstawowych poj˛e´c (2)
W ˛atek (ang. thread) jest podstawow ˛a jednostk ˛a wykorzystania procesora składaj ˛ac ˛a si ˛e z:
licznika rozkazów stosu
w ˛atek współu˙zytkuje wraz z innymi równorz ˛ednymi w ˛atkami:
sekcj ˛e kodu sekcj ˛e danych
niektóre zasoby systemu operacyjnego, np. otwarte pliki i sygnały równorz ˛edne w ˛atki wraz z współdzielonymi zasobami to zadanie
Przegl ˛ ad podstawowych poj˛e´c (3)
System operacyjny (ang. Operating System, OS) to oprogramowanie odpowiedzialne za bezpo´sredni ˛a kontrol ˛e i zarz ˛adzanie zasobami sprz ˛etowymi. OS zapewnia dla innych aplikacji (programów):
mo˙zliwo´s´c ich uruchomienia dost ˛ep do zasobów sprz ˛etowych
w przypadku systemów wieloprocesowych i wielou˙zytkownikowych podział zasobów i ich ochron ˛e.
J ˛adro systemu operacyjnego (ang. kernel) to centralna cz ˛e´s´c systemu operacyjnego, działaj ˛aca zawsze. Realizuje:
zarz ˛adzanie pami ˛eci ˛a zarz ˛adzanie procesami
zarz ˛adzanie urz ˛adzeniami wej´scia–wyj´scia
Algorytmy (1)
Algorytm– jest to sformalizowany zestaw czynno´sci które nale˙zy wykona´c ˙zeby uzyska´c dany rezultat, w szczególno´sci aby wyliczy´c wynik na podstawie danych, np.:
“Ciasto bananowo-jabłkowe “Pychotka”
4 jajka ubi´c z 1 szklank ˛a cukru na puszyst ˛a pian ˛e, nast ˛epnie mieszaj ˛ac dodawa´c po ły˙zeczce 1 i14szklanki m ˛aki zmieszanej z ły˙zeczk ˛a proszku do pieczenia. 200g margaryny rozpu´sci´c i ostudzi´c, nast ˛epnie doda´c do ciasta. Na blach ˛e tortow ˛a z kominkiem (natłuszczon ˛a i posypan ˛a m ˛ak ˛a) wyla´c połow ˛e ciasta, na to pokrojone w cienkie plasterki 4 jabłka (obrane i pozbawione gniazd nasiennych), na to pokrojonego w plasterki banana, nast ˛epnie rodzynki i wiórki kokosowe (w ilo´sci wedle uznania).
Przykry´c to pozostałym ciastem i posypa´c wiórkami kokosowymi (równie˙z w ilo´sci wedle uznania). Piec 45–60 minut w temp.
200 stopni C.”
Podstawy informatyki (3) – p.4
Algorytmy (2)
poziom szczegółowo´sci algorytmu musi by´c tak dobrany, aby by´c zrozumiałym dla “sprz ˛etu” – algorytm musi si ˛e składa´c z zestawu akcji podstawowych
dane potrzebne do przeprowadzenia procesu musz ˛a by´c dopuszczalne dla algorytmu opisuj ˛acego proces czyli musz ˛a by´c zgodne z pewn ˛a specyfikacj ˛a
algorytm dla “sprz ˛etu” pozbawionego czynnika ludzkiego wymaga precyzyjnego okre´slenia ka˙zdej akcji podstawowej
algorytmys ˛a rozwi ˛azaniami pewnych rodzajów zada ´n zwanych zadaniami algorytmicznymi lub obliczeniowymi
Podstawy informatyki (3) – p.5
Algorytmy (3)
algorytm powinien da´c poprawne rozwi ˛azanie dla ka˙zdych dopuszczalnych danych, w tym niesko ´nczonych
proces opisywany przez bardzo krótki algorytm mo˙ze trwa´c
bardzo długo, np. algorytm sumowania wydatków i przychodów w firmie:
zanotuj “na boku” liczb ˛e 0;
przewertuj kolejno faktury w firmie, dodaj ˛ac kwot ˛e z faktury do liczby “na boku” przyjmuj ˛ac kwot ˛e z faktur wystawionych dla firmy jako ujemne, a kwoty z faktur wystawionych przez firm ˛e jako dodatnie;
kiedy “obsłu˙zysz” ostatni ˛a faktur ˛e, przedstaw warto´s´c “na boku”
jako wynik;
Podstawy informatyki (3) – p.6
Struktury steruj ˛ ace (1)
Bezpo´srednie nast˛epstwo– “wykonajAa potemB”
Wybór warunkowy– “je´sliQ, to wykonajA, w przeciwnym razie wykonajB”, lub “je´sliQ, to wykonajA”, gdzieQjest pewnym warunkiem Iteracja:
ograniczona– “wykonajAdokładnieNrazy”, gdzieNjest pewn ˛a liczb ˛a
warunkowa(nieograniczona) – “wykonujAa˙z doQ” lub “dopóki Q, wykonujA”, gdzieQjest pewnym warunkiem
Podstawy informatyki (3) – p.7
Struktury steruj ˛ ace (2)
Algorytm sumowania wydatków i przychodów w firmie, dla listyNfaktur:
zanotuj “na boku” liczb˛e 0;
wska˙z na pierwsz ˛a faktur˛e z listy;
wykonaj co nast˛epuje N − 1 razy:
sprawd´z, czy wskazana faktura jest wystawiona dla firmy, je´sli tak, to dodaj do liczby “na boku” kwot˛e ze wskazanej faktury pomno˙zon ˛a przez −1;
w przeciwnym razie dodaj do liczby “na boku” kwot˛e ze wskazanej faktury;
wska˙z na nast˛epn ˛a faktur˛e;
Podstawy informatyki (3) – p.8
Struktury steruj ˛ ace (3)
sprawd´z, czy wskazana faktura jest wystawiona dla firmy, je´sli tak, to dodaj do liczby “na boku” kwot˛e z
wskazanej faktury pomno˙zon ˛a przez −1;
w przeciwnym razie dodaj do liczby “na boku” kwot˛e ze wskazanej faktury;
podaj warto´s´c liczby “na boku” jako wynik;
Przedstawiony algorytm działa dla danych wej´sciowych oN > 0
Podstawy informatyki (3) – p.9
Struktury steruj ˛ ace (4)
algorytmy mog ˛a zawiera´citeracje zagnie˙zd˙zone,
np.: “wykonajAdokładnieNrazy”, gdzieAjest w postaci
“wykonujBa˙z doQ”
“wykonajAdokładnieNrazy” jest tu p ˛etl ˛azewn˛etrzn ˛a
“wykonujBa˙z doQ” jest p ˛etl ˛awewn˛etrzn ˛a
instrukcja skoku– “skocz doG”, gdzieGoznacza pewne miejsce w algorytmie
Schematy blokowe
Start
zanotuj "na boku" 0;
wskaż na pierwszą fakturę;
czy faktura jest dla
firmy?
dodaj wskazywaną kwotę pomnożoną przez -1
do "na boku"
dodaj wskazywaną kwotę do "na boku"
TAK NIE
czy koniec faktur? NIE wypisz liczbę TAK
"na boku"
Sortowanie (1)
dane do sortowania:nieuporz ˛adkowanalista elementów rezultat sortowania: lista elementów uporz ˛adkowana w ustalonej kolejno´sci, np. rosn ˛acej
algorytm sortowania b ˛abelkowego dlaNelementów:
wykonaj co nast˛epuje N − 1 razy:
wska˙z na pierwszy element;
wykonaj co nast˛epuje N − 1 razy:
· porównaj wskazany element z nast˛epnym elementem;
· je´sli porównane elementy s ˛a w niewła´sciwej kolejno´sci, zamie´n je miejscami;
· wska˙z nast˛epny element;
Podstawy informatyki (3) – p.12
Sortowanie (2)
algorytm sortowania przez liniowe wstawianie dlaNelementów:
zapisz “na boku” 0;
wykonaj co nast˛epuje N − 1 razy:
znajd´z maksymalny element dla elementów od elementu 1 do elementu N− “na boku”;
zamie´n znaleziony maksymalny element z elementem ostatnim z przedziału poszukiwa´n z poprzedniego punktu;
dodaj do liczby “na boku” 1;
Podstawy informatyki (3) – p.13
Sortowanie (3)
algorytm
znajdowania maksymalnego elementu od elementu 1 do elementu M:
zapisz “na boku” pierwszy element;
wska˙z na pierwszy element;
wykonaj co nast˛epuje M − 1 razy:
wska˙z na nast˛epny element;
je´sli wskazany element jest wi˛ekszy od zapisanego
“na boku”, zapisz wskazany element “na boku”;
Podstawy informatyki (3) – p.14
Podprogramy
algorytm szukania najwi ˛ekszego elementu w odniesieniu do algorytmu sortowania przez liniowe wstawianie jestpodprogramem(procedur ˛a) zalety podprogramów:
mo˙zliwo´s´c wykonania tego samego algorytmu dla ró˙znych danych uproszczenie zapisu wi ˛ekszych algorytmów
znaczne uproszczenie czytania i analizowania algorytmów podprogram jest rozszerzeniem istniej ˛acej listy instrukcji elementarnych
łatwiejszy proces projektowania algorytmów – poprzez zbli˙zanie si ˛e do celu stopniowo poprzez u˙zycie podprogramów jeszcze nieistniej ˛acych
Podstawy informatyki (3) – p.15
Rekurencja (1)
rekurencjato zdolno´s´c podprogramu do wywołania samego siebie algorytm rekurencyjny obliczanian!(silnia):
n!= n · (n − 1) · (n − 2) · . . . · 2 · 1 n!= n · (n − 1)!
algorytm podprogramu licz ˛acego silni ˛e dla liczbyn podprogram silnia z n
je´sli n jest 0, to wynikiem jest 1
w przeciwnym razie wynikiem jest n pomno˙zone przez warto´s´c podprogramu silna z n − 1 wró´c;
algorytm “główny” obliczaj ˛acy10!: wywołaj silnia z 10
Podstawy informatyki (3) – p.16
Rekurencja (2)
algorytm iteracyjny obliczanian!(silnia):
podprogram silnia z n zapisz “na boku” 1;
zapisz “na drugim boku” 2;
wykonaj co nast˛epuje n − 1 razy:
pomnó˙z “na drugim boku” przez “na boku” i wynik umie´s´c “na boku”;
dodaj do “na drugim boku” 1;
wró´c, wynik jest zapisany “na boku”;
algorytm “główny” obliczaj ˛acy10!: wywołaj silnia z 10
Podstawy informatyki (3) – p.17
Wie˙ze Hanoi (1)
zadanie polega na przeniesieniu wszystkich (N) kr ˛a˙zków ze słupka A na słupek B przy pomocy słupka C w ten sposób, ˙ze na kr ˛a˙zek mniejszy nie mo˙zna poło˙zy´c wi ˛ekszego
algorytm ma za zadanie wypisa´c sekwencj ˛e kroków potrzebnych do wykonania zadania
Wie˙ze Hanoi (2)
po uzyskaniu takiego stanu dalsze zadanie sprowadza si ˛e do “przenie´s wszystkie(N − 1)kr ˛a˙zki ze słupka C na słupek B przy pomocy słupka A”
Wie˙ze Hanoi (3)
algorytm rekurencyjny podprogramu wypisuj ˛acego sekwencj ˛e kroków stanowi ˛acych rozwi ˛azanie zadania Wie˙z Hanoi:
podprogram przenie´s N z X na Y u˙zywaj ˛ac Z je´sli N jest 1, to wypisz “X -> Y”;
w przeciwnym razie wykonaj:
wywołaj przenie´s N − 1 z X na Z u˙zywaj ˛ac Y; wypisz “X -> Y”;
wywołaj przenie´s N − 1 z Z na Y u˙zywaj ˛ac X; wró´c;
algorytm “główny” dla 3 kr ˛a˙zków:
wywołaj przenie´s 3 z A na B u˙zywaj ˛ac C;
Podstawy informatyki (3) – p.20