trabajo de computacion avanzada(trabajo final renovado)

20
República Bolivariana De Venezuela. Ministerio Del Poder Popular Para La Defensa. Universidad Nacional Experimental Politécnica De La Fuerza Armada Nacional Bolivariana UNEFA. Núcleo Sucre- Sede Cumaná Prof. Rossana Surga Integrantes: Computación Avanzada Paola Cardozo CI: 25.621.294 Verónica Centeno CI: 21.095.599 Eberyck Córdova CI: 23.923.010 Jesús Márquez CI: 20.063.569 ARREGLO, PUNTEROS, CADENA Y FUNCION

Upload: paolacv13122305

Post on 30-Sep-2015

225 views

Category:

Documents


0 download

DESCRIPTION

computación avanzada

TRANSCRIPT

Repblica Bolivariana De Venezuela. Ministerio Del Poder Popular Para La Defensa. Universidad Nacional Experimental Politcnica De La Fuerza Armada Nacional Bolivariana UNEFA. Ncleo Sucre- Sede Cuman

ARREGLO, PUNTEROS,CADENA Y FUNCION

Prof. Rossana Surga Integrantes: Computacin Avanzada Paola Cardozo CI: 25.621.294 Vernica Centeno CI: 21.095.599 Eberyck Crdova CI: 23.923.010Jess Mrquez CI: 20.063.569 Yatnelys Hernndez CI 20.346.167 Fernando Segura CI 18.211.167 6to Semestre/ Seccin 01 Ing. De Telecomunicaciones

Cuman, Octubre de 2014.INTRODUCCIN.Las estructuras de datos que hemos visto hasta ahora (listas, tuplas, diccionarios, conjuntos) permiten manipular datos de manera muy flexible. Combinndolas y anidndolas, es posible organizar informacin de manera estructurada para representar sistemas del mundo real.En muchas aplicaciones de Ingeniera, por otra parte, ms importante que la organizacin de los datos es la capacidad de hacer muchas operaciones a la vez sobre grandes conjuntos de datos numricos de manera eficiente. Algunos ejemplos de problemas que requieren manipular grandes secuencias de nmeros son: la prediccin del clima, la construccin de edificios, y el anlisis de indicadores financieros entre muchos otros.

1- Definicin de Arreglos.Un arreglo es un conjunto finito y ordenado de elementos homogneos. Los arreglos son los equivalentes en programacin de lasmatricesyvectoresde las matemticas. Precisamente, una gran motivacin para usar arreglos es que hay mucha teora detrs de ellos que puede ser usada en el diseo de algoritmos para resolver problemas verdaderamente interesantes.La estructura de datos que sirve para almacenar estas grandes secuencias de nmeros (generalmente de tipofloat) es elarreglo.Los arreglos tienen algunas similitudes con las listas: los elementos tienen un orden y se pueden acceder mediante su posicin, los elementos se pueden recorrer usando un ciclofor.Sin embargo, tambin tienen algunas restricciones: todos los elementos del arreglo deben tener el mismo tipo, en general, el tamao del arreglo es fijo (no van creciendo dinmicamente como las listas), se ocupan principalmente para almacenar datos numricos.Operaciones con arreglos, ejemplo:Las limitaciones que tienen los arreglos respecto de las listas son compensadas por la cantidad de operaciones convenientes que permiten realizar sobre ellos.

2 - Definicin de Vector.Es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lgico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). Ejemplo:

3 - Almacenamiento de Arreglos en Memoria. El almacenamiento en la computadora est dispuesto fundamentalmente en secuencia contigua, de modo que cada acceso a una matriz o tabla la mquina debe realizar la tarea de convertir la posicin dentro del array en una posicin perteneciente a una lnea.

Ejemplo:

4 - Inicializacin de un Arreglo.La inicializacin de un arreglo unidimensional puede llevarse a cabo mientras se le declara. La lista de datos de inicio se encierra entre llaves y contiene datos separados por comas. C++ le permite incluir menos datos que los que corresponden al tamao del arreglo. En este caso, el compilador automticamente asigna ceros a los elementos que no se inicializan explcitamente. Adems, C++ le permite omitir el tamao explcito del arreglo inicializado y, en vez de ello, usa la cantidad de elementos de inicializacin como cantidad de elementos del arreglo. Ejemplo:Se permite la inicializacin de arreglos en C++ de acuerdo al siguiente formato:static tipo numarreglo[cant de elementos]={valores};Ejemplo: static int edades[5]={18,20,19,17,23};static long int tabla num[3][4]={1,2,3,45,6,7,89,10,11,12};static char nombres [3][30]={juanjoserosa};5 Definicin de Arreglos Multidimensionales. Este tambin es un tipo de dato estructurado, que est compuesto por n dimensiones. Para hacer referencia a cada componente del arreglo es necesario utilizar n ndice, uno para cada dimensinPara determinar el nmero de elementos en este tipo de arreglos se usan las siguientes frmulas:RANGO (Ri) = lsi - (lii + 1)No. TOTAL DE ELEMENTOS = R1 * R2* R3 * ...*RnDonde:i = 1 ... nn = No. total de dimensionesPara determinar la direccin de memoria se usa la siguiente frmula:LOC A[i1,i2,i3,...,in] = base(A) + [(i1-li1)*R3*R4*Rn + (i2-li2)*R3*R2*... (in - lin)*Rn]*w

6 - Declaracin de un Arreglo de dos Dimensiones (Bidimensionales)Un arreglo bidimensional est compuesto, por un conjunto de elementos homogneos y se puede acceder a los datos utilizando dos subndices, este tipo de arreglo es tambin conocido como matriz. Declaracin: Un arreglo bidimensional se define as:int arreglo[10][10];float matriz[10][10];Tambin podemos utilizar constantes para definir la dimensin del arreglo de dos dimensiones: const int N = 10; int arreglo[N][N];7 Definicin de Arreglo Tridimensional.El arreglo tridimensional o de tres dimensiones, est formado por un conjunto de elementos de un mismo tipo de datos que se almacenan bajo un mismo nombre y que, al igual que en los unidimensionales y bidimensionales, se diferencian por la posicin que tiene cada elemento dentro del arreglo de datos, con la aclaracin de que la disposicin de los elementos es una combinacin del arreglo unidimensional y bidimensional. La primera dimensin se podra esquematizar como el arreglo unidimensional, un conjunto de elementos; la segunda y tercera dimensin es un arreglo de dos dimensiones que constituye a cada elemento de la primera dimensin. Tridimensional de tipo entero. Como podemos observar lo que antes era una msera lista se va convirtiendo en un cubo de impresionantes proporciones. Ahora tenemos tres ndices con los que acceder a los datos X, Y, Z. La forma en la que accedemos y almacenamos datos en esta matriz puede parecernos un poco abstracta, lo que hacemos es acceder a la interseccin de los tres ndices. Al ser tridimensional tenemos que tomarnos los ndices como coordenadas que nos dan un punto fijo, y es ese punto el que nuestra maquina va a reconocer como el valor global. 8 Ejemplo de un Arreglo Tridimensional. Planos filas columnas Var c:array[3..5, 1..2, 1..4]of integer;LS-LI+1Planos = 5-3+1= 3Filas = 2-1+1= 2Columnas = 4-1+1= 4 24 elementos En el lenguaje pascal se pueden tener arreglos de ms de 2 dimensiones, ejemplo: Var **Tri:array[3..5, 1..2, 1..4] of integer;**En este arreglo tridimensional hace referencia en su primer rango al nmero de planos, en el segundo al nmero de filas y en el tercer rango al nmero de columnas. Para conocer el nmero o rango de cada dimensin la frmula es la misma.9- Definicin de Punteros.Llamados tambin apuntador es una variable que contiene una direccin de memoria, la cual corresponder a un dato o a una variable que contiene el dato. Cada variable que se utiliza en una aplicacin ocupa una o varias posiciones de memoria. Estas posiciones de memoria se accedan por medio de una direccin.10- Declaracin de Punteros.Cuando se declara una variable, el compilador reserva un espacio de memoria para ella y asocia el nombre de sta a la direccin de memoria desde donde comienzan los datos de esa variable. Las direcciones de memoria se suelen describir como nmeros en hexadecimal. Un apuntador es una variable cuyo valor es la direccin de memoria de otra variable. Se dice que un apuntador apunta a la variable cuyo valor se almacena a partir de la direccin de memoria que contiene el apuntador. Por ejemplo, si un apuntador p almacena la direccin de una variable x, se dice que p apunta a x.Los apuntadores como cualquier otra variable deben de ser declarados antes de que puedan ser utilizados.La declaracin de un apuntador debe indicar al compilador el tipo de dato al que apunta, para ello se hace preceder a su identificador con un asterisco (*) como sigue:* ;Tambin es perfectamente vlido utilizar: *;La nica diferencia es que el primer caso sugiere que * forma parte del tipo de dato y en el segundo caso que * forma parte del identificador. Lo recomendable es adoptar la primera forma, ya que la segunda se presta a confundir el operador * con el operador de indireccin, y es muy importante comprender que aqu no hay nada de indireccin, es solo una declaracin de un identificador, ligado a un tipo (*). Es el mensaje del compilador el que nos indica esta ltima interpretacin. Ejemplos:int*ptr1; \\ Puntero a un tipo de dato entero (int)long*ptr2; \\ Puntero a un tipo de dato entero largo (long)char*ptr3; \\ Puntero aun tipo de dato charfloat*ptr4; \\ Puntero aun tipo de dato floatNOTA:Un puntero a cualquier tipo de variable es una direccin en memoria, la cual es una direccin entera, pero un punterono es un entero.11- Inicializacin de Punteros.C++ no inicializa los punteros cuando se declaran y es necesaria inicializarlos antes de poder utilizarlos. Para asignar una direccin de memoria a un puntero se utiliza el operador de referencia (&). Ejemplo: &var1, sigifica la direccin de la variable var1. Por tal razn la inicializacin de un puntero requiere: Asignar memoria definiendo una variable. (int i;) Declarar un puntero. (int * ptr;) Hacer que el puntero apunte a la direccin de la variable. (ptr = &i;)Para asignar un valor a la direccin de memoria a la que apunta el puntero ptr se utiliza el operador sobrecargado (*) como sigue:*ptr = 50//por tanto i vale 50Lo cual se lee, el contenido de ptr toma el valor de 50.

12- Definicin de Cadenas.Una cadena es un conjunto ordenado de caracteres, el modo de manejar texto en programacin. Muchos lenguajes contemplan las cadenas como un tipo de datos bsico, y ofrecen mtodos especficos para manejarlas.Sin embargo, en C las cadenas son simplemente arrays de tipo char. Eso no quiere decir que manejar cadenas en C sea ms difcil que con otros lenguajes. Simplemente, es distinto.

Ejemplo:El siguiente programa pide una cadena al usuario y la muestra invertida:

13- Inicializacin de Variables de Cadena.Las cadenas de caracteres no se pueden inicializar fuera de la declaracin.

La cadena cadena_texto puede contener un mximo de 19 caracteres ms el carcter nulo \0

El compilador reserva espacio para la cadena saludo. Dado que el tamao de hola es de 4 caracteres, el compilador reserva 5. Ejemplo:

14- Programa con la Funcin Strlen.Esta funcin se encarga de calcular el nmero de caracteres que tiene la cadena apuntada por s y luego retorna la cantidad de caracteres que contiene la cadena La funcin Strlen (); pertenece a la librera string.h El prototipo de la funcin es: Size_t strlen (const char *s);Nota: La funcin strlen no toma en cuenta el carcter nulo Ejemplo:

/* ingresar palabra y mostrar cuantas letras tiene la palabra (longitud de cadena)*/

#include #include #include #include void main (){clrscr();int k=0; /*k es el nombre de contador */char v[32]; /*v es el nombre de la cadena */printf("n ingrese palabra: ";scanf("%s",v) ; k=strlen(v); /*aqui llamamos a la funcion para que ver la longitud de la cadena */printf("n la palabra tiene : %d letras ",k);getch();}#include#include#includemain(){ char s[15]="Hola"; int n; n = strlen(s); printf("La cadena: \"%s\" tiene %d caracteres.\n", s, n); system("pause"); return 0;}

15- Definicin de Funcin.Es un grupo de instrucciones con un objetivo en particular y que se ejecuta al ser llamada desde otra funcin o procedimiento. Una funcin puede llamarse mltiples veces e incluso llamarse a s misma (funcin recurrente). Las funciones pueden recibir datos desde afuera al ser llamadas a travs de los parmetros y deben entregar un resultado. Se diferencian de los procedimientos porque estos no devuelven un resultado. En general las funciones deben tener un nombre nico en el mbito para poder ser llamadas, un tipo de dato de resultado, una lista de parmetros de entrada y su cdigo.16- Definicin de Recursividad.Es la forma en la cual se especifica un proceso basado en su propia definicin. En programacin, un mtodo usual de simplificacin de un problema complejo es la divisin de este en subproblemas del mismo tipo. Esta tcnica de programacin se conoce como divide y vencers y es el ncleo en el diseo de numerosos algoritmos de gran importancia, as como tambin es parte fundamental de la programacin dinmica. Para que se entienda mejor a continuacin se exponen algunos ejemplos:Factorial: Se desea calcular n! \, (el factorial de n \,, que se define como el producto de todos los enteros positivos de 1 \, a n \,). Se puede definir el problema de forma recurrente como n(n-1)! \,; como (n-1)! \, es menor que n! \, podemos aplicar induccin por lo que disponemos del resultado. El caso base es 0! \, que es 1 \,.Algoritmo de ordenacin por fusin: Sea v un vector de n elementos, podemos separar el vector en dos mitades. Estas dos mitades tienen tamao n/2 por lo que por induccin podemos aplicar la ordenacin en estos dos subproblemas. Una vez tenemos ambas mitades ordenadas simplemente debemos fusionarlas. El caso base es ordenar un vector de cero o un elemento, que est trivialmente ordenado y no hay que hacer nada.

Ejemplo:int factorial (int x){ if (x > -1 && x < 2) return 1; // Cuando -1 < x < 2 devolvemos 1 puesto que 0! = 1 y 1! = 1 else if (x < 0) return 0; // Error no existe factorial de nmeros negativos return x * factorial(x - 1); // Si x >= 2 devolvemos el producto de x por el factorial de x - 1}

CONCLUSIONES.Despus de haber realizado el presente trabajo de investigacin y de haber conocido las caractersticas principales de los arreglos, vectores, punteros y cadenas, se logr llegar a las siguientes conclusiones: Los arreglos son los equivalentes en programacin de lasmatricesyvectoresde las matemticas. Un vector es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Los arreglos multidimensionales son datos estructurados, que est compuesto por n dimensiones, a la hora de hacer referencia a cada componente del arreglo es necesario utilizar n ndice, uno para cada dimensin. Un arreglo bidimensional est compuesto, por un conjunto de elementos homogneos y se puede acceder a los datos utilizando dos subndices. Un puntero contiene una direccin de memoria, la cual corresponder a un dato o a una variable que contiene el dato. Las direcciones de memoria se suelen describir como nmeros en hexadecimal. Para asignar una direccin de memoria a un puntero se utiliza el operador de referencia (&). Muchos lenguajes contemplan las cadenas como un tipo de datos bsico, y ofrecen mtodos especficos para manejarlas, mientras que en C las cadenas son simplemente arrays de tipo char. La tcnica divide y vencers, es un mtodo usual de simplificacin de un problema complejo usado en programacin, el cual es la divisin de subproblemas del mismo tipo.

BIBLIOGRAFA. progra.usm.cl Arreglos-Programacin. Recuperado de internet el 16 de noviembre de 2014. Disponible en:http://progra.usm.cl/apunte/materia/arreglos.html wikipnfi.wikispaces.com Introduccin a la informtica 2009. Recuperado de internet el 16 de noviembre de 2014. Disponible en: https://wikipnfi.wikispaces.com/file/view/Arreglo+de+Registro.pdf www.programacionfacil.com - ARREGLOS INICIALIZACION C++. Recuperado de internet el 16 de noviembre de 2014. Disponible en: http://www.programacionfacil.com/cpp/arreglos_inicializacion www.omijal.org - Tutorial c++. Recuperado de internet el 16 de noviembre de 2014. Disponible en: http://www.omijal.org/pagina_c/matrix.html wikispaces.com - estructura-datos-Arreglo tridimensional. Recuperado de internet el 16 de noviembre de 2014. Disponible en: http://estructura-datos-cusxxi.wikispaces.com/Arreglo+tridimensional html.rincondelvago.com - Apuntadores en lenguajes de programacin. Recuperado de internet el 16 de noviembre de 2014. Disponible en: http://html.rincondelvago.com/apuntadores-en-lenguajes-de-programacion.html