Ciclo mientras (while)


CICLOS mientras (while)

 

En C++, un ciclo while se construye usando una instrucción while. La sintaxis de esta instrucción es

CICLOS mientras (while)

 

En C++, un ciclo while se construye usando una instrucción while. La sintaxis de esta instrucción es

La expresión contenida dentro del paréntesis es la condición probada para determinar si se ejecuta la instrucción que sigue al paréntesis. La expresión es evaluada de la misma manera que la contenida en una instrucción Si- entonces; la diferencia está en cómo se usa la expresión. 

 

Como se ha visto, cuando la expresión es verdadera (tiene un valor diferente de cero) en una instrucción si-entonces, la instrucción que sigue a la expresión se ejecuta una vez. En una instrucción mientras, la instrucción que sigue a la expresión se ejecuta en forma repetida hasta que la expresión reconozca un valor diferente de cero.

 

La estructura de repetición mientras (While) está situada al inicio del bucle y las instrucciones internas del bucle se repetirán mientras sea cierta la condición inicial, ello significa que la condición mientras es un ciclo pretest, evaluando la condición antes de su ejecución.

 

Acumulador

Un acumulador es una variable cuyo objetivo es guardar cantidades variables resultantes de sumas sucesivas.  Todo acumulador debe inicializarse, generalmente el valor inicial es 0 que es el elemento neutro de la operación suma. Se representa de la siguiente manera:

 

// Acumulamos el valor de la variable acum con num

acum = acum + num;

 

Ejemplo:

Escriba un algoritmo que lea un conjunto de números enteros desde el teclado y determine la sumatoria de todos esos números, para indicar el final de los datos se debe teclear un número menor que 0. El algoritmo debe reportar la suma total obtenida.

Solución:

Pseudocódigo

Código C++

Diagramas de Nassi-Shneiderman

Los diagramas de Nassi-Shneiderman son una notación alternativa para representar el diagrama de flujo de un proceso.

 

Un diagrama de Nassi-Shneiderman (NS) es un método gráfico para establecer algoritmos. Es un enfoque esquemático para el diseño de algoritmos, pero no es tan voluminoso de dibujar como los diagramas de flujo.


Ejemplo:

Escriba un algoritmo que lea un número entero y determine si es primo.

Solución:

Un número primo es un número entero cuyos únicos divisores son 1 y el número mismo. Para determinar si un número es primo o no basta con verificar si los números menores que él son factores del número, es suficiente probar hasta la raíz cuadrada del número.

Pseudocódigo

Diagrama N-S

Código C++

Contadores

En las estructuras repetitivas,  generalmente requerimos de una variable que llamamos contadorla cual es una variable cuyo valor se irá incrementando, dentro de un ciclo de repetición. Para incrementar el valor de una variable numérica, tenemos que asignarle su valor actual más el incremento que puede ser 1 o cualquier otro valor según se requiera de la siguiente manera:

 

// incrementamos el valor de la variable x en 1

x = x+1;

 

La línea de código anterior debe leerse así: a x le asigno el valor actual de x más 1. Si el valor actual de x es 2, luego de incrementarlo su valor será 3. Los contadores siempre deben tener un valor inicial.

 

Ejemplo:

Calcular la media aritmética de un conjunto de números mayores que cero. Un valor cero como entrada, indicará que se ha alcanzado el final de la serie de números positivos.

Solución:

Para calcular la media aritmética de un conjunto de números se debe obtener la sumatoria de los números leídos y dividir ese resultado entre el número de elementos registrados.

 
Requerimos un acumulador para obtener la sumatoria y un contador que nos suministre el total de datos leídos.  El valor 0 no se registra como dato leído sino como indicador de fin de datos.

 

Pseudocódigo

Diagrama N-S

Código C++

En el ejemplo anterior al teclear un valor 0 (cero), el algoritmo detiene la lectura de datos y continua con la ejecución fuera del ciclo mientras.

 

Se llama interruptor, también centinela, bandera o “flag” a un campo de memoria que puede asumir distintos valores, pero que un valor previamente determinado servirá para indicar que se debe detener la ejecución de un proceso cíclico.