lunes, 10 de junio de 2013

5. Ciclos.

Los ciclos.
Un algoritmo se comporta de una manera secuencial, cada instrucción se lee desde inicio hasta fin. Esto nos da pie a pensar que para lograr repetir algo, será necesario copiarlo muchas veces. En el mundo de los algoritmos encontramos la forma de repetir las veces que deseamos una instrucción o un bloque de ellas, a este elemento lo denominamos ciclo. En la naturaleza y en el mundo real la mayoría de cosas son cíclicas, comer, dormir, respirar, trabajar, estudiar, descansar.... son cosas que se repiten con diferente periodicidad.
¿Qué son los ciclos? 
Son estructuras que permiten hacer  n repeticiones de un bloque de instrucciones.
En los algoritmos los ciclos son diversos, para el caso de estudio del curso seleccionaremos el ciclo mientas, en inglés while y en DFD MQ. El ciclo funciona de modo que: mientras la expresión de control sea verdadera se ejecuta todo el bloque que contienen y cuando llega al final, se devuelve a la expresión de control y nuevamente pregunta, de ser verdad, sigue repitiendo este proceso mientras sea verdad dicha expresión y cuando no, termina saltando el bloque y continuando con las demás acciones programadas en el algoritmo.
El ciclo mientras.
Ya conocemos que la finalidad de un ciclo es hacer un número de repeticiones y en dichas repeticiones denominadas iteraciones realizar otras instrucciones que permitan dar respuesta al problema originalmente planteado.
El ciclo mientras se fundamenta en un expresión relacional o lógica al igual que lo hacen las decisiones.
El ciclo mientras funciona preguntado por una expresión lógica o relacional si es verdad ingresa al ciclo y cuando es falsa salta el bloque y continua en la siguiente instrucción después del bloque mientras.
En esta forma genérica, si la expresión es verdadera se ejecuta inst1, inst2, inst3, inst4 tantas veces como sea verdad la expresión, es decir se deja de repetir cuando la expresión sea falsa. Un dato muy importante es que de alguna forma la expresión  tenga elementos que cambien al interior del ciclo.Cuando los elementos no cambian, se puede generar un ciclo que nunca termina o denominado infinito.
Empezaremos por definir una forma general de usar el ciclo mientras, nos concentraremos en lograr que el ciclo realice n repeticiones. 
La forma general de hacer esto, es definir cuántas repeticiones se desean hacer, crear una expresión que sea verdadera mientras no se cumpla el total de las repeticiones y dentro del ciclo modificar la variable de control del ciclo.






El concepto de contador.

¿Qué es un contador? 
Es una variable, cuya finalidad es la de permitir guardar un conteo sobre algo que se necesita. Desde el punto de vista de la programación es lo siguiente.
variable = variable + K
donde K es una constante numérica que puede ser entera o decimal.


Ejemplos realizados
Construir un programa que lea el nombre de un usuario y su edad. Validar que la edad sea correcta en un rango de 10 a 90. Imprimir el nombre tantas veces como años tiene la persona.
#Algoritmo construido en python 3.2
#Forma 1 de solucionar el planteamiento dado.
n=input("digite nombre")
e=int(input("edad"))
if e>=10 and e<=90:
    c=1
    while c<=e:
        print(n)
        c+=1
else:
     print("fuera del rango")


#Algoritmo construido en python 3.2
#Forma 2 de construir el problema planteado.
n=input("digite nombre")
e=int(input("edad"))
if e<10 or e>90:
    print("fuera del rango")
else:
    c=0
    while c<e:
        print(n)
        c+=1
Construir un programa que realice un conteo descendente desde m hasta 0. Si m es negativo volverlo positivo.
#Algoritmo construido en Python 3.2 Forma 1 de resolver el planteamiento dado.
m=int(input("Digite m"))
if m<0:
    m=-m
c=0
while c<=m:
    print(m-c)
    c+=1



#Algoritmo construido en Python 3.2 Forma 2 de resolver el planteamiento dado
m=int(input("Digite m"))
if m<0:
    m=-m
while m>0:
    print(m)
    m-=1

Imprimir n números pares desde 0 en adelante.

#Algoritmo construido con Python 3.2
#Forma 1 de solucionar el planteamiento dado
m=int(input("numero pares"))
c=1
while c<=m:
    print(c*2)
    c+=1


#Algoritmo construido con Python 3.2
#Forma 2 de solucionar el planteamiento dado
m=int(input("numero pares"))
c=1
p=2
while c<0:
    print (p)
    p+=2
    c+=1

#Algoritmo construido con Python 3.2
#Forma 3 de solucionar el planteamiento dado
m=int(input("numero pares"))
c=1
while c<=m*2:
    if c%2==0:
        print(c)
        c+=1
Leer la edad de n personas, determinando cuántas de las edades están en el intervalo 18 a 90.
#Algoritmo desarrollado en Python 3.2
n=int(input("numero personas"))
p=0
while n>0:
    e=int(input("digite edad"))
    if e>17 and e<91:
        p+=1
        n-=1
        print(p,"personas en el rango")
Realizar esta figura de forma que sea el usuario quien ingrese el número de líneas que se desean hacer y la distancia para separar cada línea. Validar que las líneas sean mayores a 10 y la distancia debe ser positiva. Si los datos son incorrectos, imprimir en letra grande "Datos incorrectos". 





A continuación algunos ejemplos :

1.- Realice un algoritmo que permita calcular y dar como salida el promedio general de una sección, tomando en cuenta que esta compuesta por 25 estudiantes y que se tiene la nota definitiva de cada uno de ellos.
Respuesta: Se utilizará una variable suma que irá acumulando las notas cada vez que se lea. Al final se calcula el promedio dividiendo el valor de la suma entre 25 estudiantes.
El algoritmo será:
1. Inicio
2. Hacer Suma = 0 // Inicializamos el sumado en cero (Al principio la suma es igual a cero)
3. Para i = 1 hasta 25 hacer //Se inicia el ciclo para 25 estudiantes, comenzando con el estudiante 1
4. Leer la nota //Leemos la nota definitiva del estudiante
5. Hacer Suma = Suma + nota //En la variable Suma acumulamos la suma de cada nota leida
6. Fin Para //Fin del ciclo
7. Se calcula el Promedio: Promedio = Suma/25 //Recuerde que en Suma tenemos la suma de las notas
8. Se escribe el promedio //Una vez calculado el promedio de todas las notas lo imprimimos
9. Fin
2. Sean N estudiantes. Hacer un algoritmo que lea las cuatro notas de cada estudiante e imprima la nota definitiva de cada uno, sabiendo que la nota definitiva es igual a la suma de cuatro notas multiplicada por cien, divididas entre 4 y al resultado se le suma uno.
Datos de entrada: Qué me dan (o que voy a leer): N estudiantes. Cada uno con cuatro notas N1, N2, N3 y N4.
Datos de Salida: Qué me piden (o que voy a escribir): La nota definitiva de cada uno NotaD
Procedimiento: NotaD = ((N1 + N2 + N3 + N4)*100/4) + 1). Hay que hacerlo para casa estudiante.
El algoritmo sería:
1. Inicio.
2. Leer N // (Número de estudiantes)
3. Para I = 1 to N hacer //Comienza el ciclo
4. Leer N1, N2, N3, N4 // Leemos las cuatro notas
5. NotaD = ((N1 + N2 + N3 + N4)*100/4) + 1) // Caculamos la nota definitiva
6. Imprimir NotaD
7. Continuar ciclo
8. Fin
Fíjense que los pasos 4 al 6 están dentro del ciclo y se repetirán N veces.
3.- Dado un grupo de 75 Números (Diferentes a Cero), realice un algoritmo que permita determinar y dar como salida lo siguiente:
* Número Mayor y número menor encontrado en el grupo
* Cantidad de Números Mayores a 150
* Cantidad de Números Negativos Encontrados
* Promedio de los Positivos Encontrados.
4.- Dada La C.I., Nombre y la Nota Definitiva de 5 Materias de cada estudiante pertenecientes a un grupo de 35; realice un algoritmo que permita calcular y dar como salida el promedio de notas de cada estudiante.
5.- Realice un Algoritmo que permita calcular y dar como salida el promedio de bateo (PB) de cada jugador perteneciente a un equipo de 40 jugadores, tomando en cuenta que se tienen los siguientes datos:
* Nombre del Jugador
* Veces al Bate (VB)
* Hit Conectados (HIT)
* Extrabases Conectadas (EXT)
* Cantidad de Sacrificios (S)
* Cantidad de Bases por Bolas Recibidas (BB)
Nota: PB = BBC / VLB * 1000
donde:
BBC = HIT + EXT
VLB = VB – S – BB
6.- CANTV Posee dos tipos de clientes: Residencial y Empresarial, realice un algoritmo que permita procesar “n” cantidad de clientes teniendo como datos por C/U. de ellos: Código del Cliente, Tipo de Cliente, Lectura Actual, Lectura Anterior; Calculando y dando como salida la cantidad de Impulsos consumidos y el neto a pagar por cada cliente.
Los Impulsos se cobran a razón de:
Residencial 25 Bs.
Empresarial 35 Bs.
Nota: Cant. De Imp = L. Actual – L. Anterior.
7.- Una Ferretería vende dos tipos de Cables, Cable Tipo A (200 Bs. MT) y Cable Tipo B (300 Bs. MT ); realice un algoritmo que teniendo como datos por cada cliente su nombre, tipo de cable a comprar y cantidad de metros requeridos, calcule y de cómo salida el nombre y el neto a pagar por cada cliente, tomando en cuenta que existe un grupo indeterminado de ellos y que la empresa da una rebaja del 10% por cada compra que exceda de los 100 MT de cable de cualquier tipo
8.- Se toman los Mismos datos del 7 con la diferencia que se da la rebaja del 10% si se compran mas de 100 Mts de Cable tipo A y el 20 % si se compran mas de 100 Mts de Cable Tipo B.
9.- Un Tecnológico, ofrece un curso “x” y desea realizar un algoritmo que permita determinar y dar como salida la cantidad de dinero recaudado por concepto del curso; teniendo en cuenta que se tiene por cada participante la siguiente información:
* Cedula de Identidad
* Nombre del Participante
* Procedencia (At = Alumno del Tecnológico, Dt = Docente del Tecnológico, Pg = Publico en General).
Tomando en cuenta que la procedencia se cobra de la siguiente tarifa:
* At = 10.000 Bs.
* Dt = 20.000 Bs.
* Pg = 35.000 Bs.
Nota: El cupo para el curso no es limitado.
10.- Una Empresa de Reproducción desea realizar un algoritmo que permita calcular y dar como salida el pago que tiene que hacer cada cliente por concepto de copias, tomando en cuenta que se tienen los siguientes datos:
* Cod. de Cliente
* Tipo de Copia (Carta, Oficio, ExtraOficio)
* Cantidad de Copias
Además el Algoritmo debe reportar lo siguiente:
* Total de Copias tipo Carta y Tipo Oficio procesadas por la empresa.
* Promedio de Ventas en Bs.
* Cod. Del Cliente que cancelo mas dinero por el servicio.
El Valor por tipo de Copia es:
* Carta 0,30 Bs.
* Oficio 0,40 Bs.
* Extraoficio 0,50 Bs.
El Algoritmo debe funcionar para “n” cantidad de clientes.
11.- Realice un Algoritmo que permita procesar a “n” cantidad de alumnos, tomando en cuenta que se tienen los siguientes datos:
* Nombre del Alumno
* Especialidad (I, R, A, B, P, D, T)
* Turno (M, T, N)
El Algoritmo debe reportar y dar como salida lo siguiente:
* Cantidad de Relaciones Industriales (R)
* Cantidad de Alumnos de Informática (I) del Turno de la Noche.
12.- Realice un Algoritmo que teniendo en cuenta los siguientes datos de entrada:
* Cod. De Cliente
* Tipo de Cuenta (Ahorro, Corriente)
* Tipo de Actualización (Aporte, Retiro)
* Monto de la Transacción
Calcule y de cómo salida lo siguiente:
* Monto Total de Aporte en Ahorro
* Monto Total de Retiro en Corriente
* Promedio de Retiro en Ahorro.
13.- Realice un Algoritmo que permita dar como salida la población de dos países (a y b), teniendo en cuenta para tal propósito lo siguiente:
* En el Primer Año el País “a” tiene menos población que el país “b”
* Las Tazas de crecimiento de los países “a” y “b” son de 6% y 3% anuales respectivamente.
* Se debe dar como salidas las poblaciones desde el segundo año hasta que la población de “a” exceda a la población de “b”, además la cantidad de años que transcurrieron para que esto sucediera
14.- Realice un algoritmo que permita calcular y dar como salida la temperatura media, mayor y menor ocurrida durante el transcurso de un día.
15.- Data la Nota de Matemática, Estadística e Informática de un grupo de 25 alumnos, realice un algoritmo que permita calcular y dar como salida lo siguiente:
* Promedio de Informática
* Cantidad de aprobados en matemática
* Nota mayor de estadística
* Nota menos de Informática y Nombre del Br. Que la Obtuvo.




CICLO FOR
El ciclor for o para en español, es un ciclo repetitivo donde el usuario decide cuantas veces quiere que repita una pregunta en el algoritmo. La estructura de este ciclo es la siguiente.



para( exprecion logica) exprecion incrementada.

instruccion 1 
instruccion2
fin para

EJEMPLO.

Un algoritmo que lea 5 numeros dados por un usuario y luego muestra el resultado de la suma.

INICIO
ENTERO: N, i, SUMA
SUMA=0
PARA(i= 1 HASTA ,5 , 1)
MOSTRAR ('DIGITE UN NUMERO')
LEER (N)
SUMA= SUMA+N
FIN PARA
MOSTRAR ('LA SUMA ES:', SUMA)
FIN

Donde 5 son las veces que quiero que se repita la pregunta y 1 de cuanto en cuanto se incrementa, en este casa de 1 en 1.








EJEMPLOS:

Un algoritmo que muestre los pares que hay entre 1 y N.

 INICIO
ENTERO: N, i
MOSTRAR ('DIGITE NUMERO')
LEER (N)
PARA( i= 2 HASTA N, 2)
MOSTRAR (LOS NUMERO PARES SON:', i)
FIN PARA
FIN.



Un algorimo que reciba un dato y lo calcule y mustre el factorial.


INICIO
ENTERO: N,i, FACTORIAL
MOSTRAR ('DIGITE UN NUMERO')
LEER(N)
FACTORIAL=1
PARA( i= 1, HASTA , N, 1)
FACTORIAL= FACTORIAL* i
FIN PARA
MOSTRAR ('EL FACTORIAL ES:', FACTORIAL)
FIN




Un algoritmo que permita mostrar los numeros primos existentes entre 1 y N.

INICIO

ENTEROS:N,i,PRIMO,j


MOSTRAR('DIGITE HASTA Q NUMEERO DESEA VER NUMEROS 

PRIMOS')

LEER:(N)

PARA(i=1, N,1)

PRIMO:1

SI ((i=1)OR(i=2)OR(i=3))

MOSTRAR(i,' ES NUMERO PRIMO')

SINO

PARA(j=2,i-1,1)

SI((i MOD j)!=0)

PRIMO=PRIMO+1


SI(PRIMO=i-1)

MOSTRAR(i,' ES NUMERO PRIMO')

FIN SI

FIN SI

FIN PARA

FIN PARA

FIN


Un algoritmo que permita ingresar N datos correspondientes al genero de N, numero de personas y determine el porcentaje de hombres y mujeres que hay.


INICIO



ENTEROS:N,i,SEXO
REALES:M,F
MOSTRAR:('DIGITE N° DE PERSONAS')
LEER:(N)
M=0


F=0


PARA(i,1,N,1)

MOSTRAR:('DIGITE SEXO 1 MASCULINO, 2 PARA FEMENINO')

LEER:(SEXO)
SI (SEXO=1)

M=M+1

SINO

F=F+1

FIN PARA

F=(F*100)/N

M=(M*100)/N


MOSTRAR:('EL PORCENTAJE DE MUJERES ES: ',F)

MOSTRAR:('EL PORCENTAJE DE HOMBRES ES: ',M)

FIN

3 comentarios: