Documento Guia "Fundamentos de Algoritmos" I y II Etapa

Documento Guia "Microsoft Visual Basic 6.0" III y IV Etapa

miércoles, 24 de junio de 2009

Trabajo Final II etapa "Hacer Mientras" - "Repetir Hasta"


Bucle Hacer...mientras versus Bucle Repertir...hasta.

Mientras que, por ejemplo, en lenguaje C, se puede hacer uso de una instrucción repetitiva hacer...mientras, utilizándose la sintaxis:

do
{
(bloque_de_instrucciones)
} while ( (expresión_lógica) );


En Pascal, se puede emplear un bucle repetir...hasta. La sintaxis es:

repeat
(bloque_de_instrucciones)
until (expresión_lógica);


La diferencia principal, entre ambos bucles, es que:

"un bucle do...while permite ejecutar repetidamente (una o más veces) un bloque de instrucciones, mientras que, una determinada condición sea verdadera"

y, por otra parte,

"un bucle repeat...until permite ejecutar repetidamente (una o más veces) un bloque de instrucciones, hasta que, una determinada condición sea verdadera."

Obsérvese que, en los ordinogramas del Curso de Diseño de Algoritmos, se utiliza la sintaxis de una instrucción repetitiva hacer...mientras:


Figura. Instrucción repetitiva hacer...mientras.

La sintaxis utilizada se corresponde con la empleada en el Pseudocódigo CEE (C En Español):

hacer
(bloque_de_instrucciones)
mientras ( (expresión_lógica) )


De forma que, cuando se evalúe la del bucle, SI ésta es verdadera, el se vuelve a ejecutar. Y así sucesivamente, hasta que la condición sea falsa o, mientras que, NO sea verdadera.

En consecuencia, para un bucle repetir...hasta podríamos utilizar la siguiente sintaxis en ordinogramas:


Figura. Instrucción repetitiva repetir...hasta.

Fíjese que, donde poníamos SI, ahora escribimos NO, y al revés.

Ejemplo: Se quiere diseñar el algoritmo de un programa que muestre por pantalla los primeros diez números naturales:

1 2 3 4 5 6 7 8 9 10



Utilizando un bucle hacer...mientras, la solución en Pseudocódigo CEE puede ser:
algoritmo Numeros_del_1_al_10

variables
entero contador

inicio
contador ← 1 /* Inicialización del contador */
hacer
escribir( contador ) /* Salida */
contador ← contador + 1 /* Incremento */
mientras ( contador <= 10 ) /* Condición */
fin

De manera gráfica, se puede representar como se muestra a continuación:


EJEMPLOS DE Hacer...mientras Y Repertir...Hasta.
algoritmo Area_de_una_esfera

variables
real radio

inicio
escribir( "Introduzca radio: " )
leer( radio )

/* Filtramos el radio */

mientras ( radio <= 0 )
escribir( "ERROR: El radio debe ser mayor que cero." )
escribir( "Introduzca radio: " )
leer( nadio )
fin_mientras

escribir( "El área de la esfera de radio", radio,
" es: ", 4 * 3.141592 * radio ** 2 )

fin


algoritmo Volumenes_de_cubos

variables
entero contador
real arista

inicio
escribir( "Introduzca arista: " )
leer( arista )

contador ← 0 /* Inicialización del contador */

mientras ( arista > 0 )
escribir( "El volumen de un cubo de arista ",
arista, " es: ", arista ** 3 )

contador ← contador + 1 /* Incremento */

escribir( "Introduzca arista: " )
leer( arista )
fin_mientras

escribir( "Ha calculado el volumen de ",
contador, " cubo(s)." )
fin

algoritmo Media_aritmetica_de_numeros_introducidos

variables
caracter seguir
entero acumulador, contador, numero

inicio
acumulador ← 0
contador ← 0

hacer
escribir( "Introduzca un número entero: " )
leer( numero )

acumulador ← acumulador + numero
contador ← contador + 1

escribir( "Ha introducido ", contador,
" número(s)" )
escribir( "La suma es ", acumulador )

escribir( "¿Desea introducir otro número (s/n)?: " )
leer( seguir )
mientras ( seguir <> 'n' )

escribir( "La media aritmética es ",
acumulador / contador )
fin
algoritmo Calculo_de_sumas

variables
caracter seguir
entero acumulador, n1, n2

inicio
acumulador ← 0

hacer
escribir( "Introduzca primer número: " )
leer( n1 )
escribir( "Introduzca segundo número: " )
leer( n2 )
escribir( "La suma es ", n1 + n2 )

acumulador ← acumulador + n1 + n2

escribir( "¿Desea realizar otra suma (s/n)?: " )
leer( seguir )
mientras ( seguir <> 'n' )

escribir( "La suma total es ", acumulador )
fin

EJERCICIOS

-Elabore un algoritmo que lea para un conjunto de 50 estudiantes, tres notas de evaluaciones con los sgtes valores: nota1 30%, nota2 35%, nota3 35%. Para cada estudiante se debe calcular la nota definitiva, cuantos estudiantes ganaron y cuantos perdieron (teniendo en cuenta que la nota para aprobar es mayor o igual que 3.0), calcular cuántos pueden habilitar(2.0<=nota<3.0), cual es el promedio de notas de los que ganaron, cual es el promedio general de notas definitivas?.

- Diseñe un algoritmo que muestre los numeros primos que existen entre 1 y 100.


Fecha limite de entrega: 17 de julio de 2009