Gabriel Navarro (email: gnavarro@ugr.es) 2 Objetivos del tema Conocer el concepto de vector y matriz en programacin Aprender a utilizar vectores y matrices en C !b"sico# Aprender a utilizar vectores y matrices en C !mdulos y estructuras# Conocer el dise$o de cadenas de caracteres en C Conocer algoritmos b"sicos de b%s&ueda en vectores Conocer algoritmos b"sicos de ordenacin de vectores Fundamentos de Programacin. Tema4: Vectores y matrices 3 V'CTO(') Fundamentos de Programacin. Tema4: Vectores y matrices 4 Vectores Fundamentos de Programacin. Tema4: Vectores y matrices *n Vector es un tipo de dato compuesto &ue permite almacenar un gran n%mero de valores del mismo tipo. 'jemplo+ Variable notas, con -.. componentes de tipo real double notas[500]; /.0 1.- ... 2. notas3.4 notas324 ... notas34//4 notas 5eclaracin de variables de tipo vector+ Tipo5e5ato 6denti7icador3Componentes4 5 Vectores. 'jemplo !media5.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 5eclaracin del vector 8valores9 *so del vector 8valores9 6 Vectores. 'rrores comunes Fundamentos de Programacin. Tema4: Vectores y matrices 'rrores t:picos en la declaracin+ int n;2..< c=ar vector23n4< bool vector>3.4< int vector?3@?>4< 'rrores t:picos en el uso de vectores+ int vector232..4< vector232..4; ?< int vector23-.4< vector2324?4; @4< int vector231A4< vector23@2?4; @/< Buen uso de vectores+ int vector232..4< vector232..4; ?< int vector232..4< vector23.4; ?< int vector232..4< vector23//4; @4< int vector232..4< vector234A4; ?< 7 Vectores. 6nicializacin !inicializacion.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices Cos vectores se pueden inicializar de di7erentes 7ormas+ 8 Vectores+ )u n%mero de componentes. Fundamentos de Programacin. Tema4: Vectores y matrices )i se de7ine un vector v con un n%mero m"Dimo de componentes E, entonces v tiene sus componentes desde v3.4 =asta v3E@24. 'l n%mero de componentes utilizadas no tiene por&uF ser E !puede ser menor#. Gay dos 7ormas de controlar el n%mero de componentes %tiles de un vector+ Con una variable eDtra &ue contenga el n%mero de componentes utilizadas. Con un valor centinela. 'ste deber" ser alg%n valor no utilizado &ue no tenga sentido &ue se incluya en el vector, 9 Vectores+ Componentes %tiles con variable auDiliar. 'jercicio !alumnos.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 'n una clase caben 2.. alumnos. Ho obstante, el n%mero de alumnos puede variar de un curso a otro. (ealice un programa &ue pida por teclado el n%mero de alumnos del curso actual, seguido de la nota 7inal !numFrica de . a 2.# de cada uno de ellos. Ior %ltimo, el programa mostrar" por pantalla la media y la desviacin t:pica de las notas de los alumnos del curso. JK JK ... JK notas3.4 notas324 ... notas3//4 notas numAlumnos+ H%mero de componentes utilizadas del vector 8notas9 10 Vectores. 'jercicio !alumnos.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 5eclaracin v"lida+ MAEAC*MHO) es constante. 11 Vectores. 'jercicio !alumnos.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices *so correcto del vector 8notas9, ya &ue+ . L; i L numAlumnos L; MAEAC*MHO) 12 Vectores+ Componentes %tiles con centinela. 'jercicio !alumnoscentinela.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 'n una clase caben 2.. alumnos. Ho obstante, el n%mero de alumnos puede variar de un curso a otro. (ealice un programa &ue pida por teclado el n%mero de alumnos del curso actual, seguido de la nota 7inal !numFrica de . a 2.# de cada uno de ellos. Ior %ltimo, el programa mostrar" por pantalla la media y la desviacin t:pica de las notas de los alumnos del curso. JK JK ... JK notas3.4 notas324 ... notas3//4 notas Valor centinela+ @2. Ho tiene sentido una nota igual a @2. 13 Vectores+ Componentes %tiles con centinela. 'jercicio !alumnoscentinela.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 5e7inicin del valor centinela Iedimos datos =asta llenar el vector o encontrar el centinela 14 Vectores+ Componentes %tiles con centinela. 'jercicio !alumnoscentinela.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices Gallamos media y desTip =asta encontrar el centinela 15 Vectores y mdulos+ Vector como par"metro de entrada Fundamentos de Programacin. Tema4: Vectores y matrices Ca 7orma cl"sica de indicar &ue un vector es entrada a un mdulo !7uncin, procedimiento o mFtodo de clase# es la siguiente+ Tipo)alida 6denti7icador!const Tipo 6denti7icador3 4, ...# 'jemplo+ Funcin para calcular el m:nimo valor de un vector con un n%mero de componentes %tiles igual a n. int minimo!const double v3 4, int n#< MM*H V'CTO( H*HCA debe 5'VOCV'()' COH *H returnNN 16 Vectores y mdulos+ Vector como par"metro de salida Fundamentos de Programacin. Tema4: Vectores y matrices Iara poder modi7icar las componentes de un vector es necesario pasar sus componentes por re7erencia+ Tipo)alida 6denti7icador!Tipo 6denti7icador3 4, ...# 'jemplo+ Irocedimiento para ordenar las componentes de un vector de menor a mayor con n componentes %tiles. void Ordena5eMenorAMayor! int vec3 4, int n#< MM*H V'CTO( H*HCA debe 5'VOCV'()' COH *H returnNN )e escribe sin const )e escribe sin O 17 Vectores y mdulos+ 'jercicio !paresimpares.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices Gacer un mdulo &ue tenga como entrada un vector de enteros y &ue muestre por pantalla las componentes de este vector. Gacer un mdulo &ue tenga como entrada un vector de enteros. Como salida, este mdulo debe devolver otros > vectores, cada uno conteniendo %nicamente los n%meros pares o impares &ue se encuentran en el primer vector. Gacer un programa de ejemplo &ue muestre el uso de estos mdulos. 18 Vectores y mdulos+ 'jercicio !paresimpares.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 19 Vectores y mdulos+ 'jercicio !paresimpares.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 20 Vectores y mdulos+ 'jercicio !paresimpares.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 21 Vectores y mdulos+ 'jercicio !paresimpares.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 22 Vectores y mdulos+ 'jercicio !repetidos>vectores.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices Gacer un mdulo &ue tenga como entrada un vector de double. Como salida, este mdulo debe devolver otro vector, con las mismas componentes &ue el primero pero sin valores repetidos. Gacer un programa de ejemplo &ue muestre el uso de estos mdulos. 23 Vectores y mdulos+ 'jercicio !repetidos2vector.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices Gacer un mdulo &ue tenga como entrada un vector de double. Como salida, este mdulo debe devolver el mismo vector, con componentes sin valores repetidos. 65'A+ 5esplazar las componentes =acia la iz&uierda cuando encontremos un valor repetido !ver cdigo 7uente#. 2 4 2 ? ? > 2 *tiles;A 2 4 ? ? > 2 2 *tiles;1 2 4 ? ? > 2 2 *tiles;- 2 4 ? ? > 2 2 *tiles;- 2 4 ? > > 2 2 *tiles;4 24 Vectores y clases+ 'jercicio !conjuntoenteros.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 5ise$ar una clase &ue represente un conjunto de n%meros enteros. 6mplemente mFtodos para+ 6nicializar el conjunto a vac:o !sin elementos#. A$adir o &uitar un elemento al conjunto. Mostrar el conjunto por pantalla. Gacer la interseccin de dos conjuntos. Gacer la unin de dos conjuntos. 5evolver el n%mero de elementos del conjunto. 5evolver un elemento dado del conjunto. HOTA+ *n conjunto no puede tener elementos repetidos. 25 Vectores y clases+ 'jercicio !conjuntoenteros.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 'l conjunto lo representamos como vector 8v9 y componentes %tiles 8nv9 26 Vectores y clases+ 'jercicio !conjuntoenteros.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 6mplementamos una 7uncin privada 8esta9, para saber si un elemento ya est" en el conjunto Tanto 8nv9 como 8v9 son globales a todos los mFtodos del objeto actual, y se pueden utilizar como variables de los mFtodos. 27 Vectores y clases+ 'jercicio !conjuntoenteros.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices en 86nsertar9 slo se inserta si el conjunto no est" lleno y el elemento no est" ya en el mismo. 28 Vectores y clases+ 'jercicio !conjuntoenteros.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 8Borrar9 busca el elemento. *na vez encontrado en la posicin 8i9, lo elimina desplazando todas las componentes desde 8i29 al 7inal, una componente a la iz&uierda 29 Vectores y clases+ 'jercicio !conjuntoenteros.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices Ca interseccin inserta en el objeto actual los elementos &ue est"n en c2 y en c> Acceso a c2.v3i4, c2.nv, c>.esta!...# v"lido+ )on privados, pero se ejecutan dentro del "mbito de la clase Clamada a mFtodo privado 8esta!...#9 de c> Clamada a mFtodo 6nsertar!...# del objeto actual. 30 Vectores y clases+ 'jercicio !conjuntoenteros.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices Ca unin copia c2.v y c2.nv en el objeto actual. Iosteriormente, se a$aden todos los elementos de c> &ue a%n no est"n en el objeto actual. Clamada a mFtodo privado 8esta!...#9 del objeto actual, con el valor de entrada igual a la i@Fsima componente del vector v del objeto c>. 31 Vectores y clases+ 'jercicio !conjuntoenteros.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 'jemplo de uso+ 2. 6nicializamos los conjuntos a vac:o. >. Iedimos las componentes del conjunto y las insertamos. OPO+ Fuera del "mbito de la clase slo tenemos acceso a su parte publica. 32 Vectores y clases+ 'jercicio !conjuntoenteros.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 33 Vectores y clases+ 'jercicio !conjuntoenteros.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 'jemplos de uso de 6nterseccin, *nin y Borrar elementos. 34 M"s sobre vectores y mdulos Fundamentos de Programacin. Tema4: Vectores y matrices Gemos estudiado &ue la 7orma de pasar un vector a un mdulo es la siguiente+ int mi7uncion!double v3 4#< )in embargo, tambiFn se puede =acer indicando su n%mero de componentes m"Dimo+ int mi7uncion!double v32..4#< Otra alternativa es sustituir los 3 4 por un Q antes del identi7icador+ int mi7uncion!double Qv#< Cas ? 7ormas son e&uivalentes. 35 Cadenas de caracteres Fundamentos de Programacin. Tema4: Vectores y matrices *na cadena de caracteres es un vector de caracteres controlado por centinela. 'l centinela de todas las cadenas de caracteres en C es el caracter RS.R. 'jemplo+ Funcin para calcular la longitud de una cadena de caracteres @clon de strlen- !strlen.cpp): 36 Cadenas de caracteres+ 6nicializacin y (epresentacin Fundamentos de Programacin. Tema4: Vectores y matrices c=ar jaime32..4; 8jaime9< c=ar v>3 4; 8=ola9< RjR RaR RiR RmR ReR RS.R K... K R=R RoR RlR RaR RS.R Vector de2.. caracteres !m"Dimo //caracter RS.R# Vector de - caracteres !m"Dimo 4caracter RS.R# MC*65A5ON *na cadena de caracteres slo puede tener =asta 2 caracter %til menos del n%mero con el &ue 7ue reservado !el %ltimo debe reservarse para el valor centinela RS.R#. 37 Cadenas de caracteres. 'jemplo !palindromo.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 38 Vectores de clases Fundamentos de Programacin. Tema4: Vectores y matrices Veamos cmo podemos utilizar vectores de clases con un ejemplo+ 6mplementar una clase Iunto?5 &ue represente un punto en ? dimensiones (! "! #). Ca clase deber" tener mFtodos para asignar las coordenadas del punto y para obtener cada punto por separado. Gacer un programa &ue lea un vector de n puntos introducidos por teclado y &ue cree un punto resultante de la suma de las dimensiones de cada punto en el vector. )olucin+ 7ic=ero punto?d.cpp 39 Vectores de clases !punto?d.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 40 Vectores de clases !punto?d.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 41 ACTO(6TMO) 5' BU)V*'5A W O(5'HAC6XH Fundamentos de Programacin. Tema4: Vectores y matrices 42 Algoritmos de b%s&ueda+ B%s&ueda secuencial !bus&uedasecuencial.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices )e recorre el vector de principio a 7in =asta &ue se encuentra el valor buscado. )e devuelve la posicin donde se encontr, o @2 en caso contrario. 43 Algoritmos de b%s&ueda+ B%s&ueda binaria Fundamentos de Programacin. Tema4: Vectores y matrices )e devuelve la posicin donde se encontr, o @2 en caso contrario. 'ste algoritmo presupone &ue el vector est" ordenado. )e divide el vector en > mitades. )e descarta la mitad donde no est" el valor y se vuelve a ejecutar el proceso con la otra mitad. 'jemplo+ Buscar el 4. @A ? 4 A 2. 2? 2- >A inicio centro 7in @A ? 4 centro 4 inicio, centro, 7in 44 Algoritmos de b%s&ueda+ B%s&ueda binaria !bus&uedabinaria.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 45 Algoritmos de ordenacin Fundamentos de Programacin. Tema4: Vectores y matrices Cos algoritmos de ordenacin sirven para ordenar los elementos de un vector de acuerdo a un orden especi7icado !al7abFtico, numFrico ascendente, numFrico descendente...#. Vamos a estudiar ? algoritmos cl"sicos de ordenacin+ Ordenacin por seleccin. Ordenacin por burbuja. Ordenacin por insercin. 46 Algoritmo de ordenacin por seleccin+ Conceptos Fundamentos de Programacin. Tema4: Vectores y matrices Ca idea general de este algoritmo es la siguiente+ 2. Comenzar por la primera componente, i; .< >. Buscar la componente del vector de valor m:nimo, entre la componente i y el 7inal del vector. ?. 6ntercambiar el valor de la componente i por el valor de la componente en la &ue se encontr el m:nimo valor. 4. Gacer i para pasar a la siguiente componente y volver al paso > =asta &ue se recorra todo el vector. 47 Algoritmo de ordenacin por seleccin. 6mplementacin !ordseleccion.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 48 Algoritmo de ordenacin por seleccin. 6mplementacin !ordseleccion.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices >? 4- A0 8 ?> -1 0 4- A0 23 ?> -1 0 >? A0 4- 32 -1 0 >? ?> 45 A0 -1 0 >? ?> 4- A0 56 0 >? ?> 4- -1 78 6teracin 2 6teracin > 6teracin ? 6teracin 4 6teracin - 6teracin 1 49 Algoritmo de ordenacin por burbuja+ Conceptos Fundamentos de Programacin. Tema4: Vectores y matrices Ca idea general de este algoritmo es la siguiente+ 2. Gacer i; .< >.Comenzar desde el 7inal del vector, comparando cada elemento con su anterior e intercambiando estos elementos si el anterior es mayor &ue el actual, =asta llegar a la primera componente i ?. Wa tenemos el m:nimo elemento en i; .. 4. Gacer i para pasar a la siguiente componente y volver al paso > =asta &ue no se =aga ning%n cambio. 50 Algoritmo de ordenacin por burbuja. 6mplementacin !ordburbuja.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 51 Algoritmo de ordenacin por burbuja. 6mplementacin !ordburbuja.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices >? 4- A0 0 ?> -1 >? 4- 0 A0 ?> -1 6teracin 2 !i;., j;?# !i;., j;># !i;., j;2# Fin iteracin 2 >? 0 4- A0 ?> -1 0 >? 4- A0 ?> -1 Fin iteracin > 0 >? 32 4- 78 -1 Fin iteracin ? 0 >? ?> 4- 56 78 ... y Fin del algoritmo. 52 Algoritmo de ordenacin por insercin+ Conceptos Fundamentos de Programacin. Tema4: Vectores y matrices Ca idea general de este algoritmo es la siguiente+ 2. Gacer i; .< >. Iartimos de &ue el vector se divide en dos subvectores, uno ya ordenado desde el comienzo =asta i, y otro desordenado desde i2 =asta el 7inal. ?. )e selecciona el primer elemento del vector desordenado y se desplaza =acia la iz&uierda =asta su posicin. 4. Gacer i para pasar a la siguiente componente y volver al paso >. 53 Algoritmo de ordenacin por insercin. 6mplementacin !ordinsercion.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 54 Algoritmo de ordenacin por insercin. 6mplementacin !ordinsercion.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 23 45 A0 0 ?> -1 6teracin 2 >? 4- A0 0 ?> -1 6teracin > 23 45 78 0 ?> -1 6teracin ? 0 >? 45 A0 32 -1 6teracin 4 0 >? ?> 4- 78 56 6teracin - 0 >? ?> 4- -1 A0 Fin del algoritmo. 55 MAT(6C') Fundamentos de Programacin. Tema4: Vectores y matrices 56 Matrices !leematriz.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices *na matriz puede verse como un vector donde cada componente es, a su vez, otro vector. 'jemplo+ 5eclaracin de una matriz de ? 7ilas y - columnas. Bucle para recorrer las 7ilas !desde i;....>#. 57 Matrices !leematriz.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices *na matriz puede verse como un vector donde cada componente es, a su vez, otro vector. 'jemplo+ 5eclaracin de una matriz de ? 7ilas y - columnas. Bucle para recorrer las columnas !desde j;....-# de la i@Fsima 7ila. 58 Matrices !leematriz.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices *na matriz puede verse como un vector donde cada componente es, a su vez, otro vector. 'jemplo+ 5eclaracin de una matriz de ? 7ilas y - columnas. Acceso a la componente de la i@Fsima 7ila y la j@Fsima columna de la matriz m. )e necesitan > constantes para el tama$o de una matriz+ 7ilas y columnas. 59 Matrices+ 6nicializacin Fundamentos de Programacin. Tema4: Vectores y matrices Ca inicializacin de matrices se puede =acer de varias 7ormas+ int m3>43?4; Y Y 2, >, ?Z, Y4, -, 1Z Z< int m3>43?4; Y Y 2 Z, Y4, -, 1Z Z< int m3>43?4; Y 2, >, ?, 4, - Z< m; 2 > ? 4 - 1 m; 2 . . 4 - 1 m; 2 > ? 4 - . 60 Matrices+ (epresentacin interna Fundamentos de Programacin. Tema4: Vectores y matrices Cas matrices de C se almacenan en memoria por 7ilas, consecutivamente+ int m3>43?4; Y Y 2, >, ?Z, Y4, -, 1Z Z< (epresentacin en memoria+ K K 2 > ? 4 - 1 K K K K m Otros datos Fila 2 Fila > 61 Matrices multidimensionales Fundamentos de Programacin. Tema4: Vectores y matrices C tambiFn permite crear matrices de m"s de > dimensiones+ 5eclaracin de matrices de m"s de > dimensiones+ Acceso a la componente de la j@Fsima columna, de la i@Fsima 7ila, de la pro7undidad [ de una matriz m. 62 Matrices multidimensionales Fundamentos de Programacin. Tema4: Vectores y matrices C tambiFn permite crear matrices de m"s de > dimensiones+ 5eclaracin de matrices de m"s de > dimensiones+ Acceso a la componente de la j@Fsima columna, de la i@Fsima 7ila, de la pro7undidad [ de una matriz m. 63 Matrices+ 'jemplo !buscarmatriz.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices Irograma para buscar un elemento en una matriz ?5+ 64 Matrices+ 'jemplo !buscarmatriz.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices Irograma para buscar un elemento en una matriz ?5+ 65 Matrices+ 'jemplo !buscarmatriz.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices Irograma para buscar un elemento en una matriz ?5+ 66 Matrices y mdulos Fundamentos de Programacin. Tema4: Vectores y matrices Cas matrices se pasan como par"metro a los mdulos de la siguiente 7orma+ tipo modulo! const tipoMatriz matriz3 43COC4 #< tipo modulo! tipoMatriz matriz3 43COC4 #< Iaso por valor Iaso por re7erencia COC es un valor o un identi7icador de constante con las columnas de la matriz. 67 Matrices y mdulos Fundamentos de Programacin. Tema4: Vectores y matrices )i es una matriz multidimensional, slo se puede omitir el valor de los primeros corc=etes+ tipo modulo! const tipoMatriz matriz3 43F6C43COC4 #< tipo modulo! tipoMatriz matriz3 43F6C43COC4 #< Iaso por valor Iaso por re7erencia F6C, COC son valores o identi7icadores de constantes con las 7ilas\columnas de la matriz. 68 Matrices y mdulos. 'jemplo+ Mdulo para leer una matriz por teclado !leermatrizmodulo.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 69 Matrices y mdulos. 'jemplo+ Mdulo para leer una matriz por teclado !leermatrizmodulo.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 70 Matrices y mdulos. 'jemplo+ Mdulo para leer una matriz por teclado !leermatrizmodulo.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 71 Matrices y mdulos. 'jemplo+ Buscar un valor en una matriz !buscarmatrizmodulo.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 72 Filas de matrices como vectores !ordenarmatriz.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices 5ado &ue la representacin de una matriz es como un vector de vectores, cada 7ila de la matriz puede utilizarse en C como si se tratase de un vector. 'jemplo+ Irograma para ordenar los elementos de cada 7ila de una matriz por el algoritmo de insercin+ 73 Filas de matrices como vectores !ordenarmatriz.cpp# Fundamentos de Programacin. Tema4: Vectores y matrices Ca 7ila i@Fsima se pasa al algoritmo de insercin como un vector 74 5nde estudiar este tema Fundamentos de Programacin. Tema4: Vectores y matrices Antonio Tarrido, Fundamentos de Irogramacin en C, 5elta Iublicaciones, >..1. I"ginas 2>-@21>. 5eitel O 5eitel. C+ Cmo Irogramar. )eDta edicin, Irentice Gall@Iearson, >..0 I"ginas >->@?20