Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki
Problem 1

Napisz program szyfrujący podany tekst (przy ustalonym kluczu szyfrowania). Przetestuj jego działanie dla wyrazu informatyka oraz klucza o wartości 4.

Specyfikacja:

Dane:

  • klucz – liczba całkowita; wartość klucza szyfrowania

  • wyraz – ciąg znaków; wiadomość do zaszyfrowania zapisana małymi literami

Wynik:

Program na wyjściu standardowym wyświetli tekst zaszyfrowany przy pomocy ustalonego klucza szyfrowania.

RBE8U076mVD4a
Wymyśl pytanie na kartkówkę związane z tematem materiału.
1
Polecenie 1

Zapoznaj się z prezentacją. Porównaj z nią swoje rozwiązanie.

Zastanów się, jak zmienić program, aby tekst był szyfrowany poprawnie bez względu na wielkość liter.

Ri6ojzB4dYTb51
Krok pierwszy Napiszemy w języku Python program, który będzie kodował słowa z wykorzystaniem szyfru Cezara. Pracę zaczniemy od inicjalizacji zmiennych. Krok drugi wyraz = "informatyka" zaszyfrowanyWyraz = "" klucz = 4 Zmienna wyraz przechowuje ciąg znaków do zaszyfrowania; zmienna zaszyfrowanyWyraz przechowa z kolei zaszyfrowane słowo. Zmiennej klucz przypiszemy wartość klucza szyfrującego. Krok trzeci Następnym etapem jest utworzenie pętli, dzięki której odczytamy kolejne litery szyfrowanego słowa: wyraz = "informatyka" zaszyfrowanyWyraz = "" klucz = 4 for znak in wyraz: Krok czwarty Znajdziemy kod ASCII każdej litery. Python oddaje do dyspozycji programisty funkcję ord(), która jako argument przyjmuje znak i zwraca jego wartość w kodzie ASCII. Krok piąty Dodajemy wartość klucza do odpowiadającego literze kodu ASCII: wyraz = "informatyka" zaszyfrowanyWyraz = "" klucz = 4 for znak in wyraz: przesunietaLitera = ord(znak) + klucz Krok szósty Pamiętajmy, że mogliśmy wykroczyć poza zakres kodów ASCII przypisanych literom. Odejmujemy więc od otrzymanej wcześniej sumy kod ASCII pierwszej małej litery (czyli "a") i wykonujemy operację modulo 26. Krok siódmy wyraz = "informatyka" zaszyfrowanyWyraz = "" klucz = 4 for znak in wyraz: przesunietaLitera = ord(znak) + klucz poprawkaNaKoniecAlfabetu = (przesunietaLitera - ord('a')) % 26 Po wykonaniu ostatniego działania dodajemy do otrzymanego wyniku wartość "a". Obliczoną wartość zmieniamy z liczby (kodu ASCII) w znak. Krok ósmy W języku Python do wykonania takiej zamiany służy funkcja chr(), która jako argument przyjmuje wartość kodu ASCII, a zwraca odpowiadający jej znak. Krok dziewiąty wyraz = "informatyka" zaszyfrowanyWyraz = "" klucz = 4 for znak in wyraz: przesunietaLitera = ord(znak) + klucz poprawkaNaKoniecAlfabetu = (przesunietaLitera - ord('a')) % 26 zaszyfrowanaLitera = chr(poprawkaNaKoniecAlfabetu + ord('a')) Program jest już prawie gotowy. Pozostała jeszcze jedna operacja. Krok dziesiąty Stosując konkatenację dopisujemy zaszyfrowaną literę na końcu zmiennej zaszyfrowanyWyraz. Po zakończeniu działania pętli wyświetlamy zaszyfrowane słowo: wyraz = "informatyka" zaszyfrowanyWyraz = "" klucz = 4 for znak in wyraz: przesunietaLitera = ord(znak) + klucz poprawkaNaKoniecAlfabetu = (przesunietaLitera - ord('a')) % 26 zaszyfrowanaLitera = chr(poprawkaNaKoniecAlfabetu + ord('a')) zaszyfrowanyWyraz += zaszyfrowanaLitera print(zaszyfrowanyWyraz)
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.