VLNL: V Litvínovské "Na lovu"

SSŠVT


4. ročník

Základy 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. 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?
  6. 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; }
    }
                    
  7. Proč v cyklu, který prochází pole o 5 prvcích, není index posledního prvku 5?
  8. Co se stane, když se v poli o 2 prvcích, zeptáme na prvek s indexem 10?
    Console.WriteLine(arr[10]);
  9. Které klíčové slovo použijete pro definici výčtového datového typu?
    public ... Grades
    {
        NoGrade,
        A,
        B,
        C,
        D,
        E,
        F
    }
                    
  10. Kolik celkem prvků má pole deklarované takto?
    double[,] numbers = new double[3, 10];
  11. Jaký je rozdíl mezi parametrem (aka formálním parametrem) a argumentem (aka skutečným parametrem)?
  12. 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);
    }
                    
  13. Jaký řetězec bude výsledkem následujícího výrazu?
    "Ahoj mami!".Replace("m", "t").Substring(5, 4)
  14. Proč následující část kódu nelze zkompilovat?
    class Program
    {
        static void Main(string[] args)
        {
            {
                int a = 5;
            }
            Console.WriteLine(a);
        }
    }
                    
  15. Jaká konstrukce se používá pro zachytávání výjimek?
  16. 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. 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;"
        }
    }
                    
  5. Jak se jmenuje textový formát pro ukládání dat, který je strukturou podobný HTML?
  6. 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?
  7. 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]);
                    
  8. 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,
  9. 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.
  10. 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();
                    

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. Co je to interface (rozhraní)?

ORM a databáze
  1. Co je to ORM?
  2. Používá se ORM pro relační databáze?
  3. Používá se ORM pro objektové databáze?
  4. Co se v ORM na straně C# (.NETu) mapuje v databázi na tabulky?
  5. Mějme business objekt v C# a nějakou jeho vlastnost. Na co se v ORM na straně databáze taková vlastnost mapuje?
  6. Co je to skalární vlastnost?
  7. Jaký atribut (anotaci) používá Entity Framework na straně C# na označení faktu, že třída Car mapuje na tabulku TB_CAR v databázi?"
  8. K čemu v Entity Frameworku slouží atribut (anotace) [ForeignKey("...")]?
  9. Proč má mít v databázi každá tabulka primární klíč?
  10. Dejme tomu, že mezi business objekty "položka faktury" (InvoiceItem) a "faktura" (Invoice) je vztah many-to-one. Když na databázové straně budu zakládat tabulky TB_INVOICE_ITEM a TB_INVOICE (včetně primárních a cizích klíčů), na které mapují business objekty InvoiceItem a Invoice, kterou z těch tabulek musím založit jako první?
  11. Proč následující kód (když ho spustím proti instanci MS SQL Serveru, ve které mám potřebnou databázi), proč tento kód vyhodí chybu? A kde k chybě dojde?
    CREATE TABLE TB_CAR
    (
        ID         INT            IDENTITY(1,1)        NOT NULL,
        BRAND      NVARCHAR(30)                        NOT NULL,
        MODEL      NVARCHAR(50)                        NOT NULL,
        NOTE       NVARCHAR(500)                           NULL,
    
        CONSTRAINT PK_TB_CAR    PRIMARY KEY ( ID )
    );
    go
    
    
    INSERT INTO
        TB_CAR
        (
            BRAND,
            MODEL,
            NOTE
        )
        VALUES
        (
            'Skoda'
            NULL,
            NULL
        )
    ;
                    
  12. Proč v následujícím SQL skriptu nevkládáme hodnotu do sloupce ID?
    CREATE TABLE TB_CAR
    (
        ID         INT            IDENTITY(1,1)        NOT NULL,
        BRAND      NVARCHAR(30)                        NOT NULL,
        MODEL      NVARCHAR(50)                        NOT NULL,
        NOTE       NVARCHAR(500)                           NULL,
    
        CONSTRAINT PK_TB_CAR    PRIMARY KEY ( ID )
    );
    go
    
    
    INSERT INTO
        TB_CAR
        (
            -- ID,
            BRAND,
            MODEL,
            NOTE
        )
        VALUES
        (
            -- 1,
            'Mercedes'
            'S',
            'Super fáro!'
        )
    ;
                    
  13. Mějme následující business objekty a k nim tabulky v databázi:
    public class Animal
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int YearBorn { get; set; }
        public int GroupID ( get; set; )
        public Group Group { get; set; }
    }
    
    public class Group
    {
        public int ID { get; set; }
        public string GroupName { get; set; }
        public string Description { get; set; }
    }
                    
    CREATE TABLE TB_ANIMAL
    (
        ID             INT            IDENTITY(1,1)        NOT NULL,
        NAME           NVARCHAR(50)                        NOT NULL,
        INT            YEAR_BORN                           NOT NULL,
        INT            GROUP_ID                            NOT NULL,
    
        CONSTRAINT PK_TB_ANIMAL    PRIMARY KEY (ID),
        CONSTRAINT FK_TB_ANIMAL_TB_GROUP    FOREIGN KEY (GROUP_ID)    REFERENCES TB_GROUP (ID)
    )
    
    CREATE TABLE TB_GROUP
    (
        ID             INT            IDENTITY(1,1)        NOT NULL,
        GROUP_NAME     NVARCHAR(50)                        NOT NULL,
        DESCRIPTION    NVARCHAR(200)                           NULL,
    
        CONSTRAINT PK_TB_GROUP     PRIMARY KEY (ID)
    )
                    
    Na jaký sloupec v tabulce TB_ANIMAL mapuje navigační vlastnost Group ve třídě Animal?