C++

Od Petr Zemek, 2010-01-09

Na námět jednoho mého čtenáře (fakt, ono zřejmě někdo ty moje příspěvky čte! :] j/k) se v tomto příspěvku budu zabývat vztahem mezi znakem (character) a bajtem (byte) v jazycích C a C++. Mimo jiné se dozvíte, proč strlen() vrací vždy počet bajtů v předané posloupnosti ukončené nulovým bajtem a proč nemůže sloužit k tomu, aby vracela počet širokých znaků (wide characters) předaného řetězce, např. pokud se jedná o řetězec znaků reprezentovaných v Unicode.

Od Petr Zemek, 2009-10-31

Konec října a začátek listopadu je sice obdobím polosemestrálních zkoušek, ale i přesto zkusím hodit do placu další hádanku. Za poslední tři hádanky byl průměr odpovědí čístá nula, takže i když se ani teď nikdo neozve, tak průměr neklesne. Je třeba myslet pozitivně :). Dneska se bude řešit korektní načítání čísel ze vstupu pomocí C++ proudů (streams).

Od Petr Zemek, 2009-09-24

Při čtení "Dračí knihy" (Dragon book) jsem narazil u jednoho příkladu ruční implementace konečného automatu na poznámku, že nezáleží na pořadí uvedených case větví v příkazu switch, protože překladač to optimalizuje, a tudíž, i když tu nejméně pravděpodobnou variantu dáme na začátek, tak to nebude mít na výkon žádný vliv. Co se týče nezávislosti na pořadí (mimo speciální případy, např. vynechaný break), tak v jazycích C a C++ je to běžně známá záležitost, ale mě zaujala ona poznámka o optimalizaci a nedalo mi to, abych se nepřesvědčil, jak tomu ve skutečnosti je. Se svými výsledky, co se týče překladače gcc, bych se chtěl podělit v tomto příspěvku.

Od Petr Zemek, 2009-09-06

Minule se mně sice nikdo s řešením neozval (nevím, zda to bylo náročností úlohy nebo prostě tím, že jsou prázdniny), ale nevadí, zkusíme jinou úlohu :). Tentokrát jsem si hádanku vypůjčil z jednoho zdroje, který a priori uvést nemohu, protože pak byste se místo samotného řešení pokoušeli hledat řešení v onom zdroji :), ale po zveřejnění řešení ho samozřejmě uvedu. Kód jsem ale mírně upravil, aby to bylo zajímavější, takže není úplně shodný. Tentokrát se budou moct zapojit i ti, kteří znají "jen" Jazyk C.

Od Petr Zemek, 2009-08-18

Po půl roce sucha (konečně) přináším další zajímavou programovací úlohu. Tentokrát se jedná o úlohu pro programátory v C++ a na své si přijdou především milovníci bitových manipulací :). A nebojte, nebude to žádná úloha stylu "vytvořte makro pro vzájemné prohození polovin předaného intu".

Od Petr Zemek, 2009-08-06

Většina programátorů ví o tom, že některé konstrukce mají tzv. nedefinované chování a že by se jim měli vyhýbat. Méně se ale už ví, že kromě nedefinovaného chování norma definuje další typy chování: "specifikované", implementačně závislé a nespecifikované. Po přečtení tohoto příspěvku byste měli mít jasno, jaký je mezi těmito chováními rozdíl a kterým z nich se vyhýbat.

Od Petr Zemek, 2009-07-29

Každý jazyk obsahuje určitou množinu klíčových slov a množinu rezervovaných slov (ta může být i prázdná, např. v jazyce Fortran, což má za následek možnost solidně zmást případného čtenáře zdrojového kódu :)) a programátor si časem osvojí většinu z těch, která se běžně používají (nebo nepoužívají, ale jsou nechvalně známá, např. goto). Kromě nich ale občas v jazyce existují klíčová slova méně známá, která, ať už z důvodu toho, že jejich význam pozbyl důležitosti či je většina překladačů nepodporuje, nebo se používají pouze ve speciálních případech. V tomto příspěvku bych se chtěl zaměřit na takováto klíčová slova v jazycích C a C++.