Systémové programovanie 2010

2010/12/14

Prednášky

Prvá prednáška

Powershell

Druhá prednáška

Powershell

Tretia prednáška (5. 10. 2010)

Powershell

Štvrtá prednáška (12. 10. 2010)

Úvod do C#

Piata prednáška (19. 10. 2010)

Windows Messages ako spôsob výmeny správ

Šiesta prednáška (26. 10. 2010)

Mechanizmy inter-process communication (IPC) vo Windowse

Siedma prednáška (2. 11. 2010)

Prednáška č. 8 (9. 11. 2010)

Úvod do jazyka C

Prednáška č. 9 (16. 11. 2010)

Alokácia pamäte - statická a dynamická. Reťazce v C.

Prednáška č. 10 (23. 11. 2010)

Ekvivalencia pointerov a polí. Operátory & a *. Odovzdávanie parametrov hodnotou a odkazom.

Prednáška č. 11 (30. 11. 2010)

Oblasť platnosti premenných, structy, pointery na structy

Prednáška č. 12 (7. 12. 2010)

Viacrozmerné polia. Pointre na funkcie.

Prednáška č. 13 (14. 12. 2010)

Úvod do GUI programovania pomocou Win32 API.

Cvičenia

PowerShell

Rozličné úlohy v PowerShelli a ich riešenia

Windowsové služby

Vytvorte windowsovskú službu, ktorá každé 3 minúty zapíše správu do systémového event logu.

IPC cez Windows Message

Vytvorte aplikáciu, ktorá po vložení USB kľúča do počítača z neho nakopíruje všetky súbory do špecifikovaného adresára.

WinAmp

Vytvorte vlastnú GUI aplikáciu, ktorá dokáže ovládať Winamp:

Cvičenie 3. 11. 2010

Vytvorte cmdlet, ktorý stiahne z RSS na sme.sk XML dokument a a pošle do rúry všetky tituly (<title>) článkov. Skúste pri tom využiť adresovací jazyk XPath.

Cvičenie 10. 11. 2010

Nainštalujte NetBeans, plugin C/C++.

Nainštalujte CygWin s požadovanými balíčkami:

Vypíšte na konzolu „Ahoj svet.“

Použite na to funkciu printf(), resp. puts().

Vypíšte pomocou printf() číslo.

Pozorujte Segmentation Fault.

Načítajte z konzoly dve čísla a nájdite väčšie z nich a vypíšte ho na konzolu.

Nezabudnime, že scanf() berie adresu a pripomeňme si význam ampersandu.

Z poľa piatich čísiel (zadaného v kóde) nájdite jeho maximum.

Zatiaľ netreba použiť funkciu.

Načítajte z konzoly 5 čísiel a nájdite ich maximum.

Použime jeden scanf() s piatimi premennými (+ formátovací reťazec).

Alternatívne možno použiť cyklus.

Načítajte z príkazového riadku 5 čísiel a nájdite ich maximum.

Použime premenné argv a argc. Uvedomme si, že polia v C nemajú hornú a dolnú hranicu a na rozdiel od Javy nevieme z premennej typu pole priamo zistiť počet prvkov. Vysvetlime si premennú argc.

Načítajte zo súboru 5 čísiel a nájdite ich maximum.

Objasnime si premennú FILE *, a funkciu fopen(). Pripomeňme, že treba testovať návratovú hodnotu fopen(), pretože v opačnom prípade máme zarobené na problém so Segmentation Fault. (Problém sa dá demonštrovať na otvorení neexistujúceho súboru.).

Ďalej demonštrujme potrebu zatvárať súbor cez fclose().

Objasnime funkciu fscanf().

Vytvorte funkciu, ktorá zráta maximum v poli čísiel.

Opäť pripomeňme, že polia nemajú hornú hranicu a teda je potrebné vytvoriť dvojparametrovú funkciu (druhý parameter je počet prvkov v poli).

Vytvorte program, ktorý dostane z príkazového riadku cestu k súboru, načíta z neho 5 čísiel a vráti ich súčet.

Cvičenie 17. 11. 2010

Štátny sviatok.

Cvičenie 24. 11. 2010

Majme subor cisla.txt

13 17 -5 6 2
6 -1 2 3 4
5 4 2 -1 2

Nájdime maximálne číslo v súbore a vypíšme ho.

Vypisme subor bez zmeny na konzolu.

Pouzime fgetc(). Pozor na to, ze tato funkcia vracia int a nie char!

Vypisme pocet znakov v subore

Vypisme pocet nemedzerovych znakov. (Staci test na ' ‘.)

Vypisme ocislovane riadky suboru

Vysvetlime si, ze neexistuje funkcia „nacitaj cely riadok", lebo musime poznat dlzku. Taku funkciu vsak ani netreba.

Urobme funkciu pre stlpcove sucty. Predstavme si, ze vstup je matica a zratajme sucty v jednotlivych stlpcoch.

Napiste funkciu, co vracia z daneho pola len parne cisla.

Treba povedat, ze funkcia nemoze vracat int[], ale len int *.

Treba povedat, ako zabezpecit to, ze v navratovej hodnote bude zaroven aj dlzka pola: my sme to spravili tak, ze funkcia vrati pole, kde v nultom prvku je jeho dlzka. Pozor na chyby „plus minus jedna!"

Cvičenie 1. 12. 2010.

Urobte prekladovy slovnik. V subore mame data v tvare:

hello=ahoj
world=svet

Nacitajte data do structu a vyrobte funkcie pre najdenie prekladu vety z argv.

Fáza I – statická alokácia

Vo faze I pouzite len staticku alokaciu, dlzka kluca a prekladu nech je maximalne 30 znakov. Rovnako predpokladajte, ze slovnik ma obmedzeny maximalny pocet slov (napr. 100).

Rady

Faza II: dynamicky struct

Riadok v subore nech ma obmedzenie na dlzku (napr. 255), ale kluc i preklad mozu mat lubovolnu dlzku. Nezabudnite naalokovat buffre!

Cvičenie 8. 12. 2010

Dokončite ArrayList. Dopracujte metódy:

Cvičenie 15. 12. 2010

Vytvorte funkciu, ktora nacitala riadok lubovolnej dlzky zo suboru,

Pouzite dynamicky nafukovane pole ako buffer.

Pozor na nasledovne situacie:

Záverečné zadania

Zadania je potrebné obhájiť osobne, predbežný termín je 20. 1. 2011.

Zadanie 1 + 2

Vytvorte skript v PowerShelli, ktorý vytvorí sumárnu informáciu o aktuálnom stroji. V sumárnej informácii uveďte nasledovné informácie.

V skripte deklarujte vlastnú triedu LocalStationInfo s vhodne zvolenými inštančnými premennými.

Vytvorte cmdlet GetLocalStationInfo, ktorý prijme z rúry inštanciu LocalStationInfo a do rúry pošle prehľadne naformátované informácie o aktuálnom stroji. Informácia nech je reprezentovaná v používateľsky prítulnom HTML súbore.

Pripravte powershellovský skript, ktorý vezme ako parameter názov súboru. Po spustení skriptu nech sa do zadaného súboru zapíše uvedená HTML správa o aktuálnom stroji.

Zadanie 3

Vytvorte jednoduchý informačný systém pre správu hudobných albumov. Každý hudobný album má autora (resp. interpreta), vydavateľa, cenu a zoznam skladieb. Každá skladba má názov a dĺžku.

Systém má spravovať databázu albumov:

Ovládanie systému nech je pomocou prítulne vyzerajúceho menu v textovom režime spôsobom „vyberte nasledovnú operáciu."

>> Home