V tem repozitoriju se zbirajo gradiva za predmet Programiranje 1 v 2. letniku matematike na Fakulteti za matematiko in fiziko.
Ker vam GitHub ob kliku na HTML datoteko namesto strani prikaže izvorno HTML kodo, je treba prosojnice pogledati s pomočjo strani http://htmlpreview.github.io. Tu so direktne povezave na prosojnice:
- Uvod v OCaml
- Funkcije
- Definicije tipov
- Učinki in čistost
- Iskalna drevesa
- Spremenljive podatkovne strukture
- Deli in vladaj
- Dinamično programiranje
- Memoizacija v Pythonu
- Memoizacija v OCamlu
Namestite si urejevalnik Visual Studio Code in razširitev za OCaml. Razširitev deluje brez posebnih nastavitev za manjše datoteke, pri večjih projektih je potrebno nekaj nastavitev za pravilno prepoznavanje OCamla. Razširitev za Python bi morala biti že nameščena.
Vse vaje (skupaj z rešitvami) so objavljene na v tem repozitoriju. Najenostavnejše jih boste reševali, če si naredite svoj fork.
Za namestitev imate več možnosti: direktno na računalniku, z uporabo dockerja ali prek kakšnega od upravljalcev paketov. Če nič od tega ne dela, lahko OCaml uporabljate tudi iz spletnega brskalnika.
- Namestite si Python in poskrbite, da je dodan v pot (
Path
)
Pozor: Obvezno si namestite OCaml 4.XX.XX in ne nameščajte različice 5.XX.XX
- Linux: Namestite OCaml primeren za vaš sistem.
- MacOS: Namestite OCaml primeren za vaš sistem.
- Windows: Priporočamo, da uporabljate namestitev OCamla s pomočjo Dockerja v naslednjem razdelku. OCaml lahko na windowse namestite tudi direktno, vendar je ta možnost vedno manj podprta. [Za Windows uporabnike je na voljo preprostejša namestitev za OCaml 4.02, ki jo uporabljajo tudi šolski računalniki.] Novejša različica OCaml 4.12 zahteva rahlo naprednejšo uporabo taskov v VSCode.
Taska za zagon Python in OCaml datotek sta na voljo na repozitoriju predmeta.
Pri namestitvi na Windowsih brez Dockerja je potrebno nekoliko popraviti taske za OCaml:
"label": "OCaml",
"type": "shell",
"command":
"C:\\OCaml64\\usr\\local\\bin\\ocaml-env.exe exec -- C:\\OCaml64\\home\\???\\.opam\\4.12.0+mingw64c\\bin\\ocaml.exe -init \\\"${file}\\\""
kjer ???
nadomestite z uporabniškim imenom, s katerim ste prijavljeni na računalnik. Pri uporabniškem imenu pobrišete vse presledke in neangleške znake nadomestite z angleškimi verzijami (č -> c), npr. namesto Katja Berčič
, uporabite KatjaBercic
. Prav tako pri uporabi 32-bitne namestitve zamenjajte vse 64
z 32
.
Preverite, da ste namestili pravilno verzijo, saj namestitveni program posodabljajo. Odprite C:\OCaml64\home\???\.opam\
in v task namesto 4.12.0+mingw64c
prilepite pravilno verzijo.
Namesto da si Python in OCaml namestite direktno na računalnik lahko uporabite docker kontainerje, ki poskrbijo, da so namestitve ločene. Slaba stran te namestitve je dejstvo, da (trenutno) porabi nekoliko več prostora na disku (prostor, ki ga potrebuje docker + 4.5 GB)
Pri namestitvi sledite navodilom iz https://code.visualstudio.com/docs/devcontainers/containers, kamor se lahko obrnete, če pride do kakšnih napak.
- Namestite si docker za vaš operacijski sistem: https://docs.docker.com/get-docker/ in ga nastavite. Za sistem Windows si morate dodatno namestiti tudi WSL (https://docs.microsoft.com/sl-si/windows/wsl/wsl2-kernel), na kar vas ob prvem zagonu opozori tudi docker.
- V VSC si namestite razširitev Dev Containers.
- Uredite si git v remote kontainerju https://code.visualstudio.com/docs/devcontainers/containers#_working-with-git.
Za uporabo klonirajte repozitorij predmeta in zaženite ukaz (ctrl + shift + P
) Dev Containers: Rebuild and Reopen in Container
.
Prvi zagon traja nekaj časa, saj mora naložiti celotno sliko, vsi naslednji zagoni pa so hitri.
Ko se projekt odpre, lahko normalno uporabljate taske, ki so na voljo na repozitoriju predmeta.
- Če docker in Mingw ne delujeta, lahko uporabite Diskuv
- Če vas zanima delo na večjih ocaml projektih povezanih z medmrežjem, si lahko ocaml namestite prek ogrodja esy
Če vam nobena od zgornjih možnosti ne dela, lahko uporabite enega od spletnih vmesnikov:
Odprite poljubno OCaml datoteko (recimo to) in poženite ukaz Run Tasks
in izberite task OCaml
.
V konzolo vpišite fakulteta 10;;
in preverite, če je rezultat pravilen.
-
Ukaz
pip
javi dapip
ne obstaja, čeprav jepython
delujoč in dodan vPATH
.Problem je lahko v tem, da se pip ni pravilno namestil. Na windowsih lahko vidite, da v
Scripts
ni nobenih datotek. Gre za znano težavo pri nameščanju pythona. Trenutno je to najlažje odpraviti tako, da namestite starejšo verzijo pythona (3.6
ali nižje). -
Terminal pri zagonu taskov na windowsu javi, da ne najde datoteke.
Nekatere verzije windowsa zahtevajo drugačno obliko zapisa za zagon. V obeh taskih trojne znake
\\\
zamenjajte z enojnimi\
. Del taska tako postane\"${file}\"
. -
Pri nameščanju OCaml-a dobim napako "Cygwin instalation is incomplete".
Izklopite vse antivirusne programe, odstranite obstoječo namestitev OCamla in namestitveni program za OCaml zaženite kot administrator.
-
Ob zagonu ocaml programa se nič ne zgodi, ali pa dobim napako "Error: Unbound module Stdlib"
Verjetno je prišlo do napake pri namestitvi cygwina. Možna rešitev je, da ročno nastavite sistemsko spremenljivko "OCAMLLIB" na mesto namestitve ocamla: "C:\OCaml64\home\UPORABNISKO_IME.opam\4.12.0+mingw64c\lib\ocaml" (Kjer pravilno vpišete svoje uporabniško ime in verzijo ocamla).
-
Na linuxu dobim vse možne težave
Preverite, da imate nameščeno novejšo verzijo opama (vsaj
2.X
) -
Na računalniku ne znam nastavit sistemskih spremenljivk
Viri zapiskov se nahajajo v mapi zapiski
. Za izdelavo HTML datotek si morate namestiti paket jupyter-book
. Nato pa pokličete
jupyter-book build zapiski
Če imate ustrezne pravice, lahko HTML najenostavneje objavite kar prek GitHub pages tako, da si namestite še paket ghp-import
in poženete
ghp-import --no-jekyll --no-history --force --push zapiski/_build/html