web viewla sentencia de terminación suele ser if -break con la sintaxis. i f...

18
República Bolivariana de Venezuela Universidad Alonso de Ojeda Facultad de Ingeniería. Escuela de Computación. Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION I Sección: IC431 ----- I Docente: ING. YESIKA MEDINA FOR, WHILE, DO-WHILE. Ejemplos con FOR, WHILE y DO-WHILE EJEMPLO 1: Programa que imprime el valor actual de una variable en cada ciclo. //Con la sentencia FOR: #include<stdio.h> #include<stdlib.h> void main() { int i; for(i=0; i<=20; i++) printf(“Soy la variable i, mi valor en esta iteracion es: %d\n”,i); system(“pause”); } —————————— //Con la sentencia WHILE: #include<stdio.h> #include<stdlib.h> void main() { int i=0; while(i<=20) { printf(“Soy la variable i, mi valor en esta iteracion es: %d\n”,i); i++; } system(“pause”); } —————————— //Con la sentencia DO-WHILE: #include<stdio.h> #include<stdlib.h> Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

Upload: dothien

Post on 06-Feb-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

FOR, WHILE, DO-WHILE.Ejemplos con FOR, WHILE y   DO-WHILE

EJEMPLO 1:

Programa que imprime el valor actual de una variable en cada ciclo.

//Con la sentencia FOR:

#include<stdio.h>#include<stdlib.h>

void main(){int i;

for(i=0; i<=20; i++)printf(“Soy la variable i, mi valor en esta iteracion es: %d\n”,i);

system(“pause”);}

——————————

//Con la sentencia WHILE:

#include<stdio.h>#include<stdlib.h>

void main(){int i=0;

while(i<=20){printf(“Soy la variable i, mi valor en esta iteracion es: %d\n”,i);i++;}

system(“pause”);}

——————————

//Con la sentencia DO-WHILE:

#include<stdio.h>#include<stdlib.h>

void main(){int i=0;

do{printf(“Soy la variable i, mi valor en esta iteracion es: %d\n”,i);i++;}while(i<=20);

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

system(“pause”);}

EJEMPLO 2:

Programa que suma los 10 primeros número enteros.

//Con la sentencia FOR:

#include<stdio.h>#include<stdlib.h>

void main(){int num;int suma=0;

for(num=0; num<=10; num++){suma = suma + num;}

printf(“Suma = %d\n”,suma);

system(“pause”);}

——————————

//Con la sentencia WHILE:

#include<stdio.h>#include<stdlib.h>

void main(){int num=0;int suma=0;

while(num<=10){suma = suma + num;num++;}

printf(“Suma = %d\n”,suma);

system(“pause”);}

——————————

//Con la sentencia DO-WHILE:

void main(){int num=0;int suma=0;

do{suma = suma + num;

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

num++;} while(num<=10);

printf(“Suma = %d\n”,suma);

system(“pause”);}

EJEMPLO 3:

Programa que muestra de forma descendente los números del 0 al 10.

//Con la sentencia FOR:

#include<stdio.h>#include<stdlib.h>

void main(){int numero;

for(numero=10; numero >= 0; numero–)printf(“%d\n”,numero);

system(“pause”);}

——————————

//Con la sentencia WHILE:

#include<stdio.h>#include<stdlib.h>

void main(){int numero=10;

while(numero >= 0){printf(“%d\n”,numero);numero–;}

system(“pause”);}

———————————

//Con la sentencia DO-WHILE:#include<stdio.h>#include<stdlib.h>

void main(){int numero=10;

do{printf(“%d\n”,numero);numero–;}while(numero >= 0);

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

system(“pause”);}

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

Ejercicio 1.-

#include <stdio.h>#include <stdlib.h>int main(){int contador;printf( "\n " );contador = 1; /* Inicialización del contador */do{printf( "%d ", contador ); /* Salida */contador++; /* Incremento */} while ( contador <= 100 ); /* Condición */system ("pause");return 0;}

Ejercicio 2.- programa se cicla mientras pide un carácter y se sale hasta que le dan una Y o una N

#include <stdio.hmain(){char respuesta;printf("Este programa se va a quedar ciclado mientras no le des una Yo una N \n ");do{printf("Teclea una Y o una N \n");scanf("%c", respuesta);}while( (respuesta != ´Y´) && (respuesta != ´N´) ){}printf("Ya saliste del ciclo...");getch();return 0;}

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

Ejercicio 3.

#include <stdio.h>int main(){int contador;printf( "\n " );contador = 1; /* Inicialización del contador */do{printf( "%d ", contador ); /* Salida */contador++; /* Incremento */} while ( contador <= 10 ); /* Condición */return 0;}

Ejemplo 4: Se quiere escribir un programa que:

1º) Pida por teclado un número (dato entero).2º) Pregunte al USUARIO si desea introducir otro o no.3º) Repita los pasos 1º y 2º, mientras que, el usuario no responda 'n' de(no).4º) Muestre por pantalla la suma de los números introducidos por elusuario.En pantalla:Introduzca un numero entero: 7¿Desea introducir otro (s/n)?: sIntroduzca un numero entero: 16¿Desea introducir otro (s/n)?: sIntroduzca un numero entero: -3¿Desea introducir otro (s/n)?: nLa suma de los numeros introducidos es: 20El código propuesto es:#include <stdio.h>int main(){char seguir;int acumulador, numero;/* En acumulador se va a guardar la suma delos números introducidos por el usuario. */acumulador = 0;do{printf( "\n Introduzca un numero entero: " );scanf( "%d", &numero);acumulador += numero;printf( "\n Desea introducir otro numero (s/n)?: " );fflush( stdin );

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

scanf( "%c", &seguir);} while ( seguir != 'n' );/* Mientras que el usuario desee introducirmás números, el bucle iterará. */printf( "\n La suma de los numeros introducidos es: %d",acumulador );return 0;

Ejemplo 5: Uso de centinelas En el ejemplo se introducen notas mientras que ésta sea distinta de centinela, al final imprime cuántas notas se ingresaron, su suma y un mensaje de final. Nota se ha declarado de tipo entero.

#include stdio.h>#include stdlib.h>main(){const int centinela = -1;int nota,suma=0;int cuenta =0;printf("Introduzca primera nota:\n");scanf("%d",¬a);while (nota != centinela){cuenta++;suma+= nota;printf("Introduzca la siguiente nota:\n");scanf("%d",¬a);}printf("la suma es: %d\n",suma);printf("la cuenta fue: %d\n", cuenta);puts("final");system(“pause”);return 0;

}

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

Ejemplo 6 Elabore un programa en lenguaje C para calcular el promedio de una lista de x números.

Solucion en WHILE:

#include stdio.h>#include stdlib.h>main ( ){int n , contar=1;float x , promedio , suma=0;printf ("Cuantos números desea leer?: ");scanf ("%d",&n);while (contar <= n) {printf ("x= ");scanf ("%f",&x);suma +=x;++contar;}promedio=suma/n;printf ("\nEl promedio es: %.2f\n",promedio);system(“pause”);return 0;}Solucion en DO-WHILE#include stdio.h>#include stdlib.h>main ( ){int n, contar = 1;float x, promedio, suma = 0;printf ("Cuantos numeros?: ");scanf ("%d",&n);do {printf("x= ");scanf ("%f", &x);suma +=x;++contar;} while (contar <= n);promedio = suma/n;printf ("\nEl promedio es: %.2f\n",promedio);system(“pause”);return 0;

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

Ejemplo 1.- formato descendente

int n;for (n = 10; n.> 5; n--)printf("%d \t %d \n",n, n * n );La salida de este bucle es:10 1009 818 647 496 36 debido a que el valor inicial de la variable de control es 10, y el límite que se ha puesto es n > 5 (es decir, verdadera cuando n = 10, 9, 8, 7, 6); la expresión de decremento es el operador de decremento n-- que decrementa en 1 el valor de n tras la ejecución de cada iteración.

Otros intervalos de incremento/derremento

Los rangos de incremento/decremento de la variable o expresión de control del bucle pueden ser cualquier valor y no siempre 1, es decir 5, 10, 20,4, ..., dependiendo de los intervalos que se necesiten.

Así el bucle

int n;

for (n = O; n < 100; n += 20)

printf("%d \t %d \n",n, n * n );

utiliza la expresión de incremento

n += 20

que incrementa el valor de n en 2 0, dado que equivale a n = n + 2 0. Así la salida que producirá la

ejecución del bucle es:

0 0

20 400

40 1600

60 3600

80 6400

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

Ejemplo 2. Suma de los 1 O primeros números pares

#include <stdio.h>int main()int n, suma = O;f o r (n = 1; n <= 10; n++)suma += 2*n;printf('La suma de los 10 primeros números pares: %d",suma);return O;1El bucle lo podríamos haber diseñado con un incremento de 2:for (n = 2; n <= 20; n+=2)suma += n;diseño del bucle for de la forma siguiente:1. El cuerpo del bucle ha de contener todas las sentencias que se desean ejecutar repetidamente.2. Una sentencia terminará la ejecución del bucle cuando se cumpla una determinada condición.La sentencia de terminación suele ser if -break con la sintaxisi f (condición) break;condi ci ónbreakes una expresión lógicatermina la ejecución del bucle y transfiere el control a la sentenciasiguiente al bucley la sintaxis completafor (;;I /* bucle */i1 i s t a-s en t en ci as,if (condición-terminación) break;1 is t a-sent enci as,1 /* f i n del bucle * /1 i s t a-sen ten ci as puede ser vacía, simple o compuesta.

Ejemplo 3. La sentencia continue hace que la ejecución de un bucle vuelva a la cabecera del bucle.

#include <stdio.h>int main(){int clave,¡;puts ("Introduce -9 para acabar. ") ;clave = 1;for (i = O; i < 8; i++) {if (clave ==-9) continue;scanf ("%d"&,c lave) ;printf ("clave %d\n",clave) ;1printf('VAL0RES FINALES i = %d clave = %d",i,clave);return O

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

1. ¿Qué es un bucle?2. ¿A que se denomina cuerpo de un bucle?3. Define iteración de un bucle.4. ¿Cuál es el cuerpo de un bucle?5. ¿Qué es un bucle finito?6. ¿Cuáles son los tres aspectos que hay que considerar para el diseño de

bucles?7. Nombra y explica los cuatro métodos utilizados para terminar bucles de

entrada.8. ¿Cuántas veces en un programa se iterara el cuerpo del bucle?9. ¿Qué es un bucle FOR?10.¿A qué se denomina bucles controlados por contador?11.Explica en qué se diferencia un bucle FOR de un bucle WHILE.12.Explica la sintaxis del bucle FOR.13.Nombra y explica las cuatros partes del bucle FOR.14.¿Cuáles son las dos formas de implementarlas sentencias FOR?15.¿Cuáles son los diferentes usos del bucle FOR?16.¿Qué precauciones se deben tomar para el uso de la sentencia FOR?17.¿Qué es una sentencia WHILE?18.Explica la sintaxis de la sentencia WHILE.19.Di cuatro diferencias entre WHILE y DO-WHILE.20.DI cinco comparaciones de los bucles: WHILE, FOR y DO-WHILE.21.¿Cuáles son los tres aspectos que hay que considerar para el diseño de

bucles?22.Nombra y explica los cuatro métodos utilizados para terminar bucles de

entrada.

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

GOTO

La sentencia GOTO sirve para indicar al programa que continúe ejecutándose desde la línea de código indicada. La verdad es que es una sentencia poco aceptada por la comunidad de programadores, pues puede provocar que se hagan programas un poco "sucios" y confusos.

Su sintaxis es más o menos así:

/* Código */ETIQUETA:

/* Código */goto ETIQUETA;

/* Código */

Así, cuando se ejecute la sentencia GOTO, el programa continuará su ejecución a partir de la etiqueta marcada. Como se puede observar se puede usar para crear un bucle, o para ir a una parte del código u otra si se combina con una sentencia IF...ELSE. Pero para los bucles ya hay estructuras definidas, y para la ejecución opcional de bloques de código, ya existen las Funciones.

Sólo en ocasiones muy excepcionales será recomendado el uso del GOTO al crear iteraciones muy complejas. Sin embargo, con el pasar de los años este comando ya ha quedado prácticamente descartado del lenguaje de los programadores profesionales, debido a que ocasionaba muchas fallas en el momento de compilar.

INDENTACION. (Los espacios al comienzo de las líneas) no es necesaria, pero ayuda a la claridad del código. La utilización de las llaves {...} es obligatoria cuando se quiere utilizar más de una instrucción por bloque, y optativa cuando sólo se quiere escribir una instrucción. Por claridad, sin embargo, es recomendable utilizarlas aun cuando sólo vaya a haber una instrucción. GETCH() Es un comando que lee un carácter del teclado Uno de los usos más comunes que tiene en C/C++ es después de enviar algo a la pantalla, esperar a que el usuario presione una tecla para saltar a la siguiente instrucción o finalizar el programa si es que ya no quedan sentencias.

Los operadores lógicos entre valores lógicos &&, ||, !; la relación de desigualdad !=; algunos de los operadores lógicos entre bits (&, |, ^, ~) y sus expresiones compuestas (&=, |=, ^=), tienen una representación realmente difícil de leer, con la desventaja adicional que sus símbolos no siempre están fácilmente accesibles en ordenadores con teclados distintos del estándar USA. Para resolver este problema, el Estándar C++ ha introducido nuevas formas para su representación; las denominamos formas explícitas o naturales, en razón de que se parecen más a las palabras correspondientes del lenguaje natural. Las nuevas formas constituyen palabras-clave, y la tabla de equivalencias es la siguiente:

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]

República Bolivariana de VenezuelaUniversidad Alonso de Ojeda

Facultad de Ingeniería.Escuela de Computación.

Asignatura: ALGORTIMOS ESTRUCTURA Y PROGRAMACION ISección: IC431 ----- I

Docente: ING. YESIKA MEDINA

Docente: Ing. Yesika Medina Correo Electrónico: [email protected]