Haz mientras ejemplos. Ciclos. Operadores de bucle para, mientras, hacer...mientras

hacer bucles while y foreach

hacer bucle . . mientras

hacer...mientras bucle en C# esta es una versión de while con una verificación posterior a la condición. Esto significa que la condición del bucle se verifica después de ejecutar el cuerpo del bucle. Por lo tanto, los bucles do... while son útiles en situaciones en las que un bloque de instrucciones debe ejecutarse al menos una vez. La siguiente es la forma general de una declaración de bucle do- while:

hacer (operadores; ) mientras (condición);

Si solo hay un operador, las llaves en esta forma de notación son opcionales. Sin embargo, a menudo se utilizan para hacer que la construcción do- while sea más legible y no deben confundirse con la construcción del bucle while. El ciclo do- while se ejecuta mientras la expresión condicional sea verdadera. Un ejemplo del uso de un bucle do- while es el siguiente programa, que calcula el factorial de un número:

Usando el Sistema; usando System.Collections.Generic; usando System.Linq; usando System.Text; espacio de nombres ConsoleApplication1 ( clase Programa ( static void Main(string args) ( try ( // Calcular el factorial de un número int i, resultado = 1, num = 1; Console.WriteLine("Ingrese un número:"); i = int .Parse(Console .ReadLine()); Console.Write("\n\nFactorial (0) = ", i); hacer (resultado *= num; num++; ) mientras (num)

bucle foreach

bucle foreach sirve para el acceso cíclico a elementos de una colección, que es un grupo de objetos. C# define varios tipos de colecciones, cada una de las cuales es una matriz. La siguiente es la forma general de la declaración de bucle foreach:

declaración foreach (escriba loop_variable_name en la colección);

Aquí escriba nombre_variable_bucle denota el tipo y nombre de la variable de control de bucle que recibe el valor del siguiente elemento de la colección en cada paso del bucle foreach. Y colección denota una colección consultada cíclicamente, que en adelante representa una matriz. Por lo tanto, el tipo de variable de bucle debe coincidir con el tipo de elemento de la matriz. Además, un tipo puede indicarse mediante la palabra clave var. En este caso, el compilador determina el tipo de variable de bucle en función del tipo de elemento de la matriz. Esto puede resultar útil para trabajar con ciertos tipos de consultas. Pero, por regla general, el tipo se especifica explícitamente.

La declaración de bucle foreach funciona de la siguiente manera. Cuando comienza el ciclo, el primer elemento de la matriz se selecciona y se asigna a la variable del ciclo. En cada paso de iteración posterior, el siguiente elemento de la matriz se selecciona y se almacena en una variable de bucle. El ciclo finaliza cuando se seleccionan todos los elementos de la matriz.

Un bucle foreach le permite recorrer cada elemento de una colección (un objeto que representa una lista de otros objetos). Técnicamente, para que algo se considere una colección, debe ser compatible con la interfaz IEnumerable. Ejemplos de colecciones incluyen matrices de C#, clases de colección del espacio de nombres System.Collection y clases de colección personalizadas.

Los bucles se utilizan para repetir fragmentos de código una y otra vez. La capacidad de repetir ciertos fragmentos de código es una de las tareas principales y al mismo tiempo importantes que debe resolver un programador. La mayoría de los programas o sitios web utilizan bucles, por ejemplo, para mostrar información de noticias o anuncios. Es decir, en tales tareas es necesario realizar constantemente operaciones de lectura y escritura, y para no duplicar el mismo código, los bucles acuden al rescate. Los bucles son bastante sencillos de declarar en código, pero realizan tareas complejas con una simple repetición.

Para comenzar a aprender sobre bucles, asegúrese de comprender bien el concepto en el lenguaje de programación C. Porque esto será vital en el uso de ciclos, porque en los ciclos, al igual que en los ciclos, hay expresiones condicionales. Hay tres tipos de bucles en lenguaje C: for, while y do while. Cada uno de ellos tiene sus propias aplicaciones específicas. Todos ellos se describen a continuación.

El bucle más utilizado es el bucle for, su estructura se muestra a continuación:

For (/*inicializando una variable; condición; cambiando el valor de una variable*/) ( // cuerpo del bucle (aquí está el código que se repetirá) )

La inicialización de variables le permite declarar una variable y asignarle un valor, o asignar un valor a una variable existente. En segundo lugar, el valor de esta variable le dice al programa si la condición del bucle es verdadera o falsa. Y mientras la condición del bucle sea verdadera, el bucle debería continuar repitiéndose. La variable de control debe cambiarse de alguna manera; de lo contrario, el bucle será interminable; por ejemplo, puede actualizarlo así: i++, i = i + 2, o incluso i = random(5). Tenga en cuenta que cada sección del encabezado del bucle está separada por un punto y coma, lo cual es muy importante. También tenga en cuenta que cada una de las secciones puede estar vacía, aunque el punto y coma aún debería estar ahí. Si la condición no está vacía, se evalúa como verdadera y el bucle se ejecutará hasta que algo haga que la condición del bucle sea falsa. Veamos un ejemplo sencillo del uso de un bucle for.

#incluir int main() ( int i; /* El bucle se ejecutará hasta que i< 10, при этом после каждой итерации переменная i будет инкрементироваться(увеличиваться на 1)*/ for (i = 0; i < 10; i++) { /* Имейте ввиду что условие проверяется перед каждым повторением, то есть работа цикла остановится когда переменная i будет равна 10*/ printf("%d\n", i); } getchar(); }

En realidad, el resultado del programa:

0 1 2 3 4 5 6 7 8 9

Este programa es un ejemplo muy simple del uso de un bucle. A la variable i se le asigna cero, y mientras i es menor que 10, el valor de la variable i se imprime en la pantalla, después de lo cual se agrega uno a la variable i y todo se repite nuevamente hasta que la condición se vuelve falsa. Tenga en cuenta que el valor de la variable i se incrementa después de que el código en el cuerpo del bucle se ejecuta por primera vez.

El bucle while es un bucle muy simple, aquí está su estructura:

Mientras (/*condición*/) ( // cuerpo del bucle - aquí está el código que debe repetirse)

El cuerpo del bucle comienza a ejecutarse si la condición del bucle es verdadera. La condición es una expresión booleana, como x == 1 o x! = 7 (x no es igual a 7). Es decir, la condición puede ser absolutamente cualquier cosa: cualquier combinación de expresiones lógicas. Aquí hay un ejemplo de una condición compuesta: x == 3 || x > 10, esta condición será verdadera si x es igual a tres o x es mayor que 10. Tenga en cuenta que while tiene una sección de inicialización o una sección de modificación de variable controlada, por lo que antes de usar este bucle, primero debe declarar la variable que Se probará en el bucle de condición y en el cuerpo del bucle se cambiará el valor de esta variable. En realidad, veamos un ejemplo simple usando un bucle while:

#incluir int main() ( int var = 0; /* asegúrese de declarar la variable primero */ while (var< 10) { /* пока значение переменной var меньше 10 */ printf("%d\n", var); var++; /* обновляем значение в переменной var(если этого не делать, то условие цикла всегда будет истинным, тогда цикл будет - бесконечным) */ } getchar(); }

Entonces miramos otro ejemplo de uso de bucles y, como puede ver, no hay nada complicado en este ejemplo. Imagínese que el bucle siempre comienza a repetir el código que está en el cuerpo del bucle. Tan pronto como se ejecuta la última declaración en el cuerpo del bucle, se verifica la condición del bucle. Si la condición sigue siendo verdadera, entonces el bucle continúa funcionando, y si la condición es falsa, entonces se sale del bucle.

Hay otro tipo de bucle: hazlo mientras. Este bucle es útil cuando necesita ejecutar el código al menos una vez. Veamos su estructura:

Hacer (//cuerpo del bucle) while (/*condición*/);

La estructura es muy simple, como puede ver, la condición está al final del ciclo y, en consecuencia, la condición se verificará después de ejecutar el código en el cuerpo del ciclo. Tenga en cuenta que la condición se prueba al final del ciclo, no al principio, por lo que el bloque de código en el cuerpo del ciclo se ejecutará al menos una vez. Si la condición es verdadera, el bucle vuelve al principio y lo ejecuta nuevamente. Un bucle do while es casi lo mismo que un bucle while, excepto que se garantiza que el cuerpo del bucle se ejecutará al menos una vez. El bucle while primero verifica la condición y luego ejecuta el bloque de código en el cuerpo, si la condición es verdadera, por supuesto, mientras que el bucle do while primero ejecuta el código en el cuerpo del bucle y luego verifica la condición, y si es cierto, entonces continúa ejecutándose. A continuación se muestra un ejemplo del bucle do while:

#incluir int main() ( int i = 0; do ( /* Imprime un mensaje y sale*/ printf("¡Hola! Estoy haciendo un bucle while\n"); ) while (i != 0); getchar() ; )

Tenga en cuenta el punto y coma al final del bucle; siempre debe colocar ese punto y coma como en el ejemplo anterior. Muy a menudo este punto y coma no se incluye, lo que provoca un error de compilación. Sólo este bucle termina con un punto y coma; el resto de los bucles no tienen nada al final excepto el paréntesis de cierre. Tenga en cuenta que en el ejemplo anterior, este bucle se ejecutará una vez porque primero se imprime el mensaje y luego se verifica la condición del bucle.

A menudo, al programar tareas, es necesario que la misma secuencia de comandos se ejecute varias veces. Este proceso se llama cíclico. Un algoritmo en el que una determinada secuencia de comandos se repite varias veces con nuevos datos de entrada se denomina cíclico.

Para implementar un proceso cíclico, los lenguajes de programación utilizan bucles. El lenguaje de programación C/C++ tiene operadores de bucle fáciles de usar.

2. Tipos de operadores de bucle en C++

Hay 3 tipos de operadores de bucle en C++:

  • para bucle;
  • bucle while con condición previa;
  • hacer...mientras bucle con poscondición.

Cada uno de los operadores de bucle tiene sus propias características de aplicación. Cualquiera de las declaraciones de bucle anteriores se puede reemplazar por otra.

3. Para bucle. Forma general de la declaración de bucle for

En C++, el bucle for puede tener una implementación y aplicación muy amplia. Un bucle for también se denomina bucle con un parámetro.

La forma general de la declaración de bucle for es:

para ( inicialización ; expresión ; aumentar ) { // ... }
  • inicialización – una operación de asignación en la que se establece el valor inicial de una variable de bucle. Esta variable es un contador que controla el funcionamiento del bucle. El número de variables que controlan el bucle for puede ser dos o más;
  • expresión– una expresión condicional que verifica el valor de una variable de bucle. En esta etapa, se determina la ejecución posterior del ciclo;
  • aumentar– determina cómo cambiará el valor de la variable del bucle después de cada iteración.

El bucle for se ejecuta hasta que el valor expresión es igual a verdadero.

Tan pronto como el valor de la expresión se vuelve falso, el bucle detiene la ejecución y se ejecuta la declaración que sigue al bucle for.

4. Ejemplos de uso del operador de bucle for Ejemplo 1.

Encuentra la suma de todos los números enteros del 100 al 300.// suma de números del 100 al 300<=300; i++) sum = sum + i; // sum = 40200

suma interna; ent yo; suma = 0; para (yo = 100; yo Ejemplo 2. Dado un numero natural norte

. Calcula la cantidad:

Un fragmento de código que resuelve este problema.// s = 1 + 1/2 + 1/3 + ... + 1/n int n; flotador s = 0; ent i;// ingresa el valor n<=n; i++) s = s + 1.0/i; // s = 2.08333

norte = 4; para (yo = 1; yo

En este ejemplo, para obtener un valor real, en lugar del número 1 (tipo entero), se ingresa el número 1.0 (tipo real). Operación de división

da un resultado real. Ejemplo 3.

. Calcula la cantidad:

Calcular suma

flotador; ent yo; s = 0; para (i=50; i>=1; i--) s = i + Math::Sqrt(s); s = Matemáticas::Sqrt(s); // s = 1,7579 En este ejemplo, el valor del contador i

en el bucle for cambia en orden descendente. Este valor se reduce en 1 en cada iteración del ciclo. Al resolver este tipo de problemas, el valor del contador de bucle debe cambiar del último al primer valor. En este caso, de 50 a 1.

Los cálculos utilizaron la función Sqrt() de la biblioteca Math.

5. ¿Qué opciones existen para implementar un bucle for?

A un bucle for le puede faltar alguno de los elementos del encabezado del bucle:

  • inicialización;
  • expresión;
  • crecimiento

Ejemplo un operador de bucle for que tiene 2 variables de control. Encuentra los significados del producto:

D = (1 + cos(9)) (2 + cos(8)) … (9 + cos(1))

. Calcula la cantidad:

// D = (1 + cos(9))*(2 + cos(8))* ... *(9 + cos(1)) int i, j; flotador d; d = 1; para (i = 1, j = 9; yo<=9; i++, j--) d = d * (i + Math::Cos(j));

En el fragmento de código anterior, el bucle for utiliza dos variables que cambian su valor ( En este ejemplo, el valor del contador , j ).

6. Mientras bucle. forma general

El bucle while se denomina bucle de condición previa. La forma general de un bucle while es la siguiente:

mientras ( expresión ) { // secuencia de operadores // ... }

Dónde expresión– cualquier expresión válida en C++. La secuencia de declaraciones se ejecuta hasta que se cumpla el condicional. expresión devuelve verdadero. Tan pronto como expresión se vuelve falso, la ejecución del ciclo while finaliza y el control se transfiere a la siguiente instrucción después del ciclo while.

7. Ejemplos de uso del operador de bucle while

4. Ejemplos de uso del operador de bucle for Dado un número real a. Encuentra el más pequeño Dado un numero natural, en el cual

Consideraciones. Al principio el valor de la suma es menor que el valor a. A medida que pasa cada iteración, el valor de la suma aumenta gradualmente. En algún momento (en algún valor Dado un numero natural) esta cantidad será mayor que el valor a. Este momento (es decir Dado un numero natural) necesita ser arreglado. para calcular Dado un numero natural, es conveniente un bucle while.

. Calcula la cantidad:

flotar un; int n; suma flotante; //ingresa el valor a a = 2,2; norte = 1; suma = 1,0/n; mientras (suma< a) { n++; sum = sum + 1.0/n; } // n = 5; sum = 2.283334

suma interna; ent yo; suma = 0; para (yo = 100; yo Se da un número natural. Determina el número de dígitos 3 que contiene.

. Calcula la cantidad:

// número de dígitos 3 en número int n; // número natural dado intk; // número de dígitos 3 en número int t, d; // variables adicionales int n; flotador s = 0; ent i; norte = 12343; t = norte; // hacer una copia de n k = 0; mientras (t>0) ( d = t % 10; //seleccionamos el último dígito si (d == 3) k++; t = t/10;// reducir la profundidad de bits del número

) // k = 2

En este ejemplo, el valor del número original se dividirá por 10 en cada iteración. Por lo tanto, la profundidad de bits del número disminuirá. En cada iteración, utilizando la operación % del lenguaje C++, se toma el resto de la división entre 10, es decir, se determina el último dígito del número. Si este dígito es 3, entonces el contador k se incrementa en 1.

8. Forma general del operador de bucle do… while

Se recomienda utilizar el bucle do... while en los casos en que la iteración deba realizarse al menos una vez. A diferencia de los bucles for y while, en un bucle do... while la condición se comprueba al salir del bucle (no al entrar en el bucle). El bucle do... while también se denomina bucle de poscondición.

La forma general de la instrucción del bucle do... while es: // secuencia de operadores hacer ( expresión );

Dónde expresión– una expresión condicional que verifica el valor de una variable de bucle. En esta etapa, se determina la ejecución posterior del ciclo.

Las llaves en este bucle son opcionales.

El ciclo funciona de la siguiente manera. Primero, se ejecuta el cuerpo del bucle. Luego se verifica el valor expresión(expresión condicional). si el valor expresión es verdadero (verdadero), el cuerpo del bucle se ejecuta nuevamente. Una vez que el valor expresión se vuelve falso, la ejecución del bucle se detiene

9. Ejemplos de uso del operador de bucle do… while

Ejemplo. Usando un bucle do… while, encuentre el valor de la suma:

S = 1 + 3 +… + 99

. Calcula la cantidad:

// s = 1 + 3 + ... + 99 int t; int s; s = 0; t = 1; hacer ( s = s + t; t = t + 2; ) mientras (t<=99); // s = 2500
10. Bucles anidados. Ejemplos de uso

Los bucles anidados se pueden utilizar, por ejemplo, cuando se trabaja con matrices bidimensionales (multidimensionales) (poner a cero una matriz, calcular sumas, productos, etc.).

4. Ejemplos de uso del operador de bucle for Calcular producto

D = 1 · (1 + 2) · (1 + 2 + 3) · … · (1 + 2 + … + 9)

. Calcula la cantidad:

// D = 1 * (1+2) * (1+2+3) * ... * (1+2+...+9) flotador d; // el resultado es el producto int i, j; // contadores de bucle int s; // variable adicional d = 1; para (yo = 1; yo<=9; i++) { s = 0; for (j = 1; j<=i; j++) s = s + j; d = d * s; } // d = 2.571912E+09

En este ejemplo, en un bucle for con un contador En este ejemplo, el valor del contador ejecutando un bucle for con un contador j .

suma interna; ent yo; suma = 0; para (yo = 100; yo Dada una matriz bidimensional de números enteros de tamaño 6x9. Escriba el valor 5 en todos los elementos de la matriz.

entero M; // matriz bidimensional de números enteros int i, j; para (i=0; yo<6; i++) for (j=0; j<9; j++) M[i][j] = 5;
11. ¿Qué es un bucle sin fin?

Un bucle infinito es un bucle que nunca termina.

Al programar procesos cíclicos, el programador puede escribir por error un código de bucle que nunca termina.

Además, a veces desea que los bucles contengan un código de terminación especial mediante una declaración de interrupción.

4. Ejemplos de uso del operador de bucle for Bucle infinito con declaración for:

para (; ;) ( // secuencia de operadores C++. Declaración de selección de interruptor

Etiquetas: Ciclos C. Bucles C. Bucle con poscondición. Bucle con condición previa. Ciclo con un escribano. mientras. hazlo mientras. para. romper. continuar

Introducción. Bucles con condición previa.

Al resolver problemas prácticos, surge constantemente la necesidad de repetir una acción un número determinado de veces, o hasta que se logre una determinada condición. Por ejemplo, mostrar una lista de todos los usuarios, colocar en mosaico el plano con una textura, realizar cálculos en cada elemento de la matriz de datos, etc. En C, se utilizan tres tipos de bucles para estos fines: con condición previa, poscondición y ciclo para con un contador (aunque este es un nombre condicional, porque puede que no haya un contador).

Cualquier bucle consta de un cuerpo y de comprobar la condición bajo la cual se debe terminar este bucle. El cuerpo del bucle es el conjunto de instrucciones que deben repetirse. Cada repetición del bucle se llama iteración.

Consideremos un bucle con una condición previa.

Ent i = 0; mientras(yo< 10) { printf("%d\n", i); i++; }

Este bucle se ejecuta mientras la condición especificada después de la palabra clave while sea verdadera. El cuerpo del bucle consta de dos líneas, una imprime un número y la segunda lo cambia. Obviamente este bucle se ejecutará 10 veces y se mostrará
0
1
2
3
y así hasta las 9.

Es muy importante que la condición para salir del ciclo se cumpla en algún momento; de lo contrario, se producirá un ciclo y el programa no se completará. Por ejemplo

Ent i = 0; mientras(yo< 10) { printf("%d\n", i); }

Este bucle no cambia la variable i, que se utiliza para determinar la condición de parada, por lo que el bucle no finalizará.

Ent i = 0; mientras (i > 0) ( printf("%d\n", i); i++; )

En este programa, el bucle, por supuesto, finalizará, pero debido a una acción incorrecta, se ejecutará muchas más de 10 veces. Dado que C no monitorea el desbordamiento de la variable, deberá esperar hasta que la variable se desborde y sea menor que cero.

Ent i; mientras(yo< 10) { printf("%d\n", i); i++; }

Este ejemplo tiene un comportamiento indefinido. Dado que la variable i no se inicializa de antemano, almacena basura, un valor desconocido de antemano. Con diferentes contenidos de la variable i, el comportamiento cambiará.

Si el cuerpo del bucle while contiene una declaración, entonces se pueden omitir las llaves.

Ent i = 0; mientras(yo< 10) printf("%d\n", i++);

Aquí incrementamos la variable i cuando llamamos a la función printf. Se debe evitar este estilo de codificación. La ausencia de llaves, especialmente al inicio del entrenamiento, puede provocar errores. Además, el código es menos legible y los paréntesis adicionales no inflan mucho los listados.

Bucles con poscondiciones.

Un bucle de poscondición se diferencia de un bucle while en que la condición se verifica después de ejecutar el bucle, lo que significa que el bucle se repetirá al menos una vez (a diferencia de un bucle while, que puede no ejecutarse en absoluto). Sintaxis de bucle

Hacer (cuerpo del bucle) mientras (condición);

El ejemplo anterior usando un bucle do se vería así

Ent i = 0; hacer ( printf("%d\n", i); i++; ) mientras(i< 10);

Veamos un ejemplo del uso de un bucle con una poscondición y una precondición. Supongamos que necesitamos integrar una función.

Arroz. 1 Integración numérica de una función∫ a b f x d x

Una integral es una suma de infinitesimales. Podemos representar la integral como una suma y simplemente reemplazar valores infinitesimales con valores pequeños.

∫ a b f x d x = ∑ i = a b f i h

La fórmula muestra que en realidad hemos dividido el área debajo de la gráfica en muchos rectángulos, donde la altura del rectángulo es el valor de la función en el punto y el ancho es nuestro paso. Sumando las áreas de todos los rectángulos, obtenemos el valor de la integral con cierto error.

rectángulos izquierdos" src="/images/c_loop_rectangles_left.png" alt="Integración numérica de una función por el método
rectángulos izquierdos"> Рис. 2 Численное интегрирование функции методом!}
rectángulos izquierdos

Sea la función requerida x 2 . Necesitaremos las siguientes variables. Primero, un acumulador de sumas para almacenar la integral. En segundo lugar, los límites izquierdo y derecho de a y b, en tercer lugar, el paso h. También necesitamos el valor actual del argumento de la función x.

Para encontrar la integral es necesario partir de a a b con algunos pasos h, y suma a la suma el área del rectángulo con lados f(x) Y h.

#incluir #incluir int main() (doble suma = 0.0; doble a = 0.0; doble b = 1.0; doble h = 0.01; doble x = a; while (x< b) { sum += x*x * h; x += h; } printf("%.3f", sum); getch(); }

El programa genera 0,328.

∫ 0 1 x 2 d x = x 3 3 |

0 1 = 1 3 ≈ 0,333

Si miras la gráfica, puedes ver que cada vez encontramos el valor de la función en el punto izquierdo. Por lo tanto, este método de integración numérica se llama método del rectángulo izquierdo. Del mismo modo, puedes tomar el valor correcto. Entonces será el método del rectángulo derecho.< b) { x += h; sum += x*x * h; } mientras(x
rectángulos derechos" src="/images/c_loop_rectangles_right.png" alt="Integración numérica de una función por el método"> Рис. 3 Численное интегрирование функции методом!}
rectángulos derechos" src="/images/c_loop_rectangles_right.png" alt="Integración numérica de una función por el método

rectángulos derechos

La cantidad en este caso será igual a 0,338. El método de los rectángulos izquierdo y derecho no es muy preciso. De hecho, hemos aproximado la gráfica suave de una función que aumenta monótonamente con un histograma. Si piensas un poco, entonces la aproximación se puede realizar no solo sumando rectángulos, sino también sumando trapecios.
trapecio" src="/images/c_loop_integral_trapezium.png" alt="Integración numérica de una función por el método"> Рис. 4 Численное интегрирование функции методом!}
trapecio" src="/images/c_loop_integral_trapezium.png" alt="Integración numérica de una función por el método

trapezoide

La aproximación trapezoidal es en realidad una aproximación por partes mediante curvas de primer orden (ax+b). Conectamos puntos en una gráfica usando segmentos de recta. Puedes hacerlo más complicado conectando los puntos no con segmentos, sino con partes de una parábola, entonces este será el método de Simpson. Si complicamos aún más las cosas, llegaremos a la interpolación spline, pero esa es otra conversación muy larga.

Volvamos a nuestras ovejas. Consideremos 4 ciclos.< 3) { printf("%d ", i); } int i = 0; while (++i < 3) { printf("%d ", i); } int i = 0; do { printf("%d ", i); } while(i++ < 3); int i = 0; do { printf("%d ", i); } while(++i < 3);

Ent i = 0; mientras (i++

A menudo sucede que necesitamos salir del bucle sin esperar a que se levante una bandera o que cambie el valor de una variable. Para estos fines se utiliza el operador. romper lo que hace que el programa salga del bucle actual.

Resolvamos un problema simple. El usuario ingresa números hasta ingresar el número 0, después de lo cual se muestra el mayor ingresado. Hay un problema. No se sabe cuántos números ingresará el usuario. Por tanto, crearemos un bucle infinito y saldremos de él utilizando el operador romper. Dentro del bucle recibiremos datos del usuario y seleccionaremos el número máximo.

#incluir #incluir int main() ( int num = 0; int max = num; printf("Para salir, ingresa 0\n"); /*bucle sin fin*/ while (1) ( printf("Por favor, ingresa el número: "); scanf("%d", &num); /*condición para salir del bucle*/ if (num == 0) ( break; ) if (num > max) ( max = num; ) ) printf("el número máximo era % d ", máx); getch(); )

Permítanme recordarles que no existe un tipo booleano especial en C. En su lugar se utilizan números. Cero es falso, todos los demás valores son verdaderos. El bucle while(1) se ejecutará para siempre. El único punto de salida es la condición.

Si (núm == 0)

En este caso salimos del bucle con romper; Para empezar, establecemos 0 como máximo. El usuario ingresa un número, después de lo cual verificamos si es cero o no. Si no es cero, lo comparamos con el máximo actual.

Los bucles infinitos se utilizan con bastante frecuencia, ya que los datos de entrada no siempre se conocen de antemano o pueden cambiar mientras se ejecuta el programa.

Cuando necesitamos omitir el cuerpo del bucle, pero continuar ejecutándolo, usamos el operador continuar. Un ejemplo sencillo: el usuario introduce diez números. Encuentra la suma de todos los números positivos que ingresó.

#incluir #incluir int main() ( int i = 0; int positivCnt = 0; suma flotante = 0.0f; entrada flotante; printf("Ingrese 10 números\n"); while (i< 10) { i++; printf("%2d: ", i); scanf("%f", &input); if (input <= 0.0) { continue; } sum += input; positiveCnt++; } printf("Sum of %d positive numbers = %f", positiveCnt, sum); getch(); }

El ejemplo parece algo descabellado, aunque en general refleja el significado del operador continuar. En este ejemplo la variable positivoCnt es un contador de números positivos, suma cantidad, y aporte- variable temporal para ingresar números.

Aquí hay otro ejemplo. Es necesario que el usuario ingrese un número entero mayor que cero y menor que 100. Hasta que se ingrese el número requerido, el programa continuará sondeando.

Hacer ( printf("Por favor, ingrese el número: "); scanf("%d", &n); if (n< 0 || n>100) ( printf("número incorrecto, inténtalo de nuevo\n"); continuar; ) else ( break; ) ) while (1);

para bucle

Uno de los más utilizados es el bucle contador. para. Su sintaxis

Para(<инициализация>; <условие продолжения>; <изменение счётчика>){ <тело цикла> }

Por ejemplo, imprimamos los cuadrados de los primeros cien números.

Ent i; para (yo = 1; yo< 101; i++) { printf("%d ", i*i); }

Una de las mejores cosas del bucle for es que puede funcionar con más que solo números enteros.

Número flotante; para (núm = 5.3f; núm > 0f; núm -= 0.2) ( printf("%.2f ", núm); )

Este bucle imprimirá números del 5,3 al 0,1. Es posible que al bucle for le falten algunos "bloques" de código, como la inicialización faltante, las pruebas (luego el bucle se vuelve infinito) o el cambio del contador. Aquí hay un ejemplo con una integral implementada usando un contador. para

#incluir #incluir int main() ( doble suma = 0.0; doble a = 0.0; doble b = 1.0; doble h = 0.01; doble x; for (x = a; x< b; x += h) { sum += x*x * h; } printf("%.3f", sum); getch(); }

Veamos un fragmento de código.

Doble x; para (x = a; x< b; x += h) { sum += x*x * h; }

Se puede cambiar así

Doble x = a; para (; x< b; x+=h) { sum += x*x*h; }

Además, utilizando el operador romper, puedes eliminar la condición y escribir

Doble x; para (x = a;; x += h)( si (x>b)( descanso; ) suma += x*x*h; )

Doble x = a; para (;;)( si (x > b)( romper; ) suma += x*x*h; x += h; )

Además, utilizando el operador ",", puedes mover algunas de las acciones

Doble x; para (x = a; x< b; x += h, sum += x*x*h) ;

NOTA: Aunque es posible hacer esto, ¡no lo haga! Esto perjudica la legibilidad del código y provoca errores sutiles.

Resolvamos algún problema práctico más difícil. Tengamos una función f(x). Encontremos el máximo de su derivada en el segmento. ¿Cómo encontrar la derivada de una función numéricamente? Obviamente, por definición). La derivada de una función en un punto es la tangente del ángulo tangente.

F x ′ = d x d y

Tomemos un punto en la curva con coordenadas (x; f(x)), avancemos un paso h hacia adelante, obtenemos el punto (x+h, f(x+h)), entonces la derivada será

D x d y = f (x + h) - f x (x + h - x) = tan α

Es decir, la relación entre un pequeño incremento de una función y un pequeño incremento de un argumento. Un lector atento puede preguntarse por qué avanzamos en una función y no retrocedemos. Bueno volvamos

D x d y = f x - f (x - h) h = tan β

Tomando la media de estos dos valores, obtenemos

F(x+h)-f(x-h)2h

En general, ahora la tarea se vuelve trivial: vamos desde el punto a al punto b y encuentre el valor mínimo de la derivada, así como el punto en el que la derivada toma este valor. Para resolverlo necesitaremos, como en el problema de la integral, variables para los límites del área de búsqueda. a Y b, valor actual incógnita y paso h. Además, se requiere el valor máximo. valormax y coordinar máxX este valor máximo. Para trabajar, toma la función x sen x

#incluir #incluir #incluir int main() ( doble a = 0; doble b = 3.0; doble h = 0.001; doble h2 = h * 2.0; doble maxVal = a*sin(a); doble maxX = a; doble curVal; doble x; // Recorremos toda la región desde a hasta b // y buscamos el máximo de la primera derivada // Usa la función x*sin(x) para (x = a; x< b; x += h) { curVal = ((x+h)*sin(x+h)-(x-h)*sin(x-h))/h2; if (curVal >maxVal) ( maxVal = curVal; maxX = x; ) ) printf("valor máximo = %.3f en %.3f", maxVal, maxX);

obtener(); )

En la salida, el programa produce un valor máximo = 1,391 en 1,077

La solución numérica da los mismos resultados (con error) que nuestro programa.

Bucles anidados

#incluir #incluir #incluir Veamos un ejemplo en el que los bucles están anidados unos dentro de otros. Mostremos la tabla de multiplicar.< 11; i++) { // Выводим строку из произведения i на j for (j = 1; j < 11; j++) { printf("%4d", i*j); } // После чего переходим на новую строку printf("\n"); } getch(); }

int main() ( int i, j; // Para cada i para (i = 1; i En este ejemplo, el valor del contador En este ejemplo, en el primer bucle a través de la variable j segundo bucle anidado sobre variable En este ejemplo, el valor del contador. La secuencia de acciones es la siguiente: primero entramos en el ciclo por En este ejemplo, el valor del contador, después de eso para el actual

Los números se generan 10 veces seguidas. Después de esto necesitas ir a una nueva línea. Ahora generemos solo los elementos debajo de la diagonal principal.< 11; i++) { for (j = 1; j < 11; j++) { if (j >Para (yo = 1; yo

i) ( descanso; ) printf("%4d", i*j); romper) printf("\n"); )

Los números se generan 10 veces seguidas. Después de esto necesitas ir a una nueva línea. Ahora generemos solo los elementos debajo de la diagonal principal.< 11; i++) { for (j = 1; j <= i; j++) { printf("%4d", i*j); } printf("\n"); }

Como puede ver, el operador

le permite salir sólo del bucle actual. Este ejemplo podría reescribirse de la siguiente manera En este caso, utilizamos el primer contador de bucle del bucle anidado. Ru-Cyrl 18-tutorial Sypachev S.S. 1989-04-14

[correo electrónico protegido]

Stepán Sypachev

estudiantes

Al comienzo del ciclo do while, se escribe la palabra reservada do, seguida de llaves, que pueden omitirse si se usa una declaración en el cuerpo del ciclo do while. Después de la llave de cierre, que indica el final del cuerpo del bucle do while, hay una condición de bucle do while, después de la cual se debe colocar un punto y coma. Considere un programa con un bucle do while que realiza algunas transacciones con una cuenta bancaria.

// do_ while.cpp: define el punto de entrada para la aplicación de consola. #incluye "stdafx.h" #incluye #incluir usando el espacio de nombres estándar; int main(int argc, char* argv) ( srand(time(0)); int balance = 8; // balance do // inicio del ciclo do while ( cout<< "balance = " << balance << endl; // показать баланс int removal = rand() % 3; // переменная, для хранения вычитаемого значения cout << "removal = " << removal << endl; // показать вычитаемое значение balance -= removal; // управление условием } while (balance >0); // fin del ciclo do while system("pausa");

devolver 0; ) EN línea 11 La variable de saldo ha sido declarada; es responsable del saldo de fondos en la cuenta. CON Líneas 12 a 19 . bucle escrito do while En el ciclo do while, se realizan todas las transacciones con la cuenta de saldo, es decir, la transferencia de fondos a alguna otra cuenta,. línea 17 Línea 14 muestra el saldo de fondos en el saldo de la cuenta. EN línea 15 Se declara una variable en la que se almacena el valor restado, y este valor se genera aleatoriamente en el intervalo. La variable de eliminación se declara una vez en el cuerpo del bucle do while y la variable no se redefine cada vez que se repite el bucle. Pero su valor cambia según el número que se generó. EN línea 19 se escribe la condición del bucle do while, tan pronto como la condición se vuelve falsa, el programa transferirá el control a la siguiente declaración después del bucle do while, linea 20

. El resultado del programa se muestra en la Figura 1.

Figura 1 Hacer bucle while en C++

Primero, se muestra el saldo, y luego el monto del retiro, después de lo cual se muestra nuevamente el saldo, y así sucesivamente hasta que no quede dinero en la cuenta. La última línea mostrada fue la línea con el monto retirado, y luego el ciclo completó su trabajo. Aunque el último saldo de la cuenta no es visible, se puede decir que es igual a 0.

Recordemos el programa “Adivina el número”, de la sección :. En esta tarea, sería más correcto utilizar un bucle do while; el código se reducirá en dos líneas. #incluir // ygadai2.cpp: define el punto de entrada para la aplicación de consola. #incluye "stdafx.h" #incluye<< "Enter unknown number : "; cin >> ingresar_número; // adivina ) while (enter_number!= número_desconocido);<< "You win!!!\n"; system("pause"); return 0; }

corte

Dado que while es un bucle con una condición previa, primero necesitábamos contar el número antes de que comience el while y luego verificar la continuación del bucle while. En el caso de do while, no necesitamos leer el número antes de que comience el ciclo, ya que la condición de verificación en do while ocurre al final del ciclo. Dependiendo de la situación, se utiliza un bucle while o do while, se complementan entre sí.

Para consolidar el material, desarrollaremos otro programa que calcule la suma de números en un intervalo determinado. // do while.cpp: define el punto de entrada para la aplicación de consola. #incluye "stdafx.h" #incluye<< "Enter the first limit: "; // начальное значение из интервала int first_limit; cin >usando el espacio de nombres estándar; int principal(int argc, char* argv) ( cout<< "Enter the second limit: "; // конечное значение из интервала int second_limit; cin >> primer_límite;<= second_limit); // конец цикла do while cout << "sum = " << sum << endl; // печать суммы system("pause"); return 0; }

corte > segundo_límite; int suma = 0, recuento = primer_límite; do (suma += recuento; // aumenta el recuento de suma++; // incrementa el valor inicial del intervalo especificado) while (cuenta Después de iniciar el programa, deberás introducir los límites de intervalo, primero y segundo. Después de esto, el bucle do while comienza a ejecutarse, línea 13.la suma variable está destinada a almacenar el importe acumulado,

línea 15

. EN




Edición del proyecto