![]() |
Mòdul
3
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
|
Pràctica
d'ampliació ![]() ![]() |
Menú d'entrada
Freqüentment es fa servir la sentència switch per processar ordres del teclat com un menú. En aquesta pràctica presentarem un exemple d'aquest tipus d'ús.
|
||||
![]() |
Desenvolupament de la pràctica
Definiu un projecte nou anomenat m3p06 i afegiu-li un arxiu de font C/C++ anomenat m3p06.cpp. Escriviu el següent codi:
Explicació del programa En primer lloc s'escriu a la pantalla la descripció de les opcions que l'usuari ha de seleccionar:
També demana a l'usuari que seleccioni una de les opcions abans impreses. L'opció seleccionada es comprova amb el següent bucle:
Aquest bucle va llegint (sense eco, és a dir, sense escriure a la pantalla) caràcters fins que el caràcter entrat sigui una de les opcions vàlides: un número entre 1 i 4 o el caràcter ASCII 27 que correspon a la tecla ESC (reflexioneu per què s'escriu '1' i '4' entre cometes i 27 sense cometes). Quan el programa ha sortit d'aquest bucle, el contingut de la variable sel és una opció vàlida del menú. La sentència switch comprova el valor d'aquesta variable i envia el control de l'execució a la sentència que hi ha a continuació de l'etiqueta case corresponent. Per exemple, si s'ha entrat un 3, la sentència que s'executa és una crida a la funció opcio3(). Una vegada completada la funció opcio3(), el control de l'execució torna al mateix lloc on es va cridar la funció i es troba una sentència break que fa un salt incondicional al final de la sentència switch que, en aquest cas, coincideix amb el final del programa. En aquesta pràctica s'ha mostrat el lloc on s'ha de posar l'etiqueta default, encara que, tal i com s'explica al comentari, no és necessari en aquest cas, ja que es fan comprovacions suficients per garantir que el programa mai passarà per aquí. |