Hermosillo, Sonora, Enero Del 2023

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 93

Hermosillo, Sonora, Enero del 2023

Departamento de Desarrollo Curricular

María Soledad Pineda Vilches


Luis Salazar López
Olivia Jiménez Celis

Ma. Asunción Santana Rojas


Isabel Olea Guerrero
Ana Rocio Villa Quintal

Elisa Sofía Valdez Alcorn

María de la Luz Martínez Gocobachi

María de la Luz Martínez Gocobachi


Mtra. Gracia Alicia Anduro Grijalva
Directora General

Mtra. María de la Luz Martínez Gocobachi


Directora Académica

Lic. Delia Sugey Cruz Montaño


Directora de Finanzas

Lic. Angélica Murguia Romero


Directora de Planeación

Lic. José Alejandro Salido Orcillo Henonin


Director de Vinculación

Lic. Fabiola Campillo Navarro


Directora Administrativa
Formación Profesional Programación

10 5
Submódulo III: Aplica Estructuras de Datos con un Lenguaje de Programación.

Competencia de la asignatura: Reconocer y desarrollar estructuras de datos basados


en una aplicación.

Competencias Competencia del


Unidad
de la unidad tema Competencias del subtema

1.1 Describe los 1.1.1 Identifica los tipos de datos


tipos de datos y las utilizados en programación para la
estructuras de solución de problemas reales
datos para la 1.1.2 Define estructuras de datos
solución de para la solución de problemas
Reconoce
problemas reales. reales.
Estructuras
1 de Datos 1.2 Describe las 1.2.1 Identifica las operaciones
estructuras de básicas con vectores (inserción,
datos para la recorrido y eliminación).
solución de
1.2.2 Identifica las operaciones
problemas reales,
básicas con matrices
utilizando vectores
y matrices.
2.1.1 Identifica los conceptos
básicos de programación
estructurada
2.1 Desarrolla el
Desarrolla código haciendo 2.1.2 Conoce las diferentes
una uso del paradigma estructuras de control y ejemplos
aplicación de programación de su aplicación
con estructurada
2.1.3 Aplica el paradigma de la
estructuras de programación estructurada para la
2 datos creación de vectores y matrices
utilizando un
lenguaje de 2.2.1 Identifica algunas
programación 2.2 Emplea las generalidades del lenguaje de
estructurada programación
estructuras de
datos mediante un 2.2.2 Realiza las operaciones de
lenguaje de inserción, búsqueda, ordenación y
programación eliminación de vectores y matrices
utilizando el 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.

Este libro es de gran utilidad en tu proceso de aprendizaje, contiene actividades que


deberás realizar de manera individual mientras que, en algunas otras, colaborarás
con otros compañeros formando equipos de trabajo bajo la guía de tu profesor.

El libro está estructurado en dos unidades, en la primera unidad se describen los


conceptos básicos y elementos de las estructuras de datos, mientras que en la
segunda unidad se desarrollan las estructuras de datos en un lenguaje de
programación.

En el contenido de estas unidades, se relaciona la teoría con la práctica, a través


de lecturas, ejercicios, actividades de aprendizaje, instrumentos de evaluación y
prácticas de laboratorio de cómputo, encaminados a apoyarte en el desarrollo de
las competencias requeridas para los alumnos que cursan esta asignatura.

Seguros de que harás de este material, una herramienta de aprendizaje, te


invitamos a realizar siempre tu mayor esfuerzo y dedicación para que logres adquirir
las bases necesarias, para tu éxito académico.

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.

Se denomina dato a cualquier objeto que puede ser


manipulado por la computadora. Un dato puede ser un
carácter leído de un teclado, información almacenada en un
disco, un número que se encuentra en la memoria, etc. Los
distintos tipos de datos se representan en diferentes formas.

Por lo anterior, podemos entender que un dato puede significar


un número, una letra, un signo ortográfico o cualquier símbolo
que represente una cantidad, una medida, una palabra o una descripción.

La importancia de los datos está en su capacidad de asociarse dentro de un contexto para


convertirse en información.

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.

Cuando hablamos de programación, la estructura de


datos está representada por una forma determinada que
tenemos de organizar los datos en un equipo informático
para que podamos utilizarlos de la manera más efectiva
posible.

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.

 No están compuestos por otra estructura;


 Ocupan solo una casilla de memoria,
 Una variable simple hace referencia a un único valor a la vez, (valores: enteros, reales y
carácter).

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.

x = ‘Dante’ Porque, aunque ‘Dante’ parezca un solo dato, no lo es, es una


cadena de caracteres. Como podría ser también un conjunto de
x = “Himno Nacional” números, obviamente es un conjunto. Entonces no es un único
valor.

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.

Tipos de datos estructurados:

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.

Podemos encontrar diferentes tipos de datos estructurados, que serán almacenados en


diferentes tipos de variables estructuradas o complejas. Y que a su vez pueden clasificarse
en mutables (se pueden modificar en tiempo de ejecución) o inmutables (no se pueden modificar
en tiempo de ejecución). Por mencionar algunos ejemplos:

 Cadena de caracteres (String),


 Arreglos,
 Registros.

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.

Tipos de estructura de datos

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”.

Es aquella forma de asignación de espacio que no varía durante la ejecución de un programa.


Por lo general se debe indicar al inicio del programa cuantos espacios requiere esta estructura
para ubicar el espacio necesario solicitarlo y proporcionarlo.

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.

 Ordenada: se puede determinar cuáles son el primero, el segundo, el tercero, ... y el


enésimo elemento.

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.

 El índice del elemento.

Se va a construir un arreglo tipo Cadena, de un grupo de amigos, que contenga el nombre y


teléfono de los amigos, se quiere obtener el nombre de “Martin” y su número telefónico
respectivo.

Elemento Guillermo Alejandra Jovanna Martin Olivia


“Amigos” 6621274245 6623637854 6624411853 6642763944 6626691185
Índice 0 1 2 3 4

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.

Estructuras de datos 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.

No hace un buen uso de la memoria y provoca un desperdicio


de memoria. Los elementos de datos se visitan
secuencialmente, donde solo se puede llegar directamente a un
elemento.

Los ejemplos incluidos en la estructura de datos lineales son:


pila, cola, lista enlazada, etc.

Las listas se pueden definir como un conjunto de elementos de


datos de números variables; La pila y la cola son también una
colección ordenada de los elementos, pero hay una condición especial donde la pila sigue el
orden LIFO (“Last in, First Out” último en entrar, primero en salir) y emplear la cola FIFO (“First
In, First Out” primero en entrar, primero en salir) para insertar y eliminar los elementos.

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.

Los Árboles se caracterizan por almacenar sus


nodos en forma jerárquica y no en forma lineal
como las Listas Ligadas, Colas, Pilas, etc.

Cada elemento sólo puede estar enlazado con su


predecesor y sus sucesores. Puede tener varios
sucesores.

Para comprender mejor que es un árbol, es


necesario conocer cómo está estructurado:

 Nodos: Se le llama Nodo a cada elemento que contiene un Árbol.

 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.

Un grafo es un conjunto de puntos y un conjunto de


líneas, con cada línea se une un punto a otro. Los
puntos se llaman los nodos del grafo, y las líneas se
llaman aristas.

Una arista está determinada por los nodos que


conecta. Un grafo está completamente definido por
sus conjuntos de nodos y aristas.

La posición real de estos elementos en la página no


tiene importancia. Algunas aristas pueden conectar
un nodo a sí mismo, a estas aristas se les llama
bucles.

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 elementos de datos se adjuntan de manera adyacente en la estructura de datos lineal,


lo que significa que solo dos elementos se pueden vincular a otros dos elementos, mientras que
este no es el caso en la estructura de datos no lineal donde un elemento de datos se puede
conectar a muchos otros elementos.

 Las estructuras de datos lineales se implementan fácilmente en relación con la estructura


de datos no lineales.

 Un único nivel de elementos se incorpora en la estructura de datos lineal. A la inversa, la


estructura de datos no lineales involucra múltiples niveles.

 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.

 La memoria se utiliza de manera


eficiente en la estructura de datos no
lineal, donde la estructura de datos lineal
tiende a desperdiciar la memoria.

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:

<tipo> <nombre del arreglo> [tamaño]

Las operaciones válidas en arreglos son las siguientes:

 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.

Supongamos que se desea escribir los componentes del arreglo


unidimensional Nombres[200] en forma consecutiva. Los pasos a seguir son:

String Nombres[200]

Hacer Desde C=0 Hasta 199


Nombres[C] ← C
Fin Desde

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 conoce los espacios del vector que están libres.)

Si no se sabe si el vector tiene espacios disponibles, primero debe determinarse esto antes de
intentar añadir elementos al vector:

desde i ← 1 hasta n hacer


si (edades[i]=-1) entonces
escribir (‘Introduzca una edad:’)
leer(edades[i])
si no
cont ← cont + 1
fin_si
fin desde
si (cont=n) entonces
escribir (‘El vector no tiene espacio para añadir más elementos’)
fin si

25
 Inserción

Es la operación de agregar un nuevo elemento al final del vector.


La única condición necesaria para esta operación consistirá en la comprobación de que existe
espacio suficiente para el nevo elemento, dicho de otra manera, que el vector no contenga todos
los elementos con que fue definido.

Se tiene un vector de 8 elementos que contiene nombres ordenados alfabéticamente y se desea


insertar dos nuevos nombres: Fernando y Luis.

0 Ana 0 Ana 0 Ana


1 Carlos 1 Carlos 1 Carlos
2 Gerardo 2 Fernando 2 Fernando
3 Lorena 3 Gerardo 3 Gerardo
4 Marcos 4 Lorena 4 Lorena
5 5 Marcos 5 Luis
6 6 6 Marcos
7 7 7

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.

La operación de eliminación el último elemento de un vector no representa ningún problema. El


borrado de un elemento del interior del vector provoca el movimiento hacia arriba de los
elementos inferiores a él para reorganizar el vector.

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.

Es el proceso de reorganizar un conjunto de objetos en una cierta secuencia de acuerdo con un


criterio especificado. En general, el objetivo de este proceso es facilitar la posterior búsqueda de
elementos en el conjunto ordenado.

Existen muchos algoritmos para ordenar los elementos de un arreglo.

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.

La ordenación, es la operación de organizar un conjunto de datos en algún orden o secuencia


específica, tal como creciente o decreciente para datos numéricos o alfabéticamente para datos
de tipo carácter o cadena de caracteres.

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.

A continuación, se explican los principales métodos de ordenamiento:

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.

En cada iteración se encuentra el elemento que corresponde a una posición.

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].

En síntesis, el método de intercambio cosiste en implementar un recorrido para el vector donde


para cada elemento se hace un segundo ciclo en el que se compara éste con todos los elementos
que le siguen y cuando no estén ordenados se hace un intercambio.
Cada iteración del ciclo externo ordena una posición del vector.

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.

1 Entero[] intercambio(entero v[], Entero n)


2 Entero i, j, aux
3 Para i = 1 hasta n-1 hacer
4 Para j = i+1 hasta n hacer
5 Si v[i] > v[j] entonces
6 aux = v[i]
7 v[i] = v[j]
8 v[j] = aux
9 Fin si
10 Fin para
11 Fin para
12 Retornar v[]
13 Fin intercambio

 Método de ordenamiento por selección

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.

1 Entero[] seleccion(entero v[], entero n)


2 Entero: i, j, posmenor, aux
3 Para i = 1 hasta n-1 hacer
4 posmenor = i
5 Para j = i+1 hasta n hacer
6 Si v[posmenor] > v[j] entonces
7 posmenor = j
8 Fin si
9 Fin para
10 aux = v[i]
11 v[i] = v[posmenor]
12 v[posmenor] = aux
13 Fin para
14 Retornar v[]
15 Fin selección

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

En el siguiente recorrido se busca el siguiente elemento mas pequeño y se realiza la misma


acción que en el recorrido anterior.
El siguiente recorrido quedaría de la siguiente manera:

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

 Método de ordenamiento burbuja

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.

La técnica de ordenamiento conocida como burbuja o burbujeo consiste en comparar el


primer elemento con el segundo y si no cumplen el criterio de orden que se está aplicando se
intercambian, acto seguido se pasa a comparar el segundo elemento con el tercero y si no están
ordenados se intercambian también, luego se compara el tercero con el cuarto y después el
cuarto con el quinto y así sucesivamente hasta comparar los elementos v[n-1] con v[n].

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.

1 Para j = i hasta n-i hacer


2 Si v[j] > v[j+1] entonces
3 aux = v[j]
4 v[j] = v[j+1]
5 v[j+1] = aux
6 Fin si
7 Fin para

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

 Método de ordenamiento por inserción

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

elemento de la tercera posición, se lo copia a la variable auxiliar y se compara con el elemento


de la izquierda, como no están ordenados se desplaza el contenido de la posición dos a la
posición tres. Se compara con el dato de la posición uno y se encuentra que este no está
ordenado, se desplaza hacia la derecha. Como no hay más elementos por la izquierda se
deposita en la posición uno el contenido de la variable auxiliar.

En resumen, se trata de tomar el i-ésimo elemento y ubicarlo en el lugar que le corresponde en


el vector ordenado, para ello se libera el espacio que éste ocupa copiándolo a una variable auxiliar
y se desplaza hacia la derecha los elementos mayores a éste, de manera que se abre un espacio
justo en la posición que debe quedar.

Para ordenar todo el vector solo hay que utilizar la siguiente instrucción:

1 Entero[] insercion(entero v[], entero n)


2 Entero: aux, i , j
3 Para i = 2 hasta n hacer
4 j=i–1
5 aux = v[i]
6 Mientras v[j] > aux y j >= 1 hacer
7 v[j+1] = v[j]
8 j = j -1
9 Fin mientras
10 v[j+1] = aux
11 Fin para
12 Retornar v[]
13 Fin inserció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

 Método de ordenamiento Shell

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.

Para analizar el funcionamiento de este algoritmo considérese un vector de 10 elementos.


Entonces:

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.

Comparación Resultado Intercambio


V[1] > v[6] Verdadero Si
V[2] > v[7] Verdadero Si
V[3] > v[8] Falso No
V[4] > v[9] Falso No
V[5] > v[10] Falso No

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.

1 Entero[] shell(entero v[], entero n)


2 Entero: aux, salto, i , j
Lógico: seguir
3 salto = n/2
4 Mientras salto >= 1 hacer
5 Para j = (1 + salto) hasta n hacer
6 i = j – salto
7 aux = v[j]
8 seguir = verdadero
9 Mientras i > 0 y seguir = verdadero hacer
10 Si aux < v[i] entonces
11 v[i + salto] = v[i]
12 i = i – salto
13 Si no
14 seguir = falso
15 Fin si
16 Fin mientras
17 v[i + salto] = aux
18 Fin para
19 Salto = salto/2
20 Fin mientras
21 Retornar v[]
22 Fin 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

Después el salto se reduce a la mitad quedando de 1 y se realizan iteraciones de 1 en 1 elemento,


quedando el vector ordenado:

3 7 8 11 12 13 15 17 20 22 Vector
ordenado

 Búsqueda.

La búsqueda es una operación de vital importancia cuando se


manipulan grandes conjuntos de datos, donde localizar un
elemento no es tarea fácil; para buscar un dato en un vector
existen dos métodos: búsqueda secuencial o lineal y
búsqueda binaria.

 Búsqueda secuencial o lineal


Este método consiste en tomar un dato clave que identifica al
elemento que se busca y hacer un recorrido a través de todo
el arreglo comparando el dato de referencia con el dato de
cada posición.

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.

La búsqueda terminará en el evento de encontrar una coincidencia en los números o si al llegar


al final de la lista no se encontró identificación igual al número buscado, en cuyo caso se concluye
que el dato no existe en el vector.

 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).

 La primera iteración toma como espacio de búsqueda el vector completo y se ubica en el


elemento de la mitad. Se averigua si la clave está en el elemento del centro.

 Si el dato no está en el centro se define un nuevo espacio de búsqueda correspondiente


a la mitad inferior del vector, dado que la clave es menor que el elemento del centro.

 Se calcula nuevamente el centro y se repiten las operaciones hasta encontrar el valor.

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).

Los arreglos de varias dimensiones se dividen en dos grupos:


• Arreglos bidimensionales: tablas o matrices.
• Arreglos multidimensionales.

Las matrices son arreglos de varias


dimensiones, consiste en un vector de vectores
y es por lo tanto un conjunto de elementos del
mismo tipo en el que el orden de los
componentes es significativo y en el que
necesitan especificarse dos subíndices para
poder identificar cada elemento de la matriz.

<tipo> <nombre matriz> [filas] [columnas]


Análogamente al caso de vectores, las posibles operaciones que se pueden realizar sobre una
matriz o tabla bidimensional, variando el número de índices, en este caso a dos, son: recorrido o
acceso secuencial, carga de datos, lectura, escritura, actualización, búsqueda y ordenación. A
continuación, se detallan las dos operaciones básicas lectura y escritura.

 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).

Para i de 0 a 4 con Inc = 1


Para j de 0 a 1 con Inc = 1
CargarNotas(i,j)
FinPara
FinPara

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:

Para i de 0 a 4 con Inc = 1


Para j de 0 a 1 con Inc = 1
Leer Notas(i,j)
FinPara
FinPara

 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.

El recorrido secuencial se puede hacer por filas o por columnas.

Recorrido secuencial por filas:

desde i ← 1 hasta 3 hacer


desde j ← 1 hasta 4 hacer
leer(A[i,j])
fin_desde
fin desde

45
Recorrido secuencial por columnas:

desde j ← 1 hasta 4 hacer


desde i ← 1 hasta 3 hacer
leer(A[i,j])
fin desde
fin _ desde

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.

a) Inserción b) Shell c) Intercambio d) Selección


49
 Desarrolla el código haciendo uso del paradigma de programación estructurada
 Identifica los conceptos básicos de programación estructurada
 Conoce las diferentes estructuras de control y ejemplos de su aplicación
 Aplica el paradigma de la programación estructurada para la creación de
vectores y matrices
 Emplea las estructuras de datos mediante un lenguaje de programación
 Identifica algunas generalidades del lenguaje de programación C++
 Realiza las operaciones de inserción, búsqueda, ordenación y eliminación de
vectores y matrices utilizando el lenguaje C++

50
A continuación, se te presenta una serie de cuestionamientos, responde a cada uno de
ellos subrayando la respuesta correcta.

1. Paradigma de programación en el que se puede resolver un problema recurriendo


únicamente a subrutinas y tres estructuras.
a) Orientada a b) Programación c) Programación d) Programación
objetos estructurada visual de bajo nivel
2. Estructura en la que las tareas se suceden de tal modo que la salida de una es la
entrada de la siguiente y así sucesivamente hasta el final del proceso.
a) Secuenciales b) Selectivas c) Repetitivas d) Cíclicas
3. Estas estructuras indican que, para que cierta parte del programa se ejecute, deben
cumplirse ciertas premisas.
a) Secuenciales b) Selectivas c) Repetitivas d) Cíclicas
4. Estructura en la que el bloque de sentencias que le siguen se ejecuta siempre que la
condición sea verdadera
a) Si b) Mientras c) Repetir d) Desde
5. Estructura que 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.
a) Si b) Mientras c) Repetir d) Desde
6. Tipo de estructura de control que son, de hecho, una estructura de una sola
dimensión.
a) Matriz b) Vector c) Grafo d) Árbol
7. Como se le llama al valor que representa la posición de cada uno de los elementos
de un vector.
a) índice b) Tamaño c) Dimensión d) Valor
8. Cuál de las siguientes no es una operación de vector.
a) Inserción b) Tabulación c) Inicialización d) Recorrido
9. Método de ordenación que considera un elemento a la vez insertándolo en su lugar
correspondiente entre aquellos que ya han sido considerados
a) Burbuja b) Inserción c) Selección d) Secuencial
10. Método de ordenación conocido como intercambio directo en el que se recorren
elementos y se intercambian en el orden correcto.
a) Burbuja b) Inserción c) Selección d) Secuencial

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:

Son aquellas en las que una acción (instrucción) sigue a


otra en secuencia. Las tareas se suceden de tal modo que
la salida de una es la entrada de la siguiente y así
sucesivamente hasta el final del proceso. Las estructuras
secuenciales tienen una entrada y una salida.

 Selectivas:

Se utilizan para tomar decisiones lógicas; de ahí que se


suelan denominar también estructuras de decisión o
alternativas. En las estructuras selectivas se evalúa una
condición y en función del resultado de esta se rea liza una opción u otra. Las condiciones se
especifican usando expresiones lógicas.

 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.

Una característica importante en un programa


estructurado es que puede ser leído en secuencia, desde
el comienzo hasta el final sin perder la continuidad de la
tarea que cumple el programa, lo contrario de lo que
ocurre con otros estilos de programación.
Este hecho es importante debido a que es mucho más
fácil comprender completamente el trabajo que realiza
una función determinada si todas las instrucciones que
influyen en su acción están físicamente contiguas y
encerradas por un bloque. La facilidad de lectura, de
comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control, y de
eliminar la instrucción de transferencia de control goto.

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

Surgió en la década de 1960, particularmente del trabajo


de Böhm y Jacopini, y un famoso escrito de 1968: “La sentencia
goto, considerada perjudicial”, de Edsger Dijkstra. Sus postulados
se verían reforzados, a nivel teórico, por el teorema del programa
estructurado y, a nivel práctico, por la aparición de lenguajes
como ALGOL, dotado de estructuras de control consistentes y
bien formadas.

A finales de los años 1970 surgió una nueva forma de programar


que no solamente permitía desarrollar programas fiables y
eficientes, sino que además estos estaban escritos de manera que se facilitaba su comprensión
en fases de mejora posteriores.
El teorema del programa estructurado, propuesto por Böhm-Jacopini, demuestra que todo
programa puede escribirse utilizando únicamente las tres instrucciones de control: secuenciales,
selectivas o condicionales y repetitivas o de iteración.
Solamente con estas tres estructuras 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 citadas.

Ventajas de la programación estructurada


 Los programas son más sencillos de entender.
 Los programas resultantes tendrán una estructura clara,
gracias a que las sentencias están ligadas y relacionadas entre
sí.
 La fase de prueba y depuración de los programas se optimiza.
 El costo de mantenimiento de los programas es más reducido.
 Los programas, son más rápidos de crear y los programadores
aumentan su rendimiento.

Desventajas de la programación estructurada


El principal inconveniente de este método de programación es que se
obtiene un único bloque de programa, que cuando se hace demasiado
grande puede resultar problemático su manejo; esto se resuelve
empleando la programación modular, definiendo módulos
interdependientes programados y compilados por separado (en
realidad esto no es necesario, pero es recomendable para su mantenimiento y funcionalidad).

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 que solicite una cantidad en metros y la convierta en centímetros.

Programa conversión;
Var
entero metros, cm;
Inicio
escribir “Introduce cantidad en metros:”;
leer metros;
cm=metros*100;
escribir cm;
fin

Realiza el pseudocódigo del problema que se te solicita a continuación

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.

- Estructura selectiva simple:


Si la condición es verdadera, la sentencia se ejecuta, de otro modo, se salta dicha sentencia,
continuando la ejecución del programa con otras sentencias a continuación de ésta. La forma
general de esta sentencia es:

si (condición)
sentencia1;
sentencia2;
fin_si

Si el resultado de la prueba es verdadero se ejecuta la sentencia


que sigue a continuación de la sentencia si, en caso contrario, falso,
se salta dicha sentencia, tal como se indica en la figura.

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

- Estructura selectiva doble o compuesta:


Completa la sentencia si, para realizar una acción alternativa
si (condición)
sentencia1;
si no
sentencia2;

Las dos primeras líneas indican que si la condición es verdadera se


ejecuta la sentencia 1. La palabra clave si no, significa que si la
condición no es verdadera se ejecuta la sentencia 2, tal como se ve en
la figura.
Dado que puede existir más de una sentencia en la condición se agrupan en bloques:
si (condición)
sentencia1;
sentencia2;
si no
sentencia3
sentencia4;
fin_si

61
A continuación, se muestra un ejemplo de pseudocódigo utilizando estructura selectiva
compuesta.

Programa que solicite un número distinto de 0, y escriba si dicho número es positivo o


negativo.

Programa positivo o negativo;


Var
entero num;
Inicio
escribir "Dime número:";
leer num;
si( n1>0)
escribir "Positivo";
si no
escribir “Negativo”;
fin_si
fin

Realiza el pseudocódigo de los problemas que se te solicitan a continuación utilizando


estructuras selectivas.

Programa que solicite el promedio final de un alumno en la asignatura de geometría y escriba


si el alumno está aprobado.

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.

Desde i=0 hasta 100


sentencia1;
sentencia2;
sentenciaN;
Fin_desde

A continuación, se muestra un ejemplo de pseudocódigo utilizando estructura repetitiva desde o


para.

Programa que imprima los números pares del 2 al 100.

Programa números pares;


Var
entero num;
Inicio
Desde num=2 hasta 100 incremento 2
escribir num;
fin_desde
fin

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

A continuación, se muestra un ejemplo de pseudocódigo utilizando estructura repetitiva mientras.

Programa que cuenta los números positivos introducidos. El ciclo se continuará ejecutando
mientras no se introduzca cero o un número negativo

Programa números positivos;


Var
entero num, contador;
Inicio
contador=0;
escribir “Introduce número positivo:”;
leer num;
mientras (num>0) hacer
contador=contador+1;
escribir “Introduce número positivo:”;
leer num;
fin_mientras;
escribir contador;
fin

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)

A continuación, se muestra un ejemplo de pseudocódigo utilizando estructura repetitiva repetir.

Programa que realiza la suma de los números introducidos. El ciclo se termina cuando se
introduce un numero 0

Programa suma números;


Var
entero num, suma;
Inicio
suma=0;
hacer
escribir “Introduce número:”;
leer num;
suma = suma + num;
mientras (num <> 0);
escribir suma;
fin

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:

1. ¿Cuál es la diferencia entre vector y matriz?


____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
2. ¿Qué operaciones se pueden realizar con un vector?
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
3.¿Qué operaciones se pueden realizar con matrices?
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
4. ¿Qué estructura de control consideras que se debe utilizar para crear un
vector?
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________

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.

La sintaxis para declarar un vector es la siguiente:

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:

entero vector[5] = {5, 8, 12, 20, 35};

decimal vector4[5] = {10.5, 5.1, 8.9, 10, 95.2};

Un vector se puede inicializar también de la siguiente manera:

decimal vector2[3];
vector2[0] = 1;
vector2[1] = 3;
vector2[2] = 10;

Este tipo de inicialización se utiliza cuando al declarar un vector no lo inicializamos


inmediatamente.

- Asignación de valores a un vector


Es posible ir asignando valores distintos a los elementos de un vector en lugar de inicializarlos,
esto se puede realizar a través de una estructura repetitiva, como se muestra en el siguiente
ejemplo:

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:

decimal vectorx[5] = {10.5, 5.1, 8.9, 10, 95.2};


decimal numero5 = vectorx[4];
decimal primernumero =vectorx[0];

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:

int valores[10] = {1,2,9,8,7,2,9,6,2,1};


desde i = 0 hasta 9 hacer incremento 1
escribir valores[ i ];
fin_desde

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:

entero matriz[2][2] = {1, 2}, {4,5};

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.

- Asignación de valores a una matriz


Es posible ir asignando valores distintos a los elementos de una matriz en lugar de inicializarlos,
esto se puede realizar a través de estructuras repetitivas, como se muestra en el siguiente
ejemplo:

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

- Obtener el valor de una casilla especifica de una matriz


Para acceder al valor de una casilla se hace uso de los corchetes para indicar posiciones (fila y
columna) del elemento que deseamos obtener.

Por ejemplo:

entero matriz1[2][2] = {{1,2},{1,1}};


entero fila1Casilla1 = matriz[1][1];
entero primernumero =matriz[0][0];

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.

- Recorrido de una matriz


Para obtener todos los datos que se encuentran al interior de una matriz, debemos acceder a
cada posición y esto se hace fácilmente con dos ciclos desde (anidados).
La lógica de este procedimiento es la siguiente, el primer ciclo desde comenzará en cero e ira
hasta el número de filas, de modo que la variable de control que generalmente llamamos "i", será
la que va a ir variando entre cero y el tamaño de la matriz, de esta forma al poner la i al interior
de los corchetes, estaremos accediendo al valor de cada fila y el segundo ciclo irá de cero al
número de columnas y normalmente se usa la variable llamada j para acceder a cada columna.

Por ejemplo:

int valores[3][2] = {1,2},{9,8},{7,6};


desde i = 0 hasta 2 hacer incremento 1
desde i = 0 hasta 2 hacer incremento 1
escribir valores[ i,j ];
fin_desde
fin_desde

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:

1. ¿Qué es un lenguaje de programación?


_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
2. ¿Qué es una variable?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
3. Menciona 3 lenguajes de programación
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________

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.

Estructura de un programa en C++


La estructura básica de un programa en C++ se compone de los siguientes elementos:

1. Declaración de directivas (librerías): Se declaran al inicio del programa.


2. Espacio de nombres (using space std): es básicamente un conjunto de
nombres de recursos (clases, métodos, etc.) en el cual todos los nombres son únicos.
3. Comentarios de encabezado: es opcional, aunque recomendable que se
incluya una breve descripción de la función del programa. Se puede usar // si es una
sola línea.
4. Declaración de función main: es donde se realiza todo el código del programa,
ya que son las instrucciones que se ejecutan.
5. Declaración de variables: se realiza al inicio de la función main y consisten en
la declaración de los datos que se utilizaran en el programa.
6. Instrucciones: después de la declaración de variables se escriben todas las
instrucciones que dan solución al problema.
7. Instrucción return: indica al programa que debe finalizar, después de esto debe
cerrarse el programa.

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.

2. En el paso 6 que incluye las instrucciones del programa:


- La instrucción cout se usa para mostrar datos en pantalla junto con el operador <<
seguido de lo que se desea imprimir, lo cual si es un mensaje deberá colocarse entre
comillas “ “, si es el valor de la variable debe colocarse el nombre de esta.
- La instrucción endl indica un salto de línea.
- La instrucción cin sirve para leer un valor junto con el operador >> y el nombre de la
variable a leer.

78
Ordena el siguiente código anotando el número que corresponde y el nombre del paso a
realizar.

Numero Nombre Código

int lado, area;

return 0;

1 #include <iostream>

int main()

//Calcula el área de un cuadrado

cout<<”Valor del lado”;<<endl;


cin>> lado;
area = lado * lado;
cout<< “El area del cuadrado es:” << area;

Espacio de nombres using namespase std;

79
Realiza el código necesario para resolver los siguientes problemas:

Programa que calcula la velocidad a la que se desplaza un móvil, si se sabe que


esta se determina con la formula velocidad=distancia/tiempo.

Programa que convierta una cantidad de horas en minutos.

Programa que calcule el promedio de 3 calificaciones.

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:

1. ¿Cuáles son las operaciones básicas de un vector?


_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
2. ¿En qué consiste la inserción en vectores?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
3. ¿Cuál es la estructura repetitiva mas utilizada en los vectores?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________

Inserción de elementos en un vector


Para realizar esta operación se utiliza comúnmente la estructura repetitiva for, la cual permite
recorrer el vector para realizar cualquier operación sobre el mismo.

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

El resultado de la ejecución de este código se muestra a continuació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.

A continuación, se muestra un ejemplo de búsqueda secuencial en un 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.

A continuación, se muestra un ejemplo de búsqueda secuencial en un vector.

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.

A continuación, se muestra un ejemplo de ordenamiento burbuja en un vector.

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.

A continuación, se muestra un ejemplo de ordenamiento por inserción en un vector.

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.

A continuación, se muestra un ejemplo de eliminación de un elemento en un vector

Eliminación

También se puede eliminar un elemento si en lugar de conocer su valor se conoce su posición,


en ese caso le código para eliminación es:

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.

Realiza la búsqueda de un elemento del vector que creaste en el ejercicio


previo.

Ordena el vector utilizando el método de burbuja

88
Ordena el vector utilizando el método de inserción.

Elimina un elemento del vector.

Realiza una matriz de 3x3 y localiza un elemento dentro de ella, y muestra su


posición en caso de ser encontrado.

89
A continuación, se te presenta una serie de cuestionamientos, responde a cada uno de
ellos subrayando la respuesta correcta.

1. Paradigma de programación en el que se puede resolver un problema recurriendo


únicamente a subrutinas y tres estructuras.
a) Orientada a b) Programación c) Programación d) Programación
objetos estructurada visual de bajo nivel
2. Estructura en la que las tareas se suceden de tal modo que la salida de una es la
entrada de la siguiente y así sucesivamente hasta el final del proceso.
a) Secuenciales b) Selectivas c) Repetitivas d) Cíclicas
3. Estructura que 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.
a) Si b) Mientras c) Repetir d) Desde
4. Tipo de estructura de control que son, de hecho, una estructura de una sola
dimensión.
a) Matriz b) Vector c) Grafo d) Árbol
5. Como se le llama al valor que representa la posición de cada uno de los elementos
de un vector.
a) índice b) Tamaño c) Dimensión d) Valor
6. Cuál de las siguientes no es una operación de vector.
a) Inserción b) Tabulación c) Inicialización d) Recorrido
7. Lenguaje diseñado en 1980 por Bjarne Stroustrup que es una evolución de C.
a) Pascal b) C++ c) Java d) Visual C
8. Sección del programa en C++ en la que se realiza todo el código del programa, ya
que son las instrucciones que se ejecutan.
a) main() b) nombre de c) return 0 d) directivas
dominio
9. Método de ordenación que considera un elemento a la vez insertándolo en su lugar
correspondiente entre aquellos que ya han sido considerados
a) Burbuja b) Inserción c) Selección d) Secuencial
10. Método de ordenación conocido como intercambio directo en el que se recorren
elementos y se intercambian en el orden correcto.
a) Burbuja b) Inserción c) Selección d) Secuencial

90
INSTRUMENTOS DE EVALUACION

Lista de cotejo para evaluar tareas

Lista de cotejo para evaluar ejercicios

Lista de cotejo Cumple


Ejercicios
SI NO
Características:
a) Entrega puntual del trabajo.

b) Presenta referencias del trabajo elaborado.

c) Cumple reglas ortográficas, de redacción y sintaxis.

d) Existe calidad en el trabajo (orden y limpieza).

e) Presenta imágenes y diálogos adecuados.

f) Recabo documentos fuentes

g) Es descriptivo en sus comentarios.

Observaciones:

91
Lista de cotejo de evaluación de un cuadro sinóptico

Lista de cotejo Cumple


Cuadro Sinóptico
SI NO
Características:
Entrega puntual del trabajo.
Presenta referencias del trabajo elaborado.
Cumple reglas ortográficas, de redacción y sintaxis.

Existe calidad en el trabajo (orden y limpieza).

El cuadro sinóptico emplea llaves como conectores.

El título del cuadro sinóptico hace referencia al tema solicitado.

El cuadro sinóptico contiene las ideas principales.

Las ideas están ordenadas de lo general a lo particular o viceversa.


El cuadro sinóptico incluye las relaciones de los elementos ordenados y
clasificados.
Recabo documentos fuentes

Es descriptivo en sus comentarios.

Observaciones:

Lista de cotejo de evaluación de Reportes de Practica

Lista de cotejo Cumple


Manual Técnico
SI NO
Características:
Entrega puntual del trabajo.
Cumple reglas ortográficas, de redacción y sintaxis.
Existe calidad en el trabajo (orden y limpieza).
Índice

Introducción de texto (fuente y párrafo)

Contenido técnico

Cuenta con imágenes de las prácticas

Cuenta con formato

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

También podría gustarte