340 likes | 628 Views
Zachodniopomorska Szkoła Biznesu. Podstawy programowania. Wykład 1: Wprowadzenie. dr inż. Michał Pałczyński mpalczynski@wi.ps.pl mpalczynski@zpsb.szczecin.pl. Cele i zakres przedmiotu. Zapoznanie z istotą i metodyką programowania Opanowanie podstawowych technik programowania strukturalnego
E N D
Zachodniopomorska Szkoła Biznesu Podstawy programowania Wykład 1: Wprowadzenie dr inż. Michał Pałczyńskimpalczynski@wi.ps.plmpalczynski@zpsb.szczecin.pl
Cele i zakres przedmiotu • Zapoznanie z istotą i metodyką programowania • Opanowanie podstawowych technik programowania strukturalnego • Nabycie umiejętności zapisu algorytmów w wybranym języku programowania • Nauka czytania i analizy prostych programów w celu przewidywania ich wyniku oraz poszukiwania błędów • Literatura: Jerzy Grębosz - Symfonia C++ (tom I) Podstawy programowania - Wprowadzenie
Co to jest programowanie • Ogólnie:Tworzenie mechanizmów pozwalających na automatyzację pracy danego urządzenia • W informatyce:Proces projektowania, tworzenia i poprawianiakodu źródłowego programu z użyciem wybranego języka programowania Podstawy programowania - Wprowadzenie
Algorytm a program • Algorytm - opis czynności, które mają na celu rozwiązanie postawionego problemu lub realizację zadania. Typowe formy zapisu algorytmów to - opis słowny - lista kroków - schemat blokowy - diagramy NS - pseudokod - kod źródłowy programu • Program - algorytm zapisany w postaci umożliwiającej (zwykle po przetworzeniu) jego automatyczną realizację za pomocą systemu komputerowego.Postać ta zależy od użytego języka programowania. • Kodowanie - proces „tłumaczenia” algorytmu z dowolnej postaci na wybrany język programowania Podstawy programowania - Wprowadzenie
Od problemu do programu • Sformułowanie problemu (definicja zadania) • Analiza problemu • Wybór metody (metod) rozwiązania • Opracowanie algorytmu • Kodowanie (implementacja) programu • Testowanie programu • Sporządzenie dokumentacji Podstawy programowania - Wprowadzenie
Definicje • Język programowania - Zrozumiały dla komputera sposób przekazywania poleceń przez człowieka. • Symbol - najmniejszy element języka • Alfabet - zbiór wszystkich symboli danego języka • Kod źródłowy programu - napis rozumiany jako ciąg symboli należących do alfabetu • Program wykonywalny - kod źródłowy przetworzony na postać zrozumiałą dla komputera • Składnia - kolejność występowania symboli w programie • Gramatyka - zbiór reguł definiujących zbiór wszystkich możliwych ciągów symboli poprawnych z punktu widzenia danego języka • Semantyka - znaczenie poprawnego składniowo ciągu symboli czyli akcja, która została zakodowana Podstawy programowania - Wprowadzenie
Cechy programów • Skuteczność - czy program dla różnych danych wejściowych realizuje postawione zadanie • Dokładność - stopień, w jakim uzyskane rozwiązanie problemu odpowiada postawionemu celowi • Wydajność - odpowiada szybkości działania programu dla określonego sprzętu, na jakim działa.Często jest przedmiotem porównania różnych rozwiązań, czasem odnosi się do wymogów tzw. czasu rzeczywistego • Czytelność - odnosi się do kodu źródłowego programu, oznacza zrozumiałość i przejrzystość kodu • Zużycie zasobów - konieczność dostępu programu do różnych zasobów sprzętowych systemu, zwłaszcza pamięci RAM Podstawy programowania - Wprowadzenie
Klasyfikacje języków programowania • Paradygmat: • Imperatywny, Obiektowy, Funkcyjny, Logiczny • Poziom (generacja) • Asemblery, Języki wysokiego poziomu, Języki 4 generacji • Przeznaczenie • Języki ogólnego przeznaczenia i specjalizowane • Tryb interpretacji • Języki interpretowane i kompilowane Podstawy programowania - Wprowadzenie
Poziom języka:Kod maszynowy i asembler • Zależność od sprzętu (procesora), nieprzenośność • Wysoka wydajność • Duża pracochłonność tworzenia programów Przykładowy fragment Interpretacja w postaci programu w pamięci: symboli asemblera 8D 7D C0 lea edi,[ebp-40h] B9 10 00 00 00 mov ecx,10h B8 CC CC CC CC mov eax,0CCCCCCCCh F3 AB rep dword ptr [edi] C6 05 D8 25 42 00 0A mov byte ptr [c (004225d8)],0Ah A0 D8 25 42 00 mov al,[c (004225d8)] 04 05 add al,5 A2 D8 25 42 00 mov [c (004225d8)],al B8 01 00 00 00 mov eax,1 Podstawy programowania - Wprowadzenie
Poziom języka:Języki wysokiego poziomu (3G) • Dużo większa zrozumiałość tekstu programu dla człowieka niż w przypadku asemblera • Możliwość operowania zarówno na prostych danych, jak i tworzenia złożonych struktur • Konieczność przetworzenia kodu źródłowego na postać wykonywalną (kod maszynowy) • Przenośność • Stosunkowo duża wydajność przy dużo krótszym czasie tworzenia programu niż dla asemblera • Duża uniwersalność w porównaniu z językami 4G Podstawy programowania - Wprowadzenie
Poziom języka:Języki wysokiego poziomu (3G) - c.d. • Poprzedni fragment programu zapisany w języku C++: c=10; c+=5; return 1; • Fragment innego programu w języku Pascal: for i:=1 to N do begin for j:=1 to m do write(macierz[i,j]:4); writeln; end; Podstawy programowania - Wprowadzenie
Poziom języka:Języki wysokiego poziomu (3G) - c.d. • Przykładowe języki wysokiego poziomu to: • - C, C++, C# • - Pascal, Fortran, Cobol, Algol • - Java, Python • - Basic • - PHP • - SmallTalk • - HTML Podstawy programowania - Wprowadzenie
Poziom języka:Języki czwartej generacji (4G) • Instrukcje symbolizują bardzo złożone działania • Bardzo krótki kod źródłowy(kilka linijek programu może odpowiadać nawet tysiącom linii kodu w języku 3G) • Specjalizacja • Przykładowe języki: • SQL • Matlab • TEX, LATEX • PostScript Podstawy programowania - Wprowadzenie
Tryby wykonania programu:Interpretacja i interpreter • Interpreter - system pobierający instrukcje kodu źródłowego, dekodujący je i wykonujący na bieżąco (po jednej). Jego obecność w pamięci jest niezbędna do wykonania programu. • Umożliwia to programiście interaktywną pracę poprzez podawanie pojedynczych rozkazów. • Niska wydajność (konieczność dekodowania poleceń) • Typowe języki interpretowane: • BASIC • Większość języków 4G • Języki skryptowe • Polecenia systemu operacyjnego Podstawy programowania - Wprowadzenie
Tryby wykonania programu:Kompilacja i kompilator • Kompilator - program „tłumaczący” kod źródłowy w całości na postać wykonywalną. Zwykle odbywa się to w 4 etapach: • Analiza leksykalna - kontrola poprawności oraz rozpoznanie poszczególnych symboli (znaków) kodu źródłowego • Analiza składniowa (syntaktyczna) - analiza i kontrola poprawności kodu źródłowego pod względem zgodności z gramatyką języka • Analiza semantyczna - analiza znaczenia (sensu) poszczególnych struktur programu (częściowa kontrola) • Generacja kodu - tworzenie kodu maszynowego, przeznaczonego na konkretną platformę sprzętową, realizującego zapisany program Podstawy programowania - Wprowadzenie
Tryby wykonania programu:Kompilacja i kompilator - c.d. • Wysoka wydajność • Możliwości optymalizacji kodu • Brak możliwości pracy interaktywnej • Postać skompilowana jest samodzielnym programem i do wykonania nie wymaga obecności innych programów • Przykładowe języki kompilowane: • Większość języków wysokiego poziomu, w tym C, C++, Pascal • Szczególnym przypadkiem są koncepcje typu Java lub .NET, gdzie kod źródłowy podlega skompilowaniu do tzw. postaci pośredniej, która do pracy wymaga specjalnego programu zwanego maszyną wirtualną Podstawy programowania - Wprowadzenie
Tryby wykonania programu:Maszyna wirtualna • Nowe koncepcje programowania (np. Java) wprowadziły tryb pracy polegający na: • kompilacji programu do postaci pośredniej,niezrozumiałej bezpośrednio dla komputera ale niezależnej od platformy sprzętowo-programowej • interpretacji i wykonaniu programu w postaci pośredniej przez zainstalowany program, zwany maszyną wirtualną • Języki wykorzystujące ten tryb pracy to: • Java (Java Virtual Machine) • C# (.NET) • Python Podstawy programowania - Wprowadzenie
Paradygmaty programowania • Programowanie imperatywne:Program to sekwencja poleceń wpływających na stan maszyny aż do uzyskania oczekiwanego wyniku • Programowanie obiektowe:Program to zbiór obiektów porozumiewających się ze sobą. Obiekty to dane oraz operacje, jakie można na tych danych wykonać • Programowanie funkcyjne:Program to funkcja, której wynik należy obliczyć. Z reguły bazuje ona na wynikach innych funkcji • Programowanie logiczne:Program to zbiór przesłanek i hipoteza, którą należy udowodnić Podstawy programowania - Wprowadzenie
Języki proceduralne i funkcyjne • Są to podstawowe odmiany języków, pozwalające na programowanie strukturalne. • Procedura - fragment kodu programu opatrzony nazwą, który można wywoływać poprzez jej podanie • Funkcja - od procedury różni ją jedynie fakt zwracania wartości określonego typu • Definiowanie takich struktur pozwala na budowanie większych, złożonych programów z gotowych elementów • Program jest zazwyczaj ciągiem deklaracji oraz instrukcji lub wyrażeń Podstawy programowania - Wprowadzenie
Języki obiektowe • Podstawowymi elementami języka obiektowego są: • Klasa - opis formalny zestawu danych oraz operacji, jakie można wykonać na tych danych • Obiekt - konkretny egzemplarz danej klasy • Możliwości definiowania klas obejmujące: • Zawieranie się innych klas wewnątrz danej klasy • Dziedziczenie, oznaczające zdefiniowanie podklasy powodują, że sposób definiowania struktur danych jest zbliżony do ludzkiego postrzegania obiektów świata rzeczywistego • Duża efektywność tworzenia złożonych systemów • Wymagają specyficznego podejścia przy projektowaniu oprogramowania Podstawy programowania - Wprowadzenie
Dlaczego C++? • Uniwersalność (język ogólnego przeznaczenia) • Możliwość programowania zarówno strukturalnego jak i obiektowego • Język wysokiego poziomu, ale z możliwościami dostępu do zasobów sprzętowych • Wydajność kodu wynikowego • Przenośność (w części niezależnej od systemu) • Liczne biblioteki • Popularność Podstawy programowania - Wprowadzenie
Budowa programu wykonywalnego • Główne typy plików związane z C++: • Moduł źródłowy (.CPP) • Plik nagłówkowy (.H) • Biblioteka statyczna (.LIB) • Skompilowany moduł (.OBJ) • Program wykonywalny (.EXE) (na platformie PC) • Biblioteka dołączana dynamicznie (.DLL) • Zwykle programista tworzy pewną liczbę modułów oraz plików nagłówkowych • Następnie uruchamia on kompilator, który tworzy plik wykonywalny programu Podstawy programowania - Wprowadzenie
Tworzenie programu wykonywalnego .H .H .H .H .CPP .CPP .LIB .LIB Kompilacja Kompilacja .OBJ .OBJ Konsolidacja (linkowanie) .EXE, .LIB lub .DLL Podstawy programowania - Wprowadzenie
Systemy SDK (Sofware Development Kit) • Wspomaganie dla tworzenia złożonych projektów • Kontrola nad procesem tworzenia programu wykonywalnego, prezentacja błędów i ostrzeżeń • Wspomaganie pisania kodu źródłowego • Podświetlanie kolorami poszczególnych symboli • „Podpowiadanie” kolejnych elementów programu • Wyświetlanie informacji o wskazanym symbolu • Kontekstowa pomoc dotycząca wybranego języka programowania • Biblioteki standardowe i dodatkowe (w tym GUI) • Debugger Podstawy programowania - Wprowadzenie
Komunikaty o błędach kompilacji • Podczas kompilacji generowane są komunikaty: • Błędów (Error) - wskazują miejsca w programie niezgodnez alfabetem lub gramatyką języka i niemożność dokonania pełnej kompilacji. • Ostrzeżeń (Warning) - wskazują miejsca, które pomimo poprawności leksykalnej i składniowej, nasuwają przypuszczenie, że programista popełnił błąd semantyczny, a program może działać błędnie • Błąd wskazywany jest za pomocą numeru linii lub bezpośrednio w tekście programu i zwykle pokazuje początek fragmentu, który nie odpowiada specyfikacji języka. W rzeczywistości często zdarza się, że właściwy błąd popełniono znacznie wcześniej. Podstawy programowania - Wprowadzenie
Co to jest Debugger? • Debugger - (ang. bug - pluskwa - błąd) program umożliwiający interaktywne śledzenie wykonania programu znacznie ułatwiając odnalezienie źródeł błędów. Typowe możliwości debuggera: • Ręczne uruchamianie kolejnych instrukcji (trace into, step over) • Ustawianie tzw. pułapek (breakpoints) • Wyświetlanie wartości dowolnych wyrażeń (watch) • Zatrzymanie programu na dowolnym etapie • Użycie debuggera wymaga włączenia do programu wykonywalnego dodatkowych informacji na etapie jego kompilacji Podstawy programowania - Wprowadzenie