Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Tema 4 Estructuras de Control Iterativas
Estructuras iterativas <ul><li>Repiten  n  veces la ejecución de un bloque de instrucciones </li></ul><ul><ul><li>n  finit...
Iteraciones en c <ul><li>Sentencia  while </li></ul><ul><li>Sentencia  do-while </li></ul><ul><li>Sentencia  for </li></ul>
Sentencia   while <ul><li>while ( condición ) </li></ul><ul><li>{  </li></ul><ul><li>bloque_instrucciones; </li></ul><ul><...
S emántica de   while <ul><li>while : (0-n veces) </li></ul><ul><ul><li>Evaluar la condición </li></ul></ul><ul><ul><ul><l...
<ul><li>Escribir la tabla de multiplicar del 8. </li></ul><ul><li>int mult = 1;  </li></ul><ul><li>while (mult <= 10) </li...
Ejemplo
Iteraciones en c <ul><li>Sentencia  while </li></ul><ul><li>Sentencia  do-while </li></ul><ul><li>Sentencia  for </li></ul>
Sentencia   do-while <ul><li>do </li></ul><ul><li>{  </li></ul><ul><li>bloque_instrucciones; </li></ul><ul><li>}while ( co...
S emántica de   do- while <ul><li>do while : (1-n veces) </li></ul><ul><ul><li>Ejecutar el bloque de instrucciones complet...
Ejemplo <ul><li>Leer un número comprendido entre 1 y 100 </li></ul><ul><li>int num;  </li></ul><ul><li>do </li></ul><ul><l...
Ejemplo
Diseño  de la iteración <ul><li>Control de la iteración </li></ul><ul><ul><li>¿Cuándo acaba la iteración? (condición de sa...
Diseño  de la iteración <ul><li>Control de la iteración </li></ul><ul><li>Proceso de la iteración </li></ul><ul><ul><li>¿Q...
Diseño  de la iteración <ul><li>Control de la iteración </li></ul><ul><li>Proceso de la iteración </li></ul><ul><li>Compro...
Ejemplo resuelto <ul><li>Leer un valor  a  y escribir su tabla de multiplicar. </li></ul><ul><ul><li>Se usará un contador ...
Control de la iteración <ul><li>¿Cuándo acaba la iteración? (condición de salida) </li></ul><ul><ul><li>Cuando  b  valga 1...
Proceso de la iteración <ul><li>¿Qué es lo que hay que repetir? </li></ul><ul><ul><li>Mostrar  el valor  a * b  y saltar d...
Algoritmo Inicialización Control Proceso INICIO LEER ( a ) b =1 b <=10 ESCRIBIR  a * b Saltar de línea b = b +1 V F FIN
Código <ul><li>void main() </li></ul><ul><li>{ </li></ul><ul><li>int a,b,c; </li></ul><ul><li>printf(“
 Introduce un númer...
Comprobación (trazas) 20 5 4 16 4 4 24 6 4 8 2 4 12 3 4 4 1 4 .. .. .. 10 b 40 4 c a
Ejemplo/ ejercicio 1 <ul><li>Implementar una eurocalculadora </li></ul><ul><ul><li>Dependiendo de la opción ‘P’ o ‘E’ conv...
Algoritmo (con do-while) F Calcular  num  en pesetas Escribir resultado en pesetas ¿Qué deseas (P/E)?    opc ¿ opc  == ‘P...
Algoritmo (con  while ) resp=‘S’ Calcular  num  en pesetas Escribir resultado en pesetas ¿Más números (S/N)?   resp F ¿ o...
Ejemplo/ ejercicio 2 <ul><li>Calcular la primera potencia de 2 que sea mayor o igual que un número dado </li></ul>Leer  Nu...
Código (con  while ) <ul><li>/*  numero > 1  */ </li></ul><ul><li>{ </li></ul><ul><li>potencia=1;  /*  2 0  = 1  */ </li><...
Ejemplo/ ejercicio 3 <ul><li>Contar los caracteres introducidos por teclado hasta encontrar un punto (que también se cuent...
Código (con  while ) <ul><li>{ </li></ul><ul><li>n um=1 ; </li></ul><ul><li>scanf ( “%c”, & car) ; </li></ul><ul><li>while...
Código (con  do-while ) <ul><li>{ </li></ul><ul><li>n um=0; </li></ul><ul><li>do { </li></ul><ul><li>n um= num +1 ; </li><...
Ejercicios <ul><li>Imprimir los números del 1 al 10 cinco veces </li></ul><ul><li>Mostrar las tablas de multiplicar del 1 ...
Iteraciones en c <ul><li>Sentencia  while </li></ul><ul><li>Sentencia  do-while </li></ul><ul><li>Sentencia  for </li></ul>
Sentencia   for <ul><li>for ( inicialización ;  condición ;  actualización ) </li></ul><ul><li>{  </li></ul><ul><li>bloque...
Semántica  de   for <ul><li>for : (número de veces conocido a priori) </li></ul><ul><ul><li>Ejecutar la inicialización </l...
Equivalencia  for  -  while inicialización; while ( condición ) { bloque_instrucciones; actualización: } for ( inicializac...
Ejemplo <ul><li>Mostrar en pantalla los primeros  n  números pares </li></ul>scanf (“%d”, &n) i=1; while (i<=n) { printf(“...
Estructuras  iterativas <ul><li>¿Cuando utilizar una u otra? </li></ul><ul><ul><li>for  cuando el número de iteraciones se...
Ejercicios
Ejercicio  factorial <ul><li>Pedir un número y mostrar por pantalla su factorial </li></ul><ul><ul><li>Propuesta: comproba...
while Leer el número     num ¿ num  == 0? fact = 1 Escribir resultado ¿ num  <0? No se puede Calcular  num ! fact = 1 i =...
for for (i=1;i<=num;i=i+1) {fact=fact*i;} Leer el número     num ¿ num  == 0? fact = 1 Escribir resultado ¿ num  <0? No s...
Más ejercicios <ul><li>Pedir 2 números positivos y calcular su Máximo Común Divisor y su mínimo común múltiplo </li></ul><...
Nächste SlideShare
Wird geladen in …5
×

Tema 4 iterativas

3.957 Aufrufe

Veröffentlicht am

  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Tema 4 iterativas

  1. 1. Tema 4 Estructuras de Control Iterativas
  2. 2. Estructuras iterativas <ul><li>Repiten n veces la ejecución de un bloque de instrucciones </li></ul><ul><ul><li>n finito o infinito </li></ul></ul><ul><ul><li>n conocido o desconocido a priori </li></ul></ul>
  3. 3. Iteraciones en c <ul><li>Sentencia while </li></ul><ul><li>Sentencia do-while </li></ul><ul><li>Sentencia for </li></ul>
  4. 4. Sentencia while <ul><li>while ( condición ) </li></ul><ul><li>{ </li></ul><ul><li>bloque_instrucciones; </li></ul><ul><li>} </li></ul>¿condición? V F Bloque de instrucciones
  5. 5. S emántica de while <ul><li>while : (0-n veces) </li></ul><ul><ul><li>Evaluar la condición </li></ul></ul><ul><ul><ul><li>Si el resultado es falso, acabar el bucle (seguir con la instrucción siguiente al while ) </li></ul></ul></ul><ul><ul><ul><li>Si el resultado es verdadero, ejecutar el bloque de instrucciones completo y volver a empezar </li></ul></ul></ul>
  6. 6. <ul><li>Escribir la tabla de multiplicar del 8. </li></ul><ul><li>int mult = 1; </li></ul><ul><li>while (mult <= 10) </li></ul><ul><li> { </li></ul><ul><li>printf (“ %d x %d = %d”, 8, mult, 8*mult); </li></ul><ul><li>mult = mult +1; </li></ul><ul><li>} </li></ul>Ejemplo
  7. 7. Ejemplo
  8. 8. Iteraciones en c <ul><li>Sentencia while </li></ul><ul><li>Sentencia do-while </li></ul><ul><li>Sentencia for </li></ul>
  9. 9. Sentencia do-while <ul><li>do </li></ul><ul><li>{ </li></ul><ul><li>bloque_instrucciones; </li></ul><ul><li>}while ( condición ); </li></ul>¿condición? V F Bloque de instrucciones
  10. 10. S emántica de do- while <ul><li>do while : (1-n veces) </li></ul><ul><ul><li>Ejecutar el bloque de instrucciones complet o </li></ul></ul><ul><ul><li>Evaluar la condición </li></ul></ul><ul><ul><ul><li>Si el resultado es falso, acabar el bucle (seguir con la instrucción siguiente al do-while ) </li></ul></ul></ul><ul><ul><ul><li>Si el resultado es verdadero, volver a empezar </li></ul></ul></ul>
  11. 11. Ejemplo <ul><li>Leer un número comprendido entre 1 y 100 </li></ul><ul><li>int num; </li></ul><ul><li>do </li></ul><ul><li> { </li></ul><ul><li>printf (“ Escribe un valor entre 1 y 100: ”); </li></ul><ul><li>scanf(“%d”, &num); </li></ul><ul><li>} while (num < 1 || num >100); </li></ul>
  12. 12. Ejemplo
  13. 13. Diseño de la iteración <ul><li>Control de la iteración </li></ul><ul><ul><li>¿Cuándo acaba la iteración? (condición de salida) </li></ul></ul><ul><ul><li>¿Cómo inicializar la condición? </li></ul></ul><ul><ul><li>¿Cómo se actualiza la condición? </li></ul></ul>
  14. 14. Diseño de la iteración <ul><li>Control de la iteración </li></ul><ul><li>Proceso de la iteración </li></ul><ul><ul><li>¿Qué es lo que hay que repetir? </li></ul></ul><ul><ul><li>¿Cómo inicializarlo? </li></ul></ul><ul><ul><li>¿Cuál es el estado al final del bucle? </li></ul></ul>
  15. 15. Diseño de la iteración <ul><li>Control de la iteración </li></ul><ul><li>Proceso de la iteración </li></ul><ul><li>Comprobación del diseño a través de trazas </li></ul>
  16. 16. Ejemplo resuelto <ul><li>Leer un valor a y escribir su tabla de multiplicar. </li></ul><ul><ul><li>Se usará un contador b que tomará valores de 1 a 10 para multiplicar al valor de a . </li></ul></ul>
  17. 17. Control de la iteración <ul><li>¿Cuándo acaba la iteración? (condición de salida) </li></ul><ul><ul><li>Cuando b valga 11 </li></ul></ul><ul><li>¿Cómo inicializar la condición? </li></ul><ul><ul><li>Al principio b valdrá 1 </li></ul></ul><ul><li>¿Cómo se actualiza la condición? </li></ul><ul><ul><li>En cada iteración b se incrementará en 1 </li></ul></ul>
  18. 18. Proceso de la iteración <ul><li>¿Qué es lo que hay que repetir? </li></ul><ul><ul><li>Mostrar el valor a * b y saltar de línea </li></ul></ul><ul><li>¿Cómo inicializarlo? </li></ul><ul><ul><li>No hace falta </li></ul></ul><ul><li>¿Cuál es el estado al final del bucle? </li></ul><ul><ul><li>Se habrá mostrado la tabla de multiplicar de a </li></ul></ul>
  19. 19. Algoritmo Inicialización Control Proceso INICIO LEER ( a ) b =1 b <=10 ESCRIBIR a * b Saltar de línea b = b +1 V F FIN
  20. 20. Código <ul><li>void main() </li></ul><ul><li>{ </li></ul><ul><li>int a,b,c; </li></ul><ul><li>printf(“ Introduce un número: ”); </li></ul><ul><li>scanf(“%d”,&a); </li></ul><ul><li>b=1; </li></ul><ul><li>while (b <= 10 ) </li></ul><ul><li>{ </li></ul><ul><li>c=a*b; </li></ul><ul><li> printf (“ %d x %d es = %d ”,a,b,c); </li></ul><ul><li>b=b+1; </li></ul><ul><li>} </li></ul><ul><li>system(“pause”); </li></ul><ul><li>} </li></ul>
  21. 21. Comprobación (trazas) 20 5 4 16 4 4 24 6 4 8 2 4 12 3 4 4 1 4 .. .. .. 10 b 40 4 c a
  22. 22. Ejemplo/ ejercicio 1 <ul><li>Implementar una eurocalculadora </li></ul><ul><ul><li>Dependiendo de la opción ‘P’ o ‘E’ convertirá de euros a pesetas o viceversa </li></ul></ul><ul><ul><li>Tras cada conversión el programa preguntará si se va a realizar otro cálculo </li></ul></ul>
  23. 23. Algoritmo (con do-while) F Calcular num en pesetas Escribir resultado en pesetas ¿Qué deseas (P/E)?  opc ¿ opc == ‘P’? V ¿Qué número?  num Calcular num en euros Escribir resultado en euros ¿Más números (S/N)?  resp ¿ resp == ‘S’? V F FIN
  24. 24. Algoritmo (con while ) resp=‘S’ Calcular num en pesetas Escribir resultado en pesetas ¿Más números (S/N)?  resp F ¿ opc == ‘P’? V Calcular num en euros Escribir resultado en euros ¿Qué deseas (P/E)?  opc ¿Qué número?  num ¿ resp == ‘S’? V F FIN
  25. 25. Ejemplo/ ejercicio 2 <ul><li>Calcular la primera potencia de 2 que sea mayor o igual que un número dado </li></ul>Leer Numero ¿Potencia< Numero ? Escribir Potencia V F Potencia = 1 Potencia = Potencia * 2
  26. 26. Código (con while ) <ul><li>/* numero > 1 */ </li></ul><ul><li>{ </li></ul><ul><li>potencia=1; /* 2 0 = 1 */ </li></ul><ul><li>while (p otencia < numero ) </li></ul><ul><li>{ </li></ul><ul><li> potencia = potencia*2; </li></ul><ul><li>} </li></ul><ul><li>printf ( “La p otencia buscada es %d” , potencia ); </li></ul><ul><li>} </li></ul>
  27. 27. Ejemplo/ ejercicio 3 <ul><li>Contar los caracteres introducidos por teclado hasta encontrar un punto (que también se cuenta) </li></ul>Leer car (un carácter) ¿ car !=‘.’? Escribir num V F num = 1 num = num +1 Leer car
  28. 28. Código (con while ) <ul><li>{ </li></ul><ul><li>n um=1 ; </li></ul><ul><li>scanf ( “%c”, & car) ; </li></ul><ul><li>while ( car != ‘.’ ) </li></ul><ul><li>{ </li></ul><ul><li>n um= n um+1 ; </li></ul><ul><li>scanf ( “%c”, & car) ; </li></ul><ul><li> } </li></ul><ul><li>printf ( “ Número total de caracteres: %d” , n um); </li></ul><ul><li>} </li></ul>
  29. 29. Código (con do-while ) <ul><li>{ </li></ul><ul><li>n um=0; </li></ul><ul><li>do { </li></ul><ul><li>n um= num +1 ; </li></ul><ul><li>scanf ( “%c”, & car) ; </li></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><li>while ( car != ‘.’ ) ; </li></ul><ul><li>printf ( “ Número total de caracteres: %d” , n um); </li></ul><ul><li>} </li></ul>
  30. 30. Ejercicios <ul><li>Imprimir los números del 1 al 10 cinco veces </li></ul><ul><li>Mostrar las tablas de multiplicar del 1 al 9 </li></ul><ul><li>Mostrar los múltiplos de 6 del 0 al 10000 </li></ul><ul><ul><li>Mismo ejercicio, pero de 10 en 10, es decir, cada 10 números mostrados, pedir que se pulse una tecla para continuar </li></ul></ul><ul><li>Pedir 2 números y escribir todos los enteros que hay entre ambos </li></ul><ul><li>Pedir un valor n e imprimir las n primeras potencias de n </li></ul>
  31. 31. Iteraciones en c <ul><li>Sentencia while </li></ul><ul><li>Sentencia do-while </li></ul><ul><li>Sentencia for </li></ul>
  32. 32. Sentencia for <ul><li>for ( inicialización ; condición ; actualización ) </li></ul><ul><li>{ </li></ul><ul><li>bloque_instrucciones; </li></ul><ul><li>} </li></ul>¿condición? V F Bloque de instrucciones Inicialización Actualización
  33. 33. Semántica de for <ul><li>for : (número de veces conocido a priori) </li></ul><ul><ul><li>Ejecutar la inicialización </li></ul></ul><ul><ul><li>Evaluar la condición </li></ul></ul><ul><ul><ul><li>Si el resultado es falso, acabar el bucle (seguir con la instrucción siguiente al for ) </li></ul></ul></ul><ul><ul><ul><li>Si el resultado es verdadero, ejecutar el bloque de instrucciones completo y ejecutar la actualización </li></ul></ul></ul>
  34. 34. Equivalencia for - while inicialización; while ( condición ) { bloque_instrucciones; actualización: } for ( inicialización ; condición; actualización ) { bloque_instrucciones; }
  35. 35. Ejemplo <ul><li>Mostrar en pantalla los primeros n números pares </li></ul>scanf (“%d”, &n) i=1; while (i<=n) { printf(“ %d”, 2*i); i= i+1; } scanf (“%d”, &n) for (i=1; i<=n; i= i+1) { printf(“ %d”, 2*i); }
  36. 36. Estructuras iterativas <ul><li>¿Cuando utilizar una u otra? </li></ul><ul><ul><li>for cuando el número de iteraciones sea conocido </li></ul></ul><ul><ul><li>do while cuando la iteración se ejecute como mínimo una vez </li></ul></ul><ul><ul><li>while en el resto de casos </li></ul></ul>
  37. 37. Ejercicios
  38. 38. Ejercicio factorial <ul><li>Pedir un número y mostrar por pantalla su factorial </li></ul><ul><ul><li>Propuesta: comprobar que el número es positivo, y pedirlo cuantas veces haga falta mientras no lo sea </li></ul></ul>
  39. 39. while Leer el número  num ¿ num == 0? fact = 1 Escribir resultado ¿ num <0? No se puede Calcular num ! fact = 1 i = 1 ¿ i <= num ? fact = fact * i i = i + 1 Escribir fact V V V F F F
  40. 40. for for (i=1;i<=num;i=i+1) {fact=fact*i;} Leer el número  num ¿ num == 0? fact = 1 Escribir resultado ¿ num <0? No se puede calcular num ! fact = 1; Repetir desde que i vale 1 hasta que i valga num , i=i+1; fact = fact * i; Escribir fact SI SI NO NO
  41. 41. Más ejercicios <ul><li>Pedir 2 números positivos y calcular su Máximo Común Divisor y su mínimo común múltiplo </li></ul><ul><li>Calcular el mínimo, el máximo y la media de una serie de números enteros que termina en 0 </li></ul><ul><ul><li>Propuesta: ídem pero considerando sólo los positivos </li></ul></ul><ul><li>Pedir n y m y calcular el valor </li></ul>

×