JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 2

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

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

Technologie informacyjne - wykład 12 -

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

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

Programowanie komputerów

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Podstawy programowania

Podstawy programowania. Wprowadzenie

Podstawy programowania wykład

Języki i metodyka programowania

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

Historia modeli programowania

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Modelowanie i Programowanie Obiektowe

INFORMATYKA DANE.

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści


Algorytmika i pseudoprogramowanie

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Języki i paradygmaty programowania. I. Wprowadzenie

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Podstawy Informatyki Języki programowania

Język programowania PASCAL

Algorytm. Krótka historia algorytmów

Definicje. Algorytm to:

Programowanie w języku Python. Grażyna Koba

Algorytm. Krótka historia algorytmów

Cel stosowania metod i środków informatyki

ALGORYTMY I PROGRAMY

2.8. Algorytmy, schematy, programy

Zapisywanie algorytmów w języku programowania

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Wprowadzenie do programowania

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

ZASADY PROGRAMOWANIA KOMPUTERÓW

Szczegółowy program kursów szkoły programowania Halpress

Programowanie w języku C++ Grażyna Koba

Algorytmy i struktury danych. wykład 2

Algorytm. a programowanie -

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Podstawy programowania w języku C

KARTA KURSU. Wstęp do programowania

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Algorytm. Definicja i algorytmu METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE

EGZAMIN MATURALNY 2012 INFORMATYKA

Wprowadzenie do programowania

Praktyka Programowania

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Java EE produkcja oprogramowania

Wstęp do programowania

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Struktury danych: stos, kolejka, lista, drzewo

Podstawy Programowania

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I


Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

Algorytmy, reprezentacja algorytmów.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

PODSTAWY ALGORYTMIKI

Podstawy Informatyki. Wykład 6. Struktury danych

Programowanie obiektowe

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

Wstęp do Informatyki dla bioinformatyków

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

wstęp (podstawowe pojęcia związane z programowaniem, przegląd języków programowania, sieci działań, ogólne zasady programowania zorientowanego

Algorytmy i struktury danych

Algorytmy i schematy blokowe

Abstrakcyjne struktury danych - stos, lista, drzewo

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Podstawy Programowania. Języki programowania

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1

Paradygmaty programowania

SPOSÓB PRZETWARZA -NIA DANYCH

Podstawy programowania

Język ludzki kod maszynowy

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Algorytmy. Programowanie Proceduralne 1

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

O (o)programowaniu. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Zagadnienia na egzamin dyplomowy

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Podstawy programowania.

1 Wprowadzenie do algorytmiki

Złożoność obliczeniowa zadania, zestaw 2

Algorytmy od problemu do wyniku

Transkrypt:

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 2 1

3. Pseudokod (zwykle jako lista kroków) o o o o o o ZAPIS ALGORYTMU Brak standardu. Najczęściej PASCAL pozbawiony informacji dla kompilatora (i czasem przetłumaczony na polski). Nie zawiera szczegółów implementacyjnych (np. inicjalizacja zmiennych, alokacja pamięci itp.). Nietrywialnie kroki algorytmu opisywane są z pomocą formuł matematycznych lub zdań w języku naturalnym. Zaleta: bardzo łatwa implementacja algorytmu za pomocą wybranego, istniejącego języka programowania. Wada: mniejsza przejrzystość zapisu (niż przy schemacie blokowym). albo: np. algorytm Euklidesa: 2

KLASYFIKACJA ALGORYTMÓW o proste i rozgałęzione; o cykliczne i mieszane; o sekwencyjne i równoległe/współbieżne; o numeryczne i nienumeryczne; o iteracyjne i rekurencyjne ; iteracja: wielokrotne wywołanie sekwencji poleceń aż do spełnienia warunku sterującego rekurencja: wywołanie procedury z wewnątrz tej samej procedury Żeby zrozumieć rekurencję trzeba najpierw zrozumieć rekurencję... 3

STRUKTURY DANYCH Struktura danych (ang. data structure) to sposób uporządkowania informacji w komputerze. Rozwiązując problem (nie tylko z użyciem komputera!) przyjmuje się pewien model rzeczywistości, np. należy określić jak przedstawić dane mające tą rzeczywistość reprezentować. Wykorzystuje się pewne specyficzne zbiory danych (struktury danych), które charakteryzują się: o różną wewnętrzną strukturą ułożenia danych; o różnym sposobem zapisu i dostępu do tych danych. Na strukturach danych operują algorytmy. Dobór struktur danych wpływa na złożoność obliczeniową algorytmu! 4

STRUKTURY DANYCH Wybór odpowiednich struktur danych uzależniamy od: o rozwiązywanego problemu; o możliwości obliczeniowych komputera; o przewidywanych operacji, jakie na danych będą wykonywane; o wykorzystywanego języka programowania (wiele języków programowania dostarcza biblioteki standardowe z zaimplementowanymi różnorodnymi strukturami danych). Przykładowe struktury danych: o tablica; o rekord lub struktura; o lista; o stos; o kolejka; o drzewo. 5

STRUKTURY DANYCH Tablica o jednorodna struktura, która składa się z elementów tego samego typu; o charakteryzuje się swobodnym dostępem do danych; o rozmiar tablicy jest albo ustalony z góry (tablice statyczne), albo może się zmieniać w trakcie wykonywania programu (tablice dynamiczne); o składowe tablicy są indeksowane (zazwyczaj numerycznie ) umożliwia to łatwy dostęp do składowych); o w matematyce odpowiednikiem tablicy jednowymiarowej jest ciąg, a tablicy dwuwymiarowej macierz; o praktycznie wszystkie języki programowania obsługują tablice. np. w C/C++: int t[5]; // statyczna tablica 5 obiektów typu całkowitego wrócimy do tego tematu... 6

STRUKTURY DANYCH Rekord lub struktura o złożony typ danych występujący w wielu językach programowania, grupujący logicznie powiązane ze sobą dane różnego typu w jednym obszarze pamięci; o składowe struktury pola mają swe unikatowe nazwy; o struktury są powszechnie stosowane w programowaniu pozwalają w przejrzysty sposób opisywać złożone obiekty. np. deklaracja struktury w Fortranie 90/95: TYPE::wojewodztwo INTEGER(KIND=4)::mieszkancy CHARACTER(30)::stolica END TYPE wojewodztwo i definicja: zachodniopomorskie = wojewodztwo(1715500, Szczecin ) 7

STRUKTURY DANYCH Lista (alternatywa dla tablicy) o struktura danych służąca do reprezentacji zbiorów dynamicznych, w której elementy (rekordy) ułożone są w liniowym porządku. o możliwość dodawania i usuwania obiektów w dowolnym miejscu listy; o dwa podstawowe typy: ojednokierunkowa (z każdego elementu można przejść do jego następnika); odwukierunkowa (można przejść zarówno do poprzednika jak i następnika); oponadto: listy cykliczne (pierwszy i ostatni rekord listy są ze sobą połączone). o Każdy element listy (rekord) składa się z co najmniej dwóch pól: danych oraz pola wskazującego na następny element listy (w listach dwukierunkowych także pole wskazujące poprzedni element). pusty wskaźnik korzeń listy https://pl.wikibooks.org/wiki/struktury_danych/listy 8

STRUKTURY DANYCH Stos o liniowa struktura danych; o dane są dokładane na wierzch stosu i wyłącznie stąd są pobierane (bufor LIFO Last In, First Out); o zastosowania: np. zapamiętywanie rejestrów procesora i przechowywanie zmiennych lokalnych; o do implementacji stosu o stałym rozmiarze n wystarczy n-elementowa tablica i jedna zmienna przechowująca aktualną liczbę elementów https://pl.wikibooks.org/wiki/struktury_danych/stosy 9

STRUKTURY DANYCH Kolejka o liniowa struktura danych będąca przeciwieństwem stosu; o dane są dopisywane są na końcu kolejki a pobierane wyłącznie z jej początku (bufor FIFO First In, First Out); o zastosowania: np. sytuacje związane z różnego rodzaju obsługą zdarzeń; o implementacja zwykle z zastosowaniem tablic. https://pl.wikibooks.org/wiki/struktury_danych/kolejki 10

Drzewo STRUKTURY DANYCH https://pl.wikibooks.org/wiki/struktury_danych/drzewa o struktura nieliniowa; o rodzaj grafu (graf skierowany, spójny i acykliczny); o struktura danych reprezentująca hierarchię danych; o ułatwia i przyspiesza wyszukiwanie; o składowe: wierzchołki (węzły) oraz łączące je krawędzie. Jeden z wierzchołków jest wyróżniony i nazywany korzeniem drzewa; o każdy węzeł ma dokładnie jednego rodzica, za wyjątkiem korzenia, który nie ma rodzica; o drzewo binarne: każdy wierzchołek na co najwyżej 2 dzieci; o zastosowania: np. bazy danych, grafika komputerowa, przetwarzanie tekstu. 11

PROGRAMOWANIE Podejścia do pisania programów komputerowych 1. Z dołu (bottom-up, wstępujące, syntetyczne) o najpierw są rozwiązywane wszystkie (elementarne) podproblemy, które mogą być potrzebne o następnie ich wyniki są używane do rozwiązywania większych podproblemów. 2. Z góry (top-down, zstępujące, analityczne ) o problem jest dzielony na podproblemy; o podproblemy są rozwiązywane, a wyniki zapamiętywane, jeżeli będą użyte później. 12

PROGRAMOWANIE Czas potrzebny na napisanie programu: 1. Koncypowanie (30-35%) 2. Kodowanie (20-25%) 3. Testowanie i usuwanie błędów (pozostały czas) Siedem złotych reguł (ogólnych!) str. 693 1. Zawsze planuj. Błędem jest rozpoczynanie pisania programu bez uprzedniego sporządzenia planu ukazującego strukturę programu i różne poziomy szczegółowości. 2. Podziel pracę na etapy. W programie dowolnego rozmiaru konieczne jest niezależne opracowanie każdej część programu. 3. Podziel program na moduły. Stosowanie procedur i modułów, które mogą być pisane i badane niezależnie jest szczególnie istotne w przypadku dużych programów. 13

PROGRAMOWANIE 4. Nie komplikuj. Skomplikowany program jest zazwyczaj zarówno nieefektywny jak i podatny na błędy. 5. Dokładnie przetestuj. Możliwie dokładnie przetestuj swój program na każdym etapie przygotowując się na tak wiele sytuacji (zarówno sensownych jak i bezsensownych), jak to możliwe. Zachowaj swoje dane testowe na przyszłość (rozbudowa programu) Nie ma programów bezbłędnie działających, są co najwyżej niedostatecznie przetestowane. 6. Dokumentuj. Nie ma nic gorszego, niż powrót do nieudokumentowane programu po pewnym czasie. Większość programów może być odpowiednio udokumentowana poprzez używanie sensownych nazw oraz przez włączenie stosownych komentarzy. Czas poświęcony na pisanie komentarzy zazwyczaj zwraca się po wielokroć! 7. Ciesz się programowaniem! Pisanie programów jest wyzwaniem i działalnością rozwijającą zdolność logicznego myślenia. Powinno być również przyjemne. Pamiętaj - poprawnie działający program to źródło ogromnej satysfakcji dla autora! 14

JĘZYKI PROGRAMOWANIA Język programowania: Forma zapisu instrukcji dla komputera i programów komputerowych. Postać programu wyrażona w języku programowania to kod źródłowy. Historia (pobieżnie): 1952 asemblery 1957 Fortran 1960 LISP 1960 Algol 1960 COBOL 1962 APL 1962 SIMULA 1964 BASIC 1964 PL/I 1971 Prolog 1972 C 1975 Pascal Do 1959 roku ok. 200 języków programowania! 1979 Modula-2 1980 dbase II 1983 Smalltalk-80 1983 Ada 1986 C++ 1987 Pearl 1988 Mathematica, 1995 Java, Visual Fortran 95, Ruby 2000 C# 15

JĘZYKI PROGRAMOWANIA 16

JĘZYKI PROGRAMOWANIA Generacje języków programowania Pierwszej generacji języki maszynowe: o instrukcje zapisywane w postaci binarnej, np.: 010100000000000001111111111111111100010011101000000010 Symboliczne języki programowania: pozwalają tłumaczyć (zrozumiałe dla człowieka) napisy na kod maszynowy (zrozumiały dla danego procesora). 17

JĘZYKI PROGRAMOWANIA Generacje języków programowania Drugiej generacji asemblery: o niskiego poziomu, składnia tożsama z maszynowym, zamiast liczb tzw. mnemoniki; o jedno polecenie odpowiada zasadniczo jednemu rozkazowi procesora; o wykonuje się na konkretnej maszynie działającej pod kontrolą danego systemu operacyjnego ; o np.: mov al, 12 mov ah, 0 ; wpisz do rejestru AX wartość 12 - wyzeruj starszą int 21h połówkę AX (czyli AH) i wpisz 12 do młodszej(al) ; wywołaj przerwanie nr 33 (21 szesnastkowo) 18

JĘZYKI PROGRAMOWANIA Generacje języków programowania Trzeciej generacji języki wysokiego poziomu, proceduralne: o jedna instrukcja jest tłumaczona na kilka (5-10) instrukcji procesora; o przykłady: o np.: - języki niestrukturalne (FORTH, BASIC); - języki strukturalne (FORTRAN, PASCAL, C); - języki zorientowane obiektowo (C++, Java); if(liczba==7) cout<< Liczba to 7 <<endl; else cout<< Liczba inna niż 7 <<endl; 19

JĘZYKI PROGRAMOWANIA Generacje języków programowania Czwartej generacji języki bardzo wysokiego poziomu, nieproceduralne: o najważniejszy problem a nie sposób jego rozwiązania; o składnia często przypomina język naturalny (np. SQL); o np.: SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC; Piątej generacji języki sztucznej inteligencji: o najbardziej zbliżone do języka naturalnego; o inteligentne systemy wiedzy (systemy ekspertowe); o przykład: PROLOG (fr. Programmation en Logique, jeden z najpopularniejszych języków programowania logicznego) 20

JĘZYKI PROGRAMOWANIA (Orientacyjny) podział ze względu na zastosowanie: o skryptowe (np. skrypty powłoki systemu operacyjnego) o obsługi stron internetowych - po stronie serwera (np.: PHP, JSP) o obsługi stron internetowych - po stronie klienta (np.: JavaScript, ActionScript) o opisu dokumentów (np.: TeX, HTML) o opisu danych (np. XML) o przetwarzania tekstu i danych (np.: AWK, Perl) o programowania baz danych (np. PL/SQL) o ogólnego przeznaczenia (np.: C++, C#, Delphi, Java, Assembler) 21

JĘZYKI PROGRAMOWANIA Program (zapis algorytmu) może mieć postać: o źródłową - w konkretnym języku programowania; o kodu pośredniego - ciąg instrukcji wykonywanych przez interpreter; o binarną (skompilowaną) - ciąg instrukcji do bezpośredniego wykonania przez procesor. Interpretery: Np.: 1. Pobierają jedną instrukcję programu. 2. Tłumaczą ją na język maszynowy. 3. Przekazują do wykonania procesorowi. 4. Powracają do pkt. 1. BASIC, SQL, JavaScript 22

JĘZYKI PROGRAMOWANIA Kompilatory: o tłumaczą cały program na język maszynowy; o zapisują przetłumaczony program (w pamięci komputera, na dysku itp.); o skompilowany program jest gotowy do wykonania. Np.: Pascal, C, C++, Asembler (Zgrubne) porównanie: interpreter kompilator szybkość działania niska wysoka przenośność wysoka niska dodatkowe wymagania przy uruchamianiu niezbędny interpreter brak 23

JĘZYKI PROGRAMOWANIA Subiektywny (i bardzo krótki) przegląd języków programowania: FORTRAN ang. FORmula TRANslator Karta perforowana z podziałem na pola dla Fortranu IV. o pierwotnie (1957) zaprojektowany do zapisu programów obliczeniowych i jako język strukturalny; o obecnie (nadal rozwijany, Fortran 2008) język ogólnego przeznaczenia (również obiektowy). Cechy: o szybkość obliczeń (musiał konkurować z asemblerami); o doskonała skalowalność i przenośność (różne platformy sprzętowe i systemy operacyjne) o dostępność bibliotek dla programowania wieloprocesorowego i równoległego oraz bibliotek graficznych. o często obecnie stosowany np. do obliczeń aerodynamicznych, wytrzymałościowe i cieplnych. 24

JĘZYKI PROGRAMOWANIA BASIC (Beginner's All-purpose Symbolic Instruction Code) o napisany (1964) w oparciu o Fortran i Algol; o założenia: łatwość użytkowania, wszechstronność zastosowań, interaktywność i jasne komunikaty błędów; o istnieje ponad 200 różnych dialektów języka. Wybrane cechy: o starsze wersje - numerowanie wierszy (problem przy rozbudowie) o pętle konstruuje się za pomocą instrukcji skoku GOTO (trudny do zrozumienia kod) en.wikipedia.org/wiki/basic 25

JĘZYKI PROGRAMOWANIA Pascal o stworzony (1971) przez N. Wirtha z Politechniki w Zurychu jako język przeznaczony do nauki programowania strukturalnego; o nazwa na cześć nazwiska francuskiego fizyka, matematyka i filozofa Blaise Pascala; o popularność zdobył dzięki implementacji TurboPascal (1983) firmy Borland; Cechy: o rozbudowane struktury danych; o prosta składnia. https://pl.wikipedia.org/wiki/pascal(język_programowania) 26

JĘZYKI PROGRAMOWANIA Dlaczego języki wysokiego poziomu? o nie zmuszają programisty do zajmowania się takimi elementami budowy komputera, jak wewnętrzna reprezentacja danych, rejestry, kanały WE-WY itp; o możliwość (do pewnego stopnia) przenoszenia programów między procesorami i systemami; o zwięzłość programów (1 zdanie to ok. 10 instrukcji kodu maszynowego); o możliwość używania nazw zmiennych kojarzących się z danym problemem oraz wyrażeń matematycznych. Nie istnieje najlepszy język programowania... Jaki więc wybrać? To Państwa w ramach tego przedmiotu nie dotyczy, ale w innych przypadkach... 27

JĘZYKI PROGRAMOWANIA Np: Wybór języka na podstawie przedsięwzięcia: a) Wybierz język, który jest podobny do czegoś, co znasz. b) Wybierz język, do którego środowisko jest popularne i dostępne jest większa szansa, że ktoś odpowie na twoje pytania lub znajdziesz odpowiednią publikację. c) Wybierz język, do którego dostępne są biblioteki, przykłady lub moduły, mogące pomóc w realizacji zadania. Zwróć uwagę na ich: dostępność, zgodność, poprawność działania i licencję. d) Wybierz język, który oszczędzi Ci pracy jest relatywnie łatwy, patrz też: uwaga a) Wybieramy zatem język programowania i jest nim: C++ 28