Vous êtes sur la page 1sur 19

SERVICIO NACIONAL DE APRENDIZAJE, SENA

PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE


SOFTWARE

GUIA DE APRENDIZAJE

MODULO DE FORMACIÓN: PROGRAMACION DE SOFTWARE

UNIDAD DE APRENDIZAJE No. 1: TIPOS DE DATOS ESTRUCTURADOS: ARREGLOS

ACTIVIDAD DE ENSEÑANZA – APRENDIZAJE – EVALUACIÓN 2 ELABORAR


CONDICIONES GENERALES Y FLUJO DE CONTROL

TIEMPO DE LA ACTIVIDAD DE E-A-E: 8 HORAS

TIEMPO DE LA GUIA DE APRENDIZAJE: 5 HORAS

ORIENTACIONES GENERALES:

El propósito de la presente guía es introducir al aprendiz en el aprendizaje y uso de


los tipos de datos estructurados como son arreglos (vectores y matrices) para
plantear la solución de problemas que requieran de esta estructura.

EVIDENCIAS DE APRENDIZAJE:

DE CONOCIMIENTO PRODUCTO PARA EL PORTAFOLIO

Saber que es, como se caracteriza, que Problemas que se proponen para ser
tipos de arreglos existen y como se solucionados mediante este tipo de dato
representan gráficamente. estructurado. Ya sea vector o matriz.
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

Hasta el momento solo hemos visto tipos de datos simples como lo


muestra la siguiente grafica:

Numéricos
Simples Lógicos
Alfanuméricos (string)
Tipos de
Datos Arreglos (Vectores, Matrices)
Estructurados Registros
(Def. Por el Archivos
Usuario) Apuntadores

Con sus respectivas estructuras algorítmicas:

- Asignación
Secuenciales - Entrada
- Salida

- Simples
Estructuras Condicionales
Algorítmicas - Múltiples

- Hacer para
Cíclicas - Hacer mientras
- Repetir hasta

Empezaremos con la segunda parte de tipos de datos Estructurados


Estáticos:
♦ Los tipos de datos simples o primitivos no están compuestos de
otras estructuras de datos.
♦ Las estructuras de datos estáticas son aquellas en las
que el tamaño ocupado en memoria se define antes de
que el programa se ejecute y no puede modificarse
dicho tamaño durante la ejecución del programa.
♦ Los tipos de datos simples tienen como característica
común que cada variable representa un elemento.
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

♦ Los tipos de datos estructurados tienen como


característica común que un identificador (nombre)
puede representar múltiples datos individuales,
pudiendo cada uno de estos ser referenciado
independientemente.

ARREGLOS
(Matriz o Vector)

Un Arregloes una secuencia de posiciones de memoria a las que se


puede acceder directamente que almacenan valores del mismo tipo,
los cuales se identifican por su posición, que en pseudocódigo
comienza en 1.

Una definición más natural seria: variable que es capaz de


almacenar varios datos a la vez.

Un arreglo (matriz o vector) es un conjunto finito y ordenado de


elementos homogéneos. La propiedad “ordenado” significa que el
elemento primero, segundo, tercero,..., enésimo de un arreglo puede
ser identificado. Los elementos de un arreglo son homogéneos, es
decir, del mismo tipo de dato.

Cada componente de un arreglo se denota, explícitamente, y es


accedida, directamente, mencionando el nombre del arreglo seguido
de una expresión encerrada entre paréntesis, a la que llamamos
índice del arreglo.

La cantidad de componentes del arreglo se india explícitamente


cuando se declara el mismo, y queda desde entonces INVARIABLE. A
ese número lo llamamos dimensión del arreglo.

Al tratar el tema de arreglos es necesario conocer el término


de dimensión.

Dimensión Descripción
0 Un solo punto.
1 (vector o lista) Una recta. Contiene largo.
2 (matriz o tabla) Contiene largo y ancho.
3 (cubo) Tiene largo, ancho y fondo.
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

El índice del arreglo toma valores entre uno y la dimensión del mismo.
Si se direcciona una posición que no se encuentra entre dichos
límites, se producirá un error de ejecución, pues se estará intentando
acceder a una zona de memoria indefinida (pues el vector está
definido entre las posiciones 1 y dimensión).

A un arreglo lineal se lo denomina unidimensional, y se utiliza un solo


índice para denotar sus elementos. A un arreglo tipo matricial se lo
denomina arreglo bidimensional o de dos dimensiones, y usa dos
índices para determinar sus elementos.

Operaciones sobre arreglos


Las operaciones que se pueden realizar con arreglos durante el
proceso de resolución de un problema son:
♦ Asignación;
♦ Lectura / Escritura;
♦ Recorrido (acceso secuencial);
♦ Actualización (añadir, borrar, insertar);
♦ Ordenamiento;
♦ Búsqueda.

En general, las operaciones con arreglos implican el tratamiento o


procesamiento de los elementos individuales del arreglo.

ARREGLOS UNIDIMENSIONALES: VECTORES


Los elementos de un arreglo lineal se almacenan en posiciones
sucesivas de memoria, es decir, un elemento al lado del otro. Si cada
elemento de un arreglo de dimensión k, ocupa x posiciones, entonces
el arreglo ocupa en total x * k posiciones.

El almacenamiento es igual al de las variables, con la particularidad


que ahora el conjunto de variables ocupa posiciones sucesivas o
contiguas de la memoria.

Siendo una variable:

Declaración de vectores
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

Los vectores se definen en la zona de declaración del programa.


Dicha definición se
encabeza con la palabra reservada “Tipos estructurados”. Para
declararlos se explicita el nombre del mismo, acompañado de su
dimensión, y a continuación se especifica el tipo de sus elementos.
Todos los elementos de un vector serán del mismo tipo. En
pseudocódigo:

Programa.....
Tipos estructurados
<nom_vector>= Arreglo [Dimensión] : <tipo>
//declaro un vector...//
Variables
<nom_variable>: <nom_vector> //y
luego una variable de tipo//
//vector, donde alojarlo//
Hacer
...
Fin Hacer
Fin Programa.....

En conclusión:

Los arreglos se caracterizan por:

• Almacenan los elementos en posiciones contiguas de memoria


• Tienen un mismo nombre de variable que representa a todos los
elementos.
• Debe tener un mismo tipo de datos (Enteros, dobles, cadenas,
etc)
• Para hacer referencia a esos elementos es necesario utilizar un
índice que especifica el lugar que ocupa cada elemento dentro
del archivo.
• Existen dos tipos de arreglos:

Unidimensionales (Vectores)
Tipo de
Arreglos
Bidimensionales (Matrices)

El vector:
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

Es un arreglo de “N” elementos organizados en una dimensión donde “N” recibe el


nombre de longitud o tamaño del vector. Para hacer referencia a un elemento del
vector se usa el nombre del mismo, seguido del índice (entre corchetes), el cual
indica una posición en particular del vector. Por ejemplo:

Vec[x]
Donde:
Vec………… Nombre del arreglo
x…………… Numero de datos que constituyen el arreglo

Ejemplo de una declaración y Representación gráfica de un vector:

x : arreglo [1..4] de Enteros.


x[2] 5

5
1 2 3 4

Se puede acceder a los elementos de un vector para introducir


datos (escribir) en el o bien para visualizar su contenido (leer).
Estas operaciones se realizan utilizando estructuras repetitivas,
cuyas variables de control (por ejemplo I) se utilizan como
subíndices del vector (por ejemplo, X(I).
Llenado de un Vector

Hacer para I = 1 a 10
Leer vec[I] I=1
Fin-para Repetir
Leer vec[I]
Hacer mientras I <= 10 I=I+1
Leer vec[I] Hasta-que I>10
Fin-mientras

Inicio
Hacer para l =0 a 3
Num=x+1
Vec[x] = num
Fin para
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

Hacer para l =0 a 3
Imprimir vec(0), vec(1), vec(2), vec(3)
Imprimir x
Imprimir vector(x)
Fin-para
Fin

Producto por un escalar


Algoritmo producto por escalar
Constante n= ...
Variable real x
entera i
vectores reales a(1..n),b(1..n)
Leer a
Leer x
Para i de 1 a n hacer
b(i) x*a(i)
Fin para
Escribir b
Final

Producto escalar de dos vectores

Algoritmo producto escalar


constante n= ...
variable entera i
real c
vectores reales a(1..n), b(1..n)
Leer a,b
c ⇐ 0.0
Para i de 1 a n hacer
c ⇐ c+a(i)*b(i)
Fin para
Escribir c
Final

Ordenación por selección

Supongamos un vector, donde parte de sus elementos están ordenados y


otros no. Los pasos a seguir para realizar la ordenación son los siguientes:
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

r N t d a h m z o k s c
a1 a2 ... ak-1 ak ... ... ... ai ... ... an

Elementos desordenados

a) Para realizar la ordenación por selección se hacen varios barridos del


vector. Primeramente cogemos el primer elemento del vector y lo
comparamos con todos los elementos restantes buscando aquel elemento
que posea el valor más pequeño.

r N t d a h m z o k s c
a1 a2 ... ak-1 ak ... ... ... ai ... ... an

b) Una vez encontrado el elemento menor, se coloca en la posición


correspondiente, realizando un intercambio de posiciones entre el elemento
que hemos comparado y el que hemos encontrado.

a N t d r h m z o k s c
a1 a2 ... ak-1 ak ... ... ... ai ... ... an

c) Una vez ordenado el primer elemento, realizamos la misma operación


con los restantes. Finalmente el vector quedará ordenado.

A C d h k m n o r s t z
a1 a2 ... ak-1 ak ... ... ... ai ... ... an

El algoritmo de ordenación por selección es el siguiente.


SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

Algoritmo Selección
constante n=...
variable entera i,j,k
realx ⇐ variable de apoyo
vector de reales a(1..n)

Leer a

Para i de 1 a n-1 hacer ⇐ el ultimo 'n' ya estará ordenado.


k i “k” es el índice del elemento menor a permutar
con a[i], inicialmente lo ponemos igual que i
Para j de i+1 a n hacer
sia(j) < a(k) entones
k ⇐j ⇐ Si aparece un elemento de menor valor,
fijamos
Finsi “k” a su índice
Fin para

x ⇐ a(i) Permutamos a[i] con a[k]


a(i) ⇐ a(k)
a(k) x
Fin para

Escribir a
Final

Vectores en C++

La sintaxis para declarar un vector de 5 posiciones, llenarlo e


imprimir el valor del vector y la posicion donde esta es el
siguiente:
int main()
{
int valor;
int vec[5];
for (int i=1;i<=5;i++)
{
cin>>valor;
vec[i]=valor;
}
for (int i=1;i<=5;i++)
{
cout<<"el valor en"<<i<<" es "<<vec[i]<<endl;
}
}
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

Ejercicios

EJERCICIOS PARA ENTREGRAR HOY EN CLASE SE DEBEN REALIZAR


EN C++ Y SUBIRLOS AL BLOG.

1. Leer 5 números y crear un vector con ellos. Luego imprimir la


posición y el valor.

#include<iostream>
using namespace std;
int main()
{
int val,vec[5];
cout<<"ingrese los valores del vector"<<endl;
cout<<endl;
for (int i=1;i<=5;i++)
{
cin>>val;
vec[i]=val;
cout<<endl;
}
for (int i=1;i<=5;i++)
{
cout<<"el valor en el vector "<<"["<<i<<"]"<<" es
"<<vec[i]<<endl;
cout<<endl;
}
system ("pause");
return 0;
}
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

2. Realizar un programa que genere los números pares de 2 a 200


y llenar un vector con ellos Luego imprimir el vector.

#include<iostream>
using namespace std;
int main()
{
int cont,num,vec[100];
num=2;
cont=2;
for (int i=1;i<=100;i++)
{
{
vec[i]=cont;
}
num=num+2;
cont=cont+2;
}
for (int a=1;a<=100;a++)
{
cout<<"el valor en el vector "<<"["<<a<<"]"<<" es
"<<vec[a]<<endl;
cout<<endl;
}
system ("pause");
return 0;
}

3. Crear dos vectores uno llamado nombre y el segundo apellido


cada vector será de 5 posiciones que almacenaran dichos datos
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

pedidos al usuario, al final debe imprimir el nombre completo


de cada posición.

#include<iostream>
using namespace std;
int main()
{
char nombre[5],apellido[5];
cout<<"introduzca el nombre"<<endl;
for (int i=1;i<=5;i++)
{
cin>>nombre[i];
cout<<endl;
}
cout<<"introduzca el apellido"<<endl;
for (int i=1;i<=5;i++)
{
cin>>apellido[i];
cout<<endl;
}
cout<<"el nombre es:"<<"
"<<nombre[1]<<nombre[2]<<nombre[3]<<nombre[4]<<nombre[5]<<"
"<<apellido[1]<<apellido[2]<<apellido[3]<<apellido[4]<<apellido[5]<<en
dl;
cout<<endl;

system ("pause");
return 0;
}

4. Escribir un programa que lea una línea te texto, la almacene en


un vector y la imprima al revés.
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

#include<iostream>
using namespace std;
int main()
{
int cant;
char linea[10];
cant=10;
cout<<"introduzca el texto"<<endl;
for (int i=1;i<=10;i++)
{
cin>>linea[i];
cout<<endl;
}
cout<<"la frase al revez es: "<<endl,
cout<<endl;
while (cant>0)
{
cout<<linea[cant];
cout<<endl;
cant=cant-1;
}

system ("pause");
return 0;
}

5. Realizar un programa para ordenar por selección el siguiente


vector a={52,63,7,15,26,68,12,2}.

#include<iostream>
using namespace std;
int main()
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

{
int i,j,k,n;
int x;
int vec[8];
cout<<
"ingrese el tamaño del vector"<<endl;
n=8;
for (int i=1;i<=n;i++)
{
cin>>vec[i];
}
for
(int i=1;i<=n-1;i++)
{
k=i;
for
(int j=i+1;j<=n;j++)
{
if(vec[j]<vec[k])
{
k=j;
}
}
x=vec[i];
vec[i]=vec[k];
vec[k]=x;
}
for
(int i=1;i<=n;i++)
{
cout<<" "<<vec[i];
}
system ("pause");
return
0;
}

6. Genere y llene dos vectores A y B de tamaño M; luego genere


un tercer vector C con la unión de la primera mitad del vector A
y la segunda mitad del vector B. (Asuma que M es par). Ejemplo
gráfico:
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

#include<iostream>

using namespace std;

int main()

int t;

int a[60],b[60],c[60];

cout<<"ingrese el tamaño de los vectores"<<endl;

cout<<"maximo 60"<<endl;

cout<<endl;

cin>>t;

cout<<endl;

cout<<"ingrese los valores del vector a: "<<endl;

cout<<endl;

for (int i=1;i<=t;i++)

cin>>a[i];

cout<<endl;

cout<<"ingrese los valores del vector b: "<<endl;

cout<<endl;

for(int e=1;e<=t;e++)

cin>>b[e];
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

for(int o=1;o<=t/2;o++)

c[o]=a[o];

for(int a=t/2+1;a<=t;a++)

c[a]=b[a];

cout<<endl;

cout<<"el vector c es: "<<endl;

cout<<endl;

for(int u=1;u<=t;u++)

cout<<c[u]<<endl;

cout<<endl;

system ("pause");

return 0;

7. Diseñe un algoritmo que almacene en un vector llamado


FIB[100] los 100 primeros números de la serie Fibonacci
(0,1,1,2,3,5,8,13,21,34,55,….).

#include<iostream>

using namespace std;


SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

int main()

int fib[10000],cont,cont1,t,sec;

cont=1;

cont1=2;

fib[1]=0;

fib[2]=1;

fib[3]=1;

fib[4]=2;

cout<<"cuantos numeros de la secuencia fibonacci quiere


calcular?"<<endl;

cout<<"maximo 10000"<<endl;

cout<<endl;

cin>>t;

cout<<endl;

for (int i=5;i<=t;i++)

sec=cont+cont1;

cont=cont1;

cont1=sec;

fib[i]=sec;

cout<<"la secuencia fibonacci de "<<t<<" "<<"numeros es:


"<<endl;

cout<<endl;

for(int e=1;e<=t;e++)

cout<<fib[e]<<endl;

}
SERVICIO NACIONAL DE APRENDIZAJE, SENA
PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE
SOFTWARE

cout<<endl;

system ("pause");

return 0;

NOMBRE:RICARDO ESTEBAN VALENZUELA JIMENEZ


ID:92032400169