Ú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:
[email protected] Úvod do programování Přednáška 1
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?
Úvod do programování Přednáška 1
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
Úvod do programování Přednáška 1
Úvod do programování Přednáška 1
Úvod do programování Přednáška 1
Jared Tarbell: Substrate (www.complexification.net)
Úvod do programování Přednáška 1
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í
Úvod do programování Přednáška 1
Demytologizace světa
Úvod do programování Přednáška 1
Úvod do programování Přednáška 1
Rozumět
Úvod do programování Přednáška 1
Úvod do programování Přednáška 1
Frustrace
Úvod do programování Přednáška 1
Vztah ke stroji
Úvod do programování Přednáška 1
Úvod do programování Přednáška 1
Úvod do programování Přednáška 1
Co je praktickým cílem našeho kursu?
Úvod do programování Přednáška 1
Zabýváme se „počítači“ ˇ svět? Jak počítače ovlivnují „Nová média“
Co se děje v „nitru stroje“? Jak se mu „udílí příkazy“? Kdo mu je udílí? Úvod do programování Přednáška 1
Úvod do programování Přednáška 1
4
Kontext vs. konzistence aneb „Jak uvažuje programátor?”
Úvod do programování
Úvod do programování Ada Lovelace (1815—1852) Přednáška 1
…the Engine might compose elaborate and scientific pieces of music of any degree of complexity or extent. — Ada Lovelace
Úvod do programování Přednáška 1
Příslib techniky
Úvod do programování Přednáška 1
„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
Úvod do programování Přednáška 1
Úvod do programování Přednáška 1
Použitelnost — ergonomie ovládání Usability
Úvod do programování Přednáška 1
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)
Úvod do programování Přednáška 1
Úvod do programování Přednáška 1
HLEDISKO UŽIVATELE
Kontext ×
Konzistence HLEDISKO PROGRAMÁTORA
Úvod do programování Přednáška 1
PŘÍKLAD
Storno objednávek v aplikaci Úvod do programování Přednáška 1
Programátoři obtížně řeší kontextově závislé úlohy. Na rozdíl od počítačů.
Úvod do programování Přednáška 1
5
Algoritmus
Úvod do programování
Algoritmus je základem každého programu Algoritmus je sekvence příkazů
Úvod do programování Přednáška 1
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
Úvod do programování Přednáška 1
1. Nalít olej do pánve 2. Zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
Úvod do programování Přednáška 1
? 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
Úvod do programování Přednáška 1
? 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
Úvod do programování Přednáška 1
? 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
Úvod do programování Přednáška 1
? 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
Úvod do programování Přednáška 1
? Najít pánev ? Najít olej Do!ly vejce 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 Fatal Error
Cancel
OK
Úvod do programování Přednáška 1
˚ VLASTNOSTI ALGORITMU
1. Konečnost 2. Determinovanost 3. Vstup 4. Výstup 5. Efektivita 6. Obecnost http://cs.wikipedia.org/wiki/Algoritmus
Úvod do programování Přednáška 1
JEDNODUCHÝ ALGORITMUS
Nalezení největšího čísla z neuspořádaného seznamu čísel http://en.wikipedia.org/wiki/Algorithm#Example
Úvod do programování Přednáška 1
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.
Úvod do programování Přednáška 1
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
Úvod do programování Přednáška 1
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}"
Úvod do programování Přednáška 1
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č“
Úvod do programování Přednáška 1
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 Úvod do programování Přednáška 1
6
Programovací jazyk Ruby
Úvod do programování
Syntax 5.times { print "Hurá!" } print ["banán", "citron", "ananas"].sort.last.capitalize
Úvod do programování Přednáška 1
Objektově orientovaný jazyk
OBJEKT VLASTNOST METODA
Pes
věc/podstatné jméno malý vlastnost/přídavné jméno stekej činnost/sloveso
class Pes def velikost return @velikost end def stekej print “Haf!” end end
Úvod do programování Přednáška 1
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. …
Úvod do programování Přednáška 1
Zdroje
(viz www.ruby-lang.org/en/documentation)
www.pine.fm/LearnToProgram (původní verze) Úvod do programování Přednáška 1
www.poignantguide.net/ruby NEJBLÁZNIVĚJŠÍ UČEBNICE PROGRAMOVÁNÍ NA SVĚTĚ
Úvod do programování Přednáška 1
Ruby on Rails!
Úvod do programování Přednáška 1
Ruby on Rails
Úvod do programování Přednáška 1
Vyzkoušejte na http://tryruby.hobix.com
Úvod do programování Přednáška 1
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
Úvod do programování Přednáška 1
Děkuji!