1 / 25
Programowanie I. Wprowadzenie. Proces programowania
Aleksander Denisiuk
Uniwersytet Warmi ´nsko-Mazurski Olsztyn, ul. Słoneczna 54
denisjuk@matman.uwm.edu.pl
6 lutego 2018
Wprowadzenie. Proces programowania
Programowanie Cztery kroki programowania
Najnowsza wersja tego dokumentu dost ˛epna jest pod adresem
http://wmii.uwm.edu.pl/~denisjuk/uwm
Programowanie
Programowanie
❖Programowanie Cztery kroki programowania
3 / 25
Programowanie
Programowanie
❖Programowanie Cztery kroki programowania
● Rozwi ˛azanie konkretnego zagadnienia za pomoc ˛a komputera
✦ sporz ˛adzenie programu
■ kompletna, dokładne i zrozumiałe rozwi ˛azanie zagadnienia
● Program komputerowy a przepis kulinarny
Cztery kroki programowania
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
5 / 25
Kroki
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
1. Formułowanie zadania
2. Projektowanie rozwi ˛azania 3. Kodowanie programu
4. Utrzymanie programu
● Dokumentacja
Formułowanie zadania
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
7 / 25
● Umowa mi ˛edzy u˙zytkownikiem a programist ˛a 1. dokładno´s´c
✦ wykluczy´c niejednoznaczno´sci 2. kompletno´s´c
✦ rozwa˙zy´c równie˙z bł ˛edne dane 3. zrozumiało´s´c
● Balans pomi ˛edzy trzema wymaganiami
Case study
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
● Czy zagadnienie jest dobrze sformułowane?
wprowadi´c, uporz ˛adkow´c i wy´swietli´c trzy liczby
Standardowe sformułowane
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
9 / 25
1. Nazwa
2. Ogólne opisanie 3. Dane wej´sciowe 4. Dane wyj´sciowe 5. Bł ˛edy
6. Przykład
Case Study
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
Nazwa
Sortowanie trzech liczb Opisanie
Wprowadzenie trzech liczb całkowitych i wy´swietlenie ich w rosn ˛acej kolejno´sci
Dane Wej ´sciowe
Wprowadza si ˛e trzy liczby całkowite, po jednej w ka˙zdej linijce. Liczba całkowita składa si ˛e z jednej lub wi ˛ecej cyfr dziesi ˛etnych, opcjonalnie poprzedzonych znakiem + lub −.
Dane Wyj ´sciowe
Wy´swietla si ˛e w jednej linijce trzy wprowadzone liczby w kolejno´sci od mniejszej do wi ˛ekszej, z lewa na prawo.
Poszczególne liczby rozdzielone s ˛a spacj ˛a.
Case Study. Bł ˛edne dane
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
11 / 25
Bł ˛edne Dane
1. Je˙zeli wprowadzono mniej ni˙z trzy liczby, program czeka na kontynuacj ˛e wej´scia
2. Wszystkie wprowadzone dane, oprócz pierwszych trzech linijek, s ˛a ignorowane
3. Je˙zeli linijka zawiera wi ˛ecej, ni˙z jedn ˛a liczb ˛e, program ko ´nczy prac ˛e, wy´swietlaj ˛ac komunikat:
Bł ˛ad danych: w ka˙zdym wierszu powinno by´c po jednej liczbie
Case Study. Przykład
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
Przykład Wej ´scie:
-3 2 +17
Wyj ´scie:
-3 2 +17
Bł ˛edne dane. Niezdefiniowane zachowanie
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
13 / 25
● undefined behaviour
✦ w programach
✦ w kompilatorze C
Projektowane
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
● Sformułowanie zadania przemieni´c na algorytm
✦ metoda dedukcyjna
✦ metoda indukcyjna
● pseudokod
Kodowanie
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
15 / 25
● Translacja algorytmu na program
● J ˛ezyki programowania
✦ kod maszynowy
✦ niskopoziomowe i wysokopoziomowe
✦ kompilowane, interpretowane, JIT kompilacja
✦ j ˛ezyki ogólne a specjalizowane
✦ dynamicznie, statycznie typowane
✦ programowanie imperatywne, deklaratywne, programowanie obiektowe, etc
Popularne j ˛ezyki programowania
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
● TIOBE programming community index
1. Java (14,639%) 2. C (7,002%)
3. C++ (4,751%) 4. Python
5. C#
6. Visual Basic .NET 7. JavaScript
8. J ˛ezyk asemblera 9. PHP
10. Perl
11. Ruby
12. Visual Basic 13. Swift
14. R
15. Objective-C 16. Go
17. MATLAB
18. Delphi/Object Pascal 19. PL/SQL
20. Scratch
J ˛ezyki programowania
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
17 / 25
● Fortran
✦ John Backus
● Ada
✦ Jean Ichbiah
● C
✦ Ken Thompson
✦ Dennis Ritchie
✦ Brian Kernighan
J ˛ezyki obiektowe
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
● Smalltalk
✦ Alan Kay
● Simula
● Objective C
✦ Brad Cox
● C++
JIT
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
19 / 25
● C# (.net)
✦ Anders Hejlsberg
● Java
✦ James Gosling
J ˛ezyki deklaratywne
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
● Prolog
✦ Alain Colmeraurer
● Lisp
✦ John McCarthy
Bardzo dobre j ˛ezyki programowania
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
21 / 25
● Eiffel
✦ Bertrand Meyer
● Scheme
✦ Guy L. Steele Jr.
● Haskell
✦Lennart Augustsson
● Erlang
✦ Mike Williams Joe Armstrong
J ˛ezyki skryptowe
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
● Basic
✦ Thomas Kurtz
● Perl
● Python
✦Guido van Rossum
● Rubi
Python
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
23 / 25
Guido van Rossum, 2014
J ˛ezyk C (1972)
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
● Imperatywny, strukturalny, wysokiego poziomu j ˛ezyk ogólnego przeznaczenia
● K&R C (1978)
● ANSI C (1989)
● C99
● C11
● C++ (1983)
✦ ANSI C++ (1996)
✦ C++11
✦ C++17
Utrzymanie programu
Programowanie Cztery kroki programowania
❖Kroki
❖Formułowanie
❖Projektowane
❖Kodowanie
❖Utzrymanie
25 / 25
● Testowanie
● Szkolenie u˙zytkowników
● Poprawka bł ˛edów
● Modyfikacja
● Dokumentacja