VLNL: V Litvínovské "Na lovu"

SSŠVT


3. ročník

Programování

Jazyk C#
  1. Který z následujících datových typů není celočíselný?
    int
    long
    decimal
    byte
  2. Které klíčové slovo použijete pro definici třídy (referenčního datového typu)?
    public ... BookService
    {
        public List<Book> GetBooks()
        {
            List<Book> books = new List<Book>
            {
                new Book("Markéta Lazarová"),
                new Book("Stařec a moře"),
                new Book("Na západní frontě klid"),
                new Book("Pýcha a předsudek")
            };
            return books;
        }
    }
                    
  3. Jaký je vhodný typ cyklu na procházení kolekce, u níž nemáme indexy nebo nemůžeme k jejím prvkům přes indexy přistupovat?
  4. Příkaz if nabízí větvení programu na dvě větve. Jaký znáte příkaz pro větvení programu na více větví než dvě?
  5. Metody jsou dvojího typu: Procedury a funkce. V čem se liší?
  6. Jaký datový typ se hodí na reprezentaci tabulárních dat, kde všechny prvky v řádcích i sloupcích jsou stejného typu, jako je tomu např. u matice?
  7. Jak se říká jevu, kdy metoda volá sama sebe (např. při procházení stromové struktury)?
    public void WalkDir(string path)
    {
        Console.WriteLine(path);
        string[] subDirs = Directory.GetDirectories(path);
        for (int i = 0; i < subDirs.Length; i++)
        {
            WalkDir(subDirs[i]);
        }
    }
                    
  8. Které klíčové slovo použijete pro definici struktury (hodnotového datového typu)?
    public ... Complex
    {
        public double Re { get; set; }
        public double Im { get; set; }
    }
                    
  9. Proč v cyklu, který prochází pole o 5 prvcích, není index posledního prvku 5?
  10. Co se stane, když se v poli o 2 prvcích, zeptáme na prvek s indexem 10?
    Console.WriteLine(arr[10]);
  11. Které klíčové slovo použijete pro definici výčtového datového typu?
    public ... Grades
    {
        NoGrade,
        A,
        B,
        C,
        D,
        E,
        F
    }
                    
  12. Kolik celkem prvků má pole deklarované takto?
    double[,] numbers = new double[3, 10];
  13. Jaký je rozdíl mezi parametrem (aka formálním parametrem) a argumentem (aka skutečným parametrem)?
  14. Jak se jmenuje příkaz, kterým se předčasně ukončí provádění cyklu?
    Random r = new Random()
    for (int i = 0; i < 10; i++)
    {
        if (r.Next(100) < 50)
        {
            ...;
        }
        Console.WriteLine(i);
    }
                    
  15. Jaký řetězec bude výsledkem následujícího výrazu?
    "Ahoj mami!".Replace("m", "t").Substring(5, 4)
  16. Kolik objektů typu string vznikne při vyhodnocování následujícího výrazu?
    ("Mirka;16;false".ToUpper() + ";2020-04-16").Split(';')
  17. Proč následující část kódu nelze zkompilovat?
    class Program
    {
        static void Main(string[] args)
        {
            {
                int a = 5;
            }
            Console.WriteLine(a);
        }
    }
                    
  18. Jaká konstrukce se používá pro zachytávání výjimek?
  19. Jakým příkazem vyhodíme výjimku?

Jmenný prostor System.IO
  1. Jak se jmenuje třída, kterou použijete pro načtení textového souboru?
  2. Která metoda ve statické třídě File se hodí pro zjištění, zda na disku existuje soubor s daným jménem a cestou?
  3. Jakou konstrukci/příkaz použijeme, abychom po zápisu do diskového souboru pomocí objektu StreamWriter nemuseli ten objekt zavírat (metodou Close, případně Dispose)?
  4. Mějme na disku v adresáři C:\Users\jirka\Documents následující soubory:
    data.csv
    myfile.txt
    Pictures.pptx
    letter.txt
    mirror.txt
    Big-File.mkv
    movies.csv
                    
    Zavolání statické metody GetFiles definované ve třídě Directory vrátí pole řetězců. Kolik prvků bude mít výsledné pole, pokud uvedenou metodu zavoláme takto?
    string[] files = Directory.GetFiles(@"C:\Users\jirka\Documents", "*.txt");
                    
  5. Jak se říká formátu dat (v souboru), který vypadá takto?
    {
        "ConnectionStrings": {
            "MssqlDatabase": "Server=L03; Database=SongsAndVotesDB; Trusted_Connection=True;",
            "MySqlDatabase": "Server=mysqlstudenti.litv.sssvt.cz; Port=3306; Database=firstDB; Uid=username; Pwd=password;"
        }
    }
                    
  6. Jak se jmenuje textový formát pro ukládání dat, který je strukturou podobný HTML?
  7. Jak se říká struktuře uložení adresářů a souborů, která se používá v běžných souborových systémech?
  8. Jak se u objektu, pomocí kterého čteme textový soubor sekvenčně řádek po řádku, doptáme na to, zda je ještě co číst, anebo jsme již dorazili na konec souboru?
  9. Jak z textového formátu CSV získáme netextová data (např. číslo)?
    string csvLine = "Lev Nikolajevič Tolstoj;Speciální vojenská operace a mír;1869";
    string[] values = csvLine.Split(';');
    string author = values[0];
    string title = values[1];
    int releasedIn = ...(values[2]);
                    
  10. Kolik polí (hodnot) má následující řádek textového souboru ve formátu CSV, kde oddělovačem je čárka?
    Jana,výška: 1,75m,svobodná,,10,
  11. Které z následujících tvrzení je nesmysl?
    Adresář může obsahovat adresáře.
    Soubor může obsahovat soubory.
    Adresář může obsahovat soubory.
  12. Který z následujících řádků kódu by se měl v konstrukci pro zachytávání výjimek dávat do části finally a proč?
    StreamWriter sw = new StreamWriter("abc.txt");
    sw.WriteLine("A B C D");
    sw.WriteLine("Kočka přede");
    sw.Close();
                    

Datové struktury a návrhové vzory
  1. Kam se ukládají návratové adresy při volání metody?
  2. Jaký je rozdíl mezi zásobníkem a frontou?
  3. Jakou datovou strukturu (datový typ) použiju, když chci rychle přistupovat k prvkům kolekce nikoliv přes jejich indexy (jako u pole), nýbrž přes jejich názvy (např. u kolekce objektů WorkSheet v excelovém souboru WorkBook)?
  4. Jaký návrhový vzor použiju, když chci, aby od určité třídy existovala a používala se v rámci celé aplikace pouze jediná instance takové třídy?
  5. Co je to interface a jak se používá?
  6. Co v následujícím výčtu není návrhový vzor?
    UML
    Tovární metoda
    Singleton
    Iterátor

Objektově orientované programování (OOP)
  1. Jaký je vztah mezi pojmy třída, instance a objekt?
    a) Třída je množina instancí a instance je množinou objektů.
    b) Jeden objekt má několik tříd s podobným chováním a jedna třída má několik instancí s podobnou strukturou.
    c) Třída definuje množinu objektů podobné struktury a chování. Instance a.k.a objekt je jeden prvek takové množiny.
    d) Instance, objekt i třída jsou synonyma, je to jedno a totéž.
  2. Objekt má dva aspekty: Chování a data. Co je to vlastnost objektu?
  3. K čemu v OOP slouží metody?
  4. Co je to konstruktor třídy a kdy se použije za běhu programu?
  5. Když chci, aby určitý člen třídy (např. její vlastnost) byl viditelný i mimo kód definující třídy, které modifikátory přístupu mohu použít?
  6. Který modifikátor přístupu omezuje přístup k členu třídy na kód, který je přímo definovaný pouze v této třídě?
  7. Jak "zapouzdřím" proměnnou instance running v následujícím kódu?
    public class Engine
    {
        public bool running = false;
    
        public void Start()
        {
            this.running = true;
        }
    
        public void Stop()
        {
            this.running = false;
        }
    
        public bool IsRunning()
        {
            return this.running;
        }
    }
                    
  8. Která třída přímo dědí z které třídy v následujícím kódu?
    public class Animal
    {
        // ...
    }
    
    public class Vertebrate : Animal
    {
        // ...
    }
    
    public class Invertebrate : Animal
    {
        // ...
    }
    
    public class Mammal : Vertebrate
    {
        // ...
    }
    
    public class Dog : Mammal
    {
        // ...
    }
    
    public class Bird : Vertebrate
    {
        // ...
    }
                    
  9. Jak se říká jevu v následujícím kódu?
    public class Vehicle
    {
        public virtual string IdentifySelf()
        {
            return "I am a vehicle.";
        }
    }
    
    public class Car : Vehicle
    {
        public override string IdentifySelf()
        {
            return "I am a car.";
        }
    }
    
    public class Truck : Vehicle
    {
        public override string IdentifySelf()
        {
            return "I am a truck.";
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Vehicle vehicle;
            vehicle = new Car();
            Console.WriteLine(vehicle.IdentifySelf());
            vehicle = new Truck();
            Console.WriteLine(vehicle.IdentifySelf());
        }
    }
                    
  10. Co je to interface (rozhraní)?
  11. K čemu jsou generické třídy?