Se volessimo realizzare un programma in C che permetta all’utente di scegliere se far partire dei sottoprogrammi (o modalità diverse del nostro programma) presentando un Menù di scelta, che consenta comunque (se desiderato) di ritornare ogni volta che viene eseguito un sottoprogramma di tornare al menù principale e di effettuare nuovamente la scelta, dovremmo realizzare un Menù Dinamico.

Vi riporto l’esempio di un Menù Dinamico che ho realizzato: questo programma consente la scelta di 5 funzioni (ma se ne possono benissimo aggiungerne altre!). Nel momento in cui l’utente sceglie la funzione che desidera, lo schermo viene pulito e la funzione scelta viene eseguita. Al termine di questa viene lanciata una pausa semplice (cioè il programma si ferma fino a quando l’utente non preme un tasto qualsiasi), dopo di chè lo schermo viene nuovamente pulito e appare all’utente la possibilità di ritornare al Menù Principale o di uscire dal programma. Se l’utente sceglie di si, lo schermo viene nuovamente pulito e il programma ritorna al Menù Principale. Questa operazione si può ripetere all’infinito.

La dichiarazione della libreria stdlib.h serve per le funzioni system() (cls e pause) anche se, se si dispone di un compilatore abbastanza aggiornato, la dichiarazione di questa libreria non è necessaria poichè quelle funzioni sono contenute in stdio.h.

#include <stdio.h>
#include <stdlib.h>

void menu();
/*Elenco dichiarazioni delle funzioni personalizzate*/
void funzione1();
void funzione2();
void funzione3();
void funzione4();
void funzione5();
/*Fine dichiarazione funzioni*/

int main()
{
	menu();
	return 0;
}

void menu()
{
	int scelta;
	char torna;
	do
	{
        system("cls");
		printf("Menu' principale nn");

		/*Inizio elenco delle funzioni disponibili in output*/
		printf(" [1] Funzione1 n");
		printf(" [2] Funzione2 n");
		printf(" [3] Funzione3 n");
		printf(" [4] Funzione4 n");
		printf(" [5] Funzione5 n");
		/*fine elenco funzioni*/

		printf("nEffettua la tua scelta: ");
		scanf("%d",&scelta);

		/*Inizio struttura di controllo per permettere la scelta
		della funzione desiderabile, è possibile inserire altre funzioni*/
		switch (scelta)
		{
			case 1:
				system("cls");
				funzione1();
				system("pause");
				system("cls");
				break;
			case 2:
				system("cls");
				funzione2();
				system("pause");
				system("cls");
				break;
			case 3:
				system("cls");
				funzione3();
				system("pause");
				system("cls");
				break;
			case 4:
				system("cls");
				funzione4();
				system("pause");
				system("cls");
				break;
			case 5:
				system("cls");
				funzione5();
				system("pause");
				system("cls");
			/*Prima di questo commento è possibile inserire altre funzioni*/
                system("cls");
				break;
			default:
				printf("Numero non valido n");
		}
		printf("Si desidera tornare al Menu' Principale?nn");
		printf("[y] Si, desidero tornare al Menu' Principale n");
		printf("[n] No, desidero uscire nn");
		printf("Effettua la tua scelta: ");
		scanf("%s",&torna);
	}
	while (torna!='n');
}

/*Inizio implementazione funzioni personalizzate,
È possibile modificarle o aggiungere altre funzioni*/

void funzione1()
{
     printf("Questa è la funzione 1, è possibile modificarla o aggiungere altre funzioni!nn");
}

void funzione2()
{
     printf("Questa è la funzione 2, è possibile modificarla o aggiungere altre funzioni!nn");
}

void funzione3()
{
     printf("Questa è la funzione 3, è possibile modificarla o aggiungere altre funzioni!nn");
}

void funzione4()
{
     printf("Questa è la funzione 4, è possibile modificarla o aggiungere altre funzioni!nn");
}

void funzione5()
{
     printf("Questa è la funzione 5, è possibile modificarla o aggiungere altre funzioni!nn");
}

About OpenProgrammers

Programmatore per passione. Mi piace condividere qualsiasi idea o informazione utile, per questo motivo ho realizzato il blog.