Cómo aplicar controles especiales bucle en c ++

C ++ define dos comandos especiales de control de flujo conocidos como descanso y continuar. A veces, la condición para la terminación de un bucle se produce a ni el principio ni el final del bucle, pero en el medio. Considere un programa que acumula el número de valores introducidos por el usuario. El bucle termina cuando el usuario introduce un número negativo.

El desafío de este problema es que el programa no puede salir del bucle hasta que el usuario ha introducido un valor, sino que debe salir antes de añadir el valor a la suma.

Para estos casos, C ++ define el descanso mando. Cuando son encontrados, el descanso causas de control para salir del bucle de corriente inmediatamente. El control pasa desde la descanso comunicado a la declaración inmediatamente después de la llave cerrada al final del bucle.

El formato de la descanso comandos es la siguiente:

while (condición) // romper funciona igualmente bien en bucle for {if (alguna otra condición) {BREAK- // salir del bucle}} // el control pasa aquí cuando el programa // se encuentra con el descanso

Armado con esta nueva descanso comando, una solución al problema del acumulador aparece como el programa BreakDemo:

Video: 34. Programación en C - Ciclos o Bucles - Ejercicio suma de números pares

// BreakDemo - entrada de una serie de numbers.// seguir acumulando la suma // de estos números hasta que el usuario // entra un número negativo # include. #incluir #incluir usando espacio de nombres std-int main (int nNumberofArgs, char * pszArgs []) {// entrada del acumulador countint loop = 0-cout lt; lt; "Este programa resume los valores de la usern"lt; lt; "Terminar mediante la introducción de un número negativo"lt; lt; endl - // bucle "por sienpre"para (-) {// buscar a otro numberint nValue = 0-cout lt; lt; "Introduce el siguiente número: "-cin gt; gt; nValue - // si es negativo ... si (nValue lt; 0) {// ... entonces exitbreak -} // ... de lo contrario añadir el número a la accumulatoraccumulator + = nValue -} // ahora que hemos salía el bucle // salida del resultcout acumulada lt; lt; "nEl total es "lt; lt; accumulatorlt; lt; endl - // espera hasta que el usuario esté listo antes de la terminación del programa // para permitir al usuario ver el programa resultscout lt; lt; "Pulse Intro para continuar ..." lt; lt; endl-cin.ignore (10, `n`) - cin.get () - volver 0-}

Después de explicar las reglas para el usuario (introducción de un número negativo para terminar y así sucesivamente), el programa entra en lo que parece una infinita para lazo. Una vez dentro del bucle, BreakDemo recupera un número desde el teclado. Sólo después de que el programa ha leído el número puede probar para ver si el número coincide con los criterios de salida.

Si el número de entrada es negativo, el control pasa a la descanso, haciendo que el programa para salir del bucle. Si el número de entrada es no , saltos de control negativo más de la descanso ordenar a la expresión que resume el nuevo valor en el acumulador. Después de que el programa sale del bucle, se emite el valor acumulado y luego se cierra.

Al realizar una operación en una variable repetidamente en un bucle, asegúrese de que la variable se inicializa adecuadamente antes de entrar en el bucle. En este caso, los ceros del programa acumulador antes de entrar en el bucle donde nValue se añade a la misma.

Video: Tutoriales C++ - Terminaciones anormales de bucle y uso de centinelas

El resultado de un ejemplo de ejecución aparece como sigue:

Este programa resume los valores de la userTerminate mediante la introducción de un numberEnter negativo siguiente número: 1Introduce el siguiente número: 2Introduce el siguiente número: 3Introduce el siguiente número: -1The total es 6Pulse Intro para continuar ...

el parecido continuar comando se utiliza con menos frecuencia. Cuando el programa llega a la continuar comando, inmediatamente se mueve de nuevo a la parte superior del bucle. El resto de los estados en el bucle se tienen en cuenta para la iteración actual.

Video: Tutorial de C – 5. Bucles

El ejemplo siguiente fragmento ignora los números negativos que la entrada de la fuerza del usuario. Sólo un 0 termina esta versión (el programa completo aparece en la página web, ContinueDemo):

while (true) // esto mientras que () tiene el mismo efecto que para (-) {// entrada de un valuecout lt; lt; "Introducir un valor de:"-cin gt; gt; nValue - // si el valor es negativo si ... (nValue lt; 0) {// ... mensaje de salida cout un error ... lt; lt; "Los números negativos no se allowedn"- // ... y volver a la parte superior de la loopcontinue -} // ... seguir para procesar la entrada como normal}
Artículos Relacionados