sena vectores en c++

22
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 tipos de arreglos existen y como se representan gráficamente. Problemas que se proponen para ser solucionados mediante este tipo de dato estructurado. Ya sea vector o matriz.

Upload: xxxafdx

Post on 15-Nov-2014

117 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA 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 tipos de arreglos existen y como se representan gráficamente.

Problemas que se proponen para ser solucionados mediante este tipo de dato estructurado. Ya sea vector o matriz.

Page 2: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA 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éricosSimples 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ónSecuenciales - Entrada

- Salida

- Simples Estructuras Condicionales

Algorítmicas - Múltiples

- Hacer paraCí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.

Page 3: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA 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 Arreglo es 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ón0 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.

Page 4: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA 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 arreglosLas 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: VECTORESLos 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 vectoresLos vectores se definen en la zona de declaración del programa. Dicha definición seencabeza 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

Page 5: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN

DE SOFTWARE

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 HacerFin 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:

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 arreglox…………… Numero de datos que constituyen el arreglo

Page 6: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN

DE SOFTWARE

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

I=1Repetir Leer vec[I]

I = I + 1Hasta-que I>10

InicioHacer para l =0 a 3

Num=x+1 Vec[x] = numFin paraHacer para l =0 a 3Imprimir vec(0), vec(1), vec(2), vec(3)Imprimir xImprimir vector(x)Fin-paraFin

Producto por un escalar

Page 7: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN

DE SOFTWARE

Algoritmo producto por escalarConstante n= ...Variable real x

entera ivectores reales a(1..n),b(1..n)Leer aLeer xPara i de 1 a n hacer

b(i) x*a(i)Fin paraEscribir b

Final

Producto escalar de dos vectores

Algoritmo producto escalarconstante n= ...variable entera i

real cvectores reales a(1..n), b(1..n)Leer a,bc 0.0Para i de 1 a n hacer

c c+a(i)*b(i)Fin paraEscribir 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:

r n t d a h m z o k s c

a1 a2 ... ak-1 ak ... ... ... ai ... ... an

Elementos desordenados

Page 8: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN

DE SOFTWARE

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.

Algoritmo Selecciónconstante n=...variable entera i,j,k

real x variable de apoyovector de reales a(1..n)

Page 9: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN

DE SOFTWARE

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 iPara j de i+1 a n hacer

si a(j) < a(k) entones k j Si aparece un elemento de menor valor,

fijamosFinsi “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 aFinal

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;

}}

Page 10: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA 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;

}

Page 11: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA 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;

}

Page 12: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN

DE SOFTWARE

3. Crear dos vectores uno llamado nombre y el segundo apellido cada vector será de 5 posiciones que almacenaran dichos datos 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]<<endl;

cout<<endl;

system ("pause");return 0;}

Page 13: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN

DE SOFTWARE

4. Escribir un programa que lea una línea te texto, la almacene en un vector y la imprima al revés.

#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;

}

Page 14: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN

DE SOFTWARE

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 (){

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]<vec[k]){

k=j;}

}x=vec[i];vec[i]=vec[k];vec[k]=x;

}

for (int i=1;i<=n;i++){

system("cls");cout<<"*****"<<vec[i]<<"*********"<<endl;system("pause");

}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:

Page 15: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN

DE SOFTWARE

#include<iostream>

using namespace std;

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

Page 16: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN

DE SOFTWARE

}

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

{

c[a]=b[a];

}

cout<<endl;

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

cout<<endl;

for(int u=1;u<=j;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;

int main()

{

int fib[1000],cont,cont1,j,sec;

cont=1;

cont1=2;

fib[1]=0;

Page 17: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN

DE SOFTWARE

fib[2]=1;

fib[3]=1;

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<<fib[e]<<endl;

}

cout<<endl;

system ("pause");

return 0;

}

Page 18: Sena Vectores en c++

SERVICIO NACIONAL DE APRENDIZAJE, SENAPROGRAMA DE FORMACIÓN: TEC. EN PROGRAMACIÓN

DE SOFTWARE