Sie sind auf Seite 1von 40

Universidad Nacional de Ingeniera

Programa de Iniciacin Tecnolgica (PIT)


CTIC
Curso: Lenguaje C++

Prof.: Lic. Csar Martn Cruz Salazar


Arreglos
Un arreglo(lista o tabla) es una secuencia de datos del mismo tipo.
Los datos se llaman elementos del arreglo y se numeran
consecutivamente 0,1,2,3, etc. El tipo de elementos almacenados
en el arreglo puede ser cualquier tipo de dato del lenguaje C.
Normalmente el arreglo se utiliza para almacenar tipos tales como
char, int o float.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 1


Arreglos
Cada item del arreglo se denomina elemento.
Los elementos de un arreglo se numeran, como ya se ha
comentado, consecutivamente 0, 1, 2, 3, ...
Estos nmeros se denominan valores ndice o subndice del
arreglo. El trmino subndice se utiliza ya que se especifica
igual que en matemticas. Estos nmeros localizan la posicin del
elemento dentro del arreglo.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 2


Arreglos
L

L es un arreglo de 6 elementos

El arreglo L tiene 6 elementos: L[0] contiene 345.231, L[1]


contiene 120.57, L[2] contiene 240.114, L[3] contiene 789.45, L[4]
contiene 1300.55 y L[5] contiene 3340.123.
En C los ndices de un arreglo siempre tienen como lmite inferior
0, como ndice superior el tamao del arreglo menos 1.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 3


Declaracin de un arreglo

Como con cualquier tipo de variable, se debe declarar un arreglo


antes de utilizarlo. Un arreglo se declara de modo similar a otros
tipos de datos, excepto que se debe indicar al compilador el tamao
o longitud del arreglo.
La sintaxis para declarar un arreglo de una dimensin determinada
es:
tipo nombreArray[numeroDeElementos];
Por ejemplo, para crear un arreglo de diez variables enteras, se
escribe:
int numeros[10];

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 4


Paso de parmetros por valor
Paso por valor significa que cuando C compila la funcin y el
cdigo que llama a la funcin, la funcin recibe una copia de
los valores de los parmetros. Si se cambia el valor de un
parmetro variable local, el cambio slo afecta a la funcin y
no tiene efecto fuera de ella.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 5


Paso de parmetros por valor
La siguiente Figura muestra la accin de pasar un argumento
por valor. La variable real i no se pasa, pero el valor de i, 6,
se pasa a la funcin receptora.
En la tcnica de paso de parmetro por valor, la modificacin
de la variable (parmetro pasado) en la funcin receptora no
afecta al parmetro argumento en la funcin llamadora.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 6


Paso de parmetros por valor

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 7


Ejemplo de Paso de parmetros por
valor
/*
Muestra el paso de parmetros por valor. Se puede cambiar la variable del
parmetro en la funcin pero su modificacin no puede salir al exterior.
*/
#include <iostream>
using namespace std;
void DemoLocal(int valor);
main ()
{
int n = 10;
cout<<Antes de llamar a DemoLocal n=<< n<<endl;
DemoLocal(n);

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 8


Ejemplo de Paso de parmetros por valor
cout<<Despu\x82s de llamar a DemoLocal, n=<<n<<endl;
}
void DemoLocal(int valor)
{
cout<<"Dentro de DemoLocal, valor =" <<valor<<endl ;
valor = 999;
cout<<"Dentro de DemoLocal, valor = " <<valor<<endl ;
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 9


Paso de parmetros por referencia
Cuando una funcin debe modificar el valor del parmetro pasado
y devolver este valor modificado a la funcin llamadora, se ha de
utilizar el mtodo de paso de parmetro por referencia o
direccin.
En este mtodo el compilador pasa la direccin de memoria del
valor del parmetro a la funcin.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 10


Paso de parmetros por referencia
Cuando se modifica el valor del parmetro (la variable local), este
valor queda almacenado en la misma direccin de memoria, por lo
que al retornar a la funcin llamadora la direccin de la memoria
donde se almacen el parmetro contendr el valor modificado.
Para pasar una variable por referencia, el smbolo & debe
preceder al nombre de la variable y el parmetro variable
correspondiente de la funcin debe declararse como puntero.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 11


Paso de parmetros por referencia
float x;
int y;
entrada(&x,&y); //&x es la direccin de memoria de la variable x
...
void entrada(float* x, int* y) //*x es un puntero, *y es un puntero

C permite utilizar punteros para implementar parmetros por


referencia, ya que por defecto en C el paso de parmetros es por
valor.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 12


Paso de parmetros por referencia
El operador & delante de una variable significa dame la
direccin de la variable.
double x;
&x ; / * direccin en memoria de x * /
Una variable, o parmetro puntero se declara poniendo el
asterisco (*) antes del nombre de la variable. Las variables p, r y q
son punteros a distintos tipos.
char * p; / * variable puntero a char * /
int * r; / * variable puntero a int * /
double * q; / * variable puntero a double */

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 13


Ejemplo con funciones potraiz1() y
potraiz2()
#include <iostream>
#include <math.h>
using namespace std;
void potraiz1(float, float);
void potraiz2(float*,float*);
void main()
{
float a, b;
a=6.0, b=900.0;
potraiz1(a,b);
cout<<\n <<a<<,<<b<<endl;
potraiz2(&a,&b);
cout<<\n<<a<<,<<b<<endl;
14
} Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI
Ejemplo con funciones potraiz1() y
potraiz2()
void potraiz1(float x, float y)
{
x=x*x;
y=sqrt(y);
}

void potraiz2(float* x, float* y)


{
*x = (*x)*(*x);
*y = sqrt(*y);
}
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 15
Arreglos Multidimensionales
Hasta ahora se ha visto arreglos unidimensionales (una sola
dimensin). Estos arreglos se conocen tambin por el trmino
listas.
Los arreglos multidimensionales son aquellos que tienen ms
de una dimensin y, en consecuencia, ms de un ndice. Los
arreglos ms usuales son los de dos dimensiones, conocidos
tambin por el nombre de tablas o matrices. Sin embargo, es
posible crear arreglos de tantas dimensiones como requieran sus
aplicaciones, esto es, tres, cuatro o ms dimensiones.
Un ejemplo de arreglo de dos dimensiones equivale a una tabla
con mltiples filas y mltiples columnas, ver figura.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 16


Arreglos Multidimensionales

Estructura de un arreglo de 2 dimensiones.


Obsrvese que en el arreglo bidimensional de la Figura, las filas se etiquetan de
0 a m y las columnas de 0 a n, el nmero de elementos que tendr el arreglo
ser el resultado del producto (m+ 1) x(n+l).

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 17


Arreglos Multidimensionales
La sintaxis para la declaracin de un arreglo de dos dimensiones
es:
<tipo de datoElemento> <nombre arreglo> [<NmeroDeFilas>]
[<NmeroDeColumnas>]

Algunos ejemplos de declaracin de tablas:


char Display[133][97];
int puestos [61][81];
int equipos [4][25];
int matriz[7][6];
Los elementos de los arreglos se almacenan en memoria de
modo que el subndice ms prximo al nombre del arreglo es la
fila y el otro subndice, la columna.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 18


Inicializacin de arreglos
multidimensionales
Los arreglos multidimensionales se pueden inicializar, al igual que
los de una dimensin, cuando se declaran.
1. int tabla[2][3]={{81,82,83}, {84,85,86}};
O bien
int tabla[2][3]={ {81,82,83},
{84,85,86} };
O
int tabla[2][3]={81,82,83,84,85,86};
2. Int tabla2[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
Lic. C. Martn Cruz Salazar } Lenguaje C++ - CTIC. UNI 19
Acceso a los elementos de los
arreglos bidimensionales

El formato general para asignacin directa de valores a los


elementos es:
insercin de elementos
<nombre arreglo>[indice fila][indice columna]=valor elemento;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 20


Acceso a los elementos de los
arreglos bidimensionales
extraccin de elementos
<variable> = <nombre arreglo> [ndice fila] [ndice columna];
Algunos ejemplos de inserciones:
Tabla[2][31] = 4.5;
Resistencias[2] [4]= 50;
AsientosLibres[5][12] = 5;

y de extraccin de valores:
Ventas = Tabla[2][1];
Dia = Semana[3][6];
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 21
Puntero

Una variable (o puntero) es una variable que contiene direcciones


de otras variables. Todas las variables vistas hasta este momento
contienen valores de datos, por el contrario las variables punteros
contienen valores que son direcciones de memoria donde se
almacenan datos. En resumen, un puntero es una variable que
contiene una direccin de memoria.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 22


Direcciones en memoria
Cuando una variable se declara, se asocian tres atributos
fundamentales con la misma: su nombre, su tipo y su direccin en
memoria.
Ejemplo:
int i=9402; /* como nombre es i, el tipo int y la
direccin de alguna posicin de memoria donde
se almacena el valor de la variable i */
0x4fffd34
i 9402
int
Esta caja representa la posicin de almacenamiento en memoria. El
nombre de la variable est a la izquierda de la caja, la direccin de
variable est encima de la caja y el tipo de variable est debajo de la
caja. Si el valor de la variable se conoce, se representa en el interior
de la caja.
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 23
Punteros
Cuando se declara una variable int (entera), por ejemplo, el
compilador asigna dos bytes de memoria. El espacio para esa
variable se sita en una posicin especfica de la memoria,
conocida como direccin de memoria. Cuando se hace uso el
valor de la variable, el compilador de C accede automticamente
a la direccin de memoria donde se almacena el entero. Se
puede ganar en eficacia en el acceso a esta direccin de
memoria utilizando un puntero.
Cada variable que se declara tiene una direccin asociada con
ella. Un puntero es una direccin de memoria.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 24


Puntero

Un puntero en C indica dnde encontrar algo, dnde encontrar los


datos que estn asociados con una variable? Un puntero es la
direccin de una variable. Los punteros se rigen por estas reglas
bsicas:
un puntero es una variable como cualquier otra;
una variable puntero contiene una direccin que apunta a una
posicin en memoria;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 25


Puntero

La declaracin de una variable puntero debe indicar al compilador el


tipo de dato al que apunta el puntero; para ello se hace preceder a
su nombre con un asterisco (*), mediante el siguiente formato:
<tipo de dato apuntado> *<identificador de puntero>

Ejemplos de variables punteros:


int* ptr1; /* Puntero a un tipo de dato entero (int)*/
long* ptr2; /* Puntero a un tipo de dato entero largo (long int)*/
char* ptr3; /* Puntero a un tipo de dato char */
float* f; /* Puntero a un tipo de dato float */

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 26


Inicializando punteros
La inicializacin de un puntero proporciona a ese puntero la
direccin del dato correspondiente. Despus de la inicializacin,
se puede utilizar el puntero para referenciar los datos
direccionados. Para asignar una direccin de memoria a un
puntero se utiliza el operador de referencia &. As, por ejemplo,
&valor
significa la direccin de valor.
int i; /* define una variable i */
int *p; /* define un puntero a un entero */
p = &i; /* asigna la direccin de i a p * /
Asignar un valor a la direccin de memoria.
*p = 50;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 27


Estructuras

La capacidad para crear nuevos tipos de datos es una


caracterstica importante y potente de C y libera a un
programador de restringirse al uso de los tipos ofrecidos por el
lenguaje. Una estructura contiene mltiples variables, que
pueden ser de tipos diferentes. La estructura es importante
para la creacin de programas potentes, tales como bases de
datos u otras aplicaciones que requieran grandes cantidades
de datos.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 28


Estructuras
Los arreglos son estructuras de datos que contienen un
nmero determinado de elementos (su tamao) y todos los
elementos han de ser del mismo tipo de datos; es una
estructura de datos homognea. Esta caracterstica supone
una gran limitacin cuando se requieren grupos de elementos
con tipos diferentes de datos cada uno.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 29


Estructuras
Por ejemplo, si se dispone de una lista de temperaturas, es
muy til un arreglo; sin embargo, si se necesita una lista de
informacin de clientes que contengan elementos tales como
el nombre, la edad, la direccin, el nmero de la cuenta, etc., los
arreglos no son adecuados. La solucin a este problema es
utilizar una estructura. Los componentes individuales de una
estructura se llaman miembros.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 30


Estructuras
Cada miembro (elemento) de una estructura puede contener
datos de un tipo diferente de otros miembros. Por ejemplo, se
puede utilizar una estructura para almacenar diferentes tipos
de informacin sobre una persona, tal como nombre, estado
civil, edad y fecha de nacimiento. Cada uno de estos
elementos se denominan nombre del miembro.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 31


Estructuras
Se desea almacenar los datos de una coleccin de discos
compactos (CD) de msica. Estos datos pueden ser:
Ttulo. Artista. Nmero de canciones. Precio.
La estructura del CD contiene cuatro miembros. Ahora, se
debe decidir cules son los tipos de datos a utilizar por los
miembros.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 32


Estructuras
Nombre miembro Tipo de dato
Ttulo Arreglo de caracteres de tamao 30.
Artista Arreglo de caracteres de tamao 25.
Nmero de canciones Entero.
Precio Coma flotante.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 33


Declaracin de una Estructura
El formato de la declaracin es:
struct <nombre de la estructura>
{
<tipo de dato miembro > <nombre miembro>
<tipo de dato miembro> <nombre miembro>
<tipo de dato miembro> <nombre miembro>
...
};
La declaracin de la estructura CD es:

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 34


Declaracin de una Estructura
struct coleccion-CD
{
char titulo[30];
char artista[25];
int num-canciones;
float precio;
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 35


Declaracin de una Estructura
Las variables de estructuras se pueden definir de dos
formas:
1) listndolas inmediatamente despus de la llave de cierre
de la declaracin de la estructura,
2) O listando el tipo de la estructura creada seguida por las
variables correspondientes en cualquier lugar del
programa antes de utilizarlas. La definicin y declaracin
de la estructura colecciones-CD se puede hacer por
cualquiera de los dos mtodos:

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 36


Declaracin de una Estructura
1. struct colecciones-CD
{
char titulo[30];
char artistar[25] ;
int num-canciones;
float precio;
} cd1, cd2, cd3;

2. struct colecciones-CD cd1, cd2, cd3;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 37


Declaracin de una Estructura
Ahora se nos plantea una aplicacin de control de los
participantes en una carrera popular, cada participante se
representa por los datos: nombre, edad, sexo, categora,
club.
struct corredor
{
char nombre[40];
int edad;
char sexo;
char categoria[20];
char club[26];
}; La definicin de variables estructura seLenguaje
Lic. C. Martn Cruz Salazar
puede hacer as:
C++ - CTIC. UNI 38
Declaracin de una Estructura
La definicin de variables estructura se puede hacer as:
struct corredor vl, sl, cl;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 39

Das könnte Ihnen auch gefallen