Programování 2 pro informatiky, C# 1. Cvičení - Exercise 20.02.2024 Exercise web page: https://kam.mff.cuni.cz/~aston/ Examination requirements - web page No cheating Programiz: https://www.programiz.com/csharp-programming 1.1 Model View Architektura - opakovani 1.2 C# a ReCodex (Adam) verze C#pu 1.4 Ukázkový kód 1.6. Create Hello world code in Visual Studio 1.7 Variables and Static vs Dynamic types of variables 1.7.1 Basic types of variables - programiz 1.8 Create a init int var i to value 7 and print to console; 1.10 Change var i to value 8 and print to console 1.12 Print i,j var on console - co se stane kdyz pristoupim (print) k neinicializovane hodnote - int over flow; no exception? 1.14 How long is long int in Python vs C#? 1.20.1 Přetečení intu Do intu i (32b) uložte nadpolovicni hodnotu jeho maximální hodnoty a vystikněte 1.20.2 Přetečení intu Hodnotu ulozeneho intu i dvakrat zvetesete a vystikněte 2.4 Basic I/O: WriteLine and Readline 2. (5P 1.1 Součet dvou čísel) (CZ) Napište program, který ze vstupu přečte dvě celá čísla a vypíše jejich součet. Můžete předpokládat, že se vejdou do typu integer a stejně tak i jejich součet. Před i za i mezi čísly může být libovolný počet bílých znaků (mezery, tabulátory, konce řádek). 3.7 Comments: 3 type // vs. /* */ vs. /// Convert types: a) Implicit b) Explicit - parse way: int.Parse("333") - Convers way: string str = Convert.ToString(num); 1.24 Arrays - 1D: declare, create, init, access; iterate array for and foreach loop; outOfBoundaries exception https://www.programiz.com/csharp-programming/arrays 1.33 Prumer cisel v poli: Napište program ktery vytvoris podle intu a naplni ho hodnotami od 2 do 22 vcetne a spocita a vypise prumer hodnot v poli ulozenych 3. (recodex) (PPPPP 5.1 Vypsání pole v opačném pořadí) (CZ) Na vstupu dostanete posloupnost celých čísel ukončenou číslem -1, které nepatří do seznamu. Vypište je v opačném pořadí oddělená mezerou. Čísel nebude více než 1000. Čísla na vstupu jsou oddělená mezerami a nebo konci řádek, tedy vstup může obsahovat více řádek a řádka může obsahovat více čísel. Pozor, i za hodnotou -1 mohou být další čísla, ale ta už pro náš program nejsou zajímavá. 4. Functions Array 4.2 Ex: write function that count average value of given array * static vs new class * explicit retype from int division to flout - different results 4.6 Array - 2D: declare, create, init, access; iterate array for and foreach loop 6.0 Matice Načtete dva celočiselné kladné parametry m a n, m udává počet řádků, n udává počet sloupců Vytvořte si int matici typu m x n (2D pole) Jednotlivé hodnoty matice incializujte na hodnoty [A]ij = i + 2*j Příklad vstupu m = 3 n = 4 [A]_ij = i + j Výslená matice: 2 3 4 5 3 4 5 6 4 5 6 7 5.2 Write the function reshape that: - reshape 1D array to 2D array - reads int 1D array and int k value, and reshape 1D array to 2D array with k colomns (assume: 1D array length is l=n*k; that means l is dividable by the k) * int[ , ] reshape(int[] arr, int k) * 1D arr -> 2D resp. int[] -> int[,] * example: k=3; arr = {1,2,3,4,5,6} reshape to the 2D array arr2D = {{1,2,3},{4,5,6}} 5.3 reshapeJagged(int[] arr, int[] rowsLenght) - modification of neshape function that create jugged array given lengths (value k is replaced with array of lengths of rows) (assume: rowLength_1 + rowLength_2 + rowLength_3 = arr.Length) 6.1 Loupaní matice - v implementaci použijte for/while cykly Matici z předchozího příkladu "oloupejte" a výsledné hodnoty vypište. Loupnání začněte v pravém horním rohu a pokračujte ve směru hodinových ručiček Jak vypadá její tisk? Výstup "oloupané" matice: 5 6 7 6 5 4 3 2 3 4 5 4 6.2 Loupaní matice - Napište funkci vracející výstupní pole "oloupané" matice, nikoliv jeho tisk 6.0 Loupaní matice - v implementaci použijte rekurzi (předávání odkazu hodnotou (default) vs referencí (ref) vs výstupem (out))