2. 1 www.google.com/search?q=karel+minařík
Úvod do programování
3. 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
Úvod do programování Přednáška 1
5. → 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
6. Proč se na Studiích nových médií
3 zabývat programováním?
Úvod do programování
7. „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
11. 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
20. Co je praktickým cílem
našeho kursu?
Úvod do programování Přednáška 1
21. 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í?
Úvod do programování Přednáška 1
25. …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
27. „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
30. 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
36. Algoritmus je základem každého programu
Algoritmus je sekvence příkazů
Úvod do programování Přednáška 1
37. 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
38. 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
39. ? 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
40. ? 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
41. ? 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
42. ? 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
43. ? Najít pánev
Fatal Error
? Najít olej
Do!lyNalít olej do pánve
1. vejce
2. Zapálit plyn
? Čím zapálit plyn
Cancel OK
3. Vzít vejce
4. Rozklepnout vejce o okraj pánve
Úvod do programování Přednáška 1
44. ˚
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
46. 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
47. 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
48. ZÁPIS V PROGRAMOVACÍM JAZYCE
input = [1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19]
1
largest = input.first
2
input.each do |i|
3
largest = i if i > largest
4
end
5
print quot;Nejvyšší číslo je: #{largest}quot;
6
Úvod do programování Přednáška 1
49. ZÁPIS V PROGRAMOVACÍM JAZYCE
input = [1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19]
1
largest = input.first
2
input.each do |i|
3
largest = i if i > largest
4
end
5
print quot;Nejvyšší číslo je: #{largest}quot;
6
„tajemné umění programovat počítač“
Úvod do programování Přednáška 1
50. ZÁPIS V PROGRAMOVACÍM JAZYCE
input = [1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19]
1
largest = input.first
2
input.each do |i|
3
largest = i if i > largest
4
end
5
print quot;Nejvyšší číslo je: #{largest}quot;
6
„tajemné umění programovat počítač“
Syntax
Úvod do programování Přednáška 1
51. 6 Programovací jazyk Ruby
Úvod do programování
53. Objektově orientovaný jazyk
Pes věc/podstatné jméno
OBJEKT
malý vlastnost/přídavné jméno
VLASTNOST
stekej činnost/sloveso
METODA
class Pes
def velikost
return @velikost
end
def stekej
print “Haf!”
end
end
Úvod do programování Přednáška 1
54. 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
55. Zdroje (viz www.ruby-lang.org/en/documentation)
www.pine.fm/LearnToProgram (původní verze)
Úvod do programování Přednáška 1
61. 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