Download
programowanie strukturalne n.
Skip this Video
Loading SlideShow in 5 Seconds..
PROGRAMOWANIE STRUKTURALNE PowerPoint Presentation
Download Presentation
PROGRAMOWANIE STRUKTURALNE

PROGRAMOWANIE STRUKTURALNE

178 Views Download Presentation
Download Presentation

PROGRAMOWANIE STRUKTURALNE

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. PROGRAMOWANIE STRUKTURALNE Wprowadzenie do programowania w TP. część 4

  2. Temat: Opracowanie bibliotek programów.

  3. Biblioteki • do każdego programu możną dołączyć: • standardowe (crt, graph), • własne biblioteki (funkcji i procedur). • Bibliotekę dołączamy stosując słowo kluczowe USES

  4. UNIT tekst; INTERFACE user crt; procedure WriteXY(x,y:byte; s:string); IMPLEMENTATION procedure WriteXY(x,y:byte; s:string); begin GotoXY(x,y); write(s); end; begin end.

  5. Użycie biblioteki użytkownika program dolacz_biblioteke; uses crt,tekst; begin WriteXY(5,5,'Witaj'); readln; end.

  6. Temat: Dyrektywy kompilatora.

  7. Dyrektywy kompilatora • Ponieważ dyrektywy kompilatora, nie są częścią języka programowania, muszą być zapisywane w kodzie źródłowym w taki sposób, aby translator mógł odróżnić i wyodrębnić dyrektywę, • Typowym rozwiązaniem jest zapis dyrektyw kompilatora w formie komentarza o własnej składni. Zespół zdefiniowanych dyrektyw stanowi również pewien język.

  8. Przykłady pierwszy • writeln('Sprawdzimy twoj kompilator.'); • {$IFDEF WINDOWS} • writeln('Pracujesz pod WINDOWS'); • {$ELSE} • writeln('Pracujesz pod DOS'); • {$ENDIF}

  9. Przykład drugi • writeln('Podaj liczbe:'); • {$I-} readln(liczba); {$I+} • if ioresult=0 then writeln('Twoja liczba to:',liczba) • else writeln('Bˆad! To nie byˆa liczba!');

  10. Zbiór innych dyrektyw • {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,R-,S+,V+,X-} • {$M 16384,0,655360}

  11. Temat: Obsługa urządzeń peryferyjnych.

  12. Przerwania • Przerwanie to procedura obsługijakiegoś zdarzenia: • sprzętowego, np.: ruchu myszą, wciśnięcia klawisza, zegara, • programowego: sprawdzenia czy klawisz został naciśnięty, włączenia jakiegoś trybu graficznego, drukowanie, odczyt/zapis z dysku itp. • Przerwań jest 256, ich adresy są umieszczone w pamięci pod adresem 0:0w tablicy o rozmiarze 1024 bajtów (1 kB).

  13. Przerwania

  14. Temat: Rejestry procesora.

  15. Wstęp do rejestrów procesora • Praca procesora polega na pobieraniu z pamięci rozkazów wraz z danymi i wykonywaniu ich. • Dane i rozkazy niczym między sobą się nie różnią. Liczba może być traktowana jako kod rozkazu lub wartość innego. • W celu szybszego operowania danymi każdy procesor został wyposażony w kilka rejestrów, czyli bajtów pamięci (najszybszej).

  16. Procesor 8086 • Ponieważ wszystkie procesory 8086 i w górę są ze sobą kompatybilne (przynajmniej powinny), będziemy zajmować się w głównej mierze 8086. • Procesor 8086 (i nowsze, jednak te posiadają jeszcze inne rejestry) posiada 14 rejestrów 16-bitowych.

  17. Rejestry ogólnego przeznaczenia

  18. Rejestry ogólnego przeznaczenia

  19. Rejestr IP (Instruction Pointer) • Jest jeszcze jeden rejestr, ale jest on nie osiągalny bezpośrednio przez programistę. • Zawiera on adres aktualnie wykonywanej instrukcji i może być modyfikowany przez rozkazy sterujące pracą programu.

  20. Rejestry segmentowe

  21.  Rejestr znaczników • Do tego rejestru również nie można odwoływać się bezpośrednio. Do tego celu używa się specjalnych instrukcji. Dla programisty rejestr ten to 9 pojedynczych bitów informujących o stanie procesora, np. by porównać dwie wartości (wykonać polecenie Pascal'owe IF) używa się instrukcji CMP.  • Część z tych znaczników można ustawiać, a część tylko odczytywać.

  22. Temat: Wbudowany asembler.

  23. Główne komendy • MOV (kopiuj) • ADD (dodawanie) • SUB (odejmowanie) • MUL (mnożenie) • DIV (dzielenie bez znaku) • INC (inkrementacja) • DEC (dekrementacja)

  24. Główne komendy • CMP (porównanie) • JE (wykonaj skok, jeżeli równe) • POP (zdejmij ze stosu) • PUSH (odłóż na stos) • CALL (wywołanie funkcji/podprogramu) • RET (powrót) • LOOP (pętla)

  25. Przykład (LPT) • program asembler_LPT; • uses crt,dos; • begin • asm • mov dx, $3BC (adres LPT) • mov ax, 0 (lub inna wartość) • mov dx, ax (kopiuj) • end; • end.

  26. Temat: Lokalizacja i usuwanie usterek w programie za pomocą debuggera.

  27. Czym jest debugowanie? • Kiedy piszemy program i działa on niepoprawnie (nawet jeśli uważamy, że wszystko zakodowane jest tak, jak powinno być) musimy prześledzić kod, aby dowiedzieć się, gdzie jest przyczyna błędu. • Jednym ze sposobów jest wykorzystanie np. procedury writeln , aby śledzić zmienne. • Innym znacznie lepszym i profesjonalnym sposobem jest użycie debugera Turbo Pascal.

  28. Debuger • Aby uruchomić program w trybie debugera naciskamy F7. Każde naciśnięcie klawisza F7 powoduje wykonanie kolejnej linii programu. Podobnie F8, jednak nie wchodzi do procedur i funkcji. • Jeśli naciśniemy Alt+F5 można podejrzeć okno programu i/lub powrócić do debugera. • Aby kontrolować wartość zmiennej należy w zakładce Debug wybrać opcję Add Watch i podać nazwę zmiennej.

  29. Temat: Poprawność i złożoność obliczeniowa algorytmów.

  30. Podstawowym elementem przy rozwiązywaniu zadanego problemu jest dobór algorytmu i struktury danych. • Najważniejszymi aspektami algorytmu są jego: • poprawność • złożoność: czasowa i pamięciowa.

  31. Poprawność – własność stopu. • Jednym z podstawowych elementów poprawności algorytmu jest własność stopu: dla poprawnych danych wejściowych algorytm zatrzymuje się w skończonym czasie. • Pytanie może odnosić się albo do konkretnych danych wejściowych, albo do wszystkich możliwych danych. Jeśli program zatrzymuje się dla wszystkich danych, to mówimy, że ma własność stopu.

  32. Złożoność czasowa • W przypadku złożoności czasowej, z reguły wyróżnimy pewną operację dominującą, a czas będziemy traktować jako liczbę wykonanych operacji dominujących. • W przypadku sortowania, operacją dominującą jest przeważnie porównanie dwóch elementów, a w przypadku przeglądania drzewa - jedno przejście w drzewie między wierzchołkami. W przypadku algorytmów tekstowych operacją dominującą jest porównanie dwóch symboli.

  33. Złożoność pamięciowa • Podobnie jak złożoność czasowa jest miarą czasu działania algorytmu, tak złożoność pamięciowa jest miarą ilości wykorzystanej pamięci. • Jako tę ilość najczęściej przyjmuje się użytą pamięć. Możliwe jest również obliczanie rozmiaru potrzebnej pamięci fizycznej wyrażonej w bitach lub bajtach.

  34. Temat: Optymalizacja działania programów.

  35. Optymalizacja - przykłady • Operacje matematyczne: • dobieraj optymalne typy zmiennych; • zamiast dzielenia przez 2 lub potęgę dwójki stosu j przesunięcie bitów, np. y:=x div 2 zamień na y:=x shr 1; • zamiast dodawać lub odejmować jeden stosu inkrementację lub dekrementację, np. i:=i+1 zamień inc(i),

  36. Optymalizacja - przykłady • Operacje logiczne: • nie porównuj typu boolean, np. zamiast if z=true … pisz samo if z … • na początku warunku zawsze używaj wyrażeń, które wykonują się szybciej, jak w przykładzie: if (a=0)and(a*x+b>0) then … • próbuj zamieniać warunki logiczne na działania matematyczne: if (x=1) then x:=2 else x:=1; zamień na x:=3–x;

  37. Optymalizacja - przykłady • Optymalizacja kodu: • stosuj procedury i funkcje, jednak staraj się unikać wielokrotnego wykonywania tej samej funkcji lepiej zapamiętaj wartość; • w pętli unikaj niepotrzebnych obliczeń, zrób co konieczne przed pętlą, pamiętaj w pętli wykona się to wiele razy; • jeśli jakieś wyliczenia miałyby wykonać się dwukrotnie, wylicz je raz i zapamiętaj wartość.

  38. Ważne • Jeśli chcesz, aby twoje algorytmy działały naprawdę szybko, stosuj powyższe zasady oraz myśl . • Przede wszystkim dbaj o swój kod w momencie gdy go piszesz. • Wiedz, że napisany program będziesz poprawiał, tylko wtedy, gdy będzie to konieczne.

  39. Temat: Dokumentacja techniczna programu.

  40. Niezbędne elementy dokumentacji • opis plików programu – każdy plik powinien zawierać informacje o autorze, dacie modyfikacji i nazwie, • opis zmiennych – każda zmienna powinna zawierać komentarz na jej temat, • opis funkcji i procedur, każda funkcja i procedura powinny zawierać opis jej działania, dokładny opis parametrów i wartości przekazywanej, • ponadto powinny być omówione np. formaty plików itp.

  41. KONIEC