Úvod do programování aneb Do nitra stroje PŘEDNÁŠKA 1 Karel Minařík
1 www.google.com/search?q=karel+minařík Úvod do programování
Karel Minařík Absolvent FFUK, obor filosofie DIPLOMOVÁ PRÁCE: Exaktní fantazie. Umění jako kritika a záchrana skutečnosti v Adornově Estetické teorii Web designer a vývojář na volné noze od roku 2000 Art Director / Informační architekt ve společnosti ILIKETHIS! Výuka web designu na Institutu Digitálních Médií Blog o Ruby on Rails na http://blog.karmi.cz KONZULTAČNÍ HODINY: středa 12.00 13.30 KONTAKT: karmi@karmi.cz
2 A vy? Úvod do programování
Co jste studovali v bakalářském studiu? Proč studujete/zajímáte se o Studia nových médií? Jaké máte zkušenosti s programováním?
3 Proč se na Studiích nových médií zabývat programováním? Úvod do programování
Používat nějaký nástroj na počítači vyžaduje zřídkakdy více než umět klikat myší; vytvořit takový nástroj vyžaduje rozumět tajemnému umění programovat počítač John Maeda, Creative Code
Jared Tarbell: Substrate (www.complexification.net)
Orientace na rozumění člověku a společnosti SPOLEČENSKÉ VĚDY PŘÍRODNÍ VĚDY Orientace na rozumění přírodě a postižení zákonitostí
Demytologizace světa
Rozumět
Frustrace
Vztah ke stroji
Co je praktickým cílem našeho kursu?
Zabýváme se počítači Jak počítače ovlivnují ˇ svět? Nová média Co se děje v nitru stroje? Jak se mu udílí příkazy? Kdo mu je udílí?
4 Kontext vs. konzistence aneb Jak uvažuje programátor? Úvod do programování
Ada Lovelace (1815 1852)
the Engine might compose elaborate and scientific pieces of music of any degree of complexity or extent. Ada Lovelace
Příslib techniky
Programátoři počítačů píšou, testují a udržují v chodu detailní instrukce, nazývané počítačové programy, které počítače dodržují, aby vykonávaly své funkce. Programátoři také vymýšlejí, navrhují a testují logické struktury pro řešení problémů za pomoci počítače. Wikipedia.org
Použitelnost ergonomie ovládání Usability
Ovládací prvky elektrického vařiče Která plotýnka se ovládá kterým knoflíkem? Donald A. Norman, The Design of Everyday Things (1988)
HLEDISKO UŽIVATELE Kontext Konzistence HLEDISKO PROGRAMÁTORA
PŘÍKLAD Storno objednávek v aplikaci
Programátoři obtížně řeší kontextově závislé úlohy. Na rozdíl od počítačů.
5 Algoritmus Úvod do programování
Algoritmus je základem každého programu Algoritmus je sekvence příkazů
Algoritmus je konečný seznam uspokojivě definovaných instrukcí pro splnění určitého úkolu. Z počátečního stavu algoritmus skončí v definovaném konečném stavu. Wikipedia
1. Nalít olej do pánve 2. Zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
? Vzít pánev 1. Nalít olej do pánve 2. Zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
? Najít pánev? Najít olej 1. Nalít olej do pánve 2. Zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
? Najít pánev? Najít olej 1. Nalít olej do pánve 2. Zapálit plyn? Čím zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
? Najít pánev? Najít olej 1. Nalít olej do pánve 2. Zapálit plyn? Čím zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
? Najít pánev Fatal Error? Najít olej Do!ly 1. Nalít vejce olej do pánve 2. Zapálit plyn? Čím zapálit Cancel plynok 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
VLASTNOSTI ALGORITMU 1. Konečnost 2. Determinovanost 3. Vstup 4. Výstup 5. Efektivita 6. Obecnost http://cs.wikipedia.org/wiki/algoritmus
JEDNODUCHÝ ALGORITMUS Nalezení největšího čísla z neuspořádaného seznamu čísel http://en.wikipedia.org/wiki/algorithm#example
POPIS 1. Předpokládejme, že první číslo v seznamu je největší. 2. Podívejme se na postupně na každé zbývající číslo v seznamu. Pokud je větší než dosud největší číslo, zapišme si je. 3. Jakmile jsme prošli všechna čísla, je poslední zapsané číslo největším číslem v seznamu.
FORMÁLNÍ ZÁPIS V ANGLIČTINĚ Algorithm LargestNumber Input: A non-empty list of numbers L Output: The largest number in the list L largest L0 for each item in the list L 1, do if the item > largest, then largest the item return largest
ZÁPIS V PROGRAMOVACÍM JAZYCE 1 input = [1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19] 2 largest = input.first 3 input.each do i 4 largest = i if i > largest 5 end 6 print "Nejvyšší číslo je: #{largest}"
ZÁPIS V PROGRAMOVACÍM JAZYCE 1 input = [1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19] 2 largest = input.first 3 input.each do i 4 largest = i if i > largest 5 end 6 print "Nejvyšší číslo je: #{largest}" tajemné umění programovat počítač
ZÁPIS V PROGRAMOVACÍM JAZYCE 1 input = [1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19] 2 largest = input.first 3 input.each do i 4 largest = i if i > largest 5 end 6 print "Nejvyšší číslo je: #{largest}" tajemné umění programovat počítač Syntax
6 Programovací jazyk Ruby Úvod do programování
Syntax 5.times { print "Hurá!" } print ["banán", "citron", "ananas"].sort.last.capitalize
Objektově orientovaný jazyk OBJEKT Pes věc/podstatné jméno VLASTNOST malý vlastnost/přídavné jméno METODA stekej činnost/sloveso class Pes def velikost return @velikost end def stekej print Haf! end end
Knihovny google-geo (2.0, 1.0) A simple, elegant library for getting geocoding information from Google Maps. googlecalendar (0.0.5, 0.0.4, 0.0.3, 0.0.2) Google Calendar api for Ruby iphoto2 (1.0.1, 1.0.0) iphoto contains methods to parse and access the contents of the iphoto pictures. net-sftp (1.1.0, 1.0.1, 1.0.0, 0.9.0, 0.5.0) Net::SFTP is a pure-ruby implementation of the SFTP client protocol. pdf-writer (1.1.3, 1.1.2, 1.1.1, 1.1.0, 1.0.1, 1.0.0) A pure Ruby PDF document creation library. yahoo-weather (1.0.0) A Ruby object-oriented interface to the Yahoo! Weather service. youtube (0.8.6, 0.8.5, 0.8.0, 0.1.1, 0.1.0, 0.0.1) A Ruby object-oriented interface to the YouTube REST API.
Zdroje (viz www.ruby-lang.org/en/documentation) www.pine.fm/learntoprogram (původní verze)
www.poignantguide.net/ruby NEJBLÁZNIVĚJŠÍ UČEBNICE PROGRAMOVÁNÍ NA SVĚTĚ
Ruby on Rails!
Ruby on Rails
Vyzkoušejte na http://tryruby.hobix.com
7 Plán kursu Úvod do programování
PLÁN KURSU Historie programovacích jazyků Rozdělení programovacích jazyků Základní elementy programovacího jazyka: řetězce (texty), čísla, pole, kolekce, podmínky, smyčky, proměnné, Objekty a objektově orientované programování (versus ostatní typy) Grafické rozhraní (GUI). Web jako grafické rozhraní aplikací Diagramy, wireframes, skici, pomůcky, nástroje Testování software Vedení softwarového projektu ÚKOLY Práce s čísly a textem LITERATURA Chris Pine, Learn to Program (Amazon.com za $13.57 nebo www.pine.fm/learntoprogram) Možné pokračování v dalším semestru: Architektura webových aplikací a Ruby on Rails
Děkuji!