Introducción A Algoritmos
Introducción A Algoritmos
Introducción A Algoritmos
CATÓLICA DE EL
SALVADOR
Programación I SA
2
Contenidos
1. Introducción
2. Concepto de algoritmo
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
3
Introducción
• Un ordenador es un sistema para procesar información
Entrada = Salida =
Procesador
Datos Resultados
Algoritmo
4
Introducción
• Ciclo de vida del software
mantenimiento
análisis
diseño
IMPLEMENTACIÓN
PRUEBAS
documentación
5
Contenidos
1. Introducción
2. Concepto de algoritmo
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
6
Concepto de algoritmo
• Algoritmo (según el DRAE):
(del árabe al-Khowârizmî) “Conjunto ordenado y finito de operaciones que permite hallar
la solución de un problema”
• Ejemplos sencillos de algoritmos según esta definición podrían ser una receta de
cocina o las instrucciones para armar una bicicleta.
7
Concepto de algoritmo
• Breve reseña histórica:
• Los primeros algoritmos registrados datan de Babilonia, originados en las
matemáticas como un método para resolver un problema usando una secuencia de
cálculos más simples.
• El primer algoritmo famoso es el cálculo del MCD de dos números (Grecia,
aproximadamente del s. IV a. C.).
8
Concepto de algoritmo
• En Informática:
• Un algoritmo es una secuencia de pasos a seguir para resolver un problema usando
un computador u ordenador.
• La algoritmia o ciencia de los algoritmos, es uno de los pilares de la informática.
9
Concepto de algoritmo
• Definiciones básicas:
• Procesador: cualquier entidad capaz de resolver un problema
• Entorno: conjunto de utensilios que el procesador puede utilizar
• Estado: situación en la que se encuentra un entorno en un momento dado.
10
Concepto de algoritmo
• Definiciones básicas
• Acción:
Conjunto finito de operaciones que permiten llegar de un estado inicial bien definido
a otro también bien definido.
• Tipos de acciones:
• Acción primitiva o elemental
• Puede ser realizada directamente por el procesador.
• Acción compuesta o abstracta
• Ha de descomponerse en acciones más elementales para poder ser
entendida por un procesador.
11
Concepto de algoritmo
• Definición formal de algoritmo:
“Dado un procesador, un entorno, y un problema bien definido, un algoritmo es la
secuencia finita de acciones primitivas que llevan a la solución del problema”
12
Concepto de algoritmo
• Características de un algoritmo:
• Preciso (no ambiguo): la instrucción a ejecutar en cada paso queda determinada
perfectamente.
• Determinista: debe comportarse del mismo modo ante las mismas condiciones. Si se
sigue dos veces en el mismo entorno, el resultado obtenido es el mismo.
• Finito: Tiene fin tras un número determinado de pasos.
13
Contenidos
1. Introducción
2. Definiciones básicas
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
14
Lenguajes
de representación algorítmica
• ¿Cómo se escribe un algoritmo?
Representándolo mediante un lenguaje
lenguaje de representación algorítmica
• Dos tipos de representación:
• Pseudocódigo
• Diagramas de flujo
15
Representación algorítmica
• Pseudocódigo:
• Lenguaje similar al natural, pero al que se añaden reglas para conseguir una
definición precisa del algoritmo
• Algunas reglas:
• Empieza por la palabra “Inicio” y termina con la palabra “Fin”
• Se escribe una acción por línea
• Se subrayan las palabras clave
16
Representación algorítmica
• Diagrama de Flujo (DF):
• Representación gráfica del flujo de control de un algoritmo
• Elementos del (DF):
Entrada/
Terminal Proceso
Salida
no Conectores
Decisión Subprograma
si
17
Representación algorítmica
19
Programas
• Programa: Algoritmo codificado en un lenguaje de programación.
• Programar: Fraccionar un problema en forma de instrucciones adecuadamente
formuladas para que un ordenador pueda llevarlas a la práctica.
20
Programas
• Las instrucciones se forman con elementos o símbolos tomados de un determinado
repertorio, y se construyen siguiendo unas reglas precisas.
• Todo lo relativo a los símbolos y reglas para construir o redactar con ellos un programa se
denomina lenguaje de programación.
21
Lenguajes de programación
Clasificación
• Lenguaje máquina:
• Es el que entienden los circuitos del computador (CPU)
• Inconvenientes:
• depende del modelo de computadora;
• el repertorio de instrucciones es muy reducido
• es muy laborioso
• Ensamblador (lenguaje de bajo nivel)
• Código nemotécnico para recordar mejor las instrucciones máquina
• Se mantienen los otros inconvenientes del lenguaje máquina
• Lenguajes de alto nivel
• No dependen de la computadora, y facilitan la tarea de programación
22
Lenguajes de programación
Lenguajes de alto nivel
23
Lenguajes de programación
Lenguajes de alto nivel
• Pascal: Creado por Wirth en 1971. El mejor lenguaje para aprender a programar y
describir algoritmos.
• Ada: Es un lenguaje definido por el Ministerio de Defensa de USA a finales de los 70. Esta
basado en el Pascal y tiene unas reglas muy estrictas.
• C++: Ideado a comienzos de los 80 en los BellLabs. Es una variante del C que permite
utilizar la moderna metodología de la programación (“programación orientada a
objetos”)
• Java: Desarrollado en 1991 por Sun, es similar a C++ pero más sencillo de aprender y
usar. Muy usado para programa interactivos y dinámicos (“applets” de web). Se ha
definido un computador virtual Java compatible, cualquier computador con un programa
que lo emule puede ejecutar aplicaciones Java.
24
Lenguajes de programación
Lenguajes de alto nivel
• Otros lenguajes (usados en Inteligencia artificial):
• LISP (LISt Processing): Finales de los 50. Procesamiento de datos no numéricos
(caracteres, palabras y otros símbolos). Se usa en Inteligencia Artificial.
• PROLOG:(Programming Logic): Trabaja con relaciones lógicas entre hechos. Muy
usado en inteligencia artificial.
• LOGO: versión simplificada del LISP para niños.
25
Lenguajes de programación
Traductores
• Traducción: Proceso por el cual se convierte el texto del programa de entrada en el de
salida.
• Lenguaje fuente: lenguaje en el que se escribe la entrada
• Lenguaje objeto: lenguaje en el que se escribe la salida. En general, muy diferente
del lenguaje fuente
• Compilador: Programa que acepta como entrada un texto de programa escrito en un
cierto lenguaje de alto nivel y genera como salida texto de programa en otro lenguaje,
generalmente lenguaje máquina.
26
Lenguajes de programación
Compiladores
• Compilar ≈ Convertir de un formato a otro
• El significado deberá permanecer inalterado en la conversión
• La entrada está escrita en un lenguaje Tiene estructura
• Semántica asociada y descrita en términos de esa estructura
27
Lenguajes de programación Intérpretes
• Forma de trabajar cada vez más frecuente: Intérpretes
• En vez de traducir, realiza las acciones directamente
• Por ejemplo, la máquina virtual de Java
• Ventajas del uso de intérpretes
• Portabilidad: Un intérprete se escribe, habitualmente, en lenguaje de alto nivel
• Sencillez: Escribir un intérprete es menos costoso que escribir un compilador
• Señalización y manejo de errores: los compiladores cuidan “demasiado” la eficiencia
de código
• Seguridad: Funcionamiento más transparente al usuario
• Desventajas: Velocidad de los programas interpretados y consumo de memoria.
28
Lenguajes de programación
Compiladores vs. Intérpretes
• Compiladores:
• El procesamiento del programa es considerable
• El mecanismo de interpretación previsto es la CPU (hw)
• La ejecución del programa traducido es relativamente rápida
• Intérpretes:
• El procesamiento del programa es entre mínimo y moderado
• El mecanismo de interpretación es un programa (sw)
• La ejecución del programa es, en general, más lenta y más segura
29
Contenidos
1. Introducción
2. Definiciones básicas
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
30
Proceso de programación
31
Contenidos
1. Introducción
2. Definiciones básicas
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
32
Lenguaje C
• Es un lenguaje estructurado de propósito general, orientado a la programación de
sistemas
• Origen:
• Evolución de BSPL y B
• “The C programming language”, B. Kernighan & D. Ritchie. (1978)
• ANSI C:
• Versión estándar en 1983
• Nueva revisión en 1999
• Uno de los lenguajes más utilizados en la industria del software actual y en el mundo
Unix/Linux
33
Lenguaje C
• Características de C
• Propósito general
• Válido para diversos objetivos
• Portable
• NOTA: Sin embargo, siempre hay que compilar y probar un programa en el
ordenador “destino”
• Eficiente
• Apropiado para la programación de sistemas
• Extendido.
• Gran cantidad de bibliotecas de funciones, compiladores, etc.
• Amplia difusión y uso.
34
Bibliografía
• Joyanes Aguilar, L. “Fundamentos de programación. Algoritmos y Estructura de Datos”,
McGrawHill. Capítulo 2.
• Llanos Ferraris, D. “Curso de C bajo UNIX”. Capítulo 1.
35