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 CONDICIONES GENERALES Y FLUJO DE CONTROL
–
EVALUACIÓN
2
ELABORAR
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:
Simples Tipos de Datos
Numéricos
Lógicos Alfanuméricos (string)
Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores
Con sus respectivas estructuras algorítmicas:
Secuenciales
- Asignación - Entrada - Salida - Simples
Estructuras Condicionales Algorítmicas
Cíclicas
- Múltiples - Hacer para - 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 0 1 2 3
Descripción Un solo punto. (vector o lista) Una recta. Contiene largo. (matriz o tabla) Contiene largo y ancho. (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] :
//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] Fin-para Hacer mientras I <= 10 Leer vec[I] Fin-mientras Inicio Hacer para l =0 a 3 Num=x+1 Vec[x] = num Fin para
I=1 Repetir Leer vec[I] I=I+1 Hasta-que I>10
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 a1
n a2
t ...
d ak-1
a ak
h ...
m ...
z ...
o ai
k ...
s ...
c 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 a1
n a2
t ...
d ak-1
a ak
b) Una vez encontrado el
h ...
elemento
m ...
menor,
z ...
o ai
k ...
s ...
c an
se coloca en la posición
correspondiente, realizando un intercambio de posiciones entre el elemento que hemos comparado y el que hemos encontrado. a a1
n a2
t ...
d ak-1
r ak
h ...
m ...
z ...
o ai
k ...
s ...
c an
c) Una vez ordenado el primer elemento, realizamos la misma operación con los restantes. Finalmente el vector quedará ordenado. A a1
c a2
d ...
h ak-1
k ak
m ...
n ...
El algoritmo de ordenación por selección es el siguiente.
o ...
r ai
s ...
t ...
z an
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 ⇐ el ultimo 'n' ya estará ordenado. ⇐ “k” es el índice del elemento menor a
Para i de 1 a n-1 hacer k ⇐ i 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) a(i) ⇐ a(k) a(k) ⇐ x Fin para
⇐ Permutamos a[i] con a[k]
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"<<<" es "<
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 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 "<<"["<<<"]"<<" es "<
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 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 "<<"["<
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 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]<<" "<
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 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<
}
5.
system ("pause"); return 0;
Realizar un programa para ordenar por selección el siguiente vector a={52,63,7,15,26,68,12,2}.
#include
SERVICIO NACIONAL DE APRENDIZAJE, SENA PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE SOFTWARE
using namespace std; int main () { int i,j,k,n; int x; int vec[8]; cout<<"ingrese el nume de vetores "<<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=1;j<=n;j++) { if (vec[j]
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:
#include using namespace std;
SERVICIO NACIONAL DE APRENDIZAJE, SENA PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE SOFTWARE
int main() { int j; int a[80],b[80],c[80]; cout<<"ingrese el tamaño de los vectores"<<endl; cout<<"maximo 80"<<endl; cout<<endl; cin>>j; cout<<endl; cout<<"ingrese los valores del vector a: "<<endl; cout<<endl; for (int i=1;i<=j;i++) { cin>>a[i]; } cout<<endl; cout<<"ingrese los valores del vector b: "<<endl; cout<<endl; for(int e=1;e<=j;e++) { cin>>b[e]; } for(int o=1;o<=t/2;o++) { c[o]=a[o]; } for(int a=t/2+1;a<=j;a++)
SERVICIO NACIONAL DE APRENDIZAJE, SENA PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE SOFTWARE
{ c[a]=b[a]; } cout<<endl; cout<<"el vector c es: "<<endl; cout<<endl; for(int u=1;u<=j;u++) { cout<
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 using namespace std; int main() { int fib[1000],cont,cont1,j,sec; cont=1; cont1=2; fib[1]=0; fib[2]=1; fib[3]=1;
SERVICIO NACIONAL DE APRENDIZAJE, SENA PROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN DE SOFTWARE
fib[4]=2; cout<<"cuantos numeros de la secuencia fibonacci quiere calcular?"<<endl; cout<<"maximo 1000"<<endl; cout<<endl; cin>>j; cout<<endl; for (int i=5;i<=j;i++) { sec=cont+cont1; cont=cont1; cont1=sec; fib[i]=sec; } cout<<"la secuencia fibonacci de "<<j<<" "<<"numeros es: "<<endl; cout<<endl; for(int e=1;e<=j;e++) { cout<