1. UNIVERSIDAD TECNOLÓGICA DEL CHOCÓ
FACULTAD DE INGENIERÍA
PROGRAMA DE TELEINFORMÁTICA
ASIGNATURA: Lógica de Programación
Docente
MARTHA IMELDA LUNA LÓPEZ
Ing. De Sistemas U. Eafit
Esp. En Derecho de las Telecomunicaciones
2. Unidad N. III
Generalidades sobre algoritmos
y programas
Objetivo:
Introducir a los estudiantes
en el tema de algoritmos
como una herramienta de
interpretación de un
problema real.
3. INTRODUCCIÓN
La principal razón para que las personas aprendan lenguajes y técnicas de
programación es utilizar el computador como una herramienta para resolver
problemas.
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.
4. 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 y
precisa del mismo, de lo contrario resultaría complejo tratar de simular, o
programar su solución en un computador.
Un programador es una persona que resuelve problemas, y para llegar a ser un
programador eficaz se necesita aprender a resolver problemas de un modo
riguroso y sistemático.
Diseño Algoritmo
Problema
Programa
Análisis
5. ALGORITMO
Serie de pasos lógicos y ordenados con los cuales le damos solución a un
problema determinado o a un objetivo específico. Sin algoritmos no puede
existir un programa. Los algoritmos son independientes tanto del lenguaje de
programació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 mismo
resultado.
• 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ángulo
2. Obtener la medida de la altura del rectángulo
3. Multiplicar la medida de la base por la medida de la altura.
6. ALGORITMO
Ejemplo tradicional de un algoritmo: Cambiar la llanta pinchada de un carro.
1. Buscar herramientas, llanta de repuesto y
triángulo de señalización
2. Ubicar el triángulo en el lugar adecuado
3. Ir al lugar de la llanta averiada
4. Sacar las tuercas
5. Colocar el gato
6. Levantar el carro
7. Sacar la llanta
8. Colocar la llanta de Repuesto
9. Colocar las tuercas
10. Apretar las tuercas
11. Guardar las herramientas
FIN
7. FASES DE UN ALGORITMO
Fase de Análisis: consiste en el estudio
detallado del problema con el fin de
Algoritmo PRUEBA
obtener una serie de documentos
(especificación) en los cuales quedan Inicio
totalmente definido el proceso a seguir en
Variables
la automatización
A,B,C: entero
Diseño: consiste en la realización del Leer(A,B)
algoritmo que resuelve el problema de C A+B
acuerdo a la especificación dada en la fase
Escribir (C)
anterior. El algoritmo se representa
mediante pseudocódigo. Fin
Codificación: consiste en la traducción del
algoritmo a un programa escrito en un
lenguaje de programación
8. ………FASES DE UN ALGORITMO
Compilación/Interpretación: consiste en obtener el programa ejecutable u
objeto a partir del programa fuente.
Programa ejecutable
Programa fuente
9. ………FASES DE UN ALGORITMO
Prueba: consiste en determinar si el programa funciona correctamente y realiza
las operaciones que esperamos de él.
Programa ejecutable Aplicación
10. SEUDOCODIGO
Serie de instrucciones abstractas que resuelven un problema. Es una
herramienta útil para el seguimiento de la lógica de un algoritmo, facilita la
transcripción a un lenguaje de programación. Con el seudocódigo representamos
los pasos de un algoritmo a través de palabras, utilizando una nomenclatura
estandarizada para el significado de cada paso.
Ej. Obtener el área de un rectángulo.
1. Inicio
2. Leer BASE
3. Leer ALTURA
4. AREA = BASE * ALTURA
5. Escribir AREA
6. Fin
11. LENGUAJES DE PROGRAMACIÓN
Lenguaje: conjunto de reglas y convenciones que se utilizan para comunicar
información.
Lenguaje de Programación: es un lenguaje que permite la traducción de un
algoritmo para que sea entendible por el computador. Son los lenguajes utilizados
para escribir programas de computadores.
Tipos de Lenguaje de Programación:
Lenguaje de Máquina
Lenguaje de Bajo Nivel (Ensamblador)
Lenguaje de Alto Nivel
12. LENGUAJE DE MÁQUINA
Son aquellos que están escritos en lenguaje directamente inteligibles por
la máquina, ya que sus instrucciones son cadenas binarias (0’s ,1’s) que especifican
una operación.
Las instrucciones en lenguaje máquina dependen del Hardware de la
computadora, difiere de una PC a otra.
La ventaja de los lenguajes máquina es que ofrecen mayor velocidad de
ejecución.
Existen algunas desventajas: dificultad y lentitud en la codificación, poca fiabilidad,
los programas no son portables.
11001010 00010111 11110101 00101011
00010111 11110101 00101011 00101011
11001010 00010111 11110101 00101011
11001010 11110101 00101011 00101011
11001010 00010111 11110101 00101011
00010111 11110101 00101011 00101011
11001010 11110101 00101011 00101011
13. LENGUAJE DE BAJO NIVEL
Son lenguajes que permiten escribir programas con instrucciones
similares al lenguaje humano.
Son más fáciles de utilizar que los lenguajes de máquina, pero éstos
también dependen de la máquina en particular.
El mejor ejemplo es el lenguaje ensamblador
Un programa escrito en lenguaje ensamblador requiere una fase de
traducción
Entre las desventajas tenemos: que este lenguaje depende de la
máquina y demanda una mayor exigencia para los programadores, ya
que deben conocer tanto las técnicas de programación así como el
interior de la máquina.
14. Ejemplo Lenguaje Ensamblador
; HOLA.ASM
STACK SEGMENT STACK ; Segmento de pila
DW 64 DUP (?) ; Define espacio en la pila
STACK ENDS
DATA SEGMENT ; Segmento de datos
SALUDO DB quot;Hola mundo!!quot;,13,10,quot;$quot; ; Cadena
DATA ENDS
INICIO: ; Punto de entrada al programa
MOV AX,DATA ; Pone dirección en AX
MOV DS,AX ; Pone la dirección en los registros
MOV DX,OFFSET SALUDO ; Obtiene dirección del mensaje
MOV AH,09H ; Función: Visualizar cadena
INT 21H ; Servicio: Funciones alto nivel DOS
MOV AH,4CH ; Función: Terminar
INT 21H
CODE ENDS
END INICIO ; Marca fin y define INICIO
15. LENGUAJE DE ALTO NIVEL
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
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(quot;Hola, Mundonquot;);
}
16. EJERCICIOS PROPUESTOS
Hacer un procedimiento que describa los pasos para cambiar una bombilla
quemada.
Hacer un procedimiento que describa los pasos para ir al cine
Hace un procedimiento para cambiar la llanta pinchada de una bicicleta.
17. ALGORITMO CAMBIAR UNA BOMBILLA QUEMADA.
INICIO
1. Buscar una bombilla nueva
2. Buscar una escalera o similar
3. Ir al lugar de la bombilla quemada
4. Instalar la escalera
5. Subir a la escalera
6. Sacar la bombilla quemada
7. Colocar la nueva bombilla
8. Ajustar la bombilla
9. Bajarse de la escalera
10. Probar la bombilla instalada
11. Retirar la escalera
12. Votar la bombilla quemada
13. Guardar la escalera
FIN
18. ALGORITMO PASOS PARA IR AL CINE
INICIO
1. Revisar la cartelera de cine
2. Seleccionar la película de mi interés
3. Seleccionar el horario de mi interés
4. A la hora adecuada, desplazarme hasta el
cine
5. Hacer la fila para comprar boletos
6. Comprar los boletos
7. Hacer la fila para entrada a la sala
8. Entrar a la sala
9. Buscar mi puesto asignado
10. Ubicarme en el puesto asignado
11. Disfrutar de la película
FIN
19. ALGORITMO CAMBIAR LA LLANTA PINCHADA DE
UNA BICICLETA.
INICIO
1. Buscar las herramientas
2. Voltear la bicicleta
3. Quitar las tuercas o remaches
4. Quitar llanta pinchada
5. Sacar el neumático
6. Buscar el escape de aire
7. Parcharlo
8. Instalar el neumático en la llanta
9. Inflar el neumático
10. Poner llanta nuevamente
11. Volver a colocar los remaches o tuercas
12. Voltear la bicicleta
13. Guardar las herramientas
FIN
20. CLASIFICACION DE LOS ALGORITMOS
Algoritmos para ser ejecutados por personas
Para 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
• 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.
21. CLASIFICACION DE LOS ALGORITMOS
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
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.
22. PARTES DE UN ALGORITMO
INICIO
FIN
Una de las características de los algoritmos es que deben ser finitos. Se
debe indicar claramente donde inicia y donde termina.
Para indicar donde comienza nuestro algoritmo vamos a utilizar la palabra
INICIO y para indicar donde se termina nuestro algoritmo vamos a utilizar las
palabras FIN PROGRAMA.
ejemplo:
Inicio
Fin Programa
23. DECLARACIÓN DE VARIABLES
Los datos son una parte muy importante en un algoritmo, pues son ellos el
punto de partida y son ellos quienes sufren las transformaciones que darán
los resultados deseados. Por esta razón el algoritmo debe guardar los
datos en un sitio donde los pueda leer y modificar cada vez que lo
requiera. El sitio donde el algoritmo guarda los datos se llama ESPACIO
DE MEMORIA y el tamaño de estos dependen del tipo de dato que se
quiera guardar en ellos.
Además si se tienen varios datos se debe tener la posibilidad de
diferenciarlos de una manera que no se presenten confusiones
asignándoles un identificador válido y único a estos espacios de memoria.
Un espacio de memoria se denomina VARIABLE cuando su contenido
puede variar en el tiempo y CONSTANTE cuando no se permite que su
contenido cambie.
24. DECLARACIÓN DE VARIABLES
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.
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
25. TIPOS DE DATOS
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 ).
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: quot; león quot;, quot;Mariaquot;,
quot;azulquot;, quot;rojoquot;). 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).
26. IDENTIFICADORES VÁLIDOS
Para diferenciar los espacios de memoria se les asigna un identificador
que debe ser único (no se permiten dos espacios de memoria con el
mismo identificador). Además un identificador es válido si esta formado
con letras, dígitos y el carácter de subrayado, pero teniendo en cuenta
que el primer carácter debe ser una letra. también es recomendable que
el nombre del espacio de memoria indique el significado de la información
que contiene.
La siguiente lista muestra una serie de identificadores válidos:
· x
· y
· x1
· y1
· suma
· contador
· mayor
· menor
· promedio
· mayor_promedio
· menor_1
· porcentaje
27. EJEMPLO Declaración de variables
ENUNCIADO:
Hacer un algoritmo que declare una variable para guardar el nombre de
un deportista, otra para guardar el número de intentos en la prueba de
100 metros planos y otra para guardar el menor tiempo registrado.
EXPLICACION DEL ALGORITMO
Se declara la variable NOMBRE, de tipo cadena para guardar el nombre
del deportista.
Como la cantidad de intentos es un entero, se define la variable
INTENTOS de tipo entero.
Como la medición del tiempo puede tener parte decimal, se define la
variable TIEMPO de tipo real.
Inicio
Cadena: NOMBRE
Entero: INTENTOS
Real: TIEMPO
Fin programa
28. PROBLEMAS PROPUESTOS
1. Hacer un algoritmo que declare una variable para guardar el número de
meses del año y otra variable para guardar el porcentaje de meses que
tienen 30 o 31 días.
2. Hacer un algoritmo que declare una variable para guardar el número de
horas de estudio, y otra para guardar el nombre.
3. Hacer un algoritmo que declare una variable para guardar cuantas
materias se han perdido en el semestre y otra para guardar el porcentaje
de materias ganadas.
4. Hacer un algoritmo que declare una variable para guardar el promedio
del semestre, otra para guardar el nombre de un estudiante y otra para
guardar el número de notas perdidas.
5. Hacer un algoritmo que declare una variable para guardar el nombre de
una persona, otra para guardar la comida preferida y otra para guardar la
cantidad de dinero que posee.
6. Hacer un algoritmo que declare una variable para guardar el nombre de
un animal, otra para guardar la comida preferida y otra para guardar la
cantidad de patas que tiene.
7. Hacer un algoritmo que declare una variable para guardar el nombre de
un deportista, otra para guardar la distancia recorrida y otra para guardar
la cantidad de intentos.
29. ENTRADA DE DATOS
Cuando un algoritmo requiera que el usuario ingrese datos, se utilizará la
instrucción LEER y entre paréntesis la lista de variables donde se
guardarán los datos ingresados por el usuario.
leer(identificador1, identificador2)
de esta forma se podrá tener la siguiente instrucción:
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 tiene
identificador X,
•el segundo se guardará en el espacio de memoria que tiene identificador
Y
• y el tercero se guardará en el espacio de memoria que tiene identificador
Z.
30. EJEMPLO Entrada de Datos|
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 lo
especifican lo tomaremos de tipo entero.
EXPLICACION DEL ALGORITMO
Primero se definen las variables requeridas y luego se le pide al usuario
que ingrese los datos.
Inicio
Cadena: NOMBRE
Entero: EDAD
Leer ( NOMBRE, EDAD)
Fin Programa
31. PROBLEMAS PROPUESTOS
1. Hacer un algoritmo que lea el número de meses del año y la cantidad
de meses que se trabajan.
2. Hacer un algoritmo que lea el nombre de una persona y número de
horas que estudia en la semana.
3. Hacer un algoritmo que lea el nombre de un estudiante, la cantidad de
materias perdidas y el porcentaje de materias ganadas.
4. Hacer un algoritmo que lea el nombre de un estudiante, el promedio
del semestre y el número de notas perdidas.
5. Hacer un algoritmo que lea el nombre de una persona, la comida
preferida y la cantidad de dinero que posee.
6. Hacer un algoritmo que lea el nombre de un animal, la comida
preferida y la cantidad de patas que tiene.
7. Hacer un algoritmo que lea el nombre de un deportista, la distancia
recorrida y la cantidad de intentos.
32. SALIDA DE DATOS
Si el algoritmo requiere mostrar la información que tiene guardada en
variables (espacio de memoria) hacia el exterior(para el usuario final ), se
utilizará la instrucción MOSTRAR y entre paréntesis la lista de variables
donde se guardan los datos que se quieren mostrar.
Mostrar( identificador1, identificador2, identificador3)
La instrucción siguiente mostrará al usuario la información que se tiene
guardada en la variables X, Y y Z.
MOSTRAR ( X, Y, Z)
también se puede pasar información directamente (que no esta guardada
en variables) para construir mensajes de la siguiente manera:
MOSTRAR (quot; hola como estas quot;, 123, X)
el anterior mensaje mostrará al usuario un mensaje que contiene la
cadena quot;hola como estasquot;, el numero 123 y la información contenida en la
variable X.
33. EJEMPLO Salida de Datos
ENUNCIADO: Hacer un algoritmo que lea el nombre de un artículo, la
cantidad existente en bodega, el precio unitario y muestre la cantidad
existente en bodega.
VARIABLES
se declara la variable NOMBRE, de tipo cadena para guardar el nombre
del artículo.
como la cantidad de artículos es un entero, se define la variable
CANTIDAD de tipo entero.
como un precio puede tener parte decimal, se define la variable
PRECIO de tipo real.
EXPLICACION DEL ALGORITMO
Primero se definen las variables requeridas y luego se le pide al usuario
que ingrese los datos.
Inicio
Cadena: NOMBRE
Entero: CANTIDAD
Real: PRECIO
Leer (NOMBRE, CANTIDAD, PRECIO)
Mostrar (NOMBRE, CANTIDAD)
Fin Programa
|
34. PROBLEMAS PROPUESTOS
1. Hacer un algoritmo que lea el nombre de un trabajador, la cantidad de
meses que trabajó en el año y muestre el nombre y el porcentaje de
meses trabajados.
2. Hacer un algoritmo que lea el nombre de una persona, el número de
horas que estudia en la semana y muestre el porcentaje de tiempo
que 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 de
materias que cursa en el semestre, la cantidad de materias
perdidas y muestre el nombre y el porcentaje de materias ganadas.
4. Hacer un algoritmo que lea el nombre de un estudiante, el promedio
del semestre, el número de materias perdidas, la suma de todas las
notas y muestre la cantidad de materias que ganó.
5. Hacer un algoritmo que lea el nombre de una persona, la comida
preferida con su precio, la cantidad de dinero que posee y muestre la
cantidad de comidas que puede comprar con el dinero que posee.
6. Hacer un algoritmo que lea el nombre de un animal, la comida
preferida, el número de porciones que come al día, el valor de la
porción y muestre el nombre del animal y el costo de alimentarlo en el
día.
7. Hacer un algoritmo lea el nombre de un deportista, la distancia
recorrida, la cantidad de intentos y muestre la distancia promedio que
ha recorrido.
35. RECURSOS
Bibliografía.
OVIEDO, Regino Efrain M, Lógica de Programación. Ecoe
ediciones.
Joyanes Aguilar Luis. Fundamentos de Programación
SITIOS WEB:
http://www.alegsa.com.ar/Notas/70.php
http://www.deguate.com/infocentros/educacion/recursos/computaci
on/origen.htm
http://www.bloginformatico.com/concepto-y-tipos-de-software.php
http://mx.geocities.com/berebl2001/mipag5.html