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

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

Programowanie komputerów

Podstawy programowania

Technologie informacyjne - wykład 12 -

Algorytm. a programowanie -

Podstawy i języki programowania

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Języki i metodyka programowania

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

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

Historia modeli programowania

Podstawy programowania wykład

Translacja wprowadzenie

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Podstawy programowania.

Programowanie w C. dr inż. Stanisław Wszelak

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

Definicje. Algorytm to:

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

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

1 Wprowadzenie do algorytmiki

Java EE produkcja oprogramowania

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

Programowanie niskopoziomowe

Wstęp do Informatyki dla bioinformatyków

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Programowanie w języku Python. Grażyna Koba

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

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

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

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

Podstawy programowania. Wprowadzenie

Wstęp do programowania

Wstęp do programowania. Wykład 1

Java jako język programowania

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

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

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Programowanie I. Kornel Warwas. ATH Katedra Matematyki i Informatyki

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Podstawy Informatyki Systemy sterowane przepływem argumentów

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

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

Metody Kompilacji Wykład 1 Wstęp

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

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

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

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

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

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Algorytmy od problemu do wyniku

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

Python wstęp do programowania dla użytkowników WCSS

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

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

LEKCJA TEMAT: Zasada działania komputera.

Zaawansowane programowanie w języku C++

Informatyka. Michał Rad

ALGORYTMY I PROGRAMY

Język ludzki kod maszynowy

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Podstawy Informatyki Języki programowania c.d.

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Języki i paradygmaty programowania. I. Wprowadzenie

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Języki programowania zasady ich tworzenia

Programowanie proceduralne w języku C++ Podstawy

Algorytmika i pseudoprogramowanie

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

PRZEWODNIK PO PRZEDMIOCIE

Programowanie w języku C++ Podstawowe paradygmaty programowania

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

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

Algorytmy dla maszyny PRAM

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Praktyka Programowania

Algorytm. Krótka historia algorytmów

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

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

Podstawy Programowania Algorytmy i programowanie

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Wykład z Technologii Informacyjnych. Piotr Mika

Tworzenie oprogramowania

Język programowania PASCAL

EGZAMIN MATURALNY Z INFORMATYKI

Logiczny model komputera i działanie procesora. Część 1.

Transkrypt:

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

Elementy historii informatyki I think there is a world market for maybe five computers. - Thomas Watson, chairman of IBM, 1943. There is no reason for any individual to have a computer in their home - Ken Olson, president and founder of Digital Equipment Corporation, 1977. 640K [of memory] ought to be enough for anybody. - Bill Gates, chairman of Microsoft,1981. Krzysztof Banaś Podstawy programowania 2

Algorytmika istota informatyki Algorytm dokładny przepis podający sposób rozwiązania określonego problemu w postaci skończonej liczby uporządkowanych operacji. Algorytm (inf.) ściśle określony ciąg kroków obliczeniowych, prowadzący do przekształcenia danych wejściowych w wyjściowe. Algorytm (Wikipedia!) skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań. Przykłady algorytmów: codziennych i obliczeniowych przepisy kulinarne, sortowanie, rozwiązywanie równań Krzysztof Banaś Podstawy programowania 3

Analiza algorytmów Dowodzenie poprawności algorytmów Algorytm jest poprawny syntaktycznie, jeżeli jest skonstruowany zgodnie z zasadami wybranego języka (pseudojęzyka) programowania. Algorytm jest poprawny semantycznie, jeżeli dla każdego egzemplarza danych (tj. zbioru danych wejściowych, spełniającego warunki początkowe) daje prawidłowy wynik (spełniający warunki końcowe) i zatrzymuje się. Określanie złożoności obliczeniowej Złożoność obliczeniowa ilość zasobów komputerowych koniecznych do wykonania programu realizującego algorytm jako funkcja pewnego parametru, określającego rozmiar rozwiązywanego zadania. Krzysztof Banaś Podstawy programowania 4

Zapis algorytmów Zapis algorytmu w informatyce musi być: jednoznaczny zrozumiały dla wykonawcy: sprzętu narzędzia tłumaczącego na rozkazy sprzętowe osoby piszącej program Zapis na etapie analizy i projektowania kodu zrozumiały dla projektanta i programisty zapis słowny pseudokod zapis zbliżony do zapisu w językach programowania, bez szczegółów technicznych, zrozumiały dla założonego odbiorcy schemat blokowy umowne specyfikacje (UML, itp.) Krzysztof Banaś Podstawy programowania 5

Zapis algorytmów Zapis w języku programowania zgodny ze składnią języka (standardy) sprawdzenie przez kompilator/interpreter poprawny semantycznie analiza kodu testowanie z założenia przenośny między systemami Ostateczny zapis programu ma postać pliku wykonywalnego zawierającego rozkazy procesora oraz szereg informacji określających sposób wykonania programu specyficzny dla konkretnego systemu i sprzętu Krzysztof Banaś Podstawy programowania 6

Architektura von Neumana Wszystkie współczesne procesory można uznać za rozszerzenia i modyfikacje architektury von Neumana Podstawowe cechy maszyny von Neumanna kod i dane zapisane w tej samej pamięci zapis dwójkowy kodu i danych pamięć adresowalna o dostępie swobodnym dostęp do pojedynczej komórki pamięci poprzez jej adres procesor jednostka centralna, CPU pobieranie, dekodowanie rozkazów przetwarzanie rozkazów rejestry (wewnętrzna pamięć procesora) Krzysztof Banaś Podstawy programowania 7

Maszyna von Neumanna Maszyna von Neumanna składa się m.in. z następujących elementów: adresowalna pamięć operacyjna magistrala kanał komunikacyjny do przesyłania danych pomiędzy procesorem a pamięcią procesor jednostka centralna, CPU: jednostka sterująca jednostka arytmetyczno logiczna (przetwarzająca) rejestry (wewnętrzna pamięć procesora) zegar wewnętrzna magistrala procesora Krzysztof Banaś Podstawy programowania 8

Proces programowania Proces wytwarzania oprogramowania: specyfikacja i projektowanie programu warunki początkowe i końcowe schemat przetwarzania tworzenie kodu źródłowego implementacja algorytmu uruchomienie kompilacja (interpretacja) poprawianie błędów składni wykonanie interakcja ze środowiskiem wykonania (uruchomieniowym) dalsze etapy testowanie rozmaite egzemplarze danych optymalizacja oszczędność zasobów modyfikacje, ewolucja Krzysztof Banaś Podstawy programowania 9

Proces programowania kompilacja kod źródłowy > [ kod pośredni > ] kod binarny kompilacja przeprowadzana etapami zamiana kodu źródłowego na kod wykonywalny kompilacja obejmuje m.in.: zamianę instrukcji języka na zestawy rozkazów procesora zamianę zmiennych na adresy w pamięci wprowadzenie rejestrów wprowadzenie dodatkowych informacji, m.in. o sposobie wykonania kompilacja może zatrzymać się na etapie kodu pośredniego różne typy kodów pośrednich zależą od języka programowania, systemu operacyjnego kompilacja może obejmować etap konsolidacji Krzysztof Banaś Podstawy programowania 10

Proces programowania konsolidacja kod źródłowy > [ kod pośredni > ] kod binarny konsolidacja (linkowanie) łączenie różnych plików zawierających wstępnie skompilowany kod m.in. biblioteki, w tym systemowe możliwe rodzaje konsolidacji statyczna tworzony plik wykonywalny zawiera wszystkie potrzebne funkcje konsolidacja statyczna częściowo uniezależnia od detali systemu operacyjnego dając kod bardziej przenośny dynamiczna plik wykonywalny zawiera informację o wymaganych funkcjach, które są dołączane w trakcie działania programu konsolidacja dynamiczna produkuje kod o mniejszym rozmiarze Krzysztof Banaś Podstawy programowania 11

Kompilacja Krzysztof Banaś Podstawy programowania 12

Proces programowania Istnieje szereg narzędzi wspomagających różne etapy procesu programowania Zintegrowane systemy tworzenia oprogramowania (IDE Integrated Development Systems) dostarczają szereg funkcjonalności wymaganych w procesie tworzenia oprogramowania przykłady: Visual Studio, NetBeans, KDevelop Alternatywnym modelem jest stosowanie niezależnych narzędzi, często związanych z systemem operacyjnym środowisko Unixowe: edytory, kompilatory, debugery, profilery, programy kontroli wersji, itp. Krzysztof Banaś Podstawy programowania 13

Proces programowania konsolidacja kod źródłowy > [ kod pośredni > ] interpretacja interpretacja: może dotyczyć kodu źródłowego tłumaczenie dokonywane przez interpreter lub kodu wstępnie przetworzonego (skompilowanego) do postaci pośredniej tłumaczenie dokonywane przez maszynę wirtualną przykład: bytecode dla języka Java pojęcie maszyny wirtualnej jest bardzo szerokie, maszyny wirtualne mogą dokonywać interpretacji programów napisanych dla innych systemów operacyjnych, samych systemów operacyjnych itp. Krzysztof Banaś Podstawy programowania 14

Wykonanie programu Sposób wykonania programu musi prowadzić do efektów zgodnych z zapisem kodu w języku programowania Sposób wykonania programu jest zależny od systemu operacyjnego i sprzętu Interakcja z systemem operacyjnym jako środowiskiem wykonania obejmuje m.in.: uruchomienie programu wykorzystanie bibliotek systemowych zarządzanie pamięcią zarządzanie przydziałem sprzętu obsługę urządzeń wejścia/wyjścia mechanizmy zapewnienia bezpieczeństwa wykonania Krzysztof Banaś Podstawy programowania 15

Programy = algorytmy + struktury danych algorytm najczęściej określa sposób przetwarzania dla rozmaitych egzemplarzy danych zapis i sposób wykonania programu musi uwzględniać możliwość działania dla różnych egzemplarzy danych zmienne jako sposób przechowywania danych przebieg typowego programu: wczytanie danych wejściowych różne sposoby zależne od sprzętu i systemu operacyjnego realizacja przetwarzania zwrócenie wyniku, danych wyjściowych różne sposoby zależne od sprzętu i systemu operacyjnego Krzysztof Banaś Podstawy programowania 16

Programowanie przykład Problem obliczeniowy: dane wejściowe: dwie liczby dane wyjściowe: liczba będąca sumą danych wejściowych Zapis symboliczny: c = a+b Pseudokod: pobierz liczby a i b oblicz c = a+b zwróć (wypisz) c Krzysztof Banaś Podstawy programowania 17

Kod maszynowy i język asemblera Kod w języku asemblera jest produktem w procesie kompilacji najbliższym binarnemu plikowi wykonywalnemu, a jednocześnie relatywnie łatwym w analizie przez programistę może być tworzony bezpośrednio przez programistę zawiera symboliczny zapis rozkazów procesora realizujących kod źródłowy może istnieć wiele wariantów kodu w języku asemblera dla tego samego kodu źródłowego Krzysztof Banaś Podstawy programowania 18

Kod maszynowy i język asemblera Kod w języku asemblera zawiera informacje specyficzne dla systemu operacyjnego informacje specyficzne dla sprzętu rozkazy procesora Interakcja ze sprzętem rozkazy procesora zasoby procesora bezpośrednio wykorzystywane rejestry pamięć operacyjna typy rozkazów podstawowe operacje wersje rozkazów dla różnych typów danych Krzysztof Banaś Podstawy programowania 19

Wykonanie programu fragment kodu w języku asemblera dla procesorów rodziny x86 dla przykładowego programu: movl 12(%ebp), %eax addl 16(%ebp), %eax movl %eax, 8(%ebp) Krzysztof Banaś Podstawy programowania 20

Języki wysokiego poziomu Język asemblera jest językiem programowania najniższego poziomu jest specyficzny dla konkretnej architektury sprzętu odpowiada rozkazom maszynowym Języki wyższego poziomu wprowadzają konstrukcje mające ułatwić programowanie, między innymi takie jak: złożone typy i struktury danych konstrukcje sterujące wykonaniem programów funkcje obiekty Języki wyższego poziomu zapewniają przenośność kodu źródłowego programów wymagają programów narzędziowych specyficznych dla konkretnego systemu operacyjnego i architektury sprzętu Krzysztof Banaś Podstawy programowania 21

Język C Język C jest językiem relatywnie niskiego poziomu (blisko sprzętu) jest elastyczny jest prosty posiada konstrukcje występujące w wielu innych językach jest językiem programowania strukturalnego Krzysztof Banaś Podstawy programowania 22

Programowanie strukturalne Wykorzystanie Funkcje procedur (funkcji) podstawowych konstrukcji sterujących wygodny mechanizm implementacji algorytmów dane wejściowe dane wyjściowe efekty uboczne modyfikacje wewnętrznych i zewnętrznych struktur danych, operacje wejścia/wyjścia w wielu programach efekty uboczne są podstawowym rezultatem realizacji funkcji efekty uboczne utrudniają dowodzenie i zapewnianie poprawności programów Krzysztof Banaś Podstawy programowania 23

Języki i paradygmaty programowania C i programowanie strukturalne zazwyczaj małe programy (choć są też wielkie systemy) pisane dla ściśle określonego celu C++ i inne języki obiektowe zazwyczaj nacisk na wielokrotne wykorzystanie fragmentów kodu starannie zaprojektowana, rozbudowana, wielopoziomowa architektura C++ zawiera w sobie C, ale pisanie programów strukturalnych w C++ przyczynia się do utrwalania błędnych nawyków przy programowaniu obiektowym inne języki i paradygmaty (ponad 1000 języków) Krzysztof Banaś Podstawy programowania 24

Wykres popularności języków Krzysztof Banaś Podstawy programowania 25