Przeglad podstawowych pojęć (1) Podstawy informatyki (3) dr inż. Sebastian Pluta pluta@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Program komputerowy to sekwencja instrukcji wykonywanych przez komputer w pewnym ustalonym porzadku instrukcje programu zapisane sa w kodzie maszynowym Oprogramowanie jest pojęciem 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ę z: wykonywanego (działajacego) programu zapisanego w sekcji kodu bieżacych danych o jego stanie i zasobach: licznika rozkazów reprezentujacego bieżac a czynność stosu przechowujacego dane tymczasowe sekcji danych Podstawy informatyki (3) p.1 Przeglad podstawowych pojęć (2) Przeglad podstawowych pojęć (3) Watek (ang. thread) jest podstawowa jednostka wykorzystania procesora składajac a się z: licznika rozkazów stosu watek współużytkuje wraz z innymi równorzędnymi watkami: sekcję kodu sekcję danych niektóre zasoby systemu operacyjnego, np. otwarte pliki i sygnały równorzędne watki wraz z współdzielonymi zasobami to zadanie Podstawy informatyki (3) p.2 System operacyjny (ang. Operating System, OS) to oprogramowanie odpowiedzialne za bezpośrednia kontrolę i zarzadzanie zasobami sprzętowymi. OS zapewnia dla innych aplikacji (programów): możliwość ich uruchomienia dostęp do zasobów sprzętowych w przypadku systemów wieloprocesowych i wieloużytkownikowych podział zasobów i ich ochronę. Jadro systemu operacyjnego (ang. kernel) to centralna część systemu operacyjnego, działajaca zawsze. Realizuje: zarzadzanie pamięcia zarzadzanie procesami zarzadzanie urzadzeniami wejścia wyjścia obsługę systemu plików Podstawy informatyki (3) p.3
Algorytmy (1) Algorytmy (2) Algorytm jest to sformalizowany zestaw czynności które należy wykonać żeby uzyskać dany rezultat, w szczególności aby wyliczyć wynik na podstawie danych, np.: Ciasto bananowo-jabłkowe Pychotka 4 jajka ubić z 1 szklanka cukru na puszysta pianę, następnie mieszajac dodawać po łyżeczce 1 i 4 1 szklanki m aki zmieszanej z łyżeczk a proszku do pieczenia. 200g margaryny rozpuścić i ostudzić, następnie dodać do ciasta. Na blachę tortowa z kominkiem (natłuszczona i posypana mak a) wylać połowę ciasta, na to pokrojone w cienkie plasterki 4 jabłka (obrane i pozbawione gniazd nasiennych), na to pokrojonego w plasterki banana, następnie rodzynki i wiórki kokosowe (w ilości wedle uznania). Przykryć to pozostałym ciastem i posypać wiórkami kokosowymi (również w ilości wedle uznania). Piec 45 60 minut w temp. 200 stopni C. Podstawy informatyki (3) p.4 poziom szczegółowości algorytmu musi być tak dobrany, aby być zrozumiałym dla sprzętu algorytm musi się składać z zestawu akcji podstawowych dane potrzebne do przeprowadzenia procesu musza być dopuszczalne dla algorytmu opisujacego proces czyli musza być zgodne z pewna specyfikacja algorytm dla sprzętu pozbawionego czynnika ludzkiego wymaga precyzyjnego określenia każdej akcji podstawowej algorytmy sa rozwiazaniami pewnych rodzajów zadań zwanych zadaniami algorytmicznymi lub obliczeniowymi Podstawy informatyki (3) p.5 Algorytmy (3) Struktury sterujace (1) algorytm powinien dać poprawne rozwiazanie dla każdych dopuszczalnych danych, w tym nieskończonych proces opisywany przez bardzo krótki algorytm może trwać bardzo długo, np. algorytm sumowania wydatków i przychodów w firmie: zanotuj na boku liczbę 0; przewertuj kolejno faktury w firmie, dodajac kwotę z faktury do liczby na boku przyjmujac kwotę z faktur wystawionych dla firmy jako ujemne, a kwoty z faktur wystawionych przez firmę jako dodatnie; kiedy obsłużysz ostatnia fakturę, przedstaw wartość na boku jako wynik; Bezpośrednie następstwo wykonaj A a potem B Wybór warunkowy jeśli Q, to wykonaj A, w przeciwnym razie wykonaj B, lub jeśli Q, to wykonaj A, gdzie Q jest pewnym warunkiem Iteracja: ograniczona wykonaj A dokładnie N razy, gdzie N jest pewna liczba warunkowa (nieograniczona) wykonuj A aż do Q lub dopóki Q, wykonuj A, gdzie Q jest pewnym warunkiem Podstawy informatyki (3) p.6 Podstawy informatyki (3) p.7
Struktury sterujace (2) Struktury sterujace (3) Algorytm sumowania wydatków i przychodów w firmie, dla listy N faktur: zanotuj na boku liczbę 0; wskaż na pierwszą fakturę z listy; sprawdź, czy wskazana faktura jest wystawiona dla firmy, jeśli tak, to dodaj do liczby na boku kwotę ze wskazanej faktury pomnożoną przez 1; w przeciwnym razie dodaj do liczby na boku kwotę ze wskazanej faktury; wskaż na następną fakturę; sprawdź, czy wskazana faktura jest wystawiona dla firmy, jeśli tak, to dodaj do liczby na boku kwotę z wskazanej faktury pomnożoną przez 1; w przeciwnym razie dodaj do liczby na boku kwotę ze wskazanej faktury; podaj wartość liczby na boku jako wynik; Przedstawiony algorytm działa dla danych wejściowych o N > 0 Podstawy informatyki (3) p.8 Podstawy informatyki (3) p.9 Struktury sterujace (4) Schematy blokowe algorytmy moga zawierać iteracje zagnieżdżone, np.: wykonaj A dokładnie N razy, gdzie A jest w postaci wykonuj B aż do Q wykonaj A dokładnie N razy jest tu pętla zewnętrzna wykonuj B aż do Q jest pętla wewnętrzna instrukcja skoku skocz do G, gdzie G oznacza pewne miejsce w algorytmie TAK dodaj wskazywaną kwotę pomnożoną przez -1 do "na boku" Start zanotuj "na boku" 0; wskaż na pierwszą fakturę; czy faktura jest dla firmy? NIE dodaj wskazywaną kwotę do "na boku" wypisz liczbę "na boku" TAK czy koniec faktur? NIE Podstawy informatyki (3) p.10 Stop Podstawy informatyki (3) p.11
Sortowanie (1) Sortowanie (2) dane do sortowania: nieuporzadkowana lista elementów rezultat sortowania: lista elementów uporzadkowana w ustalonej kolejności, np. rosnacej algorytm sortowania babelkowego dla N elementów: wskaż na pierwszy element; porównaj wskazany element z następnym elementem; jeśli porównane elementy są w niewłaściwej kolejności, zamień je miejscami; wskaż następny element; algorytm sortowania przez liniowe wstawianie dla N elementów: zapisz na boku 0; znajdź maksymalny element dla elementów od elementu 1 do elementu N na boku ; zamień znaleziony maksymalny element z elementem ostatnim z przedziału poszukiwań z poprzedniego punktu; dodaj do liczby na boku 1; Podstawy informatyki (3) p.12 Podstawy informatyki (3) p.13 Sortowanie (3) Podprogramy algorytm znajdowania maksymalnego elementu od elementu 1 do elementu M: zapisz na boku pierwszy element; wskaż na pierwszy element; wykonaj co następuje M 1 razy: wskaż na następny element; jeśli wskazany element jest większy od zapisanego na boku, zapisz wskazany element na boku ; algorytm szukania największego elementu w odniesieniu do algorytmu sortowania przez liniowe wstawianie jest podprogramem (procedura) zalety podprogramów: możliwość wykonania tego samego algorytmu dla różnych danych uproszczenie zapisu większych algorytmów znaczne uproszczenie czytania i analizowania algorytmów podprogram jest rozszerzeniem istniejacej listy instrukcji elementarnych łatwiejszy proces projektowania algorytmów poprzez zbliżanie się do celu stopniowo poprzez użycie podprogramów jeszcze nieistniejacych Podstawy informatyki (3) p.14 Podstawy informatyki (3) p.15
Rekurencja (1) Rekurencja (2) rekurencja to zdolność podprogramu do wywołania samego siebie algorytm rekurencyjny obliczania n! (silnia): n! = n (n 1) (n 2)... 2 1 n! = n (n 1)! algorytm podprogramu liczacego silnię dla liczby n podprogram silnia z n jeśli n jest 0, to wynikiem jest 1 w przeciwnym razie wynikiem jest n pomnożone przez wartość podprogramu silna z n 1 wróć; algorytm główny obliczajacy 10! : wywołaj silnia z 10 Podstawy informatyki (3) p.16 algorytm iteracyjny obliczania n! (silnia): podprogram silnia z n zapisz na boku 1; zapisz na drugim boku 2; wykonaj co następuje n 1 razy: pomnóż na drugim boku przez na boku i wynik umieść na boku ; dodaj do na drugim boku 1; wróć, wynik jest zapisany na boku ; algorytm główny obliczajacy 10! : wywołaj silnia z 10 Podstawy informatyki (3) p.17 Wieże Hanoi (1) Wieże Hanoi (2) zadanie polega na przeniesieniu wszystkich (N) krażków ze słupka A na słupek B przy pomocy słupka C w ten sposób, że na krażek mniejszy nie można położyć większego po uzyskaniu takiego stanu dalsze zadanie sprowadza się do przenieś wszystkie (N 1) krażki ze słupka C na słupek B przy pomocy słupka A algorytm ma za zadanie wypisać sekwencję kroków potrzebnych do wykonania zadania Podstawy informatyki (3) p.18 Podstawy informatyki (3) p.19
Wieże Hanoi (3) algorytm rekurencyjny podprogramu wypisujacego sekwencję kroków stanowiacych rozwiazanie zadania Wież Hanoi: podprogram przenieś N z X na Y używając Z jeśli N jest 1, to wypisz X -> Y ; w przeciwnym razie wykonaj: wywołaj przenieś N 1 z X na Z używając Y ; wypisz X -> Y ; wywołaj przenieś N 1 z Z na Y używając X; wróć; algorytm główny dla 3 krażków: wywołaj przenieś 3 z A na B używając C; Podstawy informatyki (3) p.20