Este documento define los conceptos fundamentales de algoritmos y programación. Explica que un algoritmo es una secuencia precisa de pasos para resolver un problema, mientras que un programa es la expresión de un algoritmo en un lenguaje de programación. También describe las herramientas para describir soluciones algorítmicas como diagramas de flujo y pseudocódigo, así como las estructuras básicas de los algoritmos como la secuencial, condicional e iterativa. Finalmente, introduce los conceptos de lenguajes de programación de alto y bajo nivel.
2. ¿Qué es un algoritmo?
• Un algoritmo es una secuencia precisa de operaciones que
resuelven un problema en un tiempo finito.
• Se pueden representar en multitud de lenguajes y ejecutarse en
ordenadores distintos.
3. Propiedades del algoritmo
• Siempre debe terminar.
• Instrucciones concretas, sin ambigüedades.
• Pasos simples y orden definido.
• Debe funcionar sean cuales sean los datos de
entrada.
• Eficiente y rápidoOptimizar.
• Independiente de la máquina y del lenguaje de
programación usado.
4. ¿Qué es un programa?
• Expresión de un algoritmo en lenguaje de
programación, capaz de ser procesado por el
ordenador tras el compilado, linkado… y que
controla el funcionamiento del ordenador para
resolver un problema.
5. ¿Cómo construir un programa?
• Análisis: ¿qué tenemos que hacer?
• Diseño: ¿cómo vamos a hacerlo? Diseño
TOP DOWN.
• Codificación: obtención del programa.
• Pruebas: comprobar que el sistema no falla.
• Documentación y mantenimiento.
6. Herramientas para describir soluciones
• 1. Diagrama de flujo.
Representación gráfica del algoritmo mediante
símbolos que contienen los pasos del algoritmo
y flechas que los unen indicando el orden en
que se ejecutan.
7. • 2. Pseudocódigo.
Representación narrativa en lenguaje natural
usando estructuras de control y algunos símbolos
algebraicos. Las estructuras de control son:
-Estructura secuencial (una instrucción tras otra,
ejecutadas de arriba abajo)
-Estructura selectiva (conjunto de instrucciones
en función de si se cumple o no una condición)
-Estructura iterativa (repite algo un número de
veces hasta que sea cierto)
Ejemplo de estructura
selectiva.
8. 1. Estructura secuencial.
• El orden en que se realizan las acciones es
muy importante: no puede calcularse la media
sin antes leer los números.
9. 2. Estructura selectiva o condicional.
• Se examina la condición, y si es verdadera, se
ejecutan las acciones asociadas al ‘sí’. Si no fuese
verdadera, se ejecutan acciones ligadas al ‘si no’,
aunque esto no es obligatorio.
• Permite anidar unas instrucciones dentro de otras.
• Existen el operador ‘y’, para ejecutar una instrucción
si se cumplen dos condiciones simultáneamente, y el
operador ‘o’, para ejecutar la instrucción si se cumple
alguna de las condiciones.
10. 3. Estructura iterativa o de repetición.
• Tiene la estructura ‘mientras’ (se analiza la
condición, y si es falsa, se saltan las
instrucciones dentro del bucle), la estructura
‘repetir’ (evalúa la condición una vez
realizada la acción), la estructura ‘para’
(permite realizar una acción un número
determinado de veces)
• Un error muy común con las estructuras de
repetición consiste en poner mal la condición
de finalización u olvidarse de incrementar el
contador, dando lugar a bucles infinitos (bucles
12. Traducción de ideas a un lenguaje de
programación concreto.
• Acciones y estructuras de control de los
algoritmos.
Las acciones pueden ser:
1. AsignacionesEvaluar una expresión y
almacenar su valor en una variable.
2. E/SEl programa intercambia información
con un medio externo.
3. Operaciones aritmético-lógicasEjecutan
operaciones aritméticas (suma, división,
potenciación) y lógicas (and, or, not)
13. Las estructuras de control pueden ser:
1. Decisiones acciones de control de flujo que
permiten cambiar el orden en que se hacen otras
acciones en función de si se cumple una condición.
2. Ciclos (bucles) repetición de un segmento de
programa. El ciclo puede ser repetitivo o condicional.
PROCEDIMIENTOS O SUBRUTINA
Realiza una parte del programa y tiene un nombre por
el que puede ser llamado desde cualquier parte del
programa. Se comunica mediante una variable de
comunicación llamada argumento.
14. Lenguajes de programación
• Herramienta que nos permite transformar un
algoritmo en un programa.
• Tiene un léxico, una gramática y una semántica.
• Los lenguajes de alto nivel han de ser traducidos a
lenguaje máquina para su comprensión.
• Para ello existen los traductores, que pueden ser
compiladores (traducen el programa inicial:
programa fuente, y producen el programa objeto)
o intérpretes (analizan una a una las instrucciones
del programa fuente y no se analiza una hasta que
la anterior se haya ejecutado)
15. Clasificación de los lenguajes de
programación
1. Lenguaje máquina: directamente inteligibles por el ordenador
porque son cadenas binarias. Solo ejecutable en el procesador
específico. Poca fiabilidad.
2. Lenguaje de bajo nivel (ensamblador): dependen de la
máquina en particular. Más fáciles de codificar que el
lenguaje máquina.
3. Lenguaje de alto nivel (independientes de la máquina, muy
portables. Más fáciles de programar y entender. Sintaxis más
cercana al lenguaje humano que al de la máquina. Hay
varios, como el Java, Visual Basic…)
16. Lenguajes de nivel C
• Combina lenguajes de alto nivel con elementos
del ensamblador.
• Permite manipular bits, bytes, direcciones… A
diferencia de los de alto nivel.
• Adecuado para programación de sistemas.
• Posible adaptar el software de un ordenador en
otro.