Introd. a la Algoritmia - Tema 5
-
Upload
miguel-moronta -
Category
Documents
-
view
229 -
download
0
Transcript of Introd. a la Algoritmia - Tema 5
-
7/30/2019 Introd. a la Algoritmia - Tema 5
1/18
Introduccin a la Algoritmia
Leccin 5Manipulacin de
Arreglos y Matrices
Pontificia Universidad Catlica Madre y Maestra
Vicerrectora Acadmica
Facultad Ciencias de las Ingenieras
Ingeniera en Sistemas y Computacin - ISC
16-ene-13
Santiago, Rep. Dom.
-
7/30/2019 Introd. a la Algoritmia - Tema 5
2/18
Manipulacin de Arreglos y Matrices
DefinicinSecuencia de datos del mismo tipo. A los datos se les llama elementos y se
enumeran consecutivamente: 0, 1, 2, 3, 4, ..., n. A estos nmeros se les llama sub-
ndice o valores de ndices.
Declaracintipo 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/30/2019 Introd. a la Algoritmia - Tema 5
3/18
Manipulacin de Arreglos y Matrices
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/30/2019 Introd. a la Algoritmia - Tema 5
4/18
Manipulacin de Arreglos y Matrices
Rango de ndice de un arregloEl lenguaje C no verifica el valor del ndice de la variable que representa alarreglo.
Inicializacin de un arregloAntes 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 elcarcter nulo \0
Arreglos
-
7/30/2019 Introd. a la Algoritmia - Tema 5
5/18
Manipulacin de Arreglos y Matrices
Lo habitual es inicializar un arreglo de carcter con una constante cadena.
Ej. char s[] =Puesta del Sol;
Se pueden asignar constantes simblicas como valores numricos, como
sigue: #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/30/2019 Introd. a la Algoritmia - Tema 5
6/18
Manipulacin de Arreglos y Matrices
Conjunto de Caracteres. Es un dato compuesto de: un arreglo de caracteres (char),
terminado el carcter \0
Por ej. char cadena[]=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]= CCadena[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/30/2019 Introd. a la Algoritmia - Tema 5
7/18
Manipulacin de Arreglos y Matrices
DeclaracinIgual que los arreglos, se usa el operador posfijo [],
El tipo de dato base es el char.
char texto[81] /*una linea */
char datos[40]
Inicializacinchar 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/30/2019 Introd. a la Algoritmia - Tema 5
8/18
Manipulacin de Arreglos y Matrices
Se usa la funcin scanf() y el formato es %s.
Esta funcin termina de leer cuando encuentra un espacio en blanco finde lnea( 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/30/2019 Introd. a la Algoritmia - Tema 5
9/18
Manipulacin de Arreglos y Matrices
gets() : leer dos o ms palabras en una cadena, lee la cadena hasta fin delnea. gets(cadena).
puts() : escribir en la salida una cadena y el fin de lnea. Por lo que sita elpuntero de salida en la siguiente lnea. puts(cadena). Salta una lnea.
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/30/2019 Introd. a la Algoritmia - Tema 5
10/18
Manipulacin de Arreglos y Matrices
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/30/2019 Introd. a la Algoritmia - Tema 5
11/18
Manipulacin de Arreglos y Matrices
strlen(cadena) : devuelve la longitud de la cadena sin incluir el carcternulo.
strcat(cadenadestino,cadenaorigen) : agrega la cadena origen a la cadenadestino. strncat(c1,c2,n) agrega los primeros n caracteres de c2 a c1.
strcmp(cadena1,cadena2) : compara la cadena1 con la cadena2 ydevuelve : 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/30/2019 Introd. a la Algoritmia - Tema 5
12/18
Manipulacin de Arreglos y Matrices
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/30/2019 Introd. a la Algoritmia - Tema 5
13/18
Manipulacin de Arreglos y Matrices
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/30/2019 Introd. a la Algoritmia - Tema 5
14/18
Manipulacin de Arreglos y Matrices
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/30/2019 Introd. a la Algoritmia - Tema 5
15/18
Manipulacin de Arreglos y Matrices
Uso de Bucles
int f,c;
for (f=0;f
-
7/30/2019 Introd. a la Algoritmia - Tema 5
16/18
Manipulacin de Arreglos y Matrices
#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/30/2019 Introd. a la Algoritmia - Tema 5
17/18
Manipulacin de Arreglos y Matrices
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/30/2019 Introd. a la Algoritmia - Tema 5
18/18
Manipulacin de Arreglos y Matrices
void escribir(const int a[][5])
{
int i,j;
for(i=0;i < 3;i++)
{
for(j=0;j