Jednorozměrné pole - konzole
3. C#
3.1. Rozměr pole
První statickou volanou metodou v hlavním programu je metoda RozmerPole. Vzhledem k tomu, že zdrojový kód programu obsahuje větší množství jednotlivých metod, je vhodné metody rozdělit do jednotlivých sekcí - regionů. Tyto sekce lze sbalit kliknutím na tlačítko − umístěné napravo od čísel řádek zdrojového kódu (tím se schovají jednotlivé metody umístěné v této sekci). Sekci lze zpětně rozbalit kliknutím na tlačítko +. Počáteční značka regionu je psána s mřížkou, tj. #region. Za ní uvedeme název regionu - viz Kód 1.
#region Nastavení atributů pole
Kód 1: Počáteční značku regionu
Koncová značku bloku regionu je #endregion - viz Kód 2.
#endregion
Kód 2: Koncová značku regionu
Dále je vhodné umístit nad jednotlivé deklarace metod značky pro dokumentaci :
- Metody
- Formálních parametrů metody
- Návratu metody
Tyto popisky se budou zobrazovat v malém okně při volání metody a programátorovi pomohou rychle se orientovat v podstatě volané metody. Pro umístění značky do zdrojového kódu stačí vepsat nad metodu tři lomítka za sebou a Visual Studio nám automaticky doplní značky k dokumentaci ve formě XML prvků přidaných ke zdrojovému kódu. První vygenerovanou značkou je dokumentace k metodě, kde mezi počáteční značkou /// <summary> a konečnou značkou </summary> uvedeme za trojité lomítko poznámku o podstatě metody. Pokud je popis víceřádkový, stačí mezi počáteční a koncovou značku umístit kurzor a stisknout klávesu Enter. Visual Studio do značky přidá další řádku s trojitým lomítkem, kam lze umístit další popis.
/// <summary> /// Metoda s celočíselným návratem - navrací velikost pole (počet prvků vektoru) /// </summary>
Kód 1: Dokumentace k metodě
Další poznámkou uváděnou v kódu ve formě XML značky ve zdrojovém kódu je popisek podstaty formálního parametru metody - viz Kód 2. Tento popisek je v našem případu uváděn mezi značkou parametru s názvem n, tj. /// <param name="n"> a konečnou značkou </param>.
/// <param name="n"> aktuální velikost vektoru (počet prvků) </param>
Kód 2: Dokumentace k parametru
Poslední značkou uvedenou nad deklarací metody RozmerPole je značka popisku výstupu (návratu) metody (neplatí pro metody bez návratu). Popisek výstupu metody je umístěn mezi značky /// <returns> a </returns> - viz Kód 3.
/// <returns> Velikost vektoru </returns>
Kód 2: Dokumentace k výstupu metody
Podstata algoritmu byla nastíněna v kapitole Analýza a návrh řešení, není proto nutné detailně popisovat podstatu zdrojového kódu.
Metoda RozmerPole obsahuje dva formální celočíselné parametry:
- n - aktuální velikost vektoru (počet prvků)
- max - maximální rozměr vektoru
Metoda navrací velikost vektoru, podle níž bude generován objekt - vektor. Pro metodu jsou deklarovány následující celočíselné lokální proměnné:
- zmena - informace (celé číslo), zda má být provedena změna rozměru pole
- novaHodnota - nový rozměr vektoru
Uživateli je nejprve vypsána stávající velikost vektoru (počet jeho prvků, které může po naplnění obsahovat). První cyklus s podmínkou na konci je určen pro načtení celočíselné informace (0...Ne, 1...Ano), zda chce uživatel změnit stávající rozměr (ten byl nastaven v hlavním programu na maximální možný. Hodnota této konstanty z hlavního programu je v metodě uložena ve formálním parametru max). Načtení hodnoty je provedeno pomocí metody TryParse s výstupním parametrem zmena. V řídící podmínce cyklu je testováno, zda byla zadána validní hodnota této proměnné. Pokud ne, celé tělo cyklu je opakováno.
Další cyklus s podmínkou na konci je určen pro načtení nové hodnoty velikosti vektoru. Pokud nová hodnota není validní, je jí přiřazena maximální přípustná velikost vektoru uložena v parametru max. Pokud nová hodnota byla validní a není stejná jako stávající velikost vektoru, je tato hodnota uložena do formálního parametru n, který je následně přiřazen výstupu funkce RozmerPole - viz Kód 3.
/// <summary> /// Metoda s celočíselným návratem - navrací velikost pole (počet prvků vektoru) /// </summary> /// <param name="n"> aktuální velikost vektoru (počet prvků) </param> /// <param name="max"> maximální rozměr vektoru </param> /// <returns> Velikost vektoru </returns> static int RozmerPole(int n, int max) { /* Deklarace: 'zmena' ... informace (celé číslo), zda má být provedena změna rozměru * pole; 'novaHodnota' ... nový rozměr vektoru */ int zmena, novaHodnota; // Vypsání stávajícího rozměru vektoru Console.WriteLine("Počet prvků: {0}", n); do { // Výzva ke změně rozměru vektoru Console.Write("Změnit počet prvků vektoru (0...Ne, 1...Ano): "); // Načtení hodnoty, zda má dojít ke změně int.TryParse(Console.ReadLine(), out zmena); // Pokud načtená hodnota nebyla validní, cyklus zadání je znovu opakován } while ((zmena < 0) || (zmena > 1)); // Pokud byl zadán index pro změnu ... if (zmena == 1) { // Výzva k zadání rozměru vektoru Console.Write("Zadejte počet prvků vektoru (1 - {0}): ", max); // Načtení rozměru vektoru int.TryParse(Console.ReadLine(), out novaHodnota); // Pokud nová hodnota je větší než maximum, nebo menší než 1 ... if ((novaHodnota > max) || (novaHodnota < 1)) { // Přiřazení maximálního rozměru vektoru do lokální proměnné určující počet prvků vektoru novaHodnota = max; } // Pokud nový rozměr vektoru není stejný jako stávající počet prvků vektoru ... if (novaHodnota != n) { // Uložení nového rozměru pole do proměnné n = novaHodnota; } // Výpis nového zadaného rozměru vektoru Console.WriteLine("Rozměr pole: {0}", n); } // Návrat metody return n; }
Kód 3: Deklarace statické metody s celočíselným návratem s názvem RozmerPole