Výuka informatiky v Čechách

Tenhle článek jsem původně napsal ve čtrnácti.

Něčím by se mělo začít, tak začnu základkou. Na základní škole jsme měli povinně volitelný předmět počítačů. Když se ostatní učili psát ve Wordu, Excel, databáze, základní HTML ve FrontPage, Zoner Callisto a Zoner GIF Animator, zařídil jsem si kroužek programování v Turbo Pascalu. Nedostali jsme se moc daleko, můj nejdokonalejší program Mozek dospěl do verze 007 (odtud pochází moje přezdívka).\ Ve FrontPage jsem dělal webové stránky pro školu. Hodně brzo se mi FrontPage znechutil. Náplň hodiny vypadala zajímavě. Učitelka mi dala klíče od sborovny, kde byl jediný moderní počítač na škole s přístupem na internet a právy administrátora. Já jsem se pohodlně usadil, lelkoval a čekal na práci. Zbytek třídy v počítačové učebně psal ve Wordu materiály. Když něco dopsali, korektor opravil chyby a nahrál na disketu. Poslíček mi disketu přinesl a já metodou Ctrl+C a Ctrl+V nahrával do FrontPage, upravoval styl textu, zarovnával. To bylo celé. Ve volném čase jsem surfoval na netu, bavil se s kámošem a tiskli jsme si obaly na CD na laserové tiskárně.

V té době jsem byl správcem třídního počítače (jediného) a jinak nic. Programování v Turbo Pascalu brzo upadlo pro nedostatek vědomostí přednášející učitelky, která se učila programovat průběžně s námi.

Program Mozek verze BETA

Tato verze nikdy nespatřila světlo světa, byl to úplně první můj program.

program Mozek;
uses crt;var a,b:real;
soucet,rozdila,rozdilb,soucin,podila,podilb,prumer,obvod,obsah:real;
  begin
  textbackground(2);
  textcolor(4);
  clrscr;
  write('  Program: ');
  textcolor(11);
  writeln(' MOZEK. ');
  textcolor(14);
  writeln('  Program velice rychle vypočítá mnoho operací.');
  textcolor(1);
  writeln('  Po provedení úkonu zmáčkněte ENTER.');
  readkey;
  textcolor(0);
  textbackground(5);
  clrscr;
  write('  Zadejte první číslo.  '); readln(a);
  textcolor(10);
  write('  Zadejte druhé číslo.  '); readln(b);
  textbackground(1);
  clrscr;
  soucet:=a+b;
  rozdila:=a-b;
  rozdilb:=b-a;
  soucin:=a*b;
  podila:=a/b;
  podilb:=b/a;
  prumer:=(a+b)/2;
  obvod:=2*(a+b);
  obsah:=a*b;
  textcolor(5);
  writeln('  Součet je    :  ',soucet:50:20);
  textcolor(12);
  writeln('  Rozdíl a-b je:  ',rozdila:50:20);
  writeln('  Rozdíl b-a je:  ',rozdilb:50:20);
  textcolor(13);
  writeln('  Součin je    :  ',soucin:50:20);
  textcolor(14);
  writeln('  Podíl a:b je : ',podila:50:20);
  writeln('  Podíl b:a je : ',podilb:50:20);
  textcolor(15);
  writeln('  Průměr je    :  ',prumer:50:20);
  textcolor(12);
  writeln('  Obvod je     :  ',obvod:50:20);
  textcolor(2);
  writeln('  Obsah je     :  ',obsah:50:20);
  readkey;
  textcolor(10);
  textbackground(4);
  clrscr;
  writeln('  Děkuji Vám za použití tohoto programu.');
  textcolor(2);
  write('  Byl vyroben 31.12.1999.');
  readkey;
  textcolor(5);
  textbackground(2);
  clrscr;
  writeln('  Kdo bude tento program nadále používat nechť zaplatí 5 Kč!');
  readkey;
  textcolor(125);
  textbackground(1);
  clrscr;
  writeln('  AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! ');
  writeln('    AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! ');
  writeln('  AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ!');
  writeln('    AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ! AHOJ!');
  readkey;
  end.

Se zpětným pohledem: když zadáte nulu, program při dělení spadne. Na ošetření vstupu jsem tehdy ještě nemyslel.

Další verze

Postupně se program vypracoval na další verze, přes různé podverze, bety, 002, 0022, 003, 003x až po verzi 007, kde jsem také ukončil jeho vývoj. Pokud by si někdo chtěl kompilovat, potřebuje stáhnout původní Turbo Pascal 7.0, ten však nebyl uvolněn jako freeware. Nevím jestli se někde prodává, každopádně existuje Free Pascal, ten je zdarma. Google dotaz Turbo Pascal download to řeší.

Programování v Turbo Pascalu

Turbo Pascal zdrojáky a tutorial

Na internetu je spousta návodů na tento prehistorický programovací jazyk, verze, co používám, ani nefunguje na Windows XP a v TP jsem nedělal od svých 15 let vůbec.

Hlava programu

Definování proměnných

program Mozek;
uses crt;
var
nahodaa,nahodab,barvac,M007:byte;
g,i,e,c,d,f,x,y,cislo,hadane,n:integer;
r,konec,textnamonitoru,otazka:string;
rychlost,nejcislo:word;
       begin
       textbackground(8);
       clrscr;
       textcolor(9);
       gotoxy(15,12);
       writeln('***************************************************');
       textcolor(2);
       gotoxy(15,13);
       write('*  Program: ');textcolor(14);writeln(' M O Z E K 007                        * ');
       textcolor(4);
       gotoxy(15,14);
       writeln('*  Licenční ujednání je v přiloženém souboru.     *');
       textcolor(5);
       gotoxy(15,15);
       writeln('*  Pokračujte libovolnou klávesou......           *');
       textcolor(9);
       gotoxy(15,16);
       writeln('***************************************************');
       readkey;                                                   { úvodní obrazovka }
  { textbackground(9);
   clrscr;
   textcolor(2);
   gotoxy(17,10);
   writeln('  Mozek, ten fakt musíš mít,');
   gotoxy(17,11);
   writeln('  výsledky ti pomůže najít.');
   gotoxy(17,12);
   writeln('  Zadej čísla, zmáčkni ENTER teď,');
   gotoxy(17,13);
   writeln('  výsledky budeš mít hned!');
   gotoxy(17,14);
   writeln('  Program MOZEK ulehčí ti v hlavě,');
   gotoxy(17,15);
   writeln('  příklady počítá hravě.');
   gotoxy(17,16);
   writeln('  A je tu ještě jedna rada,');
   gotoxy(17,17);
   writeln('  kup si ho hned, je ZADARA!!');   }

repeat;                                                          { básnička }

Nabídka programů

repeat;
     textbackground(black);
     clrscr;
     gotoxy(15,3);textcolor(15);write('=');gotoxy(64,3);write('=');
     gotoxy(15,2);textcolor(15);write('==================================================');
     gotoxy(16,3);textcolor(18);write('T O H L E  J E  N A B I D K A  P R O G R A M U..');
     gotoxy(15,4);textcolor(15);write('==================================================');
     textcolor(3);
     gotoxy(1,8);
     writeln('           -  Pokud vás nebolí uši, zmáčkněte klávesu         1 ');
     writeln;
     writeln('           -  Chcete vyzkoušet monitor, stiskněte klávesu     2 ');
     writeln;
     writeln('           -  Kámen, Nůžky, Papír, bouchněte do klávesy       3 ');
     writeln;
     writeln('           -  Pro vyzkoušení mozku (Vašeho), klikněte na      4 ');
     writeln;
     writeln('           -  Jestliže chcete spustit program Šetřič, napište 5 ');
     writeln;
     writeln('           -  Chcete-li vědět INFO o MOZKU namačkejte        007 ');
     writeln;
     write('           -  Chcete-li ukončit program Mozek007, tlačte na   0  ');
     textcolor(14);
     readln(r);
     until ((r='0') or (r='1') or (r='2') or (r='3') or (r='4') or (r='5') or (r='007'));     { nabídka programů }

        {=========================}

A teď postupně všechny programy if

Info o programu Mozek007

Vesměs blbosti, co mě napadly ve 14 letech.

if r='007'then
  begin
  textbackground(0);

  clrscr;
  gotoxy(18,2);textcolor(15);write('============================================');
  gotoxy(18,3);textcolor(15);write('=');gotoxy(61,3);write('=');
  gotoxy(19,3);textcolor(125);write('L I C E N C N I   U J E N D N A N I');
  gotoxy(18,4);textcolor(15);write('============================================');
  writeln;
  writeln;
  textcolor(14);
  writeln(' Takže za prvé, tento program musíš šířit!!               ');
  writeln(' ALE! tenhle program nesmíš měnit, pokud mi o tom neřekneš! ');
  writeln(' Jestli programuješ na Pascalu, tak mi napiš nebo pošli programy! ');
  writeln(' Jestli seš bohatej tak mi pošli nějaký drobný ale ne deseťáky! ');
  writeln(' Hledám sponzory, možná i reklama v programu...');
  writeln(' Pokud máš zájem o spolupráci, tak mi napiš!');
  writeln(' Ale pokud najdeš nějakou pravopisnou chybu nebo něco podobného ');
  writeln(' tak to neříkej mojí učitelce Čežtyni..... Ok domluveno, jenom mě upozorni.');
  writeln(' Pokud máš nějaké nápady na vylepšení nebo programy tak mi napiš!');
  writeln('          ');
  writeln('          ');
  textcolor(blue);
  writeln(' Ok teď něco o mojí osobě ');
  writeln(' Je mi 14, chodím do Masarykovy základní školy ve Velkém Oseku. ');
  writeln(' Baví mě počítače, fotbal, hokej, amatérská kulturistika,');
  writeln(' mobily, motorka, informační technologie a holky.');
  writeln(' Momentálně jsem volný tak že, holky můžou psát i jen tak..');
  writeln(' Jsem 172 cm vysoký, 62 kg hubený, tmavé vlasy a oči, atletická postava.');
  readkey;
    end;                               {BLA/BLA}

{=========================}

Program šetřič obrazovky

Docela vymakaný program, můj nejoblíbenější.

if r='5'then
    begin
    textbackground(0);
    clrscr;
    gotoxy(22,4);textcolor(white);write('=');gotoxy(56,4);write('=');
    gotoxy(22,3);textcolor(white);write('===================================');
    gotoxy(23,4);textcolor(25);write('P R O G R A M  S E T R I C  0 0 7');
    gotoxy(22,5);textcolor(white);write('===================================');
    gotoxy(17,10);textcolor(10);write('Napiš jaký text chceš psát na monitor...');readln(textnamonitoru);
    gotoxy(17,12);textcolor(11);write('Zadej rychlost přepisování v milisekundách...');readln(rychlost);
    repeat;
    clrscr;
    gotoxy(22,4);textcolor(white);write('=');gotoxy(56,4);write('=');
    gotoxy(22,3);textcolor(white);write('===================================');
    gotoxy(23,4);textcolor(25);write('P R O G R A M  S E T R I C  0 0 7');
    gotoxy(22,5);textcolor(white);write('===================================');
    gotoxy(17,14);textcolor(12);write('Chceš, aby se text mazal? (A/N)...');readln(otazka);
    until ((otazka='a') or (otazka='A') or (otazka='n') or (otazka='N'));
    clrscr;
    repeat;
    if ((otazka='A') or (otazka='a')) then clrscr else;
    randomize;
    nahodaa:=random(70);
    nahodab:=random(25);
    barvac:=random(30);
    gotoxy(nahodaa,nahodab);
    textcolor(barvac);
    write(textnamonitoru);
    delay(rychlost);
    until keypressed;
    end;                               { program šetřič }

Program Kámen nůžky papír

Zase další můj „lepší“ program. Také byl můj nejoblíbenější. Na škole neměl konkurenci.

if r='3'then
                  begin

{=========================}

repeat
clrscr;
randomize;
x:=random(2);
begin
textbackground(black);
clrscr;
gotoxy(22,4);textcolor(white);write('=');gotoxy(56,4);write('=');
gotoxy(22,3);textcolor(white);write('===================================');
gotoxy(23,4);textcolor(25);write('P R O G R A M   K . N . P   0 0 7');
gotoxy(22,5);textcolor(white);write('===================================');
gotoxy(13,10);textcolor(1);write('Vyber si pane: 0=šutr, 1=nůžky, 2=papír. ');
readln(y);
gotoxy(13,12);
delay(250);
textcolor(14);write('Já dávám ',x);
delay(250);
end;
case  x of
 0: begin
 if y=0 then
        begin
        textcolor(10);
        gotoxy(13,14);write('Hm, tak to je remíza ....');
        end;
 if y=1 then
        begin
        gotoxy(13,14);
        writeln('Cha cha, prohrál jsi !');
        end;
 if y=2 then
        begin
        gotoxy(13,14);
        writeln('To je ale náhoda, to není možný, to je asi chyba programu.....');
        gotoxy(13,15);
        writeln('Ty si vyhrál ! Gratuluji.');
        end;
  end;
 1: begin
  if y=0 then
         begin
         gotoxy(15,14);
         writeln('Zase si vyhrál... Dáme si to znovu ? Prosím. ');
         end;
  if y=1 then
         begin
         gotoxy(13,14);
         writeln('Uf, remíza ');
         end;
  if y=2 then
         begin
         gotoxy(13,14);
         writeln('Směji se pod vousy - prohrál jsi prohrál  ');
         end;
 end;
 2:begin
   if y=0 then
          begin
          gotoxy(13,14);
          writeln('Nauč se to pořádně hrát, nebo prohraješ dům. ');
          end;
   if y=1 then
          begin
          gotoxy(13,14);
          writeln('Eště že jsme se o nic nevsázeli. Seš moc dobrej ');
          end;
   if y=2 then
          begin
          gotoxy(13,14);
          writeln('Znova ! Jsme stejně dobří ');
          end;
  end;
end;
textcolor(21);
gotoxy(15,16);
write('Chceš pokračovat?  1 ne nebo 0 ano ');readln(d);
until d=1;
textcolor(20);
gotoxy(15,18);write('Ahoj, příště tě porazím, budu trénovat......');
readkey;                                                 { program Kámen nůžky papír }
end;
              {=========================}

Program neznámé číslo

Taky v pohodě program, ale není vůbec složitý na naprogramování v jakémkoli jazyce.

if r='4'then
  begin
  textbackground(0);
  clrscr;
  window(10,2,70,4);
  textbackground(blue);
  clrscr;
  textcolor(2);
  gotoxy(12,2);
  write('Zadej jaké největší možné číslo...');textcolor(14);readln(nejcislo);
  clrscr;
  gotoxy(12,2);
  textcolor(2);
  write('Myslím si číslo od 1 do ');textcolor(14);write(nejcislo);textcolor(2);write(', uhodni ho !');
  window(25,6,55,24);
  clrscr;
  randomize;
  cislo:=random(nejcislo);
  n:=1;
  textcolor(6);
  write(n,'. marnej pokus: ');textcolor(14);
  read(hadane);
  while hadane<>cislo do
       begin
       textcolor(green);
       if hadane>cislo then writeln('Trošku uber !')
       else writeln('Trošku více !');
       n:=n+1;
       textcolor(6);
       write(n,'. marnej pokus: ');
       textcolor(14);
       read(hadane);
       end;
  window(10,2,74,4);
  clrscr;
  writeln;
  textcolor(26);
  write(' Gratuluji, ale byla to doba. Moje číslo ',cislo,' si uhádl na ',n,'. pokus.');
  readkey;
  window(1,1,80,25);
  end;                             { program neznámé číslo }

{=========================}

Program Blik

Pouze rozblikal obrazovku, zadala se rychlost blikání. Prý to dokáže zničit monitor, tomu však nevěřím.

if r='2'then
   begin
   textbackground(black);
   clrscr;
   gotoxy(22,4);textcolor(white);write('=');gotoxy(54,4);write('=');
   gotoxy(22,3);textcolor(white);write('=================================');
   gotoxy(23,4);textcolor(18);write('P R O G R A M  B L I K  0 0 7');
   gotoxy(22,5);textcolor(white);write('=================================');
   gotoxy(6,10);textcolor(11);write(' Zadej počet bliknutí ');readln(e);
   gotoxy(6,12);textcolor(9);write(' Zadej délku bliknutí v milisekundách ');readln(f);
   g:=1;
   textbackground(g);
   delay(200);
   for i :=1 to e do begin
   g:=g+1;
   textbackground(g);
   clrscr;
   delay(f);
   end;
   end;                                            { program Blik }

{=========================}

Program zvuk

Se zvukem jsem si vyhrál, naprogramoval krásné melodie. Efektní byl i program, co neobsahoval příkaz nosound. Takový program nevypnul zvuk. I když se program vypnul, nepříjemný zvuk hrál dál. Pomohl pouze reset počítače.

if r='1'then
   begin
   textbackground(0);
   clrscr;
   gotoxy(22,4);textcolor(white);write('=');gotoxy(54,4);write('=');
   gotoxy(22,3);textcolor(white);write('=================================');
   gotoxy(23,4);textcolor(25);write('P R O G R A M  Z V U K  0 0 7');
   gotoxy(22,5);textcolor(white);write('=================================');
   gotoxy(9,10);textcolor(10);write(' Nyní zadejte velikost tónu v hertzích.... ');
   textcolor(14);readln(c);
   gotoxy(9,12);textcolor(4);write(' Teď zadejte délku tónu v milisekundách.... ');
   textcolor(14);readln(d);
   gotoxy(9,14);textcolor(5);write(' O kolik hertzů bude následující tón zvýšen....');
   textcolor(14);readln(f);
   repeat
   gotoxy(22,4);textcolor(white);write('=');gotoxy(54,4);write('=');
   gotoxy(22,3);textcolor(white);write('=================================');
   gotoxy(23,4);textcolor(25);write('P R O G R A M  Z V U K  0 0 7');
   gotoxy(22,5);textcolor(white);write('=================================');
   gotoxy(15,15);textcolor(9);write('Nyní slyšíme ',c,' hertzů');
   sound(c);
   delay(d);
   nosound;
   c:=c+f;
   clrscr;
   until keypressed;                                  { program Zvuk }
               end;

Závěrečné titulky

if r='1'then
              begin
              readkey;
              end;
              if r='5'then
              begin
              readkey;
              end;
if((r='1')or(r='2')or(r='3')or(r='4')or(r='5')or(r='007'))then
clrscr;
textbackground(black);
textcolor(blue);
clrscr;
gotoxy(10,13);write('Chcete ukončit program Mozek 007 ? (AN)');read(konec);
until ((Konec='a') or (konec='A') or (konec='ano') or (konec='ANO'));


{====================}
if((r='0')or(r='1')or(r='2')or(r='3')or(r='4')or(r='5')or(r='007'))then
 begin
 textbackground(0);
 textcolor(14);
 clrscr;
 gotoxy(10,10);
 write('************************************************************');
 textcolor(1);
 gotoxy(5,11);
 writeln('     *         Děkuji Vám za použití tohoto programu.           *');
 textcolor(2);
 gotoxy(4,12);
 write('      *                  Vyrobeno 4.1.2002                       *');
 gotoxy(4,13);
 textcolor(4);
 write('      *     xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx      *');
 textcolor(15);
 gotoxy(4,14);
 write('      *                  E-mail :  [cenzurováno]                 *');
 gotoxy(4,15);
 write('      *                   Mobil :  [cenzurováno]                 *');
 gotoxy(4,16);
 write('      *                     Fax :  [cenzurováno]                  *');
 gotoxy(10,17);
 textcolor(14);
 write('************************************************************');
 readkey;
 end;

end.                                               { Závěr ........ }

A to je vše

K Turbo Pascalu jsem na internetu sháněl různé tutoriály, zdrojáky, měl pár kontaktů, sehnal jsem si i Turbo Pascal pro Windows, tam ale byla jiná syntaxe, staré .pas soubory mi nefungovaly, tak jsem toho nechal. TP mi dal dobrý základ pro pochopení podmínek a cyklů, v současné době moc neprogramuji, snad jen to PHP, MySQL a Visual Basic. Jinak nic.