Programování v praxi - 3.díl
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Programování v praxi - 3.dílProgramování v praxi - 3.díl

 

Programování v praxi - 3.díl

Google       Google       25. 3. 2007       16 566×

Dnes napíšeme funkci, která nám načte text, jenž uživatel zadal, a ten pak zašifruje. Následně jej uloží do souboru.

Reklama
Reklama

Dneska se tedy konečně dostáváme k jádru věci. Napíšeme si podprogram, který nám zašifruje text zadaný uživatelem a uloží ho do souboru text.txt.

Nadeklarujeme si proměnné, které budeme používat.

var vstupden:array [1..6000] of char;
    vystupden:array [1..6000] of integer;
    jmeno:text;
    A,B,K:integer;
  • vstupden – pole použité pro text, který uživatel zadá
  • vystupden – pole, do nějž se ukládají ordinální hodnoty znaků z pole vstupden
  • jmeno – ukazatel na soubor, do kterého se ukládá zašifrovaný text
  • A,B – do těchto proměnných se ukládá kód A, resp. kód B
  • K – tato proměnná slouží k volbě v menu z minulého dílu seriálu

Zde je kód:

procedure sifra;
              procedure soubor;
               begin
                assign(jmeno,"text.txt");
                append(jmeno);
                end;
              procedure kod;
               begin
                writeln("Zadejte sifrovaci kod A:");
                readln(A);
                writeln("Zadejte sifrovaci kod B:");
                readln(B);
               end;
              procedure nacteni;
               begin
                clrscr;
                I:=1;
                vstupden[1]:=readkey;
                write(vstupden[1]);
                while ord(vstupden[I])<>13 do
                begin
                I:=I+1;

                vstupden[I]:=readkey;
                if ord(vstupden[I])<>13 then
                write(vstupden[I]);

                end;
                writeln;
                writeln;
               end;
              procedure sifrovat;
               begin
                for J:=1 to I-1 do
                if J mod 2=0 then
                vystupden[J]:=ord(vstupden[J])+A
                else vystupden[J]:=ord(vstupden[J])+B;
                end;
                procedure ulozit;
                begin;
                soubor;
                for J:=1 to I-1 do

                write(jmeno,chr( vystupden[J]));
                writeln;
                close(jmeno);
                end;
              begin
               clrscr;
               kod;
               nacteni;
               sifrovat;
               ulozit;
              end;

Teď si výše vypsaný kód trochu vysvětlíme.

  • assign(jmeno,"text.txt") – Přiřadí proměnné jmeno soubor s názvem text.txt.
  • append(jmeno) – Otevře soubor ukrytý v proměnné jmeno tak, že na jeho konec bude možno připisovat text.
  • writeln("Zadejte sifrovaci kod A:") – Vypíše výzvu pro zadání kódu A.
  • readln(A) – Do proměnné A načte uživatelský vstup.
  • I:=1 – Do proměnné I uloží hodnotu 1.
  • vstupden[1]:=readkey – Tady je vidět další využití funkce readkey. Díky ní se na první pozici pole vstupden uloží znak, který čeká na vstupu.
  • write(vstupden[1]) – Ale protože se po načtení za použití funkce readkey znak nevypíše na obrazovku, musíme to udělat ručně pomocí tohoto příkazu.
  • while ord(vstupden[I])<>13 do – Toto je cyklus, který se ukončí po stisku klávesy Enter, a to proto, že ordinální hodnota Enteru je 13.
  • I:=I+1 – inkrementuje hodnotu proměnné I.
  • if ord(vstupden[I])<>13 then – Opět testuje, jestli nebyl stisknut Enter.
  • write(vstupden[I]) – Pokud nebyl stisknut Enter, vypíše znak na obrazovku.
  • for J:=1 to I-1 do – V proměnné I je uložen počet znaků v poli vstupden, ale i včetně znaku Enter, proto je tento cyklus jen do I-1.
  • if J mod 2=0 then – Pomocí příkazu mod, který vrací zbytek po celočíselném dělení, se určí, jestli jde o sudé nebo liché číslo.
  • vystupden[J]:=ord(vstupden[J])+ord(A) – Pokud je J sudé, tak se k ordinální hodnotě znaku uloženého v poli vstupden přičte hodnota kódu A a následně se uloží na příslušné místo v poli vystupden.
  • else vystupden[J]:=ord(vstupden[J])+B; – Pokud je J liché, tak se přičte kód B a zase uloží do pole vystupden.
  • write(jmeno,chr(vystupden[J])) – Každou ordinální hodnotu v poli vystupden převede zpět na znak (chr(vystupden[J])) a poté uloží do souboru text.txt.
  • close(jmeno) – Zavře soubor text.txt.
  • clrscr – Vymaže vše na obrazovce.
  • kod – Zavolá podprogram kod.
  • nacteni – Zavolá podprogram nacteni
  • sifrovat – Zavolá podprogram sifrovat
  • ulozit – Zavolá podprogram ulozit

Nyní ještě podprogram premazani, který nám smaže obsah souboru text.txt.

procedure premazani;
              begin
                   assign(jmeno,"text.txt");
                   rewrite(jmeno);
                   close(jmeno);
              end;
  • rewrite – Tato funkce smaže obsah souboru, respektive se jej pokusí vytvořit a pokud již existoval, smaže jeho obsah.

V příštím díle si napíšeme poslední podprogram – dešifrování textu. A v 5. článku složíme všechny podprogramy do jednoho celku a povím vám něco o našem příštím projektu.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
Autor se věnuje programování v PACALU, vyvojovém prostředí Delphi, dále se zajímá o webdesing a tvorbu internetových stránek pomocí HTML, PHP a CSS.

Nové články

Obrázek ke článku Blockchain & Bitcoin konference

Blockchain & Bitcoin konference

V pátek 19. 5. 2017 se v pražském konferenčním centru Andel’s konala Blockchain & Bitcoin konference. Řada odborníků a podnikatelů v oboru blockchainu a kryptoměn představila možnosti budoucího směřování tohoto oboru. Speakeři většinou rusky mluvící provenience prezentovali řešení svých firem založená na technologii blockchainu.

Reklama
Reklama
Obrázek ke článku Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Bezpečnostní tým Cisco Talos odhalil celkem 4 kampaně dosud neobjeveného malwaru, který dostal jméno KONNI. Ten se dokázal úspěšně maskovat od roku 2014. Zpočátku se malware zaměřoval pouze na krádeže citlivých dat. Za 3 roky se ale několikrát vyvinul, přičemž jeho současná verze umožňuje útočníkovi z infikovaného počítače nejenom krást data, ale i mapovat stisky na klávesnici, pořizovat screenshoty obrazovky či v zařízení spustit libovolný kód. Pro odvedení pozornosti oběti zasílali útočníci v příloze také obrázek, zprávu a výhružkách severokorejského režimu či kontakty na členy mezinárodních organizací.

Obrázek ke článku Pouze jedna z deseti lokálních firem ví o pokutách plynoucích z GDPR

Pouze jedna z deseti lokálních firem ví o pokutách plynoucích z GDPR

Trend Micro, celosvětový lídr v oblasti bezpečnostních řešení a VMware, přední světový dodavatel cloudové infrastruktury a řešení pro podnikovou mobilitu, oznámily výsledky výzkumu mezi českými a slovenskými manažery zodpovědnými za ochranu osobních údajů, který zjišťoval, jak jsou připraveni na nové nařízení o ochraně osobních údajů (GDPR). Většina firem v České republice a na Slovensku nad 100 zaměstnanců je již s novým nařízením GDPR obeznámena. Výzkum provedený ve spolupráci s agenturou Ipsos ukázal, že téměř 8 firem z 10 o nařízení ví, přičemž jeho znalost je o něco vyšší na Slovensku (89 %) než v České republice (69 %).

Obrázek ke článku Vyděračský software Locky se vrací, tváří se jako potvrzení platby, odhalil tým Cisco Talos

Vyděračský software Locky se vrací, tváří se jako potvrzení platby, odhalil tým Cisco Talos

Jeden z nejznámějších ransomwarů, Locky, se vrací. Po většinu roku 2016 patřil mezi nejrozšířenější vyděračské softwary. Ke svému šíření využíval emailové kampaně s infikovanými přílohami. Ransomware Locky byl rozesílán prostřednictvím botnetu (internetový robot zasílající spamy) Necurs. Jeho aktivita na konci roku 2016 téměř upadla a spolu s ní i šíření ransomwaru Locky. Před několika týdny se Necurs opět probudil a začal posílat spamy nabízející výhodný nákup akcií. Dne 21. dubna zaznamenal bezpečnostní tým Cisco Talos první velkou kampaň ransomwaru Locky prostřednictvím botnetu Necurs za posledních několik měsíců.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý