Informatyka. I rok, semestr II. Bartosz Kuczewski. PWSZ Gªogów, 2010

Podobne dokumenty
Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

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

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

Podstawy programowania

1. Wprowadzenie do C/C++

Wykład 1

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

1. Wprowadzenie do C/C++

Kompilowanie programów

Podstawy modelowania w j zyku UML

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Programowanie I. Wprowadzenie. Proces programowania

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

Podstawy Informatyki i Technologii Informacyjnej

przewidywania zapotrzebowania na moc elektryczn

Podstawy Informatyki Języki programowania

Lekcja 9 Liczby losowe, zmienne, staªe

Podstawy programowania wykład

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

Wstęp do programowania

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

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

Lekcja 5 Programowanie - Nowicjusz

Android. Podstawy tworzenia aplikacji. Piotr Fulma«ski. March 4, 2015

Języki i paradygmaty programowania. I. Wprowadzenie

Programowanie komputerów

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

J zyk C dla sterowników programowalnych GeFanuc

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Baza danych - Access. 2 Budowa bazy danych

Języki i metodyka programowania

Podstawy Informatyki i Technologii Informacyjnej

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

Języki i paradygmaty programowania

1 Bª dy i arytmetyka zmiennopozycyjna

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

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Wykład 2. Budowa komputera. W teorii i w praktyce

Programowanie i struktury danych 1 / 44

Wst p do informatyki. Systemy liczbowe. Piotr Fulma«ski. 21 pa¹dziernika Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

x y x y x y x + y x y

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

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

Listy i operacje pytania

Podstawy modelowania w j zyku UML

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

Here comes the sun. Wyk lad niesystematyczny. Marcin Makowski. 24 października Zak lad Chemii Teoretycznej UJ

ALGORYTMIKA Wprowadzenie do algorytmów

Lekcja 12 - POMOCNICY

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

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

Podstawy programowania w języku C

Historia modeli programowania

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski

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

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation).

Podstawy programowania. Wprowadzenie

Język programowania. Andrzej Bobyk

Logika dla matematyków i informatyków Wykªad 1

19. Obiektowo± 1 Kacze typowanie. 2 Klasy

YapS Plan testów. Šukasz Bieniasz-Krzywiec Dariusz Leniowski Jakub Š cki 29 maja 2007

Wstęp do Informatyki dla bioinformatyków

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

KLASYCZNE ZDANIA KATEGORYCZNE. ogólne - orzekaj co± o wszystkich desygnatach podmiotu szczegóªowe - orzekaj co± o niektórych desygnatach podmiotu

2 Liczby rzeczywiste - cz. 2

Metodydowodzenia twierdzeń

Praca Dyplomowa Magisterska

1 Zarys architektury MIPS

Wykªad 4. Funkcje wielu zmiennych.

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

1. Odcienie szaro±ci. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem.

c Marcin Sydow Przepªywy Grafy i Zastosowania Podsumowanie 12: Przepªywy w sieciach

MiASI. Modelowanie analityczne. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Lab. 02: Algorytm Schrage

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

Liczby zmiennoprzecinkowe

Informatyka, matematyka i sztuczki magiczne


dr inż. Paweł Myszkowski Wykład nr 5 ( )

Ciaªa i wielomiany. 1 Denicja ciaªa. Ciaªa i wielomiany 1

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

O pewnym zadaniu olimpijskim

Systemy wbudowane Mikrokontrolery

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

1 Metody iteracyjne rozwi zywania równania f(x)=0

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

Filozoa Clojure. Mateusz Dereniowski. 15 lipca Instytut Informatyki Uniwersytetu Wrocªawskiego

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

Paradygmaty programowania

Wykład 1 Wiadomości wstępne

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Wzorce projektowe strukturalne cz. 1

Paradygmaty i języki programowania. Wprowadzenie. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ 1

Transkrypt:

I rok, semestr II PWSZ Gªogów, 2010

Czym si b dziemy zajmowa? Wprowadzenie do programowania komputerów Programowanie proceduralne komputerów na przykªadzie j zyka ANSI C Zarys programowania obiektowego ( j zyk C++)

Rozwój metod i j zyków programowania Maszyna tkacka sterowana kartami perforowanymi (krosno»akardowe) 1805 Joseph Marie Jacquard (1752 1834) pierwsza programowalna maszyna

Rozwój metod i j zyków programowania ENIAC (1946, Stany Zjednoczone) - jeden z pierwszych programowalnych komputerów cyfrowych Programowanie Eniaca program zaszyty w poª czeniach kablowych i ustawieniach przeª czników maszyny

Rozwój metod i j zyków programowania Pocz tkowo programowanie byªo bardzo uci»liwe, specyczne dla ka»dej konkretnej maszyny cyfrowej i wymagaªo dokªadnej znajomo±ci operacji jakie mógª wykona procesor (a w zasadzie jednostka arytmetyczno-logiczna ALU). W zasadzie 'r cznie' umieszczano w pami ci odpowiednie rozkazy (np. poprzez odczyt z karty perforowanej), a nast pnie uruchamiano procesor w celu ich wykonania. EDSAC (1949, Wlk. Brytania) - pierwszy komputer cyfrowy w tzw. architekturze von Neumanna (przechowuj cy program w pami ci czyli tak, jak wspóªczesne komputery)

Rozwój metod i j zyków programowania J zyk maszynowy operacja do wykonania przez procesor i jej ew. argumenty zakodowane liczbowo, program jako ci gi liczb dwójkowych (tzw. kod maszynowy) Poniewa» ka»dy typ procesora ma swój wªasny j zyk maszynowy, jest to najmniej przeno±ny j zyk programowania. Konieczna znajomo± budowy procesora Programowanie dalej»mudne i uci»liwe, ªatwo popeªni bª d, trudno go wykry i poprawi Przykªad (architektura MIPS): Kod dodaj cy zawarto± rejestrów nr 1 i 2 procesora i umieszczajacy wynik w rejestrze 6: 000000 00001 00010 00110 00000 100000 dwójkowo 0 1 2 6 0 32 dziesi tnie

Rozwój metod i j zyków programowania Symboliczne j zyki programowania niskiego poziomu (tzw. asemblery) Poszczególne kody instrukcji (rozkazów) do wykonania przez procesor s zast pione ich mnemonikami (symbolicznymi nazwami). Dalej maªa przeno±no± kodu ka»da rodzina procesorów ma wªasny asembler Programista dalej musi dokªadnie zna budow i sposób dziaªania procesora Przykªad: polecenia (mnemoniki) w j zyku Asembler x86 rodziny procesorów Intela: mov ax, 0D625h mov es, ax wprowad¹ do rejestru segmentowego ES warto± z rejestru AX wynosz c D625 szesnastkowo (54821 dziesi tnie) Program w postaci kodu ¹ródªowego (zwykle plik tekstowy) tªumaczony (tzw. proces asemblacji) do binarnego kodu maszynowego danego procesora

Rozwój metod i j zyków programowania Symboliczne j zyki programowania wysokiego poziomu Idea symboliczna instrukcja j zyka programowania jest realizowana przez caªy ci g rozkazów procesora; skªadnia i sªowa kluczowe j zyka maj maksymalnie uªatwi rozumienie kodu programu dla czªowieka; Wy»szy poziom abstrakcji; kod programu niezale»ny od konkretnego procesora Wysoka przeno±no± kodu - kod ¹ródªowy (zwykle plik tekstowy) tªumaczony do j zyka maszynowego przez tzw. kompilator Programista nie musi zna szczegóªów budowy procesora Šatwiej znale¹ ew. bª dy w programie (tzw. debugowanie) Za pierwszy tego typu j zyk uwa»a si Fortran

Rozwój metod i j zyków programowania Rozwój j zyków programowania z rodziny Fortran \ Algol

Rozwój metod i j zyków programowania Elementy ka»dego j zyka programowania: Skªadnia: Aby dany ci g znaków mógª by rozpoznany jako program napisany w danym j zyku, musi speªnia reguªy skªadni. Skªadnia opisuje: Rodzaje dost pnych symboli, jakie mo»e u»y programista Zasady, wedªug których symbole mog by ª czone w wi ksze struktury. Semantyka: Deniuje precyzyjnie znaczenie poszczególnych ci gów symboli oraz ich funkcj w programie W praktyce kod poprawny skªadniowo nie musi by poprawny semantycznie (np. odwoªanie do nieistniej cej procedury czy funkcji). Wyst puje tu analogia do j zyków naturalnych. Zdanie "B¹d¹i gwy si muciosz " jest poprawne pod wzgl dem gramatycznym, lecz nie posiada»adnego znaczenia, poniewa» zostaªy w nim u»yte nieistniej ce sªowa

Rozwój metod i j zyków programowania Elementy ka»dego j zyka programowania: Typy danych: Ka»dy j zyk operuje na jakim± zestawie danych, dlatego niezb dne jest podzielenie danych na odpowiednie typy, zdeniowane ich wªa±ciwo±ci oraz operacji, jakie mo»na na nich realizowa. Wi kszo± j zyków posiada typy danych do reprezentowania: Liczb caªkowitych w ró»nych zakresach Liczb zmiennoprzecinkowych (reprezentacje liczb rzeczywistych o ró»nym stopniu dokªadno±ci) Ci gów tekstowych Biblioteki standardowe: zawieraj ce podstawowy zestaw funkcji pozwalaj cych realizowa wszystkie najwa»niejsze operacje, np.: Obsªug wej±cia-wyj±cia (klawiatura, monitor) Obsªug plików Zarz dzanie pami ci Podstawowe typy danych oraz funkcje do zarz dzania nimi. Operacje na ci gach tekstowych

Kolorowanie skªadni przykªad

Najpopularniejsze j zyki programowania 1 Java 2 C 3 C++ 4 PHP 5 Visual Basic 6 Python 7 C 8 JavaScript 9 Perl 10 Ruby wg. TIOBE Programming Community Index z kwietnia 2009

Podziaª j zyków wg paradygmatów programowania Paradygmat programowania deniuje sposób patrzenia programisty na przepªyw sterowania i wykonywanie programu komputerowego j zyki proceduralne programowanie proceduralne to paradygmat programowania zalecaj cy dzielenie kodu na procedury, czyli fragmenty wykonuj ce ±ci±le okre±lone operacje. Procedury nie powinny korzysta ze zmiennych globalnych (w miar mo»liwo±ci), lecz pobiera i przekazywa wszystkie dane (czy te» wska¹niki do nich) jako parametry wywoªania. j zyki strukturalne paradygmat programowania zalecaj cy hierarchiczne dzielenie kodu na bloki, z jednym punktem wej±cia i jednym lub wieloma punktami wyj±cia: chodzi przede wszystkim o nieu»ywanie (lub ograniczenie) instrukcji skoku (goto). Dobrymi strukturami s np. instrukcja warunkowa (if, if...else), p tle (while, repeat), instr. wyboru (case, ale nie switch z C i potomnych). Strukturalno± zakªócaj instrukcje typu: break, continue, switch (w C itp.), które jednak w niektórych przypadkach znacz co podnosz czytelno± kodu

Podziaª j zyków wg paradygmatów programowania j zyki obiektowo zorientowane Paradygmat programowania, w którym programy deniuje si za pomoc obiektów elementów ª cz cych stan (czyli dane, nazywane najcz ±ciej polami) i zachowanie (czyli procedury, operacje wykonywane na danych, tu: metody). Obiektowy program komputerowy wyra»ony jest jako zbiór takich obiektów, komunikuj cych si pomi dzy sob w celu wykonywania zada«. inne, np. funkcyjne, uogólnione Np. j zyk C++ posiada elementy programowania proceduralnego, obiektowego oraz uogólnionego jest hybrydowym j zykiem programowania

Podziaª j zyków wg paradygmatów programowania Programowanie zdarzeniowe albo sterowane zdarzeniami: to paradygmat programowania wedªug którego program jest caªy czas bombardowany zdarzeniami (ang. events), na które musi odpowiedzie, i»e przepªyw sterowania w programie jest caªkowicie niemo»liwy do przewidzenia z góry. Programowanie zdarzeniowe jest dominuj cym typem programowania GUI (graczny interfejs u»ytkownika) a tak»e w systemach wieloprocesorowych - zdarzenia to naci±ni cia myszy, klawiszy,» dania od±wie»enia przez system okienkowy, ró»ne zdarzenia sieciowe i inne. Programowanie zdarzeniowe jest bardzo mocno zwi zane z programowaniem obiektowym

Kompilator a interpreter Kompilacja: proces automatycznego tªumaczenia kodu napisanego w j zyku programowania na kod maszynowy specyczny dla danego typu procesora. Dane wej±ciowe najcz ±ciej nazywa si kodem ¹ródªowym. Program wykonuj cy tªumaczenie to kompilator. Po kompilacji i ew. dalszych operacjach (np. tzw. linkowaniu) otrzymujemy program gotowy do wykonania przez system operacyjny i procesor. Interpreter: program komputerowy, który analizuje kod ¹ródªowy programu, a przeanalizowane fragmenty wykonuje (np. linia po linii, polecenie po poleceniu). Podczas kompilacji nie wykonuje si kodu programu, a jedynie tªumaczy go w caªo±ci do kodu wykonywalnego. Interpretacja kodu jest o wiele wolniejsza ni» uruchamianie skompilowanego kodu, ponadto zajmuje wi cej zasobów systemowych interpreter musi analizowa ka»de wyra»enie i nast pnie wykona akcj, a kod skompilowany jedynie wykonuje akcj. Zyskujemy na przeno±no±ci kodu, który mo»e by interpretowany na ró»nych maszynach

J zyk C C to imperatywny(proceduralny), strukturalny j zyk programowania stworzony na pocz tku lat siedemdziesi tych XX w. przez Dennisa Ritchiego do programowania systemów operacyjnych i innych zada«niskiego poziomu. W roku 1973 w j zyku C udaªo si zaimplementowa j dro systemu operacyjnego Unix. W 1978 roku Brian Kernighan i Dennis Ritchie opublikowali dokumentacj j zyka p.t. C Programming Language (wydanie polskie: J zyk ANSI C ). C staª si popularny poza Laboratoriami Bella (gdzie powstaª) po 1980 roku i staª si dominuj cym j zykiem do programowania systemów operacyjnych i aplikacji. Na bazie j zyka C w latach osiemdziesi tych Bjarne Stroustrup stworzyª j zyk C++, dedykowany programowaniu obiektowemu.