1 / 41

PROGRAMOWANIE STRUKTURALNE

PROGRAMOWANIE STRUKTURALNE. Wprowadzenie do programowania w TP. część 4. Temat:. Opracowanie bibliotek programów. 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.

ince
Télécharger la présentation

PROGRAMOWANIE STRUKTURALNE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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

More Related