miércoles, 17 de junio de 2015

INTRODUCCIÓN

La disciplina Lenguaje y Técnica de Programación tiene como propósito la solución de problemas mediante el empleo de computadoras, la cual se identifica con los paradigmas de la programación estructurada, orientado a objetos y visual, la misma resulta de gran importancia en la formación informática de los profesores de las carreras de Informática y Educación Laboral Informática, así como para el desarrollo de habilidades profesionales brindándoles herramientas de tipo cognitiva-instrumental para buscar la racionalidad, claridad, facilidad y elegancia en el proceso mental cuando se quiere encontrar la solución de problemas, posibilitando el pensamiento lógico de los estudiantes donde juega una papel importante el desarrollo de las habilidades intelectuales deducir o inducir.


DESCRIPCIÓN DE LA MATERIA

Los cambios tecnológicos de nuestra era implica una amplia gama de conocimiento en el área razón por la cual se vuelve fundamental mantenerse actualizado con la terminología informática que cada día absorbe a más usuarios los que antes se consideraban términos raros y de uso técnico ahora se encuentran en nuestro vocabulario común y son usados por muchas personas indistintamente de su profesión.


Hablar por ejemplo de hardware, software, sistemas, unidades de medida informáticas procesamiento de información etc. Se ha vuelto común con el creciente uso de las tecnológicas móviles que están llegando al alcance de todos.

CONCLUSIÓN DEL APRENDIZAJE

Una gran experiencia obtenida al desarrollar la materia de fundamento de programación lograr el aprendizaje de programar en los diferentes programas utilizados lograr la experiencia de desarrollar nuestra forma de pensar y ver las cosas computacionales 


BIBLIOGRAFIA

 JOYANES AGUILAR, Luis. Zahonero Martínez, Ignacio. Estructuras de Datos en Java. 1a.ed Madrid: McGraw-Hill Interamericana de España 2008. 6 ejemplares (Biblioteca Central: 3 Biblioteca Usulután: 3).

 JOYANES AGUILAR, Luis. Fundamentos de programación: Algoritmos y estructuras de datos y objetos. 4a. ed. Madrid: McGraw Hill 2008. 6 ejemplares (Biblioteca Central: 3 Biblioteca Usulután: 3).

 RAMÍREZ, Felipe. Introducción a la Programación: algoritmos y su implementación en VB.NET, C#, JAVA Y C++. 2a.ed. México D.F.: Alfaomega grupo editor 2007. 6 ejemplares (Biblioteca Central: 3 Biblioteca Usulután: 3).

 VILLAREAL DE LA GARZA, Sonia. Introducción a la Computación: teoría y manejo de paquetes. 2a.ed. México: McGraw-Hill 2007. 6 ejemplares (Biblioteca Central: 3 Biblioteca Usulután: 3).

SANTOS GONZALEZ, Manuel. Patiño Cortés, Ismael. Carrasco Vallinot, Raúl. Fundamentos de Programación. 1a.ed México D.F.: Alfaomega grupo editor 2006. 6 ejemplares (Biblioteca Central: 3 Biblioteca Usulután: 3).

 LÓPEZ ROMÁN, Leobardo. Metodología de la Programación Orientada a Objetos. 1a.ed México D.F.: Alfaomega grupo editor 2006. 6 ejemplares (Biblioteca Central: 3 Biblioteca Usulután: 3).

CAIRO BATTISTUTTI, Osvaldo. Metodología de la Programación: algoritmos, diagramas de flujo y programas. 3a.ed. México D.F.: Alfaomega grupo editor 2005. 6 ejemplares (Biblioteca Central: 3 Biblioteca Usulután: 3).

Para el desarrollo de esta asignatura se hace uso de la biblioteca electrónica a la cual la Universidad tiene acceso mediante la Alianza con MICROSOFT de MSDN Academic Alliance. El programa MSDNAA incluye:

 · Biblioteca de soporte técnico Knowledge Base
 · Soporte Técnico Profesional.
 · Soporte para estudiantes de departamentos de MSDNAA.
 · Recursos de soporte en línea MSDN: http://msdn.microsoft.com/support
 · Busque en la base de conocimientos (Manuales): http://support.microsoft.com

· Soporte para MSDNAA Administrators con una suscripción a MSDN. y Recursos de Soporte en Línea de MSDN: http://msdn.microsoft.com/subscriptions/support

GRUPO DE TRABAJO


Somos un grupo responsable formado por tres miembros el cual hemos organizado y desarrollado
la información obtenida halo largo del ciclo de la materia de fundamento de programación proporcionando en este blog información de útil ayuda a aquellos que desean tener una buena perspectiva de lo que es la programación

VIDEOS

EJEMPLO DE CICLO REPETIR


EJEMPLO DE CICLO PARA


EJEMPLO DE CICLO SI ENTONCES 

GLOSARIO.



Alfanumérico: Característica que indica un conjunto de caracteres que incluye letras, números y signos de puntuación.

Algoritmo: Procedimiento lógico-matemático, aplicado para resolver un problema.

Almacenamiento aleatorio: Método de almacenamiento que permite el acceso directo a los datos sin pasar por los anteriores, lo cual reporta una mayor rapidez.

Análisis de sistemas: Estudio de una tarea o función para comprenderla y encontrar mejores maneras de realizarla.

Bus: Caminos eléctricos internos de la computadora por los que transitan señales o datos entre los componentes de la computadora y la

Byte: Conjunto de 8 bits usado para designar un carácter, letra o número.

C: Lenguaje de programación usado principalmente para la programación de sistemas o sofisticadas aplicaciones.

C++: Lenguaje de programación orientado a objetos, basado en el lenguaje C.

CD-ROM (Compact Disc Read-Only Memory): Tecnología de almacenamiento óptico sólo de lectura, utilizada por los discos compactos.

Ciclo de máquina: Tiempo requerido por el computador para realizar completamente una operación.

Dato: Representación de un hecho o idea que puede ser manipulado y al cual se le puede asignar un significado.

Depuración: Detección, localización y eliminación de errores en un programa. También llamado debugging.

Diagrama de flujo: Representación gráfica de los tipos y secuencia de operaciones de un programa o proceso.

EJEMPLOS DE PSEINT.









UNIDAD #1. INTRODUCCIÓN DE LA PROGRAMACIÓN.

Se pueden utilizar muchos lenguajes para programar una computadora. El más básico es el lenguaje de máquina, una colección de instrucciones muy detallada que controla la circuitería interna de la máquina. Este es el dialecto natural de la máquina. Muy pocos programas se escriben actualmente en lenguaje de maquina por dos razones importantes: primero, porque el lenguaje de maquina es muy incómodo para trabajar y segundo porque la mayoría de las maquinas se pide programar en diversos tipos de lenguajes, que son lenguajes de alto nivel, cuyas instrucciones son más compatibles con los lenguajes y la forma de pensar humanos como lo es el lenguaje c que además es de propósito general.

Debido a que los programas diseñados en este lenguaje se pueden ejecutar en cualquier máquina, casi sin modificaciones. Por tanto el uso del lenguaje de alto nivel ofrece tres ventajas importantes, sencillez, uniformidad y portabilidad.

1.1       Conceptos Generales y Terminología de la Programación.
La computadora no solamente  es una máquina que puede realizar procesos para darnos resultados.
También podemos diseñar soluciones a la medida, de problemas específicos que se nos presenten.
Más aún, si estos involucran operaciones matemáticas complejas o repetitivas, o requieren del manejo de un volumen muy grande de datos.

Lenguajes de programación:

Es un conjunto de símbolos, caracteres y reglas que les permiten a las personas comunicarse con la computadora.
Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, cálculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación.



Los lenguajes de programación se clasifican en.


Lenguaje Máquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traducción posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria más pequeña el bit (dígito binario 0 ó 1).

Lenguaje de Bajo Nivel:
 (Ensamblador): En este lenguaje las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones simbólicas.

Lenguaje de Alto Nivel: 
Los lenguajes de programación de alto nivel (BASIC, pascalcobol, fortran, etc.) son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos (en general en inglés), lo que facilita la escritura y comprensión del programa.

1.2       Importancia de la Programación.
Programación.
Secuencia de instrucciones mediante las cuales se ejecutan diferentes acciones de acuerdo con los datos que se estén procesando.
Es un algoritmo desarrollado para ser utilizado por la computadora
Expresión de un algoritmo en un lenguaje preciso que puede llegar a entender una máquina de cómputo.
Utilizar el transporte (autobús, carro, bicicleta, etc.)

 Fases para la creación de un programa.

Definición del Problema. 
Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.

 Análisis del Problema.
Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir: Los datos de entrada. Cuál es la información que se desea producir (salida) Los métodos y fórmulas que se necesitan para procesar los datos. Una recomendación muy práctica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados.

Diseño del Algoritmo.
Las características de un buen algoritmo son: Debe tener un punto particular de inicio. Debe ser definido, no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema. Debe ser finito en tamaño y tiempo de ejecución.

 Codificación.
La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel.

 Prueba y Depuración.
Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración. La prueba consiste en la captura de datos hasta que el programa no presente errores (los más comunes son los sintácticos y lógicos).

 Documentación.
Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientosdibujos o diagramas.


UNIDAD #2. Metodologías que Permiten Desarrollar Actividades Básicas de la Programación.

2.1 Definición del Problema.
Está dada por el enunciado del problema, el cuál debe ser claro y completo. Es importante que conozcamos exactamente que se desea del computador; mientras que esto no se comprenda, no tiene caso pasar a la siguiente etapa. 
El proceso de resolución de un problema con una computadora conduce a la escritura de un programa y a su ejecución en la misma. Aunque el proceso de diseñar programas es esencialmente un proceso creativo, se pueden considerar una serie de fases o pasos comunes, que generalmente deben seguir todos los programadores. 

2.2 Análisis de variables (Entrada - Proceso - Salida).
Entendido el problema (que se desea obtener del computador), para resolverlo es preciso analizar.
Los datos o resultados que se esperan.
Los datos de entrada que nos suministran.
El proceso al que se requiere someter esos datos a fin de obtener los resultados esperados.
Áreas de trabajo, fórmulas y otros recursos necesarios. 

2.3 Algoritmo.
Serie de pasos ordenados encaminados a resolver un problema, debe ser escrita en forma clara y fácil de entender
Podríamos decir que explicar con nuestras propias palabras como resolver el problema.

El algoritmo debe contar con tres partes esenciales 

Entradas: datos desconocidos que hacen falta para resolver el problema

Procesos: aplicación de fórmulas y operaciones que sean necesarias para resolver el problema

Salidas: resultados que se desean obtener es decir la información

2.4 Flujo gramas.
Utiliza símbolos gráficos para la representación del algoritmo combinación de constantes, variables, operadores e incluso palabras reservadas  que siguiendo la sintaxis de un determinado lenguaje de programación permiten al procesador ejecutar una acción

2.4.1     Símbolos utilizados en los diagramas de flujo.
Inicio o terminal.
Representa el inicio y el final de un programa puede representar también una parada o interrupción programada que sea necesario realizar en un grupo.

Entrada/salida en pantalla.
Significa introducción de datos en la memoria desde los periféricos de entradas o registros de información procesada o salida.

Proceso.
Cualquier tipo de operación que pueda originar cambio de valor formato o posición de la información almacenada en memoria entre ellas operaciones aritméticas.

Decisión.
Indica operaciones lógicas o de comparación entre datos generando una salida falsa o verdadera.

Conector de programas.
Sirve para enlazar dos partes cuales quiera de un flujo grama atraves de un conector de salidas y otros conectores en la salida. Se refiere a la conexión en la misma página.

Conector de página.
Conexión entre dos puntos de flujo grama situado en páginas diferentes.

Línea conectora.
Sirve de unión entre dos símbolos.

Indicador de dirección.
Línea de flujo indica el sentido de ejecución de las operaciones.

Impresora.
Se utiliza para generar la salida de los programas en papel en ocasiones en lugar del símbolo de entrada/salida.

Comentarios.
Se utiliza para añadir comentarios clasificadores a otros símbolos del diagrama de flujo. Se puede dibujar a cualquier lado del símbolo.

Estructura repetitiva.
Permite la ejecución de un ciclo de acciones dos o más veces.

2.4.2     Reglas para elaborar un diagrama de flujo.
Todos los flujos tienen un principio y un final.
Las líneas de conexión de un flujo deben de ser siempre rectas verticales y horizontales.
Las líneas que enlazan los símbolos entre si deben estar todas conectadas y cada línea debe entrar a un bloque
.
La visualización de recorrido del flujo grama debe de ser desde arriba hacia abajo.
Realizar un gráfico claro equilibrado procurando que el flujo que el flujo central quede en la parte central de la página.

Evitar la utilización de la terminología especifica de un lenguaje de programación.
Indicar con comentarios margen del flujo grama las variables utilizadas.
Al comienzo del diagrama de flujo  deben dejarse uno o dos bloques de procesos libres.
En las operaciones lógicas preferir la lógica positiva que la negatividad.
Cada bloque puede tener diferentes entradas pero su salida es única a excepción de la estructura condicional o de decisión.

Realizar todas las notaciones o comentarios al final del flujo grama.
Utilizar correctamente los conectores de página o de programas.

 2.5 Codificación y Edición del Programa.
La codificación consiste en traducir el programa de flujo a instrucciones de un lenguaje de programación  específico, es decir, la elaboración del programa. La edición consiste en introducir el programa a la computadora por medio de editor de texto o el editor de texto o el editor de texto de un lenguaje de programación.

2.6 Prueba y depuración.
Una vez que se ha introducido el programa a la computadora debe probarse continuamente ejecutando el programa hasta concluir con los con los resultados deseados y que no tengan errores
Para ello se deben preparar datos de prueba en papel  así como su solución para compararlo con los resultados que obtengan la computadora.

2.7 Documentación del problema.
Son todos los comentarios, referencias desde que se dio el problema hasta que se encontró la solución.

a) documentación interna, es el encabezado, descripción, declaración del problema, son todos los comentarios que puedan llegar a servir dentro del código fuente.


b) documentación externa, son los manuales que se hacen para una mejor ejecución del programa, ahí se explicara cómo usar el programa.

PSeInt

Es una herramienta para asistir a un estudiante en sus primeros pasos en programación. Mediante un simple e intuitivo pseudolenguaje en español (complementado con un editor de diagramas de flujo), le permite centrar su atención en los conceptos fundamentales de la algoritmia computacional, minimizando las dificultades propias de un lenguaje y proporcionando un entorno de trabajo con numerosas ayudas y recursos didácticos.
PseInt (Pseudo Intérprete) es un Entorno de Desarrollo Integrado (IDE, por sus siglas en inglés) para PseudoCódigo, un lenguaje de programación imperativa simple y en castellano.
Es decir, PseInt es un editor e intérprete de programas escritos en PseudoCódigo. Su interfaz gráfica permite crear, almacenar, ejecutar y corregir fácilmente programas en PseudoCódigo.
La sencillez del lenguaje PseudoCódigo lo hacen ideal para la enseñanza de la programación. Permite escribir programas con instrucciones condicionales (Si-Entonces-Sino, Segun) y ciclos (Mientras, Hasta Que, Para), y también usar valores numéricos (números decimales), lógicos, caracteres y arreglos. También provee funciones de entrada/salida y algunas funciones matemáticas.


lunes, 15 de junio de 2015

UNIDAD #3: Estructuras Lógicas Fundamentales y Extendidas.



Tema 3.1: Estructuras de Control.

INTRODUCCIÓN:
Hemos estudiado en los contenidos anteriores los elementos fundamentales que nos permitirán avanzar en el mundo de la programación, con estos contenidos en mente llegamos a los fundamentos de la programación: Las estructuras de control fundamentales y extendidas de la programación. Indistintamente del lenguaje que se utilice las estructuras de control seguirán acompañándoles en su estructuras de control es vital en su formación como programador. Iniciamos conociendo las características que debe cumplir  un programa. Las estructuras de control principales permiten desarrollar actividades básicas de programación, estas estructuras son tradicionalmente conocidas como: Secuencial, Decisión, Repetitiva o Hacer Mientras. Para proporcionar otras estructuras complementarias estudiamos las extendidas: Hacer Hasta Que, Hacer Desde Hasta Incremento, Seleccionador Caso. Por ultimo abordamos la temática de las Estructuras de datos.

CARACTERÍSTICAS DE UN PROGRAMA.

Un programa se define como propio si se cumple con las siguientes características:
Posee un solo punto de entrada y otro de salida para el control del programa.
Existen caminos desde la entra hasta la salida que se pueden seguir y que pasan por todas partes del programa.

Todas las instrucciones son ejecutables y no existen lazos o bucles infinitos.
Por lo tanto un programa se puede escribir aplicando las estructuras fundamentales de programación son:
Estructuras de Control,Estructuras Extendidas,Estructura de Datos.

ESTRUCTURA DE CONTROL
Son construcciones mediante las cuales se escribe la lógica de los programas, son empleadas y definidas de manera ordenada y sistemática para dirigir el flujo de acciones que el procesador efectuara sobre los datos que se manejan en un programa.
Entre las Estructuras de Control se encuentran:

Estructuras de Secuenciación o Secuencial,Estructuras de Decisión o Condicional,
Estructuras de Hacer-Mientras.

ESTRUCTURA DE SECUENCIACION O SECUENCIAL.
Es aquella en que una acción sigue a otra en secuencia lógica y ordenada.
La acción 2 se ejecute después de acción 1 y ninguna acción puede ejecutarse entre ellas. Las acción 3 sigue a la acción 2
Y así sucesivamente.

ESTRUCTURA CONDICIONAL O DE DECISION

Esta estructura lógica, permite la toma de decisiones en un programa, es decir, que las soluciones a este tipo de problemas son una serie de acciones en las que la ejecución de algunas dependerá de que se cumplan una o varias condiciones.
Cuando el programador desea especificar 2 o más caminos alternativos en un programa se deben utilizar una estructura de decisión, que evalué una condición conteniendo una sola salida.

¿Qué es Condición? Es aquella que se establece por medio de una expresión lógica que puede ser simple o compuesta. Por lo tanto solo puede tomar dos valores: falso o verdadero.

CONDICIONES SIMPLES
Una condición simple se identifica porque está constituida únicamente por una condición A > B utilizando los operadores relacionales.
Ejemplos:
 A>B               D=A                     G>=T
 B<C               R< >W                 F<=H

CONDICIONES COMPUESTAS
Una condición compuesta, se identifica porque para solucionarla se necesita establecer más de una condición utilizando operadores lógicos relacionales, aritméticos y de asociación.

Ejemplos:
(P<=10) AND (P>=1)
[8=(2+6)-3^P] AND [4=(5*3)-14]

ESTRUCTURA HACER MIENTRAS
Es la más importante desde el punto de vista de la programación porque permite la ejecución de un conjunto de instrucciones cuantas veces sea necesario.
También se le llama estructura repetitiva a aquellas operaciones en cuya solución es necesario utilizar un mismo conjunto de acciones que pueden ejecutarse más de una vez. Para solucionar problemas repetitivos recurriremos al uso de ciclos, que nos evitaran escribir muchas veces un conjunto de acciones.

ELEMENTOS QUE CONSTITUYEN LA ESTRUCTURA REPETITIVA
Ciclo: es la ejecución de un mismo conjunto de acciones de dos o más veces.

Proceso: conjunto de acciones a lo que se les asigna un nombre, es decir, la operación a realizar.

Cuerpo de Ciclo: se considera una parte importante del ciclo en donde se ejecutara un proceso de dos o más veces.
Estructura Cíclica: conjunto de acciones que permiten que el cuerpo del ciclo se ejecute dos o más veces.

La Iteración: se define como cada una de las ejecuciones del cuerpo de ciclo.

LA ESTRUCTURA HACER MIENTRAS FUNCIONA DE LA SIGUIENTE MANERA:
Evalúa la condición.
Si la condición es cierta entonces se ejecutara las instrucciones mientras y se vuelve a ejecutar al paso 1; sino se ejecutan las instrucciones siguientes en el flujo normal del algoritmo.

CLASIFICACION DE LOS CICLOS:
Ciclos con un número determinado de iteracciones.
Ciclos con un número indeterminado de iteracciones.

CICLOS CON UN NUMERO DETERMINADO DE ITERACCIONES
Son aquellos en que el número de iteraciones es determinable antes de ejecutarse el ciclo, este número de iteraciones pueden obtenerse de la definición del problema, o bien mediante una entrada de datos cuando el problema indique que un conjunto de acciones se debe de ejecutar N ocurrencias.

CICLOS CON UN NÚMERO DE INDETERMINADO DE ITERACIONES
Son aquellos en donde el número de iteraciones permanece indeterminado durante la ejecución del ciclo y el proceso repetitivo termina hasta que el usuario lo indique.
En este tipo de ciclos el usuario decide dentro del ciclo cuando terminar con el proceso repetitivo sin importar cuantas iteraciones se hayan efectuado a diferencia de los ciclos anteriores, en donde el número de iteraciones está determinado desde el principio. También se le llama BANDERA.

Antes de iniciar la evaluación de la estructura hacer mientras es necesario inicializar las variables a utilizar con el propósito que estas pueden ser identificadas en el programa.

TERMINSO RELACIONADOS CON ESTA ESTRUCTURA:
*Contador: variable que se utiliza para llevar la cuenta de las vueltas que ejecuta la estructura del ciclo.

*Acumulador: mantiene los resultados parciales de las operaciones, guardando el valor que obtiene en cada vuelta del ciclo en na variable.

CONCLUSIONES DE LA APLICACIÓN DE LA ESTRUCTURAS HACER MIENTRAS.
No es posible salir de la estructura hacer mientras por otra ruta que no sea la que determina la evaluación de la condición.
Puede darse el caso en que la condición llegue a ser falsa en este caso si no pudiéremos salirnos de la estructura tendríamos que aplicar banderas para salirse.
Es necesario inicializar antes de entrar a la estructura, todas las variables que intervienen en la condición con el fin que esta pueda ser evaluada por la computadora.

 Tema 3.2 Estructuras Lógicas Extendidas.
Con el objeto de proporcionarles a los programadores otras que faciliten las actividades de programar se agregaran las siguientes:
Hacer – desde – hasta- incremento
Hacer- hasta- que
Hacer caso- seleccionar caso
Estas estructuras representan situaciones de control del flujo de ejecución de cualquier programa, que no lo hacen las estructuras de control.

ESTRUCTURA HACER-DESDE-HASTA-INCREMENTO
A esta estructura se le considera una de las más útiles en la programación por ello la proveen casi todos los lenguajes de programación.

ESTRUCTURA HACER-HASTA-QUE
Esta estructura repite la ejecución de un conjunto de instrucciones hasta que tome el valor de cierto. La condición se ubica al final de ciclo; el conjunto de acciones se repetirán hasta que cumpla la condición si no cumple sigue interactuando.

ESTRUCTURA HACER CASO O SELECCIONAR CASO.
Permite asociar un conjunto de condiciones a un conjunto de acciones que se excluyen mutuamente.
La estructura se conoce como case y permite una deviación del flujo de control hacia múltiples procesos en función del resultado de la evaluación de una expresión o indicador. Es decir; que permite seleccionar las instrucciones que deben ser ejecutadas dependiendo del valor de una expresión aritmética. Exp = opción.

Tema 3.3 Estructuras de Datos.
Una estructura de datos es una forma de organizar un conjunto de datos elementos con el objetivo de facilitar su manipulación. Un dato elemental es la mínima información que se tiene en un sistema. Una estructura de datos define la organización e interrelación de estos y un conjunto de operaciones que se pueden realizar sobre ellos. Las operaciones básicas son:

Alta, adicionar un nuevo valor a la estructura.
Baja, borrar un valor de la estructura.
Búsqueda, encontrar un determinado valor en la estructura para realizar una operación con este valor en forma secuencial o binario (siempre y cuando los datos estén ordenados).

Las estructuras de datos más comunes son:
Arreglos (Matrices),Colas,Pilas o Listas Enlazados.
Hablaremos un poco sobre cada una de ellas a continuación.

Arreglos:
Un arreglo es un conjunto finito ordenado de elementos homogéneos, la propiedad de ordenación significa que es posible identificar el primer, segundo, tercero… y el enésimo elemento del arreglo, un arreglo, un arreglo puede ser un conjunto de elementos de tipo cadena en tanto que potro puede ser tipo entero.
Los arreglos son una herramienta maravillosa, permite asociar un solo nombre de variable a una colección completa de datos puede mover el arreglo completo en menoría, copiarlo y además solo haciendo referencia a un solo nombre de variable.

Arreglo Bidimensionales
Un arreglo bidimensional se puede considerar como un vector de vectores. Es decir un conjunto de elementos todos del mismo tipo, en el orden de los componentes es significativo y en el que se necesita especificar dos subíndices para poder identificar cada elemento del arreglo: una forma importante de representar datos en un array bidimensional puede verse de forma lógica como una tabla de filas y columnas.

Arreglos Multidimensionales.
Existen grupos de datos que se representan mejor en forma de tabla o matriz cada dos o más subíndices a esos les llamamos arreglos multidimensionales se les llama así porque a diferencia de un arreglo bidimensional estos constan de dos o más dimensiones.

Colas:
En las colas el elemento que entro en primer lugar también es el primero en salir por ello se conocen como listas FIFO (First in – First out).
Así pues la diferencia con las pilas recibe en el modo de entrada y salida de datos. En las colas las inserciones se realizan al final de la lista no al principio por ello las colas se usan para almacenar datos que necesiten ser procesados según el orden de llegada.
En la información muchas aplicaciones para las colas (colas de aplicación) etc. Por ejemplo un sistema de tiempo compartido suele tener un proceso central y una serie de periféricos compartido: discos, impresoras, etc.
Los recursos se comparten con diferentes usuarios y se utiliza una cola para almacenar el programa por los diferentes usuarios que esperan su torno de ejecución. El procesador atiende por riguroso orden de llamado de usuario.

Pilas:
Una pila es un tipo de lista lineal en la que la inserción y borrada de nuevos elementos solo se pueden realizar por un extremo que se denomina tope o cima.
La pila es una estructura con numerosas analogías en la vida real, una pila de platos, una pila de documentos, una pila de monedas. Dado que la operación de insertar y eliminar se realizó por un solo extremo (superior) los elementos solo pueden eliminarse en un orden inverso al que se inserta en la pila.
El último elemento que se pone en la pila es el primero que se puede sacar; por ello a esta lista se les conoce como LIFO (Last In – first Out).

Listas Enlazadas:
Se pueden almacenar los elementos de una lista lineal en posiciones que no sean continuas o adyacentes una lista enlazadas es un conjunto de elementos en la que cada elemento contiene la posición o dirección del siguiente elemento en la lista debe tener al menos dos campos. Un campo que tiene el valor del elemento y un campo que contiene la dirección del siguiente elemento es decir su posición enlace o encadenamiento a diferencia de las pilas las listas enlazadas mantienen un orden dentro de ellas. Las listas requieren un campo que será la clave por la que serán ordenadas.

CARACTERISTICAS
La lista debe estar ordenada.

A diferencia de las pilas y colas se pueden extraer e insertar elementos en cualquier parte de la lista.