Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sentencia while
while (condición)
SentenciaR o bloque_de_sentenciasR
Pág 1
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
d. Realice un juego de ensayo para cada una de las soluciones. Suponga que se
introduce un 5.
SOLUCIÓN 1.
N Cont cont<n Explicación Pantalla
5 0 SI Se escribe el asterisco *
Se incrementa contador
1 Vuelvo a la condición
SI Se escribe el asterisco *
Se incrementa contador
2 Vuelvo a la condición
SI Se escribe el asterisco *
Se incrementa contador
3 Vuelvo a la condición
SI Se escribe el asterisco *
Se incrementa contador
4 Vuelvo a la condición
SI Se escribe el asterisco *
Se incrementa contador
5 NO Se sale del bucle
Pág 2
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
Pág 3
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
5. Programa DeMaN. Escriba un programa que escriba todos los números enteros
comprendidos entre dos dados por el usuario. Por ejemplo si el usuario introduce 4 y
7 el programa escribirá 4,5,6,7 y si el usuario introduce 7 y 4 escribe también 4,5,6,7.
a. Hacer el Análisis: Entender el problema.
b. Realizar el algoritmo: Defino los pasos y Analizo las variables.
c. Compruebo que funciona
d. Generar el programa. Escribir código fuente, compilarlo y obtener el
ejecutable
e. Probar el programa
Pág 4
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
Pág 5
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
Pág 6
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
#define PI 3.1416
int main(void ){
float r, area, perim ;
do {
puts(" Introduce un radio >0 :");
scanf(“\%f”, &r);
} while (r<=0);
area = PI *r *r; perim= 2*`PI*r;
printf ("\n Circunferencia de radio= %f “, r);
printf (“\n \t Area= %f \n \t Perimetro= %f \n”, area, perim);
return 0;
}
11. Programa ASCII. El siguiente programa escribe en pantalla todos los caracteres
ASCII así como la posición que ocupan.
int i=0;
while ( i<256) {
printf ("Pos:%d -> %c\n", i, i );
i++;
}………..
¿Qué sentencia permite que el bucle se ejecute por primera vez? _ _ _ _ _ ¿Cuál
es la condición del bucle? _ _ _ _ _ _ _ _ _ _ _¿Cuáles son las sentencias que se
repiten?_ _ _ _ _ _ _ _ _ _ _ _ _ _ ¿Qué sentencia actualiza la condición del
bucle? _ _ _ _ _ _ _ _ ¿Tiene un esquema de recorrido o de Búsqueda? _ _ _ _
Pág 7
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
14. Programa Potencia. Calcular la potencia de dos números ab, siendo a un número real
y b un número entero positivo o negativo.
15. Programa RaizCuadrada. Realizar un programa que calcule cuál es la raiz cuadrada
de un número dado por el usuario con la aproximación que el operador de consola
indique.
Se usará el siguiente método iterativo en cual vamos aproximando:
1.- Asignar a raiz el valor 1.
2.- Controlar que la diferencia entre el número y el cuadrado de la raíz
supuesta se acerque a la aproximación permitida. Para ello daremos un
nuevo valor a a la raíz
(raiz + num / raiz) / 2 , cuando nos pasemos, o
raiz++ cuando raiz*raiz sea <= num;
3.- Realizar el paso dos hasta que la diferencia entre el cuadrado de la raíz
y el número sea mayor que el error posible (eps)
#include <stdio.h>
int main (void) {
float num, eps, resta, raiz=1;
resta = (num>raiz*raiz) ? num - raiz*raiz: raiz*raiz-num ;
/* es lo mismo que poner resta = abs ( num-raiz*raiz); */
Pág 8
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
17. Programa Serie3pos. Modifique el programa para que no escriba el último. Por
ejemplo para los valores dados por el usuario 4 y 7, escribiría 4, 5, 6. Escriba un
programa que escriba los elementos de la serie menores que uno dado por el usuario.
Serie: 0, 3, 6, 9, 12, 15, 18….
a. Entender el problema. ¿Sabe cómo se genera el siguiente elemento?
b. Algoritmo: Pasos:
Leer (N);
escribir (numero) varias veces
c. Análisis del bucle.
i. Las sentencias a repetir son:
1. Escribir el elemento de las serie
2. calcular el nuevo elemento
ii. Condición del bucle será : _ _ _ elemento de la serie < num _ _ _
iii. Comprobar que se actualiza la condición del bucle dentro del
bucle: _ _ Calcular el nuevo elemento. _ _
iv. Sentencia de inicialización: _ calcular el primer elemento de la
serie
d. Probar el algoritmo
e. Codificación
#include <stdio.h>
int main (void){
int num, a_i;
printf ("Introduce el valor : ");
scanf ( "%d" , &num);
a_i=0;
while (a_i < num ) { /
printf (“ %d, “, a_i); /* Escribe los elementos de la serie */
a_i = a_i+3; /* equivalente a a_i +=3;*/
}
return (0);
}
f. Probar el programa
Pág 9
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
18. Programa SumaSerie3pos. Escriba un programa que sume los elementos de la serie
(anterior) menores que uno dado por el usuario. Serie: 0, 3, 6, 9, 12….
a. Entienda el problema. ¿Cuál es el siguiente valor? ¿Cuál es la suma para
5 elementos?
b. Algoritmo:
Pasos: 1.- Leer (N); 2.- calcular el elemento de la serie y sumar varias
veces. Análisis del bucle.
i. Las sentencias a repetir son:
1. Escribir el elemento de las serie
2. calcular el nuevo elemento
3. Sumar el elemento de la serie
ii. Condición del bucle será: _ _ el elemento calcularo sea menor que
N__
iii. Comprobar que se actualiza la condición del bucle dentro del
bucle: _ _ Calcular el nuevo elemento. _ _ _
iv. Sentencia de inicialización: _ _ Calcular el primer elemento de la
serie _
c. Prueba del algoritmo.
d. Codificación
………….
int suma, num, a_i=0;
printf ("Introduce el valor : "); scanf ( "%d" , &num);
suma=0;
while (a_i < num ) {
printf (“ %d, “, a_i); /* Escribe los elementos de la serie */
suma= suma+ a_i; /*suma += a_i , Suma elmtos de la
serie */
a_i = a_i+2; /* a_i += 2 */
}
printf ( “\n suma = %d “, suma);
……….
¿Qué sentencia permite que el bucle se ejecute por primera vez? _ _ _ _ _
¿Cuál es la condición del bucle? _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
¿Qué sentencia actualiza la condición del bucle? _ _ _ _ _ _ _ _ _ _ _
¿Cuál es la sentencia acumuladora? _ _ suma= suma+ a_i; _
e. Pruebe el programa.
i. ¿Con qué datos lo ha hecho? _ _ _ _ _ _ _ _ _ _ _ _ _ _
ii. Para el valor de número de entrada 15, ¿Qué valores de la serie se
escriben? _ _ _ _ _ _ _ _ _ _ _ _ _ ¿Cuál es el valor de la suma? _
_ _ _ ¿Cuántas veces se ha ejecutado el bucle? _ _ _ _ _.
Pág 10
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
Pág 11
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
23. Programa SumaNNumeros. Realizar un programa que sume los 7 primeros valores
que introduzca el usuario por teclado.
a. Hacer el Análisis: Entender el problema.
b. Realizar el algoritmo: Defino los pasos y Analizo las variables.
c. Compruebo que funciona
d. Codificación: Completa el código fuente, compilar y obtener el ejecutable
………
int i=0;
float num, suma=0; /* Inicializa la variable suma a la vez que se declara */
while (i < 7 ) {
printf ("Introduce el valor : "); scanf ( "%d" , &num);
suma += num; /* suma = suma + num */
i++; /* i= i+1; */
}
……. Esquema de recorrido
¿Cuál es la condición del bucle? _ _ _ Tratamiento inicial
¿Qué sentencia actualiza la condición Condición del bucle: (i<N)
del bucle? _ _ _ _ _ _ _ _ _ _ _ _ _ _ Permite pasar por todos los elementos.
¿Qué sentencia permite que el bucle Sentencias que se repiten:
se ejecute por primera vez? _ _ _ _ _ Tratamiento de datos
¿Es un esquema de recorrido?_ _ _ _ printf( “%d”, a_i);
a_i*=2;
Elemento siguiente i++;
Pág 12
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
return 0;
}
……...
#define BANDERA 999
……...
int main (void){
int i=0;
float num, suma =0;
printf ("Introduce el valor : "); scanf ( "%d" , &num);
while (num != BANDERA ) {
suma += num; /* suma = suma + num; */
i++; /* i= i+1; */
printf ("Introduce el valor : "); scanf ( "%d" , &num);
}
printf ("La media es %f ", suma/i);
¿Cuál es la condición del bucle? _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
¿Qué sentencia actualiza la condición del bucle? _ _ _ _ _ _ _ _ _ _ _ _ _
¿Qué sentencia permite que el bucle se ejecute por primera vez? _ _ _ _ _ _ _
¿Es un esquema de recorrido o de búsqueda? _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Pág 13
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
Pág 14
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
32. Programa JuegoDados Realizar un programa en permita al usuario jugar a los dados
contra el ordenador ganando aquel que gane 5 jugadas. Una jugada la ganará el
participante que obtenga más puntos. El ordenador lanzará los 2 dados usando la
función rand, mientras que el usuario introducirá por teclado el lanzamiento de sus
dos dados. Al final del programa indicará el número de partidas empatadas, ganadas
por el usuario y por el ordenador.
Pág 15
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
33. Programa PrimosMenoresN. Realizar un programa que escriba en pantalla todos los
números primos menores que uno dado por el usuario.
a. Hacer el Análisis: Entender el problema.
b. Realizar el algoritmo: Defino los pasos y Analizo las variables.
c. Compruebo que funciona.
d. Generar el programa.
e. Probar el programa.
Pág 16
Informática
Escuela de Ingenierías Marina, Náutica y Radioelectrónica
Ejercicios de Programación
Pág 17