PROGRAMOWANIE STRUKTURALNE

Slides:



Advertisements
Podobne prezentacje
Tryby adresowania Prawie każda operacja wykonywana przez mikroprocesor wykonywana jest na pewnych argumentach (lub argumencie). Sposoby wskazywania argumentów.
Advertisements

Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Wirtualizacja zasobów w systemach operacyjnych
Programowanie w PMC.
Sortowanie przez scalanie
Język C/C++ Funkcje.
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Wykład 3: Jak działa typowy mikroprocesor?
Języki programowania C++
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
CPU.
ZŁOŻONOŚĆ OBLICZENIOWA
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Podstawowe składniki funkcjonalne procesora i ich rola.
Wprowadzenie do informatyki Wykład 5
Język asemblera i koncepcja von Neumanna
Wprowadzenie do informatyki Wykład 5
Kurs Pascala – spis treści
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Systemy operacyjne.
Systemy operacyjne Bibliografia:
Komputer, procesor, rozkaz.
Temat nr 10: System przerwań
Wykład 2 struktura programu elementy języka typy zmienne
Wstęp do interpretacji algorytmów
Wprowadzenie do programowania w języku Turbo Pascal
Algorytmy Marek Pudełko
Schemat Hornera Mgr inż. Michał Szucki.
Algorytmy.
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Programowanie strukturalne i obiektowe
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Andrzej Jędryczkowski Nie da się napisać większego programu bez podziału go na części zwane podprogramami. Podprogram to wyróżniona część programu.
Turbo Pascal Turbo Pascal - jedna z popularniejszych implementacji kompilatorów języka PASCAL, zintegrowane srodowisko programistyczne, produkt firmy Borland.
Algorytmy z przykładami w Turbo Pascal 7.0
20 września 2003r. Centrum Kształcenia Ustawicznego im. St. Staszica w Koszalinie Wstęp do algorytmiki Autor: Marek Magiera.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia w Turbo Pascalu.
Procedury i funkcje.
Zasada działania komputera
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
Pliki tekstowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików tekstowych. Pliki takie zawierają informację niezakodowaną
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Przerwanie ang. interrupt.
Algorytmy.
Podstawy informatyki 2013/2014
Podstawy programowania
ZAPIS BLOKOWY ALGORYTMÓW
Derekursywacja i optymalizacja kodu
Procesor, pamięć, przerwania, WE/WY, …
Architektury procesorów rdzeniowych mikrokontrolerów.
Dokumentacja obsługi programów Kamil Smużyński Piotr Kościński.
Podstawy programowania
Wstęp do interpretacji algorytmów
Pętle – instrukcje powtórzeń
Instrukcje warunkowe w php. Pętla FOR Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej.
Tryby adresowania i formaty rozkazów mikroprocesora
PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania.
T ESTY JEDNOSTKOWE W C# Alicja Majka, A GENDA Wprowadzenie do środowiska Czym są testy jednostkowe i po co je stosować? XUnit, NUnit Pokrycie.
Dominik Benduski Michał Mandecki Podstawy Visual Basic w Excelu.
POLITECHNIKA POZNAŃSKA
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Technika Mikroprocesorowa 1
Zapis prezentacji:

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

Opracowanie bibliotek programów. 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

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

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

Dyrektywy kompilatora. Temat: Dyrektywy kompilatora.

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.

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

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!');

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

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

Przerwania Przerwanie to procedura obsługi jakiegoś 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:0 w tablicy o rozmiarze 1024 bajtów (1 kB).

Przerwania Przerwanie Opis 00h Błąd dzielenia przez zero 10h ustawianie rozdzielczości i trybu  13h obsługa HDD: bezpośredni odczyt, zapis i formatowanie sektorów dysku 19h reset systemu 1Ah  czas systemowy - pobieranie i ustawianie 33h obsługa myszy: pokazywanie/ukrywanie, pobieranie zdarzeń, położenia itp. … itd..

Temat: Rejestry procesora.

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).

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.

Rejestry ogólnego przeznaczenia AX (ang. Accumulator) Rejestr ten jest wykorzystywany głównie do operacji arytmetycznych i logicznych. Można go traktować jako rejestr 16-bitowy bądź jako dwa rejestry 8-bitowe: AH i AL. AH jest to bardziej znacząca część rejestru , AL mniej znacząca część. BX (ang. Base Registers) Rejestr bazowy, głównie wykorzystywany przy adresowaniu pamięci. Rejestr ten również dzieli się na dwa rejestry 8-bitowe: BH i BL. CX (ang. Counter Registers) Rejestr ten jest bardzo często wykorzystywany jako licznik. Dzieli się na dwa rejestry CH i CL. DX (ang. Data Register) Rejestr danych, wykorzystywany przy operacjach mnożenia i dzielenia, a także do wysyłania i odbierania danych z portów. Dzieli się na DH i DL.

Rejestry ogólnego przeznaczenia SI (ang. Source Index) Rejestr indeksujący pamięć oraz wskazujący obszar z którego przesyła się dane. Zazwyczaj występuje w połączeniu z DS tworząc adres logiczny DS:SI DI (ang. Destination Index) Rejestr indeksujący pamięć oraz wskazujący obszar, do którego przesyłamy dane. Występuje z ES, tworząc adres logiczny ES:DI SP (ang. Stack Pointer) Wskaźnik stosu. BP (ang. Base Pointer) Rejestr używany do adresowania pamięci.

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.

Rejestry segmentowe CS (ang. Code Segment) Rejestr zawierający segment aktualnie wykonywanego rozkazu. Razem z IP tworzy pełny adres logiczny CS:IP kolejnej instrukcji do wykonania. DS (ang. Data Segment) Rejestr zawierający segment z danymi. ES (ang. Extra Segment) Rejestr zawierający segment np. przy operacjach przesyłania łańcuchów. SS (ang. Stack Segment) Rejestr zawierający segment stosu.

 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ć.

Temat: Wbudowany asembler.

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

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)

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.

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

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.

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.

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

Najważniejszymi aspektami algorytmu są jego: 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.

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.

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.

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.

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

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),

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;

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ść.

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.

Dokumentacja techniczna programu. Temat: Dokumentacja techniczna programu.

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.

KONIEC