Differences between revisions 86 and 87
Revision 86 as of 2010-05-12 13:12:27
Size: 9128
Editor: jenca
Comment:
Revision 87 as of 2011-02-17 20:51:13
Size: 3371
Editor: jenca
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
2009/10 -- LS 2010/11 -- LS
Line 7: Line 7:
[[attachment:zadanie.pdf]]

##
##[[attachment:zadanie.pdf]]
Line 26: Line 24:
V utorok 16:00-17:00. Radšej ale konzultuje priamo na cvičení. V stredu 16:00-17:00. Radšej ale konzultuje priamo na cvičení.
Line 39: Line 37:
== Skúška ==

<<Pozor>>
Termíny skúšky sú na http://is.stuba.sk.

Skúška bude prebiehať písomne. Obsah viď nižšie. Ihneď po napísaní vaše písomky opravím, potom
budem prípadne ešte konzultovať s tými ľuďmi, ktorí budú na hranici alebo nebudú spokojní s hodnotením.
<<Pohov>>

Z Vychodila treba vedieť:

 * Kapitola 3: od začiatku až po 3.6 včítane
 * Kapitola 4: od začiatku až po 4.3 včítane
 * Kapitola 5: v tej miere ako bolo odprednášané, najmä
  * štruktúra príkazového riadku, úvodzovky, apostrofy, medzery, opačné lomítka atď
  * presmerovanie vstupu a výstupu, {{{>,<,>>,<<,|}}}
  * skripty, mechanizmus fungovania konštrukcie {{{!#}}}
  * premenné, špeciálne premenné, argumenty skriptov
  * kontrola toku programu : {{{if,while,for}}}
  * princíp fungovania {{{if}}} a {{{while}}} cez exit status
  * príkaz {{{test}}}
 * Kapitola 6:
  * základné programy pre prácu s textom {{{sort,cut,paste}}}
  * regulárne výrazy, program {{{grep}}}
  * program {{{sed}}} (iba príkaz s)

Z Pythonu treba vedieť základy:

 * zabudované dátové typy
 * základy programovania ({{{for,while,if}}})
 * funkcie a parametre ({{{def}}})
 * triedy ({{{class}}})

Na skúške sa vás:
 
 * Spýtam na pár vecí z kapitoly 3 a 4.
 * Napíšete mi jeden-dva jednoduché príkazové riadky vykonávajúce zadanú činnosť. Nemusíte sa učiť všetky options všetkých príkazov, ak bude niečo treba vedieť, prezradím to. Ide mi o overenie znalosti princípu fungovania.
 * Bude zadanie o regulárnych výrazoch.
 * Napíšete krátky program v Pythone. Pravdepodobne to bude nejaká trieda.

Line 82: Line 39:
[[/Výsledky]] ##[[/Výsledky]]
Line 84: Line 41:
== Zadanie na prvé zápočtové cvičenie ==

<<Pozor>>
Tieto zadania si vypracujte doma. Ak to zvládnete sami, nemali by ste mať na skúšobnom cvičení
problém. Môžete si samozrejme navzájom pomáhať. Zadania nebudem zbierať. Na cvičení vám
dám urobiť niečo podobné, takže si vypracované zadania doneste, pomôže vám to. Body dostanete
za to, čo urobíte priamo na cvičení.

Skúšobné cvičenie bude 13.4.2010 počas cvičenia.
<<Pohov>>

Pripomínam, že príkaz man je vaším priateľom. Pre komplexnejšie informácie odporúčam nahliadnuť do Advanced Bash Scripting Guide, link je nižšie.

a) premenovanie obrázkov

Vytvorte v bashi skript `rename_pics`, ktorý premenuje všetky súbory v aktuálnom adresári, ktoré majú koncovku `JPG` na súbory s koncovkou `jpg`, napr. `obrazok1.JPG` premenuje na `obrazok1.jpg`.

Pomôcka: pre transformáciu mena môžete použiť takéto niečo: {{{NOVE_MENO=`echo $STARE_MENO | sed '...'`}}} Dávajte si pozor na to, aby ste premenovali iba koncovky, reťazec JPG sa môže vyskytovať aj
uprostred mena súboru. Môžete prepokladať, že mená súborov neobsahujú žiadne biele znaky, napr. medzery.

b) upravte skript z a) tak, aby premenoval aj súbory ako `obrazok1.jPG` a podobne.

Pomôcka: man sed.

c) a teraz to spravte všeobecne:

Napíšte skript, ktorý dostane v argumentoch zoznam mien súborov a premenuje ich tak, aby mali koncovky malými
písmenami.

Pomôcky: neurčitý počet argumentov je možné spracovať pomocou cyklu
{{{
while true
do
  ... spracovanie $1 ...
  if shift
  then
     break
  fi
done
}}}
alebo
{{{
while test "$*" != ""
do
  ... spracovanie $1 ...
  shift
done
}}}
prípadne
{{{
for ARG in "$@"
do
  ... spracovanie $ARG ...
done
}}}

Pre transformáciu veľkých písmen na malé použite príkaz `tr`.

== Zadanie na druhé zápočtové cvičenie ==

<<Pozor>>
Toto zadanie si vypracujte doma. Ak to zvládnete sami, nemali by ste mať na skúšobnom cvičení
problém. Môžete si samozrejme navzájom pomáhať. Zadania nebudem zbierať. Na cvičení vám
dám urobiť niečo podobné, takže si vypracované zadania doneste, pomôže vám to. Body dostanete
za to, čo urobíte priamo na cvičení.

Skúšobné cvičenie bude 11.5.2010 počas cvičenia.
<<Pohov>>

Napíšte modul `stack.py`, ktorý obsahuje implementáciu

 * triedy `Stack` a
 * funkcie `stack_from_string`

Trieda `Stack` implemetuje takéto metódy:

||`__init__(self)` || Inicializuj zásobník ako prázdny.||
||`push(self,what)` || Vloží `what` na vrch zásobníka.||
||`peek(self)` || Vráti objekt, ktorý je na vrchu zásobníka, pričom ho nevyberá.||
||`pop(self)` || Vyberie objekt zo zásobníka, návratová hodnota je tento objekt. Ak je zásobník prázdny, môže (a má) vyvolať výnimku.||
||`empty(self)`||Vyprázdni zásobník.||
||`__repr__(self)`||Vráti reťazec, v ktorom sú zreťazené `repr(x)` pre všetky objekty `x` v zásobníku, oddelené medzerami. Vrch zásobníka je na konci tohto reťazca.||

Okrem triedy `Stack` obsahuje modul `stack` aj takúto funkciu:

||`stack_from_string(s)`||Ako parameter očakáva reťazec celých čísel oddelených medzerami, napr. `"1 -20 17 4 5"`. Vráti `Stack` naplnený týmito číslami, pričom vrchné číslo je na konci s.||

=== Príklad použitia modulu na príkazovom riadku Pythonu ===

{{{#!python
>>> import stack
>>> s=stack.Stack()
>>> s.push(10)
>>> s.push(-10)
>>> s.push(100)
>>> print s
10 -10 100
>>> s.peek()
100
>>> print s
10 -10 100
>>> s.pop()
100
>>> print s
10 -10
>>> s.empty()
>>> print s

>>> s.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/gejza/vyuka/python_vyuka/stack.py", line 31, in pop
    return self.l.pop()
IndexError: pop from empty list
>>> s2=stack.stack_from_string("1 2 3 17")
>>> print s2
1 2 3 17
>>> s2.pop()
17
>>> print s2
1 2 3
>>>
}}}

Operačné systémy

2010/11 -- LS

Downloady pre cvičenia

Vyučujúci

Konzultačné hodiny

V stredu 16:00-17:00. Radšej ale konzultuje priamo na cvičení.

Stručná osnova predmetu

  • Princípy OS Unix/Linux
  • Základy práce so systémom
  • Súborový systém
  • Užívatelia a skupiny
  • Procesy, rúry
  • Prehľad základných utilít
  • Programovanie v shelli, skripty
  • Programovací jazyk Python

Výsledky

Ďalšie cvičenia

Cvičenia zo shellu

Cvičenia z Pythonu

Materiály

Literatúra

  1. Linux: Příručka českého uživatele, Vilém Vychodil; Computer Press 2003, Brno (je žiadúce, aby každý mal svoju kópiu)

  2. Začínáme programovat v jazyce Python, Daryl Harms, Kenneth McDonald; Computer Press, 2003

  3. Learning Python",, Mark Lutz, David Ascher; O'Reilly 2007, http://slav0nic.org.ua/static/books/python/OReilly.Learning.Python.3rd.Edition.Oct.2007.eBook-BBL.rar

  4. The Art of Unix Programming, Eric S. Raymond, http://www.faqs.org/docs/artu/

  5. Umění programování v Unixu, Eric S. Raymond, (český preklad horeuvedeného)

  6. How To Ask Questions The Smart Way, Eric Steven Raymond, http://www.catb.org/~esr/faqs/smart-questions.html

  7. Dive into Python, Mark Pilgrim, http://www.diveintopython.org/

  8. Advanced Bash-Scripting Guide, Mendel Cooper, http://tldp.org/guides.html

  9. GNU/Linux Command-Line Tools Summary, Gareth Anderson, http://tldp.org/guides.html

  10. A Byte of Python, Swaroop C H, http://www.swaroopch.com/notes/Python

  11. How to Think Like a Computer Scientist, Jeffrey Elkner, Allen B. Downey and Chris Meyers, http://openbookproject.net//thinkCSpy/

Webové stránky

  1. http://www.root.cz/clanky/regularni-vyrazy-1/ seriál o regulárnych výrazoch od P. Satrapu

  2. http://www.py.cz/ Český server venovaný Pythonu, obsahuje aj dokumentáciu k starším verziám Pythonu

Podmienky na zápočet

15 bodov z 30. Body sa budú udeľovať v rámci cvičení. Budú 2 zápočtové cvičenia, jedno zo shell scriptov a jedno z Pythonu.

Príklady a cvičenia

Výsledky

KMaDGWiki: OperacneSystemy (last edited 2023-09-18 07:57:19 by jenca)