0% encontró este documento útil (0 votos)
7 vistas24 páginas

Estructuras de Datos y Algoritmos Básicos

El documento describe los conceptos fundamentales de las estructuras de datos, incluyendo que consisten en técnicas para desarrollar algoritmos eficientes mediante la representación adecuada de los datos y las operaciones permitidas sobre ellos. También explica que se denominan "estructuras de datos" para disponer los datos en estructuras como arreglos, a fin de agilizar tareas como la lectura, escritura y procesamiento de grandes cantidades de datos de manera más eficiente.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas24 páginas

Estructuras de Datos y Algoritmos Básicos

El documento describe los conceptos fundamentales de las estructuras de datos, incluyendo que consisten en técnicas para desarrollar algoritmos eficientes mediante la representación adecuada de los datos y las operaciones permitidas sobre ellos. También explica que se denominan "estructuras de datos" para disponer los datos en estructuras como arreglos, a fin de agilizar tareas como la lectura, escritura y procesamiento de grandes cantidades de datos de manera más eficiente.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Estructura de Datos

MANUAL AUTOFORMATIVO INTERACTIVO

Tema N.º 1:
Tema N.º 1: Representación de datos

UNIDAD I
Representación de datos
Introducción al tema
El objetivo de esta primera unidad es brindar los conceptos fundamentales sobre los
que se elaboran los demás contenidos de la asignatura. Por ello, en este primer tema
se describe en qué consisten las estructuras de datos y qué relación guardan con los
Introducción al tema
algoritmos. A continuación, se detallan las formas de representar los datos en el
computador, diferenciando entre datos simples y datos estructurados. Asimismo, es
El objetivo de esta primera
primordial, para launidad es brindar losde
implementación conceptos fundamentales
tales estructuras sobre los que se
la comprensión delelaboran
tema delos demás

Tema N.º 1
contenidos
las denominadas estructuras de control, las cuales se abordan como último acá[Link] datos
de la asignatura. Por ello, en este primer tema se describe en qué consisten las estructuras
y qué relación
Se debe guardan
aclararcon los algoritmos.
que, aunque tenganA continuación,
un nombrese detallan las formas
relacionado de representar
al título del curso,los datos en el
más
computador,
están diferenciando
vinculadas alentre datos
diseño desimples y datos estructurados. Asimismo, es primordial, para la imple-
algoritmos.
mentación de tales estructuras la comprensión del tema de las denominadas estructuras de control, las cuales
1. ¿En
se abordan como qué consiste
último acápite. la
Seestructura de datos?
debe aclarar que, aunque tengan un nombre relacionado al título del curso,
más están vinculadas al diseño de algoritmos.
Posiblemente a usted le resulten familiares algunas de estas frases: “se cayó el
sistema”, “el programa está lento”, “se colgó el software, reinicia la máquina”, entre
otras. Descartando la existencia de problemas técnicos con el computador y la red
1. ¿En qué consiste la estructura de datos?
de datos, el siguiente factor que puede afectar el rendimiento de un software es la
calidad de los algoritmos que emplea para procesar la información. Precisamente, la
Posiblemente a usted
estructura de le resulten
datos familiares
se refiere al algunas
conjunto de de
estas frases: para
técnicas “se cayó el sistema”
desarrollar , “el programa
software, o está
lento”, “se colgó el software, reinicia la máquina” , entre otras. Descartando
exactamente algoritmos, que utilicen de una manera eficiente los recursos de la la existencia de problemas técnicos
con el computadora.
computador y laTal red eficiencia
de datos, elessiguiente
medida, factor que puede afectar
principalmente, el rendimiento
en términos de un software
de tiempo de es
la calidad de los algoritmos
procesamiento y usoquedeemplea para procesar la información. Precisamente, la estructura de datos se
memoria.
refiere al conjunto de técnicas para desarrollar software, o exactamente algoritmos, que utilicen de una manera
Weiss
eficiente (2000)deconsidera
los recursos la [Link] Tal
muchos algoritmos
eficiencia es medida,requieren
principalmente,una enrepresentación
términos de tiempo de
apropiada de los
procesamiento y uso de [Link] para lograr ser eficientes. Esta representación junto con las
operaciones permitidas se llama estructura de datos.
Weiss (2000) considera que muchos algoritmos requieren una representación apropiada de los datos para lograr
ser eficientes.
RECUERDA:Esta representación junto con las operaciones permitidas se llama estructura de datos.

RECUERDA:
Un algoritmo es “un conjunto de instrucciones claramente especificadas que el
ordenador debe seguir para resolver un problema” (Weiss, 2000, p. 103).
Un algoritmo es “un conjunto de instrucciones claramente especificadas que el ordenador debe seguir para
resolver
Launfigura
problema” (Weiss,
1 ilustra esta2000, p. 103).
descripción.
La figura 1 ilustra esta descripción.
Figura 1 Representación de un algoritmo
Algoritmo

Paso 1 Paso 2 Paso n

Fuente: Elaboración propiaFigura 1 Representación de un algoritmo


Fuente: Elaboración propia
2. ¿Por qué se denomina estructura de datos?

Usted recordará que por definición todo computador transforma datos en


información útil para el usuario; por ejemplo, si se ingresa la operación (5 + 2) se
espera que el computador lo interprete, lo procese y devuelva el resultado 7. En
lenguaje C++ podría trabajarse un programa como el siguiente: 11
2. ¿Por qué se denomina estructura de datos?
UNIDAD I

Usted recordará que por definición todo computador transforma datos en información útil para el usuario; por
ejemplo, si se ingresa la operación (5 + 2) se espera que el computador lo interprete, lo procese y devuelva el
resultado 7. En lenguaje C++ podría trabajarse un programa como el siguiente:

void main()
{
int a, b;
cin>> a;
cin>> b;
Tema N.º 1

cout<< “La suma es: ”<< a+b << endl;


}

Programa 1.1

Una tarea muy sencilla ¿verdad?

¿Pero qué sucede cuando se debe procesar mayor cantidad de datos, por ejemplo, calcular la cantidad de notas
aprobatorias de una lista de 50 estudiantes?

1ª opción: Se elabora un programa que solicite cada nota (una por una), mientras un contador va incrementándo-
se en la unidad cada vez que identifica una nota mayor que 10.

¿Cuánto tiempo tomaría la digitación? ¿Y si se ingresa mal un dato?

2ª opción: Se puede solicitar cada nota y guardarla en una variable independiente; al final se compran por sepa-
rado para determinar si son aprobatorias.

¿Cuántas líneas de código tendría este programa?

Entonces, frente a estos inconvenientes se propone disponer los datos en estructuras (de ahí “estructura de
datos”) como, por ejemplo, arreglos —o arrays por su denominación en inglés—, a fin de agilizar las tareas de
lectura y escritura de los mismos, mientras se minimiza el esfuerzo de procesamiento, la cantidad de líneas de
código, el tiempo de programación, etc.

3. Representación de datos

3.1. Tipos de datos


Para que un programa funcione debe estar en la capacidad de recibir, procesar y almacenar diferentes tipos
de datos. Aunque cada lenguaje de programación maneja sus propios tipos, en términos generales su pueden
considerar los siguientes:

• Numérico: 1, -5, 3.67, etc.

• Texto o cadena: “ABC”, “Palabra”, “wjesus@[Link]”, etc.

• Fecha / hora: 07/09/15, 12/12/16 15:23, etc.

• Lógico: Verdadero, falso.

Sahni (2005) denomina a este universo de posibles valores como “objetos de datos” (o Data Objects), y lo define
como un conjunto de instancias o valores.

12
Estructura de Datos
MANUAL AUTOFORMATIVO INTERACTIVO

Para que unFigura 2. Representación


programa de la memoria
pueda guardar un determinado de uso
valor hace un de
computador
las llamadas “variables”, las cuales físi-
camente se traducen en espacios reservados de memoria: imagine a la memoria de la computadora como una
gran tabla en la que en cada celda se puede almacenar un dato; al crearse una variable y asignársele
5 un nombre,

UNIDAD I
Figura
el software 2. Representación
reserva unaPalabra de
de estas celdas. la memoria
Observe de un
la siguiente computador
figura:
Dato de tipo entero
Dato de tipo cadena 5
Palabra
Dato de tipo entero
Fuente: Elaboración propia
Dato de tipo cadena

Tema N.º 1
Para recuperar al valor correspondiente
Fuente: Elaboración bastará
propia con referenciar (llamar) al
nombre de laFigura
variable creada.
2. Representación de la memoria de un computador
Fuente: Elaboración propia
ParaEl recuperar
programa al 1.2valor
muestra un ejemplo debastará
correspondiente cómo crear una variable,
con referenciar asignarle
(llamar) al un
valor
nombre y
de luego
la recuperarlo.
variable creada.
Para recuperar al valor correspondiente bastará con referenciar (llamar) al nombre de la variable creada.

El programavoid main()un ejemplo de cómo crear una variable, asignarle un valor y luego recuperarlo.
El1.2 muestra
programa 1.2 muestra un ejemplo de cómo crear una variable, asignarle un
{
valor y luego recuperarlo.
void main() int a; // Declarar la variable “a” de tipo entero
a=5; // La variable recibe el valor de 5
void main()
{ cout<<“El valor ingresado es: ”<< a << endl; // Recuperar el
{
int a; // a;
Declarar//laDeclarar
variablela“a” de tipo“a” entero // valor de a
int variable de tipo entero
}
a=5; a=5; // La//variable recibe
La variable el valor
recibe de 5 de 5
el valor
Programa 1.2
cout<<“El valorvalor
cout<<“El ingresado es: ”<<
ingresado es: a”<<<< aendl;
<< endl;// Recuperar
// Recuperar el
el
// valor de a // valor de a
} } 3.2. Datos simples y datos estructurados
Programa 1.2
Programa 1.2 Según manifiesta Cruz (2011, p. 8), “la principal característica de los datos
[Link]
Datos es que ocupan
simples y datos solo una casilla de la memoria, por lo tanto, hacen
estructurados
referencia a un único valor a la vez”, mientras que “los datos estructurados se
3.2. Datos simples
Según y datospor
caracterizan
manifiesta estructurados
Cruzel hecho
(2011, dep. que conprincipal
8), “la un solo característica
nombre (o también de los datosllamado
identificador
simples es que de variables)
ocupan solo se hace
una referencia
casilla de la amemoria,
un grupo de porcasillas de memoria”;
lo tanto, hacen
Según manifiestaa suCruz
veza
referencia cada
(2011, uno
p.
un único8), de
“la los elementos
principal
valor vez”, omientras
componentes
a la característica de los
quedatos desimples
“los un dato
datos es estructurado
que ocupan solo
estructurados puede
seuna casi-
caracterizan por el hecho de que con un solo nombre (o también llamadoesta
ser
lla de la memoria, un
por dato
lo simple
tanto, hacen u otro estructurado.
referencia a un único Comparando
valor a la vez” , las figuras
mientras que 2 y
“los 3, notará
datos estructurados
se caracterizan diferencia.
identificador de de
por el hecho variables)
que con se un hace referencia
solo nombre a un grupo
(o también llamado deidentificador
casillas de de memoria”;
variables) se hace
referencia aa un
su grupo
vez cada uno dedelos
de casillas elementos
memoria”; a suo vez
componentes
cada uno dede losun dato estructurado
elementos o componentespuede de un dato
Figura
ser un dato 1.3. Representación
simple de un dato
u otro uestructurado. estructurado
Comparando las en la memoria de un
estructurado puede ser un dato simple otro estructurado. Comparando lasfiguras
figuras 22 y 3,notará
y 3, notará esta
esta diferencia.
diferencia. computador
Nombre del arreglo
Figura 1.3. Representación de un dato estructurado en la memoria de un
computador
Mi_arreglo
Nombre del arreglo
0 1 2 3
Mi_arreglo
Índices
0 1 2 3

Cabe1.3.
Figura precisar que ladefigura
Representación un dato3estructurado
es sólo una en larepresentación, ya que las casillas
memoria de un computador
de un dato estructurado, si bien operan en conjunto, Índices no necesariamente son
adyacentes.
Cabe precisar Es3 precisamente
que la figura esta característica
es sólo una representación, ya que laslacasillas
que permite realizar
de un dato una primera
estructurado, si bien ope-
clasificación
Cabe
ran en conjunto, de las
no necesariamenteestructuras
precisar que la sonfigura de datos:
3 es sólo
adyacentes. una representación,
Es precisamente ya quelalas
esta característica quecasillas
permite realizar
de un
una primera dato estructurado,
clasificación si bien
de las estructuras operan en conjunto, no necesariamente son
de datos:
• Basadas
adyacentes. en arreglosesta
Es precisamente (o Arrays), también
característica denominadas
la que ”contiguas”.
permite realizar una primera
• Basadas •
clasificaciónBasadas en punteros
de las(oestructuras
en arreglos (o Linked),
de datos:
Arrays), también también denominadas
denominadas ”contiguas”. ”enlazadas”.

• Basadas en arreglos (o Arrays), también denominadas ”contiguas”.


• Basadas en punteros (o Linked), también denominadas ”enlazadas”. 13
• Basadas en punteros (o Linked), también denominadas ”enlazadas”.

La segunda forma de clasificarlas es según la “figura” que describen al graficarlas, pudiendo ser lineales y no
UNIDAD I

lineales; a su vez estas se subclasifican de la siguiente manera:

• Estructuras lineales

o Arreglos

o Pilas

o Colas
Tema N.º 1

o Listas

• Estructuras no lineales

o Árboles

o Grafos

Todos estos tipos de estructuras serán descritos al detalle a lo largo del presente manual.

3.3. Estructuras de datos basadas en arreglos (estructura contigua)


Cada instancia de una estructura de datos tipo lista lineal es una colección ordenada de elementos. Cada una de
estas instancias es de la forma (e0 , e1 , e2 , …, en −1 ) donde:

• n es un número natural finito, que representa el ancho o tamaño de la lista.

• ei representa cada elemento de la lista e i es su índice.


Aunque resulte obvio mencionar que precede a , a y así sucesivamente, es necesario recalcar que esta relación
de precedencia solo se da en listas lineales.

Algunos ejemplos de listas lineales son los siguientes:

• La lista de estudiantes de esta clase (ordenadas por el nombre)

• La lista de puntajes de un examen ordenados por mayor a menor

• La lista de arribos de vuelos aéreos, ordenados del más reciente al más antiguo

3.3.1. Operaciones con una lista lineal

a) Crear la lista

b) Destruir la lista

c) Determinar si la lista está vacía

d) Determinar el tamaño de la lista

e) Encontrar un elemento a partir de su índice

f) Encontrar el índice de un elemento dado

g) Borrar un elemento dado a partir de su índice

14
Estructura de Datos
MANUAL AUTOFORMATIVO INTERACTIVO

h) Insertar un nuevo elemento en un índice determinado

i) Listar los elementos in orden (ascendente o descendentemente)

UNIDAD I
3.3.2. Abstracción de una lista lineal:

Es posible representar una lista lineal al margen de algún lenguaje de programación (de ahí el término “abstrac-
to”) de la siguiente forma:

Lista Lineal
{
Instancias

Tema N.º 1
Colección finita ordenada de cero o más elementos.
Operaciones
Empty() : Retorna verdadero si la lista está vacía; de lo contrario, falso.
Size() : Retorna el número de elemento de la lista (tamaño)
Get(índice) : Retorna el elemento de la posición (índice) especificada.
IndexOf(x) : Retorna el índice del elemento x (primera ocurrencia). Si el elemento no existe,
devuelve -1.
Erase(índice) : Borra el elemento cuyo índice es especificado.
Insert(índice, x) : Inserta el elemento x en la posición indicada como índice.
Output() : Muestra (imprime) la lista de elementos de izquierda a derecha.
}

Tomada de Data Structures, Algorithms, and Applications in C++, por Sahni (2005), p. 141.

Por ejemplo, al declarar la siguiente lista lineal L = {Apple, HP, Toshiba, Vaio}, los resultados de las operaciones
indicadas serían (considerar L original para cada caso):

[Link]() : Falso
[Link]() : 4
[Link](2) : “HP”
[Link](“Toshiba”) : 2 (el primer elemento tiene índice 0)
[Link](1) : {Apple, Toshiba, Vaio}
[Link](3, “Assus”) : {Apple, HP, Toshiba, Assus, Vaio}
[Link]() : {Apple, HP, Toshiba, Vaio}

Ahora intente usted, con la siguiente lista: M = {a, b, c, d}

[Link]() :
[Link]() :
[Link](0) :
[Link](2) :
[Link](-3) :
[Link](“c”) :
[Link](“q”) :
[Link](1) :
[Link](0, “e”) :
[Link](2, “f”) :
[Link]() :

3.3.3. Representación de arreglos

Cada elemento de un arreglo puede ser asignado o localizado empleando una fórmula matemática; la más sen-
cilla, y usada de forma natural, es la siguiente:

15
Ubicación (i) = i formula (a)
UNIDAD I

Esta fórmula significa que el i-ésimo elemento de la lista se encuentra en la posición i. Observe el siguiente caso:

Se decide guardar la lista [5, 2, 4, 8, 1] en un arreglo de tamaño 10. Haciendo uso de la fórmula los elementos,
Figura
se ubicarían como 4. Ubicación de elementos en un arreglo con la fórmula (a)
sigue:

5 2 4 8 1
Figura 4. Ubicación de elementos en un arreglo con la fórmula (a)
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
Figura
5 4. Ubicación
2 4 de elementos
8 1 en un arreglo con la fórmula (a)
Esto debido a que,
Figura si se reemplazan
4. Ubicación de elementos los valores
en un de la
arreglo con i, fórmula
se tiene:
(a)
Tema N.º 1

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
5 2 4 8 1
• Ubicación(0) = 0
Esto debido
[0] a que, [1]
Estosi debido
se reemplazan
[2] a que, los
[3] si valores
[4] de i, se
se reemplazan tiene:
[5] [6]
los valores de[7] [8]
i, se tiene: [9]
• Ubicación(1) = 1
• • =
Ubicación(0) Ubicación(2)
0 a que, si= 2
Esto •debido
Ubicación(0) =se0reemplazan los valores de i, se tiene:
• Ubicación(3) = 3
• Ubicación(1) = 1
• • =
Ubicación(1) Ubicación(4)
1 =4
• Ubicación(0)
• Ubicación(2) =0 =2
• Ubicación(1)
• Ubicación(3) =1 =3
• ¿Le= pareció
Ubicación(2) 2 demasiada obvia la primera fórmula? Cuando se trata de
• Ubicación(2)
• Ubicación(4) =2 =4
estructurar datos, no es la única que existe.
• Ubicación(3) = 3
• Ubicación(3) = 3
• Ubicación(4)
¿Le pareció =demasiada
4 obvia la primera fórmula? Cuando se trata de
Si se emplea la fórmula:
• estructurar
Ubicación(4) = 4 datos, no es la única que existe.
¿Le pareció demasiada obvia la primera fórmula? Cuando se trata de
Ubicación(i) es=laTamaño del existe.
arreglo – i – 1 formula(b)
¿Le parecióestructurar
demasiada datos,
Si se emplea
obvia nofórmula:
la la
primera única que
fórmula? Cuando se trata de estructurar datos, no es la única que existe.

Si se emplea seAl
Si la asignarlalos
emplea
fórmula:
valores se ubicarían de derecha a izquierda, así:
fórmula:
Ubicación(i) = Tamaño del arreglo – i – 1 formula(b)
Figura 5. Ubicación de elementos en un arreglo con la fórmula (b)
Al Ubicación(i) = Tamaño
asignar los valores del arreglo
se ubicarían de –derecha
i – 1 a izquierda,
formula(b)
así:

Al asignar los valores se 1 8 4 2 5


Figura
Al asignar [Link]ían
los valoresdesederecha
Ubicación de a izquierda,
elementos
ubicarían enasí:
de derecha unaarreglo con
izquierda, la fórmula (b)
así:
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
Figura 5. Ubicación de elementos en un arreglo 1 con la fórmula
8 4 (b)
2 5
Debido a que:
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
1 8 4 2 5
• Ubicación(0) = 10 – 0 – 1 = 9
[0] [1]
Debido a[2] que: 5. [3]
Figura [4]elementos
Ubicación de [5]en un arreglo
[6] con [7]la fórmula [8]
(b) [9]
• Ubicación(1) = 10 – 1 – 1 = 8
• Ubicación(2) = 10 – 2 – 1 = 7
Debido
• aUbicación(0)
que: = 10 – 0 – 1 = 9
Debido a que: • Ubicación(3) = 10 – 3 – 1 = 6
• Ubicación(1) = 10 – 1 – 1 = 8
• Ubicación(4) = 10 – 4 – 1 = 5
• • Ubicación(0)
10 – 0 – 1==10
• =Ubicación(2)
Ubicación(0) 9 =–100 –– 12 =
–91=7
• Ubicación(1)
• Ubicación(3) = 10=–10 1 –– 13 =
–81=6
La fórmula que se emplee para asignar/localizar un elemento específico en el
• • Ubicación(2)

Ubicación(1) Ubicación(4)
= 10 –también= 10 =– 2
10 –– 14 =
– 7
1 – 1 = 8 afectará la1 forma =5
arreglo cómo se insertan y eliminan nuevos
• Ubicación(3) = 10 – 3 – 1 = 6
elementos.
• • Ubicación(4)
La =
Ubicación(2) fórmula 1==10
10 – 2 –que 7se–emplee
4 – 1 =para
5 asignar/localizar un elemento específico en el
arreglo también afectará la forma cómo se insertan y eliminan nuevos
Revisemos el caso para la fórmula (a): al insertarse un nuevo valor (7) en la
• La fórmula
= 10 que
– 3 –se
elementos.
Ubicación(3) 1 =emplee
6 para asignar/localizar un elemento específico en el
posición 2 del arreglo, los elementos [4, 8, 1] deberían correr una posición
arreglo también afectará la forma cómo se insertan y eliminan nuevos
hacia la derecha.
• Ubicación(4) = 10 – 4 –el
elementos.
Revisemos 1= 5 para la fórmula (a): al insertarse un nuevo valor (7) en la
caso
posición 2 del arreglo, los elementos [4, 8, 1] deberían correr una posición
La fórmulaRevisemos
que se emplee
hacia para asignar/localizar
laelderecha.
caso para la fórmula un(a):
elemento específicoun
al insertarse ennuevo
el arreglo
valortambién afectará
(7) en la la forma
cómo se insertan y eliminan
posición nuevos elementos.
2 del arreglo, los elementos [4, 8, 1] deberían correr una posición
hacia la derecha.
Revisemos el caso para la fórmula (a): al insertarse un nuevo valor (7) en la posición 2 del arreglo, los elementos
[4, 8, 1] deberían correr una posición hacia la derecha.

16
Estructura de Datos
MANUAL AUTOFORMATIVO INTERACTIVO

Figura 6. Proceso de inserción de un nuevo elemento en un arreglo que


emplea la fórmula (a)

Paso a)

UNIDAD I
5 2 4 8 1
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

Paso b)

5 2 4 8 1

Tema N.º 1
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

Paso c)

5 2 7 4 8 1
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

Por el
Figura contrario,
6. Proceso al eliminar
de inserción de unun elemento,
nuevo elementotodos los que
en un arreglo queseemplea
ubiquen a la derecha
la fórmula (a)
de él deberán correr una posición hacia la izquierda.

Por el contrario,El programa


al eliminar 1.3 muestra
un elemento, todoslalos
implementación
que se ubiquen a de la operación
la derecha de inserción
de él deberán deposición
correr una
un
hacia la izquierda. nuevo elemento a partir de la fórmula (a).

#include
El programa <iostream>
1.3 muestra la implementación de la operación de inserción de un nuevo elemento a partir de la
using
fórmula (a). namespace std;

const
#include int N = 10; // Tamaño del arreglo
<iostream>
int miArreglo[N];
using namespace std; // Creación del arreglo con N elementos

const int N = 10; // Tamaño del arreglo


// Procedimiento para inicializar la matriz
int miArreglo[N];
void init() // Creación del arreglo con N elementos
{
miArreglo[0] = 5; //Insertar en la posición 0, el elemento 5
// Procedimiento para inicializar
miArreglo[1] la matriz
= 2; //Insertar en la posición 1, el elemento 2
void init() miArreglo[2] = 4; //Insertar en la posición 2, el elemento 4
{ miArreglo[3] = 8; //Insertar en la posición 3, el elemento 8
miArreglo[0] = 5; //Insertar
miArreglo[4] en la en
= 1; //Insertar posición 0, el 4,
la posición elemento 5
el elemento 1
};
miArreglo[1] = 2; //Insertar en la posición 1, el elemento 2
miArreglo[2] = 4; //Insertar en la posición 2, el elemento 4
// Función que= determina
miArreglo[3] si laenmatriz
8; //Insertar está vacía
la posición 3, el elemento 8
bool empty()
miArreglo[4] = 1; //Insertar en la posición 4, el elemento 1
}; {
bool vacío = true;
int determina
// Función que i = 0; si la matriz está vacía
while (vacío==true && i<=N)
bool empty()
{
{
if (miArreglo[i] == 0)
bool vacío = true;vacío = false;
int i = 0; i++;
while }(vacío==true && i<=N)
{ return vacío;
}; if (miArreglo[i] == 0)
vacío = false;
i++;
// Procedimiento para insertar un elemento en el arreglo
}

17
return vacío;
};
UNIDAD I

// Procedimiento para insertar un elemento en el arreglo


void Insert(int indice, int elemento)
{
// Si la lista está vacía insertar el elemento en la posición [0]
if (empty() == true)
miArreglo[0] = elemento;
else
// Correr una posición a la derecha a partir de la posición del nuevo ele-
Tema N.º 1

mento
{
int i = 0;
while ((N-1)-i >= indice)
{
miArreglo[(N-1)-i] = miArreglo[(N-1)-(i+1)];
i++;
}
}
// Insertar el nuevo valor
miArreglo[indice] = elemento;
};

// Procedimiento para imprimir los elementos del arreglo


void Output()
{
cout<<endl;
cout<<”Elementos del arreglo”<<endl;
for (int i=0; i<=N; i++)
cout<<”Elemento[“<<i<<”]: “<<miArreglo[i]<<endl;
};

// PROGRAMA PRINCIPAL
void main()
{
init(); // Insertar valores iniciales
Output(); // Mostrar en pantalla
Insert(2,7); // Insertar, en la posición 2, el elemento 7
Output(); // Mostrar en pantalla
Insert(5,9); // Insertar, en la posición 5, el elemento9
Output(); // Mostrar en pantalla
system(“Pause”);
};

Programa 1.3

3.4. Estructuras de datos basadas en punteros (estructura enlazada)


En este tipo de estructuras, los elementos pueden almacenarse en cualquier ubicación de la memoria. Por con-
siguiente, para crear una lista cada elemento tiene un enlace o puntero (o dirección) al siguiente elemento de la
misma.

Como se vio, en el caso anterior la dirección es determinada por una fórmula matemática; en este tipo de repre-
sentación las direcciones están distribuidas a lo largo de la lista.

18
Estructura de Datos
MANUAL AUTOFORMATIVO INTERACTIVO

Figura 7. Representación de una lista basada en punteros


La figura 7 ilustrala la lista L = {e0, e1, e2, en}
e Figura
d1 7. Representación
e d2 de una lista
e basada
d3 en punteros
e NULL
0 1 2 n

UNIDAD I
#d1 #d2 #d3
e0
(Primer d1
nodo) e1 d2 e2 d3 en nodo)
(Ultimo NULL
#d1 #d2 #d3
(Primer nodo) (Ultimo nodo)

ei di+1
Campo
Campo de #dx
datos ei di+1 enlace
Campo de Campo
#dx
datos enlace

Tema N.º 1
Dirección
del nodo
Dirección
del nodo
Como puede apreciar, a diferencia de una lista de tipo arreglo, en esta
representación cada elemento (ei) ocupa su propio nodo. A su vez, cada nodo
Como puede apreciar, Figura a diferencia
7. Representación de lista
de una una listaen punteros
basada de tipo arreglo, en esta
tiene un “campo enlace” donde se almacena la dirección (en memoria) del
representación
siguiente elemento cada(d1, d2, …).(ei) ocupa su propio nodo. A su vez, cada nodo
elemento
tiene un “campo enlace”
Como puede apreciar, a diferencia de una lista donde se arreglo,
de tipo almacena la representación
en esta dirección (encada memoria)
elementodel(ei) ocupa
siguiente
Asimismo,
su propio nodo. elemento
A su vez,para
cadaubicar (d1,
nodo tiene d2, …).
un determinado
un “campo enlace”elementodondedesela lista es lanecesario
almacena ubicarse
dirección (en memoria) del
en el primer
siguiente elemento (d1, d2,nodo
…). y “saltar” hasta el nodo del elemento deseado a través de los
Asimismo,
campos enlace. para ubicar un determinado elemento de la lista es necesario ubicarse
Asimismo, paraen elubicar
primer nodo y “saltar”
un determinado hastadeellanodo
elemento lista esdelnecesario
elemento deseado
ubicarse en ela primer
travésnodo
de los
y “saltar”
campos
La lista enlace.
mostrada en la figura 7 es
hasta el nodo del elemento deseado a través de los campos enlace. llamada “Lista enlazada simple” debido a que
cada nodo tiene solo un enlace; también es denominada “estructura tipo cadena”
La
La lista mostrada lista
debido en amostrada
que los
la figura 7 es en
nodosla figura
llamada están 7 dispuestos
“Lista es llamada
enlazada “Lista
de
simple” enlazada
izquierda
debido simple”
a derecha
a que cada nodo debido
y a que
el valor
tiene solo de enlace;
un
cada
enlace nodo
del tiene
último solo
nodo un enlace;
es NULL. también es denominada “estructura
también es denominada “estructura tipo cadena” debido a que los nodos están dispuestos de izquierda a dere- tipo cadena”
cha y el valordebido
de enlacea que los nodos
del último nodo es están
[Link] de izquierda a derecha y el valor de
enlace del Eliminar
3.4.1. último nodo es NULL. de una lista enlazada
elementos
3.4.1. Eliminar elementos de una lista enlazada
3.4.1.
Observe Eliminar
el siguiente elementos de unapara
procedimiento listaeliminar,
enlazada por ejemplo, el elemento 1
Observe el siguiente de una lista enlazada:
procedimiento para eliminar, por ejemplo, el elemento 1 de una lista enlazada:
Observe el siguiente procedimiento para eliminar, por ejemplo, el elemento 1
• de• una
Ubicar segundo Ubicar listasegundo
nodo enlazada:
(elemento nodo
1). (elemento 1).
• Capturar el valor de su campo enlace.
• Capturar el
•• valor de susegundo
Ubicar
Vincular campo
el nodo enlace.
nodo
1 con(elemento
el nodo 3.1).
• Capturar el valor de su campo enlace.
• Vincular el•Analice
nodo 1 con
Vincular elelnodo
nodo3.1 conlaelfigura
cuidadosamente nodo 8.3.

Analice cuidadosamente laProceso


figura 8. para eliminar
[Link]
Figura la figura 8.
un elemento de una lista enlazada

Paso Figura
a) 8. Proceso para eliminar un elemento de una lista enlazada

Paso
e a) d1 e1 d2 e2 d3 en NULL
0
#d1 #d2 #d3
e0Nodo 1d1 e1Nodo 2d2 e2Nodo 3d3 enNodoNULL
4
#d1 #d2 #d3
Nodo 1 Nodo 2 Nodo 3 Nodo 4
Paso b)

Paso
e b) d2 e1 d2 e2 d3 en NULL
0
#d1 #d2 #d3
e0Nodo 1d2 e1 d2 e2Nodo 2d3 enNodoNULL
3
#d1 #d2 #d3
Nodo 1 Figura 8. Proceso para eliminar un elementoNodo 2 lista enlazada
de una Nodo 3

19
Note que, al eliminar un nodo, automáticamente el índice de todos los nodos siguientes decrece en 1 (círculos
entrecortados en la figura). A diferencia de un arreglo, este índice es solo referencial.
UNIDAD I

3.4.2. Insertar elementos en una lista enlazada

Para insertar en elemento en la posición i, es necesario ubicarse en el nodo anterior (i-1) e insertar el nodo justo
después de él.

El programa 1.4 permite implementar una lista enlazada e insertarle nuevos elementos.

#include <iostream>
#include <stdlib.h>
using namespace std;
Tema N.º 1

struct nodo{
int nro; // en este caso es un número entero
struct nodo *sgte;
};

typedef struct nodo *Tlista;

void insertarInicio(Tlista &lista, int valor)


{
Tlista q;
q = new(struct nodo);
q->nro = valor;
q->sgte = lista;
lista = q;
}

void insertarFinal(Tlista &lista, int valor)


{
Tlista t, q = new(struct nodo);

q->nro = valor;
q->sgte = NULL;

if(lista==NULL)
{
lista = q;
}
else
{
t = lista;
while(t->sgte!=NULL)
{
t = t->sgte;
}
t->sgte = q;
}
}

void reportarLista(Tlista lista)


{
int i = 0;

while(lista != NULL)
{
cout <<’ ‘<< i+1 <<”) “ << lista->nro << endl;
lista = lista->sgte;
i++;
}
}

20
Estructura de Datos
MANUAL AUTOFORMATIVO INTERACTIVO

void menu1()
{
cout<<”\n\t\tLISTA ENLAZADA SIMPLE\n\n”;

UNIDAD I
cout<<” 1. INSERTAR AL INICIO “<<endl;
cout<<” 2. INSERTAR AL FINAL “<<endl;
cout<<” 3. REPORTAR LISTA “<<endl;
cout<<” 4. SALIR “<<endl;

cout<<”\n INGRESE OPCIÓN: “;


}
/* Función Principal
---------------------------------------------------------------------*/

Tema N.º 1
int main()
{
Tlista lista = NULL;
int op; // opción del menu
int _dato; // elemenento a ingresar
int pos; // posición a insertar

system(“color 0b”);

do
{
menu1(); cin>> op;

switch(op)
{
case 1:

cout<< “\n NÚMERO A INSERTAR: “; cin>> _dato;


insertarInicio(lista, _dato);
break;

case 2:

cout<< “\n NÚMERO A INSERTAR: “; cin>> _dato;


insertarFinal(lista, _dato );
break;

case 3:

cout << “\n\n MOSTRANDO LISTA\n\n”;


reportarLista(lista);
break;

system(“pause”); system(“cls”);

}while(op!=4);

system(“pause”);
return 0;
}

Programa 1.4

Nota: Adaptado de “El Blog de Martín Cruz”. Disponible en [Link]

21
}
Programa 1.4

Nota: Adaptado de “El Blog de Martín Cruz”. Disponible en [Link]

Tema n.º 2:
UNIDAD I

Estructuras de control
Tema n.º 2: Estructuras de control

Introducción al tema

IntroducciónEnaleste
tema
y el siguiente tema se abordarán las denominadas estructuras de control.
Joyanes, 2005, p. 41) considera que “son métodos de especificar el orden en que las
En este y el siguiente temade
instrucciones seun
abordarán
algoritmolassedenominadas
ejecutarán. Elestructuras de control.
orden de ejecución de(Joyanes, 2005, p. 41) consi-
las sentencias
dera que “son(lenguaje)
métodos deo instrucciones
especificar eldeterminan
orden en queel flujo de control. Estas
las instrucciones de unestructuras
algoritmodesecontrol
ejecutarán. El orden
de ejecución son,
de laspor consiguiente,
sentencias fundamentales
(lenguaje) en losdeterminan
o instrucciones lenguajes de programación
el flujo de control.y Estas
en losestructuras de
Tema n.º 2

diseños de algoritmos especialmente los pseudocódigos.”


control son, por consiguiente, fundamentales en los lenguajes de programación y en los diseños de algoritmos
especialmente lostres
Las pseudocódigos. ” control básicas son las siguientes:
estructuras de
• Secuencia
Las tres estructuras de control básicas son las siguientes:
• Selección (o condicionada)
• • Repetición
Secuencia
• Selección (o condicionada)
Aunque el nombre de este tema aparenta estar relacionado con el título de la
asignatura, su contenido está ligado en mayor medida a los algoritmos. Las ventajas
• Repetición
que ofrecen estas estructuras serán aprovechadas para implementar las operaciones
a realizar
Aunque el nombre sobretema
de este las listas, comoestar
aparenta son insertar, eliminar,
relacionado con elbuscar, etc.
título de la asignatura, su contenido está
ligado en mayor medida a los algoritmos. Las ventajas que ofrecen estas estructuras serán aprovechadas para
El tema n.º 2 se concentra en la descripción e implementación de las estructuras de
implementar las operaciones
control a realizar sobre las listas, como son insertar, eliminar, buscar, etc.
condicionales.
El tema n.º 2 se concentra en la descripción e implementación de las estructuras de control condicionales.
1. ¿Por qué usar estructuras de control?

1. ¿Por qué usar estructuras


Al programar de control?
una computadora no se está haciendo más que traducir un algoritmo a
un determinado lenguaje de programación. Internamente, el compilador lee una a
una computadora
Al programar una las líneas de código y lashaciendo
no se está ejecuta en
másel que
mismo ordenunque
traducir fueron a
algoritmo escritas.
un determinado lenguaje de
programación. Internamente, el compilador lee una a una las líneas de código y las ejecuta en el mismo orden
Claramente, mientras se trate de un problema sencillo a resolver, el algoritmo
que fueron escritas.
correspondiente será secuencial, cada tarea se llevará a cabo una sola vez y en el
mismo orden
Claramente, mientras conde
se trate el un
queproblema
fueron especificadas.
sencillo a resolver, el algoritmo correspondiente será secuencial,
cada tarea se llevará a cabo una sola vez y en el mismo orden con el que fueron especificadas.
Figura 9. Representación de un algoritmo secuencial

Tarea 1

Tarea 2

Tarea 3

Fuente: Autoría propia


Figura 9. Representación de un algoritmo secuencial
Fuente: Autoría propia

Por ejemplo:
Por ejemplo: el algoritmo
el algoritmo para sumar para sumarsería
dos valores doselvalores sería el siguiente:
siguiente:

Leer dos números a y b

Sumar los números

Imprimir la respuesta

22
Lo cierto es que los problemas que resuelven los computadores son más complejos
Estructura de Datos
MANUAL AUTOFORMATIVO INTERACTIVO

Lo cierto es que los problemas que resuelven los computadores son más complejos (con ese fin se crearon),
por lo tanto, es necesario el empleo de algoritmos capaces de tomar decisiones, es decir, elegir qué tareas eje-
cutar, qué tareas repetir, etc. Para esto se cuenta con las denominadas estructuras de control, que permiten a

UNIDAD I
los lenguajes de programación ejecutar ciertas instrucciones en el orden y momento especificados, en tiempo
de ejecución.

Tales estructuras de control, pueden clasificarse de la siguiente manera:

• Estructuras condicionales
o De control simple
o De control doble

Tema n.º 2
o De control múltiple

• Estructuras repetitivas
o Condicionada
o Predefinida

2. La estructura de control condicionada simple


Este tipo de estructuras trabajan con las denominadas expresiones lógicas. Una expresión lógica es la compa-
ración de dos datos (de cualquier tipo) empleando operadores matemáticos como igual, diferente, mayor que,
menor que, mayor igual que y menor igual que.

Tal comparación puede ser interpretada como una pregunta literal. Por ejemplo:

Expresión literal Equivalente matemático


¿5 es mayor que 3? 5>3
¿”Nombre” es igual a “NOMBRE”? “Nombre” = “NOMBRE”
¿Verdadero es diferente que Falso? Verdadero <> Falso
¿12/01/2016 es anterior a 15/01/2017? ‘12/01/16’ < ‘15/01/17’

Por lo tanto, tiene una respuesta, pudiendo ser esta: verdad o falso.

En palabras de Severance (2009, p. 33) “una expresión booleana es aquella que puede ser verdadera (True) o
falsa (False)”.

En consecuencia, las estructuras de control simple evalúan una expresión lógica dada, y si esta resulta verdade-
ra, ejecuta determinadas acciones (una o varias); de lo contrario, las obvia, pasando a las siguientes instrucciones
si las hubiere. La figura 10 ilustra lo expresado.
Figura 10. Representación de una estructura de control simple

(entonces)

V Expresión lógica

Tarea(s)
F

Fuente:
Figura 10. Representación Elaboración
de una propia
estructura de control simple
Fuente: Elaboración propia
RECUERDA
“Verdadero y Falso son valores especiales que pertenecen al tipo bool (booleano);
no son cadenas” (Severance, 2009, p. 33). 23
Su estructura en pseudocódigo es como se muestra a continuación:
Tarea(s)

Fuente: Elaboración propia


RECUERDA
RECUERDA
“Verdadero
“Verdadero y Falsoyson
Falso sonespeciales
valores valores especiales que pertenecen
que pertenecen al tipo bool
al tipo bool (booleano); no(booleano);
son cadenas” (Severance,
UNIDAD I

no son
2009, p. 33). cadenas” (Severance, 2009, p. 33).

Su estructura
Su estructura en pseudocódigo
en pseudocódigo esmuestra
es como se como se muestra a continuación:
a continuación:

Si (expresión lógica), entonces


Si (expresión
{ lógica), entonces
{ Conjunto de instrucciones a realizar
}
Conjunto de instrucciones a realizar
Tema n.º 2

} Este tipo de estructura puede ser útil, por ejemplo, en un escenario en el que se
desee restar el 10 % al valor de una venta, siempre y cuando esta sea mayor que
1000. Observe la figura 11.
Este tipo de estructura puede ser útil, por ejemplo, en un escenario en el que se desee restar el 10 % al valor de
una venta, siempre y cuando
Figura [Link] sea mayor
Ejemplo de que 1000. Observe
estructura la figura simple
de control 11.

(entonces)

V Si la venta es mayor
Venta > 1000
que 1000

Venta = Venta – (venta * 10%)


F Reducir la venta en
10%

Fuente:
Figura Elaboración
11. Ejemplo propia
de estructura de control simple
Fuente: Elaboración propia
La variable
La variable “Venta” “Venta” es contrastada
es contrastada con“>”
con el operador el para
operador “>”
verificar quepara verificar
sea mayor que sea
que 1000. Si se comprueba
mayor que 1000. Si se comprueba ello, inmediatamente se procede a reescribir
ello, inmediatamente se procede a reescribir la variable con el nuevo valor (descuento de 10 %).
la variable con el nuevo valor (descuento de 10 %).
El programa 2.1 muestra la implementación de este algoritmo en C++.
El programa 2.1 muestra la implementación de este algoritmo en C++.
void main()
{ void main()
{ float venta;
cout<<”Digite un valor de venta:”<<endl;
cin>>venta;
if (venta > 1000) // Expresión lógica o condición
{
venta = venta - (venta * 0.10); // Tarea a realizar si
// la expresión
// resulta verdadera
}
cout<<”El valor de la venta: “<<venta<<endl;
}

Programa 2.1

24
Estructura de Datos
MANUAL AUTOFORMATIVO INTERACTIVO

3. La estructura de control condicional doble

UNIDAD I
A diferencia de la estructura de control simple donde se escriben instrucciones únicamente para el caso en que
la expresión lógica resulte verdadera, en una estructura de control doble se deben especificar instrucciones
también para el caso en que resulte falsa.

Su estructura en pseudocódigo es como se muestra a continuación:

Si (expresión lógica), entonces


{

Tema n.º 2
Conjunto de instrucciones “A” a realizar
}
Sino
{
Conjunto de instrucciones “B” a realizar
}

Gráficamente es como se muestra en la figura 13.

(entonces) (sino)
V F
Expresión lógica

Tarea(s) A Tarea(s) B

Figura 13. Representación de una estructura de control doble


Fuente: Elaboración propia

Ejemplo: Enviar un mensaje de alerta indicando si la edad ingresada corresponde a la de una persona mayor o
menor de edad. Gráficamente sería:

(entonces) (sino)
V F
Edad >= 18

Imprimir: Imprimir:
Mayor de edad Menor de edad

Figura 14. Ejemplo de una estructura de control doble


Fuente: Elaboración propia
25
El programa siguiente muestra su implementación:

void main()
UNIDAD I

{
int edad;
cout<<”Digite la edad de la persona”<<endl;
cin>>edad;
if (edad >= 18) // Expresión lógica o condición
cout<<”Mayor de edad”<<endl; // Expresión verdadera
else
cout<<”Menor de edad”<<endl; // Expresión falsa
}
Tema n.º 2

Programa 2.2

4. La estructura de control múltiple


A diferencia de las dos estructuras anteriores, en las que la variable que participa de la expresión lógica se com-
para con un único valor, por ejemplo “edad>=18” o “sexo=Masculino”, en una estructura de control múltiple la
variable se compara simultáneamente con diferentes valores, y realiza aquellos bloques de instrucciones donde
la comparación resulte verdadera.

Su estructura en pseudocódigo es como sigue:

Si (expresión lógica 1), entonces


{
Conjunto de instrucciones “A”
}
Sino, si (expresión lógica 2), entonces
{
Conjunto de instrucciones “B”
}
Sino, si (expresión lógica 3), entonces
{
Conjunto de instrucciones “C”
}
Sino,
{
Conjunto de instrucciones “n”
}

Gráficamente es como se muestra en la figura 15.

26
Estructura de Datos
MANUAL AUTOFORMATIVO INTERACTIVO

Gráficamente es como se muestra en la figura 15.


Gráficamente es como se muestra en la figura 15.
Figura 15. Representación de una estructura de control múltiple
Figura 15. Representación de una estructura de control múltiple

UNIDAD I
Expresión lógica
V Tarea(s) A
1 lógica
Expresión Tarea(s) A
1

F
F
V
Expresión lógica V Tarea(s) B
2 lógica
Expresión Tarea(s) B
2

Tema n.º 2
F
F V
Expresión lógica V Tarea(s) n
n lógica
Expresión Tarea(s) n
n

Fuente: Elaboración propia


Fuente: Elaboración
Figura 15. Representación propia
de una estructura de control múltiple
Ejemplo: convertir un número ingresado entre 1 y 5 apropia
Fuente: Elaboración su vocal equivalente.
Ejemplo: convertir un número ingresado entre 1 y 5 a su vocal equivalente.
Figura 16. Ejemplo de una estructura de control múltiple
Ejemplo: convertir
Figura un16.
número ingresado
Ejemplo entre
de una 1 y 5 a sude
estructura vocal equivalente.
control múltiple

V
Numero = 1 V Imprimir “A”
Numero = 1 Imprimir “A”
F
F
V
Número = 2 V Imprimir “E”
Número = 2 Imprimir “E”
F
F
V
Número = 3 Imprimir “I”
V
Número = 3 Imprimir “I”

F
F
V
Número = 4 V Imprimir “O”
Número = 4 Imprimir “O”

F
F V
Número = 5 V Imprimir “U”
Número = 5 Imprimir “U”
F
F
Imprimir “No existe”
Imprimir “No existe”

Fuente: Elaboración propia


Fuente: Elaboración propia
Figura 16. Ejemplo de una estructura de control múltiple
Fuente: Elaboración propia

27
Su versión en código de C++ es como se muestra en el programa 2.3.
#include <iostream>
#include <string>
UNIDAD I

using namespace std;

void main()
{
int valor;
string vocal;
cout<<”Digite un valor: “;
cin>>valor;
if (valor == 1)
Tema n.º 2

vocal = “a”;
else if (valor == 2)
vocal = “e”;
else if (valor == 3)
vocal = “i”;
else if (valor == 4)
vocal = “o”;
else if (valor == 5)
vocal = “u”;
else
vocal = “No existe”;

cout<<”La vocal es: “<<vocal<<endl;
system(“Pause”);
}

Programa 2.3

Otra alternativa es emplear el operador Switch-Case como se aprecia en el siguiente programa:


#include <iostream>
#include <string>
using namespace std;

void main()
{
int valor;
string vocal;
cout<<”Digite un valor: “;
cin>>valor;
switch(valor)
{
case 1: vocal = “a”; break;
case 2: vocal = “e”; break;
case 3: vocal = “i”; break;
case 4: vocal = “o”; break;
case 5: vocal = “u”; break;
default: vocal = “No existe”; break; //Si se digita un
valor
//fuera del rango [1, 5]
}
cout<<”La vocal es: “<<vocal<<endl;
system(“Pause”);
}

Programa 2.4

En C++ la instrucción Switch-Case ejecutará todos aquellos bloques de código donde la expresión lógica resulte
verdadera. Por ello es necesario agregar la palabra reservada “Break” (“detener” en español) al final de cada
instrucción.

28
Estructura de Datos
MANUAL AUTOFORMATIVO INTERACTIVO

Tema n.º 3:

UNIDAD I
Estructuras de control repetitivas

Introducción al tema
La reutilización de código es una forma de optimizar tanto el tiempo de programación, el de mantenimiento y,

Tema n.º 3
por supuesto, el de ejecución de un aplicativo. En esa línea, las estructuras de control repetitivas permiten eje-
cutar un bloque de instrucciones tantas veces sea necesario o hasta que una condición dada se cumpla (o sea
verdadera en términos técnicos).

Con lo expuesto a continuación, usted podrá conocer el funcionamiento y modo de implementación de este tipo
de estructuras.

1. Estructuras de control repetitivas


Como ya se mencionó, este tipo de estructuras realizan una o varias tareas repetidas veces mientras se cumpla
una condición dada.

Su estructura puede darse de dos formas dependiendo de la ubicación de la expresión lógica:

Hacer mientras (expresión lógica)

Conjunto de instrucciones

Hacer

Conjunto de instrucciones

Mientras (expresión lógica)

Gráficamente es como se muestra en la figura 17.

29
Mientras (expresión lógica)

Gráficamente es como se muestra en la figura 17.

Figura 17. Representaciones de una estructura de control repetitiva


condicionada

i) ii)
UNIDAD I

Tarea(s)

Expresión lógica

Expresión lógica

Tarea(s)
Tema n.º 3

Fuente: Elaboración propia


Figura 17. Representaciones de una estructura de control repetitiva condicionada
C++ permite implementar tres tipos Fuente:
deElaboración propiarepetitivas, cuya diferencia se
estructuras
describe en este cuadro:
C++ permite implementar tres tipos de estructuras repetitivas, cuya diferencia se describe en este cuadro:

Tabla 1. Tipos de estructuras repetitivas

Instrucción Descripción
El uso más frecuente de este tipo de bucles se produce cuando el número de repeticiones se
For
conoce por anticipado y la condición del bucle puede ser controlada por un contador.
El uso más frecuente se produce cuando la repetición del bucle no está controlada por un
contador, sino por una cierta condición (simple y compleja).
While

El bucle puede que no se ejecute ninguna vez.


Se utiliza en las mismas condiciones que el while y, además, cuando se debe asegurar que el
Do-while
bucle se ejecute al menos una vez. Ejemplo: menú de opciones con filtro.

Nota: Tomada de Práctica 5. Sentencias de control repetitivas, Fundamentos de informática. Recuperado de


[Link]

A continuación, se muestran ejemplos de implementación de estructuras repetitivas:

Ejemplo 1:

Imprimir una palabra en pantalla hasta que el usuario digite “Salir”.

#include <iostream>.
using namespace std;

void main()
{
string palabra;
palabra = “”;
do
{
cout<<”Digite la palabra a imprimir: ”;
cin>>palabra;
cout<<”La palabra es: “<<palabra<<endl;
}
while (palabra!=”Salir”);
system(“Pause”);
};

Programa 3.1

30
Estructura de Datos
MANUAL AUTOFORMATIVO INTERACTIVO

Ejemplo 2:

Imprimir los divisores de un número especificado.

UNIDAD I
#include <iostream>
using namespace std;

void main()
{
int número;
int divisor;
int i;

Tema n.º 3
cout<<”Indique número: “;
cin>>número;
divisor = número;
i = 1;
while (divisor > 0)
{
if (número%divisor==0) //El operador % devuelve el resto de
//una división
{
cout<<”Divisor[“<<i<<”]: “<<divisor<<endl;
i++; //Incrementar en una unidad "<<divisor<<endl;
cout<<"Divisor["<<i<<"]:
} i++; //Incrementar en una unidad
divisor--;
} //Disminuir en una unidad
} divisor--; //Disminuir en una unidad
system(“Pause”);
}
}; system("Pause");
};
Programa 3.2
Programa 3.2

2. La instrucción FOR

La instrucción
2. La instrucción FORFOR es una variante de estructura repetitiva, la cual puede usarse
cuando se conoce de antemano la cantidad de repeticiones que debe tener el bucle.
La instrucción FOR es18
La figura una variante su
describe de estructura
estructura:repetitiva, la cual puede usarse cuando se conoce de antemano
la cantidad de repeticiones que debe tener el bucle.

La figura 18 describe
Figura su18.
estructura:
Representaciones de una estructura de control repetitiva
condicionada

VALOR INICIAL RAZÓN DE INCREMENTO


“i” es una variable auxiliar; en Define el incremento de la
esta sección se indica su valor variable i después de cada
inicial. bucle.

for (i=1; i<N; i++)

VALOR MÁXIMO
“<N” permite definir el valor
máximo que tomará i.

Fuente: Autoría propia


Figura 18. Representaciones de una estructura de control repetitiva condicionada
Fuente: Autoría propia
En los siguientes ejemplos se detalla cómo implementar esta instrucción:

Ejemplo 3:
Imprimir una serie numérica hasta un número especificado.
31
void main()
En los siguientes ejemplos se detalla cómo implementar esta instrucción:

Ejemplo 3:
UNIDAD I

Imprimir una serie numérica hasta un número especificado.

void main()
{
int i;
int cantidad;
cout<<”Indique cantidad: “;
cin>>cantidad;
Tema n.º 3

for (i=1;i<=cantidad;i++)
cout<<i<<endl;
system(“Pause”);
};

Programa 3.3

Ejemplo 4:

Imprimir la tabla de multiplicar de un número dado. Note que en este caso la declaración de la variable auxiliar
“i” se realiza en la misma instrucción FOR.

void main()
{
int numero;
cout<<”Indique número de reportar: “;
cin>>numero;
for (int i=0;i<=10;i++)
cout<<número<<”*”<<i<<”=”<<número*i<<endl;
system(“Pause”);
};

Programa 3.4

Es posible anidar dos instrucciones FOR para realizar recorridos simultáneos. En el programa 3.5 se aprecia
cómo aprovechar esta cualidad para realizar una impresión de datos en forma tabular.

#include <iostream>
using namespace std;

void main()
{
int columnas;
int filas;
columnas = 9;
filas = 5;

for (int i=0; i<=filas; i++)
for (int j=0; j<=columnas; j++)
{
cout<<i<<j<<” “;
if (j==columnas)
cout<<endl; //Salto de línea si se llegó a la última colum-
na
}
system(“Pause”);
};

32
Estructura de Datos
MANUAL AUTOFORMATIVO INTERACTIVO

Resultado:

00 01 02 03 04 05 06 07 08 09

UNIDAD I
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59

Como se verá a partir de la siguiente unidad, los bucles son ideales para recorrer por cada uno de los elementos

Tema n.º 3
de un arreglo (de una o más dimensiones) mientras se hacen operaciones con o sobre ellos.

Lectura seleccionada n.º 1:

El concepto de datos estructurados


Leer el apartado 5.1.: “El concepto de datos estructurados” (p. 171)

Quetglás, G., Toledo, F., & Cerverón, V. (2002). Estructura de datos. En Fundamentos de Informática y Programa-
ción (pp. 171–211). Disponible en [Link]

Actividad N.º 1
Participe en un foro de discusión sobre listas basadas en arreglos y basadas en punteros.

Instrucciones:

a) 
Lea y analice detenidamente los siguientes casos:

Se desea implementar dos programas que, mediante listas, permitan el registro de

i. Los nombres de los jugadores participantes de un partido de futbol. Solo un partido, una vez finalizado
este, los datos pueden ser eliminados.

ii. Las placas de los vehículos que llegan a diario a una caceta de control policial en carretera. Una vez
terminado el día, la lista puede ser eliminada.

b) 
Basado en su análisis, responda en el foro:

Entre los dos tipos de listas: basada en arreglos y basada en punteros, ¿cuál de ellas se adecúa mejor a
cada caso? Fundamente su respuesta.

33
Glosario de la Unidad I
UNIDAD I

A
Algoritmo. Conjunto ordenado de pasos que llevan a la solución de un problema.

C
Tema n.º 3

C++. Es un lenguaje de programación diseñado en la década de 1980. A diferencia de su predecesor C, este


permite manipular objetos.

D
Dato. Unidad mínima de información que carece de significado por sí misma.

I
Información. Conjunto de datos ordenados y con sentido semántco.

M
Memoria (en informática). Es un dispositivo que almacena datos informáticos durante algún intervalo de tiempo.

P
Procesador. De la familia de los circuitos integrados, es un dispositivo electrónico responsable de convertir da-
tos de entrada en datos de salida.`l + l

Programa (en informática). Conjunto de instrucciones que realizan una tarea específica.

V
Variable. En un lenguaje de programación es un espacio de memoria, identificado por un nombre y reservado
para almacenar un dato específico a la vez.

34

También podría gustarte