Hermosillo, Sonora, Enero Del 2023
Hermosillo, Sonora, Enero Del 2023
Hermosillo, Sonora, Enero Del 2023
10 5
Submódulo III: Aplica Estructuras de Datos con un Lenguaje de Programación.
5
INTRODUCCIÓN
El presente Submódulo III Aplica Estructuras de Datos con un Lenguaje de
Programación tiene como propósito fundamental que el alumno sea capaz de
aplicar las estructuras de datos desarrolladas en un lenguaje de programación, el
cual cumple con un objetivo integral en tu formación como estudiante de CECyTE
Sonora, debido a que la computadora es en la actualidad, una herramienta
fundamental en cualquier actividad, pues se ha vuelto imprescindible en la vida
cotidiana de cualquier persona. De ahí la importancia de que conozcan todos sus
aplicaciones, cómo funcionan y desarrollar programas en diferentes lenguajes de
programación para aprovechar los recursos tanto de hardware como de software al
máximo.
6
I
Reconoce
Estructuras de
Datos.
Genéricas:
4. Escucha, interpreta y emite mensajes pertinentes en distintos contextos mediante la utilización de
medios, códigos y herramientas apropiados.
5. Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos.
6. Sustenta una postura personal sobre temas de interés y relevancia general, considerando otros puntos
de vista de manera crítica y reflexiva.
8. Participa y colabora de manera efectiva en equipos diversos.
Competencias Disciplinares:
CE3. Identifica problemas, formula preguntas de carácter científico y plantea las hipótesis necesarias para
responderlas.
7
Describe los tipos de datos y las estructuras de datos para la solución de
problemas reales.
Identifica los tipos de datos utilizados en programación para la solución de
problemas reales
Define estructuras de datos para la solución de problemas reales.
Describe las estructuras de datos para la solución de problemas reales,
utilizando vectores y matrices.
Identifica las operaciones básicas con vectores (inserción, recorrido y
eliminación).
Identifica las operaciones básicas con matrices
8
A continuación, se presentan una serie de preguntas de opción múltiple relacionadas con
la estructura de datos, que profundizarás con más detalle a lo largo de las actividades.
Esfuérzate por contestarlas subrayando la respuesta correcta.
1.- Se le llama así a cualquier objeto que puede ser manipulado por una computadora
a) Plataforma b) Dato c) Línea d) Aplicación
2.- Tipo de dato que permite que una variable pueda almacenarlo como un único valor
de ese único tipo.
a) Simple b) Estructurado c) Compuesto d) Dinámico
3.- Dato que permiten que una variable pueda almacenarlos como más de un valor, dato
o tipo de dato.:
a) Compuesto b) Abstracto c) Libre d) Simple
4.- Indica cual de los siguientes tipos de datos es estructurado
a) Entero b) Carácter c) Cadena d) Real
5.- Indica cual de los siguientes datos es un tipo de dato simple
a) Vector b) Carácter c) Cadena d) Matriz
6.- Se define como una colección finita, homogénea y ordenada de elementos.
a) Vector b) Matriz c) Árbol d) Grafo
7.- Especifica cuántos elementos tendrá el arreglo y además de qué modo podrán
recuperarse esos componentes.
a) Nombre b) Límite inferior c) Índice d) Casilla
8.- Es la operación que permite escribir un valor en un vector
a) Lectura b) Asignación c) Eliminación d) Búsqueda
9.- Es una operación de vital importancia cuando se manipulan grandes conjuntos de
datos que consiste en localizar un elemento
a) Lectura b) Asignación c) Eliminación d) Búsqueda
10.- Método de ordenación que consiste en buscar el menor elemento del vector y
colocarlo en la primera posición. Luego el segundo elemento más pequeño en la
siguiente posición y así sucesivamente hasta lograr la ordenación competa del vector.
a) Inserción b) Shell c) Intercambio d) Selección
9
Describe las estructuras de datos para la solución de problemas reales,
utilizando vectores.
Identifica los tipos de datos utilizados en programación para la solución de
problemas reales.
Para ser útiles, los datos deben convertirse en información para ofrecer un significado,
conocimiento, ideas o conclusiones.
Es importante recordar que un dato de tipo simple, no está compuesto de otras estructuras, que
no sean los bits, y que por tanto su representación es directa, sin embargo, existen unas
operaciones propias de cada tipo, que en cierta manera los caracterizan.
Dependiendo del tipo de aplicación o recurso que vayamos a usar requeriremos una estructura
de datos independiente y distinta a las demás, dado que cada una encaja en el contexto de forma
determinada y con una serie de objetivos.
Entonces, podemos decir que una estructura de datos, es cualquier colección o grupo de datos
organizados de tal forma que tengan asociados un conjunto de operaciones para poder ser
manipulados.
Las estructuras de datos brindan la posibilidad de administrar todo tipo de datos sin ningún tipo
de obstáculo, algo que en la actualidad se usa en la red para poder llevar a cabo, por ejemplo,
los sistemas de indexado de contenidos. Y también juegan un papel clave en la creación de los
mejores algoritmos, así como en su uso con lenguajes de programación que se benefician de
ellas.
10
Para tener una definición más clara del concepto de estructura de datos, podemos citar a Luis
Joyanes Aguilar en su libro “Fundamentos de programación: algoritmos, estructura de datos y
objetos”: “Una estructura de datos es una colección de datos que pueden ser caracterizados por
su organización y las operaciones que se definen en ella”.
Tipos de datos
Antes de conocer a fondo las estructuras de datos, es importante conocer los tipos de datos que
pueden ser procesados por una computadora para después generar una estructura.
Datos simples:
Podemos definir un dato simple como aquel que permite que una variable
pueda almacenarlo como un único valor de ese único tipo.
x = 31
La variable “x” toma por valor al inicio el valor 31 que es un dato simple
(número entero), y luego el valor 313 que también es un dato simple
x = 313 (número entero), finalmente a toma como valor 31.3 (número decimal
o flotante) que también es un dato simple. Por lo que la variable siempre
x = 31.3 permanece simple.
Datos compuestos:
Los datos estructurados son aquellos que permiten que una variable pueda almacenarlos como
más de un valor, dato o tipo de dato. Como puede ser un conjunto de números, una cadena de
caracteres, letras, lista, secuencia, etc.
Como lo indica su nombre, hacen referencia a un grupo de casillas de memoria;
Están construidos en base a datos simples, un ejemplo puede ser una cadena de
caracteres.
11
La variable “x” no almacena un único dato por ende se puede
x = (2, 3, 5) decir que almacena datos estructurados.
En caso de que fuera una sola letra tampoco fuera posible porque el tipo de variable permite que
se guarde más de un carácter y por ende permite “más de un único valor de ese tipo”. Así que
una letra, será dato estructurado, complejo, aunque no se requiera.
12
Con base en la información del tema, elabora un cuadro sinóptico sobre el concepto de dato y
tipos de datos en programación.
13
Tipos de datos simples:
La característica principal de los tipos de datos simples consiste en que ocupan sólo una casilla
de memoria, esto quiere decir que una variable hace referencia a un valor a la vez. Por mencionar
algunos ejemplos:
números enteros,
números reales,
caracteres
booleanos
Una variable almacena un valor del tipo simple cuando establecemos un valor único. Por ejemplo,
un número almacenado en la variable “n” será un tipo de dato simple cuantitativo. Y esta variable
por supuesto será del tipo Int (Entero), ósea una variable simple.
Los tipos de datos estructurados se caracterizan por permitirnos hacer referencia a un grupo de
casillas de memoria. Un tipo de dato estructurado tiene varios componentes. Estos componentes
o elementos pueden ser referenciados con la misma variable y un índice que permite localizarlo.
En programación las variables que almacenen varios valores (del mismo tipo o no) al mismo
tiempo serán consideradas variables del tipo estructurado o complejo.
Es importante, tener en cuenta que los datos estructurados son aquellos que conservan cierta
estructura, orden, organización y radica allí la importancia de aprender a diferenciarlos en parte
por su utilidad y aplicación. No es lo mismo una variable que almacena diez números ordenados
(Dato estructurado), que diez variables que almacenan un número cada una (Datos simples).
14
Con base en la información del tema, e investigación bibliográfica, realiza una investigación sobre
los tipos de datos simples y estructurados y completa la siguiente tabla.
Tipo de
Dato Definición
dato
Int (enteros)
Float (reales)
Datos simples
Char (Carater)
Tipos de datos
Booleanos
String (cadena
de caracteres)
Datos
estructurados Arreglo
Registros.
15
Define estructuras de datos para la solución de problemas reales.
Los tipos de datos que nombramos anteriormente se pueden organizar mediante dos
tipos distintos de estructura:
Estructura de datos estática: según Luis Joyanes Aguilar, “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”.
Por ejemplo: Cuando alquilas una cierta cantidad de sillas para un evento (puede ocurrir que se
usen todas, falten sillas porque llegaron más invitados de lo esperado o sobren y gastas más de
lo debido).
Una de las estructuras de datos estática más común, es el arreglo (arrays), también conocido
como vector; un arrays se define como una colección finita, homogénea y ordenada de
elementos. Veamos un poco más sobre las características de los de los arrays.
Finita: todo arreglo tiene un límite; es decir, se debe determinar cuál será el número
máximo de elementos que formarán parte del arreglo
Homogénea: todos los elementos de un arreglo son del mismo tipo. Es decir, todos
enteros, todos booleanos, etcétera, pero nunca una combinación de distintos tipos.
Si un arreglo tiene la característica de que puede almacenar N elementos del mismo tipo,
entonces deberá permitir la recuperación de cada uno de ellos. Como consecuencia, se
distinguen dos partes fundamentales en los arreglos:
Los componentes: hacen referencia a los elementos que forman el arreglo; es decir, a los
valores que se almacenan en cada una de sus casillas.
El índice: especifica cuántos elementos tendrá el arreglo y además de qué modo podrán
recuperarse esos componentes. Los índices también permiten hacer referencia a los
componentes del arreglo en forma individual; es decir, distinguirán entre sus elementos. Por
tanto, para hacer referencia a un elemento de un arreglo se debe utilizar:
16
El nombre del arreglo.
Para hacer referencia al Amigo en cuestión se necesitan ambas partes: nombre del arreglo y el
índice:
Amigos [3] => Esto nos devuelve el componente en el índice 3: “Martin - 6642763944”
17
Estructura de datos dinámica: estas no tienen las limitaciones del tamaño de
memoria ocupada y, según Aguilar: “Mediante el uso de un tipo de datos específico, denominado
puntero, es posible construir estructuras de datos dinámicas que son soportadas por la mayoría
de los lenguajes que ofrecen soluciones eficaces y efectivas en la solución de problemas
complejos”.
El tamaño de la estructura o la cantidad de elementos que esta puede almacenar varía a medida
que el usuario ejecuta el programa. No requiere que se indique el tamaño de espacio a utilizar.
El tamaño de espacio es limitado por el espacio físico del computador (memoria principal de este:
RAM).
Las estructuras dinámicas de datos son una colección de elementos, llamados nodos, que
normalmente se utilizan para dejar asentados registros. Al contrario de un array, que contiene
espacio para almacenar un número fijo de elementos, una estructura dinámica de datos se
amplía y contrae durante la ejecución del programa.
Se podría decir que se utilizan para el almacenamiento de datos del mundo real que están en
constante cambio. Se las puede clasificar en dos grupos distintos: estructura de datos lineales y
no lineales.
La estructura de datos se considera lineal si los elementos de datos construyen una secuencia
de una lista lineal. Los elementos están unidos de forma adyacente entre sí y en un orden
específico. Consume espacio de memoria lineal, los elementos de datos deben almacenarse de
manera secuencial en la memoria. Al implementar la estructura de datos lineal, la cantidad
necesaria de memoria se declara previamente.
18
Realiza una investigación sobre las estructuras lineales: listas, pilas y colas y matrices,
posteriormente elabora un mapa conceptual.
19
Definición de estructura de datos no lineales
La estructura de datos no lineales no organiza los datos de forma consecutiva, sino que se
organiza en orden ordenado. En este caso, los elementos de datos se pueden adjuntar a más de
un elemento que muestra la relación jerárquica que implica la relación entre el hijo, el padre y el
abuelo. En la estructura de datos no lineales, el recorrido de los elementos de datos y la inserción
o eliminación no se realizan de forma secuencial.
La estructura de datos no lineales utiliza la memoria de manera eficiente y no requiere de
antemano la declaración de memoria. Hay dos ejemplos comunes de la estructura de datos no
lineales: árbol y grafos.
Árboles.
Nodo Raíz: Se refiere al primer nodo de un Árbol, Solo un nodo del Árbol puede
ser la Raíz.
Nodo Padre: Se utiliza este término para llamar a todos aquellos nodos que tiene
al menos un hijo.
Nodo Hijo: Los hijos son todos aquellos nodos que tiene un padre.
Nodo Hermano: Los nodos hermanos son aquellos nodos que comparte a un
mismo padre en común dentro de la estructura.
Nodo Hoja: Son todos aquellos nodos que no tienen hijos, los cuales siempre se
encuentran en los extremos de la estructura.
Nodo Rama: Estos son todos aquellos nodos que no son la raíz y que además
tiene al menos un hijo.
20
Realiza una investigación sobre las siguientes propiedades de los árboles y completa el siguiente
cuadro sinóptico:
Nodo
Nivel
Altura
Propiedades
de los nodos
Peso
Orden
Grado
21
Grafos.
Realiza una investigación sobre los distintos tipos de grafos: Grafos dirigidos y Grafos no
dirigidos.
22
Diferencias clave entre la estructura de datos lineales y no lineales
En la estructura de datos lineal, los datos se organizan en un orden lineal en el que los
elementos están vinculados uno tras otro. Al contrario que en la estructura de datos no lineal, los
elementos de datos no se almacenan de
manera secuencial, sino que los elementos
están relacionados jerárquicamente.
El desplazamiento de datos en la
estructura de datos lineal es fácil, ya que
puede hacer que todos los elementos de datos sean recorridos de una sola vez, pero en un
momento solo se puede acceder directamente a un elemento. Por el contrario, en la estructura
de datos no lineales, los nodos no se visitan de forma secuencial y no se pueden recorrer de una
sola vez.
Los ejemplos de la estructura de datos lineales son la matriz, la cola, la pila, la lista
enlazada, etc. En contraste, el árbol y el gráfico son ejemplos de la estructura de datos no
lineales.
23
Identifica las operaciones básicas con vectores (inserción, recorrido y
eliminación).
Como ya sabemos, los arreglos de una dimensión es un tipo de datos estructurados compuesto
de un número de elementos finitos, tamaños fijos y elementos homogéneos.
Finitos, indica que ha un último elemento, tamaño fijo significa que el tamaño del arreglo debe
ser conocido en tiempo de compilación, homogéneo significa que todos los elementos son del
mismo tipo.
Para acceder a un elemento en particular de un arreglo se usa un índice. El formato para declarar
un arreglo unidimensional es:
Lectura / Escritura.
El proceso de lectura de un arreglo consiste en leer un valor en cada uno de sus componentes.
Supongamos que se desea leer todos los elementos de un arreglo
unidimensional Nombres[200] en forma consecutiva, utilizaríamos un ciclo repetitivo de la
siguiente manera:
String Nombres[200]
Hacer Desde C=0 Hasta 199
Leer Nombres[C]
Fin Desde
Asignación.
El caso de la operación de escritura es similar al de lectura. Solo que en vez de leer el
componente del arreglo lo escribimos.
String Nombres[200]
24
Actualización:
La operación de actualización de un vector consta a su vez de tres operaciones más
elementales:
Añadir.
Es la operación de agregar un nuevo elemento al final del vector La única condición necesaria
para vector. La única condición necesaria para esta operación consistirá en la comprobación de
que existe espacio comprobación de que existe espacio suficiente para el nuevo elemento, dicho
de otra manera, que el vector no contenga todos los elementos con que fue definido.
Se tiene un vector de edades definido para 7 elementos, pero ya tiene almacenado 5 elementos
EDADES[0], EDADES[1], EDADES[2], EDADES[3] y EDADES[4]. Se podrán añadir dos
elementos más al final del vector con una simple operación de asignación:
EDADES[5] ← 23
EDADES[6] ← 20
Si no se sabe si el vector tiene espacios disponibles, primero debe determinarse esto antes de
intentar añadir elementos al vector:
25
Inserción
Como Fernando está entre Carlos y Gerardo se deben desplazar hacia abajo los elementos 2,
3, y 4 que pasarán a ocupar las posiciones relativas 3, 4 y 5
Posteriormente, debe realizarse la misma operación con el nombre de Luis que ocupará la
posición 5.
26
Eliminación.
Si desea borrar elemento 3 (Gerardo), debe desplazar hacia arriba los elementos de las
posiciones 4 (Lorena) y 5 (Luis) y 6 (Marcos).
0 Ana 0 Ana
1 Carlos 1 Carlos
2 Fernando 2 Fernando
3 Gerardo 3 Lorena
4 Lorena 4 Luis
5 Luis 5 Marcos
6 Marcos 6
7 7
27
Realiza un cuadro sinóptico acerca de las operaciones con vectores que incluya:
Declaración de vectores
Lectura / Escritura
Asignación
Actualización:
Añadir.
Inserción
Eliminación.
28
Ordenación.
a) De forma ordenada capturar uno a uno los valores del arreglo e ir comparándolos con los
restantes en busca del valor más alto.
b) Tal valor máximo toma la posición del dato que fue capturado inicialmente y viceversa.
Los datos de un vector, una lista o un archivo están ordenados cuando cada elemento ocupa el
lugar que le corresponde según su valor, un dato clave o un criterio.
Si cada elemento del vector diferente del primero es mayor que los anteriores, se dice que está
ordenado ascendentemente, mientras que, si cada elemento diferente del primero es menor que
los anteriores, está ordenado de forma descendente.
29
Método de ordenamiento por intercambio
Este algoritmo no es el más eficiente, pero es muy didáctico; este método consiste en tomar cada
elemento y compararlo con los que están a su derecha, cada vez que se identifica un par de
elementos que no cumplen el criterio de ordenamiento que se está aplicando se intercambian.
Considérese el siguiente vector, para ordenar los números de forma ascendente se toma el primer
elemento v[1] y se compara con v[2]. Si v[1] menor que v[2] éstos están en orden, pero si v[1] >
v[2] están desordenados y es necesario intercambiarlos.
Como se aprecia en la figura, para intercambiar dos elementos de un vector es necesario utilizar
una variable auxiliar y realizar tres asignaciones:
aux = v[1]
v[1] = v[2]
v[2] = aux
Después de este intercambio se compara v[1] con v[3], si no están ordenados se procede
a hacer el intercambio, luego v[1] con v[4] y así sucesivamente hasta v[1] con v[n].
30
A continuación, se muestra una función para ordenar un vector de enteros aplicando el método
por intercambio. La función recibe como parámetro un vector de tipo entero no ordenado y el
tamaño de este, aplica el algoritmo de ordenamiento y devuelve el vector ordenado.
Este método es similar al anterior en cuanto a los recorridos del vector y las comparaciones, pero
con un número menor de intercambios. En el método de intercambio cada vez que se comparan
dos posiciones y éstas no están ordenadas se hace el intercambio de los datos, de manera que
en un mismo recorrido puede haber varios intercambios antes de que el número ocupe el lugar
que le corresponde en el arreglo ordenado. En el método de selección, en cada recorrido se
identifica el elemento que pertenece a una posición y se hace un solo intercambio.
31
Como se puede apreciar, en la figura se muestra el intercambio efectuado para la primera
posición. Se declara una variable para guardar la posición del menor y se inicializa en 1 para
comenzar las comparaciones en la primera posición, se hace un recorrido desde la segunda
posición hasta la última y cada vez que se encuentra un elemento menor al que indica la variable
se la actualiza.
Estando en la posición i del vector v, el recorrido para identificar el elemento que corresponde a
dicha posición en el vector ordenado ascendentemente se lleva a cabo con las instrucciones que
se presentan a continuación.
Ahora bien, para ordenar todo el vector solo hay que hacer que la variable i se mueva desde el
primer elemento hasta el penúltimo, a continuación, se presenta la función para ordenar un vector
aplicando el algoritmo de selección. Esta función recibe un vector no ordenado como parámetro
y lo devuelve ordenado.
32
A continuación, se muestra la ordenación de un vector con 10 elementos utilizando el método por
selección.
Vector
17 12 13 8 15 3 7 22 11 20 original
En el primer recorrido del vector se busca el elemento más pequeño y se coloca en la primera
posición y el elemento que está en la primera posición se recorre a la posición en la que se
encontraba el más pequeño:
3 12 13 8 15 17 7 22 11 20 Recorrido 1
3 7 13 8 15 17 12 22 11 20 Recorrido 2
Y así sucesivamente hasta el final, el cual es cuando todos los elementos del vector se
encuentran en el orden deseado:
3 7 8 11 12 13 15 17 20 22 Vector
ordenado
Por la forma como se hacen los recorridos y las comparaciones éste es uno de los algoritmos de
ordenamiento más fáciles de comprender y de programar, sin embargo, no es recomendable su
utilización en el desarrollo de software, por ser el de menor eficiencia.
33
A continuación, se ilustra en el vector, en un recorrido se hacen n-1 comparaciones y todos los
intercambios necesarios a que haya lugar.
En el primer recorrido del vector, dado que se compara cada elemento con el adyacente,
si se aplica un orden ascendente el valor más alto se desplazará paso a paso hacia la
derecha llegando hasta la última posición, pero los demás valores quedarán en desorden en las
demás posiciones.
Para ordenar completamente el vector, considerando que en una comparación se ordenan dos
elementos y en un recorrido se lleva un elemento hasta su posición ordenada, es necesario
realizar n-1 recorridos.
.
En un vector con muchos elementos el número de comparaciones que se reduce es importante.
A continuación, se muestra el recorrido mejorado para la i-ésima iteración.
34
A continuación, se muestra la ordenación de un vector con 10 elementos utilizando el método de
burbuja.
Vector
17 12 13 8 15 3 7 22 11 20 original
En el primer recorrido del vector se compara cada elemento con el adyacente y el valor más alto
se desplaza hacia la derecha quedando como se muestra a continuación:
12 13 8 15 3 7 17 11 20 22 Recorrido 1
Para ordenar completamente el vector, considerando que en una comparación se ordenan dos
elementos y en un recorrido se lleva un elemento hasta su posición ordenada, es necesario
realizar n-1 recorridos.
El siguiente recorrido quedaría de la siguiente manera:
12 8 13 3 7 15 11 17 20 22 Recorrido 2
Y así sucesivamente hasta el final, el cual es cuando todos los elementos del vector se
encuentran en el orden deseado:
3 7 8 11 12 13 15 17 20 22 Vector
ordenado
Este método consiste en ordenar los elementos del arreglo progresivamente, comenzando por
los primeros y avanzando hasta ordenarlos todos. Dado el elemento de una posición i (i comienza
en 2 y va hasta el fin del arreglo) se guarda en una variable auxiliar y ésta se compara con el
elemento que está a la izquierda; si no están ordenados, el elemento de la izquierda se desplaza
hacia la derecha.
35
Se vuelve a comparar la variable auxiliar con el elemento que sigue por la izquierda. Todo
elemento que no esté ordenado se desplaza una posición a la derecha, hasta que se encuentre
uno que si esté en orden o se llegue al inicio del vector. Al terminar este recorrido se deposita, en
el espacio que quedó libre, el elemento contenido en la variable auxiliar.
Ahora
se
toma el
Para ordenar todo el vector solo hay que utilizar la siguiente instrucción:
36
A continuación, se muestra la ordenación de un vector con 10 elementos utilizando el método por
inserción.
Vector
17 12 13 8 15 3 7 22 11 20 original
En el primer recorrido del vector se toma el segundo elemento del vector y se compara con los
elementos que están a su izquierda que sería solo el primer elemento, si están en orden se dejan
como están de lo contrario se intercambian, con eso se asegura que las 2 primeras posiciones
están en orden entre ellas :
12 17 13 8 15 3 7 22 11 20 Recorrido 1
En el siguiente recorrido del vector se toma el tercer elemento y se compara con los elementos
que están a su izquierda que serían el primer y segundo elemento, si están en orden se dejan
como están de lo contrario se ordenan, quedando de la siguiente manera:
12 13 17 8 15 3 7 22 11 20 Recorrido 2
Y así sucesivamente hasta el final, el cual es cuando todos los elementos del vector se
encuentran en el orden deseado:
3 7 8 11 12 13 15 17 20 22 Vector
ordenado
Es un algoritmo de inserción con saltos decrecientes diseñado por Donald Shell y reconocido
generalmente por el nombre de su creador. Funciona de forma similar al algoritmo de inserción,
pero a diferencia de este no mueve los elementos una posición, sino varias posiciones a la vez,
de manera que los elementos llegan más rápido a su destino.
Este método es muy adecuado para vectores con gran cantidad de datos. En este algoritmo, se
toma un elemento y se lo compara con los que están a su izquierda, si se busca un orden
ascendente, los elementos mayores al de referencia se mueven a la derecha y éste se ubica en
el lugar que le corresponde, pero no se compara con el elemento que está inmediatamente a la
izquierda, sino con el que se encuentra x posiciones atrás.
A x se le llama salto, en la primera iteración se dan saltos de la mitad del tamaño del vector, de
manera que se comparan los elementos de la mitad izquierda con los elementos de la derecha y
cada intercambio implica pasar de un lado al otro.
37
Para la segunda iteración el salto se reduce a la mitad y para la tercera nuevamente a la mitad y
así sucesivamente hasta llegar a hacer comparaciones de uno en uno.
Salto = 10/2 = 5
En este caso, en la primera iteración las comparaciones se hacen con una diferencia de 5
posiciones, v[1] con v[6], v[2] con v[7] y así sucesivamente.
En la primera iteración cada elemento del lado izquierdo sólo se compara con uno del lado
derecho ya que el salto divide el vector en dos partes.
Para la segunda iteración se actualiza el salto tomando como valor la cuarta parte del tamaño del
vector, lo que implica que desde algunos elementos se pueden dar varios saltos a la izquierda.
salto = salto/2
salto = 5/2 = 2
38
En la segunda iteración, en el ejemplo que se está analizando, salto = 2, en consecuencia, el
ciclo se ejecuta desde el tercer elemento hasta el último. La variable i se inicializa en 1 y la
variable aux toma el tercer elemento (12). La primera comparación es entre v[1] y v[3] (12 < 3 =
falso), si los elementos están en orden la variable seguir toma el valor falso, el ciclo mientras
terminar y se procede a realizar las iteraciones para el elemento siguiente (v[4]) y así
sucesivamente.
A continuación, se presenta una función para ordenar un vector aplicando el algoritmo de Shell.
39
A continuación, se muestra la ordenación de un vector con 10 elementos utilizando el método
Shell.
Vector
17 12 13 8 15 3 7 22 11 20 original
Para la primera iteración se divide el total de elementos del vector entre 2, para este ejemplo 10/2
quedando saltos de 5 para hacer comparaciones y el resultado quedaría como se muestra a
continuación:
3 7 13 8 15 17 12 22 11 20 Iteración 1
Para la segunda iteración el salto se divide a la mitad por lo que quedarían saltos de 2 lo que
implica que algunos elementos se puedan dar varios saltos, quedando de la siguiente manera:
3 7 13 8 12 17 11 20 15 22 Iteración 2
3 7 8 11 12 13 15 17 20 22 Vector
ordenado
Búsqueda.
40
Supóngase que se tienen una lista de estudiantes y se desea ubicar al que se identifica con el
número 27844562. La búsqueda consiste en comparar, dicho número con la identificación de
cada estudiante de la lista.
Búsqueda binaria
Este método es más eficiente que la búsqueda secuencial pero sólo se puede aplicar sobre
vectores o listas de datos ordenados.
En la búsqueda binaria no se hace un recorrido de principio a fin, sino que se delimita
progresivamente el espacio de búsqueda hasta llegar al elemento buscado.
La primera comparación se hace con el elemento de la mitad del arreglo, si aquel no es el dato
buscado, se decide si buscar en la mitad inferior o en la mitad superior según la clave sea menor
o mayor del elemento de la mitad. Se toma como espacio de búsqueda la mitad del vector que
corresponda y se procede de igual forma, se compara con el elemento del centro, si ese no es el
que se busca, se toma un nuevo espacio de búsqueda correspondiente a la mitad inferior o
superior del espacio anterior, se compara nuevamente con el elemento del centro, y así
sucesivamente hasta que se encuentre el elemento o el espacio de búsqueda se haya reducido
un elemento.
En la búsqueda binaria el número de elementos que conforman el campo de búsqueda se
reduce a la mitad en cada iteración.
41
Supóngase un vector v de 13 elementos ordenado de forma ascendente, como se muestra a
continuación, en el que se busca el número 10 (elemento clave).
42
Completa la siguiente tabla anotando la definición de cada uno de los métodos de ordenación y
búsqueda de los elementos de un vector.
Intercambio
Selección
Ordenación Burbuja
Inserción
Shell
Secuencial
Búsqueda
Binaria
43
Identifica las operaciones básicas con matrices (inserción, recorrido y
eliminación).
Carga:
Esta operación permite cargar (almacenar) valores en los distintos elementos de una matriz,
entrándolos a través de un dispositivo externo o periférico de entrada, por ejemplo, el teclado,
ratón, etc.
El formato de la instrucción es el siguiente: Cargar Nombre_matriz(índice_fila, índice_columna).
44
Lectura:
Esta operación trata de leer (mostrar) sobre un dispositivo o periférico de salida, por ejemplo, la
pantalla, los valores contenidos en la matriz.
Su formato es el siguiente: Leer Nombre_vector(índice).
Ejemplo:
Recorrido secuencial:
Se puede acceder a los elementos de una matriz para introducir datos (leer) en ella, o bien para
visualizar su contenido (escribir) realizar comparaciones búsquedas de elementos o cualquier
otro tipo de operación.
Esta operación se realiza usando estructuras de repetición, cuyas variables de control se utilizan
como subíndices de la matriz (por ejemplo, i, j).
El incremento del contador del bucle producirá el tratamiento sucesivo de los elementos de la
matriz.
45
Recorrido secuencial por columnas:
Elabora un cuadro sinóptico acerca del tema matrices que incluyan su definición y sus
operaciones básicas.
46
A continuación, se presentan una serie de preguntas de opción múltiple relacionadas con
los conceptos básicos de la unidad. Esfuérzate por contestarlas colocando en el
paréntesis la letra de la respuesta correcta.
1.- Se le llama así a cualquier objeto que puede ser manipulado por una computadora
a) Plataforma b) Dato c) Línea d) Aplicación
2.- Tipo de dato que permite que una variable pueda almacenarlo como un único valor
de ese único tipo.
a) Simple b) Estructurado c) Compuesto d) Dinámico
3.- Dato que permiten que una variable pueda almacenarlos como más de un valor, dato
o tipo de dato.:
a) Compuesto b) Abstracto c) Libre d) Simple
4.- Indica cuál de los siguientes tipos de datos es estructurado
a) Entero b) Carácter c) Cadena d) Real
5.- Indica cuál de los siguientes datos es un tipo de dato simple
a) Vector b) Carácter c) Cadena d) Matriz
6.- Se define como una colección finita, homogénea y ordenada de elementos.
a) Vector b) Matriz c) Árbol d) Grafo
7.- Especifica cuántos elementos tendrá el arreglo y además de qué modo podrán
recuperarse esos componentes.
a) Nombre b) Límite inferior c) Índice d) Casilla
8.- Es la operación que permite escribir un valor en un vector
a) Lectura b) Asignación c) Eliminación d) Búsqueda
9.- Es una operación de vital importancia cuando se manipulan grandes conjuntos de
datos que consiste en localizar un elemento
a) Lectura b) Asignación c) Eliminación d) Búsqueda
10.- Método de ordenación que consiste en buscar el menor elemento del vector y
colocarlo en la primera posición. Luego el segundo elemento más pequeño en la
siguiente posición y así sucesivamente hasta lograr la ordenación competa del vector.
47
48
II
Desarrolla una aplicación
con estructuras de datos
utilizando un lenguaje de
programación estructurada
Genéricas:
4. Escucha, interpreta y emite mensajes pertinentes en distintos contextos mediante la utilización de
medios, códigos y herramientas apropiados.
5. Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos.
6. Sustenta una postura personal sobre temas de interés y relevancia general, considerando otros puntos
de vista de manera crítica y reflexiva.
8. Participa y colabora de manera efectiva en equipos diversos.
Competencias Disciplinares:
CE3. Identifica problemas, formula preguntas de carácter científico y plantea las hipótesis necesarias para
responderlas.
50
A continuación, se te presenta una serie de cuestionamientos, responde a cada uno de
ellos subrayando la respuesta correcta.
51
Desarrolla el código haciendo uso del paradigma de programación estructurada
Identifica los conceptos básicos de programación estructurada
En el grupo con tu maestro, realiza una lluvia de ideas para responder los siguientes
cuestionamientos:
1. ¿Qué es programación?
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
2. ¿Qué es la programación estructurada?
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
3.¿Consideras importante la programación estructurada, por qué?
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
4. Menciona 2 lenguajes de programación estructurada
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
52
Programación estructurada
Es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo
de un programa de computadora recurriendo únicamente a subrutinas y tres estructuras básicas
con las cuales se pueden escribir todos los programas y aplicaciones posibles.
Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, estas
pueden ser construidas mediante las tres básicas siguientes:
Secuenciales:
Selectivas:
Repetitivas:
Son estructuras que repiten una secuencia de instrucciones un número determinado de veces,
lo cual se denominan bucles y se denomina iteración al hecho de repetir la ejecución de una
secuencia de acciones.
53
La programación estructurada permite que los programas se escriban en pseudocódigo,
independientemente del lenguaje de la máquina, cercano al natural, convertible en cualquier
lenguaje de programación.
Orígenes de la programación estructurada
54
Considerando la información anterior elabora un cuadro sinóptico acerca de la
programación estructurada que incluya: concepto, orígenes, ventajas y desventajas.
55
Lenguajes de programación utilizados en programación estructurada
El principio de programación estructurada se puede aplicar a casi todos los lenguajes de
programación comunes. Sin embargo, los lenguajes de procedimiento ofrecen aquí claras
ventajas. Además, con el establecimiento de la programación estructurada, se han desarrollado
varios otros lenguajes de programación que son particularmente adecuados para el uso de este
paradigma de programación. Los representantes populares son Ada, ALGOL, C y C ++, C # ( C
Sharp ), COBOL, Fortran, Java, Pascal, Python o Visual Basic.
Completa la siguiente tabla anotando el nombre y la definición de cada uno de los lenguajes que
se indican.
Logotipo Nombre Definición
56
Conoce las diferentes estructuras de control y ejemplos de su aplicación
En el grupo con tu maestro, realiza una lluvia de ideas para responder los siguientes
cuestionamientos:
1. ¿Qué es pseudocódigo?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
2. ¿Qué es una estructura de control?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
3.¿Para qué se utilizan las estructuras de control?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
4. Menciona los 3 tipos de estructuras de control
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
57
Estructuras de control
Al programar de forma lógica y clara podemos utilizar estructuras de control, las cuales nos
permiten modificar el flujo de ejecución de las instrucciones de un programa y nos permiten
resolver problemas con cualquier grado de dificultad, estas estructuras poseen las siguientes
características:
Tienen un único punto de entrada y un único punto de salida.
Se compone de sentencias o de otras estructuras de control.
Tales características permiten desarrollar de forma muy flexible todo tipo de programas aun
cuando sólo existen tres tipos fundamentales de estructuras de control.
Estructuras Secuenciales
Es la más sencilla de todas, simplemente indica al procesador que debe ejecutar de forma
consecutiva una lista de acciones (que pueden ser, a su vez, otras estructuras de control); para
construir una secuencia de acciones basta con escribir cada acción en una línea diferente.
También se puede realizar escribiendo varias acciones en la misma línea, pero utilizando el punto
y coma, ;, como separador. Sin embargo, esta última notación es desaconsejable puesto que
puede llegar a hacer el código bastante difícil de leer.
inicio
sentencia1;
sentencia2;
…
sentenciaN;
fin
58
A continuación, se muestran dos ejemplos de pseudocódigos utilizando estructuras secuenciales.
Programa que solicite 2 números y nos muestre el resultado de sumar dichos números.
Programa suma;
Var
entero num1, num2, suma;
Inicio
escribir “Introduce primer número:”;
leer num1;
escribir “Introduce segundo número:”;
leer num2;
suma=num1+num2;
escribir suma;
fin
Programa conversión;
Var
entero metros, cm;
Inicio
escribir “Introduce cantidad en metros:”;
leer metros;
cm=metros*100;
escribir cm;
fin
59
Programa que calcule el convierta una cantidad de dólares a peso. Deberá consultar
el tipo de cambio.
Estructuras Selectivas
Son utilizadas cuando es necesario tomar decisiones basadas en ciertos hechos y actuar en
consecuencia. Estas estructuras indican que, para que cierta parte del programa se ejecute,
deben cumplirse ciertas premisas. Dependiendo del número de condiciones que existan, pueden
darse varios tipos de estructuras selectivas: simples, dobles y múltiples.
si (condición)
sentencia1;
sentencia2;
fin_si
60
A continuación, se muestra un ejemplo de pseudocódigo utilizando estructura selectiva simple.
Programa que solicite 2 números y nos muestre el resultado de sumar dichos números.
Programa comparacion;
Var
entero x, z;
Inicio
escribir "Dime número:";
leer n1;
escribir "Dime número:";
leer n2;
si( n1> n2 )
escribir "Verdadero";
fin_si
fin
61
A continuación, se muestra un ejemplo de pseudocódigo utilizando estructura selectiva
compuesta.
62
Programa que solicite dos números diferentes, los compare y escriba cual es el mayor de
dichos números.
63
Estructuras Repetitivas
Permiten realizar una tarea una y otra vez hasta que se cumpla una determinada condición, dicha
tarea viene definida por un conjunto de sentencias agrupadas en un bloque. Las sentencias
iterativas son:
- Estructura Desde
Esta estructura ejecuta las acciones del cuerpo del bucle un número especificado de veces, y de
modo automático controla el número de iteraciones o pasos.
64
- Estructura mientras
El bloque de sentencias que le siguen se ejecuta siempre que la condición sea verdadera tal
como se ve en la figura. Su forma general es:
mientras (condición)
sentencia1;
sentencia2;
sentenciaN;
Fin_mientras
Programa que cuenta los números positivos introducidos. El ciclo se continuará ejecutando
mientras no se introduzca cero o un número negativo
65
- Estructura repetir
La estructura repetir cumple la misma función que la estructura mientras. La diferencia está en
que la estructura mientras comprueba la condición al inicio y repetir lo hace al final. Es por ello
que la estructura repetir se ejecuta por lo menos una vez.
hacer
sentencia1;
sentencia2;
sentenciaN;
mientras (condición)
Programa que realiza la suma de los números introducidos. El ciclo se termina cuando se
introduce un numero 0
66
Aplica el paradigma de la programación estructurada para la creación de vectores
y matrices
En el grupo con tu maestro, realiza una lluvia de ideas para responder los siguientes
cuestionamientos:
67
Creación y asignación de valores de un vector
Los vectores son un tipo de estructura de control. Son, de hecho, una estructura de una sola
dimensión y forman parte de la amplia variedad de estructuras de datos siendo además una de
las principales y más útiles estructuras que podremos tener como herramienta de programación.
Los vectores o arrays o arreglos de una dimensión, son utilizados para almacenar múltiples
valores en una única variable. En un aspecto más profundo, permiten almacenar muchos valores
en posiciones de memoria continuas, lo cual permite acceder a un valor u otro de manera rápida
y sencilla. Estos valores pueden ser números, letras o cualquier tipo de variable que deseemos
incluso tipos de datos complejos.
- Declaración de vectores
Para declarar un vector, se deben seguir las mismas normas básicas que se siguen para declarar
una variable cualquiera, con un pequeño cambio en la sintaxis.
Para declarar un vector, necesitaremos saber el tipo de los datos que irán al interior de este, es
decir, serán número enteros, o número decimales o cadenas de texto, etc., necesitamos también,
un nombre para el vector y un tamaño máximo.
tipo_de_dato nombre_del_vector[tamaño];
Ejemplos:
entero edad[20];
decimal estatura[50];
68
- Inicialización de vector
En cuanto tenemos declarado un vector, es posible asignarle valores, evidentemente estos
valores deben coincidir con el tipo de dato que le asignamos a dicho vector.
A continuación, se muestran 2 ejemplos de cómo inicializar un vector:
decimal vector2[3];
vector2[0] = 1;
vector2[1] = 3;
vector2[2] = 10;
int edades[10];
desde i = 0 hasta 0 hacer incremento 1
escribir “Introduce edad”;
leer edades[ i ];
fin_desde
69
- Obtener el valor de un elemento del vector
Es muy común el caso en el que tenemos un vector con una enorme cantidad de elementos, sin
embargo, de todos estos elementos, solo nos interesa uno en especial y sabemos cuál es su
posición o índice, si es así, es bastante sencillo obtener el valor de este:
Entonces, para acceder a un valor específico conociendo el índice del elemento, solo basta con
escribir dicho índice entre los corchetes "[ ]", el índice de un vector comienza desde 0, así por lo
tanto en un vector de 5 elementos (como el del ejemplo), el último elemento está en el índice 4
y el primer elemento en el índice 0.
La anterior, es una forma de acceder de forma individual a un elemento de un vector, para
recuperar todos los elementos de un vector de forma simple se hace un recorrido del vector.
- Recorrido de un vector
Para obtener todos los datos que se encuentran al interior de un vector, es necesario recorrer el
vector, para recorrerlo, se usa casi siempre un ciclo desde, en algunos casos más específicos
un ciclo mientras, pero generalmente el ciclo desde es el ideal para esto, dado que conocemos
el tamaño del array.
La lógica de este procedimiento es la siguiente, el ciclo desde comenzara desde 0 e ira hasta el
tamaño del vector, de modo que la variable de control que generalmente llamamos "i", será la
que va a ir variando entre 0 y el tamaño del array, de esta forma al poner la i al interior de los
corchetes, estaremos accediendo al valor de cada casilla del vector y podremos hacer lo que sea
necesario con dicho valor.
Por ejemplo:
En este ejemplo se accede a cada uno de los elementos del vector de edades, un elemento por
cada vuelta que da el ciclo se accede a cada elemento poniendo entre los corchetes la variable
i, que es la que está cambiando a medida que el ciclo va girando, así estaremos accediendo a
todos los elementos e imprimiéndolos por pantalla.
70
Completa la siguiente tabla anotando un ejemplo de cada una de las operaciones con vectores
que se te solicitan.
Declaración
Inicialización
OPERACIONES CON VECTORES
Asignación de valores
Obtención de valor
Recorrido
71
Creación y asignación de valores de una matriz
Una matriz o arreglo multidimensional es una estructura de datos bastante similar a los vectores.
De hecho, una matriz no es más que una serie de vectores contenidos uno en el otro (u otros),
es decir, una matriz es un vector cuyas posiciones son otros vectores.
En términos generales, una matriz es una estructura conformada por filas y columnas, idealmente
más de dos filas y columnas, de hecho, podemos decir que, si una matriz tiene una única fila o
una única columna, entonces estamos hablando de un vector y no una matriz como tal.
La intersección de una fila y una columna de la matriz son las casillas y cada una de ellas podrá
poseer información, simple o compleja dependiendo de las necesidades.
- Declaración de matrices
Declarar una matriz en C++ es muy similar a la de un vector, se deben seguir las mismas normas
para declarar una variable, pero una vez más con un pequeño cambio en la sintaxis. Primero
necesitaremos saber el tipo de los datos que irán al interior de este (números, decimales o
cadenas de texto, etc.) necesitamos también, como siempre, un nombre para la matriz y un
tamaño máximo tanto para las filas como para las columnas.
La sintaxis para declarar una matriz es la siguiente:
Tipo_Dato nombre_Matriz[filas][columnas];
Ejemplos:
entero articulo[10][5];
72
- Inicialización de una matriz
Una vez declarada la matriz, es posible asignarle valores, evidentemente estos valores deben
coincidir con el tipo de dato que le asignamos a dicha matriz. Por ejemplo:
Es una matriz de tipo int de dos filas y dos columnas inicializada con diferentes valores. El valor
inicial corresponde a la casilla 0,0 (fila cero, columna cero) y tiene el valor de 1, en la fila cero
columna uno (0,1) tenemos el valor de 2, en la (1,0) el valor de 4 y finalmente en l(1,1) el valor
de 5.
int datos[2][3];
desde 0 = 1 hasta 1 hacer incremento 1
desde j = 0 hasta 2 hacer incremento 1
escribir “Introduce el valor:”;
leer datos[ i,j ];
fin_desde
fin_desde
Por ejemplo:
73
Como podemos ver, para acceder a un valor específico conociendo el índice de la casilla, solo
basta con escribir dicho índice entre los corchetes [ ][ ], recuerda que el índice comienza desde
cero, así por lo tanto en una matriz de vector de 2 por 2 (como el ejemplo), el último elemento
está en el índice 1 y el primer elemento en el índice 0.
El ejemplo anterior, es una forma de acceder de forma individual a un elemento de una matriz,
para recuperar todos sus elementos se hace un recorrido de la matriz.
Por ejemplo:
En estos ejemplos se está accediendo a cada una de las casillas de la matriz, fila por fila y
columna por columna.
Se accede a cada elemento poniendo entre los corchetes la variable i y j, que son las que están
cambiando a medida que los ciclos van "girando", así estaremos accediendo a todos los
elementos e imprimiéndolos por pantalla.
74
Completa la siguiente tabla anotando un ejemplo de cada una de las operaciones con matrices
que se te solicitan.
Declaración
Inicialización
OPERACIONES CON MATRICES
Asignación de valores
Obtención de valor
Recorrido
75
Emplea las estructuras de datos mediante un lenguaje de programación
Identifica algunas generalidades del lenguaje de programación C++
En el grupo con tu maestro, realiza una lluvia de ideas para responder los siguientes
cuestionamientos:
Lenguaje de programación
La programación es el proceso de análisis, diseño,
implementación, prueba y depuración de un algoritmo,
a partir de un lenguaje que compila y genera un código
fuente ejecutado en la computadora.
Por tanto, un lenguaje de programación es una
herramienta que permite desarrollar software o
programas para computadora. Son empleados para
diseñar e implementar programas encargados de
definir y administrar el comportamiento de los dispositivos físicos y lógicos de una computadora.
A grandes rasgos, un lenguaje de programación se conforma de una serie de símbolos y reglas
de sintaxis y semántica que definen la estructura principal del lenguaje y le dan un significado a
sus elementos y expresiones.
Existen muchos lenguajes de programación como C, C++, C#, Visual Basic, Python entre otros
que son utilizados para la programación estructurada, sin embargo, nos enfocaremos en C++,
por ser el que será utilizado en este curso.
76
Lenguaje C++
Fue diseñado a mediados de la década de 1980 por Bjarne Stroustrup.
C++ es una evolución del lenguaje C. La intención de su creación fue
extender al exitoso lenguaje de programación C con mecanismos que
permitan la manipulación de objetos. En ese sentido, C++ es un lenguaje
híbrido ya que abarca dos paradigmas de la programación: la estructurada y
la orientada a objetos.
C++ puede ser utilizado en múltiples entornos de desarrollo integrado (IDE),
tales como: Visual Studio, Netbeans, Code::Blocks, entre otros.
Para el desarrollo de este curso se utilizará Code::Blocks por lo que se describirá brevemente a
continuación:
Code::Blocks
Code::Blocks es un entorno de desarrollo (IDE) libre para C/C++ creado para
suplir las más importantes necesidades de los usuarios. Fue diseñado para ser
altamente configurable y extensible.
Code::Blocks puede ser extendido con plugins, mejorando así su funcionalidad.
Es muy amigable, y sencillo de instalar.
77
A continuación, se muestra un ejemplo que contiene la estructura básica de un programa
Observaciones:
1. En el paso 5 para declarar una variable su sintaxis es:
tipo_dato nombre_variable;
En caso de que desee inicializarse deberá agregar el carácter = y el valor de la variable:
tipo_dato nombre_variable = valor;
Los tipos de datos más comunes utilizados en C++ son: int, float, double, char, bool, etc.
78
Ordena el siguiente código anotando el número que corresponde y el nombre del paso a
realizar.
return 0;
1 #include <iostream>
int main()
79
Realiza el código necesario para resolver los siguientes problemas:
80
Realiza las operaciones de inserción, búsqueda, ordenación y eliminación de
vectores y matrices utilizando el lenguaje C++
En el grupo con tu maestro, realiza una lluvia de ideas para responder los siguientes
cuestionamientos:
A continuación, se muestran las instrucciones necesarias para insertar valores en un vector con
5 elementos:
81
Para insertar elementos en una matriz se utilizan 2 ciclos for anidados, el primero de ellos para
recorrer las filas y el segundo para las columnas.
A continuación, se muestra un programa que permite insertar elementos en una matriz de 2x2 y
mostrar los elementos que contiene al final.
Inserción
82
Búsqueda de elementos en un vector
Uno de los tipos de búsqueda de elementos en un vector es la búsqueda secuencial, la cual
consiste en recorrer secuencialmente un vector desde el primer elemento hasta el último y
comprobar si alguno de los elementos del vector contiene el valor buscado, es decir, comparar
cada elemento del vector con el valor buscado.
Dado que el vector no está en ningún orden particular, existe la misma probabilidad de que el
valor se encuentre, ya sea en el primer elemento como en el último. Por tanto, en promedio, el
programa tendrá que comparar el valor buscado con la mitad de los elementos del vector.
Búsqueda
Como podemos ver, para realizar una búsqueda dentro del programa se hace un recorrido con el
ciclo for y se realiza una comparación de cada uno de sus elementos con el elemento buscado,
si lo encuentra utiliza una variable para indicarlo y otra variable para guardar el índice del vector
en el que encontró el elemento para indicar su posición.
Si se desea realizar una búsqueda en una matriz, también puede realizarse una búsqueda
secuencial, solo deberá agregarse un ciclo dentro del ciclo con el que ya se contaba para que
83
realice la búsqueda de las columnas. Esto es similar a la diferencia que hay entre insertar un
elemento en un vector y una matriz, se dispone de dos ciclos en lugar de uno.
Búsqueda
84
Ordenación de elementos
Como ya sabemos, existen varios métodos de ordenación de vectores, uno de ellos es el método
de ordenamiento de burbuja también conocido como método de intercambio directo.
Para realizar este ordenamiento se deben utilizar 2 ciclos for, uno de ellos estará dentro el otro,
es decir será anidado, y su función será revisar cada elemento de la lista que va a ser ordenada
con el siguiente e intercambiarlos de posición si están en el orden equivocado. El otro for se
utilizará para revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo
cual significa que la lista está ordenada.
Ordenamiento
Burbuja
85
Otro método de ordenamiento es el método de inserción el cual considera un elemento a la vez
insertándolo en su lugar correspondiente entre aquellos que ya han sido considerados
(manteniéndolos ordenados). El elemento se inserta moviendo los elementos superiores una
posición a la derecha y ocupando la posición vacante.
Ordenamiento
por inserción
Como se puede observar se toma uno por uno los elementos del vector y se recorre hacia su
posición con respecto a los anteriormente ordenados. Así empieza con el segundo elemento y lo
ordena con respecto al primero. Luego sigue con el tercero y lo coloca en su posición ordenada
con respecto a los dos anteriores, así sucesivamente hasta recorrer todas las posiciones del
arreglo.
86
Eliminación de elementos
Para eliminar un elemento primero debe buscarse, una vez encontrado se elimina y
posteriormente se recorren todos los elementos del vector.
Eliminación
87
Realiza el código necesario para realizar lo siguiente:
Crea un vector de tipo float de 10 elementos. Posteriormente inserta elementos
dentro de él y muestra estos elementos.
88
Ordena el vector utilizando el método de inserción.
89
A continuación, se te presenta una serie de cuestionamientos, responde a cada uno de
ellos subrayando la respuesta correcta.
90
INSTRUMENTOS DE EVALUACION
Observaciones:
91
Lista de cotejo de evaluación de un cuadro sinóptico
Observaciones:
Contenido técnico
Calificación:
Observaciones:
92
REFERENCIAS BIBLIOGRAFICAS.
Márquez, G. (2014) Introducción a la Programación Estructurada en C. España. Addison
Wesley Collins,
J. (2011). Programación 1 - Lenguaje C/C++ Alec
FUENTES CONSULTADAS.
https://pythones.net/tipos-de-datos-estructurados-en-python/
http://webdelprofesor.ula.ve/ingenieria/eliana/prog/unidad5.pdf
https://medium.com/techwomenc/estructuras-de-datos-a29062de5483
https://www.programarya.com/Cursos/C++/Estructuras-de-Datos/Matrices
https://docs.microsoft.com/es-es/dotnet/csharp/programming-guide/arrays/single-
dimensional-arrays
https://elvex.ugr.es/decsai/c/apuntes/intro.pdf
https://es.wikipedia.org/wiki/Programaci%C3%B3n_estructurada
https://www.monografias.com/trabajos/progestructu/progestructu.shtml
https://sites.google.com/site/emarinprogramacion/home/8---programacion-estructurada
https://www.marketingandweb.es/marketing/lenguajes-de-programacion-mas-usados/
https://www.lifeder.com/programacion-estructurada/
https://es.wikipedia.org/wiki/SQL#SELECT_(Seleccionar)
https://profvanessaborjas.wordpress.com/2013/04/07/ejemplo-de-programacion-
estructurada-uso-de-funciones/
https://sites.google.com/site/programacionmodularbycentecon/home/programacion-
estructurada
https://www.programarya.com/Cursos/C++/Estructuras-de-Datos/Arreglos-o-Vectores
https://programas.cuaed.unam.mx/repositorio/moodle/pluginfile.php/1023/mod_resource
/content/1/contenido/index.html
programacion. Tema 4 estructura basica de un programa - Tema 4. Estructura básica de
un programa La - StuDocu
https://www.studocu.com/es-mx/document/universidad-autonoma-de-
tamaulipas/herramientas-computacionales/estructura-basica-de-un-programa/3130019
93