Translate

viernes, 22 de mayo de 2015

MÉTODOS DE ACCESO Y RECORRIDO CON VECTORES (SEMANA 12)

DEFINICIÓN

Un arreglo (matriz o vector) es un conjunto finito y ordenado de elementos homogéneos. La propiedad ordenados significa que el elemento primero, segundo, tercero,…, n-ésimo de un arreglo puede ser identificado. Los elementos de un arreglo son homogéneos, es decir, del mismo tipo de datos (todos, de tipo cadena o enteros, o reales, etc.).

Arreglos unidimensionales: Operaciones con Vectores

Las operaciones que se pueden realizar con vectores durante el proceso de resolución de un problema usando la programación son:
Recorrido (acceso secuencial)
—Lectura/escritura
—Asignación
—Actualización (añadir, borrar insertar)
—Ordenación
—Búsqueda

Se puede acceder a cada elemento de un vector para introducir datos (leer) en él o bien para visualizar su contenido (escribir). A la operación de efectuar una acción general sobre todos los elementos de un vector se le denomina recorrido del vector.Estas operaciones se realizan utilizando estructuras repetitivas, cuyas variables de control (por ejemplo i) se utilizan como subíndices del vector (por ejemplo S[i]). El incremento del contador del bucle producirá el tratamiento sucesivo de los elementos del vector.
Normalmente se utiliza la estructura de repetición desde, ya que se conoce de antemano la cantidad de veces que se desea repetir el bucle:
PARA i DESDE 1 HASTA
  ESCRIBA(‘Introduzca el elemento ‘ ,i, ‘del vector F: ’)
  LEA(F[i])
fin_PARA

También se pueden utilizar las estructuras de repetición mientras y repetir:
     i ¬ 1
     MIENTRAS i <= 20 
   ESCRIBA(‘Introduzca el elemento ‘ ,i, ‘del
                         vector F: ’)
  LEA(F[i])
    i ¬ i + 1
     fin_MIENTRAS

EJEMPLO

Se realiza una encuesta en la facultad de ingeniería de la Universidad de Antioquía en la cual se pregunta a cada estudiante en que semestre se encuentra (1-10) y en que programa estudia:

      1. Sistemas                                          6. Telecomicaciones
2. Civil                                                
7. Bioingeniería
3. Ambiental                                        8
. Sanitaria
4. Industrial                                         9. Materiales
5. Electrónica                                     10. Electrica


Se requiere que recojer  esta información y mostrar los porcentajes de distribución por semestre y carrera.

ENTRADA
carreras[10], semestre[10]:entero
carr, sem, bandera, total:entero
SALIDA
porcentaje:real

Algoritmo estudiantes

     variables: 
          carreras[10], semestre[10]:entero
          carr, sem, bandera, total:entero
          porcentaje:real

     INICIO
          PARA i DESDE 1 HASTA 10 CON_VARIACION+1
               carreras[i]=0
               semestre[i]=0
          Fin(PARA)
          bandera=0
          total=0
          MIENTRAS bandera==0
               ESCRIBA ("¿En qué semestre está?")
               LEA (sem)
               ESCRIBA ("¿En qué carrera está?")
               LEA (carr)
               semestre[sem]=semestre[sem]+1
               carreras [carr]=carreras[carr]+1
               total=total+1
               ESCRIBA ("ingrese 0 si desea continuar y otro valor para terminar")
               LEA(bandera)
          Fin(MIENTRAS)
          PARA i DESDE 1 HASTA 10 CON_VARIACION+1
               porcentaje =(semestre [i]/total)*100
               ESCRIBA ("Porcentaje semestre ", i, porcentaje")
               Fin (PARA)
  PARA i DESDE 1 HASTA 10 CON_VARIACION+1
               porcentaje =(carreras [i]/total)*100
               ESCRIBA ("Porcentaje carrera", i, porcentaje")
               Fin (PARA)
     FIN
Fin(estudiantes)


APLICACIONES 

Se aplica en la determinación de la cantidad de individuos de una población, como en los censos municipales. Ademas sirve para la clasificación estadística de estos individuos, como se mostró en el anterior ejemplo. 


REFERENCIAS 

http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/colecciones/vector.htm
http://www.unavarra.es/personal/victor_dominguez/LibroMatlabWEB.pdf
http://es.slideshare.net/MonjeOneble/clase-vector


lunes, 11 de mayo de 2015

VECTORES (SEMANA 11)

DEFINICIÓN

En el contexto de algebra lineal se tiene un concepto de vector y las operaciones que se pueden aplicar sobre él. Se puede escribir un vector como la lista de sus componentes ~v = (v1, . . . , vn) o, equivalentemente, como una columna.
En los algoritmos también existe el concepto de vector, el cual al igual que en el caso del algebra lineal facilita bastante al realización de algunos cálculos. Los vectores, en algoritmos, consisten en un grupo de variables del mismo tipo donde cada una esta identificada por la su ubicación en el grupo.

  
U(1)
U(2)
U(3)
...
U(n)
1
2
3
...
n


Los numeros de arriba son los datos almacenados y los de abajo son las posiciones del vector.

Vector [i]--> indice.
Vector [2]= U2.
Esto  esta indicando que el vector en la posición 1  esta guardando a U(1)


CARACTERISTICAS DE LOS VECTORES.

- Homogeneos = Datos del mismo tipo.
- Ordenados = Siempre va en el orden de sus casillas; no se salta ninguna.
- Finito = Tiene un fin.
- Tamaño fijo. 

Note que debajo de cada valor se muestra la posición que ocupa en el vector, a este indicador de posición se le conoce como índice ya que permite identificar variables específicas dentro del grupo que componen el vector.
La expresión U(i) Constituye el identificador de una variable y se refiere a la variable que ocupa la posición i-esima dentro del grupo de variables que conforman el vector U. De otro lado el nombre del vector sin definir ningún índice (U), también constituye un identificador que se refiere al grupo completo de variables que lo conforman. 
Para aclarar este concepto es posible valerse de una analogía: El nombre de un vector a secas (ej. U) se refiere a todas las variables que lo conforman, del mismo modo que el nombre de un conjunto residencial hacer referencia a todos los apartamentos que lo conforman. El nombre de un vector seguido de un índice entre paréntesis (ej. U(2) ) se refiere a una de las variables que conforman el grupo, del mismo modo que el nombre de un conjunto residencial seguido de un número de apartamento hace referencia a una vivienda en particular.

Problema
•Censo en la ciudad de Medellín.
•Mpio: código del municipio
•Dir: dirección
•Np: número de personas vivienda
•Cmed: acumulado censo

Algoritmo censo_en_medellín

Variables:
mpio,cemd,np,bandera: enteros
dir:alfanumérica

INICIO
        cmed=0  
        bandera=0  
        MIENTRAS bandera == 0
               LEA(mpio,dir,np)
               cmed=cmed+np
               LEA(bandera)
         Fin(MIENTRAS)                                                                                                                        ESCRIBA(cmed)
    FIN
Fin(censo_en_medellín)    


APLICACIONES 

Una aplicación muy interesante de los vectores es el tratamiento digital de imágenes.  Una imagen digital (en blanco y negro) se puede representar por un conjunto de vectores (matriz de tamaño nxm), donde cada posición es un entero en el intervalo [0, 255] que contiene la luminancia en ese punto (0 = negro, 255 = blanco).


REFERENCIAS

La mayor parte de lo aquí descrito son apuntes de clase de algoritmos y programación dictado por la Universidad de Antioquia
http://iimyo.forja.rediris.es/iimyo2.pdf
http://www.unavarra.es/personal/victor_dominguez/LibroMatlabWEB.pdf

lunes, 4 de mayo de 2015

SUBPROGRAMAS (SEMANA 10)

DEFINICIÓN 

Los subprogramas son rutinas, procedimientos o conjuntos de instrucciones que realizan una labor específica. Los subprogramas o subrutinas nacieron de la necesidad de no repetir innecesariamente un trabajo ya hecho. Pueden invocarse desde el cuerpo del programa principal cuantas veces se desee. Constituyen el núcleo de lo que se denomina programación estructurada, y permiten la descomposición de un problema complejo en subproblemas más sencillos abordables de forma independiente.





Haciendo una analogía se puede decir que los subprogramas cumplen lo que las funciones matemáticas.Desde las matemáticas el concepto de función es muy común y consiste en un valor dependiente de otro y de algunas operaciones aplicadas a este mismo. 
f(x)= (x+5)/2
f(5)= (5+5)/2
f(5)= 5

La anterior expresión define que una función llamada f, al recibir como insumo un valor x produce un nuevo valor diferente del valor de x, el cual se halla aplicando un procedimiento sobre el insumo -parámetro-x.  Al invocar la expresión se indica que se requiere calcular el valor que toma la función f cuando recibe como insumo un numero, esto implica tomar el insumo -parámetro- y aplicar el procedimiento definido sobre él. De otro lado existe funciones que se usan frecuente y de las cuales generalmente no nos preocupamos del procedimiento que se desarrolla en su interior para convertir los parámetros en resultados, uno de estos casos es la función coseno, para cual  en la mayoría de las ocasiones nos valemos de la calculadora para encontrar su valor.

Del mismo modo que ocurre en las matemáticas existen dos categorías en las cuales se pueden clasificar los subprogramas desde el punto de vista de un programador:
Los subprogramas de los cuales se conocen las instrucciones que aplican: son subprogramas que construye el mismo programador, y por lo tanto él define su nombre, los parámetros que deben recibir, el procedimiento que se aplica sobre estos parámetros y finalmente el resultado que debe producir. 
Los subprogramas de los cuales NO se conocen las instrucciones que aplican: son subprogramas que están a disponibilidad del programador a través de fuentes de externas, como pueden el propio lenguaje de programación que esta utilizando, el cual incluye ya un conjunto de subprogramas pre construidos. En este caso el programador conoce el nombre del subprograma, los parámetros que debe recibir y qué es lo que el subprograma hace, pero no como lo hace. 


APLICACIONES 


Los subprogramas  son muy útiles para abordar problemas de alta complejidad ya que permiten dividir el problema en problemas mas pequeños donde cada uno se soluciona a través de un subprograma.


REFERENCIAS 

La mayoria de lo que esta escrito en este documento son apuntes de clase, dictados por la universidad de Antioquia en el area de algoritmos y programacion.
http://www2.udearroba.co/pluginfile.php/89612/mod_resource/content/2/Modulo
http://platea.pntic.mec.es/vgonzale/cyr_0708/archivos/_15/Tema_3.6.htm

domingo, 26 de abril de 2015

CICLO PARA (SEMANA 9)

DEFINICIÓN

El CICLO PARA permite la ejecución repetida de un conjunto de acciones. El número de veces que el bloque es ejecutado esta determinado por los valores que puede tomar una variable contadora (de tipo entero), en un rango definido por un límite inferior (inclusive) y un límite superior (inclusive). Después de ejecutar el bloque de acciones en cada iteración, la variable contadora es incrementada en uno (1) automáticamente y en el momento en que la variable sobrepasa el límite superior el ciclo termina.

La principal diferencia de un bucle PARA con respecto a los bucles MIENTRAS y repetitivos , es que puede determinarse al comienzo del bucle cuántas veces se iterará el mismo, lo que muchas veces puede redundar en una optimización del código por parte de los compiladores. Los condicionales constituyen junto con los bucles los pilares de la programaciòn estructurada, y su uso es una evolución de una sentencia de lenguaje ensamblador que ejecutaba la siguiente línea o no en función del valor de una condición.

ESTRUCTURA

PARA id DESDE v_inicial HASTA v_final CON_VARIACION [variable o constante]
Instrucciones
Fin(PARA)

Ejemplo 1
Algoritmo muestra_numeros
Variables:
i: entero
INICIO
PARA i DESDE 1 HASTA 10 CON_VARIACION +1
ESCRIBA(i)
Fin(PARA)
FIN
Fin(muestra_numeros)

Ejemplo 2
Algoritmo muestra_numeros
Variables:
i: entero
INICIO
PARA i DESDE 1 HASTA 10 CON_VARIACION +2
ESCRIBA(i)
Fin(PARA)
FIN
Fin(muestra_numeros)

Ejemplo 3
Algoritmo muestra_numeros
Variables:
i: entero
INICIO
PARA i DESDE 10 HASTA 1 CON_VARIACION -1
ESCRIBA(i)
Fin(PARA)
FIN
Fin(muestra_numeros)

APLICACIÓN

Su uso principal se orienta a los vectores, pudiendo modificar, agregar, eliminar o consultar datos que se encuentren según el índice. Por esto último, una condición mínima del vector es que debe ser ordenado, por que si se intenta leer un dato inexistente, esto genera un error de programación.


REFERENCIAS

Gran parte de lo que se encuentra aqui escrito fue tomado de la clase de algoritmos y programacion dictada por la universidad de Antioquia
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/modulo3/cap_04/leccion_4.html
http://es.wikipedia.org/wiki/Bucle_for

viernes, 17 de abril de 2015

EJERCICIOS CICLO MIENTRAS (SEMANA 8)

EJERCICIOS RESUELTOS

1. Un profesor desea registrar las notas obtenidas por 20 de sus estudiantes, discriminando si son hombres o mujeres.
Se requiere un programa que capture la nota y el sexo (1 para hombres y 2 para mujeres) y realice un promedio para cada uno de los tipos. Al final debe indicar cuál de los dos (hombres o mujeres) tuvo un mejor desempeño 

 Algoritmo notas

Variables
nota, promedioh, promediom, acumh, acumm: reales
sexo, numest, conth, contm: entero

INICIO
numest=20
i=1 
acumh=0
acumm=0
conth=0
contm=0
MIENTRAS i<=numest
ESCRIBA(“Ingrese la nota y el sexo”)
LEA(nota, sexo)
SI sexo==1
acumh= acumh+ nota
conth=conth+1
DE_LO_CONTRARIO
acumm= acumm+nota
contm=contm+1
Fin(SI)
Fin(MIENTRAS)
Promedioh=acumh/conth
Promediom=acumm/conth
SI promedio>promediom
ESCRIBA(“Los hombres son mejores”)
DE_LO_CONTRARIO
SI promedio > promedioh
ESCRIBA(“Tienen un desempeño igual”)
Fin (SI)
Fin (SI)
FIN
Fin (notas)


2. Un ama de casa requiere comprar 15 productos. Realizar un algoritmo que capture el precio  de cada producto y al final indique cuantos productos costaron menos de 10000 y 10000 o más. Además debe indicar el total de la compra.

Algoritmo precio

Variables
numprod, i, , contmenor, contmayigu: entero
total_compra, precio= reales

INICIO
numprod= 15
i= 1
precio=0
total_compra= 0
contmenor= 0
contmayor= 0
MIENTRAS i<= numprod
ESCRIBA (“ingrese el precio”)
LEA(precio)
total_compra=total_compra+precio
SI precio<10000
contmenor= contmenor +1
i=i+1
DE_LO_CONTRARIO
SI precio>=10000
contmayigu= contmayigu+1
Fin(SI)
Fin (MIENTRAS)
ESCRIBA(“El total de la compra fue de:”,total_compra)
ESCRIBA(“El numero de productos con precio mayor o igual a 10000 es de:”, contmayigu)
ESCRIBA(“El numero de productos con precio menor a 10000 es de:”, contmenor)
FIN
Fin(precio)


3. Elabore un programa que imprima la tabla de multiplicar de un numero  que se pida  y vaya desde el 1 hasta el 10.

Algoritmo tabla_multiplicar

Variables
i, numero, resultado, j: enteros

INICIO
ESCRIBA(“Ingrese el numero que desea saber”)
LEA(numero)
I=1
MIENTRAS i<=10
J=1
MIENTRAS j<=10
resultado= i * j
ESCRIBA(numero”x”,i,”=”resultado)
I=i+1
Fin (MIENTRAS)
FIN
Fin (tabla_multiplicar)


APLICACIÓN

Estos ejercicios resueltos bajo el ciclo mientras se pueden aplicar a cada una de las situaciones ya descritas o alguna que se asemeje, ademas es un claro ejemplo del manejo de este ciclo. Es de resaltar que es muy importante realizar después de desarrollar cada ejercicio una prueba de escritorio, con la cual se constate su  buen funcionamiento. 


REFERENCIAS

Estos ejercicios fueron tomados de la clase de algoritmos y programación dictados por la Universidad de Antioquia (facultad de ingenieria).
dis.unal.edu.co/~programacion/book/modulo2b.pd
www.virtual.unal.edu.co/cursos/ingenieria/2001839/.../leccion_5.htm

viernes, 10 de abril de 2015

CICLO MIENTRAS (SEMANA 7)

DEFINICIÓN


La estructura CICLO MIENTRAS  esta conformada por instrucciones que permiten al programador  instruir la maquina para que ejecute  un bloque de acciones ‘mientras’ que una condición dada se cumpla, es decir, cuando la condición evalúa a verdadero. La condición es evaluada antes de ejecutar el bloque de acciones y si la condición no se cumple, el bloque no se ejecuta. De esta manera es que el número de repeticiones del bloque de acciones sea cero, pues, si la condición la primera vez evalúa a falso, el bloque no será ejecutado alguna vez. 

La forma general del ciclo mientras es la siguiente: 
Resultado de imagen para forma general ciclo mientrasLa condición puede ser una expresión relacional o lógica. Por lo general se evalúa el valor de una variable que cambia durante cada iteracion. La llamada variable de control.

Pasos para la estructura MIENTRAS
1. Definir cual es la instruccion repetitiva.
2. Definir la condicion y variable de control que expresa hasta cuando se deben iterar las instrucciones.

Ejemplos de Condicion
Turno <= 10
dinero >10000 & usuarios > 30
intereses <= 1,1
i < 20

Variable contadora
Sirven para llevar control de una secuencia de numeros o contar eventos. Se adiciona por lo regular un numero constante.
La técnica es:
  1. Inicializar una variable a cero o uno antes del ciclo repetitivo.
  2. Dentro del ciclo repetitivo, incrementar en uno la variable.
            i= 0...
            i=i+1
            i=1+2

Variable acumuladora
Es similar al contador y sirven para acumular cantidades relacionadas con el resultado de una instrucción. Se inicializa en cero y en cada repetición se incrementa en diferentes valores. El resultado final es que la variable acumula la suma de los valores añadidos en cada repetición.

salario= horas*valor_hora
total_salarios= total_salarios+salario


Ejemplo:
Elabore un algoritmo que sume los numeros de 1 hasta n. Siendo n un numero que ingresa el usuario.

Algoritmo suma
variables:
         i: entero

         suma: entero
         n: entero

INICIO
         i := 1
         suma := 0

ESCRIBA("Ingrese el valor n")
LEA(n)
MIENTRAS (i <= n

         suma := suma + i 
         i := + 1Fin(MIENTRAS)

ESCRIBA( “La suma de los valores es:”, suma)
FIN

Fin( suma )


APLICACIONES 

El CICLO MIENTRAS permite ejecutar un bloque de instrucciones mientras que la evaluación de una expresión lógica de cómo resultado verdadero; lo que lo hace de utilidad en la ingeniería ambiental para casos como la realización de un algoritmo de secuencia fibonacci en donde se necesiten configuraciones biológicas, como por ejemplo en las ramas de los árboles, en la disposición de las hojas en el tallo, en la flora de la alcachofa, las inflorescencias del brécol romanesco y en el arreglo de un cono. Ademas en modelos de crecimiento poblacional de alguna especie animal en un ecositema o comunidad.


REFERENCIAS
http://www.edu4java.com/es/java/sentencia-while-variable-contador-acumulador.html
http://dis.unal.edu.co/~programacion/book/modulo2b.pdf
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/modulo3/cap_04/leccion_1.html