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