Fund. de Programación - Tema 2
-
Upload
miguel-moronta -
Category
Documents
-
view
217 -
download
0
Transcript of Fund. de Programación - Tema 2
-
7/29/2019 Fund. de Programacin - Tema 2
1/18
23-ene-13
Santiago, Rep. Dom.
Leccin 2 Arreglos Multidimensionales
FUNDAMENTOS DE PROGRAMACIN
Pontificia Universidad Catlica Madre y Maestra
Vicerrectora Acadmica
Facultad Ciencias de las Ingenieras
Ingeniera en Sistemas y Computacin - ISC
-
7/29/2019 Fund. de Programacin - Tema 2
2/18
ARREGLOS MULTIDIMENSIONALES
Definicin
Secuencia de datos del mismo tipo. A los datos se les llama elementos y se enumeranconsecutivamente: 0, 1, 2, 3, 4, ..., n. A estos nmeros se les llama sub-ndice o valoresde ndices.
Declaracin
tipo nombre_arreglo[numero_elementos];
Ej.: int numero[10]; arreglo numero de 10 elementos.numero[0] es el primer elemento.
numero[9] es el ltimo elemento.
Arreglos
-
7/29/2019 Fund. de Programacin - Tema 2
3/18
ARREGLOS MULTIDIMENSIONALES
Almacenamiento en memoria.
Se almacenan en bloques contiguos.
Tamao del arreglo.
Usando la funcin sizeof, podemos obtener los bytes reservados para elarreglo completo.
Ej. int edades[100];
n= sizeof(edades); n=400, un entero=4bytes
n= sizeof(edades[2]); n = 4; un solo elemento
Arreglos
-
7/29/2019 Fund. de Programacin - Tema 2
4/18
ARREGLOS MULTIDIMENSIONALES
Rango de ndice de un arreglo
El lenguaje C no verifica el valor del ndice de la variable que representa alarreglo.
Inicializacin de un arreglo
Antes de usar un arreglo se debe inicializar.
Ej. int numeros[6] = {10,20,30,40,50,60};
int n[]={3,4,5}; /* arreglo de 3 elementos */
char c[]={L,u,i,s};/* arreglo de 4 elementos */
Los arreglos de caracteres y de cadenas en C, deben finalizar con el carcternulo \0
Arreglos
-
7/29/2019 Fund. de Programacin - Tema 2
5/18
ARREGLOS MULTIDIMENSIONALES
Lo habitual es inicializar un arreglo de carcter con una constantecadena.
Ej. char s[] =Puesta del Sol;
Se pueden asignar constantes simblicas como valores numricos, comosigue:
#define ENE 31
#define FEB 28
#define MAR 31
int meses[12]={ENE,FEB,MAR,...,NOV,DIC};
Para inicializar los arreglos se suelen utilizar bucles: for, while, do-while.Generalmente se inicializan en cero(0)
Arreglos
-
7/29/2019 Fund. de Programacin - Tema 2
6/18
ARREGLOS MULTIDIMENSIONALES
Conjunto de Caracteres. Es un dato compuesto de: un arreglo de caracteres (char), terminado el carcter\0
Por ej. charcadena[]=ABCD, contiene al final el carcter nulo \0, osea, que se agrega una celda ms.
El compilador agrega al final el carcter \0
Cadena[0]= A
Cadena[1]= B
Cadena[2]= C
Cadena[3]= D Cadena[4]= \0
El lenguaje C manipula cadenas a travs de arreglo de caracteres que terminan con el carcter nulo. \0.
Cadenas de Caracteres
A B C D \0
-
7/29/2019 Fund. de Programacin - Tema 2
7/18
ARREGLOS MULTIDIMENSIONALES
Declaracin
Igual que los arreglos, se usa el operador posfijo [],
El tipo de dato base es el char.
char texto[81] /*una linea */
char datos[40]
Inicializacin
char cadena[81]=Esto es una cadena;
No podemos inicializar una cadena fuera de la declaracin, como sigue:
cadena=ALGO; ms adelante veremos la forma correcta.
Cadenas de Caracteres
-
7/29/2019 Fund. de Programacin - Tema 2
8/18
ARREGLOS MULTIDIMENSIONALES
Se usa la funcin scanf() y el formato es %s.
Esta funcin termina de leer cuando encuentra un espacio en blanco fin delnea( osea una palabra).
#include
void main()
{
char s[20];
printf("\n Digite un texto");
scanf(%s,s);
printf( %s \n,s);
}
Cadenas de Caracteres - Lectura
-
7/29/2019 Fund. de Programacin - Tema 2
9/18
ARREGLOS MULTIDIMENSIONALES
gets() : leer dos o ms palabras en una cadena, lee la cadena hasta finde lnea. gets(cadena).
puts() : escribir en la salida una cadena y el fin de lnea. Por lo quesita el puntero de salida en la siguiente lnea. puts(cadena). Salta unalnea.
getchar(): leer carcter a carcter, devuelve el carcter de entrada, atravs del stdin(teclado) . En caso de error o fin de archivo(control-z)devuelve el valor EOF.
putchar(): escribir carcter a carcter, envia el carcter a la salida ostdout(monitor).
Cadenas de Caracteres - Funciones
-
7/29/2019 Fund. de Programacin - Tema 2
10/18
ARREGLOS MULTIDIMENSIONALES
Aqu se lleva a mayscula la 1era. letra de cada palabra de la cadena leda.
#include
#include /* para usar toupper(carcter) */
int main(){
char car, pre = '#';
printf("\n Digite un texto \n");
while ((car=getchar()) != EOF){
if (pre==' ' || pre =='#')
putchar(toupper(car));
else
putchar(car);
pre=car;
}
return 0;
}
Cadenas de Caracteres - Funciones
-
7/29/2019 Fund. de Programacin - Tema 2
11/18
ARREGLOS MULTIDIMENSIONALES
strlen(cadena) : devuelve la longitud de la cadena sin incluir el carcternulo.
strcat(cadenadestino,cadenaorigen) : agrega la cadena origen a la cadena
destino. strncat(c1,c2,n) agrega los primeros n caracteres de c2 a c1.
strcmp(cadena1,cadena2) : compara la cadena1 con la cadena2 y devuelve :0 si cadena1 == cadena2
0 si cadena1 > cadena2
strcpy(cadenadestino,cadenaorigen) : copia la cadena origen a la cadenadestino. strncpy(c1,c2,n)
Cadenas de Caracteres - Funciones
-
7/29/2019 Fund. de Programacin - Tema 2
12/18
ARREGLOS MULTIDIMENSIONALES
Son arreglos con ms de una dimensin y por lo tanto ms de un ndice.
Declaracin [#fila][#columnas]
Ej. char pantalla [25][80];
int puestos [6][8];
Arreglo Multidimensionales
O 1 2 3 4 (n)O
1
2
3
(m)
-
7/29/2019 Fund. de Programacin - Tema 2
13/18
ARREGLOS MULTIDIMENSIONALES
Representacin en memoria
Ej. int m[4][2];
Inicializacin
Se pueden inicializar cuando se declaran.
Ej. int matriz[2][3]={1,3,5,7,9,11};
int matriz[2][3]={{1,3,5},{7,9,11}};
Arreglo Multidimensionales
m[0][0] m[0][1] m[1][0] m[1][1] m[2][0] m[2][1] m[3][0] m[3][1]
-
7/29/2019 Fund. de Programacin - Tema 2
14/18
ARREGLOS MULTIDIMENSIONALES
Asignacin directa de valores.
Modificando la tabla
[Indicefila][Indicecolumna]=valor;
Asignar la tabla a una variable
Variable=[fila][columna];
Ej. tabla[2][3]=10;
ventas = tabla[2][2];
Lectura y Escritura de una tabla
scanf(%d, &tabla[2][2]);
printf(%4d, tabla[2][2]);
Arreglo Multidimensionales
-
7/29/2019 Fund. de Programacin - Tema 2
15/18
ARREGLOS MULTIDIMENSIONALES
Uso de Bucles
int f,c;
for (f=0;f
-
7/29/2019 Fund. de Programacin - Tema 2
16/18
ARREGLOS MULTIDIMENSIONALES
#include
#include
void leer(int a[][5]);
void escribir(const int a[][5]);
int main()
{
int a[3][5];
leer(a);
escribir(a);
system("PAUSE");
return 0;
}
Arreglo Multidimensionales
-
7/29/2019 Fund. de Programacin - Tema 2
17/18
ARREGLOS MULTIDIMENSIONALES
void leer(int a[][5])
{
int i,j;
puts("Introduzca 15 numeros enteros, 5 por fila");
for(i=0;i < 3;i++)
{
printf("Fila %d: ",i);
for(j=0;j
-
7/29/2019 Fund. de Programacin - Tema 2
18/18
ARREGLOS MULTIDIMENSIONALES
void escribir(const int a[][5])
{
int i,j;
for(i=0;i < 3;i++){
for(j=0;j