Herramientas de usuario

Herramientas del sitio


curso-cpp:estructuras-repetitivas

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
curso-cpp:estructuras-repetitivas [2017/03/21 20:03]
santo [La instrucción for]
curso-cpp:estructuras-repetitivas [2017/10/29 19:26] (actual)
santo
Línea 11: Línea 11:
 La sintaxis (forma de escritura) de esta instrucción es idéntica al ''​if''​ común (sin ''​else''​),​ pero utilizando en su lugar la palabra ''​while'':​ La sintaxis (forma de escritura) de esta instrucción es idéntica al ''​if''​ común (sin ''​else''​),​ pero utilizando en su lugar la palabra ''​while'':​
  
-<​code>​+<​code ​cpp>
 while (condicion) while (condicion)
 { {
     instruccion1;​     instruccion1;​
     instruccion2;​     instruccion2;​
-    ...+    ​//...
     instruccionFinal;​     instruccionFinal;​
 } }
Línea 27: Línea 27:
 Veamos un primer ejemplo sencillo de esto, en el siguiente programa: Veamos un primer ejemplo sencillo de esto, en el siguiente programa:
  
-<​code>​+<​code ​cpp>
 #include <​iostream>​ #include <​iostream>​
  
Línea 56: Línea 56:
 Teniendo esto en cuenta, podemos escribir el siguiente programa para mostrar todos los números desde 1 hasta un cierto entero positivo que ingrese el usuario: Teniendo esto en cuenta, podemos escribir el siguiente programa para mostrar todos los números desde 1 hasta un cierto entero positivo que ingrese el usuario:
  
-<​code>​+<​code ​cpp>
 #include <​iostream>​ #include <​iostream>​
  
Línea 87: Línea 87:
 La sintaxis del ''​for''​ es: La sintaxis del ''​for''​ es:
  
-<​code>​+<​code ​cpp>
 for(inicializacion;​ condicion; incremento) for(inicializacion;​ condicion; incremento)
 { {
Línea 96: Línea 96:
 Es decir, las 3 partes del patrón anterior se ponen todas juntas, entre paréntesis y separadas por punto y coma, en el momento de declarar el for. Un for como el anterior es equivalente a: Es decir, las 3 partes del patrón anterior se ponen todas juntas, entre paréntesis y separadas por punto y coma, en el momento de declarar el for. Un for como el anterior es equivalente a:
  
-<​code>​+<​code ​cpp>
 { {
   inicializacion;​   inicializacion;​
Línea 109: Línea 109:
 De esta forma, el ejemplo anterior generalmente se escribiría utilizando un for, de la siguiente manera: De esta forma, el ejemplo anterior generalmente se escribiría utilizando un for, de la siguiente manera:
  
-<​code>​+<​code ​cpp>
 #include <​iostream>​ #include <​iostream>​
  
Línea 138: Línea 138:
 ==== Soluciones a los ejercicios ==== ==== Soluciones a los ejercicios ====
  
-  - El siguiente código muestra un ejemplo de solución: <​code>#​include <​iostream>​+  - El siguiente código muestra un ejemplo de solución: <​code ​cpp>#​include <​iostream>​
  
 using namespace std; using namespace std;
Línea 152: Línea 152:
 } }
 </​code>​ Se puede observar que utilizamos una variable auxiliar ''​suma'',​ que comienza en ''​0'',​ y en cada paso lo que hacemos sumarle el número actual. De esta forma, como en cada paso el valor de ''​suma''​ es aumentado en el número correspondiente,​ al final del proceso tendrá la suma de todos los números, y por eso escribimos su valor al final. La instrucción ''​suma = suma + x''​ justamente aumenta el valor de suma, porque lo que allí se indica es que se guarde en la variable suma, el valor que hay ahora en la variable suma, más el valor de x. Esta instrucción también puede abreviarse en C++ como ''​suma += x''​ (similarmente,​ existen operadores ''​-=''​ para restar, ''​*=''​ para multiplicar,​ etc). </​code>​ Se puede observar que utilizamos una variable auxiliar ''​suma'',​ que comienza en ''​0'',​ y en cada paso lo que hacemos sumarle el número actual. De esta forma, como en cada paso el valor de ''​suma''​ es aumentado en el número correspondiente,​ al final del proceso tendrá la suma de todos los números, y por eso escribimos su valor al final. La instrucción ''​suma = suma + x''​ justamente aumenta el valor de suma, porque lo que allí se indica es que se guarde en la variable suma, el valor que hay ahora en la variable suma, más el valor de x. Esta instrucción también puede abreviarse en C++ como ''​suma += x''​ (similarmente,​ existen operadores ''​-=''​ para restar, ''​*=''​ para multiplicar,​ etc).
-  - Este ejemplo es muy parecido al anterior: basta agregarle un if para que solamente se ejecute la operación de suma, cuando el número actual es múltiplo de 3. <​code>#​include <​iostream>​+  - Este ejemplo es muy parecido al anterior: basta agregarle un if para que solamente se ejecute la operación de suma, cuando el número actual es múltiplo de 3. <​code ​cpp>#​include <​iostream>​
  
 using namespace std; using namespace std;
Línea 167: Línea 167:
 } }
 </​code>​ </​code>​
-  - <​code>#​include <​iostream>​+  - <​code ​cpp>#​include <​iostream>​
  
 using namespace std; using namespace std;
Línea 182: Línea 182:
 } }
 </​code>​ </​code>​
-  - Este ejercicio es casi igual al primero, pero en lugar de sumar los números, queremos multiplicarlos. Utilizaremos ''​*''​ entonces en lugar de ''​+''​ para la operación. <​code>#​include <​iostream>​+  - Este ejercicio es casi igual al primero, pero en lugar de sumar los números, queremos multiplicarlos. Utilizaremos ''​*''​ entonces en lugar de ''​+''​ para la operación. <​code ​cpp>#​include <​iostream>​
  
 using namespace std; using namespace std;
Línea 196: Línea 196:
 } }
 </​code>​ Un detalle importante es que al calcular un producto, **inicializamos la variable auxiliar en uno**, y no en cero como hacíamos en el caso de la suma. Notar que como le vamos multiplicando cada vez más números, si comenzara en cero, quedaría en cero para siempre. Los factoriales son números que crecen muy rápidamente:​ si ejecutamos el programa, veremos que ya con valores de ''​N''​ mayores que 12 obtenemos resultados demasiado grandes para el tipo de datos int, con lo cual veremos resultados erróneos, y a veces incluso negativos. </​code>​ Un detalle importante es que al calcular un producto, **inicializamos la variable auxiliar en uno**, y no en cero como hacíamos en el caso de la suma. Notar que como le vamos multiplicando cada vez más números, si comenzara en cero, quedaría en cero para siempre. Los factoriales son números que crecen muy rápidamente:​ si ejecutamos el programa, veremos que ya con valores de ''​N''​ mayores que 12 obtenemos resultados demasiado grandes para el tipo de datos int, con lo cual veremos resultados erróneos, y a veces incluso negativos.
-  - <​code>#​include <​iostream>​+  - <​code ​cpp>#​include <​iostream>​
  
 using namespace std; using namespace std;
Línea 214: Línea 214:
 La última estructura de control repetitiva es la instrucción do-while, que es la menos utilizada de todas. Esta instrucción funciona igual que ''​while'',​ pero con la única salvedad de que la condición se verifica **luego** de cada paso, en lugar de **antes** de cada paso. Por lo tanto, do-while siempre realiza al menos un paso, mientras que con un while, si la condición es falsa al comenzar, no se realiza ningún paso. La última estructura de control repetitiva es la instrucción do-while, que es la menos utilizada de todas. Esta instrucción funciona igual que ''​while'',​ pero con la única salvedad de que la condición se verifica **luego** de cada paso, en lugar de **antes** de cada paso. Por lo tanto, do-while siempre realiza al menos un paso, mientras que con un while, si la condición es falsa al comenzar, no se realiza ningún paso.
  
-<​code>​+<​code ​cpp>
 do do
 { {
Línea 222: Línea 222:
 ===== Ejercicios ===== ===== Ejercicios =====
  
-    * Escribir un programa que lea un numero N, y luego imprima la suma de los números pares, menos la suma de los impares, para los primeros N naturales. Por ejemplo, para N=3 sería 2 - (1+3), para N=6 sería (2+4+6)-(1+3+5),​ para N=1 sería -1. +    * [[http://​juez.oia.unsam.edu.ar/#/​task/​pares_impares/​statement|Escribir un programa que lea un numero N, y luego imprima la suma de los números pares, menos la suma de los impares, para los primeros N naturales]]. Por ejemplo, para N=3 sería 2 - (1+3), para N=6 sería (2+4+6)-(1+3+5),​ para N=1 sería -1. 
-    * Escribir un programa que lea una palabra, y la imprima encerrada en un cuadrado de asteriscos. Ejemplos:<​code>​+    * [[http://​juez.oia.unsam.edu.ar/#/​task/​pollo_pan/​statement|Escribir un programa que lea una palabra, y la imprima encerrada en un cuadrado de asteriscos]]. Ejemplos:<​code>​
       Si lee "​pollo"​ imprime:       Si lee "​pollo"​ imprime:
        ​*******        ​*******
Línea 232: Línea 232:
        *pan*        *pan*
        ​*****</​code>​        ​*****</​code>​
-    * Escribir un programa que lea N números, y visualice el máximo, el mínimo y la suma. El valor de N se solicita al comenzar. +    * [[http://​juez.oia.unsam.edu.ar/#/​task/​max_min_sum/​statement|Escribir un programa que lea N números, y visualice el máximo, el mínimo y la suma]]. El valor de N se solicita al comenzar. 
-    * Escribir un programa que lea una palabra, y la imprima al revés (leída de derecha a izquierda). +    * [[http://​juez.oia.unsam.edu.ar/#/​task/​string_reverser/​statement|Escribir un programa que lea una palabra, y la imprima al revés (leída de derecha a izquierda)]]
-    * Un número es perfecto, cuando la suma de sus divisores es igual al mismo número. Crear un programa que dado un N, busque y encuentre todos los números perfectos hasta N. +    * Un número es perfecto, cuando la suma de sus divisores es igual al mismo número. ​[[http://​juez.oia.unsam.edu.ar/#/​task/​busca_perfectos/​statement|Crear un programa que dado un N, busque y encuentre todos los números perfectos hasta N]]
-    * Un número es primo, cuando no tiene divisores que no sean 1 o el mismo número. Hacer un programa que imprima los primos hasta N, para N dado por la entrada.+    * Un número es primo, cuando no tiene divisores que no sean 1 o el mismo número. ​[[http://​juez.oia.unsam.edu.ar/#/​task/​busca_primos/​statement|Hacer un programa que imprima los primos hasta N, para N dado por la entrada]].
  
curso-cpp/estructuras-repetitivas.1490126601.txt.gz · Última modificación: 2017/03/21 20:03 por santo