2

Systémové programovanie 2010

 2 years ago
source link: https://novotnyr.github.io/courses/systemove-programovanie-spr1a-2010/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Systémové programovanie 2010

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:

  • tlačidlá Play, Next (prípadne Previous, Next, Pause)
  • dokáže získať text aktuálne prehrávanej skladby

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:

  • gcc-g++

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).

  • na porovnanie stringov pouzime strcmp(), porovnanie == zname z Javy nefunguje!
  • na tokenizaciu pouzite strtok() (druhe volanie berie NULL)
  • do struktury treba stringy kopirovat cez strcpy() (nie cez priame priradenie!)

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!

  • Vytvorte jednoduchu verziu dynamickeho zoznamu pracujuceho nad nafukovacim polom (v duchu java.util.ArrayList). Obmedzte sa na zoznam intov. Definujte funkcie:

Cvičenie 8. 12. 2010

Dokončite ArrayList. Dopracujte metódy:

  • remove()
  • push()
  • pop()
  • to_string()

Cvičenie 15. 12. 2010

Vytvorte funkciu, ktora nacitala riadok lubovolnej dlzky zo suboru,

Pouzite dynamicky nafukovane pole ako buffer.

Pozor na nasledovne situacie:

  • ak nastane koniec suboru pred koncom riadku
  • na Windowse je koniec riadku reprezentovany cez \r a \n (dva znaky)
  • pozor na uvolnovanie buffera
  • pozor na semantiku prazdneho riadka na konci suboru: ak sme za poslednym \n, ale este pred koncom suboru (= buffer je prazdny) vratime NULL

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.

  • Názov aktuálneho stroja
  • Veľkosť nainštalovanej pamäte RAM
  • MAC adresy sieťových adaptérov
  • IP adresu v aktuálne pripojenej sieti
  • Počet fyzických diskov
  • Všetky logické jednotky a ich veľkosti.
  • Zoznam používateľov aktuálneho stroja
  • Pre každého používateľa veľkosť jeho domovského adresára a cestu k nemu.

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:

  • Vyhľadávať v albumoch a pesničkách podreťazce.
  • Pridávať skladbu
  • Upravovať informácie o skladbe
  • Mazať albumy.

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK