Kryptologie - Informatik
Kryptologie - Informatik Kryptologie - Informatik
PROCEDURE PROCEDURE interAktion; VAR V VAR A R altPosi, neuPosi: point; altBuch, neuBuch: char; PROCEDURE PROCEDURE statistik (wo: rect; was: integer); VAR VAR i, dh, dv, dx, d2, li, mi, mm, maxi: integer; faktor: real; balken: rect; BEGIN BEGIN IF I IF F buchstaben[was, 1].anzahl > standard[was, 1].anzahl THEN THEN maxi := buchstaben[was, 1].anzahl ELSE ELSE maxi := standard[was, 1].anzahl; dh := (wo.bottom - wo.top) DIV DIV 28; dv := (wo.right - wo.left) DIV DIV 2; d2 := dh DIV D DIV I V 2 - 2; li := wo.left + 30; mi := li + dv; mm := wo.top - 4; faktor := (dv - 40) / maxi; textFace([]); textSize(9); foreColor(yellowColor); paintRect(wo); foreColor(blueColor); moveto(wo.left + 3, wo.top + dh + 3); CASE CASE CASE was OF OF 1: writeDraw(‚Buchst. Standard TextVorlage‘); 2: writeDraw(‚Paare Standard TextVorlage‘); 3: writeDraw(‚Tripel Standard TextVorlage‘); END E END N D; { CASE } FOR F FOR O R i := 1 TO T TO O 26 DO DO BEGIN BEGIN moveto(wo.left + 3, wo.top + (i + 2) * dh); dx := round(faktor * standard[was, i].anzahl); writeDraw(standard[was, i].tripel); setRect(balken, li, mm + (i+2) * dh - d2, li + dx, mm + (i+2) * dh + d2); paintRect(balken); END END; END FOR F FOR O R i := 1 TO T TO O 26 DO DO BEGIN BEGIN moveto(wo.left + 3 + dv, wo.top + (i + 2) * dh); dx := round(faktor * buchstaben[was, i].anzahl); writeDraw(buchstaben[was, i].tripel); setRect(balken, mi, mm + (i+2) * dh - d2, mi + dx, mm + (i+2) * dh + d2); paintRect(balken); END END; END END textSize(TS); textface([bold]); END E END N D; { statistik } 44
PROCEDURE PROCEDURE PROCEDURE warten_bis_klick_in (ziel: rect; VAR V VAR A R ccc: char; VAR VAR V VAR A R ppp: point); VAR V VAR A R punkt: point; sBox: rect; stat, wahl: boolean; lang, xAlt, xNeu, yAlt, yNeu: integer; BEGIN BEGIN IF IF NOT NNOT NOT O T halt THEN THEN BEGIN BEGIN stat := FALSE; wahl := FALSE; lang := TS DIV D DIV I V 2 - 2; xAlt := 0; yAlt := 0; setPt(punkt, 0, 0); REPEAT REPEAT getmouse(punkt); halt := ptInRect(punkt, stop); stat := ptInRect(punkt, feld); IF IIF IF F stat AND A AND N D keypressed THEN THEN BEGIN BEGIN stat := FALSE; foreColor(blackColor); xNeu := punkt.h DIV DDIV DIV I V TS * TS + lang DIV D DIV I V 2 + 3; yNeu := (punkt.v + lang) DIV D DIV I V TS * TS - 3 * lang DIV D DIV I V 2 + 1; IF I IF F (xAlt 0) AND A AND N D (yAlt = yNeu) THEN THEN line(xNeu - xAlt - 6, 0) ELSE ELSE ELSE BEGIN BEGIN xAlt := 0; yAlt := 0; END END END; END END moveto(xNeu, yNeu); line(0, 2 * lang); xAlt := xNeu; yAlt := yNeu; END END; END wahl := ptInRect(punkt, ziel); UNTIL UNTIL button AND A AND N D (halt OR O OR R stat OR OR OOR OR R wahl); REPEAT REPEAT REPEAT UNTIL UNTIL NOT N NOT O T button; IF I IF F stat THEN THEN BEGIN BEGIN sBox := feld; IF IF I IF F punkt.h < xm THEN THEN sBox.right := xm ELSE ELSE sBox.left := xm; insetRect(sBox, 1, 1); IF I IF F punkt.v < y1 THEN THEN statistik(sBox, 1) ELSE ELSE IF I IF F punkt.v > y2 THEN THEN statistik(sBox, 3) ELSE ELSE statistik(sBox, 2); warten_bis_klick_in(ziel, ccc, ppp); END E END N D;{ IF stat } IF I IF F wahl THEN THEN THEN BEGIN BEGIN BEGIN ccc := chr((punkt.h - links) DIV DIV DDIV DIV I V breit + 65); WITH WITH ziel DO DO setPt(ppp, links + breit * (ord(ccc)-65), 8 + (bottom + top) DIV DIV DIV 2) END E END N D; { IF wahl } END END E END N D; { IF NOT halt } END E END N D; { warten_bis_klick_in } 45
- Seite 1 und 2: Stichworte: Pascal-Datentypen: •
- Seite 3 und 4: Unterrichtsbeschreibung zur Kryptol
- Seite 5 und 6: Anlage 2: Das File-Konzept in THINK
- Seite 7 und 8: PROGRAM PROGRAM PROGRAM stringTests
- Seite 9 und 10: Anlage 4 : Protokoll der Projektspe
- Seite 11 und 12: 1.6 PROCEDURE PROCEDURE PROCEDURE M
- Seite 13 und 14: 2.3 Vorgehensweise bei Buchstaben:
- Seite 15 und 16: 3. Textanalyse Platz 04 Ein Program
- Seite 17 und 18: 4. Codierung mit fester ZuordnungPl
- Seite 19 und 20: 5.3 Layout alt neu Text Interaktive
- Seite 21 und 22: 6.2 Entschlüsselung: Um die Vigen
- Seite 23 und 24: Anlage 6 : Kursarbeit 1. Im nachfol
- Seite 25 und 26: Anlage 7 : Programmlauf : Bereinigt
- Seite 27 und 28: ————— Bigramme sortiert
- Seite 29 und 30: Anlage 8 : Lauffähiges Programm in
- Seite 31 und 32: PROCEDURE PROCEDURE text_ausgeben;
- Seite 33 und 34: PROCEDURE PROCEDURE sichern; VAR V
- Seite 35 und 36: PROCEDURE PROCEDURE codierung; VAR
- Seite 37 und 38: BEGIN BEGIN { analyse } FOR FOR F F
- Seite 39 und 40: PROCEDURE PROCEDURE textAnalyse (si
- Seite 41 und 42: FUNCTION FUNCTION uebernehmen_von (
- Seite 43: BEGIN BEGIN { Bild_zeichnen } WITH
- Seite 47 und 48: BEGIN BEGIN { Interaktion } hinweis
- Seite 49 und 50: PROCEDURE PROCEDURE behandle_Klick_
- Seite 51: Anlage 9 : PGP-Algoritmus private k
PROCEDURE PROCEDURE interAktion;<br />
VAR V VAR A R altPosi, neuPosi: point;<br />
altBuch, neuBuch: char;<br />
PROCEDURE PROCEDURE statistik (wo: rect; was: integer);<br />
VAR<br />
VAR<br />
i, dh, dv, dx, d2, li, mi, mm, maxi: integer;<br />
faktor: real;<br />
balken: rect;<br />
BEGIN<br />
BEGIN<br />
IF I IF F buchstaben[was, 1].anzahl > standard[was, 1].anzahl THEN<br />
THEN<br />
maxi := buchstaben[was, 1].anzahl<br />
ELSE<br />
ELSE<br />
maxi := standard[was, 1].anzahl;<br />
dh := (wo.bottom - wo.top) DIV DIV 28;<br />
dv := (wo.right - wo.left) DIV DIV 2;<br />
d2 := dh DIV D DIV I V 2 - 2;<br />
li := wo.left + 30;<br />
mi := li + dv;<br />
mm := wo.top - 4;<br />
faktor := (dv - 40) / maxi;<br />
textFace([]);<br />
textSize(9);<br />
foreColor(yellowColor);<br />
paintRect(wo);<br />
foreColor(blueColor);<br />
moveto(wo.left + 3, wo.top + dh + 3);<br />
CASE CASE CASE was OF<br />
OF<br />
1: writeDraw(‚Buchst. Standard TextVorlage‘);<br />
2: writeDraw(‚Paare Standard TextVorlage‘);<br />
3: writeDraw(‚Tripel Standard TextVorlage‘);<br />
END E END N D; { CASE }<br />
FOR F FOR O R i := 1 TO T TO O 26 DO<br />
DO<br />
BEGIN<br />
BEGIN<br />
moveto(wo.left + 3, wo.top + (i + 2) * dh);<br />
dx := round(faktor * standard[was, i].anzahl);<br />
writeDraw(standard[was, i].tripel);<br />
setRect(balken, li, mm + (i+2) * dh - d2, li + dx, mm + (i+2) * dh + d2);<br />
paintRect(balken);<br />
END END; END<br />
FOR F FOR O R i := 1 TO T TO O 26 DO<br />
DO<br />
BEGIN<br />
BEGIN<br />
moveto(wo.left + 3 + dv, wo.top + (i + 2) * dh);<br />
dx := round(faktor * buchstaben[was, i].anzahl);<br />
writeDraw(buchstaben[was, i].tripel);<br />
setRect(balken, mi, mm + (i+2) * dh - d2, mi + dx, mm + (i+2) * dh + d2);<br />
paintRect(balken);<br />
END END; END END<br />
textSize(TS);<br />
textface([bold]);<br />
END E END N D; { statistik }<br />
44