Fundamentos de Algoritmos y Estructuras de Datos para Programación
Fundamentos de Algoritmos y Estructuras de Datos
Materia: 27/08/2011
Definición de Problema
Problema: Situación anómala que requiere solución.
Ejemplo 1: Neumático Pinchado
Situación: Una persona viaja en su auto de Santiago a Viña, y en la mitad del camino pincha una rueda. (Problema principal)
Consideraciones:
- Es de día
- Tipo de camino
- Lleva herramientas
- Lleva rueda de repuesto
Pseudoalgoritmo: Secuencia de Pasos
Pseudoalgoritmo: Secuencia de pasos entendibles por todos.
- Detener el vehículo.
- Encender las luces de emergencia.
- Bajarse del vehículo.
- Verificar la falla.
- Colocar el triángulo de seguridad.
- Sacar herramientas y la rueda de repuesto.
- Soltar los pernos.
- Levantar el vehículo.
- Sacar el neumático pinchado.
- Poner el neumático bueno.
- Poner los pernos.
- Bajar el vehículo.
- Apretar los pernos.
Ejemplo 2: Gotera en Casa
Situación: Un señor está sentado en el salón de su casa viendo la televisión. Afuera llueve intensamente.
Consideraciones:
- Hay una gotera en el techo del salón.
- La televisión no se ve bien.
- El suelo está mojado.
- El programa de televisión no es entretenido.
Pasos Lógicos:
- Levantarse del sillón.
- Ponerse los zapatos.
- Verificar dónde está la gotera.
- Buscar un balde.
- Poner el balde en la gotera.
- Buscar paños.
- Secar el suelo.
Diagrama de Flujo: Símbolos Fundamentales
- I
- Inicio / Fin
- Conector
- Conector
- Proceso / Paso / Instrucción
- Proceso / Paso / Instrucción
- Lectura / Salida de Datos
- Lectura / Salida de Datos
- Si / No
- Decisión
- Conector Fuera de Página
- Conector Fuera de Página
Diagrama del Problema de la Gotera
(Representación visual de un diagrama de flujo con decisiones ‘Si’ y ‘No’ no incluida en el texto original, solo mención.)
Algoritmos Básicos y Variables
Algoritmo para Sumar Dos Números
Problema: Sumar dos números y entregar el resultado.
- Inicio
- Definir N1, N2, N3 (Variables)
- Pedir Valor N1
- Pedir Valor N2
- Sumar N3 = N1 + N2
- Mostrar N3
- Fin
Variables: Tipos de Datos
- Numérico Entero: (Ej.: 10, 20, 30, 40)
- Alfanumérico: (Ej.: “Contenido”, “Juan”, “1”, “%”)
- Constante: (Ej.: IVA = 19%)
- Numérico con Decimales: (Ej.: 10.1, 1.2)
Conceptos Fundamentales
- Dato
- Símbolo que no tiene significado por sí mismo.
- Información
- Conjunto de datos procesados.
- Diagrama de Contexto
- Diagrama general de una situación puntual.
(Representación de suma de datos: 5, 10 + 5+10 = 15)
Algoritmo para Determinar Mayoría de Edad
Problema: De acuerdo a la edad de una persona, determinar si es mayor o menor de edad.
- Inicio
- Definir Variable Edad
- Leer Edad
- Si Edad >= 18
- Mostrar “Mayor de 18”
- Si no
- Mostrar “Menor de Edad”
- Fin SI
- Término
(Símbolos de diagrama de flujo: Imprimir, Desplegar, Mostrar, Salida de Datos; Si/No)
Almacenamiento y Gestión de Datos
Conceptos de Almacenamiento
- Dato
- Unidad mínima de información (se almacena).
- Campo
- Espacio para almacenar un tipo específico de dato (se almacena).
- Registro
- Conjunto de varios campos relacionados.
- Tabla / Planilla
- Colección de registros.
- Archivo
- Colección de registros, identificado con un nombre. Puede ser sin clave de acceso o con clave de acceso.
Ejemplo de Registros en un Archivo
Registro | ID | Nombre | Estado Civil | Dirección | Género |
---|---|---|---|---|---|
1 | 1-9 | Jose U. | Soltero | Alameda 500 | M |
2 | 100-9 | Pablo S. | Casado | Alameda 600 | M |
La capacidad de un archivo depende de la capacidad del HDD.
01/09/2011
Ejemplo 1: Cálculo de Salario
Problema: Dada la cantidad de horas de un trabajador y el valor por hora, calcular su salario e imprimir.
- Archivo
- Entidad.
- Base de Datos
- Conjunto de archivos relacionados.
Estructura de Datos para Boletas
Boleta (General) | Detalle de Producto |
---|---|
Nº Boleta | Nº Boleta |
Fecha | Producto |
Local | Cantidad |
Forma de Pago | Precio |
Proveedor | |
IVA | |
Neto | |
Total |
Ejemplo de Datos de Boleta
Nº Boleta | Producto | Cantidad | Precio |
---|---|---|---|
0001 | Lápiz | 1000 | 100 |
0001 | Goma | 2000 | 50 |
0001 | Regla | 1000 | 300 |
0001 | Forro | 1000 | 1000 |
Nº Boleta | Fecha | Local | F.P. | Prov. | IVA | Neto | Total |
---|---|---|---|---|---|---|---|
0001 | 20110901 | 01 | 01 | 10 | 100 | 800 | 900 |
Ejemplo 2: Cálculo de Descuento
Problema: Dado un monto, calcular el descuento considerando lo siguiente:
- Si el monto es mayor a 1000, el descuento es del 10%.
- Si el monto es menor o igual a 1000, el descuento es del 2%.
- Mostrar el valor del descuento.
Algoritmo para el Ejercicio 1 (Salario)
- Inicio
- Definir Variables: Hora, Valor-Hora, Sueldo
- Leer Hora, Valor-Hora
- Calcular Sueldo = Hora * Valor-Hora
- Mostrar Sueldo
- Fin
Algoritmo para el Ejercicio 2 (Descuento)
- Inicio
- Definir Variables: Monto, Dcto10 = 0.1, Dcto2 = 0.02, Mdcto
- Leer Monto
- Si Monto > 1000
- Mdcto = Monto * Dcto10
- Si No
- Mdcto = Monto * Dcto2
- Fin Si
- Mostrar Mdcto
- Terminar
(Símbolos de diagrama de flujo: Si/No)
Conceptos Avanzados de Algoritmos
Análisis de Traza
Análisis de Traza: Sirve para revisar el algoritmo paso a paso.
03/09/2011
Ciclos e Iteraciones
Ciclo / Iteración: Réplica de un proceso N veces.
Concepto de Ciclo
Mientras (condición)
Proceso
Fin Mientras
Desde Variable = 1 Hasta 5
Proceso
Fin Desde
Conceptos Clave
- Contador
- Variable que sirve para contar la cantidad de veces que se realiza algo.
- Acumulador
- Variable que acumula un resultado.
Algoritmo con Ciclo y Análisis de Traza
Algoritmo:
- Inicio
- Definir Monto, Valor-Dcto, Contador
- Contador = 0
- Mientras Contador < 5
- Contador = Contador + 1
- Leer Monto
- Si Monto > 1000
- Valor-Dcto = Monto * 0.1
- Si no
- Valor-Dcto = Monto * 0.02
- Fin Si
- Mostrar Valor-Dcto.
- Fin Mientras
- Terminar
Análisis de Traza:
Contador | Monto | Valor Dcto. |
---|---|---|
0 | 400 | 8 |
1 | 700 | 14 |
2 | 2000 | 200 |
3 | 3000 | 300 |
4 | 0 | 0 |
5 |
Aquí se muestra cómo quedan las variables después de cada iteración.
Procesamiento de Archivos con Ciclos
(Valores de ejemplo para el archivo de montos: 1: 400, 2: 700, 3: 2000, 4: 3000, 5: 0)
- Abrir Archivo Montos
- Definir Valor-Dcto.
- Mientras No EOF (Montos)
- Leer Monto(Montos)
- Si Monto(montos) > 1000
- Valor-Dcto = Monto(montos) * 0.1
- Si no
- Valor-Dcto = Monto(montos) * 0.02
- Fin SI
- Mostrar Valor-Dcto
- Fin Mientras
- Cerrar Montos
- Terminar
Tipos de Estructuras Condicionales
1. Simples
Si (condición)
Instrucción
Fin Si
(Representación de diagrama de flujo: Si / No)
2. Dobles (Si-Sino)
Si (condición)
Instrucción 1
Si No
Instrucción 2
Fin Si
3. Anidadas
Si (condición 1)
Si (condición 2)
Si (condición 3)
Instrucción A
Fin SI
Fin Si
Fin Si
Si (condición X)
Instrucción 1
Si No
Si (condición Y)
Instrucción 2
Fin Si
Fin Si
Algoritmo de Acumulación con Traza
(Valores ingresando al flujo de datos)
- Inicio
- Definir Contador = 0, Valor, Total = 0
- Mientras Contador < 5
- Leer Valor
- Contador = Contador + 1
- Total = Total + Valor
- Fin Mientras
- Mostrar Total
- Terminar
Análisis de Traza:
Contador | Valor | Total |
---|---|---|
0 | 2 | 2 |
1 | 3 | 5 |
2 | 7 | 12 |
3 | 5 | 17 |
4 | 3 | 20 |
5 |
(Símbolos de diagrama de flujo: Si / No)
Procesamiento de Notas de Estudiantes
Archivo de Notas
Reg. | Nombre | Nota1 | Nota2 | Nota3 |
---|---|---|---|---|
1 | Pedro | 4 | 3 | 6 |
2 | Juan | 5 | 4 | 5 |
3 | Diego | 7 | 7 | 7 |
4 | Jose | 2 | 3.5 | 4 |
Requerimientos del Algoritmo de Notas
- Recorrer el archivo de notas de principio a fin y, por cada alumno, calcular el promedio de notas. Por cada registro leído, imprimir o mostrar el Nombre, Nota1, Nota2, Nota3 y el promedio.
- Incorporar al algoritmo anterior lo siguiente: Determinar o encontrar el alumno cuyo promedio es el mayor e imprimirlo una vez que finalice el programa.
Algoritmo para Procesar Notas
- Inicio
- Abrir Notas
- Definir Promedio = 0, Pmayor = 0, Nmayor = “”
- Leer Primer Registro de Notas
- Mientras No EOF(Notas)
- Promedio = (Nota1 + Nota2 + Nota3) / 3
- Imprimir Nombre, Nota1, Nota2, Nota3, Promedio
- Si Promedio > Pmayor
- Mover Promedio a Pmayor
- Mover Nombre a Nmayor
- Fin SI
- Leer Siguiente Registro de Notas
- Fin Mientras
- Imprimir Nmayor, Pmayor
- Cerrar Archivo
- Fin
Instrucción: Realizar Diagrama de Flujo del Algoritmo Anterior.
10/09/2011
Procesamiento de Ventas y Productos
Información Requerida de Archivos
Dados los siguientes archivos, se requiere obtener la siguiente información:
- Cantidad total por producto vendido.
- Total de ventas por producto.
Archivo de Productos
Código | Descripción | Precio |
---|---|---|
001 | Radio | 1000 |
002 | T.V. | 2000 |
003 | Celular | 500 |
Archivo de Ventas
Código | Cantidad | Nº Boleta |
---|---|---|
001 | 2 | 10 |
001 | 1 | 20 |
002 | 3 | 30 |
001 | 1 | 40 |
003 | 2 | 50 |
Algoritmo para Procesar Ventas por Producto
- Inicio
- Definir Cproducto = 0, Tvta = 0
- Abrir Archivos Productos, Ventas
- Leer Primer Registro de Productos
- Mientras No EOF(Productos)
- Leer Primer Registro de Ventas (Reiniciar lectura de Ventas para cada producto)
- Mientras No EOF (Ventas)
- Si Producto.codigo = Ventas.Codigo
- Cproducto = Cproducto + Ventas.cantidad
- Tvta = Tvta + (Ventas.cantidad * Producto.precio)
- Fin Si
- Leer Siguiente Registro de Ventas
- Fin Mientras
- Mostrar Producto.codigo, Producto.Descripcion, Cproducto, Tvta
- Leer Siguiente Registro de Productos
- Cproducto = 0, Tvta = 0 (Reiniciar contadores para el siguiente producto)
- Fin Mientras
- Cerrar Archivos Productos, Ventas
- Fin
Instrucción: Desarrollar Diagrama de Flujo del Algoritmo Anterior.
Conceptos de Estructura de Archivos
- Archivo
- Contiene Registros.
- Registro
- Contiene Campos.
- Campos
- Contienen Datos.
Proyecto de Automatización de Librería
Descripción del Proyecto
Un matrimonio con capital decide invertir en una cadena de locales cuyo objetivo será vender o distribuir libros, diarios, revistas, enciclopedias, golosinas, etc. Actualmente, toda la administración se realiza de manera manual. La inversión incluye la adquisición de computadores e impresoras para automatizar los procesos.
Administración Manual Actual
- Registro de Clientes (en libros físicos)
- Registro de Productos (en libros físicos)
- Registro de Ventas (en libros físicos)
- Registro de Compras (en libros físicos)
Requerimientos del Proyecto
- Confeccionar un Diagrama de la Situación Actual.
- Confeccionar un Diagrama de la Situación Propuesta.
- Definir archivos, registros, campos y datos para lo que se requiere en la nueva situación.
- Construir algoritmos y/o diagramas de flujo para dar solución a los siguientes requerimientos:
Requerimientos Específicos:
- Cantidad total y valor total de cada producto vendido.
- Cantidad total y valor total de todos los productos vendidos.
- Implementar un proceso que indique cuál es el cliente que más compra.
15/09/2011
Ejercicios Prácticos de Algoritmos
Ejercicio 1: Emisión de Factura
Problema: Escribir un algoritmo que permita emitir la factura correspondiente a la compra de un artículo determinado, del que se adquiere una o varias unidades. El IVA es del 19%, y si el precio BRUTO (Precio de Venta + IVA) es mayor a $13.000, se debe realizar un descuento del 5%.
Salida Requerida:
- Precio por Número de Artículos
- IVA
- Descuento (DCTO)
- TOTAL
Instrucción: Hacer Algoritmo.
15/09/2011
Ejercicio 2: Análisis de Notas de Estudiante
Problema: Dado “N” notas de un estudiante, calcular:
- Cuántas notas tiene reprobadas.
- Cuántas notas tiene aprobadas.
- Promedio de todas las notas.
- Promedio de notas reprobadas.
- Promedio de notas aprobadas.
Instrucción: Construir Algoritmo.
Estructura de Datos Avanzadas
Arreglos (Listas)
Arreglo: Lista de datos del mismo tipo.
- Arreglo Alfanumérico
- Arreglo Numérico
La forma de realizar la búsqueda de un dato es mediante un índice.
- Índice
- Variable numérica, generalmente nombrada
I
.
Ejemplo de Búsqueda en Arreglo:
Índice = 1
Mientras Índice <= 5
Si Arreglo(Índice) = "susy"
Imprimir "Encontrada"
Fin Si
Índice = Índice + 1
Fin Mientras
El arreglo se lee secuencialmente hasta encontrar lo solicitado o realizar algún quiebre.
Matrices
Matriz Unidimensional
Es similar al arreglo, pero la diferencia es que pueden contener distintos tipos de datos.
Representación de Posiciones:
Posición:
1 2 3
Cómo se leen los elementos:
- N1 (Índice)
- N2 (Índice)
- N3 (Índice)
- N4 (Índice)
- N5 (Índice)
Matriz Bidimensional
Poseen columnas y filas.
Representación:
1C 2C
1F
2F
Para buscar se lee de la siguiente forma:
- N1 (Fila, Columna)
- N2 (Fila, Columna)