Category Archives: Programación

Algoritmos y Programas

Este material es tomado de “Conceptos Básicos” del profesor Fernando Berzal.

Algoritmo

Secuencia ordenada de pasos que resuelve un problema concreto.

Características

  • Corrección (sin errores).
  • Precisión (ausencia de ambigüedades).
  • Repetitividad (solución genérica de un problema dado).
  • Finitud (número finito de órdenes no implica finitud).
  • Eficiencia (temporal [tiempo necesario] y espacial [memoria utilizada])

Programa

Implementación de un algoritmo en un lenguaje de programación.

Programación

Conjunto ordenado de instrucciones que se dan al ordenador indicándole las operaciones o tareas que ha de realizar para resolver un problema.

Lenguajes de programación

Una instrucción es un conjunto de simbolos que representa una orden para el ordenador: la ejecuci6n de una operaci6n con datos.

Las instrucciones se escriben en un lenguaje de programación:

  • Se forman con símbolos tomados de un determinado repertorio (componentes léxicos).
  • Se construyen siguiendo unas reglas precisas (sintaxis).

Lenguaje de máquina

  • El único que entiende directamente la CPU del ordenador.
  • Depende del modelo de ordenador.
  • Repertorio de instrucciones reducido (operaciones muy elementales).
  • Muy dificil programar en el (en binario, con cadenas de ceros y unos).

Lenguaje ensamblador

  • Equivalente al lenguaje máquina, cada línea de código se traduce en una instrucción para la máquina.
  • Le asocia mnemónicos a las operaciones que entiende la CPU
  • Repertorio de instrucciones reducido (operaciones muy elementales)
  • Programas dificiles de entender

Lenguajes de alto nivel

  • Permiten que el programador exprese el procesamiento de datos de forma simb6lica, sin tener en cuenta los detalles especificos de la máquina.
  • Independientes del modelo de ordenador.
  • Proporcionan un mayor nivel de abstracción.

Ejemplos de lenguajes de programación de alto nivel

  • FORTRAN (FORmula TRANslation):
    • © 1957, IBM (John Backus).
    • Orientado a la resolución de problemas científicos y técnicos.
  • COBOL (COmmon Business Oriented Language):
    • © 1959, Codasyl (Committee on Data System Languages).
    • Aplicaciones comerciales de gestión.
  • LISP (LISt Processing):
    • © 1959, John McCarthy (MIT).
    • Procesamiento de datos no numericos (usado en IA).
  • BASIC (Beginner’s All-purpose Symbolic Instruction Code):
    • © 1964, John Kemeny & Thomas Kurtz (Darmouth College).
    • Lenguaje interactivo para principiantes.
  • Simula:
    • © 1967, Ole-Johan Dahl & Krysten Nygaard (Noruega).
    • Primer lenguaje de programación orientada a objetos.
  • Pascal:
    • © 1971, Niklaus Wirth.
    • Lenguaje estructurado diseñado para aprender a programar.
  • C:
    • © 1972, Denis Ritchie (Bell Labs).
    • Lenguaje pequeño, flexible y eficiente.
  • Smalltalk:
    • © 1972, Alan Kay (Xerox PARC).
    • Origen de los interfaces WIMP (Windows, Icons, Mouse & Pull-down menus).
  • PROLOG (PROgramming in Logic):
    • © 1972, Alain Colmerauer (Universidad de Marsella).
    • Basado en Lógica (usado en IA).
  • Ada:
    • © 1980, US Department of Defense.
    • Basado en Pascal, muy usado en aplicaciones militares.

Clasificación de los lenguajes de programación de alto nivel

Lenguajes imperativos:

Los programas indican al ordenador de forma inequívoca los pasos a seguir para la resolución de un problema.

  • Programación estructurada:

La estructura del texto del programa debe auxiliarnos para entender la funci6n que realiza: estrategia “divide y vencerás” (la resoluci6n de un problema se divide en tareas y, estas, en subtareas).

Ejemplos: C, Pascal, Fortran…

  • Programación orientada a objetos:

Estilo de programaci6n que basa la estructura de un programa en m6dulos deducidos de los tipos de objetos que manipula (en lugar de basarse en las tareas que el sistema debe realizar).

Ejemplos: Smalltalk, C++, Java, C#…

Lenguajes declarativos (funcionales y lógicos):

Los programas se implementan como conjuntos de funciones (o reglas lógicas) cuya evaluación nos dará el resultado deseado.

Ejemplos: LISP, PROLOG…

Traductores

Los traductores transforman programas escritos en un lenguaje de alto nivel en programas escritos en c6digo máquina:

Intérprete

Tipos de traductores

  • Compiladores

Generan un programa ejecutable a partir del código fuente:

Compiladores

  • Intérpretes

Van analizando, traduciendo y ejecutando las instrucciones del programa una a una. No se traduce una instrucci6n hasta que la ejecuci6n de la anterior haya finalizado.