2. Concepto de algoritmo, características
Los lenguajes de programación
◦ Lenguajes de máquina
◦ Lenguajes de bajo nivel
◦ Lenguajes de alto nivel
◦ traductores de lenguaje (Interpretes,
Compiladores).
La compilación y sus fases
3. Datos
◦ tipos de datos
◦ operaciones primitivas
Numéricos, Lógicos, carácter, cadena
Constantes y variables
Expresiones
◦ Aritméticas
◦ Lógicas
◦ Operación de asignación
◦ Diseño del algoritmo
◦ Condicionales simples y anidadas.
4. El programador debe resolver problemas de modo
eficaz y sistemático
◦ Definición/análisis del problema
◦ Diseño del ALGORITMO
◦ Transformación del algoritmo en programa
◦ Ejecución y validación del programa
5. Método para resolver un problema
Mohammed al-Khowarizmi (Persia, s.IX)
◦ Enunció reglas para sumar, restar, multiplicar,
dividir números decimales
al-Khowarizmi algorismus
6. Secuencia finita de instrucciones, reglas o pasos
que describen de forma precisa las operaciones
de un ordenador debe realizar para llevar a cabo
un tarea en un tiempo mas finito. [Donald E.
Knuth, 1968]
Descripción de un esquema de comportamiento
expresado mediante un repertorio finito de
acciones y de informaciones elementales,
identificadas, bien comprendidas y realizables a
priori. Este repertorio se denomina léxico [Pierre
Scholl, 1988]
7. Un algoritmo es un conjunto finito de pasos
definidos, estructurados en el tiempo y
formulados con base a un conjunto finito de
reglas no ambiguas, que proveen un
procedimiento para dar la solución o indicar
la falta de esta a un problema en un tiempo
determinado. [Rodolfo Quispe-Otazu, 2004]
8. Definición/análisis del problema
Necesidades, límites, recursos…
◦ Diseño del ALGORITMO
Secuencia ordenada de pasos
Sin ambigüedades
◦ Transformación del algoritmo en programa
A través de un lenguaje de programación
◦ Ejecución y validación del programa
En un computador
9. Independientes del lenguaje de programación
Se puede expresar en distintos lenguajes y
ejecutar en plataformas distintas
El algoritmo siempre será el mismo
Ej. Recetas de cocina
◦ Idioma distinto, sin importar el cocinero
Lenguaje de programación y plataforma
= MEDIOS
10. Diseño de Algoritmos requiere:
Grandes dosis de creatividad
Conocimientos profundos de programación
Todo problema se puede describir por medio
de un algoritmo
11. 1. Debe ser preciso e indicar el orden de realización
de cada paso.
2. Debe estar definido.
Si se sigue un algoritmo dos veces, se debe obtener el
mismo resultado cada vez
3. Debe ser finito.
Debe terminar en algún momento. Número finito de pasos
4. Tener cero o más entradas
5. Tener una o más salidas
Siempre debe devolver “algo“
6. Efectividad
El tiempo y esfuerzo por cada paso realizado debe ser
preciso
12. ◦ Entrada
Datos a manipular
Recursos del sistema
◦ Proceso
La solución del problema a través del algoritmo
planteado
◦ Salida
Resultado esperado y a través de distintas formas
Pantalla, impresión, indicadores, etc
13. Un cliente hace un pedido a una fábrica. La
fábrica examina ficha de cliente. Si el cliente
es solvente, la empresa acepta el pedido, de
caso contrario, debe ser rechazado el pedido.
1. Inicio
2. Leer pedido
3. Examinar ficha de cliente
4. SI el cliente es solvente, ACEPTAR pedido. SI
NO, rechazar pedido
5. Fin
14. Elabore algoritmo para convertir un número
en base decimal a número binario.
15. El algoritmo se debe expresar en un formato
llamado PROGRAMA
Escrito en un Lenguaje de programación
Operaciones que expresan un algoritmo en
forma de programa: PROGRAMACIÓN
Tipos:
◦ Lenguaje de Máquina
◦ Lenguaje de bajo nivel
◦ Lenguaje de alto nivel
16. Diferentes pasos de un algoritmo
◦ Instrucciones, sentencias o proposiciones
Un programa consta de
◦ Secuencia de instrucciones
◦ Cada una especifica ciertas operaciones
◦ Ejecutar el computador
17. Instrucciones de Entrada/Salida
◦ Transferencia de data entre periféricos y memoria
central
Instrucciones aritmético lógicas
◦ Operaciones aritméticas y lógicas
Instrucciones selectivas
◦ Selección de tareas alternativas
Instrucciones repetitivas
◦ Permiten la repetición de secuencias de
instrucciones en un número
determinado/indeterminado de veces
18. Escritos directamente inteligible por la máquina
Instrucciones son cadenas binarias (1/0) que
especifican operación
posiciones de memoria (dirección): instrucciones
de máquina o código máquina
Dependen del hardware de la computadora
(procesador)
◦ Intel
◦ PowerPc
◦ Nvidia Tegra
◦ Texas Instruments, etc
19. Ventajas
◦ Transferir un programa al a memoria sin necesidad
de una traducción posterior
◦ Velocidad de ejecución superior
Desventajas
◦ Dificultad y lentitud en codificación
◦ Poca fiabilidad
◦ Dificultad para verificar y poner a punto
◦ Los programas sólo son ejecutables en el mismo
procesador
20. Más sencillos de L.Máquina
Dependen de procesador
Ensamblador (assembler language)
Instrucciones nemotécnicos (mnemonics)
◦ Contracciones de palabras comunes
◦ ADD M, N, P
Requiere traducción
◦ Original: programa fuente
◦ Traducción: programa objeto
◦ Traductor: programa ensamblador
21. Ventaja (frente a L.M)
◦ Mayor facilidad de codificación
◦ Velocidad de cálculo
Desventajas
◦ Dependencia total de la máquina
◦ No transportabilidad
◦ PC != Apple Macintosh
◦ Formación del programador es más compleja
Técnicas + conocimiento interior de la máquina
Uso:
◦ Aplicaciones de tiempo real, control, dispositivos
electrónicos
22. Uso más extendido por programadores
Más entendibles que anteriores
Independiente de la máquina
No dependen del diseño del hardware
Transportabilidad
◦ Ejecución con poca o ninguna modificación
23. Ventajas:
◦ Formación de programadores es corto
◦ Escritura basada en reglas sintácticas de lenguajes
humanos
READ
WRITE
PRINT
OPEN, etc
◦ Modificar un programa es más fácil
◦ Reducción del coste del programa
◦ Transportabilidad
24. Desventajas
◦ Incremento de tiempo de puesta a punto (traducción del
programa fuente)
◦ No se aprovecha recursos internos de la máquina
◦ Aumenta el uso de memoria
◦ Tiempo de ejecución del programa es mayor.
Programa fuente debe ser traducido por
compiladores e intérpretes.
C, C++, C#, Visual Basic, Java, Delphi, PHP,
ASP, SQL, JavaScript, Python, etc…
26. Programa Fuente
compilador
Programa objeto
Lenguaje de alto nivel a lenguaje máquina
Montador / Linker
Prog. Ejecutable en Languaje máquina
Ensamblador
Edición
Memoria
Verificación
(Sintáxis, errores)
27. DATO:
◦ expresión general que describe los objetos con los
cuales opera un computador
◦ Datos Simples
Numéricos
Lógicos
Caracter
◦ Datos Estructurados
Creados a partir de datos simples
28. Valores numéricos
Tipo entero (integer)
◦ Números enteros, sin componente decimal
◦ Positivos o negativos
5 78959
80 -1254
-59 0
◦ Límite o rango de acuerdo al tipo de lenguaje
Tipo real (real)
◦ Números reales, componente decimal, (+/-)
◦ 0.08 -568.45783 3.14159565
◦ 2,71828183
29. Datos tipo booleano
Toma solo dos valores
◦ TRUE = verdadero
◦ FALSE = falso
Representar alternativas
30. Caracteres que el computador reconoce
Contiene un solo carácter
◦ Alfabéticos A, B, C… Z, a, b, c…. z
◦ Numéricos 0,1,2…9
◦ Especiales + - * / . , < > # $
Cadena (string)
◦ Sucesión de caracteres
◦ Limitados por (‘) o (“). Det. Longitud
◦ “Hola mundo”
◦ ‘Instituto San Pablo Apóstol’
31. Constantes:
◦ Valores que no cambian durante la ejecución de
programa
Variables
◦ Cambian en cualquier momento al ejecutar el
programa
◦ Vars. de cierto tipo SOLO toma valores de ese tipo
de dato
◦ Atributos:
Nombre (identificadores)
Tipo que describe el uso de la var.
32. Combinación de:
◦ const, vars, símbolos de operación, paréntesis y
nombre de funciones especiales.
Operandos y operadores
Según tipo de datos
◦ Aritméticas
◦ Relacionales
◦ Lógicas
◦ Carácter
34. A. Operaciones encerradas entre paréntesis
se evalúan primero. Los más internos se
evalúan primero
B. Operaciones aritméticas en este orden:
1. Exponencial
2. *, /
3. +, -
4. Div, mod
5. De izquierda a derecha
35. De Relación
< Menor que
> Mayor que
= igual que
<= menor o igual que
>= mayor o igual que
<> distinto de
Expresion1 OperadorDeRelación Expresion2
36. Operadores lógicos
◦ Not (no)
◦ And (y)
◦ Or (o)
Prioridad según el lenguaje de programación