Programování v praxi - 3.díl
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
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 027×

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 Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Reklama
Reklama
Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

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 © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý