Malý testík

vložil Radek Červinka 27. května 2011 02:48

Pořád mi to přijde, že píšu a píšu a žádné výsledky (teda kromě návštěvnosti, která je slušná). Takže jelikož je období zkoušek, je zde malý testík. Ušetřím Vás trapností typu jakými třemi způsoby se dá označit komentář, na druhou stranu pro dnešek vynecháme i generika a další věci.

V budoucnosti přejdeme k XE2, kde určitě bude hafo témat, ale to bude ještě cca 2-3 měsíce trvat a do té doby máme ještě trochu času. Takže na zabití času malý test.

Co bod - to bod. V úvahu jsem bral Delphi XE, ale většina věcí je platná obecně. A prosím bez google a spol., kdo najde chybu vyhrává.

1) Proměnné třídy jsou na začátku
  a) inicializovány na prázdnou hodnotu
  b) nedefinované hodnoty, tj. záleží na stavu paměti
  c) jen string je = ''

2) TObject.Free
  a) volá destruktor, a zda objekt existuje je věcí programátora
  b) provede test zda objekt není nil, a volá destructor
  c) zavolá destruktor a nastaví objekt na nil

3) initialization a finalization
  a) initialization se provádí dle abecedy jména unitu a finalization
     následně ve stejném pořadí
  b) initialization se provádí dle abecedy jména unitu a finalization
     následně v opačném pořadí
  c) initialization se provádí dle pořadí nalezení odkazu na unit při 
     překladu, ale je to modifikováno podle závislostí unit mezi sebou
     a finalization následně ve stejném pořadí
  d) initialization se provádí dle pořadí nalezení odkazu na unit při 
     překladu, ale je to modifikováno podle závislostí unit mezi sebou 
     a finalization následně v opačném pořadí

4) overload
  a) je stav přetížení kompilátoru (velké množství provázaných unit)
  b) je direktiva kompilátoru, kdy umožní definici stejné metody s jinými parametry
  c) je direktiva kompilátoru, kdy předefinováváme metodu předka

5) Kód označený jako deprecated
  a) nejde přeložit a označuje se tím starý kód nutný změny
  b) jde přeložit, ale v budoucích verzích Delphi už přeložit jít nemusí 
     nebo se může chovat výrazně jinak
  c) jde přeložit a označuje ideální kód

6) DUNIT
  a) je slangově něco jako tunit, ale v Delphi
  b) je klíčové slovo pro C++Builder označující Delphi Unit 
     pro vylepšení spolupráce mezi Builderem a Delphi
  c) framework pro testy pro Delphi

7) Název unitu
  a) nesmí obsahovat nic kromě písmen A - Z a číslic 0 - 9
  b) jako a) plus _
  c) jako b) plus .
  d) jako c) plus znaky národních abecedy

8) Program obsahující

program Test;
{$APPTYPE CONSOLE}
uses
  Classes, SysUtils;
var
  t: TStringList;
  s: string;

begin
  t := TStringList.Create;
  try
    t.Delimiter := ';';
    t.DelimitedText := '1;2;3;4;5;6;7;8;9;';
    for s in t do
      write('A');
  finally
    FreeAndNil(t);
  end;
end.      
vypíše
  a) 9x A
  b) 10x A
  c) 1x A
  d) nepůjde přeložit
  e) nevypíše nic

9)
  Rozdíl mezi:
  TIntProcA = reference to procedure (n: Integer);
  TIntProcB = procedure (n: Integer) of object;
  TIntProcC = procedure (n: Integer);
  TIntProcD = function (n: Integer):Integer;

Není volba (správná odpověď je za bod)

10) Ekvivalent static proměnné třídy je v Delphi
  a)
    type TT =  class (TObject)
    private
      class var fiCount:Integer;
    end;
  b)
    type TT =  class (TObject)
    private
      static var fiCount:Integer;
    end;
  c)
    type TT =  class (TObject)
    private
      static fiCount:Integer;
    end;
  d) nejde

11) FastMM
 a) je rychleji rozpustná varianta čokoládové tyčinky M&M
 b) je správce paměti z D7
 c) je správce paměti z D2006 a vyšší
 d) je správce paměti z D2009 a vyšší
 d) je správce paměti z DXE

výsledky

  • 1) a - http://stackoverflow.com/questions/132725/are-delphi-variables-initialized-with-a-value-by-default
  • 2) b
  • 3) d
  • 4) b
  • 5) b
  • 6) c
  • 7) d - osobně jsem si myslel původně c), ale d) funguje taky i když je to fuj
  • 8) b
  • 9) Deklarace: TIntProcA je anonymní metoda, TIntProcB je metoda objektu, TIntProcC je normální procedura , TIntProcD je normální funkce
  • 10) a
  • 11) c

Jak to dopadlo?

  • 1 - 2 body: Nějaký omyl ne? Hold Delphi je i výrobce auto součástek - třeba hledáte ho?
  • 3 - 6 bodů: Sportka je pro Vás taky možnost, s výhrou je to navíc v současné situaci skoro na stejné úrovni, taky nic nedostanete.
  • 7 - 9 bodů: Slušný výsledek, aspoň tak no.
  • 10 - 11 bodů: Prosím příště bez google! Ale vážně: to není špatné

A mimochodem ty tři způsoby komentování kódu z úvodu:

 // radek
  {  poznamka }
 (* a taky *)

a jak pepak v komentářích poznamenal, ještě jde použít podmíněná kompilace

Tagy: ,

Delphi | Server

Komentáře

27.5.2011 7:07:00 #

pepak

2b - Chybí slovo "test" a čárky

3 - Podle mě není zcela správně ani jedna z možností (vychází se z pořadí nalezení unit, ale je to modifikováno podle závislostí unit mezi sebou - pokud mám v programu uses A a v A mám uses B, tak se napřed inicializuje B, přestože první byla nalezena A). Přiznávám, že bez vyzkoušení nedokážu s jistotou říct pořadí finalization.

5 - Špatně formulováno. Když už se deprecated část přeloží, tak pochopitelně zůstane přeložená navždy, ne že by se z exáče za dva měsíce samovolně smazala. Správná formulace je, že "jde přeložit, ale v budoucích verzích Delphi už přeložit jít nemusí nebo se může chovat výrazně jinak".

8 - To by mě zajímalo, jestli jsi tak záludný, jestli Delphi XE mají TStringList přímo v System, nebo jestli to je taky chybka...

Čtvrtý způsob komentování kódu, zvlášť vhodný pro zakomentování rozsáhlejších bloků:

{$IFDEF nejaky_identifikator_ktery_urcite_neni_deklarovan}
komentar
{$ENDIF}

pepak

27.5.2011 9:58:32 #

Radekc

Díky za upřesnění,
ad 3) ano, to je lepší popis chování - upraveno
ad 5) když to bereš do detailu tak ano
ad 8) vynechával jsem uses, ale ano opět máš pravdu, upraveno na celý program

Díky moc

Radekc

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců