Sie sind auf Seite 1von 9

Clasificación

Las Estructuras de datos pueden clasificarse en lineales y no lineales. Una


Estructura de datos es lineal si sus elementos forman una secuencia o, en otras
palabras una lista lineal.

Tipos de estructuras de datos


Arrays
La estructura de datos más simple es el array lineal (o unidimensional). Un array
lineal es una lista de números finitos de datos similares, referenciados por medio
de un conjunto de n números consecutivos, normalmente 1,2,3, …, n.

Pila
Una pila, también denominada sistema último-dentro primero-fuera (LIFO), es una
lista lineal en la cual las inserciones y extracciones tienen lugar sólo por un
extremo llamado cúspide.

Cola
Una cola, también denominada sistema primero-dentro primero-fuera (FIFO), es
una lista lineal en la cual las extracciones se realizan siempre por un extremo
llamado frente y las inserciones por el extremo contrario llamado final de la lista.

Grafos
Los datos contienen, en algunos casos, relaciones entre ellos que no es
necesariamente jerárquica. Por ejemplo, supongamos que unas líneas aéreas
realizan vuelos sólo entre ciudades conectadas por líneas. La estructura de datos
que refleja esta relación recibe el nombre de grafo.

Operaciones con estructuras de datos


Recorrido
Implica el acceder a cada registro una única vez aunque uno o más ítems del
registro sean procesados. (Este acceso o procesamiento también se denomina a
veces por el término «visitar» el registro).

Búsqueda
Implica la localización de un registro caracterizado por una determinada clave o
también el acceso a todos los registros que cumplan una o más condiciones.

Inserción
Cuando añadimos nuevos registros a la estructura.

Eliminación
Operación de borrado de un registro de la estructura.

Ordenación
Es la operación de clasificar los registros conforme a un orden lógico determinado
(por ejemplo, alfabéticamente, de acuerdo a una clave de nombre, o numérica, de
acuerdo a alguna clave de número, tal como número de Seguridad Social o de
inventario).

Mezcla
Es la operación de combinar dos archivos previamente ordenados en uno único
que también lo está.
Una estructura de datos es una colección de datos que pueden ser caracterizados por su
organización y las operaciones que se definen en ella. Las estructuras de datos son muy
importantes en los sistemas de computadora. Los tipos de datos más frecuentes utilizados en
los diferentes lenguajes de programación son: datos simples estándar entero (integer) real
(real) carácter (char) lógico (boolean) definido por el programador subrango (subrange) (no
estándar) enumerativo (enumerated) datos estructurados estáticos arrays (vectores/matrices)
registros (record) ficheros (archivos) conjuntos (set) cadenas (string) dinámicos listas
(pilas/colas) listas enlazadas árboles grafos Los tipos de datos simples o primitivos significan
que no están compuestos de otras estructuras de datos; los más frecuentes y utilizados por
casi todos los lenguajes son: enteros, reales y carácter (char), siendo los tipos lógicos, subrango
y enumerativos propios de lenguajes estructurados como Pascal. Los tipos de datos
compuestos están construidos basados en tipos de datos primitivos; el ejemplo más
representativo es la cadena (string) de caracteres. Los tipos de datos simples pueden ser
organizados en diferentes estructuras de datos: estáticas y dinámicas. Las estructuras de datos
estáticas son aquellas en las que el tamaño ocupado en memoria se define antes de que el
programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa.
Estas estructuras están implementadas en casi todos los lenguajes: array (vectores/tablas-
matrices), registros, ficheros o archivos (los conjuntos son específicos del lenguaje Pascal). Las
estructuras de datos dinámicas no tienen las limitaciones o restricciones en el tamaño de
memoria ocupada que son propias de las estructuras estáticas. Mediante el uso de un tipo de
datos específico, denominado puntero, es posible construir estructuras de datos dinámicas
que son soportadas por la mayoría de los lenguajes que ofrecen soluciones eficaces y efectivas
en la solución de problemas complejos —Pascal es el lenguaje tipo por excelencia con
posibilidad de estructuras de datos dinámicos—. Las estructuras dinámicas por excelencia son
las listas —enlazadas, pilas, colas—, árboles —binarios, árbol-b, búsqueda binaria— y grafos.
La elección del tipo de estructura de datos idónea a cada aplicación dependerá esencialmente
del tipo de aplicación y, en menor medida, del lenguaje, ya que en aquellos en que no está
implementada una estructura —por ejemplo, las listas y árboles no los soporta COBOL—
deberá ser simulada con el algoritmo adecuado, dependiendo del propio algoritmo y de las
características del lenguaje su fácil o difícil solución. Una característica importante que
diferencia a los tipos de datos es la siguiente: los tipos de datos simples tienen como
característica común que cada variable representa a un elemento; los tipos de datos
estructurados tienen como característica común que un identificador (nombre) puede
representar múltiples datos individuales, pudiendo cada uno de éstos ser referenciado
independientemente.

Representación de un algoritmo
Una vez que se ha elegido la mejor alternativa para solucionar el problema o reto para el
que se crea el algoritmo es el momento de representarlo siguiendo alguno de estos
métodos:

 Lenguaje natural (español, inglés, etc)


 Diagramas de flujo
 Pseudocódigo

Diagramas de Flujo
A continuación se muestran una serie de símbolos útiles para llevar a cabo este tipo de
representaciones.
Fuente: Slideshare de Paco González Caballero

En Internet existen numerosas herramientas que pueden ayudarte a crear diagramas de


flujo. Aquí te proponemos dos gratuitas:

 draw.io: Permite guardar los diagramas en el disco duro de tu ordenador, Gdrive,


OneDrive o Dropbox.
 Diagramly: Posibilita crear diagramas de flujo o mapas mentales.

En este documento (ver) encontrarás una serie de reglas y ejemplos para crear
algoritmos y diagramas de flujo.

Pseudocódigo
El Pseudocódigo es sin duda de las representaciones más utilizadas. Es una forma de
expresar el algoritmo utilizando el lenguaje natural, comprensible para cualquier
persona, pero añadiendo ciertas instrucciones típicas de los lenguajes de programación.

No existe una sintaxis estándar para el pseudocódigo, pero como hemos comentado, en
el pseudocódigo se reflejan las instrucciones típicas de los lenguajes de programación,
como las instrucciones condicionales:

SI condición ENTONCES
instrucciones/pasos a realizar si se cumple la
condición
SI NO
instrucciones/pasos a realizar si NO se cumple
la condición
FIN SI

Elaboración propia utilizando Scratch

Y las instrucciones repetitivas:

REPETIR n veces
instrucciones/pasos a realizar
FIN REPETIR

Elaboración propia utilizando Scratch

REPETIR HASTA condición de salida


instrucciones/pasos a realizar hasta que se cumpla la condición de salida del
bucle
FIN REPETIR

Elaboración propia utilizando Scratch

En definitiva, el pseudocódigo se trata de un falso lenguaje, ya que apela a las normas


de estructura de un lenguaje de programación aunque está pensado para que pueda ser
leído por un ser humano y no interpretado por una máquina.

El pseudocódigo, en este sentido, está considerado como una descripción de un


algoritmo que resulta independiente de otros lenguajes de programación. Para que una
persona pueda leer e interpretar el código en cuestión, se excluyen diversos datos que no
son clave para su entendimiento. Veamos un par de ejemplos orientados a crear
algoritmos matemáticos:
Ningún ordenador podría interpretar estas instrucciones. Para crear un programa a partir
del algoritmo, una vez refinado el pseudocódigo, deberíamos reescribirlo en un leguaje
de programación: C, C++, Java, Scratch...

1.4.2 Diagramas de Flujo


Es una descripción gráfica de un algoritmo para resolver un problema. Los
diagramas de flujos están compuestos por figuras conectadas con flechas.

El diagrama comienza en un inicio establecido y termina en un final también


establecido, las diferentes figuras de las que se vale este diagrama tienen un
significado propio.

Este tipo de diagrama puede ayudar a la mejor interpretación y definición de


un algoritmo de solución a un problema a nivel general, pero tiene el
inconveniente de que si se aumenta el nivel de detalle en el mismo se
dificulta en gran medida su lectura e interpretación.
1.4.4 Pseudocódigo
El pseudocódigo es una descripción en lenguaje natural de un algoritmo que
se pretende emplear en el desarrollo de un programa, empleando en ello
ciertas convenciones sintácticas idénticas a las de los lenguajes de
programación, como asignaciones, ciclos y condicionales.

El pseudocódigo tiene como finalidad facilitar el entendimiento de un


algoritmo, y por tanto puede no incluir detalles irrelevantes que son
necesarios en una implementación.

El pseudocódigo en general se puede entender sin conocer lenguaje de


programación alguno, y es lo suficientemente estructurado para que su
realización pueda ser implementada en un lenguaje de programación a partir
de él.
El Pseudolenguaje Parte I

El pseudocódigo es un lenguaje de especificación de algoritmos. Se utiliza como


un primer borrador del programa en la fase de diseño, para "perfilar" el código
fuente, centrándose en la lógica y los puntos de control de éste sin tener que
ceñirse a las restricciones sintácticas de un lenguaje de programación. Como ya
supondréis, el pseudocódigo no puede ser ejecutado por un computador.

Los lenguajes de alto nivel tienen sentencias de control que se asemejan al


lenguaje hablado: "si pasa esto hago tal, si no, hago otra cosa", "mientras pase
esto hago aquello"... El pseudocódigo no es más que una pequeña
"estandarización" del lenguaje hablado, que luego podrá traducirse a un lenguaje
de programación. Por ejemplo, si yo digo: "si vienes más tarde de las 5 me voy",
podría escribir un pseudocódigo:

Si tu_hora_de_llegada > 5 entonces me_voy

Siguiendo con la filosofía del pseudocódigo, no vamos a seguir unas normas


estrictas, pero sí unas mínimas normas básicas para homogeneizar y hacer
comprensible el pseudocódigo que desarrollemos.

Se insistirá mucho en seguir unas "normas de estilo" que hagan más comprensible
el código fuente de un programa. Es responsabilidad del alumno seguirlas, pero
todos los buenos programadores las siguen, no es una "pijada", realmente ayuda a
programar mejor.
Vamos a adelantar una serie de conceptos que veremos con más detalle en
próximos artículos. Una variable es una "entidad" que utilizaremos para almacenar
información durante la ejecución de un programa. El contenido de una variable
puede modificarse asignándole un valor. Por ejemplo, si quisiéramos que una
parte del programa se ejecutase si el valor de una variable es 5, en pseudocódigo
lo escribiríamos:

variable_1 := 3;
(* grupo de instrucciones 1 *)

si (variable_1 = 5) entonces
hacer
_____(* grupo de instrucciones 2 *)
fin_hacer

en_otro_caso
hacer
_____(* grupo de instrucciones 3 *)
fin_hacer

¿Se ejecutaría el "grupo de instrucciones 2"? Eso no lo sabemos, depende del valor
que tome la variable variable_1 en el momento de evaluar si es igual o no a 5. Es
por esto por lo que se dice que la ejecución de los programas es dinámica.
Dependiendo de las condiciones en las que se ejecute un programa, obtenemos un
resultado u otro. De todas formas, ya veremos más adelante "de qué va todo esto".

En el fragmento anterior de pseudocódigo han aparecido varios elementos. Una


asignación de un valor a una variable, tres comentarios y una estructura de control
selectiva. El pseudocódigo de las estructuras de control ya lo veremos en los
capítulos correspondientes, de todas formas, a partir de este momento las
utilizaremos para empezar a desarrollar los primeros "mini-programas".

Das könnte Ihnen auch gefallen