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 871×

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

Reklama
Reklama
Obrázek ke článku Facebook spouští službu Marketplace V ČR

Facebook spouští službu Marketplace V ČR

Společná platforma Marketplace usnadní lidem na Facebooku vyhledávání, nákup a prodej použitého zboží na lokální úrovni. Bude tak přímou konkurencí pro weby a aplikace se stejným zaměřením jako je například Letgo, Bazoš, Aukro, Sbazar a další.

Obrázek ke článku DistrCut – optimalizace pomocí distribuované inteligence

DistrCut – optimalizace pomocí distribuované inteligence

Optimalizační systémy, které jsem dosud popisoval, se týkaly vždy optimalizace na jednom zařízení. Optimalizovalo se dělení tyčového materiálu na jedné pile, vypalování plošného materiálu na jednom plazmovém stroji, řídilo se tavení na jedné elektrické obloukové peci.

Ve výrobním procesu je však často nutné optimalizovat činnost celého výrobního úseku, kde je více různých objektů odlišného typu a koordinovat činnost těchto objektů k dosažení společného cíle, zpravidla kvality finálního výrobku. Řešení tohoto problému umožňuje distribuovaná inteligence.

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ý