Archive for the 'Empty halls' Category


Semestrálky z tohoto semestru 2

Semestrálka z PJV/OMO

Dělal jsem klon klasické hry „had“. Vývoj mne bavil, ale vůbec nebyl jednoduchý. Zprvu jsem se totiž pokoušel vytvořit vlastní algoritmus hledání nejkratší cesty přes ohodnocený graf, ale zoufale jsem neuspěl. Následně jsem se pokusil adaptovat do Javy pseudokód, kterým byl popsán relativně rychlý algoritmus A* (A star), což se mi po relativně dlouhé době (2 dny) podařilo. Po celou dobu vývoje jsem si zaznamenával postup, takže si můžete přečíst „vývojový deník“ :).

Hotová, zabugovaná a finální verse: Serpent Reborn
Její úžasné zdrojové kódy: Serpent Reborn [src]
Určitě vás bude zajímat i Class Diagram (v Enterprise Architectu).

Celý projekt jsem po počátečních okamžicích s NetBeansem psal v Eclipsu, protože, buďme k sobě upřímní… NetBeans nestojí ani za tu zlámanou grešli.

Semestrálka z WMM

Narozdíl od mnoha mých spolužáků webu neholduji a psaní semestrálky mě nebavilo. Nedělal jsem tak žádný projekt, který bych mohl komerčně využít, ale prosté osobní stránky (které mi ale vynesly hodnocení B).

Jsou k vidění v jejich konečné podobě na: test.mf4.cz

Drhuý Semetsr na ČUVT 3

Článek má suchou informační podobu a pokud nejste z STM, pravděpodobně vás ani ničím nezaujme.

Jak se blíží začátek žní, blíží se i konec zkouškového období druhého semestru a s takovou událostí je vždy spjato nějaké to závěrečné zhodnocení.

Tvorba Elektronické Dokumentace (TED) (hodnocení: A)

Pokud existuje něco jednodužšího než procházka akátovou alejí, pak je to TED. Předmět oddychový, nenáročný. Přednášky není nutno navštěvovat a na cvičení se člověk zpravidla těší. Buďto bude někdo presentovat svůj projekt a vy budete psát v anonymním hodnotícím systému něco o kočkách, nebo necháte paní Novou, ať povídá něco o Wordu, zatímco se budete snažit pokořit všechny levely v hadovi na Solarisu. Jako bonus se v předmětu naučíte i švihat ukazovátkem.

Programování v jazyce Java (PJV) (hodnocení: B)

Předmět se zaměřuje na framework Javy, a to je v podstatě všechno. Rozeberete si pár balíčků, pohrajete si s vlákny, s GUI a tím to končí. Na přednášce tohoto předmětu jsem strávil všehovšudy 10 minut a cvičení jsme neměli vůbec (pan M.V. s námi na cvičeních témata z PJV neprobíral, díky Bohu za to). V anketě jsem se o přednášejícím tohoto předmětu (pan M.B.) vyjádřil mírně kriticky, protože si myslím, že je předmět špatně veden (a jeho básnička je trapná).

Struktura a architektura počítačů (SAP) (hodnocení: A)

Tento předmět mě pod vedením pana Zděnka velmi bavil, a nutno říci, že je to právě jeho zásluhou. Přednášky vedl učebnicově, dokázal zaujmout, slušně se oblékal a jeho hlas neuspával. Každou věc dokázal podat tak zajímavě, že člověku utkvěla v paměti, ani nevěděl jak. Za zmínku stojí i výtečně zpracované slidy, které samy o sobě poslouží jako plnohodnotný učební materiál. Cvičení předmětu mi dávala velmi zabrat a musel jsem věnovat množství svého volného času čtyřem úlohám, které bylo nutno během semsetru splnit. Během semestru se také psaly dva testy, z nichž na druhý jsem se zcela vykašlal a nezískal tak A ze semestru. Nicméně relativně velký počet bodů ze semestru (41) a zkouškový test napsaný na 50 z 50 měly za výsledek 91 bodů a známku A. Mé díky patří také mému středoškolskému profesoru na mikroprocesorovku, panu Janoudovi (během testu jsem u jedné otázky vycházel čistě z toho, co si pamatuji od něj) a Lucce, která mě znovu naučila karnáfovky.

Objektové modelování (hodnocení: A)

Na tento předmět jsem se hodně těšil, protože tak nějak objektově jsem programoval již řadu let předtím. Nicméně jsem zjistil, že špatně. Špatně jsem se objektový přístup naučil z knihy o C++ a ze všech ostatních tištěných materiálů. V Čechách pravděpodobně neexistuje kniha, která by jej správně vysvětlovala (zvlášť ne Pecinovský – to je snůška žvástů, ze které se profesionální programátor pozvrací, pokročilého znechutí a začátečníka zmate) a o to více jsem oceňoval přednášky ing. P., tedy alespoň tu část, kdy nedělal kraviny a doopravdy přednášel. Skutečně mě obtěžovaly jeho soutěže ve stylu Chcete být milionářem a Riskuj. Stejně tak se mi příliš nezamlouvalo jeho chování při zkoušce a vůbec – organisace zkoušky jako takové. Pro běžného smrtelníka je zkouška z OMA něco jako očistec. 4 hodiny v kuse nepřetržitě psát kód z látky, která musí být zažitá, aby se dala správně pochopit a z látky, která vůbec nebyla náplní předmětu (například spojové seznamy nebo implementace kartézského součinu). Další věcí byla nejednoznačnost zadání. Když jsem si ho četl, napadalo mne hodně různých nesprávných řešení, která se mohla hodně lidem jevit jako alternativní. Sám jsem měl u pár příkladů vážný problém pochopit, co se po mně chce. Nakonec jsem ale stejně uspěl, dostal C a pokračoval na ústní zkoušce, kde jsem si známku vylepšil na A.

Anglický jazyk II (A2) (hodnocení: A)

Učila mne opět výborná paní doktorka Klímová, takže na hodiny jsem se těšil. Kupodivu (!) se probírala látka, o které jsem jaktěživ neslyšel, takže jsem se musel i trochu učit. Díky dobře napsaným testům a presentací za A+ jsem dělal závěrečnou zkoušku pouze ústní. Narozdíl od pana Píš*ho a pana Zdě*ka mi paní Klímová na konci zkoušky podala ruku.

Právní aspekty podnikání (PAP) (hodnocení: C)

Tento předmět mě nevýslovně nudil. Učení se na test bylo ještě horší. Právo a ekonomiku nesnáším a u učebních materiálů jsem nevydržel souvisle sedět ani čtvrt hodiny, aniž bych začal být podrážděný. Taky to tak dopadlo. Z testu jsem dostal za F a následně jsem šel na ústní, kde jsem si známku vylepšil na C (značnou zásluhou výborného pana Š.).

Web a multimédia (WMM) (hodnocení: B)

Web a vše, co je s ním spojené, nesnáším sice trochu méně než právo a ekonomiku, ale přece ho nesnáším. Nicméně jsem si vybral výborného cvičícího (pana Vlacha z firmy Seznam.cz), který vedl hodiny celkem zábavně a neměl na studenty přehnané požadavky (jako jmenovitě pan Bařinka). Písemky byly velmi jednoduché a semestrální práce byla hodnocena velmi příjemně… prostě si není na co stěžovat. Na přednášce jsem byl dvakrát… jednou jsem potřeboval psát semestrálku a jednou jsem si chtěl poslechnout čerstvě stažená alba Eluveitie.

Matematická logika (MLO) (hodnocení: E)

Největší strašák tohoto semestru. Na přednáškách se bezduše opisovaly hromady nicneříkajících symbolů z tabule a na cvičeních se pro změnu dělalo to samé. O předmětu jsem ale už od začátku věděl, že není úplně triviální, a tak jsem si zapisoval poctivě všechno. Můj sešit z MLO prošel rukama minimálně třem lidem, pršelo na něj a taky se, chudinka, praštil o kandelábr (ale nic se mu nestalo). Byl to jediný sešit, který jsem si tento semestr zavedl a hodil se mi velice. V posledním týdnu jsem se z něj intensivně připravoval a obávanou zkoušku jsem nakonec udělal o tři body (stejně, jako Tonda minulý rok).

Tak mi tedy skončil první ročník bakalářského studia. Beze ztráty kreditu, s čistým štítem pro příští rok, což beru jako největší úspěch. Vážený průměr mých známek v tomto semestru je 1,53 (B) :).

Pokusní králíci z STM 1

Program STM, FEL ČVUT čeká doba velkých změn, která se dotkne jak nově nastupujících prváků, tak nás, jdoucích do druháku. Je to všeobecně změna k lepšímu, ale právě my budeme ti, kteří budou razit cestu dalším ročníkům.

O co se jedná? V zásadě změna kreditového systému tak, aby odpovídal ECTS (European Credit Transfer System) a s ní korelované změny ve studijních plánech oborů. V současné době jsou předměty „odměňovány“ počtem kreditů, který získáme součtem vyučovacích hodin, strávených na přednáškách a cvičeních toho kterého předmětu. Systém ECTS ještě přidává kredity za počet hodin strávených domácí prací (i když to v žádném případě není měřítko obtížnosti předmětu), a právě toto rozšíření čeká předměty STM.

letter bunny

Kreditové ohodnocení ale není jediné, co se mění. Dost drasticky se zasahuje do studijního plánu, co se týče skladby předmětů. V prvním ročníku bude místo naší „Matematiky 1″ vyučován předmět „Matematická analýza“, která v sobě bude zahrnovat i vícedimensionální kalkulus. Poněvadž vícedimensionální kalkulus je oproti základnímu kalkulu nesčetněkrát těžší záležitost, obávám se nestravitelnosti látky pro cílovou skupinu vyjukaných prváků. Nepochopím, proč výuka matematiky nemohla být rozdělena do dvou semestrů po dvojicích kalkulus-algebra (V prvním semestru základní analýza + lineární algebra, ve druhém semestru vícedimensionální analýza + matematická logika), osobně bych to uvítal. Navíc bude v prvním ročníku vyučována pravděpodobnost a statistika, což je jistě velmi užitečné.

Co se týče ostatních předmětů, bude zrušena „Tvorba elektronické dokumentace“ (stále se podivuji nad tím, jak náplň předmětů málokdy odpovídá jejich názvu) a „Web a multimédia“. Namísto těchto dvou bude přidán nový předmět podobně slabé obtížnosti.

Ve druhém ročníku povinně pro každého přibyde „Ekonomika podniku“, což je pro mě velice nepříjemná zpráva, neboť ekonomiku upřímně a z celého srdce nesnáším, nenávidím. Prostě se projevuje onen přídomek našeho programu „a management“ (na který začínám být pomalu alergický). Ve třetím semestru dále ubyde předmět (myslím) „Databázové systémy“ a bude nahrazen předmětem „Bezpečnost a kódování“. Předmět „Diskrétní matematika“ bude přeřazen do třetího semestru vedle „Datových struktur a algoritmů“ a ono kódování bude přesunuto na její místo. O těchto změnách nejsem úplně přesvědčen.

Další změna je v tělocviku a angličtině. Původně se počítalo s tím, že každý student se bude muset prokázat zkouškou z Angličtiny na úrovni 2 do konce druhého ročníku (přičemž zdarma bude pouze jeden dvousemestrální kurs). Já na tom nevidím nic špatného, ale návrh se setkal s neuvěřitelným odporem a bude zřejmě přepracován. Tělocvik se stane kreditovým a přesune se do volitelných, což hodnotím jako zápor.

Zároveň přibyde obrovské místo pro volitelné předměty a student se tak bude moci úž specialisovat. Co je podle tvůrců „revoluce“ jedna z nejdůležitějších změn, na bakalářskou práci bude vyhrazen dvojnásobek vyučovacích hodin (teoreticky), čili v posledním semestru budou pouze dva povinné předměty.

Revoluce se má udát během tohoto semestru, čili v zimě už nastoupíme do inovovaného druháku. Jsem zvědav. Dále bych ještě uvedl zajímavost, kterou mám oficiálně potvrzenou. Jedná se o

Úbytky na studijních oborech FEL za zimní semestr ak. roku 2009/2010

EEM – 58,4 %
KME – 56,5 %
KyR – 33 %
OI – 13,2 %
STM – 41 %

Z původního počtu 571 zapsaných nás zbylo 337 (obory jsou vypsány na 340).
Uvážíme-li (<-- prosím vás, špatné druhy pomlček nejsou moje chyba... nějaký démon je automaticky upravuje), že algebrou neprošlo 70 % lidí a že každý, kdo neprošel prvním semestrem zároveň neudělal algebru, získáváme zajímavé číslo, že minimálně 30 % lidí nyní přežívá na stmku s nedokončenou algebrou.

Odborný článek pro předmět Y14TED 1

V předmětu Tvorba elektronické dokumentace jsme dostali za úkol zpracovat třístránkový odborný článek o tématu, které jsme si zvolili pro předchozí presentaci.

Protože jsem v TeXu (plainu) výrazně pokročil díky publikacím pana Olšáka a detailnímu zkoumání jeho hotových maker (z nichž některá jsem si vypůjčil pro své práce – například barevné obdélníky zvýrazňující text či makro pro sazbu zdrojových kódů načítaných přímo ze zdrojových souborů (viz docby.tex)) a TeX mě velmi baví, o nástroji i tématu bylo rozhodnuto.

Protože už jsem měl jednu šablonu hotovou (dokumentace laboratorní úlohy předmětu Y14SAP), nechtělo se mi tvořit novou úplně od začátku, tak jsem onu šablonu pouze zjednodušil a upravil titulní stránku.

Nyní nevidím důvod, proč se o malou a nenáročnou práci nepodělit.

http://lair.mf4.cz/frdlimic.pdf

V Javě kočky vidí lidem do DNA a dokonce ji mohou modifikovat 0

A mohlo to být horší. Podle toho, o čem se zmínil můj přednášející v odpovědi na můj dotaz (tvůrci Javy si pohrávali s myšlenkou zrušit modifikátor private), mohly kočky na potkání lidem měnit jména nebo rozhodovat o jejich bydlišti.

Představte si následující schéma (i když není tak docela odpovídající realitě).

Ze zvířete se oddělí dvě větve – lidé a kočky, přičemž lidé v průběhu své specializace získají špatný gen. Špatný gen můžeme chápat jako něco, co bude upravovat chování člověka, čili to bude čistě jeho vnitřní záležitost. Záležitost bazálních systémů v jeho těle, o kterých by nemělo tušit ani jeho vlastní vědomí. Budeme-li chtít naprogramovat takové schéma, nabízí se využití modifikátoru protected, který byl pro to vymyšlen. Zkusme to tedy v Javě.

Následující kód je vytržený z původní struktury. Takto by v javě nebyl kompilovatelný, ale snad mi prominete.

public abstract class Animal { ; } public abstract class Human extends Animal { protected boolean bad_gene; public Human() { bad_gene = true; } } public class MaleHuman extends Human { ; } public class Cat extends Animal { private boolean memory; public Cat() { memory = false; } public void readGenesOfHuman(Human h) { memory = h.bad_gene; // will compile } }

Tento kód se i včetně šílené funkce koček readGenesOfHuman zkompiluje bez problémů, protože v Javě je toto v pořádku. Očekává se, že třídy v jednom balíčku si budou natolik blízké, že nebude problém, když si navzájem uvidí na chráněná data. V praxi by to ale znamenalo, že si pro každou třídu nebo minimální sadu odvozených tříd budete vytvářet samostatné balíčky. To se ale nedělá a protected se nepoužívá. Bez této funkcionality ale nelze výše nakreslené schéma správně naprogramovat. Buď chráněná data uvidí kočky… nebo je neuvidí ani interní funkce odvozené třídy. Dva extrémy, ani jeden žádoucí. V Javě správné řešení takového problému neexistuje, narozdíl od normálních jazyků:

ref class Animal abstract { public: Animal(void); virtual ~Animal(void); }; ref class Human abstract : Animal { public: Human(void); virtual ~Human(void); protected: bool bad_gene; }; ref class MaleHuman : Human { public: MaleHuman(void); virtual ~MaleHuman(void); }; ref class Cat : Animal { public: Cat(void); virtual ~Cat(void); void readGenesOfHuman(Human ^h); private: bool memory; }; // ... void Cat::readGenesOfHuman(Human ^h) { memory = h->bad_gene; // will not compile }

Takový kód se právem nezkompiluje. Chybový výstup bude znít přesně:

error C2248: ‘Human::bad_gene’ : cannot access protected member declared in class ‘Human’

V C++ a jazycích Microsoftu vše funguje normálně a kočky do vaší DNA nevidí.

8 měsíců s Lenovo N500 11

Když jsem si před osmi měsíci vybíral notebook na vysokou školu, zároveň jsem věděl, že mi zcela určitě nahradí můj tehdejší desktop, a proto jsem vybíral zvlášť pečlivě a s ohledem na parametry, které se s časem příliš nezmění. Požadoval jsem také kvalitu, kterou mi nemohla zaručit jiná značka než Lenovo.

Čistě ze zajímavosti jsem ale zkoumal i produkty jiných značek. Mnohdy jsem nechápavě kroutil hlavou (předražené nefunkční notebooky Sony) a často jsem se i upřímně smál (notebooky Acer a Aušus nabité „výkonnou“ výbavou od pochybných značek jako je AMD nebo ATI, s životností kolem půl roku). Upřímně se divím, když vidím posluchárnu plnou těchto krabic, sem tam i nějaký MacBook (řekněte mi, co může vývojář vidět na MacBooku).

Rozhodl jsem se tenkrát pro Lenovo N500 (kvůli stropu 16 000) s procesorem Intel (bohužel jsem již neměl na Core 2 Duo, ale mohu si ho kdykoli dokoupit a vyměnit za stávající Dual Core). Svoji volbu si den co den pochvaluji. Skutečně si nemohu na nic stěžovat, protože jediný problém, který jsem s ním měl byl ten, že jednoho dne zatuhla klávesa s vykřičníkem. Prostě zatuhla a musel jsem vyvinout dvojnásobnou sílu, abych dostal výsledný vykřičník :). Klávesa se ale během týdne vyléčila sama – ani jsem nemusel tlačítko operovat.

Notebook zatěžuji opravdu významně. Běží průměrně dvanáct hodin denně a dvakrát týdně podstupuje pětihodinovou cestu střídavě mrazem a horkem. Kdysi, když jsem ještě trpěl entusiasmem ze studia na VŠ, jsem ho tahal i do poslucháren. Jednou dokonce jakási slečna za mnou pěla na můj notebook ódy (že ho má taky a tak dále). Jeden by řekl, že v takovém režimu by měl nárok na nějaké to zlobení, ale on ne. On prostě funguje bez problému.

Dále oceňuji jeho velmi tichý chod. Když člověk zrovna nezacyklí procesor nebo nezatěžuje GPU, větráček není vůbec aktivní a kryt zůstává i tak jen mírně teplý. Když už větráček zapne, potom, narozdíl od jiných notebooků, vydává tichý a příjemný zvuk. Má několik stupňů točení a ani jeden není vyloženě otravný. Také se mi líbí, že z jednotlivých stupňů přepíná skokem (nenabíhá jako vysavač).

Další featurka, o které bych nevěděl, že ji budu někdy používat, je hardwarové vypínání touchpadu (který je bohužel resistivní, narozdíl od touchpadu notebooku mé přítelkyně (HP), který umí multitouch – vážně -, přišel jsem na to náhodou). Když píšu, občas se omylem dotknu dlaní touchpadu, který následně evokuje kliknutí nebo nějaký jiný myší manévr. To je velice nepříjemné. Naštěstí ale stačí klepnout na jeden z dotekových sensorů v pravé horní částí klávesnice a mezi tlačítky touchpadu se, na znamení vypnutí, rozsvítí modrá LED. Další tři doteková tlačítka potom ovládají hlasitost.

Rozložení samotné klávesnice je celkem dobré, avšak má ve výchozím nastavení jeden zásadní nedostatek. Často používám, jako každý programátor, klávesy End a Home. Na klávesnici N500 jsou ale End a Home pouze sekundární k PageUp a PageDown (které naopak nepoužívám vůbec). Naštěstí se dají klávesy přemapovat. Věc, na kterou jsem si zvyknul hodně rychle, je přehození kláves Ctrl a Fn.

Vyloženě slabá stránka, jak už to u notebooků bývá, je integrovaná zvuková karta. Co jsem nepochopil, je výchozí nastavení nových systémů Windows (Vista a 7) ohledně zvuku. Převodníky jsou nastaveny na 16bitů/44,1kHz. Mnozí to nepoznají, takže bych radil čtenářum s těmito systémy se podívat do nastavení zvuku a případně přepnout alespoň na těch 24.

Jsem stará konzerva, takže počítáč nikdy dobrovolně neukládám ke spánku nebo hybernaci. Když odejdu, počítač prostě zamknu a když jdu spát, počítač prostě vypnu. Vypojený ze sítě používám počítač jen ojediněle, takže nemohu posoudit výdrž baterie a prvky spojené s hybernací a spánkem. Měl bych však jednu kuriositu. Notebook mé přítelkyně (HP), když je vypnutý a zapojený do sítě, není vlastně úplně vypnutý. Síťová karta je stále zapnutá a stále komunikuje se sítí. Žije si v noci vlastním životem a občas se dokonce z ničeho nic zapne. Jako by dostal nějaký příkaz ze sítě. Vzpomínám si, že Touny o něčem podobném, v souvislosti se svým počítačem, také mluvil. Každopádně, N500, když je vypnutý, tak vypíná i síťový adaptér.

Řada N se, krátce po tom, co se dostala na náš trh, přestala v Čechách prodávat :). Místo ní je tu ale řada G, která vypadá podobně (je kulatější). Co se týče kvality, nemohu sloužit.

Uvidíme, jak to dopadne… 0

Po přečtení excelentního článku pana doktora Olšáka s názvem „Kam se poděla dobrá typografie?“ a následně několika dalších jeho článků jsem se rozhodl začít koketovat s TeXem, ši spíše LaTeXem. Zabývám se na velmi laické úrovni typografií (přinejmenším pár odvětvími) již delší čas a nikdy jsem se neobtěžoval zjistit, co ta tři písmena znamenají.

TeX works

Po tom, co jsem trnitou cestou rozběhal český LaTeX na Windows 7, hrál jsem si ním celou noc a kdybych dnes nemusel dělat semestrální práci z ELI (kterou jsem nakonec napsal ve Wordu), byl bych si s ním hrál i dnes. Však jsem se onu práci pokoušel dělat v LaTeXu, ale došel jsem k závěru, že jeden den nestačí :-).

Java – Gaussova Eliminační Metoda 5

Funkční applet: ZDE.

EDIT: Problém s lineárně závislými řádky :-).

Následující kód, který jsem dnes uvařil:-), převádí pomocí GEM matice libovolného typu do horního trojúhelníkového tvaru. Je optimalizovaný i pro mrchy matice, které v sobě skrývají n lineárně závislých řádků nebo dokonce sloupců. Je částečně optimalizovaný i paměťově… během výpočtu efektivně krátí nově vzniklé řádky matice (to je možno vypnout pomocí opt_through).

po předvedení kódu (kde záměrně chybí ona krátící metoda) ho vysvětlím a potom ukážu pár příkladů (přímo ze skript pana Olšáka).

public void GEM(boolean opt_through)     {         int i, j, l;         double c, d, gc;         boolean cad = false;         int m_var_r = 0;         int m_var_s = -1;         if(opt_through)         {             optimize();         }         for(m_var_r = 0; m_var_r < _m - 1; m_var_r++)         {             m_var_s++;             cad = false;             for(l = m_var_r; l < _m; l++)             {                 if((_matrix[m_var_r][m_var_s] != 0))                 {                     break;                 }                 if(l == _m - 1)                 {                     swapRows(m_var_r, _m - 1);                     cad = true;                 }                 swapRows(m_var_r, _m - l);             }             if(cad)             {                 m_var_r--;                 continue;             }             c = _matrix[m_var_r][m_var_s];             for(i = m_var_r; i < _m - 1; i++)             {                 d = _matrix[i + 1][m_var_s];                 for(j = m_var_r; j < _n; j++)                 {                     _matrix[i + 1][j] = (c * _  _matrix[i + 1][j])                             - (_matrix[m_var_r][j] * d);                 }                 if(opt_through)                 {                     gc = gcdv(_matrix[i + 1], _  m_var_r, _n - 1);                     for(j = m_var_r; j < _n && _  gc != 0; j++)                     {                         _matrix[i + 1][j] = _  _matrix[i + 1][j]                                 / Math.abs(gc);                     }                 }             }         }     }

Znáte původní objektovou konvenci Microsoftu? Jestli ano, určitě jste poznali, že je kód vytržený z nějaké třídy, protože soukromé vnitřní proměnné bylo kdysi dohodnuto označovat underscorem v prvním znaku identifikátoru – „private: int _example=0;“

_matrix je tedy ona matice samotná
_m je počet řádků
_n je počet sloupců
m_var_r a m_var_s jsou proměnné, které identifikují aktuální levý horní roh matice

Na začátku se zkrátí řádky (užitečné pro matici náhodných čísel typu 10 10, kterou někdo z legrace vynásobil číslem 678). Nabíhá hlavní loop, který posouvá horní roh, následován několika smyčkami a podmínkami, které kontrolují, zda-li se vyskytuje na aktuální pozici našeho primárního řádku (ten, který se „opisuje“) nula. Pakliže ano, prohodí s posledním a zknotroluje. Takto postupuje vystřídaje všechny řádky a pokud nenalezne žádné nenulové číslo, dekrementuje řádkový čítač (protože se ve foru bežně inkementuje a my chceme zůstat na stejné řádce, abychom se mohli posunout doprava) a pokračuje zpět na hlavičku prvního řádkového foru, potom se inkrementuje sloupcový čítač a opět se kontrolují nuly ve sloupci.

Pokud nalezne nenulové číslo, program přejde do druhé části, kde se aktuální sloupec nuluje (klasicky alfa bé mínus beta á), přičemž každý nově vzniklý řádek zkouší zkrátit (pokud to má zadáno oním boolem v parametrech). No a to je v podstatě všechno. Kód spadne pouze pro pro matice typu (m, 1) nebo (1, n), neboť ty se nedají eliminovat.

Teď koukám, na co jsem zapomněl… zapomněl jsem na proměnnou cad. Cad protože column already done a slouží jako dablbrejk :-).

Je pravděpodobné, že jsou tam zbytečné nebo dále optimalizovatelné kroky, ale vem to čert. Funguje to, a celkem rychle. Matici 100 na 100 s čísly od 0 do 10 zeliminatí za pár vteřin… akorát to zarovnání je potom takové… no… zřete :-)…

/ 7.0 8.0 10.0 2.0 6.0 3.0 9.0 3.0 9.0 1.0 | 5.0 5.0 1.0 10.0 9.0 9.0 5.0 6.0 7.0 0.0 | 9.0 10.0 1.0 6.0 10.0 3.0 9.0 5.0 2.0 8.0 | 5.0 1.0 3.0 2.0 1.0 6.0 1.0 3.0 2.0 3.0 | 5.0 10.0 2.0 9.0 10.0 1.0 3.0 5.0 5.0 2.0 | 8.0 8.0 3.0 8.0 2.0 10.0 1.0 10.0 4.0 9.0 | 9.0 8.0 4.0 8.0 9.0 2.0 0.0 5.0 3.0 3.0 | 9.0 4.0 3.0 3.0 6.0 9.0 2.0 5.0 1.0 3.0 | 1.0 2.0 8.0 10.0 0.0 5.0 6.0 7.0 2.0 5.0 \ 0.0 0.0 1.0 6.0 5.0 7.0 4.0 2.0 8.0 10.0 / 7.0 8.0 10.0 2.0 6.0 3.0 9.0 3.0 9.0 1.0 | 0.0 -5.0 -43.0 60.0 33.0 48.0 -10.0 27.0 4.0 -5.0 | 0.0 0.0 47.0 0.0 -2.0 18.0 10.0 2.0 49.0 -35.0 | 0.0 0.0 0.0 2632.0 1544.0 2601.0 176.0 1229.0 2169.0 ... | 0.0 0.0 0.0 0.0 6312.0 5843.0 18448.0 -625.0 7459.0 ... | 0.0 0.0 0.0 0.0 0.0 -15857.0 -24598.0 -5237.0 -10999... | 0.0 0.0 0.0 0.0 0.0 0.0 22017.0 4380.0 9081.0 -15604... | 0.0 0.0 0.0 0.0 0.0 0.0 0.0 26961.0 8682.0 -98101.0 | 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -10579.0 11283.0 \ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0

Nyní ještě slíbené příklady. Oba dva lze najít ve skriptech pana Olšáka. Zde jsou ale rozepsané podrobně tak, jak je můj program počítal:

/ 2.0 -2.0 1.0 0.0 3.0 4.0 | -4.0 4.0 -1.0 1.0 -7.0 -11.0 | 4.0 -4.0 5.0 1.0 7.0 -3.0 \ -6.0 6.0 -4.0 1.0 -12.0 -7.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 2.0 2.0 -2.0 -6.0 | 4.0 -4.0 5.0 1.0 7.0 -3.0 \ -6.0 6.0 -4.0 1.0 -12.0 -7.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 1.0 1.0 -1.0 -3.0 | 0.0 0.0 6.0 2.0 2.0 -22.0 \ -6.0 6.0 -4.0 1.0 -12.0 -7.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 1.0 1.0 -1.0 -3.0 | 0.0 0.0 3.0 1.0 1.0 -11.0 \ 0.0 0.0 -2.0 2.0 -6.0 10.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 1.0 1.0 -1.0 -3.0 | 0.0 0.0 0.0 2.0 -4.0 2.0 \ 0.0 0.0 3.0 1.0 1.0 -11.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 1.0 1.0 -1.0 -3.0 | 0.0 0.0 0.0 1.0 -2.0 1.0 \ 0.0 0.0 0.0 -2.0 4.0 -2.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 1.0 1.0 -1.0 -3.0 | 0.0 0.0 0.0 1.0 -2.0 1.0 \ 0.0 0.0 0.0 0.0 0.0 0.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 1.0 1.0 -1.0 -3.0 | 0.0 0.0 0.0 1.0 -2.0 1.0 \ 0.0 0.0 0.0 0.0 0.0 0.0

A ještě jeden.

/ 1.0 2.0 3.0 1.0 1.0 | 2.0 4.0 7.0 7.0 4.0 | 1.0 0.0 2.0 0.0 -2.0 \ 3.0 7.0 10.0 6.0 7.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 0.0 1.0 5.0 2.0 | 1.0 0.0 2.0 0.0 -2.0 \ 3.0 7.0 10.0 6.0 7.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 0.0 1.0 5.0 2.0 | 0.0 -2.0 -1.0 -1.0 -3.0 \ 3.0 7.0 10.0 6.0 7.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 0.0 1.0 5.0 2.0 | 0.0 -2.0 -1.0 -1.0 -3.0 \ 0.0 1.0 1.0 3.0 4.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 1.0 1.0 3.0 4.0 | 0.0 0.0 1.0 5.0 5.0 \ 0.0 0.0 1.0 5.0 2.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 1.0 1.0 3.0 4.0 | 0.0 0.0 1.0 5.0 5.0 \ 0.0 0.0 1.0 5.0 2.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 1.0 1.0 3.0 4.0 | 0.0 0.0 1.0 5.0 5.0 \ 0.0 0.0 0.0 0.0 -3.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 1.0 1.0 3.0 4.0 | 0.0 0.0 1.0 5.0 5.0 \ 0.0 0.0 0.0 0.0 -1.0

ČVUT FEL 2

mě naplňuje.

Včera a dneska jsem se učil na písemku z Úvodu do operačních systémů… a dneska jsem ji dal za plný počet. Předmět, se kterým jsem doposud válčil tak získal svoje kouzlo. Každá věc tak učiní, když si ji podmaním.
A když nás cvičící zasvěcoval do skriptování pod bashem… mobilizoval jsem všechny neurony a hltal zářivá klíčová slova objevující se jedno podruhém v mém JOE. I pochopil jsem, že sem patřím.

Z algoritmizace mám v půlce semestru šestnáct bodů… z deseti potřebných. Nakonci budu mít pravděpodobně bodů teoreticky na dva zápočty :). Baví mě v šest večer si sednout k počítači a sázet kód až do půlnoci, java nejava, a potom spokojeně odejít spát.

Matematika se stala skoro mým koníčkem. Nikdy jsem netušil, že derivování, integrování, vyšetřování nebo aproximace funkcí toho v sobě může skrývat tolik o podstatě světa. A co teprve věci, o kterých ještě nevím… věci, které na mě čekají v dobrovolné matematice 2 a dále.

Lineární algebra je jako klíč, který zapadá do spousty zámků a dokážete s ním jednoduše odemknout mnoho dveří, pod kterými jste se kdysi museli podkopávat. Je to jediný předmět, který mě dokáže vypnout… tj. dostat do stavu, kdy nechápu a mozek odmítá přijímat další informace.

A v pátek na pinčesu vždycky nachvíli na všechno zapomenu a pořádně si zamlátím do toho malého bílého sféromaku.

A tady je jedna pro… 0

kamarády, kteří to mají doleva a chybí jim v čechách vhodná strana… něco jako Sinn Féin.

Další stránka »