Podmínky udělení zápočtu

Odevzdání všech 3 domácích úloh a nejméně 50 % průběžných úloh, semestrálního projektu a absolvování závěrečné písemky. Materiály budete odevzdávat výhradně prostřednictvím webového rozhraní systému Progtest.

rozdělení bodů podle požadavků:

* max min poznámka

* 24 12 laboratorní práce, cvičení průběžně, 2b x 12, minimálně 50 % bodů/ labs tasks, 2 points x 12 labs, minimum 50 % points

* 26 14 domácí úlohy, 6b + 10b + 10b domácí úlohy, všechny odevzdány, minimálně 51 % bodů Home tasks, 6pt + 10pt + 10pt, 3 home works, all tasks must be submitted, minimum 51 % pt

* 20 10 semestrální projekt obsahuje: - dokumentace a testovací data, funkčnost aplikace je testována, - prezentace, - zdrojový kód aplikace. Semestral project submition contains: - documentation and test data files, functionality will be evaluated; - presentation file, - source code files.

* 30 15 zápočtová písemka/Written test

* 100 51 celkem


Odevzdání zápočtového projektu (podrobnosti na webové stránce předmětu) a úspěšné vykonání zápočtového testu. Hodnocení zápočtového projektu je postaveno na zpracování a odevzdání projektu, který se bude skládat ze tří částí:

* funkčnost, dokumentace a testovací data,

* prezentace,

* zdrojový kód aplikace.

Cílem projektu je vytvořit funkční program dle zadání, načíst vstup ze souboru (zpravidla CSV) a nebo klávesnice, s výstupy do HTML nebo GUI. Projekt zabalíte do jediného ZIP souboru, pojmenovaného vaším uživatelským jménem, vzor je například abc0123.zip, ZIP Soubor s projektem vložíte do systému Progtest.

Požadavky na semestrální projekt

(max. 20 bodů)

* max min vysvětlivky

* 7 5 funkčnost

* 2 1 práce se soubory a programátorský styl

* 2 1 práce s dynamicky alokovanou pamětí

* 2 1 výstup do HTML nebo aplikace s GUI

* 7 2 programátorská a uživatelská dokumentace (Doxygen), prezentace, testovací data (soubor(y) CSV) a výstupy

* 0 0 téma je možné využít i z jiných předmětů – v C/C++ bude hodnocena programátorská část projektu a uživatelská dokumentace (ne analýza a návrh)

* 0 0 odevzdávají se zdrojové texty, ne spustitelný soubor (nutná podmínka)

* 0 0 celý projekt je v jednom ZIP archivu, pojmenovaný podle ID studenta, např. NOV123.ZIP, soubory jsou přehledně pojmenované a rozdělené na hlavičky a vlastní kód.

* 20 10

poznámky:

* nefunguje-li - projekt nepřijat,

* u jednoduchých projektů se dokumentace nerozlišují,

* povinná prezentace je součástí odevzdání projektu, šablona PPT nebo LaTeX/PDF, (při nepřijetí nutno u počítače předvést vytvoření kódu v průběhu cvičení),

* generovaná programátorská dokumentace Doxygen.

Formální náležitosti projektu

* celý projekt je v jednom ZIP archivu, pojmenovaný podle ID studenta, např. NOV123.ZIP,

* projekt se odevzdává výhradně do systému Progtest a ve stanoveném termínu,

* maximální velikost ZIP archivu s projektem je 8 MiB (případný balast v podobě nepotřebných souborů, typicky v solution…, prosím odmažte, případné JPEG fotografie ukládejte v malém rozlišení (jak X pix * Y pix, tak % JPEG komprese), jde o ukázku Vaší programátroské práce,

* za nadstandardní vypracování projektu je možno získat až +5 bonus bodů (v kompetenci cvičících).

Detaily hodnocení a formální struktura projektů ukazují náležitosti, které musí projekt obsahovat a popisují jejich bodování. Témata nejsou podrobně rozpracována ohledně vstupů, výstupů, dokumentace, to částečně najdete na této stránce, případně podrobněji konzultujte s cvičícím. V každém případě připravte (dostatečně rozsáhlá - nejméně 15 položek) testovací data tak, ať se dají načíst ze souboru a uživatel se tak nedopustí chyby a výsledek bude odpovídat vašim výsledkům v dokumentaci (HTML). Jména vstupních a výstupních souborů nezadávejte napevno do zdrojového texty, doporučuji zadat jako parametry příkazového řádku při spouštění, nebo za chodu programu po odpovídající výzvě. Nepoužívejte diakritiku ani v názvech souborů, ani v testovacích datech.

Archiv obsahuje adresáře

* solution se soubory aplikace, přehledně pojmenované a rozdělené na hlavičky a vlastní kód (alespoň jeden .c/.cpp soubor), a dále musí obsahovat *.cbp (projekt), volitelně mohou být i další podadresáře, nesmí obsahovat *.exe

* vstupnidata obsahuje vstupní soubory, obsahující testovací data vaší aplikace, zpravidla ve formátu CSV,

* vystupnidata obsahuje výstupní soubory, obsahující vstupním testovacím datů vaší aplikace, zpravidla .html,

* uzivatelskadokumentace s odpovídajícím souborem DOC/DOCX/RTF/PDF,

* programatorskadokumentace obsahuje jeden soubor popisující program, jeho strukturu, zajímavá řešení, a podadresář HTML s dokumentací vygenerovanou DoxyGenem;

* prezentace s odpovídajícím PDF souborem,

* v kořenovém adresáři archivu je jediný textový soubor pojmenovaný vaším ID, např. nov123.txt, s kódováním win1250, nebo UTF, obsahující informace o autoru a zadání: jméno a příjmení, ID, cvičení (C/11 po 9.00), zadání č. x, text zadání.

Project Formal Description

* store your project in single ZIP archive having your ID as a filename, for example NOV123.ZIP, ho other compress archives are alowed;

* there is a fixed deadline in the Progtest, no exeptions;

* 8 MiB is the strict size limit for the project ZIP file (purge not necessary temporal files, do not include executable project;

* there could be a bonus ut to +5 points for the solution over the standards.

Detaily hodnocení a formální struktura projektů ukazují náležitosti, které musí projekt obsahovat a popisují jejich bodování. Témata nejsou podrobně rozpracována ohledně vstupů, výstupů, dokumentace, to částečně najdete na této stránce, případně podrobněji konzultujte s cvičícím. V každém případě připravte (dostatečně rozsáhlá - nejméně 15 položek) testovací data tak, ať se dají načíst ze souboru a uživatel se tak nedopustí chyby a výsledek bude odpovídat vašim výsledkům v dokumentaci (HTML). Jména vstupních a výstupních souborů nezadávejte napevno do zdrojového texty, doporučuji zadat jako parametry příkazového řádku při spouštění, nebo za chodu programu po odpovídající výzvě. Nepoužívejte diakritiku ani v názvech souborů, ani v testovacích datech.

ZIP archive have to contain (subfolders)

* solution - at least one .cpp file with C++ source code of your application, another .cpp/.hpp files could be contained, and the Code Block Project *.cbp with the project definitionhave to be contained as well; the ZIP archive cannot contain the executable version of the project (as is *.exe in Windows OS, for example).

* vstupnidata contains the input files with your entry data, usually in CSV format;

* vystupnidata contains the output files with data produced by your application processing the input data (as described above), preferable format is HTML;

* uzivatelskadokumentace contains user's documentation - in the corresponding DOC/DOCX/RTF/PDF file;

* programatorskadokumentace contains programmer's documentation, describing the programme, it's structure, some highlighted parts/data-structures/functions… ;

* prezentace contains corresponding presentation - overview, one PPT/PPTX file, and another one PDF file (it is maximally two files, PDF have to be contained, PPT is optional),

* in the archive's root have to be the only text file (the name: your ID.txt, for example ID, ABC0123.txt) containing the projects definition and the author's identification, such are: Name(s) and Surname, ID, labs identification and day and time of the lab (ENG, END, Tue 10:45 a.m.), the text of the project description (you could copy it from the Progtest).


Témata projektu v předmětu Programování 1 - ZS 2017/2018 / Semestral Projects, Winter Term 2017/2018

Příklad projektu (wzi0004.zip) z loňska ukazuje, jak může podobný projekt vypadat.

The example of the project (neu0074.zip) was evaluated last year, use it as an example, how the succesfull project could be submitted.

Prezenční i kombinovaná forma studia, společné poznámky:

  • Zadání - Všechna zadání obsahují práci se souborem (načtení a zápis do souboru). Poté algoritmus pro zpracování (třídění) a výpis (zpravidla) statistiky.
  • Vstupní soubor - Typ vstupního souboru a formát dat v něm uložených si zvolte podle vlastního uvážení (doporučeno je CSV pro snadnou editaci v tabulkovém procesoru). Vstupní soubor musí být přehledný a musí být jasné, co se v něm má nacházet a v jakém formátu, aby Váš program správně fungoval. Potřebujete-li si vytvořit nějaký sloupec, který není v zadání, vytvořte si ho. Chcete-li rozdělit vstupní data do více souborů, můžete.
  • Výstupní soubor - Ve výstupním souboru se musí nacházet tabulka obsahující všechny požadované údaje ze zadání. Může také obsahovat další informace, které považujete za vhodné. Formát výstupního souboru je pouze na Vás. Tabulka však musí být vhodně naformátovaná a přehledná a musí být jasné, co obsahuje (doporučení je HTML).
  • Zdrojový text - Váš C++ kód musí být přehledný, správně naformátovaný, vhodně okomentovaný a rozdělený do funkcí. Je pouze na Vás zda se celý kód bude nacházet v jednom velkém souboru, či několika menších souborech.

Další poznámky a doporučení:

  • jména vstupních a výstupních souborů musí být možno zadat v běžící aplikaci (nesmí být neměnitelně zadána jen ve zdrojovém kódu programu);
  • nepoužívejte diakritiku v názvech souborů, ani v jejich obsahu;
  • projekt, zdrojové soubory i vyhodnocemí musí být (Vaším cvičícím) přeložitelné a následně spustitelné v prostředí Windows nebo Linux, překladačem CodeBlocks, takto budou hodnoceny;
  • po vložení projektu do Progtestu se ujistěte, že jste projekt předali k ohodnocení cvičícímu (tlačítkem v Progtestu), jinak Vám může dočasně sloužit jako přechodná verze, než se soubor rozhodnete definitivně předat k ohodnocení;
  • CSV v české verzi používá ';', v původní anglické CSV verzi pak ','. Vzhledem k tomu, že budete data z CSV souboru zpracovávat programově sami, je na Vás, kterou verzi si vyberete. Zpracování souboru v anglické, respektive české verzi kancelářských balíku ulehčí volba příslušného stylu oddělovaců polí.

You could download the project (wzi0004.zip) as was solved and evaluated last year, use it as an example, how the successful project could be done.

Common notes:

  • Theme need to contain basic file I/O, sorting of structures array, output of (statistic) data into a (preferably HTML) file.
  • Entry data file(s) - use the text file having a structure designed by you (CSV data structure is recommended, as it is easy to edit/change/update by selected spreadsheet).
  • Entry data file need to be readable and “self describing” of it's own content. Your programme have to work with data file prepared by you - no exception. On the other side, there is not necessary to test the data validity: data prepared by you for your programme are valid - that have to be their feature. There is no limit to the number of entry data files - if you split the data into more files, it is your decision.
  • The output file must contain the data in readable form, you could add another information - it is your own decision. Preferable output file format is HTML.
  • Source code must be well formatted, readable, commented, and divided into functions. It is your decision, if you split the source code into few C++ source files (.cpp), and optionally (.hpp) header files. The project CPB (Code Block Project - .cbp) have to be presented and it must have proper valid structure, as it is the entry point for the programme evaluation.

More notes and recommendations:

  • Do not fixed the file-names in your C++ sources, they need to be entered at the runtime (details are on you - command line arguments, or some simple menu and prompts with instractions are common way to handle it);
  • Use standard ASCII text in filenames and their content (no special characters, no accents);
  • Your project need to be compiled using CodeBlocks developing environment using .cbp, .cpp (optionally other necessary files, .hpp for example) and have to accept input data files prepared by you, which have to be part of your project. Follow the rules, especially the directories/folders/files structure;
  • do not forgot to mark the project for eveluating, after its upload into the Progtest – there is no other way, how to submit the project fot evaluation process;
  • choose the CSV option of separator, which you prefer, see Wikipedia for CSV description.

Note

There is no exact definition of semestral project, the description above have to be contained/solved in your solution. Particular details are on you, you could discuss the project in the labs. The genuine solutions have to be done in such an approach.

1. Domácí účetnictví/Home accounting

Data o příjmech a výdajích financí v domácnosti jsou zapsána v CSV souboru. Ten obsahuje:

  • unikátní ID záznamu,
  • typ záznamu (příjem, výdaj),
  • kategorii záznamu (jídlo, domácnost, zábava, …),
  • částka v Kč,
  • datum záznamu.

Na základě obsahu CSV souboru a vstupu uživatele vytvořte soubor HTML, který shrne příjmy a výdaje v jednotlivých měsících:

  • každém měsíci bude tabulka všech záznamů daného měsíce seřazená sestupně dle částky;
  • součet částek seskupených dle kategorií; * celkový stav financí (příjmy - výdaje).

Develop an application for financial data regarding income and expenditure in household finances, stored as CSV file. This includes:

  • unique record ID,
  • record type (income, expenditure),
  • category (food, household, entertainment, …),
  • amount in CZK,
  • date. O

On the basis of a CSV file and user input, create a HTML file that summarizes the revenues and expenses for each month:

  • in each month, tabulate: all records of the month listed in descending order by amount;
  • sums of the amounts grouped by categories; * Total household finances (income - expenses).

2. Maticové operace/Matrix operations

Program přijímá na vstupu matici zadanou po řádcích, a to buď z klávesnice, nebo souboru. Vstup z klávesnice je průběžně validován, a průběžně je plněno dvourozměrné dynamicky alokované pole. Při vstupu ze souboru se kontroly (validace) neprovádí. Nad maticí v paměti lze zavolat Gaussovu eliminační metodu (implementujte ji jako funkci, jejímž konstantním vstupem je ukazatel na vstupní pole, výstupem ukazatel na nově vytvořené pole v trojúhelníkovém tvaru s vypočtenými hodnotami nezávislých proměnných, pokud to hodnost rozšířené matice dovolí). Program umožňuje výstup do HTML souboru, obsahující výslednou matici (použijte HTML tagy, jinak se formátem nijak zvlášť nezabývejte), pod maticí budou hodnoty nezávislých proměnných. Dalším možným výstupem bude výpis matice a hodnoty jejího determinantu, pokud to hodnost matice dovolí.

Develop a program, which accepts the input matrix specified by row, either from the keyboard or a file. Keyboard input is continuously validated, and the dynamically allocated two-dimensional array is continuously filled. The validation of the input from file is not performed. There are two possible operations on the matrix in the memory: the first possible operation is the Gaussian elimination method. Implement it as a function whose input is a constant pointer to the input field, the output is the pointer to the newly created field in a triangular shape with the calculated values of the independent variables, if the rank of the extended matrix permits it). The program should allow the output to an HTML file, containing the resulting matrix (use HTML tags), and the values of the independent variables under the matrix. Another possible output is the printing of the matrix and the value of its determinant, if the rank of the matrix permits it.

3. Rezervace místností/Room reservation

V datovom súbore budú miestnosti popísané schémou:

  • id,
  • patro,
  • cislo_mistnosti,
  • kapacita sedadel,
  • cena za den rezervace,

a druhý súbor s dátami o rezervácii daných miestností:

  • id_miestnosti,
  • den_rezervacie.

Úkolom bude možnosť rezervácie miestnosti na zvolený deň (ak už nieje obsadená). Vyhladanie voľných miestností na určitý dátum, do určitej ceny, prípadně kapacity osob a samozrejme export najbližších rezervácií vybranej miestnosti do HTML súboru.

Develop a program where the data files are described in the following schema: * id, * floor, * room_number, * seating capacity ,* Price per day for booking. The second file contains the data regarding booking of these rooms: * ID_Room, * Date_reservation. The task will be to make it possible to book rooms for the selected day (if they are not already occupied). Finding free rooms on a certain date, with a certain pricing, available capacity, and the export of the selected room bookings to a HTML file.

4. Sport tracker/Sports activities

Aplikace pro záznam sportovních aktivit ukládá výsledky do CSV souboru. Ten obsahuje:

  • unikátní ID sportovní aktivity,
  • datum konání aktivity,
  • typ aktivity (chůze, běh, kolo, inline),
  • celkovou vzdálenost v km, dobu aktivity v minutách,
  • odhad spálených kJ.

Pro data z vytvořeného/načteného CSV a vstupu uživatele z klávesnice vygenerujte přehled do HTML, který bude obsahovat:

  • měsíční souhrn dle typu aktivit včetně dopočtené průmerné rychlosti;
  • roční souhrn dle typu aktivit seřazených sestupně podle četnosti sportovních aktivit.

Develop an application for recording sporting activities and saving the results to a CSV file. This includes:

  • unique ID for each sporting activity,
  • the date of the activity,
  • type of activity (walking, running, cycling, inline skating),
  • total distance traveled in km for activities in minutes,
  • estimate burned kJ.

Data creating/uploading is done using CSV and user input from the keyboard, generate the report in HTML, which will include:

  • Monthly summary by type of activities including the calculated average speed;
  • Annual summary by type of activity in descending order of frequency of sports activities.

Poznámka/Note

Zadání nejsou upřesněna záměrně, to co je uvedeno výše bude součástí Vašeho řešení, zbývající detaily řešení jsou na každém z Vás. Můžete to konzultovat se cvicícím. Tento způsob zadání garantuje jistou individualitu řešení - případné opisování bude snadno detekovatelné.

The project specification is not exact/precise, as your individual design and solution are the part of the project. There is recommended a consultation in computer labs with your teacher.


prehled_pozadavku.txt · Last modified: 2018/09/17 08:42 by saloun
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki