Você está na página 1de 15

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
Computacin Avanzada

Integrantes:
Paola Cardozo CI: 25.621.294
Vernica Centeno CI: 21.095.599
Eberyck Crdova CI: 23.923.010
Jess 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 las matrices y vectores de 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 tipo float) es el arreglo.
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 ciclo for.

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

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,4
5,6,7,8
9,10,11,12};

static char nombres [3][30]={juan


jose
rosa};
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 dimensin
Para 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 * ...* Rn
Donde:
i = 1 ... n
n = No. total de dimensiones
Para 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+1
Planos
Filas

= 5-3+1= 3
= 2-1+1= 2

Columnas

= 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:
<Tipo de Dato>*

<identificador de puntero>;

Tambin es perfectamente vlido utilizar:


<Tipo de Dato>

*<identificador de puntero>;

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 (<Tipo de Dato>*). 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 char
float*ptr4; \\ Puntero aun tipo de dato float
NOTA: Un puntero a cualquier tipo de variable es una direccin en memoria, la
cual es una direccin entera, pero un puntero no 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 50
Lo 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 <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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<stdio.h>
#include<string.h>
#include<stdlib.h>
main()
{
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

las matrices y vectores de 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-deprogramacion.html

Você também pode gostar