Caesar Cipher
Encrypts a message by shifting each letter of the alphabet.
- Level
- Advanced
- Topic:
- Text
- Concepts:
- Input & output
- Text
- Para
- Math
Open in Codoritmo
Run, change and debug this example in your browser.
What you'll learn
A nested Para loop finds each letter in the alphabet with Subcadena. MOD wraps around so that after z you start again at a.
Code
Algoritmo CifradoCesar Definir abecedario, mensaje, cifrado, letra Como Caracter Definir desplazamiento, i, j, posicion, nueva Como Entero abecedario <- "abcdefghijklmnopqrstuvwxyz" Escribir "Mensaje a cifrar:" Leer mensaje Escribir "Desplazamiento (1 a 25):" Leer desplazamiento cifrado <- "" Para i <- 1 Hasta Longitud(mensaje) Hacer letra <- Minusculas(Subcadena(mensaje, i, i)) // Buscamos la letra en el abecedario posicion <- 0 Para j <- 1 Hasta 26 Hacer Si Subcadena(abecedario, j, j) = letra Entonces posicion <- j FinSi FinPara Si posicion = 0 Entonces cifrado <- cifrado + letra SiNo // MOD hace que después de la z vuelva a empezar en la a nueva <- (posicion - 1 + desplazamiento) MOD 26 + 1 cifrado <- cifrado + Subcadena(abecedario, nueva, nueva) FinSi FinPara Escribir "Mensaje cifrado: ", cifradoFinAlgoritmoFlowchart
Each block in the flowchart matches one instruction in the code.
Sample run
This is what the program shows when it runs. The answers typed by the user are highlighted.
Mensaje a cifrar:User answer: nos vemos a las ochoDesplazamiento (1 a 25):User answer: 3Mensaje cifrado: qrv yhprv d odv rfkr
Challenge
Add an option to decrypt a message that is already encrypted.
Show hint
Decrypting is the same as encrypting with a shift of 26 minus the original one.
Related examples
Palindromes
Checks whether a phrase reads the same forwards and backwards.
IntermediateCount Vowels
Counts the vowels, spaces and other characters in a text.
IntermediateRoman Numerals
Converts a number from 1 to 3999 into Roman numerals.
Advanced