• Nie Znaleziono Wyników

IB113 Úvod do programování a algoritmizace Úvod kurzu. Radek Pelánek

N/A
N/A
Protected

Academic year: 2022

Share "IB113 Úvod do programování a algoritmizace Úvod kurzu. Radek Pelánek"

Copied!
55
0
0

Pełen tekst

(1)

IB113

Uvod do programov´ ´ an´ı a algoritmizace Uvod kurzu ´

Radek Pel´anek

2020

(2)

Uvodn´ı pr˚ ´ uzkum

Piˇste do chatu:

Jak´y je hlavn´ı d˚uvod, proˇc m´ate tento pˇredmˇet?

”mus´ım“ (povinn´y, povinnˇe voliteln´y pˇredmˇet)

”chci“

”chci, protoˇze ...“

”chci se nauˇcit ...“

...

(3)

Dneˇsn´ı pˇredn´ aˇska

o pˇredmˇetu

organizace, ukonˇcen´ı

pojmy – algoritmus, programov´an´ı motivace, ˇsirˇs´ı kontext

pˇredstaven´ı Pythonu, rychl´e demo v´ıce o samotn´em programov´an´ı aˇz pˇr´ıˇstˇe

(4)

C´ıle pˇredmˇetu

”dobr´ez´aklady“

zvl´adnut´ı z´akladn´ıch program´atorsk´ych konstrukc´ı (promˇenn´e, funkce, if, for, while, . . . )

obecn´eprincipy pouˇziteln´e v ˇradˇe programovac´ıch jazyk˚u program´atorsk´y styl

´

uvod do program´atorsk´eho a algoritmick´eho stylu myˇslen´ı + z´akladn´ı povˇedom´ı o pokroˇcil´ych prvc´ıch, z´aludnostech, ...

(5)

Programovac´ı jazyk Python

”Uvod do programov´´ an´ı“

nikoliv

”Programov´an´ı v Pythonu“

Python je pouˇz´ıv´an pro ilustraci pojm˚u a pˇr´ıklad˚u, na cviˇcen´ıch

d˚uraz na obecn´e koncepty, c´ılem nen´ı detailn´ı zvl´adnut´ı Pythonu

z´amˇernˇe neprob´ır´ame specifika Pythonu zvl´adnut´ı konkr´etn´ıho jazyka – tr´enink a praxe

(6)

Program´ atorsk´ a kultura

Programy by mˇely b´yt nejen korektn´ı, ale i

”pˇekn´e“.

n´azvy promˇenn´ych, funkc´ı rozdˇelen´ı funkcionality do funkc´ı nepouˇz´ıv´an´ı

”copy&paste“ k´odu zarovn´an´ı ˇr´adku

dokumentace, koment´aˇre . . .

(7)

Program´ atorsk´ a kultura

Programy by mˇely b´yt nejen korektn´ı, ale i

”pˇekn´e“.

n´azvy promˇenn´ych, funkc´ı rozdˇelen´ı funkcionality do funkc´ı nepouˇz´ıv´an´ı

”copy&paste“ k´odu zarovn´an´ı ˇr´adku

dokumentace, koment´aˇre . . .

(8)

Co ˇcekat: pˇr´ıklady

v´ypoˇcty: faktori´al, prvoˇc´ısla, odmocnina, n´ahodn´a ˇc´ısla obr´azky: ˇzelv´ı grafika,

”textov´a grafika“, bitmapy jednoduch´e hry: h´ad´an´ı ˇc´ısla, variace na piˇskvorky zpracov´an´ı dat: statistiky dat ze souboru

(9)
(10)

Organizace pˇredmˇetu

pˇredn´aˇska

slidy + videonahr´avky z loˇnsk´eho roku

online blok: zd˚uraznˇen´ı hlavn´ıch prvk˚u, ˇreˇsen´e pˇr´ıklady, dotazy

cviˇcen´ı

programov´an´ı v jazyce Python

kombinace samostatn´e pr´ace a synchronn´ıho online bloku

(11)

Komunikace

ˇreˇsen´ı probl´em˚u, nestandardn´ı situace, dotazy:

cviˇc´ıc´ı sp´ıˇse neˇz pˇredn´aˇsej´ıc´ı diskuzn´ı f´orum sp´ıˇse neˇz mail

(12)

Hodnocen´ı pˇredmˇetu

400 bod˚u

dom´ac´ı ´ukoly: 200 bod˚u 6 za semestr

bodov´an´ı: 30, 30, 30, 30, 40, 40 z´avˇereˇcn´a p´ısemn´a zkouˇska: 200 bod˚u

psan´ı k´odu (podobn´e ´ulohy jako cviˇcen´ı, D ´U) ˇcten´ı k´odu, principy, algoritmy

pˇresn´a forma bude upˇresnˇena dle situace v´yjimeˇcn´e bonusov´e body

(13)

Hodnocen´ı pˇredmˇetu

minimum pro ukonˇcen´ı:

´

uˇcast na cviˇcen´ı

odevzd´an´ı vˇsech 6 dom´ac´ıch ´uloh (alespoˇn 5 bod˚u za kaˇzdou)

alespoˇn 120 bod˚u za dom´ac´ı ´ulohy alespoˇn 100 bod˚u ze z´avˇereˇcn´e zkouˇsky zn´amka: hranice rovnomˇernˇe mezi 220 a 400

(14)

Dom´ ac´ı ´ ukoly – organizace

skupiny: r´amcovˇe stejn´e zad´an´ı, odliˇsn´e detaily

pˇresn´e zad´an´ı, term´ın odevzd´an´ı – kompetence cviˇc´ıc´ıch

(15)

Opisov´ an´ı

pracujte samostatnˇe

opisov´an´ı se trest´a velmi pˇr´ısnˇe (hodnocen´ı F bez dalˇs´ıch diskuz´ı)

neˇreˇs´ıme moc, kdo opisoval – nesd´ılejte svoje ˇreˇsen´ı

(16)

Pˇrizn´ an´ı asistence

asistence s D´U:

mˇela by b´yt v´yjimeˇcn´a

jasnˇe pˇriznat v odevzdan´ych materi´alech celkov´e pojet´ı ´ulohy jsem konzultoval s XY

v t´eto funkci jsem mˇel chybu a nebyl schopen jsem ji naj´ıt, pouˇzit´e ˇreˇsen´ı je od XY

tuto funkci jsem nezvl´adl napsal, pouˇzil jsem ˇreˇsen´ı ze str´anky WV

(17)

Str´ anka pˇredmˇetu

https://www.fi.muni.cz/~xpelanek/IB113/

harmonogram pˇredn´aˇsek, cviˇcen´ı, ´ukol˚u slidy, odkaz na z´aznamy z loˇnska instrukce k online v´yuce

rozepsan´e podm´ınky ukonˇcen´ı v´yukov´e materi´aly

doplˇnuj´ıc´ı informace

(18)

Studijn´ı materi´ aly v ISu

Relevantn´ı agendy z ISu pro tento pˇredmˇet:

Uˇcebn´ı materi´aly – slidy z pˇredn´aˇsek

Organizaˇcn´ı pokyny – archiv zaslan´ych mail˚u Odevzd´av´arny – odevzd´av´an´ı dom´ac´ıch ´uloh Pozn´amkov´e bloky – poˇcet bod˚u z ´uloh

Diskuse – nejasnosti, tipy na zaj´ımav´e zdroje, ...

(19)

Sb´ırka pˇr´ıklad˚ u

https://www.fi.muni.cz/IB111/sbirka/

interaktivn´ı webov´a str´anka pˇr´ıklady ze cviˇcen´ı

procviˇcen´ı nad r´amec cviˇcen´ı

prim´arnˇe urˇcena pro paraleln´ı pˇredmˇet pro informatiky – obsahuje i tˇeˇzˇs´ı pˇr´ıklady nad r´amec IB113

(20)

Um´ıme programovat

https://www.umimeprogramovat.cz/

neomezen´y pˇr´ıstup po pˇrihl´aˇsen´ı, viz instrukce v mailu pˇredevˇs´ım pr˚ubˇeˇzn´e, dobrovoln´e procviˇcov´an´ı

konkr´etn´ı doporuˇcen´ı v pr˚ubˇehu semestru

2. a 4. dom´ac´ı ´uloha (cviˇcen´ı Programov´an´ı v Pythonu)

(21)

Vybran´e doplˇ nkov´ e zdroje – knihy

Python Programming: An Introduction to Computer Science, J. M. Zelle.

Introduction to Computing and Programming in Python, A Multimedia Approach. M. Guzdial, B. Ericson.

Program´atorsk´a cviˇcebnice, R. Pel´anek.

Jak to vyˇreˇsit, R. Pel´anek.

(22)

Vybran´e doplˇ nkov´ e zdroje – web

Uˇc´ıme se programovat v jazyce Python, http://howto.py.cz/index.htm

http://interactivepython.org – interaktivn´ı uˇcebnice

dokumentace k Pythonu Coursera, Udacity kurzy

sd´ılejte uˇziteˇcn´e zdroje v diskusn´ım f´oru pˇredmˇetu

(23)

Pˇredpoklady

z´akladn´ı poˇc´ıtaˇcov´a gramotnost

stˇredoˇskolsk´a matematika (napˇr. faktori´al, prvoˇc´ıslo, logaritmus)

logick´e spojky (and, or, ...)

angliˇctina (alespoˇn pasivnˇe, z´akladn´ı porozumˇen´ı)

(24)

Motivaˇcn´ı ´ uloha

pˇrevozn´ık, lod’ka uveze jen 1 dalˇs´ı kus n´akladu

n´aklad: vlk, koza, zel´ı bez dozoru:

vlk ˇzere kozu koza ˇzere zel´ı

jak dostat vˇse bezpeˇcnˇe na druhou stranu

Jak ˇreˇsit ´ulohu algoritmicky? Co to znamen´a?

http://www.fi.muni.cz/~xpelanek/IB111/vkz/

(25)

Motivaˇcn´ı ´ uloha

pˇrevozn´ık, lod’ka uveze jen 1 dalˇs´ı kus n´akladu

n´aklad: vlk, koza, zel´ı bez dozoru:

vlk ˇzere kozu koza ˇzere zel´ı

jak dostat vˇse bezpeˇcnˇe na druhou stranu

Jak ˇreˇsit ´ulohu algoritmicky? Co to znamen´a?

http://www.fi.muni.cz/~xpelanek/IB111/vkz/

(26)

Algoritmus

n´avod/postup, jak

”mechanicky“ vyˇreˇsit urˇcit´y typ

´

ulohy/probl´emu pˇr´ıklady:

rozklad na souˇcin prvoˇc´ısel

nalezen´ı nejkratˇs´ı cesty mezi dvˇema mˇesty vygenerovat zad´an´ı Sudoku

(27)

Z´ ˇ adouc´ı vlastnosti algoritmu

m´a jasn´y vstup a v´ystup

obecn´y (nejen pro omezenou tˇr´ıdu instanc´ı)

deterministick´y (vˇzdy jednoznaˇcn´e, jak postupovat) koneˇcn´y, efektivn´ı

(28)

Programov´ an´ı

za algoritmusm˚uˇzeme povaˇzovat i recept, n´avod programov´an´ı– z´apis algoritm˚u pro poˇc´ıtaˇce poˇc´ıtaˇce jsou

”hloup´e“ – z´apis algoritmu mus´ı b´yt opravdu pˇresn´y (srovnej

”osol´ıme pˇrimˇeˇrenˇe“) nutnost vyjadˇrovat se pˇresnˇe:

otrava – n´aroˇcn´y z´apis

bonus – nutnost myslet pˇresnˇe

(29)

Programov´ an´ı: motivace

Proˇc poˇr´adnˇe zvl´adnout z´aklady programov´an´ı?

z´aklad pro dalˇs´ı studium uˇziteˇcnost

profesn´ı obˇcasn´a

elegance, kreativita,

”s´ıla“

(30)

Programov´ an´ı: zp˚ usoby vyuˇzit´ı

(pˇr´ıklady, rozhodnˇe ne kompletn´ı klasifikace) aplikace

programov´an´ı pro web vestavˇen´e syst´emy vˇedeck´e v´ypoˇcty skriptov´an´ı

kaˇzd´e d˚uraz na nˇeco jin´eho, sd´ıl´ı ale z´akladn´ı principy

”informatick´eho myˇslen´ı“, n´ami prob´ıran´e z´akladn´ı konstrukce jsou potˇreba vˇsude

(31)

Aplikace

”samostatn´e“ aplikace pro stoln´ı poˇc´ıtaˇce, mobiln´ı zaˇr´ızen´ı

pˇr´ıklady:

kancel´aˇrsk´y software

editace grafiky, zvuku, videa hry

d˚uraz na interakci s uˇzivatelem

vyuˇzit´ı knihoven, pr´ace s operaˇcn´ım syst´emem

(32)

Programov´ an´ı pro web

pˇr´ıklady:

informaˇcn´ı syst´emy e-obchody

prezentace firmy ˇsirok´a ˇsk´ala:

drobn´e ´upravy existuj´ıc´ıch syst´em˚u (CMS) vytv´aˇren´ı vlastn´ıch rozs´ahl´ych syst´em˚u

pr´ace s datab´azemi, integrace r˚uzn´ych prostˇredk˚u (Python/PHP, JavaScript, CSS, HTML. . . )

d˚uraz na soukrom´ı – pˇr´ıstupov´a pr´ava v IS, elektronick´e platby

(33)

Vestavˇen´e syst´emy

pˇr´ıklady:

kuchyˇnsk´e spotˇrebiˇce, GPS, mobil, fot’´ak dopravn´ı prostˇredky

zdravotnick´e pˇr´ıstroje

n´ızko-´urovˇnov´e programov´an´ı, ovladaˇce

´

uzk´e propojen´ı s konkr´etn´ım hardwarem

bezpeˇcnost, pr´ace s limitovan´ymi zdroji (pamˇet’, energie)

(34)

Vˇedeck´ e v´ ypoˇcty

pˇr´ıklady:

simulace poˇcas´ı, klimatu

bioinformatika (protein folding, anal´yza genomu, ...) vym´yˇslen´ı algoritm˚u (urychlen´ı v´ypoˇctu, distribuovan´e v´ypoˇcty)

propojen´ı informatiky a matematiky (pˇr´ıp. jin´ych discipl´ın) zpracov´an´ı rozs´ahl´ych dat

uˇzivatelsk´e rozhran´ı a interaktivita jsou jen mal´a ˇc´ast

(35)

Skriptov´ an´ı

pˇr´ıklady:

pˇrevod dat mezi r˚uzn´ymi form´aty rychl´a anal´yza dat

prototypy, experimenty

drobn´e ´upravy syst´emu (napˇr. spr´avce s´ıtˇe) mal´y rozsah, specifick´y ´uˇcel

ˇcasto jednor´azov´e aplikace

”programov´an´ı pro bˇeˇzn´y ˇzivot“

(36)

Programov´ an´ı v mal´em / ve velk´ em

programov´an´ı v mal´em

des´ıtky aˇz stovky ˇr´adk˚u k´odu nez´avisl´e na

”ostatn´ıch“

tento pˇredmˇet programov´an´ı ve velk´em

tis´ıce aˇz mili´ony ˇr´adk˚u

z´avislosti, souvislosti, n´avrh, testov´an´ı, ...

dalˇs´ı pˇredmˇety (OOP, softwarov´e inˇzen´yrstv´ı, ...)

(37)

Programov´ an´ı v mal´em: motivace

nutn´a prerekvizita pro kvalitn´ı programov´an´ı ve velk´em tr´enink myˇslen´ı

prakticky uˇziteˇcn´e, i kdyˇz nejste program´ator na pln´y

´ uvazek

(38)

Praktick´e programov´ an´ı v mal´em: pˇr´ıklady

tvorba studijn´ıho katalogu

vytvoˇren´ı interaktivn´ı v´yukov´e ´ulohy pro webov´y syst´em zpracov´an´ı botanick´ych dat

obr´azky do knihy Hlavolamikon vytv´aˇren´ı ˇsifer pro Tmou

Pokud neovl´ad´ate X, pak v´as ˇcasto ani nenapadne, ˇze by se v´am X mohlo hodit.

(39)

Obr´ azky do knihy

”0102010902050302030703080401040304090507060606100701...;

3131313113:3131231213-;10”

3 1 3 1 3 1 3 1 1 3 3 1 3 1 2 3 1 2 1 3

(40)
(41)

Doporuˇcen´e cviˇcen´ı

rutinn´ı ˇcinnost (na poˇc´ıtaˇci)

program´atorsk´e cviˇcen´ı

(42)

Nejen uˇziteˇcnost. . .

programov´an´ı je zaj´ımav´e i samo o sobˇe elegantn´ı myˇslenky

radost z objevov´an´ı, experimentov´an´ı tvoˇren´ı, kreativita

”s´ıla“ – p´ar stisk˚u kl´avesnice a vytvoˇr´ıte nˇeco nov´eho a zaj´ımav´eho

(43)

Elegance

Mandelbrotova mnoˇzina, 25 ˇr´adk˚u k´odu

Zkuste YouTube: Mandelbrot set

(44)

Programovac´ı jazyky

zdrojový kód

(program) překladač strojový

kód

vstupy běžící výstupy

program

zdrojový kód (program)

vstupy

výstupy interpret

kompilovaný program

interpretovaný program

(45)

Programovac´ı jazyky: klasifikace I

n´ızko-´urovˇnov´e

kompilovan´e

nutnost ˇreˇsit specifika konkr´etn´ıho syst´emu explicitn´ı pr´ace s pamˇet´ı

n´aroˇcnˇejˇs´ı v´yvoj (n´ızk´a efektivita pr´ace) vysok´a efektivita programu

vysoko-´urovˇnov´e

interpretovan´e

nez´avisl´e na konkr´etn´ım syst´emu vyuˇzit´ı abstraktn´ıch datov´ych typ˚u snadnˇejˇs´ı v´yvoj (vysok´a efektivita pr´ace) niˇzˇs´ı efektivita programu

nikoliv dvˇe kategorie, ale plynul´y pˇrechod; zjednoduˇseno

(46)

Programovac´ı jazyky: klasifikace II

zjednoduˇsen´a klasifikace a pouˇzit´ı n´ızko-´urovˇnov´e C, FORTRAN, ...

vestavˇen´e syst´emy, rychl´e v´ypoˇcty objektov´e C++, Java, C#, ...

klasick´e aplikace, rozs´ahl´e syst´emy skriptovac´ı Python, PHP, JavaScript, Perl, ...

programov´an´ı pro web, skriptov´an´ı, prototypy deklarativn´ı Prolog, LISP, Haskell, ...

umˇel´a inteligence

v´ıce na samostatn´e pˇredn´aˇsce na konci semestru

(47)

Python

vysoko-´urovˇnov´y – velk´a m´ıra abstrakce,

”spustiteln´y pseudok´od“

interpretovan´y – pomalejˇs´ı neˇz kompilovan´y, ale vˇetˇs´ı volnost

pedagogick´y – byl tak navrˇzen, dnes jiˇz dominantn´ı v´yukov´y jazyk

modern´ı a ˇsiroce pouˇz´ıvan´y – patˇr´ı mezi pˇribliˇznˇe 5 nejpouˇz´ıvanˇejˇs´ıch jazyk˚u

volnˇe a snadnodostupn´y na vˇsech platform´ach ˇsirok´a nab´ıdka knihoven

(48)

P˚ uvod jazyka a n´ azvu

autor:

Guido van Rossum konec 80. let

n´azev podle:

Monty Python’s Flying Circus

(49)

https://xkcd.com/353/

https://www.explainxkcd.com/wiki/index.php/353

(50)

Python je pouˇz´ıvan´ y...

https://spectrum.ieee.org/at-work/innovation/the-2018-top-programming-languages

(51)

Programov´ an´ı v tomto kurzu

d˚uraz na obecn´e principy, nikoliv specifika Pythonu

vˇetˇsina koncept˚u snadno a velmi podobnˇe realizovateln´a v jin´ych jazyc´ıch

pouˇz´ıv´ame Python 3 (zpˇetnˇe nekompatibiln´ı s Python 2) minim´aln´ı pouˇzit´ı rozˇsiˇruj´ıc´ıch knihoven

(52)

Osnova I: Z´ aklady

Z´akladn´ı konstrukce (promˇenn´e, v´yrazy, ˇr´ıdic´ı struktury, funkce)

Programy pracuj´ıc´ı s ˇc´ısly (ˇc´ıseln´e typy, jednoduch´e uk´azky, dˇelitelnost, n´ahoda)

Retˇˇ ezce a seznamy (a kryptografick´e odboˇcky) Vyhled´av´an´ı a ˇrazen´ı (pr´ace se seznamem, bin´arn´ı vyhled´av´an´ı, ˇradic´ı algoritmy, z´aklady sloˇzitosti) Datov´e typy a jejich uˇzit´ı (slovn´ık)

⇒ hlavn´ı d˚uraz cviˇcen´ı, program´atorsk´e ˇc´asti zkouˇsky, ...

(53)

Osnova II: Pokroˇcilejˇs´ı prvky, aplikace

Z´aludnosti: Promˇenn´e, pamˇet’, rekurze Pr´ace se soubory, textem, regul´arn´ı v´yrazy Sloˇzen´e datov´e typy, objekty v Pythonu Obr´azky (reprezentace, generov´an´ı, ´upravy)

V´yvoj program˚u, programovac´ı jazyky, praktick´e tipy

⇒ povˇedom´ı, z´akladn´ı vhled, testov´ano na z´avˇereˇcn´e zkouˇsce

(54)

Demo z´ akladn´ıch prvk˚ u

promˇenn´e

typy (ˇc´ıslo, ˇretˇezec, bool) print (funkce pro v´ypis)

v´yrazy, oper´atory (aritmetick´e, logick´e) podm´ınky (if/else)

cykly (for, while) bloky k´odu funkce

(55)

Shrnut´ı

programov´an´ı je zaj´ımav´e uˇziteˇcn´e Python je

pˇr´ıvˇetiv´y i pro zaˇc´ateˇcn´ıka pˇr´ımo prakticky pouˇziteln´y

Cytaty

Powiązane dokumenty

The minimum total cover problem was first shown to be NP-hard in general graphs by Majumdar [10], where he also gives a linear-time algorithm for trees.. Hedetniemi

OV=>HKJQ DGMDFHQF\BOLVW P=G F=G LKG=V=JK J= E OPEJCQ 1NVU LEANSOVA L=N=IAPNU OØ J=VS=IE PULÉS GPÉNA @ABEJEQFØ GKHAG?FA SUGKNVUOP=JA @K LNVA?DKSU S=JE= GN=Sã@VE E SEANV?DKwGÉS

Pod tematem przepisują punkty i przygotowują się do nich ustnie ( jeśli ktoś chce może pisemnie).Do każdej lekcji zadane są prace domowe do wykonania w zeszycie ćwiczeń..

Celem lekcji jest poznanie stref klimatycznych i krajobrazowych na Ziemi oraz ich charakterystycznych cech.. Strefy klimatyczne - to układające się równoleżnikowo pasy o

Aczkolwiek zrąb materiałów dotyczy lat 1918-1939, to jednak dość znaczna część korespondencji sięga po lata wcześniejsze (np. listy Ludwika Misky’ego pisane

En construisant les mots appartenant `a ces quatre groupes avec les pr´edicats quantitatifs `a polarit´e n´egative (affaiblir, baisser, diminuer, faiblir, tomber), nous pouvons

stawowych wiadomości lekarskich, przejawia się troska Perzyny o podniesienie stanu zdrowia ludności polskiej. Własna znajomość podstawowych spraw z dziedziny

ŻEMŁA przy czym metoda siatek stosowana jest względem zmiennej czasowej, a metoda elementu skończonego - względem zmiennych przestrzennych.. Otrzymany schemat