Zk 8.2.

Cílem semináře je seznámit posluchače s jazykem C#, prostředím platformy .NET a tvorbou aplikací s grafickým uživatelským rozhraním. Předpokládají se znalosti objektově orientovaného programování.
Kubees
Matfyz(ák|ačka) level II
Příspěvky: 65
Registrován: 12. 1. 2007 22:22
Typ studia: Informatika Mgr.
Kontaktovat uživatele:

Zk 8.2.

Příspěvek od Kubees »

1.

Velikost int64
[8B]

2.

(4096 | 24) & (~(8 >> 16))
[4120]

3.

Kód: Vybrat vše

    struct S {

        public int x;
        public int y;

        public S(int x, int y) {
            this.x = x;
            this.y = y;
        }

       public void Print() {
            Console.WriteLine("{0},{1} ",++x,++y);
       }
   
    }

    class Program
    {
        static void Main(string[] args)
        {

            S s;

            s.y = 1;

            s.Print();
            s.Print();
       

        }
    }
[nejde zkompilovat]

4. otazka na dictionary
Console.WriteLine("{0},{1}", ops["+"], ops["/"])

5.

is, as GetType, typeof

6.

Co vynucuje interface?

7.
je toto legalni?

Kód: Vybrat vše

interface I<T> {
    T m();
}

class x : I<double>, I<System.Double> {
....
}
[Ne, protoze System.Double === double]

8. Co plati o uzivatelem vytvorenych tridach?
Muzou mit 0 predku NE
Muzou mit libovolnou tridu jako predka NE
Muzou mit libovolnou strukturu jako predka NE
Mohou implementovat max 1 interface NE
Mohou se ukladat na zasobniku NE
Mohou se ukladat na halde ANO
implicitni viditelnost tridy je public NE
implicitni viditelnost jejich clenu je protected NE

9.

Najit chyby v tride implementujici prioritni frontu s hlavou. (fůůůj !!!!)
Uživatelský avatar
DZuXO
Matfyz(ák|ačka) level I
Příspěvky: 11
Registrován: 20. 1. 2009 11:28
Typ studia: Informatika Bc.

Re: Zk 8.2.

Příspěvek od DZuXO »

Trochu upresnim:

uloha 3: nejde skompilovat, pretoze sa snazim inkrementovat nenainicializovanu premennu x v strukture s.
Tu len upozornim na mozne neprijemne chyby. Nech S je struct. Zapis "S s;" je okej, naalokujem si na zasobniku strukturu, ale premenne v nej ostanu nenainicializovane. Rozdiel vo formate "S s = new S();" je ten, ze hodnoty premennych vnutri struktury sa nainicializuju na defaultne hodnoty (0, null, apod). Takisto bacha na to, ze v strukture je zakazane pretazovat bezparametricky konstruktor.

uloha 4:
Skusim napisat zdrojovy kod. Dost solidne som si pospal ked som prisiel zo skusky, tak si to uz nejak horsie pamatam.
Som si isty, ze ten kod na skuske bol bohatejsi o nejake fajnotky, no hlavny problem tejto ulohy boli staticke konstruktory.. takze na tie pozor.

Kód: Vybrat vše

    class Divide
    {
        static Divide()  // som si 100% isty, ze hlavicka konstruktoru vyzerala presne takto, aj toho co je nizsie
        {
            Program.dic.Add("/", 1);
        }
    }

    class Plus
    {
        static Plus()
        {
            Program.dic.Add("+", 2);
        }
    }

    class Program
    {
        public static Dictionary<string, int> dic = new Dictionary<string, int>();
        static void Main(string[] args)
        {
            Console.WriteLine("{0}, {1}", dic["+"], dic["/"]);  // tu je ten problem, zavolali sa konstruktory ?
        }
    }
odpoved bola, ze to padne pri behu, resp budem mat prazdny dictionary

uloha 5:
zadanie az na detaily presne to iste co bolo v piatok [Zk. 5.2.2010] (je to na fore, kliknite si)
detaily: v deklaraci boli interfacy I1 {}, I2 {}, ale pri porovnavani sa pouzivalo typeof(I1<A<int>>), typeof (I2<B<int>>), co sposobi,ze sa to neskompiluje.

uloha 9:
Tato uloha bola dost "slaughter" :? ale ako nam skusajuci PJ vravel, naozaj v nej nebolo vela chyb a neboli to ziadne labuznicke zalezitosti. Chyby boli v:
hlavicka triedy PriorityQueue, bolo potrebne vynutit aby genericky typ Priorita bol potomok IComparable
deklaracia vhniezdenej triedy Node, ktora bola povodne napisana ako struct, co je samozrejme zle, pretoze by som nemohol urobit spojovy zoznam. (Stale by som si len kopiroval strukturu a ani by som sa nepohol, pri classe si pekne podavam referencie)
Porovnanie generickeho typu Priorita. bolo tam iba nieco ako priority1 <= priority2. My to ale chceme vo formate priority1.CompareTo(priority2) < 0.
Genericku premennu nemozem nastavovat na null (?). Tu som mal chybu, nie som si teda uplne isty spravnou odpovedou, pretoze si uz ani kod nepamatam. Ale aby som nastavoval generic premennu na null, tak si mozem napr vynutit, aby generic bol referencny typ (ako na to ? pozrite do slajdov, vsetko to tam je)

EDIT: zadanie 9. ulohy je odfotene na fore: http://forum.matfyz.info/viewtopic.php?f=421&t=6553
UIRA — UIRA Isn't a Recursive Acronym.
mono

Re: Zk 8.2.

Příspěvek od mono »

Takova drobna poznamka: V monu jde ten priklad 3 zkompilovat i spustit. Normalne vypise 1,2 a 2,3.
Odpovědět

Zpět na „NPRG035 Jazyk C# a platforma .NET“