Imparare a programmare in C++ – #11 – Creare un BOT

Imparare a programmare in C++ - Creare un BOT

Imparare a programmare in C++ – #11 – Creare un BOT: Sviluppo di un BOT che risponde in base al testo inserito dall’utente.

Tempo di lettura stimato: 4 minuti

Imparare a programmare in C++ – #11 – Creare un BOT

In questo undicesimo tutorial andremo a sviluppare insieme un BOT base con alcune semplici funzionalità.

Il BOT sarà in grado in base al testo inserito dall’utente di rispondere di conseguenza.

Lo scopo principale di questo tutorial è quello di migliorare la comprensione della Logica di Programmazione, seguire questo progetto aiuta a capire come funziona un programma e migliora il modo in cui si scrive il proprio codice.

Esistono diverse tipologie di BOT, alcune molto complesse in grado di eseguire operazioni in autonomia.

Il BOT che andremo a sviluppare in questo tutorial è di livello base, la sua funzione è quella di restare in attesa di un comando dall’utente e mostrare una risposta.

Questa lezione può essere considerata come un riepilogo di quanto visto fino ad ora, andremo infatti ad utilizzare molti degli elementi visti nelle dieci lezioni precedenti.

Iniziamo lo sviluppo

Per un software di questo tipo è importante che il programma resti sempre in attesa, e che quindi non si possa chiudere in automatico al termine di qualche operazione.

Per fare ciò andremo quindi ad inserire tutto il codice all’interno di un Loop di tipo While.

In questo loop andremo a controllare il valore di una variabile di testo, e ci assicureremo di rimanere all’interno del loop finchè l’utente non scriverà la parola ESCI.

L’importanza delle condizioni

Programmi di questo fino fanno un largo uso di If…Else If ed Else.

Infatti il programma dovrà continuamente leggere il testo scritto dall’utente e quando riconosce il testo che ci interessa esegue l’operazione associata.

Le Funzioni

Teoricamente non sarebbe necessario utilizzare le funzioni, almeno per il BOT di esempio, ma è decisamente consigliato farlo.

Separare ogni operazione in una funzione a se può essere utile principalmente per 2 motivi:

  • Il testo sarà più leggibile
  • Sarà più facile individuare e correggere eventuali errori

Argomenti trattati

Come anticipato, questo tutorial serve da riepilogo, per approfondire la conoscenza degli argomenti precedenti, quindi gli elementi usati sono:

  • Input ed Output (cout, cin)
  • While
  • Il…Else If…Else
  • Funzioni e Procedure
  • Variabili
  • Array

Codice completo del BOT

#include <iostream>
#include <ctime>
using namespace std;

void UscitaProgramma()
{
	cout << "Ciao, e' stato un piacere parlare con te." << endl;
}

void ListaOperazioni()
{
	cout << "I comandi che riconosco sono:" << endl;
	cout << "DATA: Visualizza data ed ora attuali." << endl;
	cout << "NOME: Chiede di presentarti." << endl;
	cout << "BARZELLETTA: Racconta una barzelletta." << endl;
	cout << "ESCI: Per chiudere la conversazione." << endl;
}

void ComandoSconosciuto()
{
	cout << "Mi dispiace ma non ho capito cosa chiedi." << endl;
	cout << "Scrivi COMANDI per la lista dei miei comandi." << endl;
}

void ComandoData()
{
	time_t DataCorrente = time(0);
	char* StringaData = ctime(&DataCorrente);
	cout << "La data di oggi e': " << StringaData << endl;
}

string NomeUtente = "";
void ComandoNome()
{
	if (NomeUtente == "")
	{
		cout << "Ciao, non conosco il tuo nome, puoi inserirlo?" << endl;
		cin >> NomeUtente;
		cout << "Ciao " << NomeUtente << " e' un piacere conoscerti." << endl;
	}
	else
	{
		cout << "Ciao " << NomeUtente << " e' bello rivederti." << endl;
	}
}

int NumeroBarzelletta = 0;
void ComandoBarzellette()
{
	string Barzellette[5] = {"Barzelletta 1", "Barzelletta 2", "Barzelletta 3", "Barzelletta 4", "Barzelletta 5"};
	if (NumeroBarzelletta <= 4)
	{
		cout << Barzellette[NumeroBarzelletta] << endl;
		NumeroBarzelletta = NumeroBarzelletta + 1;
	}
	else
	{
		NumeroBarzelletta = 0;
		cout << Barzellette[NumeroBarzelletta] << endl;
	}
	
}

int main() {
	string Comando = "";
	cout << "Ciao, Io sono BOT, come posso aiutarti?" << endl;
	cout << "Scrivi COMANDI per la lista dei miei comandi." << endl;
	while (Comando != "ESCI")
	{
		cin >> Comando;
		if (Comando == "COMANDI")
		{
			ListaOperazioni();
		}
		else if (Comando == "DATA")
		{
			ComandoData();
		}
		else if (Comando == "NOME")
		{
			ComandoNome();
		}
		else if (Comando == "BARZELLETTA")
		{
			ComandoBarzellette();
		}
		else if (Comando == "ESCI")
		{
			UscitaProgramma();
		}
		else
		{
			ComandoSconosciuto();
		}
	}
	return 0;
}

Video

Nel video puoi seguire l’intero tutorial e sviluppare insieme a me questo BOT.