Teoria programowania.pdf

(144 KB) Pobierz
Teoria
1. Akcja- pewne działanie wywołane poleceniem
Proces-ciąg akcji
Obliczenie-wykonanie działań matematycznych
Obiekt-jest przedmiotem działania akcji
Wynik-jest efektem działania akcji
Dane-wszystko to co jest i co Może zostać przetworzone
Algorytm-przepis na coś, sposób na zrobienie czegoś, zestaw instrukcji i danych jakie
trzeba teraz wykonać krok po kroku.
Program-uporządkowany zbiór instrukcji zrozumiały dla komputera. Algorytm wyrażony w
języku określonego typu.
Translator-program napisany w języku zorientowanym maszynowo, dokonujący tłumaczenia
programu napisanego w języku wysokiego poziomu (tekstu źródłowego) na język
zorientowany maszynowo.
Interpreter-rodzaj programu komputerowego (translatora), który analizuje kod źródłowy, a
przeanalizowane fragmenty (zazwyczaj jedna instrukcja) są wykonywane.
Wykonanie powtórnie tego samego fragmentu wymaga powtórnej analizy.
2.Rekurencja- taka funkcja, która wywołuje sama siebie. Funkcja taka musi posiadać warunek
zaokrąglenia rekurencji. Jeżeli takiego warunku nie posiada funkcja wywoływała by sama
siebie.
Iteracja-powtarzanie (najczęściej wielokrotne) zwłaszcza z każdorazowym przekształceniem
w analogiczny sposób np. Gdy mamy kod: i=0; while (While=While+1} to pomijając że pętla
nigdy się nie skończy otrzymamy w pierwszej iteracji i=1, w następnej i=2…..
W TP występują trzy instrukcje iteracyjne
-[dla] FOR
-[dopóki] WHILE
-[powtarzaj] REPEAT
Ciąg FIBONACCIEGO
a1=1
a2=1
an=an-1+an-2, n E N
3. Od problemu do wyniku:
* Precyzyjne zdefiniowanie problemu (cel do osiągnięcia, dane wejściowe)
* Analiza problemu, prowadząca do wyboru metody rozwiązania (algorytmu)
* Opisanie algorytmu (metody) w konkretnym j programowania
Od problemu do wyniku - Schemat:
Dane Obiekty(dane)
↓ ┌──┴───┐
Problem → Analiza → Algorytm → Program → Wynik
(zadanie) problemu ↑ ↑
Moduły Procedury
Cel
└──┬───┘
Akcje(instrukcje)
Właściwości programu i algorytmu:
*Poprawność- wykonanie alg (prog) dla dowolnych danych wejściowych daje zawsze prawidłowe wyniki
*Skończoność-wykonanie kolejnych akcji odbywa się w skończonej liczbie kroków.
*Sprawność-ten algorytm (program) jest lepszy, dla którego mniejsza jest złożoność czasowa
(liczy szybciej) oraz złożoność pamięciowa (zajmuje mniej miejsca w pamięci)
*Stabilność- algorytm jest stabilny, jeśli podczas jego wykonywania nie dochodzi do
niekontrolowanej kumulacji błędów zaokrągleń.
4. Instrukcja przypisania
Z:=W (Z- zmienna W-wyrażenie) (zmiennej Z przypisuje wartość W)
Instrukcja WE/WY IN/OUT
Instrukcje We/Wy służą do wprowadzania danych do programu i wyprowadzenia wyników, przy tym w
szczególności, wynikiem może być komentarz
PODAJ (x);
PISZ(x); x-zmienna, stała ciąg znaków
Instrukcje złożone-są tworzone przy pomocy nawiasów operacyjnych
Początek; Instrukcja 1; Instrukcja 2; itd.; Instrukcja n; Koniec;
Instrukcja warunkowa prosta- JEŻELI warunek TO akcja;
Warunek musi być wyrażeniem logicznym o wartościach PRAWDA lub FAŁSZ (true or false)
5. Schematy blokowe- poglądowa forma graficznego przedstawienia algorytmu (korzystamy w nim ze ściśle
określonych figur - bloków)
Typy bloków:
*Przetwarzania(operator)—dotyczy czynności bezwarunkowych
*Warunkowy-umożliwia zapis dowolnego warunku logicznego, od którego zależy jedna z dróg realizacji
algorytmu
Symbole graficzne::
Wprowadzenie/wyprowadzenie
Odczyt/zapis danych
Przygotowanie (początek/koniec)
Proces zdefiniowany
Blok decyzyjny
6. Przegląd języków programowania
I generacja-maszynowe strukturalne/niestrukturalne
II generacja- asemblery(symboliczne) Ada / cobol
III generacja-wysokiego poziomu modula-2 / fortran
IV generacja-wykorzystanie gotowych modułów C++ / Basic
V generacja-sztuczna inteligencja
C
7.
Programowanie proceduralne- wykonywanie szeregu czynności na zbiorze danych
Procedury- (klocki) (bloki), które po uprzednim przetestowaniu, odpowiednio poukładane będą rozwiązaniem
problemu.
Programowanie strukturalne-pozwala na usystematyzowanie dostępu do procedur i umożliwia operowanie na
dużych zbiorach danych. „dziel i rządz”- idea Pr struktur
Programowanie obiektowe- połączenie danych i procedur, które na nich operują w jedną całość –„obiekt”-
samodzielną jednostkę z własną „tożsamością” i charakterystyką
8. Podstawowe elementy języka Turbo Pascal 7.0:
- słowa kluczowe np.: begin, end, function…
- identyfikator – ciąg liter i cyfr zaczynający się od litery. Liczba znaków może być dowolna lecz tylko pierwsze
63 znaki są znaczące.
- liczby – w miejsce przecinka używa się kropki, w miejsce podstawy potęgowania 10 używa się litery „E” lub
„e”.
- łańcuchy – służą do reprezentowania ciągu znaków. Jeżeli łańcuch przedstawia tylko jeden znak, to nazywa się
go literałem znakowym.
- literały logiczne – przedstawiają wartości logiczne prawda i fałsz (true, false).
- komentarz – dowolny ciąg znaków ograniczony z lewej strony nawiasem klamrowym otwierającym i z prawej
zamykającym np.: {tekst}.
9. Struktura programu w języku Turbo Pascal.
-nagłówek- składa się ze słowa kluczowego, po którym występuje nazwa programu.
-deklaracja modułu- uses
-blok- składa się z dwóch części opisowych(opisu danych i części wykonawczej)
-znak
Kropka-koniec programu, jest bardzo ważnym znakiem. Wiersz programu nie może zawierać więcej niż 127
znaków.
Można napisać przykład programu.
10. Typy danych
Typy proste-podstawowe typy j TP. Za ich pomocą określa się bardziej złożone struktury danych. Składają się ze
skończonego uporządkowanego zbioru wartości.
Typy łańcuchowe-służą do reprezentacji ciągu znaków, w tym niemieckiego znaku spacji.
Typy strukturalne-służą do opisu obiektów złożonych, przy czym dany obiekt można opisać na kilka różnych
sposobów.
Typy obiektowe-opisują złożoną strukturę danych o ustalonej liczbie elementów składowych, z którym każdy
może być polem lub metodą tj elementem opisującym wykonywaną operacje na danym obiekcie.
4666511.001.png
Typy wskaźnikowe- służą do dynamicznego zarządzania pamięcią. Zmienne te nie posiadają identyfikatorów, a
odwołanie następuje za pomocą wskaźnika.
TYPY PROSTE:
Porządkowe-wszystkie typy proste za wyjątkiem rzeczywistym
Wyliczeniowy-stosowany dla zbiorów o największej liczbie elementów na których nie wykonuje się operacji.
Okrojony-służą do ograniczenia wartości(zakresów) dowolnego z typów porządkowych
Całkowity-(Integer)-wszystkie elementy tego typu stanowią zbiór liczb całkowitych
Znakowy-określa zbiór znaków. Elementami typu znakowego są znaki ASCII
Logiczny-jest typem wyliczeniowym przyjmującym duże wartości. FALSE =0, TRUE >0
11. Klasyfikacja instrukcji:
-proste- nie zawierają innych instrukcji składowych przypisania, pusta, procedury, (wywołania), inne
-strukturalne-mogą zawierać składowe w postaci instrukcji: złożona, iteracyjna, warunkowa, asemblerowa
12.
Zainicjowanie pracy:
Zawiera polecenia sterujące wykonywaniem gotowego programu.
RUN (Ctrl+F9)-skompilowanie programu w trybie Make, a następnie aktywowanie go
STEPOVER F8- wykonywanie najbliższej instrukcji
GoTo-F7-zestawienie tymczasowej pułapki w wierszu wyróżnionym przez kursor, następnie wykonanie
programu aż do wpadnięcia w pułapkę albo do zakończenia.
PROGR.RESET(Ctrl+F2)-kiedy „kiedy ktoś skończy śledzenie programu, może to przerwać”)
KOMPILACJA PROGRAMU (COMPIL= Alt+F9), zawiera polecenia umożliwiające kompilacje, czyli
przetłumaczenie tekstu źródłowego na postać wynikową-wykonywaną przez komputer.
TOPIC SEARCH- wyświetlanie informacji, na temat elementu programu znajdującego się w miejscu kursora
Ctrl+F1
13. Podstawowy zestaw operacji matematycznych
Operatory arytmetyczne:
+ dodawanie,
- odejmowanie ,
* mnożenie,
/ dielenie.
Operatory relacji:
< mniejszy
<= niewiększy
= równy
<>różny
>=niemniejszy
> większy
Operatory bitowe:
Shl- „przesuwa” wszystkie bity określoną, wartość w lewo
Skr- przesuwa” wszystkie bity określoną, wartość w prawo
Operator logiczny-end, or, not, xor- suma modulo2
14. Podstawowy zestaw instrukcji - instrukcje proste (przypisania, skoku, pusta, instrukcja wywołania
procedury).
- przypisania- przypisanie wartości zmiennej (:=)
- skoku – GoTo (idź do)
- pusta – przesuwa, nie wymaga użycia żadnego symbolu gdy niema żadnej instrukcji
- wywołania procedury- służy do wywołania procedury (wypisanie nazwy procedury)
15. Podstawowy zestaw instrukcji - standardowe procedury wejścia/wyjścia. (czytanie/pisanie)
Służą do wprowadzenia danych koprogramu i wyprowadzenia wyników, przy tym w szczególności wynikiem
może być komentarz. Read(x) podaj Write(x) pisz (readln lub writeln)
x-może być zmienną, stałą, ciągiem znaków.
16. Podstawowy zestaw instrukcji - instrukcje strukturalne. Instrukcja złożona, instrukcja warunkowa,
instrukcja wyboru.
Instrukcja złożona- jest to ciąg instrukcji rozpoczynających się słowem begin i kończącym end.
Instrukcja warunkowa- IF...THEN, , instrukcja sprawdza warunek
Instrukcja wyboru- CASE…OF, instrukcja wybiera dany „argument” ze zbioru elementów.
17. Podstawowy zestaw instrukcji - instrukcje iteracyjne (REPEAT, WHILE oraz FOR)
Służą do wielokrotnego wykonywania pewnej grupy lub jednej instrukcji.
REPEAT- służy do opisywania iteracji ze sprawdzeniem warunku na końcu
Repeat
Instrukcja – instrukcje są tak długo wykonywane, aż spełniony zostanie warunek
Until warunek
WHILE – „dopóki” służy do opisywania iteracji ze sprawdzeniem warunku na początku (WHILE wyrażenie DO
instrukcja). Instrukcja jest wykonywana aż wartość wyrażenia jest poprawna.
FOR-powoduje ona wykonanie jakiejś operacji określoną ilość razy (FOR licznik:=początek TO koniec DO
instrukcja)
18. Instrukcja losowa:
Instrukcje losowe, wywołujemy słowem RANDOMIZE, a następnie inicjujemy poleceniem RANDOM (…) -
(zbiór elementów z których ma losować).
Służy do generowania liczb losowych w Pascalu. Używamy instrukcji RANDOM, jako parametr podajemy zakres
przedziału z którego losowane będą liczby. Funkcja losowa zwraca jedynie nieujemne liczby z zakresu 0…65536.
Zakres powinien być powiększony o 1.
Program będzie zawsze losował te same liczby, chyba że użyjemy procedury RANDOMIZE
19. Proste typy danych . Sposób wyświetlania liczb rzeczywistych w Pascalu i zmiana notacji wyświetlania liczb
rzeczywistych.
Sposób wyświetlania liczb rzeczywistych (liczba: ilość miejsc: ilość po przecinku, np.: x:10:2, x- liczba,
wartość)
Proste typy danych -każda stała, zmienna, funkcja itp. Musi być ściśle określonego typu. Kompilator rezerwuje
odpowiednią ilość pamięci na dany element. Typ ten charakteryzuje zbiór wartości przyjmowanych przez niego.
Typy:
-liczb całkowitych
-liczb rzeczywistych
-znakowy
-logiczny
Typ rzeczywisty -dane tego typu stanowią zbiór liczb rzeczywistych. Poszczególne podtypy różnią się zakresem
oraz ilością zajmowanej przez nie pamięci.
SINGLE, REAL, COMP, DOUBLE, EXTENDED.
20. Proste typy danych. Funkcje zaokrąglania liczb rzeczywistych do postaci całkowitej (konwersja typów
REAL na INTEGER).
REAL->INTEGER funkcją round(…) np. round(1,25)=1, round(1,65)=2
TRUNC(xxx)- polega na odcięciu części ułamkowe np. (1,99)= 1
21. Proste typy danych. Przekształcanie skomplikowanych wyrażeń typu BOOLEAN do tzw. postaci normalnej
(właściwości operacji logicznych).
Typ logiczny, typ boolowski (ang. boolean) - w językach programowania takich jak C i C++ oznaczenie typu
danych przeznaczonego dla reprezentowania wartości logicznych - prawda (1) i fałsz (0).
Jest najprostszym typem danych w Pascalu. Jest to zmienna wyliczeniowa, która może przyjąć jedną z dwóch
wartości: FALSE lub TRUE.
Zmienna BOOLEAN zajmuje dokładnie 1 bajt (8 bitów) w pamięci komputera. Wartość FALSE-0 , TRUE-1.
Zmienne typu BOOLEAN występują, jako warunek wykonywania części programu w instrukcji IF oraz w pętlach
REPEAT i WHILE
22. Proste typy danych. Konwersja typów CHAR na INTEGER i odwrotnie.
CHAR->INTEGER
y=ord(‘a’);
Write(y); (y-wartość liczbowa)
INTEGER->CHAR
x:=chr(liczba);
write(x); (x-litera)
Funkcja zwraca znak o podanym numerze porządkowym zgodnie ze standardem ASCII. Numer porządkowy
podajemy w parametrze kod_znaku. Parametr ten powinien być typu byte (0-255). W komputerze każdemu znakowi
przypisany jest nr. Porządkowy. Np. literka ‘y’ ma nr. Porządkowy 89 x:=chr(65)
23. Proste typy danych. Definiowanie typu wyliczeniowego i okrojonego. Konwersja typu wyliczeniowego na
typ INTEGER.
Typ wyliczeniowy-definiuje zbiór identyfikatorów oznaczających poszczególne wartości przez ich wyliczenie.
Pierwszy identyfikator ma wartość 0 kolejny 1 itd.
Type TTydzien = (Niedz,Pon,…,Sobota)
Typ okrojony-określa podzbiór dowolnego typu porządkowego lub wyliczeniowego. Jest on ograniczony
pewnym zakresem. Wykorzystywany jest do określenia typu zmiennych, które mogą przyjąć wartości ze ściśle
określonego przedziału np. type Trok=1990…1999
Var a:TRok
Teraz zmienna a może przyjąć wartość od 1990 do 1999
24. Wyrażenia arytmetyczne , wyrażenia logiczne (możliwości matematyczne języka Turbo Pascal) oraz
wyrażenia konkatenacji.
Wyrażenia- są zapisami operacji, które wykonujemy na stałych, zmiennych oraz funkcjach
Wyrażenia arytmetyczne- wyrażenia w wyniku których, otrzymuje się dana, typu liczbowego, czyli całkowitego
lub rzeczywistego.
Wyrażenia logiczne-wyrażenia, w wyniku których otrzymuje się daną typu logicznego. Matematycznie
odpowiadają one logicznemu rachunkowi zadań.
Wyrażenia konkatenacji- (sklejania)-wynikiem jest napis czyli łańcuch znaków służą do sklejania jeden łańcuch
dwóch lub więcej łańcuchów znaków. Operatorem jest ‘+’ : Turbo’+’_’+’Pascal wynik: Turbo_Pascal
Możliwości matematyczne języka TP:
-liczby pierwsze
-liczby Armstronga (równa sumie potęg cyfr, składowych, wynik potęgi jest równy l cyfr np. (153=1 3 +5 3 +3 3 );
-przeliczanie licz z układu dwójkowego
-przeliczanie liczb z układu szesnastkowego-liczby bliźniacze (to liczby pierwsze, których różnica wynosi 2
np.(3,5)
25. Deklaracja i wywołanie procedury.
Procedure nazwa [(lista parametrów formalnych)] {deklaracja lokalnych stałych, zmiennych, typów}
Begin
{część operacyjna}
End.
Procedurę należy deklarować, powyżej części głównej programu
Deklaracja procedury-powinna znajdować się przed częścią operacyjną programu, czyli głównym słowem begin, a
po deklaracji zmiennych, z których ona korzysta. Jeżeli chcemy by była zdeklarowana za miejscem jej pierwszego
wywołania należy użyć słowa kluczowego FORWARD, wewnątrz można deklarować zmienne lokalne, czyli takie
które obowiązują tylko w tej procedurze.
26. Pojęcie zmiennej lokalnej i zmiennej globalnej . Efekt zakrywania zmiennych przez procedury.
Zmienna-obszar pamięci przechowujący jakieś dane.
Zmienna lokalna-zmienna widoczna tylko w obrębie danej procedury lub bloku, tworzona w momencie
inicjowania bloku i niszczona w momencie kończenia bloku.
Zmienna globalna-zmienna widoczna w obrębie całego programu, jest w pamięci przez całe trwanie programu.
Wszystkie zmienne zadeklarowane przed procedurą słówkiem „VAR” to procedury globalne. Mogą być użyte
wszędzie- zarówno w głównym programie jak i w procedurach. Jeżeli chcemy aby niektóre zmienne używane
były tylko w danej procedurze- to deklarujemy je:
VAR
Zmienna1, zmienna2: longint; zmienne globalne
PROCEDURE pisanie;
VAR
Zmienna3, zmienna4:longint; zmienne lokalne
BEGIN
(polecenie..)
END;
BEGIN
(główna część programu…);
END.
27. Deklaracja i wywołanie funkcji. Dyrektywa FORWARD
Funkcja-szczególny przypadek procedury w której następuje przekazywanie parametru przez zmienną.
Dyrektywa FORWARD-(zapowiedź zdefiniowana funkcji, np. póżniej) Def wszystkich funkcji i procedur
wykorzystywanych w programie muszą być umieszczone przed miejscem ich wywołania. Wywołanie może
nastąpić w części operacyjnej programu, definicje muszą poprzedzać główne słowo begin. Ograniczenie to
można obejść wykorzystując tzw deklaracje zapowiadające rozpoczynane kluczowym słowem FORWARD.
28. Procedury i funkcje rekurencyjne
procedura – „czarna skrzynka” do której wkładamy/wycinamy dane i nie interesuje nas co się tam dzieje, czyli
przetwarzanie danych wejściowych na wyjściowe wszystkie zmienne deklarowane wewnątrz procedury to
lokalne i się są widoczne na zewnątrz tej procedury. Procedura jest „półprzezroczysta”
Zgłoś jeśli naruszono regulamin