Programiranje 1
Oris teme
-
Namen predmeta Programiranje 1 je naučiti bruce programirati. Programiranje je osnovna veščina računalnikarja in kdor je ne bo obvladal, bo imel težave tudi ves preostanek študija. Z bolj optimističnega konca: kdor se bo potrudil pri tem predmetu (in drugih v prvem letniku), se mu bo to obrestovalo tako v višjih letnikih kot v življenju.
-
-
Izpit
-
Problem v testih za nalogo 4: če vam testa
self.assertEqual({'i', 'A', 'p', 'T', 'B', 'z', 'j', 'e'}, vrhovi(skladovnica, ".", 2)) self.assertEqual({'i', 'A', 'p', 'T', 'B', 'z', 'j'}, vrhovi(skladovnica, ".", 3))
javljata napako, da množica, ki jo vrača vaša funkcija, vsebuje dodatni element
y
, ga dodajte. Se pravi, pravilno jeself.assertEqual({'i', 'A', 'p', 'T', 'B', 'z', 'j', 'e', 'y'}, vrhovi(skladovnica, ".", 2)) self.assertEqual({'i', 'A', 'p', 'T', 'B', 'z', 'j', 'y'}, vrhovi(skladovnica, ".", 3))
Če testi že brez tega pravijo, da vaša funkcija deluje pravilno, pa jih pustite, kot so. (Problem je v resnici v slovarju, ki opisuje skladovnico.)
-
Zapiski predmeta v času izpitov
Večina povezav na novejše zapiske predavanj in rešitev domačih nalog od 20/21 naprej vodi na github. Ker je v času izpita internet, razen Učilnice, zaprt, je tule objavljena arhiv z zapiski v Jupyter notebook. Tako PyCharm kot VS Code jih znata normalno odpreti. Zapiske o imenskih prostorih, risanju, definiranju novega razreda ter rešitve vaj in starejših domačih nalog pa lahko normalno gledate na Učilnici.
-
-
Zapiski specifični za vaš predmet so v podmapi p1. Vsi zapiski so v obliki jupyter notebook (.ipynb). (Za vsak slučaj pa so pretvorjeni še v PDF, čeprav je pretvorba ponekod bolj zasilna.)
-
Zbrani zapiski predmeta
Povezave na zapiske predavanj, dodatnih predavanj in domačih nalog so v vsakem poglavju predmeta. Tule pa so zbrani vsi zapiski v treh oblikah:
- Arhiv zapiskov: za ogled in poganjanje na vašem računalniku. Zahteva nameščen Jupyter notebook
- Repozitorij na Githubu: za statičen ogled v brskalniku.
- Binder: za poganjanje in preskušanje v brskalniku, brez nameščanja lokalnega Pythona in Jupytra. (Spremembe se ne shranijo, temveč izginejo po 30 minutah neuporabe!) Zapiski za ta predmet so v mapi p1.
Zapiski, ki iz tehničnih razlogov niso pripravljeni kot Jupyter notebook, so dostopni le v pripadajočih poglavjih na Učilnici.
-
-
Na prvem predavanju smo videli, da so računalniki pravzaprav samo malo večji (težji, dražji) kalkulatorji. Z malo več pomnilnika. No, poleg tega jim lahko napišemo tudi več računov naenkrat, na zalogo, pa jih bodo izračunali lepo enega za drugim.
-
PredavanjaZa tiste, ki že znajo programiratiker predavanja in vaje včasih spominjajo na sceno iz serije, po kateri je Python dobil ime.za tiste, ki raje poslušate kot berete.Malo za zraven: v kaj se prevaja Python?VajeDomača naloga
-
-
Poleg tega, da znajo izvajati zaporedje računov, lahko računalnikom rečemo, naj kak račun izračunajo le, če je rezultat prejšnjega računa tak in tak. Ali pa, naj nekaj stavkov ponavlja, dokler je izpolnjen kak pogoj.
To pa je že približno vse, kar znajo sploh početi računalniki.
-
.PredavanjaUgonobila ga je logika njegove žene.
Za tiste, ki že znajo programiratiKaj je
bool
; kaj v resnici počnetaand
inor
; nekaj boljšega kotswitch
VajeStare domače naloge
Domača naloga
-
-
Doslej so spremenljivke vsebovale eno samo, preprosto vrednost, recimo število. Kadar imamo cel seznam vrednosti, jih spravimo v ... seznam.
Druga tema tega poglavja so zanke. While ni niti edina niti najbolj uporabljana zanka. Njena konkurenca je zanka for, ki steče prek seznama reči, prek črk v nizih, prek vrstic v datotekah...
-
.PredavanjaZa tiste, ki že znajo programirati
Numpy je knjižnica, ki naredi Python učinkovit in hiter.
VajeStare domače naloge
Domača nalogaDomača naloga (2)
-
-
Naši programi se neusmiljeno daljšajo. Da jih bomo še lahko obvladovali, se jih bomo morali naučiti razkosati na posamezne dele, ki opravljajo posamezna opravila. Naučiti se moramo pisati funkcije. To nam bo precej olajšalo življenje.
-
.PredavanjaZa tiste, ki že znajo programiratiPovzetek predavanj, potem malo težje teme
VajeStare domače naloge
Razen pri nalogah iz prvih let so domačim nalogam priloženi testi. Povezave so v besedilih.
Domača naloga
-
-
Da bomo počasi začeli pisati programe, ki v resnici kaj naredijo, moramo izvedeti, kje dobiti še kakšno uporabno funkcijo ter kaj vse še znajo nizi, seznami in terke.
-
.PredavanjaZa tiste, ki že znajo programiratiVajeStare domače naloge
Domača naloga
-
-
Seznami so uporabni, hitro pa naletimo na reči, ki jim niso dorasli. Potrebovali bi nekaj drugega. Potrebovali bi ... slovarje.
-
.PredavanjaZa tiste, ki že znajo programiratiVajeStare domače naloge
Nekatere naloge vključujejo delo z datotekami, ki smo jih včasih obravnavali pred slovarji.
Domača naloga
-
-
Vse, kar smo počeli doslej, postane okorno v primerjavi s tem, kar se naučimo tule. Večina funkcij, ki smo jih doslej pisali na predavanjih in vajah ter v domačih nalogah, se lahko brez težav spravi v eno samo (in navadno niti ne zapleteno) vrstico.
-
.PredavanjaNa željo študentov. Drugače to ni užitno. Raje berite zapiske. :)
Za tiste, ki že znajo programirati... in kaj v resnici počne zanka
for
Lepa razlaga vsega tega v Pythonovi dokumentacijiVajeStare domače naloge
Domača naloga
-
-
Doslej so spremenljivke preprosto - bile. Zdaj se bomo vprašali, kaj spremenljivke pravzaprav so, kje živijo, kdo jih vidi, kaj pomeni prirejanje...
-
.PredavanjaStran, ki ilustrira programe (lahko tudi vaše) na podoben način, kot smo jih na teh predavanjih.Za tiste, ki že znajo programiratiVajeStare domače naloge
Domača naloga (za oceno)
-
-
Čas je, da se naši programi vsaj malo znajdejo v resničnem svetu. Zato se moramo naučiti, kako lepo izpisovati in kako brati datoteke. Na predavanjih smo se naučili nekaj malega, v zapiskih je malenkost več ... več pa v Programiranje 1 ne sodi, temveč se boste teh reči učili sproti.
-
.PredavanjaZa tiste, ki že znajo programiratiVajeStare domače naloge
Domača naloga
-
-
Rakurzija vam mora zlesti pod kožo. Če katera tema zahteva vajo, je to rekurzija. Ko jo obvladate, pa je zelo naravna in udobna.
-
Predavanja(Starejši zapiski, ki se delno prekrivajo z novimi)
(Starejši zapiski, ki se delno prekrivajo z novimi.)
Šolski primer rekurzije za lepo rešitev (navidez :) težkega problema iz dinamičnega programiranja + nekaj analize in memoizacija
Dinamično programiranje, rekurzija in memoizacija
VajeStare domače naloge
Domača nalogaDomača naloga za oceno
-
-
Snov tega predavanja je - navidez - le priložnostni modul za risanje. V resnici bo služil kot priložnost za ponovitev rekurzije, uvod v objektno programiranje, v enakem okolju pa se bomo učili delati tudi uporabniške vmesnike. Tole je torej uvod v preostanek predmeta.
-
PredavanjaSkopiraj v direktorij, v katerem bo program, ki ga pišeš.Vaje
Stare domače naloge
-
-
Še zadnja velika tema: kako definiramo nove podatkovne tipe (ali razrede), kako jim damo metode...
-
PredavanjaZa tiste, ki že znajo programiratiRutinske reči na kratko, potem globinaVaje
Stare domače naloge
Domača naloga za ocenoNaloga za oceno
-
-
Na zadnjih predavanjih se bomo (čas je že!) naučili delati programe, ki izgledajo, kot izgledajo običajni programi - z okenčki, gumbi ... Dovolj je že print-a in input-a!
-
PredavanjaVaje
-
-
Razne drobnarije, za katere ni bilo časa na predavanjih - vsaj letos ne - vendar je koristno vedeti zanje in bi morda koga zanimale. Nekateri od teh zapiskov so starejši; nanašajo se lahko na, recimo, starejše različice Pythona in zato danes te stvari morda lotimo kako drugače, preprosteje.
-
Tole je kar staro in že dolgo nisem preskušal. Ampak sodeč po dokumentaciji naj bi podpiralo tudi najnovejše različice Pythona, torej je očitno vzdrževano.
-
.Tudi to je kar staro, danes bi najbrž zastavil drugače. Predvsem tisti del o HTML se danes ne dela več z regularnimi izrazi, saj je to veliko preprostejše narediti z BeautifulSoup.
-
Objavljeni izpiti naj bodo v pomoč pri učenju. Pazite pa, da vas preprostost objavljenih rešitev ne zaslepi: če razumete rešitev, še ne pomeni, da znate sami priti do nje! Primeren postopek dela je, da rešite nalogo, pogledate rešitev in ponovno rešite nalogo.
Upoštevajte, da se snov, ki pride v poštev za izpit, iz leta v leto spreminja! Letos smo se učili stvari, ki se jih lani niso in obratno; ne pritožujte se, da "tega lani ni bilo" ali da so letošnji izpiti težji od lanskih (ali, manj verjetna pritožba, lažji).
-
Izpiti v 2009/10 Izpiti v 2010/11 Izpiti v 2011/12 Izpiti v 2012/13 Izpiti v 2013/14 Izpiti v 2014/15 Izpiti v 2015/16 Izpiti v 2016/17 Izpiti v 2017/18 Izpiti v 2018/19 Izpiti v 2019/20 Izpiti v 2020/21 Izpiti v 2021/22
-
-