Jerzy Nawrocki, Wprowadzenie do informatyki



Podobne dokumenty
Podstawy programowania III WYKŁAD 4

Jerzy Nawrocki, Wprowadzenie do informatyki

Jerzy Nawrocki, Wprowadzenie do informatyki

Jerzy Nawrocki, Wprowadzenie do informatyki

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Język UML w modelowaniu systemów informatycznych

Podstawy projektowania systemów komputerowych

STUDIA I STOPNIA ZOSTANĄ URUCHOMIONE JEŻELI ZGŁOSI SIĘ CO NAJMNIEJ 20 KANDYDATÓW

Programowanie obiektowe

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2012/2013

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Algorytmy i struktury danych. wykład 1

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Programowanie obiektowe

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Uchwała nr 172/2014 Senatu Uniwersytetu Przyrodniczego w Poznaniu z dnia 28 maja 2014 r.

Programowanie i projektowanie obiektowe

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

Poznań, 15 maja 2014 roku DOP /2014

ZARZĄDZENIE Nr 27/2018 REKTORA UNIWERSYTETU PRZYRODNICZO-HUMANISTYCZNEGO. w Siedlcach

Wykład 1 Inżynieria Oprogramowania


Programowanie w języku C++ Podstawowe paradygmaty programowania

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Diagramy klas. dr Jarosław Skaruz

XPrince dla architektów 1

Zasady organizacji projektów informatycznych

15. Funkcje i procedury składowane PL/SQL

Programowanie obiektowe

REKRUTACJA KANDYDATÓW NA STUDIA W UNIWERSYTECIE PRZYRODNICZYM W LUBLINIE W ROKU AKADEMICKIM 2010/2011

konkurs świadectw: średnia z wszystkich ocen z języka polskiego i historii zapisanych na świadectwie dojrzałości

Modelowanie obiektowe

Podstawy Programowania

Załącznik nr 1 do Uchwały nr 9/2019 Senatu PWSZ w Wałcz z dnia r.

Technologie obiektowe

2 / 18. zakłada osobiste konto rejestracyjne identyfikatorem jest adres (konieczność posiadania adresu), hasło, PESEL,

Na podstawie 42 ust. 5 Statutu Uniwersytetu Przyrodniczego w Poznaniu, zarządza się, co następuje:

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

Szablony funkcji i szablony klas

Inżynieria Oprogramowania

Grupa treści kształcenia, w ramach której przedmiot jest realizowany Przedmiot kierunkowy

Komputerowe systemy sterowania

WARUNKI I TRYB REKRUTACJI na studia wyższe w Politechnice Wrocławskiej na rok akademicki 2015/2016

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

WARUNKI I TRYB REKRUTACJI NA STUDIA W POLITECHNICE OPOLSKIEJ W ROKU AKADEMICKIM 2010/2011

Algorytmy. Paweł Dudzik, Adrian Guzik. Kraków, 6 lipca AGH Kraków. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca / 37

Struktury. Przykład W8_1

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Programowanie obiektowe

STUDIA I STOPNIA ZOSTANĄ URUCHOMIONE JEŻELI ZGŁOSI SIĘ CO NAJMNIEJ 20 KANDYDATÓW

Język ludzki kod maszynowy

Definicja obiektowego modelu danych: struktura i zachowanie

Wstęp do programowania

Wstęp do programowania

Jerzy Nawrocki, Wprowadzenie do informatyki

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Regulamin rekrutacji na studia w Wyższej Szkole Zarządzania Marketingowego i Języków Obcych w Katowicach w roku akademickim 2011/2012

Inżynieria Oprogramowania:

Techniki modelowania programów Kod przedmiotu

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

POLITECHNIKA WARSZAWSKA WYDZIAŁ MATEMATYKI I NAUK INFORMACYJNYCH UL. KOSZYKOWA 75 TEL. (22) WARSZAWA FAX.

Podstawy modelowania programów Kod przedmiotu

Programowanie obiektowe

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

Inżynieria Oprogramowania

Podstawy algorytmiki i programowania - wykład 4 C-struktury

SZKOLNY REGULAMIN REKRUTACJI na rok szkolny 2016/2017 w ZESPOLE SZKÓŁ W SZCZEKOCINACH

Inżynieria oprogramowania. Część 5: UML Diagramy klas

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Jak zostać studentem Wydziału Technologii Materiałowych i Wzornictwa Tekstyliów?

Semantyka i Weryfikacja Programów - Laboratorium 3

UML. zastosowanie i projektowanie w języku UML

Zobacz folder Zasady rekrutacji, wydziały, kierunki, specjalności 2015/2016

Język UML. dr inż. Piotr Szwed C3, pok

Warunki i tryb rekrutacji na studia na kierunek inżynieria bezpieczeństwa w Szkole Głównej Służby Pożarniczej na rok akademicki 2019/2020

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Dynamiczne struktury danych

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Struktury danych: stos, kolejka, lista, drzewo

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Modelowanie danych, projektowanie systemu informatycznego

Informacje dla Gimnazjalisty

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Lista 5 Typy dynamiczne kolejka

Opłaty za studia dla cudzoziemców. 1. Stacjonarne i niestacjonarne studia I i II stopnia prowadzone w języku polskim opłata roczna w euro:

Wstęp do programowania. Różne różności

Informatyka 1. Przetwarzanie tekstów

Zarządzenie Nr 19/19 Rektora Politechniki Świętokrzyskiej z dnia 11 kwietnia 2019 r.

Zasady podjęcia studiów w języku angielskim w Uniwersytecie Opolskim przez studentów zagranicznych (m.in. Wydział Ekonomiczny)

Zarządzenie Nr 26/19 Rektora Politechniki Świętokrzyskiej z dnia 16 maja 2019 r.

Transkrypt:

Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Kryzys oprogramowania Struktury danych i inżynieria oprogramowania Przekraczanie terminów Przekraczanie budżetu Nadgodziny Kiepska jakość Struktury danych i inż. oprogr. (2) Rozwój języków programowania Cel wykładu Języki modelowania (UML) Języki dziedzinowe (YACC) Języki wysokiego poziomu (C, Pascal, ) Języki asemblerowe Przedstawić: Podstawowe struktury danych Podstawowe diagramy języka UML Elementy metod formalnych Struktury danych i inż. oprogr. (3) Struktury danych i inż. oprogr. (4) Cykl życia Plan wykładu Wymagania Projekt Wykonanie Podstawowe struktury danych Diagramy języka UML Metody formalne Struktury danych i inż. oprogr. (5) Struktury danych i inż. oprogr. (6) Struktury danych i inżynieria oprogramowania 1

Jerzy Nawrocki, C Wartość Indeks int Age [4]; Age[emp]= Age[emp] + 1; Elementarne struktury danych Tablice Age 5 10 15 30 0 1 2 3 Age [j+1] Pascal Age [0..3] of integer; Age[emp]:= Age[emp] + 1; Struktury danych i inż. oprogr. (7) Wielomiany p(x) = a k x Σ k = a 0 x 0 + a 1 x 1 + a 2 x 2 + k=0 float p(float x, int n, float a[ ]){ float result, PowerX; int k = 0; PowerX = 1; result = a[0] * PowerX; while (k < n){ k = k+1; PowerX = PowerX * x; result = result + a[k] * PowerX; return result; Struktury danych i inż. oprogr. (8) Born: Cash: Elementarne struktury danych Rekordy Student 1990 777,51 First Elementarne struktury danych Listy i wskaźniki Sequence Next 1990 1984 79 Val C struct Student {int Born float Cash;; struct Student Einstein; Einstein.Born= 79; Student.Age Pascal Student = record Born: integer; Cash: real; end; var Einstein: Student; Einstein.Born := 79; Struktury danych i inż. oprogr. (9) C struct Elem {int Val Elem *Next;; struct Elem *First; X = (*First).Val; Pascal Elem = record Val: integer; Next: ^Elem; end; var First: ^Elem; X := First^.Val; Struktury danych i inż. oprogr. (10) Stos Stos: push(e), pop Kolejka: insert(e), take Kolejka priorytetowa: insert(e), takemax First nil 1990 1984 79 push (e) pop Struktury danych i inż. oprogr. (11) Struktury danych i inż. oprogr. (12) Struktury danych i inżynieria oprogramowania 2

Jerzy Nawrocki, Kolejka Kolejka priorytetowa First nil 1990 1984 79 First nil 1990 1984 79 insert (e) take Last insert (e) takemax Struktury danych i inż. oprogr. (13) Struktury danych i inż. oprogr. (14) Wartość(Ojciec) Wartość(Syn) Wartość(Ojciec) Wartość(Syn) 90 40 60 Struktury danych i inż. oprogr. (15) 90 40 60 Struktury danych i inż. oprogr. (16) Wartość(Ojciec) Wartość(Syn) Wartość(Ojciec) Wartość(Syn) 90 40 60 Struktury danych i inż. oprogr. (17) 90 60 40 Struktury danych i inż. oprogr. () Struktury danych i inżynieria oprogramowania 3

Jerzy Nawrocki, Wartość(Ojciec) Wartość(Syn) Wartość(Ojciec) Wartość(Syn) 90 60 40 Struktury danych i inż. oprogr. (19) 90 60 40 Struktury danych i inż. oprogr. (20) Wartość(Ojciec) Wartość(Syn) 90 60 40 Struktury danych i inż. oprogr. (21) Wartość(Ojciec) Wartość(Syn) 90 60 40 Struktury danych i inż. oprogr. () Implementacja za pomocą wskaźników 90 60 40 Struktury danych i inż. oprogr. (23) 90 60 nil nil Struktury danych i inż. oprogr. (24) Struktury danych i inżynieria oprogramowania 4

Jerzy Nawrocki, Drzewo binarne bez wskaźników a b c d e f g h i j k 1 2 3 4 5 6 7 8 9 10 11 Ojciec(x) =? a Drzewo binarne bez wskaźników a b c d e f g h i j k 1 2 3 4 5 6 7 8 9 10 11 Ojciec(x) =? a b c b c d e f g d e f g h i j k h i j k Struktury danych i inż. oprogr. (25) Struktury danych i inż. oprogr. (26) Drzewo binarne bez wskaźników a b c d e f g h i j k 1 2 3 4 5 6 7 8 9 10 11 Ojciec(x) =? Ojciec(6) = 3 Ojciec(7)= 3 Ojciec(10)= 5 b Ojciec(11)= 5 d e a f c g Drzewo binarne bez wskaźników a b c d e f g h i j k 1 2 3 4 5 6 7 8 9 10 11 Ojciec(x)= entier(x/2 ) Ojciec(6) = 3 Ojciec(7)= 3 Ojciec(10)= 5 Ojciec(11)= 5 C int(x/2) Pascal x div 2 h i j k Struktury danych i inż. oprogr. (27) Struktury danych i inż. oprogr. (28) Plan wykładu www.uml.org Podstawowe struktury danych Diagramy języka UML Metody formalne Struktury danych i inż. oprogr. (29) Struktury danych i inż. oprogr. (30) Struktury danych i inżynieria oprogramowania 5

Jerzy Nawrocki, Diagramy UML Diagram stanów Diagramy stanów Diagramy przypadków użycia Diagramy sekwencji Diagramy czynności Diagramy klas... Struktury danych i inż. oprogr. (31) Nieprzyjęty Maturzysta Kandydat Zakwalifikowany Przyjęty Student /Zdanie Matury /Złożenie podania na studia /Złożenie oryginału świadectwa /Złożenie ślubowania Struktury danych i inż. oprogr. (32) Diagram przypadków użycia Diagram sekwencji Złożenie podania Maturzysta System rekrutacji KReM Maturzysta Obejrzenie wyników rekrutacji Składa podanie i wprowadza oceny Potwierdza przyjęcie podania i ocen Wnosi opłatę rekrutacyjną Czy oceny są poprawne? Są poprawne Potwierdza przyjęcie opłaty Zakwalifikowany Nieprzyjęty Struktury danych i inż. oprogr. (33) Struktury danych i inż. oprogr. (34) Diagram sekwencji Obiekt Transakcja Nazwa klasy Klasy i obiekty Obiekt-1 Obiekt-2 Linia życia obiektu Waluta Ilość Kurs Data Godz Klient WartośćPLN(): float Atrybuty Operacje Struktury danych i inż. oprogr. (35) Struktury danych i inż. oprogr. (36) Struktury danych i inżynieria oprogramowania 6

Jerzy Nawrocki, Klasy i obiekty Jakie atrybuty i operacje? Transakcja Waluta Ilość Kurs Data Godz Klient WartośćPLN(): float Transakcja Waluta USD Ilość 1000 Kurs 3.41 Data 2005.10.13 Godz 13:15 Klient Amica WartośćPLN(): float Transakcja Waluta EUR Ilość 0 Kurs 4. Data 2005.10.14 Godz 11:14 Klient Tivoli WartośćPLN(): float Obywatel NIP Podatek Zaliczka... DoZwrotu(): float... Obywatel PESEL Punkty Karany... DodajPkt(int): float WyzerujPkt() Struktury danych i inż. oprogr. (37) Struktury danych i inż. oprogr. (38) Pracownik Konto: string NoweKonto(string) Dziedziczenie Pracownik Konto: string NoweKonto(string) Dziedziczenie Etatowy Konto: string Pensja: float NoweKonto(string) NowaPensja(float) Godzinowy Konto: string Stawka: float Godz: float NoweKonto(string) NowaStawka(float) NoweGodz(float) Struktury danych i inż. oprogr. (39) Etatowy Pensja: float NowaPensja(float) Godzinowy Stawka: float Godz: float NowaStawka(float) NoweGodz(float) Struktury danych i inż. oprogr. (40) Etatowy Pensja: float NowaPensja(float) Pracownik Konto: string NoweKonto(string) Godzinowy Stawka: float Godz: float NowaStawka(float) NoweGodz(float) Dziedziczenie 1 1 Asocjacje Struktury danych i inż. oprogr. (41) Struktury danych i inż. oprogr. (42) Struktury danych i inżynieria oprogramowania 7

Jerzy Nawrocki, Asocjacje Asocjacje 1 1..4 1 * 0.. nieskończoności Struktury danych i inż. oprogr. (43) Struktury danych i inż. oprogr. (44) Nawigowalność Nawigowalność 1 1..4 1 1 Struktury danych i inż. oprogr. (45) Struktury danych i inż. oprogr. (46) Ograniczenia Ograniczenia 1 1 1 1..4 {.DataŚlubu ==..DataŚlubu Struktury danych i inż. oprogr. (47) {.RokUrodz >..RokUrodz 50 Struktury danych i inż. oprogr. (48) Struktury danych i inżynieria oprogramowania 8

Jerzy Nawrocki, Diagramy języka UML Plan wykładu Podstawowe struktury danych Diagramy języka UML Metody formalne Struktury danych i inż. oprogr. (49) Struktury danych i inż. oprogr. (50) Przetestuję. Metody formalne Ograniczenia testowania Czy on jest poprawny? Program Przeczytam. Udowodnię. Testowanie może pokazać obecność błędów, ale nigdy ich brak E. W. Dijkstra Struktury danych i inż. oprogr. (51) Struktury danych i inż. oprogr. (52) Silnia Silnia int Silnia (int n) { /*** PRE n >= 0 ***/ int k, s; k= 0; s= 1; /*** INV s== k! ***/ while (k!= n) { k= k + 1; s= s * k; /*** INV s== k! ***/ return s; /*** POST s== n! ***/ int Silnia (int n) { /*** PRE n >= 0 ***/ 1 = 0! int k, s; k= 0; s= 1; /*** INV s== k! ***/ while (k!= n) { k= k + 1; s= s * k; /*** INV s== k! ***/ return s; /*** POST s== n! ***/ Struktury danych i inż. oprogr. (53) Struktury danych i inż. oprogr. (54) Struktury danych i inżynieria oprogramowania 9

5 000 LOC 7 000 LOC Jerzy Nawrocki, Silnia Silnia s== k! int Silnia (int n) { /*** PRE n >= 0 ***/ int k, s; k= 0; s= 1; /*** INV s== k! ***/ while (k!= n) { s== k! k== k + 1 k= k + 1; s == (k 1)! s= s * k; /*** INV s== k! ***/ return s; /*** POST s== n! ***/ s== (k 1)! int Silnia (int n) { /*** PRE n >= 0 ***/ int k, s; k= 0; s= 1; /*** INV s== k! ***/ while (k!= n) { s == (k 1)! s == s * k k= k + 1; s == (k 1)! * k == k! s= s * k; /*** INV s== k! ***/ return s; /*** POST s== n! ***/ Struktury danych i inż. oprogr. (55) Struktury danych i inż. oprogr. (56) Silnia Dowodzenie poprawności programów k == n int Silnia (int n) { /*** PRE n >= 0 ***/ int k, s; k= 0; s= 1; /*** INV s== k! ***/ while (k!= n) { k= k + 1; s= s * k; /*** INV s== k! ***/ return s; /*** POST s== n! ***/ Wolfgang Reif Specyfikacja Program Struktury danych i inż. oprogr. (57) Struktury danych i inż. oprogr. (58) eqns forall x,y ofsort nat x + 0 = x; x + succ(y) = succ(x+y); x plus(x, zero())= x x,y plus(x,succ(y))= succ(plus(x,y)) Specyfikacja aksjomatyczna type ext_nat_numbers is sorts nat opns 0 nat suc: nat nat _ + _ : nat, nat nat int zero () int succ (int x) int plus (int x, int y) Nasza intuicja: plus(2, 3)= 5 Struktury danych i inż. oprogr. (59) int zero () { return 1; int succ (int x) { return 2*x; x plus(x, zero())= x x,y plus(x,succ(y))= succ(plus(x,y)) Niestandardowa implementacja int plus (int x, int y) { return x * y; Implementacja spełnia te warunki... ale plus(2,3)= 6 Nasza intuicja: plus(2, 3)= 5 Struktury danych i inż. oprogr. (60) Struktury danych i inżynieria oprogramowania 10