Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sintaxis:
Mientras (condición) Hacer
Bloque de instrucciones
FinMientras
Para que el programa entre a procesar lo previsto dentro del bucle se
tiene que cumplir una condición. Es decir si nunca se cumple esa
condición el programa no entrará nunca en el interior del bucle. Por
tanto el programa entrará en el bucle, cero, una, dos, ... o bien n veces,
pero no debe entrar infinitas veces.
Es importante no olvidar esta característica de la instrucción. Una vez
que el flujo de ejecución pase al interior del bucle, la condición deberá
pasar de verdadera a falsa en algún momento para que el bucle tenga
fin. El progamador tiene diversas formas de controlar todo esto para
que no se produzca el bloqueo, por ejemplo mediante cambios en
valores de las variables, contadores, salidas directas o deseadas por el
usuario, etc.
Esta instrucción, al igual que las anteriores, permite anidamientos
(huelga ya decir la importancia de las tabulaciones de cara a la fácil
comprensión del programa).
3.2 Bucle "REPETIR...HASTA"
Esta instrucción es muy parecida a la precedente. También se trata de
un bucle que tiene que tener una salida válida para evitar bloqueos y
donde igualmente se usan los controles comentados en el apartado
anterior. En cuanto al número de repeticiones, al igual que en la
anterior es indeterminado, es decir no está prefijado, pero debe ser
finito, aunque hay una diferencia fundamental, que la condición se
evalúa al final de la sintaxis, por lo que como mínimo al menos una
vez se ejecutará lo que esté programado en el interior del bucle.
Después si la condición sigue manteniéndose la iteración continúa,
hasta que la condición mute a verdadera. Si sólo se cumple una vez
entrará una vez y seguirá después de la instrucción "Hasta que" por la
ruta normal del programa.
Este tipo de bucle es idóneo para depurar datos de entrada por teclado
ya que dichos datos al menos se deben teclear una vez. Por ejemplo,
imagina que tu programa debe pedirle por teclado al usuario un
número comprendido entre 1 y 10, si el usuario introduce un número
que no esté en ese intervalo el programa debe pedirle de nuevo un
número correcto, y seguir así hasta que el número cumpla la condición.
Sintaxis:
Repetir
Instrucción.
Instrucción.
...
...
Hasta Que (condición)
PHP es un lenguaje de script, multiplataforma y con licencia libre.
Cualquier editor de textos te servirá para escribir código en PHP. Sus
scripts pueden ser incrustados en el código html de las páginas web
para convertirlas en páginas web dinámicas. Se suele utilizar por
tanto, del lado del servidor para darle ese dinamismo a los sitios web.
2. Estructuras 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.
.
Según su dimensión, las tablas se pueden clasificar en:
• Unidimensionales (vectores).
• Bidimensionales (matrices, tablas o arrays).
• Multidimensionales (poliedros).
2.1. Vectores
A) Concepto y representación gráfica
Los vectores son estructuras de datos estáticas unidimensionales que
agrupan elementos del mismo tipo y se referencian bajo un nombre
o identificador común. Para representar gráficamente un vector
debemos tener en cuenta cómo están almacenados sus elementos,
esto es, en posiciones contiguas de memoria:
2.2. Matrices
A) Concepto y representación gráfica
Las matrices, arrays o tablas son estructuras de datos estáticas
unidimensionales que agrupan, al igual que los vectores, elementos
del mismo tipo y se referencian bajo un nombre o identificador
común. Para representar gráficamente una matriz debemos tener en
cuenta cómo están almacenados sus elementos, esto es, también en
posiciones contiguas de memoria:
2.3. Poliedros
A) Concepto
Los poliedros son estructuras de datos estáticas multidimensionales
(dimensión >= 3) que agrupan, al igual que las matrices, elementos
del mismo tipo y se referencian bajo un nombre o identificador
común.
La nomenclatura usada para acceder o hacer referencia a un
elemento es la siguiente: Nombre_poliedro(índice1, índice2,
índice3, ..., índiceN).
3. Estructuras dinámicas
Llegados a este punto, hemos estudiado las estructuras de datos que
obligan al programador a definir, antes de la ejecución del programa,
un tamaño y estructura que permanecerán fijas e invariables, siendo
su objetivo informar al compilador del espacio que debe reservar en
memoria para ellas (estructuras estáticas).
Además de estas, existen otros tipos de estructuras a través de las
cuales podemos dar solución a determinados problemas en los
cuales desconocemos la cantidad de memoria que
necesitaremos durante la ejecución del programa.
Por ello, es interesante disponer de métodos que permitan acceder a
las direcciones de memoria que se necesiten durante la ejecución de
dicho programa con la posibilidad de liberarlas, ofreciéndonos también
la posibilidad de modificar su tamaño y estructura en tiempo de
ejecución. Dichas estructuras se denotan con el nombre de dinámicas.
3.1. Punteros
A) Concepto y representación gráfica
Sin entrar en detalles, un puntero o apuntador es una variable estática
de tipo entero usada para contener la dirección de memoria de
otra variable (variable que apunta a otra variable).
Se utilizan principalmente para realizar operaciones con estructuras
dinámicas de datos, es decir, estructuras creadas en tiempo de
ejecución, siendo su objetivo el de permitir el manejo o
procesamiento (creación, acceso, eliminación, etc.) de estas
estructuras de datos.
Gráficamente:
Puntero → Dato
.
B) Operaciones con punteros
3.2. Pilas
A) Concepto
Una pila es una estructura de datos dinámica formada por un grupo
ordenado de elementos homogéneos (todos del mismo tipo) en la
que los elementos sólo pueden ser añadidos o eliminados por
un extremo llamado cabecera o cima (top) de la pila.
De esta forma, los elementos se extraen en orden inverso al seguido
en el proceso de inserción. Por ello, una pila es considerada una
estructura de datos LIFO (Last In First Out), esto es, que el último
elemento que entra es el primero que sale.
3.3. Listas
A) Concepto y tipos de listas
Una lista es una estructura dinámica de datos que contiene
una colección de elementos homogéneos (del mismo tipo) de
manera que se establece entre ellos un orden. Es decir, cada
elemento, menos el primero, tiene un predecesor, y cada elemento,
menos el último, tiene un sucesor.
Tanto las estructuras vistas en la sección anterior (pilas) como las que
veremos en la siguiente (colas) son tipos de listas.
Podemos distinguir, atendiendo a la organización de los nodos,
entre:
3.4. Colas
A) Concepto y representación gráfica
Una cola es un grupo ordenado de elementos del mismo tipo, en la cual
dichos elementos se añaden por un extremo (Final) y se quitan
por el otro extremo (Frente). Esto significa que los elementos se
sacan en el mismo orden en el que fueron insertados o introducidos en
la cola, siendo por ello considerada como una estructura de
datos FIFO (First In First Out), es decir, que el primer elemento en
entrar es el primer elemento en salir.
3.5. Estructuras dinámicas no lineales
Hasta el momento, todo lo que hemos visto han sido estructuras de
datos lineales, pero en ocasiones son necesarias otro tipo
de estructuras de datos jerarquizadas como pueden ser
los árboles o los grafos.
El objetivo de esta sección es introducirte un poco estas estructuras
con el fin de conocerlas superficialmente, requieren de experiencia y
algunos conocimientos extra que impiden profundizar en su estudio.
A) Árboles
Como se ha mencionado, un árbol es una estructura de
datos jerarquizada y no lineal constituida por un conjunto de
elementos homogéneos, es decir del mismo tipo, que se caracterizan
porque establecen una jerarquía entre los elementos que la forman.
Esta relación jerárquica entre sus nodos se establece de manera que
todos los nodos que componen el árbol tienen un único nodo padre,
que es el nodo que le precede en la jerarquía. La única excepción es
el nodo raíz, que se puede definir como aquel nodo que no tiene padre.
Todos los árboles tienen una única raíz.
Cada nodo puede tener 0, 1, o más de un nodo hijo. Un nodo hijo es
aquel que le sucede en la jerarquía. Si un nodo no tiene ningún hijo
se le llama nodo terminal u hoja. El número de hijos que tiene un
nodo es lo que denominaremos grado.
Un árbol se puede caracterizar por:
.
B) Ejemplo de función
Para el caso de una función, vamos a crear un programa que genere
un número aleatorio entre 1 y 20 y calcule su sumatorio. Por ejemplo,
si sale el 5, el sumatorio desde 1 hasta 5 sería 1 + 2 + 3 + 4 + 5 = 15.
4.2. Ámbito de las variables
El ámbito de un identificador, ya sea una variable, una función, un
procedimiento, etc, es la parte del programa donde este
identificador puede ser utilizado, porque se conoce su existencia.
De esta forma, en función de su ámbito, las variables se pueden
clasificar en globales y locales.