Programowanie strukturalne i obiektowe
Programowanie polega na zapisaniu algorytmów w formie programów zrozumiałych dla komputera. Program jest zapisany w języku programowania w postaci ciągu instrukcji, ściśle według reguł języka. Program opisuje proces przekształcania danych wejściowych w dane wyjściowe według pewnego algorytmu. Dane wejściowe muszą być dostarczone do programu przez użytkownika, w celu umożliwienia jego wykonania. Dane wyjściowe są generowane przez program i stanowią wyniki działania programu.
Algorytm jest pojęciem ogólnym, związanym nie tylko z programowaniem, stosowanym także w innych dziedzinach wiedzy, np. ekonomii oraz w życiu codziennym. Określa on sposób (przepis) wykonania pewnego zadania, rozwiązania określonego problemu lub osiągnięcia zamierzonego celu. Algorytmy wykonuje się w życiu codziennie, wykonując czynności lub różne obliczenia. Algorytm opracowany dla programu określa sposób przekształcania danych wejściowych w dane wyjściowe zgodne z cele - zadaniem algorytmu. Do realizacji jednego celu można zastosować wiele algorytmów.
Algorytm składa się z opisu:
obiektów (bytów), na które są wykonywane działania,
działań realizujących cel algorytmu,
kolejność działania.
Działanie jest czynnością obliczeniowa wykonywaną na obiektach. Działania algorytmu i ich kolejność mogą być opisane:
słownie, np. tak jak opisuje się przepisy kulinarne,
w postaci wykazu ponumerowanych czynności, nazywanych też krokami algorytmu,
w postaci schematu blokowego, nazwanego też siecią działań.
Cechy algorytmów:
poprawność [ dowodzenie poprawności alg.],
skończoność [dowodzenie skończoności alg.],
złożoność obliczeniowa: czasowa i pamięciowa [wyznaczanie],
efektywność (wydajność) [wyznaczanie],
Algorytm jest poprawny, jeżeli jest zgodny ze specyfikacją, jest jednoznaczny i kompletny.
Specyfikacja jest ścisłą definicją problemu opisująca dane, wyniki i związki zachodzące pomiędzy nimi.
Jednoznaczność nazywana też dobrą określonością jest spełniona wtedy, gdy wszystkie polecenia i operacje są zrozumiałe dla czytającego, a kolejność działań nie pozostawia żadnej dowolności.
Algorytm jest skończony, jeżeli dla każdego zestawu danych wejściowych się kończy.
Złożoność obliczeniową określa się za pomocą pewnej funkcji opisującej jak zmienia się czas jego wykonania, liczonych jako liczba operacji charakterystycznych dla algorytmu, w funkcji rozmiaru danych. Np. operacjami charakterystycznymi dla algorytmów sortowania są porównania i zamiany, rozmiar danych określany jest przez liczbę elementów do posortowania.
Efektywność to złożoność w praktycznym sensie. Efektywność uwzględnia w funkcji szacującej czas wykonania algorytmu i współczynniki stałe oraz pozwala określić, których z dwóch argumentów o takiej samej złożoności jest lepszy.
Zmienne
(variable)
Zmienne to konstrukcje programistyczne, które pozwalają na przechowywanie danych. Każda zmienna posiada swoją nazwę oraz typ.
Nazwa zmiennej to jednoznaczny identyfikator, dzięki któremu istnieje możliwość odwoływania się do zmiennej w kodzie programu.
Typ zmiennej określa, jakiego rodzaju dane zmienna może przechowywać.
Def.
Zmienna - para uporządkowana: nazwa (albo adres) i przyporządkowana jej wartość, tzn. reprezentant danych określonego typu, istniejący jako miejsce w pamięci (odpowiedniego rozmiaru), zarezerwowane przez kompilator w wyniku umieszczenia w programie stosownej deklaracji. Zmienna jest dostępna w programie za pomocą nazwy użytej w deklaracji, z którą kojarzy się adres przyporządkowany zmiennej w pamięci.
Podczas wykonywania programu zmiennej można przypisywać różne wartości, zawsze jednak zgodne z zadeklarowanym typem (wyjątek stanowią języki beztypowe, np. Logo).
Do przypisywania wartości zmiennej (do jej podstawiania) służy instrukcja przypisania.
Rozróżnia się zmienne proste i zmienne ze wskaźnikami (indeksowane), będące elementami tablic. Pojęcie zmiennej jest ogólne, tablica może też być traktowana jako zmienna, również rekord może być zmienną (pomijając fakt, że każde jego pole jest zmienną). Co jest zmienną, a co nie zależy od własności semantycznych języka programowania.
Ze względu na zakres rozróżnia się zmienne lokalne i globalne.
Zmienna globalna (global variable) - zmienna, która jest widoczna, czyli dostępna w całym programie lub w jego wydzielonym fragmencie (np. w module i zazwyczaj istnieje przez cały czas jego wykonywania. [Jedna z zasad dobrego programowania nakazuje minimalizować użycie zmiennych globalnych.]
Czas życia zmiennej dzieli je na zmienne statyczne, dynamiczne i automatyczne.
Zmienna statyczna (static variable) - zmienna istniejąca w programie przez cały czas działania programu; zmienna, dla której wielkość potrzebnej pamięci jest znana już podczas kompilacji, a pamięć jest jej przydzielana podczas ładowania programu. W porównaniu ze zmienną globalną zakres zmiennej statycznej może być ograniczony.
Zmienna automatyczna (zmienna lokalna, zmienna prywatna, local variable, automatic variable, private variable) - zmienna istniejące w wywoływanym bloku programu do jego opuszczenia, zmienna, której widoczność (czyli zakres) ograniczono do fragmentu programu, w którym jest naprawdę potrzebna; fragmentem takim jest na ogół blok, w którym zmienna lokalna została zadeklarowana. Prócz zwiększenia bezpieczeństwa (ograniczenie dostępności zmiennej) zaletą tej zmiennej jest lepsze wykorzystanie pamięci, ponieważ zmienna lokalna ulega likwidacji po opuszczeniu przez wykonywany program bloku, w którym ją zadeklarowano.
Zmienna dynamiczna (dynamic variable)- zmienna generowana i kasowana podczas wykonywania programu, [tworzona za pomocą specjalnej instrukcji (new, malloc) i usuwana za pomocą odpowiedniej instrukcji (delete, free) lub automatycznie, podczas łączenia nieużytków.
Zmienne typów podstawowych
Deklaracje zmiennych
Przed wykorzystaniem w kodzie programu, każda zmienna musi być zadeklarowana. W niektórych językach programowania jak: C, C++, czy też w Javie czynność deklarowania zmiennych może być wykonana w dowolnym wierszu programu, w miejscu, gdzie zmienne te są potrzebne. W innych językach jest odmiennie np. w Pascalu.
Deklaracja zmiennej (ogólna konstrukcja):
Nazwa_zmiennej typ_zmiennej;
Średnik kończący deklarację „;” informuje kompilator o zakończeniu instrukcji programu (deklaracja jest instrukcją). Jest on niezbędny.
W jednej linii (kodu programu) można zadeklarować więcej niż jedną zmienną, o ile są tego samego typu.
Ogólna konstrukcja deklaracji zmiennych dla tego samego typu:
Typ_zmiennej nazwa1, nazwa2, nazwa3;
Wykład Programowanie strukturalne i obiektowe
Wykład 3
Definicje / Pojęcia podstawowe
Opracowała: Marzena Kowalska-Skrok
Wrzesień 2008
3 / 3