Katalog

Leon Plebanek, 2019-03-06
tarnów

Informatyka, Scenariusze

scenariusz lekcji informatyki, temat: Szyfrowanie słów

- n +

Szyfrowanie słów
Scenariusz lekcji informatyki
Leon Plebanek

Klasa: 3 LO
Profil: informatyczny
Temat: Szyfrowanie słów
Czas trwania: 2 godziny lekcyjne
Cele: rozumienie
• znaczenia pojęć kod ASCII znaku, tablica kodów ASCII
• działania operatora %
• ułożenia algorytmu do szyfrowania słów
• realizacji powyższego algorytmu w języku C++
Metody i formy: pogadanka, pokaz, ćwiczenia grupowe, praca samodzielna
Pomoce dydaktyczne: kartki z tekstem zadania, tablica kodów ASCII, komputery z kompilatorem języka c++ (środowisko CodeBlocks)
Przebieg lekcji:
• Czynności wstępne
• Podział klasy na grupy 2-3 osobowe
• Rozdanie kart z tekstem zadania i tabelą kodów ASCII
Zadanie - Szyfrowanie tekstu
Dany jest ciąg znaków, których dziesiętne kody ASCII są w przedziale od 32 do 127 (zob. tabela 1).
Szyfrowanie z kluczem n polega na zastąpieniu każdego znaku z ciągu znakiem leżącym o n pozycji dalej (w tabeli znaków ASCII) od zastępowanego znaku. Przy szyfrowaniu znaku należy postępować w sposób cykliczny, tzn. po znaku o kodzie 127 przechodzimy do znaku o kodzie 32.
a. Podaj znaki i ich kody dziesiętne ASCII po zaszyfrowaniu znaku a (o kodzie 97) dla n = 23,
n = 84, n = 1005; podaj sposób otrzymania wyniku.
b. Opracuj na komputerze metodę szyfrowania z kluczem n dowolnego słowa złożonego z m znaków (z tabeli 1).
• Przedstawienie schematu "maszyny szyfrującej"
a----------------->szyfrowanie----------------->d
• Obliczenie kodu zaszyfrowanego znaku n = 23 (kod 120 znak x, przedstawienie na schemacie)
• Dyskusja sposobu wyznaczenia kodu zaszyfrowanego znaku dla n = 84 (kod 85 znak U, przedstawienie na schemacie)
• Wyprowadzenie wzoru na nowy kod znaku
Gdyby kody znaków były z zakresu od 0 do 95 wystarczyłoby zastosować wzór

(1) nowy_kod =(stary_kod + n) mod 96 gdzie mod oznacza resztę z dzielenia przez 96.

W naszym przypadku stary_kod jest z zakresu od 32 do 127.
Wykonując odejmowanie stary_kod - 32 otrzymujemy zakres od 0 do 95.
Możemy zatem zastosować (1) otrzymując nowy_kod = (stary_kod - 32 +n) mod 96.
Pamiętając, że nowy_kod też musi być z zakresu od 32 do 127 dodajemy jeszcze 32 otrzymując ostatecznie
(2) nowy_kod = (stary_kod - 32 + n) mod 96 + 32.
Stosując wzór (2) otrzymujemy kod zaszyfrowanego znaku dla n = 1005.
(kod 46 znak . kropka)
1. Ćwiczenie 1. Szyfrowanie z kluczem podanych słów
(praca w grupach, bez komputerów zob. materiały do ćwiczeń)
2. Programujemy " maszynę szyfrującą"
3. Ustalamy algorytm szyfrowania z kluczem n dowolnego słowa złożonego z m znaków
I. Wczytaj klucz n i ilości znaków m.
II. Powtórz m razy kroki III i IV.
III. Wczytaj kolejny znak.
IV. Oblicz nowy kod według wzoru (2) i wyświetl znak o tym kodzie
• Realizacja algorytmu w postaci funkcji w języku C++, omówienie roli rzutowania typów int(), char()
#include
using namespace std;
void szyfruj()
{
char znak;
int i, n , m , nowy_kod;
cout<<"Podaj ilość znaków " ;
cin>>m;
cout<<"Podaj klucz ";
cin>>n;
for (i= 1 ;i<= m; i++)
{
cout<<"Podaj znak ";
cin>>znak;
nowy_kod = (int(znak) - 32 + n) % 96 + 32; //rzutowanie typu char na int
cout<< char(nowy_kod)< }
}

int main()
{
szyfruj();
return 0;
}
• Ćwiczenie 2. Szyfrowanie słów z użyciem komputera (praca w grupach, zob. materiały do ćwiczeń)
• Sformułowanie wniosków:
a. dodanie do klucza liczby 96 lub jej wielokrotności nie zmienia szyfru
b. istnieje 96 różnych sposobów zaszyfrowania ciągu znaków
c. klucze 0, 96, 192,... nie mają praktycznego sensu
d. we wzorze (2) zamiast + n można wpisać + n % 96
e. tym samym znakom w słowie będą odpowiadać te same znaki w słowie zaszyfrowanym
• Propozycja uzupełnienia zadania Szyfrowanie tekstu o deszyfrowanie z kluczem n.
• Przedstawienie schematu maszyny deszyfrującej
d--------------->deszyfrowanie--------------->a
• Wyprowadzenie wzoru na stary kod znaku
Dla zakresu od 0 do 95
stary_kod = (nowy_kod + 96 - ( n % 96)) % 96
zatem dla zakresu od 32 do 127
(3) stary_kod = (nowy_kod - 32 + 96 - (n % 96)) % 96 + 32
• Ułożenie algorytmu deszyfrowania z kluczem n dowolnego słowa złożonego z m znaków (praca w grupach)
I. Wczytaj klucz n i ilość znaków m.
II. Powtórz m razy kroki III, IV i zakończ algorytm
III. Wczytaj kolejny znak.
IV. Oblicz stary kod według wzoru (3) i wyświetl znak o tym kodzie.
• Realizacja algorytmu w postaci funkcji w języku C++ (praca w grupach)
• Umieszczenie procedury w programie (praca w grupach)
#include
using namespace std;
void deszyfruj()
{
char znak;
int i, n , m, stary_kod;

cout<<"Podaj ilość znaków " ;
cin>>m;
cout<<"Podaj klucz ";
cin>>n;;
for (i= 1 ;i<= m; i++)
{
cout<<"Podaj znak ";
cin>>znak;
stary_kod = (int(znak) - 32 + 96 - (n % 96)) % 96 +32;
cout< }
}

int main()
{
deszyfruj();
return 0;
}
• Ćwiczenie 3. Deszyfrowanie słów z użyciem komputera (praca w grupach)
• Sprawdzenie realizacji celów (praca samodzielna)
Zaproponuj tekst pomocy dla następujących haseł:
tablica kodów ASCII, operator %, kod ASCII znaku, rzutowanie typu
• Praca domowa
Zaproponuj własną metodę szyfrowania i deszyfrowania dowolnego słowa złożonego ze znaków z tabeli 1.

Znaki i ich dziesiętne kody ASCII
Znak Kod Znak Kod Znak Kod
spacja 32 @ 64 ` 96
! 33 A 65 a 97
" 34 B 66 b 98
# 35 C 67 c 99
$ 36 D 68 d 100
% 37 E 69 e 101
& 38 F 70 f 102
' 39 G 71 g 103
( 40 H 72 h 104
) 41 I 73 i 105
* 42 J 74 j 106
+ 43 K 75 k 107
, 44 L 76 l 108
- 45 M 77 m 109
. 46 N 78 n 110
/ 47 O 79 o 111
0 48 P 80 p 112
1 49 Q 81 q 113
2 50 R 82 r 114
3 51 S 83 s 115
4 52 T 84 t 116
5 53 U 85 u 117
6 54 V 86 v 118
7 55 W 87 w 119
8 56 X 88 x 120
9 57 Y 89 y 121
: 58 Z 90 z 122
; 59 [ 91 { 123
< 60 92 | 124
= 61 ] 93 } 125
> 62 ^ 94 ~ 126
? 63 _ 95 Del 127


Wyświetleń: 0


Uwaga! Wszystkie materiały opublikowane na stronach Profesor.pl są chronione prawem autorskim, publikowanie bez pisemnej zgody firmy Edgard zabronione.