unidad iii generalidades sobre algoritmos
DESCRIPTION
TRANSCRIPT
UNIVERSIDAD TECNOLÓGICA DEL CHOCÓFACULTAD DE INGENIERÍA
PROGRAMA DE TELEINFORMÁTICA
ASIGNATURA: Lógica de Programación
DocenteMARTHA IMELDA LUNA LÓPEZ
Ing. De Sistemas U. EafitEsp. En Derecho de las Telecomunicaciones
Unidad N. III
Generalidades sobre algoritmos
y programas y programas
Objetivo:
Introducir a los estudiantes en el tema de algoritmos como una herramienta de
interpretación de un problema real.
INTRODUCCIÓN
La principal razón para que las personas aprendan lenguajes y técnicas deprogramación es utilizar el computador como una herramienta para resolverproblemas.
La resolución de un problema exige al menos los siguientes pasos:
1.- Definición o análisis del problema.
2.- Diseño del algoritmo.
3.- Transformación del algoritmo en un programa.
4.- Ejecución y validación del programa.
PROBLEMA
Los problemas son una serie de inquietudes que se plantean para ser resueltas.La naturaleza de los problemas varía con el contexto en que se presenta:problemas matemáticos, químicos, filosóficos, etc.
Es importante que al tratar un problema se tenga una descripción simple yprecisa del mismo, de lo contrario resultaría complejo tratar de simular, oprogramar su solución en un computador.programar su solución en un computador.
Un programador es una persona que resuelve problemas, y para llegar a ser unprogramador eficaz se necesita aprender a resolver problemas de un modoriguroso y sistemático.
ProblemaDiseño Algoritmo
ProgramaAnálisis
ALGORITMO
Serie de pasos lógicos y ordenados con los cuales le damos solución a unproblema determinado o a un objetivo específico. Sin algoritmos no puedeexistir un programa. Los algoritmos son independientes tanto del lenguaje deprogramación como del computador que los ejecuta.
La palabra “Algoritmo” viene de un matemático persa que vivió en el siglo IX llamado Mohammed Al-Khowârizî, cuyo apellido traducido al latín es Algorismus.
Características de un algoritmo:
• Preciso: indicar el orden de realización de las instrucciones.• Definido: si se sigue el algoritmo dos veces, se debe obtener el mismoresultado.• Finito , siempre debe terminar despues de un número finito de pasos.
Ej. Obtener el área de un rectángulo.1. Obtener la medida de la base del rectángulo2. Obtener la medida de la altura del rectángulo3. Multiplicar la medida de la base por la medida de la altura.
ALGORITMO
Ejemplo tradicional de un algoritmo: Cambiar la llanta pinchada de un carro.
1. Buscar herramientas, llanta de repuesto ytriángulo de señalización
2. Ubicar el triángulo en el lugar adecuado3. Ir al lugar de la llanta averiada4. Sacar las tuercas4. Sacar las tuercas5. Colocar el gato6. Levantar el carro7. Sacar la llanta8. Colocar la llanta de Repuesto9. Colocar las tuercas10. Apretar las tuercas11. Guardar las herramientasFIN
FASES DE UN ALGORITMO
Fase de Análisis: consiste en el estudiodetallado del problema con el fin deobtener una serie de documentos(especificación) en los cuales quedantotalmente definido el proceso a seguir enla automatización
Algoritmo PRUEBA
Inicio
Variables
A,B,C: entero
Diseño: consiste en la realización delalgoritmo que resuelve el problema deacuerdo a la especificación dada en la faseanterior. El algoritmo se representamediante pseudocódigo.
Codificación: consiste en la traducción delalgoritmo a un programa escrito en unlenguaje de programación
A,B,C: entero
Leer(A,B)
C�A+B
Escribir (C)
Fin
………FASES DE UN ALGORITMO
Compilación/Interpretación: consiste en obtener el programa ejecutable uobjeto a partir del programa fuente.
Programa fuentePrograma ejecutable
………FASES DE UN ALGORITMO
Prueba: consiste en determinar si el programa funciona correctamente y realizalas operaciones que esperamos de él.
Programa ejecutable Aplicación
SEUDOCODIGO
Serie de instrucciones abstractas que resuelven un problema. Es unaherramienta útil para el seguimiento de la lógica de un algoritmo, facilita latranscripción a un lenguaje de programación. Con el seudocódigo representamoslos pasos de un algoritmo a través de palabras, utilizando una nomenclaturaestandarizada para el significado de cada paso.
Ej. Obtener el área de un rectángulo.
1. Inicio2. Leer BASE3. Leer ALTURA4. AREA = BASE * ALTURA5. Escribir AREA6. Fin
LENGUAJES DE PROGRAMACIÓN
Lenguaje: conjunto de reglas y convenciones que se utilizan para comunicarinformación.
Lenguaje de Programación: es un lenguaje que permite la traducción de unalgoritmo para que sea entendible por el computador. Son los lenguajes utilizadospara escribir programas de computadores.
Tipos de Lenguaje de Programación:
�Lenguaje de Máquina
�Lenguaje de Bajo Nivel (Ensamblador)
�Lenguaje de Alto Nivel
Son aquellos que están escritos en lenguaje directamente inteligibles porla máquina, ya que sus instrucciones son cadenas binarias (0’s ,1’s) que especificanuna operación.
Las instrucciones en lenguaje máquina dependen del Hardware de lacomputadora, difiere de una PC a otra.
La ventaja de los lenguajes máquina es que ofrecen mayor velocidad de
LENGUAJE DE MÁQUINA
La ventaja de los lenguajes máquina es que ofrecen mayor velocidad deejecución.
Existen algunas desventajas: dificultad y lentitud en la codificación, poca fiabilidad,los programas no son portables.
11001010 00010111 11110101 0010101100010111 11110101 00101011 0010101111001010 00010111 11110101 0010101111001010 11110101 00101011 0010101111001010 00010111 11110101 0010101100010111 11110101 00101011 0010101111001010 11110101 00101011 00101011
Son lenguajes que permiten escribir programas con instruccionessimilares al lenguaje humano.
Son más fáciles de utilizar que los lenguajes de máquina, pero éstostambién dependen de la máquina en particular.
El mejor ejemplo es el lenguaje ensamblador
LENGUAJE DE BAJO NIVEL
El mejor ejemplo es el lenguaje ensamblador
Un programa escrito en lenguaje ensamblador requiere una fase detraducción
Entre las desventajas tenemos: que este lenguaje depende de lamáquina y demanda una mayor exigencia para los programadores, yaque deben conocer tanto las técnicas de programación así como elinterior de la máquina.
; HOLA.ASMSTACK SEGMENT STACK ; Segmento de pila
DW 64 DUP (?) ; Define espacio en la pilaSTACK ENDS
DATA SEGMENT ; Segmento de datosSALUDO DB "Hola mundo!!",13,10,"$" ; CadenaDATA ENDS
Ejemplo Lenguaje Ensamblador
INICIO: ; Punto de entrada al programaMOV AX,DATA ; Pone dirección en AXMOV DS,AX ; Pone la dirección en los registrosMOV DX,OFFSET SALUDO ; Obtiene dirección del mensajeMOV AH,09H ; Función: Visualizar cadenaINT 21H ; Servicio: Funciones alto nivel DOSMOV AH,4CH ; Función: TerminarINT 21H
CODE ENDSEND INICIO ; Marca fin y define INICIO
Son los más utilizados por los programadores
Son independientes de la máquina
Los programas escritos en estos lenguajes son portables
Aumento de la ocupación de la memoria
LENGUAJE DE ALTO NIVEL
Las estructuras de los programas se basan en reglas sintácticas
Ejemplos: C, C++, Pascal, Ada, Prolog, Smalltalk, Visual Basic, Delphi,Java,...
Ejemplo de lenguaje de alto nivel
#include <stdio.h>
int main(void){
printf("Hola, Mundo\n");}
Hacer un procedimiento que describa los pasos para cambiar una bombillaquemada.
Hacer un procedimiento que describa los pasos para ir al cine
Hace un procedimiento para cambiar la llanta pinchada de una bicicleta.
EJERCICIOS PROPUESTOS
Hace un procedimiento para cambiar la llanta pinchada de una bicicleta.
ALGORITMO CAMBIAR UNA BOMBILLA QUEMADA.
INICIO1. Buscar una bombilla nueva2. Buscar una escalera o similar3. Ir al lugar de la bombilla quemada4. Instalar la escalera4. Instalar la escalera5. Subir a la escalera6. Sacar la bombilla quemada7. Colocar la nueva bombilla8. Ajustar la bombilla9. Bajarse de la escalera10. Probar la bombilla instalada11. Retirar la escalera12. Votar la bombilla quemada13. Guardar la escaleraFIN
ALGORITMO PASOS PARA IR AL CINE
INICIO1. Revisar la cartelera de cine2. Seleccionar la película de mi interés3. Seleccionar el horario de mi interés4. A la hora adecuada, desplazarme hasta el4. A la hora adecuada, desplazarme hasta el
cine5. Hacer la fila para comprar boletos6. Comprar los boletos7. Hacer la fila para entrada a la sala8. Entrar a la sala9. Buscar mi puesto asignado10. Ubicarme en el puesto asignado11. Disfrutar de la películaFIN
ALGORITMO CAMBIAR LA LLANTA PINCHADA DE UNA BICICLETA.
INICIO1. Buscar las herramientas2. Voltear la bicicleta3. Quitar las tuercas o remaches4. Quitar llanta pinchada4. Quitar llanta pinchada5. Sacar el neumático6. Buscar el escape de aire7. Parcharlo8. Instalar el neumático en la llanta9. Inflar el neumático10. Poner llanta nuevamente11. Volver a colocar los remaches o tuercas12. Voltear la bicicleta13. Guardar las herramientasFIN
Algoritmos para ser ejecutados por personasPara que un algoritmo sea ejecutado por una persona, debe estar escrito de
tal manera que esta persona lo entienda claramente
Normas:
• Debe escribirse en el idioma de la persona que realizará el algoritmo
CLASIFICACION DE LOS ALGORITMOS
• Debe escribirse en el idioma de la persona que realizará el algoritmo• Debe enumerar cada uno de los pasos a realizar en un orden lógico. • Debe utilizar palabras que comprenda claramente la persona que realizará el algoritmo.
Ejemplos: Las recetas de cocina, los manuales de funcionamiento,itinerarios, guía de matricula etc.
Algoritmos para ser ejecutados por computadores. Los pasos para la solución de un problema utilizando como herramienta la computadora son :
1. Diseño del algoritmo que describa la secuencia ordenada de pasos, que conducen a la solución de un problema dado(análisis del problema y desarrollo del algoritmo).
2. Expresar el algoritmo como un programa en un lenguaje de programación
CLASIFICACION DE LOS ALGORITMOS
2. Expresar el algoritmo como un programa en un lenguaje de programación adecuado( fase de codificación). La actividad de expresar un algoritmo en forma de programa se denomina programación.
3. Ejecución y validación de programa por la computadora.
INICIO
FIN
Una de las características de los algoritmos es que deben ser finitos. Sedebe indicar claramente donde inicia y donde termina.Para indicar donde comienza nuestro algoritmo vamos a utilizar la palabraINICIO y para indicar donde se termina nuestro algoritmo vamos a utilizar las
PARTES DE UN ALGORITMO
INICIO y para indicar donde se termina nuestro algoritmo vamos a utilizar laspalabras FIN PROGRAMA.
ejemplo:
Inicio
Fin Programa
Los datos son una parte muy importante en un algoritmo, pues son ellos elpunto de partida y son ellos quienes sufren las transformaciones que daránlos resultados deseados. Por esta razón el algoritmo debe guardar losdatos en un sitio donde los pueda leer y modificar cada vez que lorequiera. El sitio donde el algoritmo guarda los datos se llama ESPACIODE MEMORIA y el tamaño de estos dependen del tipo de dato que sequiera guardar en ellos.
DECLARACIÓN DE VARIABLES
quiera guardar en ellos.
Además si se tienen varios datos se debe tener la posibilidad dediferenciarlos de una manera que no se presenten confusionesasignándoles un identificador válido y único a estos espacios de memoria.
Un espacio de memoria se denomina VARIABLE cuando su contenidopuede variar en el tiempo y CONSTANTE cuando no se permite que sucontenido cambie.
Lo primero que se hace en al algoritmo es declarar las variables.
Donde se separan los espacios de memoria del tamaño indicado según el tipo de dato que guardarán y asignándoles un nombre o identificador válido, con el cual nos referiremos a la información que se guarda en dicho espacio de memoria.
DECLARACIÓN DE VARIABLES
Para declarar las variables se hará de la siguiente forma:
tipo de dato: identificador, identificador
• Primero se coloca el tipo de dato según la información que se guardará en los espacios de memoria a crear.• dos puntos ' : ' • una lista de identificadores válidos separados por coma
lLos tipos de datos a utilizar en nuestros algoritmos son: 1. numéricos: para hacer cálculos matemáticos y pueden ser de dos tipos así:
1. ENTERO: cuando el número no tiene parte decimal (ejemplo: 4 , 5 , 7, 97). 2. REAL: cuando el número consta de una parte entera y una parte decimal (ejemplo: 2.33 , 4.59 , 5.0 ).
TIPOS DE DATOS
decimal (ejemplo: 2.33 , 4.59 , 5.0 ). 2. CARACTER: contiene un solo símbolo y esta delimitado por comillas sencillas y puede ser:
1. Caracteres alfanuméricos ('A', 'B', …, 'Z') 2. Caracteres numéricos('1', '2', …'0') 3. Caracteres especiales ('+', '-', '*', '/', ',' '.', '<' ,'>', '$', ….)
3. CADENA(string): es una sucesión de caracteres que se encuentran delimitados por doble comilla. se utilizan para guardar información como el nombre de una persona, el color preferido etc. (ejemplos: " león ", "Maria", "azul", "rojo"). se utilizan para mostrar mensajes. 4. LOGICOS (booleanos): es aquel dato que sólo puede tomar uno de dos valores: verdadero(true) o falso (false).
Para diferenciar los espacios de memoria se les asigna un identificadorque debe ser único (no se permiten dos espacios de memoria con elmismo identificador). Además un identificador es válido si esta formadocon letras, dígitos y el carácter de subrayado, pero teniendo en cuentaque el primer carácter debe ser una letra. también es recomendable queel nombre del espacio de memoria indique el significado de la informaciónque contiene.La siguiente lista muestra una serie de identificadores válidos:· x
IDENTIFICADORES VÁLIDOS
· x · y · x1 · y1 · suma · contador · mayor · menor · promedio · mayor_promedio· menor_1 · porcentaje
ENUNCIADO:Hacer un algoritmo que declare una variable para guardar el nombre deun deportista, otra para guardar el número de intentos en la prueba de100 metros planos y otra para guardar el menor tiempo registrado.
EXPLICACION DEL ALGORITMOSe declara la variable NOMBRE, de tipo cadena para guardar el nombredel deportista.
EJEMPLO Declaración de variables
del deportista.Como la cantidad de intentos es un entero, se define la variableINTENTOS de tipo entero.Como la medición del tiempo puede tener parte decimal, se define lavariable TIEMPO de tipo real.Inicio
Cadena: NOMBREEntero: INTENTOSReal: TIEMPO
Fin programa
1. Hacer un algoritmo que declare una variable para guardar el número demeses del año y otra variable para guardar el porcentaje de meses quetienen 30 o 31 días.2. Hacer un algoritmo que declare una variable para guardar el número dehoras de estudio, y otra para guardar el nombre.3. Hacer un algoritmo que declare una variable para guardar cuantasmaterias se han perdido en el semestre y otra para guardar el porcentajede materias ganadas.4. Hacer un algoritmo que declare una variable para guardar el promedio
PROBLEMAS PROPUESTOS
4. Hacer un algoritmo que declare una variable para guardar el promediodel semestre, otra para guardar el nombre de un estudiante y otra paraguardar el número de notas perdidas.5. Hacer un algoritmo que declare una variable para guardar el nombre deuna persona, otra para guardar la comida preferida y otra para guardar lacantidad de dinero que posee.6. Hacer un algoritmo que declare una variable para guardar el nombre deun animal, otra para guardar la comida preferida y otra para guardar lacantidad de patas que tiene.7. Hacer un algoritmo que declare una variable para guardar el nombre deun deportista, otra para guardar la distancia recorrida y otra para guardarla cantidad de intentos.
Cuando un algoritmo requiera que el usuario ingrese datos, se utilizará lainstrucción LEER y entre paréntesis la lista de variables donde seguardarán los datos ingresados por el usuario.
leer(identificador1, identificador2)
de esta forma se podrá tener la siguiente instrucción:
ENTRADA DE DATOS
leer( X, Y, Z)
donde se le pide al usuario que entre tres datos
•el primero de los cuales se guarda en el espacio de memoria que tieneidentificador X,•el segundo se guardará en el espacio de memoria que tiene identificadorY• y el tercero se guardará en el espacio de memoria que tiene identificadorZ.
ENUNCIADO:
Hacer un algoritmo que lea el nombre y la edad de una persona.
VARIABLES: los datos de entrada son :
NOMBRE: para guardar el nombre de la persona (tipo cadena)EDAD: para guardar la edad de la persona, como en el enunciado no loespecifican lo tomaremos de tipo entero.
EJEMPLO Entrada de Datos|
especifican lo tomaremos de tipo entero.
EXPLICACION DEL ALGORITMOPrimero se definen las variables requeridas y luego se le pide al usuarioque ingrese los datos.
InicioCadena: NOMBREEntero: EDADLeer ( NOMBRE, EDAD)
Fin Programa
1. Hacer un algoritmo que lea el número de meses del año y la cantidadde meses que se trabajan.
2. Hacer un algoritmo que lea el nombre de una persona y número dehoras que estudia en la semana.
3. Hacer un algoritmo que lea el nombre de un estudiante, la cantidad dematerias perdidas y el porcentaje de materias ganadas.
PROBLEMAS PROPUESTOS
4. Hacer un algoritmo que lea el nombre de un estudiante, el promediodel semestre y el número de notas perdidas.
5. Hacer un algoritmo que lea el nombre de una persona, la comidapreferida y la cantidad de dinero que posee.
6. Hacer un algoritmo que lea el nombre de un animal, la comidapreferida y la cantidad de patas que tiene.
7. Hacer un algoritmo que lea el nombre de un deportista, la distanciarecorrida y la cantidad de intentos.
Si el algoritmo requiere mostrar la información que tiene guardada envariables (espacio de memoria) hacia el exterior(para el usuario final ), seutilizará la instrucción MOSTRAR y entre paréntesis la lista de variablesdonde se guardan los datos que se quieren mostrar.
Mostrar( identificador1, identificador2, identificador 3)
La instrucción siguiente mostrará al usuario la información que se tiene
SALIDA DE DATOS
La instrucción siguiente mostrará al usuario la información que se tieneguardada en la variables X, Y y Z.
MOSTRAR ( X, Y, Z)
también se puede pasar información directamente (que no esta guardadaen variables) para construir mensajes de la siguiente manera:
MOSTRAR (" hola como estas ", 123, X)
el anterior mensaje mostrará al usuario un mensaje que contiene lacadena "hola como estas", el numero 123 y la información contenida en lavariable X.
ENUNCIADO: Hacer un algoritmo que lea el nombre de un artículo, lacantidad existente en bodega, el precio unitario y muestre la cantidadexistente en bodega.VARIABLESse declara la variable NOMBRE, de tipo cadena para guardar el nombredel artículo.como la cantidad de artículos es un entero, se define la variableCANTIDAD de tipo entero.como un precio puede tener parte decimal, se define la variable
EJEMPLO Salida de Datos
como un precio puede tener parte decimal, se define la variablePRECIO de tipo real.EXPLICACION DEL ALGORITMOPrimero se definen las variables requeridas y luego se le pide al usuarioque ingrese los datos.Inicio
Cadena: NOMBREEntero: CANTIDADReal: PRECIOLeer (NOMBRE, CANTIDAD, PRECIO)Mostrar (NOMBRE, CANTIDAD)
Fin Programa
|
1. Hacer un algoritmo que lea el nombre de un trabajador, la cantidad demeses que trabajó en el año y muestre el nombre y el porcentaje demeses trabajados.
2. Hacer un algoritmo que lea el nombre de una persona, el número dehoras que estudia en la semana y muestre el porcentaje de tiempoque dedica a estudiar y la cantidad de minutos que dedica a estudiar.
3. Hacer un algoritmo que lea el nombre de un estudiante, la cantidad dematerias que cursa en el semestre, la cantidad de materiasperdidas y muestre el nombre y el porcentaje de materias ganadas.
4. Hacer un algoritmo que lea el nombre de un estudiante, el promedio
PROBLEMAS PROPUESTOS
4. Hacer un algoritmo que lea el nombre de un estudiante, el promediodel semestre, el número de materias perdidas, la suma de todas lasnotas y muestre la cantidad de materias que ganó.
5. Hacer un algoritmo que lea el nombre de una persona, la comidapreferida con su precio, la cantidad de dinero que posee y muestre lacantidad de comidas que puede comprar con el dinero que posee.
6. Hacer un algoritmo que lea el nombre de un animal, la comidapreferida, el número de porciones que come al día, el valor de laporción y muestre el nombre del animal y el costo de alimentarlo en eldía.
7. Hacer un algoritmo lea el nombre de un deportista, la distanciarecorrida, la cantidad de intentos y muestre la distancia promedio queha recorrido.
RECURSOS
Bibliografía.
OVIEDO, Regino Efrain M, Lógica de Programación. Ecoeediciones.
Joyanes Aguilar Luis. Fundamentos de ProgramaciónJoyanes Aguilar Luis. Fundamentos de Programación
SITIOS WEB:
http://www.alegsa.com.ar/Notas/70.phphttp://www.deguate.com/infocentros/educacion/recursos/computacion/origen.htmhttp://www.bloginformatico.com/concepto-y-tipos-de-software.phphttp://mx.geocities.com/berebl2001/mipag5.html