Utente:Matauten/Sandbox

Da Wikiversità, l'apprendimento libero.

Convertire tramite un linguaggio di crittografia una o più frasi utilizzando il linguaggio di programmazione C++.

Il progetto ha lo scopo di istruire principalmente i ragazzi delle scuole secondarie di primo grado all'utilizzo del linguaggio C++. Tramite la programmazione e l'esecuzione di un programma di crittografia basato sul cifrario di Cesare ed il cifrario a trasposizione numerica i ragazzi implementeranno la loro conoscenza del codice ed impareranno i rudimenti della crittografia; questo argomento risulta molto attuale e presente nel mondo informatico soprattutto a causa delle recenti modifiche legislative volte ad aumentare la tutela della privacy degli utenti della rete. L'obiettivo principale è di istruire gli utenti all'utilizzo del linguaggio di programmazione C++ attraverso un progetto in grado di aumentare la loro conoscenza delle tecniche di programmazione di base.


Crittografia[modifica]

Con la parola "crittografia" si intende quella tecnica che permette di "cifrare" un messaggio rendendolo incomprensibile a tutti tranne che al suo destinatario, il quale possiede la soluzione per decodificarlo. In generale i due processi principali che vengono applicati in crittografia si dividono in "cifratura" e "codifica". La cifratura è un procedimento che, tramite una regola conosciuta, rende non comprensibile un testo; il procedimento inverso è detto codifica e permette di convertire il messaggio in linguaggio comprensibile grazie alla conoscenza della soluzione.

Tipologie di crittografia utilizzate[modifica]

Cifrario di Cesare[modifica]

Il cifrario di Cesare, chiamato cosi in onore di Giulio Cesare che lo utilizzava per proteggere i suoi messaggi segreti, è uno dei più antichi metodi di crittografia di cui si abbia traccia storica. È un metodo a sostituzione alfabetica in cui ogni lettera del testo da codificare è sostituita dalla lettera che si trova un certo numero di posizioni dopo nell'alfabeto; la chiave di cifratura, ovvero la quantità di posizioni in cui viene spostata la lettera, è definita dall'utente.


Cesare
Cesare

Cifrario a trasposizione numerica[modifica]

Un cifrario a trasposizione numerica è un metodo di cifratura in cui le lettere vengono convertite in numeri seguendo l'ordine crescente dell'alfabeto, così che il testo cifrato costituisca una variante numerica del testo alfabetico.

trasposizione numerica
trasposizione numerica

Il linguaggio C++[modifica]

In informatica il C++ è un linguaggio di programmazione di alto livello che permette di eseguire operazioni complesse a partire da un codice sorgente composto da poche righe. Nato nel 1983 dall’ingegno di Bjarne Stroustrup, allora ricercatore presso AT&T, C++ è tra i primi 5 linguaggi più utilizzati al mondo. I campi di applicazione sono i più svariati: dal gaming alle applicazioni real-time, dai componenti per sistemi operativi ai software di grafica e musica, dalle app per cellulari ai sistemi per supercomputer. Praticamente, C++ è ovunque.

Le variabili[modifica]

Il linguaggio C++ prevede l'utilizzo di variabili, ovvero di valori che possono essere inseriti da tastiera (input) o elaborati dal programma e stampati a video (output). In base alla tipologia di variabile esistono differenti termini utilizzati:

  • int = corrisponde a variabili alfabetiche come parole o lettere
  • float = corrisponde a variabili numeriche con valori decimali
  • char = corrisponde a variabili alfanumeriche basata su codice ASCII

Ciclo If/Else[modifica]

Il ciclo If/Else è un comando utilizzabile per imporre la scelta di una condizione sulla base di due o piu opzioni; alla scelta di una determinata condizione corrisponde una azione univoca.

Ciclo For[modifica]

Il ciclo for è un comando in grado di far ripetere una o più azioni per un numero determinato di volte, definito da una variabile prestabilita. L'utilizzo di tale strumento permette di non dovere ripetere molteplici volte lo stesso comando nel codice e di determinare quante ripetizioni avverranno prima dell'arresto.

Funzioni di testo[modifica]

Nel linguaggio C++ sono presenti due funzioni di testo, una necessaria a ricevere variabili dall'utente (input) ed una necessaria a stampare a video (output), e quindi proporre all'utente una variabile di qualsiasi tipo.

  • cout<<"testo": è la funzione di output che permette di stampare a video ed imporre al programma di mostrare all'utente una determinata variabile.
#include <iostream> // libreria input output 
using namespace std; // uso dello spazio dei nomi standard (per evitare di mettere std:: prima di ogni comando)
int main()
{
   cout << "Hello World!"<<endl; 

   return 0; // valore di ritorno del programma 
}


C++ base description
C++ base description


  • cin>>variabile: dopo aver definito la tipologia, questa funzione di input permette al programma di ricevere una o piu variabili immesse dall'utente.


C++ base description
C++ base description


L'intestazione iniziale[modifica]

Per permettere ad un programma C++ di funzionare correttamente è necessario includere all'inizio di ogni codice


Comando Return 0[modifica]

Il programma[modifica]

Come nasce l'idea[modifica]

Il programma nasce dalla volontà frequente dei giovani di comunicare in un linguaggio segreto, e protetto, conosciuto soltanto dal mittente e destinatario. La scelta di utilizzare il linguaggio C++ è motivata dalla semplicità e dalla rapidità con cui tale codice permette di creare azioni che risulterebbero altrimenti complicate e molto lunghe.

Obiettivi[modifica]

L'obiettivo principale del programma è, tramite l'utilizzo del linguaggio C++, la codifica di parole con due differenti sistemi di criptaggio. Sono state scelti il cifrario di Cesare e il cifrario a trasposizione numerica perché entrambi molto semplici ed intuitivi, sono infatti basati sulla traslazione dell'alfabeto e della conversione delle lettere in numeri secondo uno schema ben definito.

Descrizione[modifica]