EXPRESIONES

EXPRESIONES NUMÉRICAS: 
En algoritmos son expresiones en las que solamente aparecen operadores aritméticos ( +, -, *, /, div, mod, **) , conectando términos de tipo numérico exclusivamente.
Para el desarrollo se tiene en cuenta la prioridad de los operadores.


EXPRESIONES LÓGICAS: 
Una expresión lógica es aquella, en la cual, el resultado se da en términos de verdadero o falso. Generalmente una expresión lógica se construye a partir de expresiones comparativas, de variables y/o literales booleanos, los cuales se conectan mediante operadores lógicos. 

Los operadores de comparación usados en programación son los siguientes: 
mayor que (>), 
menor que (<), 
igual (=), 
mayor o igual que (>=), 
menor o igual que (<=) y 
diferente (<>); 

Mientras que los operadores lógicos usados son: 
o (|), 
y (&) y la 
negación (~). 

En el siguiente cuadro se resumen las tablas de verdad de estos operadores lógicos.

LOS DATOS EN PROGRAMACIÓN

DATOS.
Un dato es una pieza de información simple como un número, un código, un hecho o una edad. De manera formal, un dato es un elemento concreto de algún conjunto. Los tipos de datos más utilizados en programación son:

  • Entero: El nombre asignado al conjunto de números enteros.
  • Real:El nombre asignado al conjunto de números reales. 
  • Carácter: El nombre asignado al conjunto de caracteres. 
  • Booleano: El nombre asignado al conjunto de valores de verdad. 
  • Cadena: El nombre asignado al conjunto de cadenas de caracteres.

VARIABLES 
Es un símbolo que permite referenciar un espacio en memoria en el que se puede almacenar un dato. Toda variable posee tres características: nombre, tipo y estado.

El nombre de una variable es una secuencia de caracteres alfanuméricos y caracteres de subrayado, la cual siempre empieza por una letra. En algunos lenguajes de programación (C++, C, Java), se hace distinción entre mayúsculas y minúsculas mientras que en otros no (Pascal, Basic).

El tipo de una variable es el mismo tipo de los datos que se pueden almacenar en el espacio de memoria que la variable referencia. Por ejemplo, una variable de tipo entero, es decir, que se ha declarado como entera, sólo se puede usar para referenciar datos de tipo entero. La cantidad de memoria, es decir, el espacio en memoria en bits, asignada para almacenar un dato de un tipo depende del sistema operativo y del compilador del lenguaje.

Declaración de la variable:

VAR
 "<"nombre">" : "<"tipo">" 

CONSTANTES

Una constante es un símbolo que permite referenciar un espacio en memoria en el que hay un dato almacenado que no se puede cambiar. En términos generales, una constante es una variable para la cual no se puede modificar o cambiar el estado con el tiempo. 

Declaración de Constante:

CONST
"<"nombre">" = "<"literal">"

Técnicas para la Formulación de Algoritmos

PSEUDOCÓDIGO
Es la descripción de un algoritmo que asemeja a un lenguaje de programación pero con algunas convenciones del lenguaje natural. Pseudo significa "falso", imitación, Código se refiere a las instrucciones escritas en el lenguaje de programación; Pseudocódigo no es realmente un código sino una imitación y una versión abreviada de instrucciones reales para la computadora. 
Los Pseudocódigos utilizan palabras clave como: 
DO (hacer), 
IF – THEN – ELSE (si – entonces – sino) ENDIF (fin de si), 
DO UNTIL (hacer hasta) etc.


DIAGRAMA DE FLUJO
Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO (International Standard Organization) y ANSI (American National Standards Institute).

Diagrama de Flujo Convencional
es la representación gráfica del algoritmo o proceso. Se utiliza en disciplinas como programación, economía, procesos industriales y psicología cognitiva.


Símbología en Diagrama de Flujo Convencional

Diagrama de Flujo Nassi-Shneiderman
NSD por sus siglas en inglés, también conocido como diagrama de Chapin, es una representación gráfica que muestra el diseño de un programa estructurado.
Fue desarrollado en 1972 por Isaac Nassi y Ben Shneiderman. Este diagrama también es conocido como estructograma, ya que sirve para representar la estructura de los programas. Combina la descripción textual del pseudocódigo con la representación gráfica del diagrama de flujo.

Algoritmo

Algoritmo se deriva de la traducción al latín de la palabra árabe Alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. 
Un algoritmo es una secuencia precisa de operaciones (pasos) que resuelven un problema en un tiempo finito.

CARACTERÍSTICAS DE LOS ALGORITMOS


  • Un algoritmo debe ser preciso e indicar el orden de realización de cada paso. 
  • Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. 
  • Un algoritmo debe ser finito. el algoritmo se debe terminar en algún momento; o sea, debe tener un número finito de pasos. 
  • Un algoritmo debe ser legibles: El texto que lo describe debe ser claro, tal que permita entenderlo y leerlo fácilmente.

MEDIOS DE EXPRESIÓN DE UN ALGORITMO
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación, entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.
La descripción de un algoritmo usualmente se hace en tres niveles:

  • Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles. 
  • Descripción formal. Se usa pseudocódigo, DFC o N-S, para describir la secuencia de pasos que encuentran la solución. 
  • Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico

Clasificación de los lenguajes de alto nivel

Según los Paradigmas de Programación:
Entendiéndose como paradigma de programación a una “filosofía” de programar, es decir, los lenguajes que utilizan un mismo paradigma de programación utilizarán los mismos conceptos básicos para programar. Se pueden definir cuatro tipos fundamentales:
  • Imperativos.
  • La unidad de trabajo es la sentencia: Pascal, C.
  • Orientado a Objetos.
  • La unidad de trabajo es el objeto. Agrupa las estructuras de datos con sus algoritmos. Smalltalk.
  • Funcionales.
  • La unidad es la función. Consiste en combinar funciones para conseguir funciones más complejas hasta llegar a la función que es el programa. Lisp.
  • Lógicos.
  • Se especifican los hechos y las propiedades que especifican el problema. El sistema utiliza esa información para encontrar la solución. Prolog.
Según la Administración de Memoria:
  • Estáticos.
  • Los requisitos de memoria del programa se pueden calcular antes de ejecutar el programa. No permiten recursividad. Fortran, Cobol.
  • Basados en Pila.
  • Se calculan los requisitos de memoria generales del programa antes de ejecutarlo. El resto de la memoria necesaria durante la ejecución del programa se utiliza en forma de pila. Algol 60.
  • Dinámicos.
  • No se puede saber a priori la cantidad de memoria que utilizará el programa. El programa puede crear y destruir estructuras de datos en cualquier lugar del programa. Prolog, Lisp.

El C++ es un lenguaje principalmente basado en pila, pero que también tiene características dinámicas.

Según la forma en que se pasa a lenguaje máquina:

  • Lenguajes compilados → C, Pascal, C++,... 
  • Lenguajes interpretados → BASIC
Según el objetivo principal de los programas escritos en el lenguaje:

  • Lenguajes de propósito general → C, Delphi... 
  • Lenguajes para la enseñanza → Logo, Pascal, Modula, BASIC... 
  • Lenguajes para cálculo científico → Fortran, Matlab, Mathematica, Maple... 
  • Lenguajes para gestión → Cobol... 
  • Lenguajes para la gestión de bases de datos → System Query Languages (SQL) Informix...
  • Lenguajes de inteligencia artificial → Prolog, Lisp... 
  • Programación multiplataforma e internet → Java