Computing">
Antologia Pres-02
Antologia Pres-02
Antologia Pres-02
LOPEZ”
MATERIAL DIDÁCTICO
ANTOLOGIA:
PROGRAMACIÓN ESTRUCTURADA
SIGLEMA:
PRES-02
DOCENTE:
GRUPO:
EKIN18-301
PERIODO:
1
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
Unidad de aprendizaje: Generación de Pseudocódigos.
Resultado de aprendizaje: 1.1 Desarrolla la lógica de programas computacionales,
mediante la creación de algoritmos.
Lenguaje de programación
Son lenguajes utilizados para escribir programas de computadoras que pueden ser
entendidos por ellas. Se clasifican en tres grandes categorías:
• Maquina
• Bajo nivel (Ensamblador)
• Alto nivel
Lenguaje maquina: Son aquellas 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 este, se expresan en términos de la unidad de memoria más pequeña,
el bit (digito binario 0 o bien 1) en esencia una secuencia de bits que especifican la operación
y las celdas de memoria implicadas en una operación.
2
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
Lenguaje de Bajo nivel (ensamblador): Son generalmente dependientes de la máquina:
dependen de un conjunto de instrucciones específicas de la computadora. En este lenguaje
las instrucciones se escriben en códigos alfabéticos conocidos como nemotécnicos.
Lenguaje de Alto nivel: son aquellos en las que las instrucciones o sentencias a la
computadora son escritas con palabras similares a los lenguajes humanos, lo que facilita la
escritura y la fácil comprensión por el programador.
DEFINICIÓN DE ALGORITMOS
Un algoritmo es una lista de instrucciones para realizar algún proceso, un algoritmo describe
el método mediante el cual se realiza una tarea, consiste en una secuencia de instrucciones,
las cuales, realizadas adecuadamente, dan lugar al resultado deseado.
El término algoritmo es en parte similar a los términos: receta, proceso, método, técnica,
procedimiento, rutina, etc. A demás de ser un conjunto finito de reglas que dan lugar a una
secuencia de operaciones para resolver un tipo específico de problema.
1. Finito. Un algoritmo tiene que acabar siempre tras un número finito de pasos. Un
procedimiento que tiene todas las características de un algoritmo salvo que posiblemente
falle a su finitud puede ser llamado método de cálculo).
2. Definilidad. Cada paso debe definirse de modo preciso; las acciones a realizar han de
estar especificadas para cada caso rigurosamente y sin ambigüedad.
3. Conjunto de entradas. Debe existir un conjunto específico de objetos, cada uno de los
cuales constituye los datos iniciales de un caso particular de un problema que reserve el
algoritmo. A este conjunto se le llama conjunto de entrada de algoritmo.
3
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
4. Conjunto de salida. Debe existir un conjunto especificado de objetos, cada uno de los
cuales constituye la salida o respuesta que debe tener el algoritmo para los diferentes casos
particulares del problema.
5. Efectividad. Un algoritmo debe ser efectivo. Esto significa que todas las operaciones a
realizar en el algoritmo deben ser lo bastante básicas para poder ser efectuadas de modo
exacto en un lapso de tiempo finito por el procesador que ejecute el algoritmo.
Diseño de algoritmos
En la etapa de diseño, se determina como hace el programa la tarea solicitada, las dos
herramientas más comunes utilizadas para diseñar algoritmos son: pseudocódigos y
diagramas de flujo.
4
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
DEFINICIÓN DE LENGUAJES ALGORITMICOS
Los algoritmos pueden describirse utilizando diversos lenguajes, cada uno de estos
lenguajes permiten describir los pasos con mayor o menor detalle.
La clasificación de los lenguajes para algoritmos puede enunciarse de la siguiente manera:
❖ Lenguaje natural
❖ Lenguaje de diagrama de flujo
❖ Lenguaje natural de programación
❖ Lenguaje de programación de algoritmos
Lenguaje natural: es aquel que se escribe en español, para nuestro caso, los pasos a seguir
utilizando un vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan
términos especializados de una determinada ciencia, profesión o grupo.
Lenguaje de diagrama de flujo: es aquel que se vale de diversos símbolos para representar
las ideas o acciones a desarrollar. Es útil para organizar las acciones o pasos de un algoritmo,
pero requiere de etapas posteriores para implementarse en un sistema de cómputo.
Lenguaje natural de programación: Son aquellos que están orientados a la solución de
problemas que se definen de una manera precisa. Generalmente son aplicados para la
elaboración de fórmulas o métodos científicos.
Tienen las siguientes características:
✓ Evita la ambigüedad
✓ Son precisos y bien definidos
✓ Utiliza términos familiares al sentido común
✓ Elimina instrucciones innecesarias
DIAGRAMAS DE FLUJO
Un diagrama de flujo presenta generalmente un único punto de inicio y un único punto de
cierre, aunque puede tener más, siempre que cumpla con la lógica requerida.
Las siguientes son acciones previas a la realización del diagrama de flujo:
Identificar las ideas principales al ser incluidas en el diagrama de flujo. Deben estar
presentes el autor o responsable del proceso, los autores o responsables del proceso
anterior y posterior y de otros procesos interrelacionados, así como las terceras partes
interesadas.
• Definir qué se espera obtener del diagrama de flujo.
• Identificar quién lo empleará y cómo.
• Establecer el nivel de detalle requerido.
• Determinar los límites del proceso a describir.
5
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
Los pasos a seguir para construir el diagrama de flujo son:
6
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
7
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
FASES PARA EL DESARROLLO DE PROGRAMAS.
1. SOLUCIÓN DE PROBLEMAS
Para poder definir con precisión el problema se requiere que las especificaciones de entrada
y salida sean descritas con detalles ya que esto es requisito para lograr la solución eficaz.
Una vez que el problema ha sido definido y comprendido, deben analizarse los siguientes
aspectos:
8
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
3. DISEÑOS DE SOLUCIÓN
Podemos utilizar la computadora para procesamiento de información como elemento de
interacción como elemento de interacción o de comunicación, muchas clases de programas
educativos normalmente se agrupan bajo el nombre de enseñanza asistida por
computadora “EAC”.
La mayoría de ellos siguen el camino clásico de la instrucción programada. Actualmente
como se mencionó anteriormente hay un movimiento bastante fuerte en que el desarrollo
de programas que promueven el aprendizaje significativo, se procura que el diseño sea
centrado en el estudiante, que ayude al estudiante a resolver problemas, que pueda ser
utilizado en el aprendizaje a distancia.
4. CODIFICACIÓN
Una buena codificación es indispensable para hacer software público. Como no existe
ninguna documentación de diseño del software, toda la documentación de un proyecto se
encuentra inicialmente en el código acompañado de un simple archivo de descripción del
software. Sin embargo si el código es fácilmente comprensible el proyecto va recibiendo
cada vez más contribuciones donde finalmente se incluye un proyecto de documentación.
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.
5. PRUEBA Y DEPURACIÓN
Una vez que se ha obtenido el programa ejecutable, este es sometido a pruebas a fin de
determinar si resuelve el problema planteado en forma satisfactoria. Las pruebas que se le
aplican son de diversa índole y generalmente dependen del tipo de problema que se está
resolviendo. Comúnmente se inicia la prueba de un programa introduciendo datos válidos,
inválidos e incongruentes y observando cómo reacciona en cada ocasión.
9
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
El proceso de depuración consiste en localizar los errores y corregirlos en caso de que estos
existan. Si no existen errores, puede entenderse la depuración como una etapa de
refinamiento en la que se ajustan los detalles para optimizar el desempeño del programa.
6. DOCUMENTACIÓN
Uno de los problemas más comunes en todas las organizaciones es creer que la
documentación del nuevo sistema nos resolverá todos nuestros problemas dentro de el que
podamos tener, en cuanto al manejo del mismo, esto es cierto muy parcialmente pues las
documentaciones de sistemas que se conocen son desde el punto de vista operativo
automatizado y técnico.
Al sacar un manual de documentación, donde se habla de las acciones del sistema dentro
de la computadora, descuidamos todas las actividades que se realizan antes y después de
cada acción específica y el sistema puede comenzar a fallar, empiezan a no tener
concordancia con la información que maneja, empieza a faltar documentación para nutrir
los procesos de este mismo.
Entonces qué es lo que pasa, que cuando hablamos de la documentación del sistema,
tendremos que pensar que debe ser en un plan estructurado o consulta rápida para resolver
cualquier duda en cuanto a las funciones creadas por el mismo sistema, por lo anterior el
manual de documentación del sistema deberá contener las funciones del puesto, los
métodos de operación, los procedimiento relacionados y las políticas aplicables.
Debido a que el programa resultante en esta etapa se encuentra totalmente depurado (sin
errores), se procede a la utilización para resolver problemas del tipo que dio origen a su
diseño.
EN viste de que esta utilización no podrá ser supervisada en todas las ocasiones por el
programador, debe crearse un manual o guía de operación que indique los pasos a seguir
para utilizar este programa.
10
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
identificadas y satisfechas cuando resulte necesario. Cuando los sistemas son de uso
prolongado, se puede establecer un mecanismo para recibir retroalimentación de los
usuarios como otra forma de determinar las necesidades de mantenimiento y modificación.
Cuando se realicen las modificaciones a los programas como resultado de ejercicios de
mantenimiento o actualización, puede ser necesario promover rondas adicionales de
verificación y prueba del sistema para asegurarse que sigan cumpliendo con las normas
exigidas.
11
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
B. DISEÑO DE ELEMENTOS DE PROGRAMAS DESARROLLADOS POR COMPUTADORA.
1. TIPOS DE DATOS
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal
como ´b´, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto
de valores que puede tomar una variable.
Operadores y operandos
• Operadores: son elementos que relacionan de forma diferente los valores de una o
más variables y/o constantes.
12
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
Expresiones
Las expresiones son combinaciones de constantes, variables, símbolos de operaciones,
paréntesis y nombres de funciones especiales.
Cada expresión toma un valor que se determina tomando los valores de las variables y
constantes implicados y la ejecución de las operaciones indicadas.
Una expresión consta de operadores y operandos. Según sea el tipo de datos que
manipulan, se clasifican las expresiones en:
• Aritméticas
• Relacionales
• Lógicas
Ejemplos:
Expresión Resultado
7/2 3.5
12 mod 7 5
4+ 2 * 5 14
Prioridad de los operadores aritméticos:
• Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con
paréntesis anidados se evalúan de dentro a fuera, el paréntesis más interno se
evalúa primero.
13
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a
derecha.
Ejemplos:
4+2*5 =14
23*2/5=9.2
3+5*(10-(2+4))=23
3.5+5.09-14.0/40= 5.09
2.1*(1.5+3.0*4.1)= 28.98
Operadores Relacionales:
• Se utilizan para establecer una relación entre dos valores.
• Compara estos valores entre si y esta comparación produce un resultado de certeza o
falsedad (verdadero o falso)
• Los operadores relacionales comparan valores del mismo tipo (numéricos o cadenas)
• Tienen el mismo nivel de prioridad en su evaluación
• Los operadores relacionales tienen menor prioridad que los aritméticos
Operadores relacionales:
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<> Diferente
= Igual
Ejemplos:
14
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
Operadores lógicos:
• Estos operadores se utilizan para establecer relaciones entre valores lógicos.
• Estos valores pueden ser resultado de una expresión relacional.
Operadores lógicos
And Y
Or O
Not Negación
Ejemplos:
(a < b) and (b < c)
(10<20) and (20<30)
T and T = T
15
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
2) ((a >= b) or (a < d)) and ((a >=d) and (c > d))
16
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
Identificadores
Los identificadores representan los datos de un programa (constantes, variables, tipos de
datos). Un identificador es una secuencia de caracteres que sirve para identificar una
posición en la memoria de la computadora, que nos permite accesar a su contenido.
Ejemplo: Nombre
Num_hrs
Calif2
Reglas para formar un identificador
• Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener
espacios en blanco.
• Letras, dígitos y caracteres como la subraya ( _ ) están permitidos después del primer
carácter.
• La longitud de identificadores puede ser de hasta 8 caracteres.
Constantes y Variables
Constante: es un dato numérico o alfanumérico que no cambia durante la ejecución del
programa.
Variable: es un espacio en la memoria de la computadora que permite almacenar
temporalmente un dato durante la ejecución de un proceso, su contenido puede cambiar
durante la ejecución del programa. Para poder reconocer una variable en la memoria de la
computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un
algoritmo.
17
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
Por su contenido
Variables numéricas: son aquellas en las cuales se almacenan valores numéricos, positivos
o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal.
Ejemplo: IVA=0.16 pi= 3.1416 costo=2500
Variables lógicas: son aquellas que solo pueden tener dos valores (cierto o falso) estos
representan el resultado de una comparación entre otros datos.
Variables alfanuméricas: está formada por caracteres alfanuméricos (letras, números y
caracteres especiales). Ejemplo: letra=´a´ apellido= ´lopez´ dirección= ´Av. Libertad #190´
Por su uso
18
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
19
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
20
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
Cuando se trabaja con algoritmos por lo general no se acostumbra a declarar las variables
ni tampoco constantes debido a razones de simplicidad, es decir, no es camisa de fuerza
declarar las variables. Sin embargo, en este curso lo haremos para todos los algoritmos que
realicemos, con esto logramos hacerlos más entendibles y organizados y de paso permite
acostumbrarnos a declararlas ya que la mayoría de los lenguajes de programación (entre
ellos el C++) requieren que necesariamente se declaren las variables que se van a usar en
los programas.
Veamos algunos ejemplos donde se aplique todo lo que hemos visto hasta el momento
sobre algoritmos:
Ejemplo 1: Escriba un algoritmo que pregunte por dos números y muestre como resultado
la suma de estos. Use Pseudocódigo y diagrama de flujos.
21
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
22
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o
alternativas posibles en función del cumplimiento o no de una determinada condición. Se
representa de la siguiente forma:
Pseudocódigo: Diagrama de flujo:
23
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
Estructura Repetitiva: Son operaciones que se deben ejecutar un número repetido de veces.
El conjunto de instrucciones que se ejecuta repetidamente cierto número de veces, se llama
Ciclo, Bucle o Lazo.
Iteración es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones
contenidas en el bucle.
En el flujograma anterior, observa que la flecha que se regresa hacia arriba nos está
indicando que hay que volver a evaluar la expresión. En ese caso como el bucle es infinito,
no se tiene una condición para terminar y se estará haciendo siempre. En el siguiente
ejemplo, ya se agregó una condición, la cual nos permitirá finalizar la ejecución del bucle en
el caso en que la condición se cumpla.
24
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
Bucles Repetitivos:
En los ciclos anidados, al entrar a una estructura de repetición, dentro de ella se encuentra
otra. La más interna se termina de realizar y se continúa con la externa hasta que la
condición se cumple.
En los bucles cruzados, los cuales no son convenientes de utilizar, se tiene que iniciamos un
bucle y no se ha terminado cuando empezamos otro, luego utilizamos estructuras goto
(saltos) para pasar al bucle externo y se quedan entrelazados.
Esto puede ocasionar que el programa pierda el control de cuál proceso se está ejecutando
y podamos obtener resultados erróneos. Veamos gráficamente el diseño de estas tres
formas cíclicas:
25
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
26
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
Vectores y matrices.
En programación, una matriz o vector (llamado en inglés array) es una zona de
almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los
elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un
conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones).
En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión
principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que
puede ser recursivo), lo que nos permite hablar de la existencia de matrices
multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres
dimensiones.
Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos
se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar
ordenados y se va a utilizar acceso secuencial sería más adecuado utilizar una lista, ya que
esta estructura puede cambiar de tamaño fácilmente durante la ejecución de un programa.
Pilas y colas.
Pilas
Una pila representa una estructura lineal de datos en que se puede agregar o quitar
elementos únicamente por uno de los dos extremos. En consecuencia, los elementos de
una pila se eliminan en el orden inverso al que se insertaron. Debido a esta característica,
se le conoce como estructura LIFO (last input, first output). Existen muchos casos prácticos
en los que se utiliza la idea de pila:
Ejemplo; pila de platos, en el supermercado latas. Las pilas con estructuras lineales como
los arreglos, ya que sus componentes ocupan lugares sucesivos en la ED y c/u tienen un
único sucesor/predecesor, con excepción del primero/último.
Definición de Pila:
Una colección de datos a los cuales se les puede acceder mediante un extremo, que se
conoce generalmente como tope.
27
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
Colas
Una cola es un tipo especial de lista abierta en la que sólo se pueden insertar nodos en uno
de los extremos de la lista y sólo se pueden eliminar nodos en el otro. Además, como sucede
con las pilas, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre
eliminan el nodo leído.
Este tipo de lista es conocido como lista FIFO (First In First Out), el primero en entrar es el
primero en salir.
El símil cotidiano es una cola para comprar, por ejemplo, las entradas del cine. Los nuevos
compradores sólo pueden colocarse al final de la cola, y sólo el primero de la cola puede
comprar la entrada.
tipoNodo es el tipo para declarar nodos, evidentemente. pNodo es el tipo para declarar
punteros a un nodo. Cola es el tipo para declarar colas.
Es evidente, a la vista del gráfico, que una cola es una lista abierta. Así que sigue siendo muy
importante que nuestro programa nunca pierda el valor del puntero al primer elemento,
igual que pasa con las listas abiertas. Además, debido al funcionamiento de las colas,
también deberemos mantener un puntero para el último elemento de la cola, que será el
punto donde insertemos nuevos nodos.
Teniendo en cuenta que las lecturas y escrituras en una cola se hacen siempre en extremos
distintos, lo más fácil será insertar nodos por el final, a continuación del nodo que no tiene
nodo siguiente, y leerlos desde el principio, hay que recordar que leer un nodo implica
eliminarlo de la cola.
Listas
El problema surge a la hora de hacer un programa al estilo de una agenda. No sabemos a
priori cuántos nombres vamos a meter en la agenda, así que si usamos un array para este
programa podemos quedarnos cortos o pasarnos. Si por ejemplo creamos una agenda con
un array de mil elementos (que pueda contener mil números) y usamos sólo 100 estamos
desperdiciando una cantidad de memoria importante. Si por el contrario decidimos crear
una agenda con sólo 100 elementos para ahorrar memoria y necesitamos 200 nos vamos a
quedar cortos. La mejor solución para este tipo de programas son las listas enlazadas.
En una lista enlazada la memoria se va tomando según se necesita. Cuando queremos
añadir un nuevo elemento reservamos memoria para él y lo añadimos a la lista. Cuando
queremos eliminar el elemento simplemente lo sacamos de la lista y liberamos la memoria
usada.
28
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
Las listas enlazadas pueden ser simples, dobles o circulares. En este capítulo y el siguiente
vamos a ver sólo las listas simples.
Para crear una lista necesitamos recordar nuestros conocimientos sobre estructuras y
asignación dinámica de memoria. Vamos a desarrollar este tema creando una sencilla
agenda que contiene el nombre y el número de teléfono.
Una lista enlazada simple necesita una estructura con varios campos, los campos que
contienen los datos necesarios (nombre y teléfono) y otro campo que contiene un puntero
a la propia estructura. Este puntero se usa para saber dónde está el siguiente elemento de
la lista, para saber la posición en memoria del siguiente elemento.
Podríamos representar la estructura algo así:
Ahora supongamos que añadimos un elemento a la lista, por ejemplo mis datos:
nombre="Gorka Urrutia", telefono="99 429 31 23" (el teléfono es totalmente falso :-). Lo
primero que debemos hacer es reservar (con la función malloc que ya hemos visto) un
espacio en memoria para almacenar el elemento. Supongamos que se almacena en la
posición 3000 (por decir un número cualquiera). El puntero siguiente debe apuntar a NULL,
ya que no hay más elementos en la lista. El elemento quedaría así:
Ahora añadimos un nuevo elemento: nombre="Alberto López" telefono="99 999 99 99".
Hay que reservar (con malloc) memoria para este nuevo elemento. Vamos a imaginar que
este elemento se guarda en la posición de la memoria número 3420. La lista quedaría así:
Lo primero que debemos hacer es reservar la memoria para el elemento, luego se le
rellenan los datos, se pone el puntero siguiente apuntando a NULL (porque será el último),
y decir al elemento anterior que apunte al elemento que hemos añadido.
Si quisiéramos mostrar en pantalla la lista comenzaríamos por el primer elemento, lo
imprimiríamos y con el puntero siguiente saltaríamos al segundo elemento, y así hasta que
el puntero siguiente apunte a NULL.
Árbol
Las listas ligadas, las pilas y las colas son estructuras de datos lineales. Un árbol es una
estructura de datos no lineal de dos dimensiones, con sus propiedades especiales. Tres
nodos contienen dos o más ligas.
Explicaremos lo árboles binarios; árboles cuyos nodos contienen dos ligas (ninguna, una, o
ambas de las cuáles pueden ser NULL). El nodo raíz es el primer nodo del árbol. Cada liga
del nodo raíz hace referencia a un hijo. El hijo izquierdo es el primer nodo del subárbol
izquierdo, y el hijo derecho es el primer nodo del subárbol derecho .
29
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
• Estructura secuencial
La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en
secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la
siguiente y así sucesivamente hasta el fin del proceso.
La estructura secuencial es aquella en la que una acción sigue a otra en secuencia. Las
operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y así
sucesivamente hasta el fin del proceso. La asignación de esto consiste, en el paso de valores
o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la
variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:
1. Simples: Consiste en pasar un valor constante a una variable (a ← 15)
2. Contador: Consiste en usarla como un verificador del número de veces que se realiza un
proceso (a ← a + 1)
3. Acumulador: Consiste en usarla como un sumador en un proceso (a ← a + b)
4. De trabajo: Donde puede recibir el resultado de una operación matemática que involucre
muchas variables (a ← c + b*2/4).
30
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
• Estructura repetitiva
Hasta ahora hemos empleado estructuras SECUENCIALES y CONDICIONALES. Existe otro
tipo de estructuras tan importantes como las anteriores que son las estructuras
REPETITIVAS. Una estructura repetitiva permite ejecutar una instrucción o un conjunto de
instrucciones varias veces. Una ejecución repetitiva de sentencias se caracteriza por:
- La o las sentencias que se repiten.
- El test o prueba de condición antes de cada repetición, que motivará que se repitan o no
las sentencias.
31
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.
FUENTES BIBLIOGRAFICAS
LIBROS:
REFERENCIAS ALECTRONICAS:
• http://www.uaeh.edu.mx/docencia/P_Presentaciones/icbi/asignatura/Cap3PilasColas.
pdf
• http://www.c.conclase.net/edd/?cap=003
• http://www.santiagoapostol.net/srca/cursoc/cursoc22.html
• http://www.codejobs.biz/es/blog/2013/07/02/estructura-de-datos-en-c-
arboles#sthash.XOohkSpT.dpbs
• http://www.ecured.cu/index.php/Estructura_secuencial
• http://www.desarrolloweb.com/articulos/2199.php
• http://www.javaya.com.ar/detalleconcepto.php?codigo=83&inicio
• http://books.google.com.mx/books?id=AZ1ZXBlu9Y8C&pg=PA90&lpg=PA90&dq=diagr
ama+estructuras+repetitiva+en+c&source=bl&ots=YakkrIEZ1G&sig=Cr595o-
9mPeaVGr-8v-
Lxs_WgKU&hl=es&sa=X&ei=3snwU5WlCKi58gGpmIC4Aw&ved=0CGIQ6AEwEg#v=one
page&q=diagrama%20estructuras%20repetitiva%20en%20c&f=false
32