POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i...

56
Wykład 1 . Historia i wstęp do programowania. dr inż. Joanna Putz-Leszczyńska Podstawy programowania Podstawy programowania

Transcript of POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i...

Page 1: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Wykład 1. Historia i wstęp do programowania.

dr inż. Joanna Putz-Leszczyńska

Podstawy programowaniaPodstawy programowania

Page 2: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Informacje organizacyjne

Wykładowcy: Dr inż. Tomasz Śliwiń[email protected], pok. 561Dr inż. Mariusz [email protected], pok. 561Dr inż. Piotr PałkaP.Pał[email protected], pok. 554

Zakład Badań Operacyjnych i Systemowch

• Regulamin, harmonogram zajęć, prezentacje do wykładu, oceny z laboratorium i kolokwiów znajdować się będą w wydziałowym systemie komunikacji ze studentami: http://studia.elka.pw.edu.pl

– tam należy wejść w opcje indywidualne i zalogować się przy pomocy konta wydziałowego

Page 3: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Regulamin

•Szczegóły w pliku regulamin.pdf•3 Kolokwia (odbywają się na wykładach):▫I kolokwium 10 pkt ▫II kolokwium 15 pkt▫Kolokwium poprawkowe

(mogą Państwo poprawiać albo I kolokwium albo II)

•Ćwiczenia 35 pkt, 7 zajęć▫Wiedza – 14 pkt. - wymagane wcześniejsze przygotowanie,

sprawdzane za pomocą wejściówki▫Aktywność – 6 pkt. po jednym punkcie na ćw 1-6▫Mini-projekt – 15 pkt. wykonywany w zespole 2-4 osób

• Laboratoria 40 pkt▫3 indywidualne projekty programów w języku C

Page 4: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Regulamin

• Warunkiem zaliczenia jest przepołowienie kolokwiów, laboratoriów i ćwiczeń

•Oceny:▫3 <51,61) pkt▫3.5 <61,71) pkt▫4 <71,81) pkt▫4.5 <81,91) pkt▫5 <91, 100> pkt

Page 5: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Organizacja zajęć

• Laboratoria (sala 09)▫Na pierwszych laboratoriach dostaną Państwo konta na

serwerze wydziałowym (Biuro Obsługi Informatycznej, pok.15)

•Terminarz ćwiczeń ▫W pliku plan_cw_i_wykladow.pdf

•Kolokwia w czasie wykładów nr. 7, 14 i 15

Page 6: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Temat 1: Podstawowe pojęcia i proste programy. Pojęcia algorytmu, programu, kodu wykonywalnego. Kompilacja i wykonanie programu. Sieci działań. Struktura programu. Komentarze i dokumentacja programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Definicje zmiennych. Instrukcje: czytania, pisania, przypisania. Klasyfikacja typów. Stałe, wyrażenia i funkcje standardowe. Instrukcje: warunkowa, złożona. Instrukcje cykliczne: pętla for, pętle sterowane warunkiem. Instrukcje przerywające wykonanie pętli. Instrukcja wielokrotnego wyboru.

Temat 2: Tablice, rekordy i pliki. Tablice: definiowanie tablic, zmienna tablicowa i indeksowana. Operacje na tablicach. Algorytmy sortowania i przeszukiwania w tablicach, porównanie złożoności obliczeniowej. Struktury i rekordy, operacje wykonywane na rekordach. Definiowanie plików, zasady dostępu, operacje wejścia – wyjścia.

Temat 3: Funkcje i rekurencja. Zasady definiowania i wywołania funkcji. Parametry formalne i aktualne. Wiązanie parametrów przez wartość i referencję. Zasięg nazw, zasłanianie. Rekurencja jako jedna z podstawowych technik konstruowania algorytmów. Zasada działania rekurencji i warunek końca. Przykłady algorytmów rekurencyjnych.

3Program wykładu

Page 7: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Temat 4: Wskaźniki i listy. Zmienne dynamiczne i wskaźniki. Przydział i zwalnianie pamięci. Dynamiczna rezerwacja tablic. Listy jednokierunkowe: zasada tworzenia, podstawowe operacje na listach. Listy dwukierunkowe i cykliczne. Iteracyjne i rekurencyjne algorytmy przetwarzania list.

Temat 5: Struktury drzewiaste. Drzewa binarne i binarne drzewa sortowane (BST). Podstawowe operacje na drzewach z wykorzystaniem rekurencji. Drzewa wyważone (AVL i RBT). Kopce, B-drzewa, zastosowania do baz danych. Złożoność obliczeniowa.

Temat 6: Przegląd algorytmów, algorytmy grafowe. Przegląd zasad konstruowania algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne. Grafy i algorytmy grafowe: przeszukiwanie grafu, problem najkrótszej ścieżki, minimalne drzewa rozpinające grafów.

4Program wykładu

Page 8: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Algorytmy+struktury danych=programy. N. Wirth

Język ANSI C Kernighan, Ritchie

Stephen Prata Szkoła Progtamowania – Język C

5Literatura uzupełniająca

Page 9: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.
Page 10: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Historia i Hardware

•Maszyna analityczna Babbage’a (1822)•Komputer Atanasoff-Berry’ego (ABC, 1937)▫wymagała stałego nadzoru człowieka-operatora

•Z3, Zuse KG (1941)•Colossus MarkII (1943) •Electrical Numerical Integrator and Computer

(ENIAC, 1946)▫Lampy elektronowe (prekursor tranzystora)

Page 11: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Hardware

•Komputery zbudowane są z elementów fizycznych zwanych hardware’m (sprzętem komputerowym)

•Sprzęt umożliwia przechowywanie i    przetwarzanie danych zgodnie z zapisanym programem 

•Sprzęt komputerowy nie przechowuje danych przy    użyciu tych samych symboli, których używają ludzie 

Page 12: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Bity & Bajty

•Najmniejszym i najbardziej podstawową jednostką    informacji (danych) w komputerze jest     bit:▫0 lub 1

•Grupa 8 bitów tworzy grupę określaną bajtem:▫Może reprezentować 256 różnych wzorców▫najmniejsza adresowalna jednostka  

informacji pamięci komputerowej 

Page 13: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Podstawowe komponenty komputera

Central processing unit (CPU)

Control

Arithmeticand logic unit (ALU)

Page 14: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Central Processing Unit (CPU)

• Przetwarzanie danych: ▫Arithmetic and Logic Unit (ALU): służy do wykonywania

prostych operacji arytmetycznych (takich jak dodawanie, odejmowanie itp.), operacji logicznych (np. Ex-Or) pomiędzy dwiema liczbami oraz operacje jednoargumentowe takie jak przesunięcie bitów, negacja.

▫Pipelines (przetwarzanie potokowe) jest jednym ze sposobów sekwencyjnego (szeregowego) przetwarzania danych.

• Control unit: kieruje i monitoruje ogólne    funkcjonowanie komputera, w szczególności   przetwarzanie danych:▫Śledzi gdzie znajduje się następna instrukcja▫Obsługuje wszystkie instrukcje

CPUs jest powszechnie znany jako microprocessor

Page 15: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Podstawowe komponenty komputera

Central processing unit (CPU)

Main memory

Secondary storage

Control

Arithmeticand logic unit (ALU)

Page 16: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Main Memory Unit

• Jest skonstruowana jako pamięć o dostępie swobodnym

(random access memory – RAM):▫Dostęp do losowego fragment pamięci jest równie szybki jak do    

pozostałych części 

▫Ulotna: dane są tracone w momencie wyłączenia komputera

• Rozmiar jest określany zwykle w bajtach (MB or GB)

• Przechowuje dane i instrukcje w postaci sekwencji bajtów     

• Program musi znajdować się w pamięci głównej, jeśli ma być    

wykonany na komputerze

• Łączy 1 lub więcej bajtów w jedną grupę, zwaną       słowem

Page 17: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Secondary Storage

•Używana jako pamięć stałego  przechowywania programów i danych:   ▫Dyski twarde▫Dyski CD, DVD, …

500 KB 1.2 MB

Page 18: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Podstawowe komponenty komputera

Central processing unit (CPU)

OutputInput

Main memory

Secondary storage

Control

Arithmeticand logic unit (ALU)

Page 19: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Input/Output Unit

• Jednostka wejścia / wyjścia (I / O) zapewniają dostęp do    komputera, pozwalając wprowadzanie i wyprowadzanie danych 

• Jest to interfejs do urządzeń wejścia /wyjścia, mogą być  wbudowane jak i peryferyjne, takie jak klawiatury, ekran,    drukarki, itp…  

Page 20: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Języki programowania

•Program komputerowy: dane i instrukcje wykorzystywane przez komputer do otrzymania określonego wyniku     ▫Program, lub ich zbiór nazywany jest softwarem

•Programowanie: pisanie instrukcji w języku zrozumiałym dla komputera i innych programistów

• Język programowania: zestaw instrukcji, które mogą być wykorzystane do skonstruowania (napisania) programu   

Page 21: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Język maszynowy

•Program (plik) wykonalny: plik, który może być uruchomiony bezpośrednio przez komputer w środowisku systemu operacyjnego

•Programy wykonalne napisane są w języku maszynowym za pomocą liczb binarnych, które są wewnętrznym językiem procesora (język maszynowy)

Języki programowania dzieli się przede wszystkim pod względem stopnia zaawansowania.

Język maszynowy jest językiem pierwszej generacji 1GL Pierwsi programiści rzeczywiście pisali kod w postaci kodu

maszynowego

Przykładowy kod programu:

111010100000000000001111111111111111100010011101100000000010100000001

Page 22: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

•Asemblery: Języki niskiego poziomu, pod względem składni tożsame z maszynowymi, z tą różnicą że zamiast liczb używa się tu łatwiejszych do zapamiętania mnemoników.

Asemblery

Asemblery są językami drugiej generacji (2GL)

?

Przykładowy kod programu:

297D:0100 MOV AX,0006 ; Puts value 0006 at register AX297D:0103 MOV BX,0004 ; Puts value 0004 at register BX297D:0106 ADD AX,BX ; Adds BX to AX contents297D:0108 INT 20 ;Causes end of the Program

result = 6 + 4

Page 23: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Asemblery

•Asembler musi być przetłumaczony:

Program w języku asembler

Program wjęzyku maszynowym

Translator

Translator jest to program tłumaczący programy napisane w określonym języku programowania na język maszynowy. Tłumaczenie takie jest konieczne, ponieważ procesor rozumie tylko język maszynowy.

• 1:1 mapowanie poleceń asemblera na instrukcje w kodzie maszynowym

• w językach wyższej generacji – pojedyncze polecenie jest tłumaczone na wiele instrukcji w kodzie maszynowym

Page 24: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Języki niskiego i wysokiego poziomu

• Języki pierwszej i drugiej generacji nazywane są językami niskiego poziomu ponieważ się ściśle związane z architekturą komputera.

• Program napisany w języku programowania nazywany jest programem źródłowym - kodem źródłowym

• Każdy program napisany w języku innym niż język procesora musi zostać przetłumaczony przez translator aby komputer mógł go zrozumieć.

•Mamy dwa rodzaje translatorów:▫ interpretery (ang. interpreters)▫kompilatory (ang. compilers)oba różnią się między sobą znacznie pod względem sposobu tłumaczenia programu.

Page 25: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Interpretery

Interpretery tłumaczą program w następujący sposób:1. pobierają jedną instrukcję programu2. tłumaczą na język maszynowy3. dają procesorowi do wykonania4. powracają do pkt. 1.

Językami interpretowanymi są na przykład: Basic, Pyton, SQL,  JavaScript, itp.

kod źródłowy wykonanie linii1 linia

Page 26: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Kompilatory

Kompilatory działają w następujący sposób:1. tłumaczą cały program2. zapisują przetłumaczony program w pamięci

komputera lub na dysku

• Program po przetłumaczeniu (skompilowaniu) przez kompilator jest gotowy do wykonania.

• Plik binarny generowany przez kompilator podczas kompilacji pliku z kodem źródłowym nazywamy plikiem obiektowym.

• Językami kompilowanymi są na przykład: Pascal, C, C++, Asembler, COBOL, itp. 

kod źródłowy kod wynikowy

Page 27: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

3GL – języki proceduralne i obiektowe

3GL - języki wysokiego poziomu, proceduralne (imperatywne). W językach tych jedna instrukcja jest tłumaczona na kilka instrukcji procesora, najczęściej od 5 do 10.

Wymyślone w latach 50-tych wprowadziły koncepcję programowania strukturalnego (nazwane

zmienne, wyrażenia algebraiczne) wprowadziły pewien poziom abstrakcji niezależny od sprzętu

Pierwsze przykłady:• Fortran (1956) – używany przez dekady, wciąż gdzieniegdzie

widywany• ALGOL (mid 1950’s)– poprzednik Pascala• COBOL (1959) – wciąż aktualizowany i używany w zastosowaniach

biznesowych

Nowoczesne przykłady:• BASIC (1964) – stworzony do nauki programowania• C, C++ …..• JAVA (1995) – pochodzi od C & C++ - mnogość zastosowań

Page 28: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

3GL – języki proceduralne i obiektowe

• Języki proceduralne: Instrukcje są używane do  tworzenia samodzielnych fragmentów kodu –   procedur, które wykonują ściśle określone operacje

•Procedura: akceptuje dane wejściowe i przekształca je w      jakiś sposób do uzyskania określonego wyniku w postaci      danych wyjściowych

•Procedury często określa się funkcjami i metodami

Page 29: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Dwie perspektywy widzenia programu

•Użytkownika:Wykonywalny plik który wykonuje określone zadania (edytor tekstu, gra, program graficzny)

•Programisty:Plik tekstowy który zawiera instrukcje zapisane w pewnym języku programowania, które w pewnym momencie są tłumaczone na plik wykonywalny

Page 30: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

PROBLEM ALGORYTM PROGRAM

Algorytmizacja Kodowanie

7Algorytmizacja

?

Algorytmizacja – proces tworzenia konkretnego algorytmu.

Algorytm -zbiór określonych reguł postępowania, które stosowane w ustalonym porządku prowadzą do rozwiązania określonego zadania.

Page 31: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Algorytm

•Algorytm: określa konkretne kroki postępowania by osiągnąć pożądany rezultatUstaw n równe 100Ustaw a równe 1Ustaw b równe 1000Oblicz sumę = n(a+ b)/2Wyświetl sumę

•Kiedy algorytm jest zapisany za pomocą języka naturalnego i formuł matematycznych mówimy wtedy o pseudokodzieWczytaj trzy liczby do komputeraOblicz średnią dodając trzy liczby do siebie i dzieląc je przez 3

Wyświetl średnią

Page 32: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

„Strasburger”

– Dlaczego programista na umycie głowy zużywa całą butelkę szamponu?

– Bo w instrukcji jest napisane: nałożyć, spłukać, czynność powtórzyć.

Pseudokod ;)

Page 33: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Algorytmy przedstawiane są z różnym stopniem szczegółowości. Najczęściej stosuje się: opis słowny lub sieci działań (schematy blokowe).

Symbole graficzne do budowy sieci działań

Przykład:

Warunekprawdziwy ?

Początek Koniec

5 5

Realizacja operacji Opis realizowanej w algorytmie czynności

Tak Nie

pisz a, b, cczytaj

a, b, c

Oznaczenie początku, końca sieci działań

Łączniki dzielące sieć działań na fragmenty

Rozgałęzienie - przejście do części algorytmu wynikającej ze spełnienia warunku

Odpowiednio: wczytanie lub wydrukowanie wartości: a, b, c

11

Prezentacja algorytmu w postaci sieci działań

Page 34: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Początek

Koniec

k 3

Tak

pisz N, " jest pierwsza"

czytaj N

reszta z dzielenia N przez k = 0 Tak

k k +2

k >

Tak

Nie

Nie

Koniec

pisz N, " nie jest pierwsza "

k – zmienna pomocnicza

Sprawdzić, czy wczytana liczba całkowita N>3 jest pierwsza (dzieli się tylko przez jeden i siebie). (Przykład z: D. van Tassel: „Praktyka programowania”. WNT Warszawa)

N

reszta z dzielenia N przez 2 = 0

Nie

12

liczby pierwsze: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29,

31, ...

Przykład sieci działań

Page 35: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

PROBLEM ALGORYTM PROGRAM

Algorytmizacja Kodowanie

Cel tego wykładu:

• Nabycie umiejętności algorytmizacji podstawowych problemów

• Nabycie umiejętności kodowania algorytmów z wykorzystaniem języka wysokiego poziomu

7Programowanie

Implementacja algorytmu za pomocą języka    programowania, takiego jak C, nazywana jest   kodowaniem

Page 36: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Algorytmizacja i Kodowanie

Specyfikacja wymagań

Analiza problemu

Wybór ogólnego rozwiązania

Utrzymanie kodu

Kodowanie(pisanie programu)

Testowanie programu

Algorytmizacja i kodowanie

Dokumentacja

Page 37: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Specyfikacja wymagań

•Czym jest specyfikacja wymagań?•Dostajecie e-maila od swojego kierownika projektu:

▫To nie jest precyzyjnie zdefiniowane zapotrzebowanie !!!

▫Aby wyjaśnić i określić wykaz problemów, pierwszym      krokiem byłoby skontaktować się z przełożonym, aby    dokładnie określić, jakie informacje mają być    produkowane (jego wyjścia) i jakie dane będą        dostarczane(wejścia) - specyfikacja wymagań

Potrzebujemy program który będzie podawał statystyki obrotu produktami.

Page 38: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Phase II: Design and Development•Krok 1: Analiza problemu:▫Jakie dane wejściowe mają być produkowane▫Jakie dane wyjściowe są potrzebne by otrzymać

pożądane dane wejściowe ▫Operacje łączące wejścia z wyjściami

Algorytmizacja i Kodowanie

Page 39: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

•Krok 2: Wybór ogólnego rozwiązaniaDla większych problemów dokomponujemy je na mniejsze, specyfikując jakie są relacje pomiędzy poszczególnymi komponentami (mniejszymi algorytmami)

Algorytmizacja i Kodowanie

Page 40: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

•Krok 3: Kodowanie (pisanie programu)▫Struktura sekwencji definiuje porządek w którym

instrukcje są wykonywane przez program▫Struktura rozgałęzień zapewnia

możliwość dokonania wyboru pomiędzy różnymi      grupami instrukcji, w zależności od wyniku pewnych      warunków

▫Struktura powtórzeń - pętle, umożliwia powtarzanie tej  samej operacji w oparciu o wartość warunku    

▫Struktura wołania funkcji– pozwala na wywoływanie w miarę potrzeby tego samego fragmentu kodu

Algorytmizacja i Kodowanie

Page 41: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

10Kompilacja i Konsolidacja programu

•Konsolidator (linker): w trakcie procesu konsolidacji łączy zadane pliki obiektowe i biblioteki statyczne tworząc w ten sposób plik wykonywalny.

Page 42: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

8Działający program

Page 43: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Algorytmizacja i Kodowanie

•Krok 4: Testowanie i uruchamianie kodu

▫Błąd programu potocznie nazywamy pluskwą (bugiem)▫Proces szukania i naprawiania błędów nosi nazwę.

debugowania (ang. debugging)▫Testowanie pozwala stwierdzić czy program generuje

spodziewane rezultaty▫Jeśli powstanie błąd należy go zlokalizować, poprawić i

ponownie sprawdzić działanie programu▫Przydaje się zdefiniowanie wszystkich możliwych

zachowań programu – i ich przetestowanie

Page 44: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

• Błędy kompilacji – jeśli kompilator „nie rozumie” programu źródłowego.

• Błędy wykonania programu – jeśli program po kompilacji nie daje się wykonać.

• Błędy logiczne – jeśli program wykonuje się nieprawidłowo.

9Kompilacja i wykonanie programu

Page 45: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Dokumentacja

• Ważne elementy rozwiązania problemu:1. Specyfikacja wymagań2. Opis kodowanego algorytmu3. Komentarze w kodzie programu4. Opis modyfikacji i zmian w programie     5. Opis testów przebiegów, obejmujący wejścia i wyjścia

z pojedynczych przebiegów6. Instrukcja obsługi, która jest szczegółowym  

wyjaśnienie w jaki sposób korzystać z programu   

Page 46: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Utrzymanie kodu

•Utrzymanie (pielęgnowanie) programu/kodu to:▫poprawianie, ▫zmienianie,▫rozszerzanie

• Łatwość utrzymywania kodu zależy od łatwości z jaką może być odczytany i zrozumiany

Page 47: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Koszty utrzymania

Page 48: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Backup – kopie zapasowe

•Niezbędnym elementem programowania jest robienie i utrzymywanie kopii zapasowych     

•Nie jest formalnym elementem procesu

•Warto mieć backup dwa kroki wstecz, lub całą historię.

•W praktyce wiele organizacji trzyma co    najmniej jedną kopię zapasową na miejscu,      gdzie może być łatwo wykorzystana, a      druga kopię w odległym miejscu   

Państwa również dotyczy!!!

Page 49: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Historia języka C

•Powstał w roku 1970s w AT&T Bell Laboratories.• Jego autorami byli K. Thompson, D. Ritchie, and B.

Kernighan• Jezyk wysokiego poziomu

•C umożliwia bezpośredni dostęp do pamięci komputera i modyfikacji danych

•Zostało ustandaryzowane przez American National Standards Institute (stąd ANSI C)

•W roku 1980s, Bjarne Stroustrup (pracujący w AT&T) wprowadził język C++ (obiektowe C – więcej na 14 wykładzie)

Page 50: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Program jest TEKSTEM (ciągiem znaków), dla którego zdefiniowano:

• ALFABET ( dopuszczalny ciąg znaków )

• SŁOWA KLUCZOWE ( predefiniowane, mające specjalne znaczenie )

• DEFINICJE i DEKLARACJE oraz INSTRUKCJE

STRUKTURA PROGRAMU

# include <stdio.h> dołączanie plików nagłówkowych bibliotek

.....

int main ( ) {

definicje, deklaracje i instrukcje return 0; funkcja main (główna) - musi być w programie

}

.....

inne funkcje - niekonieczne

13Program w C

Page 51: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

#include <stdio.h>int main (void){ printf("Hello world"); return 0;}  

#include <stdio.h>

int main (void ){ int x,y;

scanf("%d %d\n",&x,&y); if (x>y) printf("%d",x); else printf("%d",y); return 0;}

1) Najprostszy program: 2) Wydrukować większą wartość spośród dwóch wczytanych:

#include <stdio.h>

int main (void) { int a, obwod, pole; printf("Podaj bok kwadratu\n"); scanf("%d",&a); obwod = 4*a; pole = a*a; printf("Obwod = %d Pole = %d ", obwod, pole);

return 0;}

3) Wczytać bok kwadratu, a następnie obliczyć i wydrukować jego obwód i pole:

#include <stdio.h>int main (void ) { printf("Hello world"); return 0;}  

To samo w innej konwencji zapisu nawiasów klamrowych:

14Przykłady programów

Page 52: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Są ignorowane przez kompilator, służą wyłącznie osobie czytającej tekst programu.

Zapisuje się je:

• wewnątrz par znaków /*.....*/, co pozwala tworzyć komentarze złożone z wielu linii

15

Przykład komentarzy:

/* Wszystko to co tutaj jest wpisane jest niewidoczne z punktu widzenia kompilatora*/

Komentarze

#include <stdio.h>int main (void ) {/* najprostszy z programow */ printf("Hello world"); return 0;}  

Page 53: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Najczęstsze błędy programowania

•Pośpiech w pisaniu i uruchamianiu programu bez wcześniejszej analizy problemu i przygotowania  algorytmu

•Zapominanie o backupie

•Zapominanie o tym, że komputery robią tylko to co im polecimy

Page 54: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Podsumowanie

•Początki to Charles Babbage w roku 1822

•Fizyczne komponenty komputera nazywamy hardwarem

•Programy wykonujące się na komputerze nazywamy

softwarem

• Istnieje wiele typów i rodzajów języków programowania

• Języki używające kompilatorów i interpreterów

nazywamy językami wysokiego poziomu

Page 55: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Podsumowanie

• Algorytm: zbiór określonych reguł postępowania, które stosowane w ustalonym porządku prowadzą do rozwiązania określonego zadania•Procedura tworzenia oprogramowania:▫Specyfikacja wymagań▫Algorytmizacja(projektowanie) i kodowanie▫Dokumentacja▫Utrzymanie

Page 56: POLITECHNIKA WARSZAWSKA INSTYTUT AUTOMATYKI i … · algorytmów: programowanie typu „dziel i zwyciężaj”, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne.

Podsumowanie

•Pamiętajcie że potrzebujecie mieć co najmniej jeden backup Waszego programu

Nawet wtedy jeśli jest to mały programik tworzony na laboratoriach.