Arreglos
Operaciones especiales
• Suma implicita de elementos del arreglo:
  – Arr[i]+=5 -- significa que al elemento i se le suma
    el valor de 5 y se guarda en ese elemento
  – Al igual que la suma se puede realizar la división u
    otra operación
• Incremento de elementos:
  – ++arreglo[i] o arreglo[i]++ -- incrementa el
    elemento i en 1
Operaciones con arreglos
• Recorrido y operaciones con elementos de
  arreglos
  – While (i<5) Arr[i++]+=2; – En un arreglo de 5
    elementos, sumarle 2 a cada elemento
• Tamibien se puede utilizar la variante de
  incremento en 1
  – While (i<5) Arr[i++]++; o al revés ++Arr[i++]; Se
    reducen líneas de código en forma significativa
Arreglos multidimensiones
• Bidimensionales o multidimensionales
  – Utilización de 2 ó más índices al momento de las
    declaraciones
  – Utilización de 2 ó más for uno para el ciclo de
    cada indice
• Operaciones tradicionales similares a los
  unidimensionales
Arreglos multidimensionales
• La carga es similar que con las
  unidimensionales
• Otra forma de carga es:
  – Int arre[3][3]={{1,2,3},
                    {4,5,6},
                    {7,8,9}};
• Los elementos se referencia según su posición
  de fila y columna
Funciones y Arreglos
• Prototipo de funciones con referencia a
  arreglos unidimensionales
  – Tipo1 ndefuncion (tipo2 [], tipo3 ); Tipo1 es el
    tipo de retorno de funciones, tipo2 tipo de datos
    del arreglo, tipo3 es el tipo de dato del tamaño del
    arreglo. Estos dos datos deben ser enviados
    dentro de las funciones
Funciones y Arreglos
• Definición de funciones con arreglos
  unidimensionales
  – Tipo1 ndefuncion (tipo2 nom[], tipo3 var)
     • tipo1 es el tipo de retorno de funciones, tipo2 tipo de
       datos del arreglo, nom es el nombre del arreglo, tipo3
       es el tipo de dato de la variable var cantidad de
       elementos. Estos tres datos son recibido en las
       funciones.
Funciones y Arreglos
• Llamada de funciones con referencia a
  arreglos unidimensionales
  – ndefuncion (nom, var);
  – Donde nom es el nombre del arreglo y var la
    cantidad de elementos del arreglo.
  – La facilidad de esta llamada es que sólo requiere
    enviar el nombre del arreglo unidimensional.
Conceptualización de los Arreglos
• Todos los arreglos son declarados a nivel de
  memoria, dentro del computador, por ello una
  vez declarado puede ser referenciado a nivel
  de memoria desde el programa y desde
  cualquiera función
• Cómo sucede esto?
Arreglos en memoria
• Al declarar un arreglo se crea una referencia en
  la memoria, al primer elemento del arreglo.
• Es por eso que basta con utilizar el nombre del
  arreglo para tener acceso a todos los
  elementos del mismo. Aquí el arreglo
     int ARR[5];
             2     5     10    9      3
              0     1     2     3     4
La función FUN con el arreglo ARR
• Int FUN (int [], int);
• Primera Línea de la definición:
  – Int FUN (int ARR[], int n)
• La llamada de FUN:
  – Sale= FUN(ARR, n);
Funciones y Arreglos
• Prototipo de funciones con referencia a
  arreglos multidimensionales
  – Tipo1 ndefuncion (tipo2 [][tam], tipo3, tipo 4 );
    Tipo1 es el tipo de retorno de funciones, tipo2
    tipo de datos del arreglo, tipo3 es el tipo de dato
    de la cantidad de filas, tipo4 es el tipo de dato de
    la cantidad de columnas. Estos tres datos deben
    ser enviados dentro de las funciones.
  – tam debe tener un valor definido a la hora del
    prototipo
Funciones y Arreglos
• Definición de funciones con arreglos
  multidimensionales
  – Tipo1 ndefuncion (tipo2 nom [][tam], tipo3 var1,
    tipo 4 var2)
     • tipo1 es el tipo de retorno de funciones, tipo2 tipo de
       datos del arreglo, nom es el nombre del arreglo, tipo3
       es la cantidad de filas identificada en la variable var1 y
       la cantidad de columnas identificada en la variable
       var2. Estos tres datos son recibido en las funciones.
     • tam es un valor necesario y que debe ser especificado
       en la función
Funciones y Arreglos
• Llamada de funciones con referencia a
  arreglos multidimensionales
  – ndefuncion (nom, var1, var2);
  – Donde nom es el nombre del arreglo, var1 y var2
    la cantidad de filas del arreglo y cantidad de
    columnas, respectivamente.
  – La facilidad de esta llamada es que sólo requiere
    enviar el nombre del arreglo multidimensional y
    las cantidades de filas y columnas.
Conceptualización de los Arreglos
• Como se dijo en la sección de los arreglos
  unidimensionales, estos son declarados a
  nivel de memoria, dentro del computador, por
  ello una vez declarado puede ser referenciado
  a nivel de memoria desde el programa y desde
  cualquiera función
• Por ejemplo:
Arreglos en memoria
• Al declarar un arreglo se crea una referencia en
  la memoria, al primer elemento del arreglo, es
  decir el elemento [0][0].
• Aquí el arreglo bidimensional como por
  ejemplo: int TAB[3][3];      0    1     2


        Primer
                         0   1     6     3
        elemento es el   1
        ARR[0][0]            5     0     2
                         2
                             2     5     10
La función FUN1 con el arreglo TAB
• Int FUN (int [][3], int, int); //prototipo
• Primera Línea de la definición:
   – Int FUN (int TAB[][3], int n, int s) //n número de
     filas, s número de columnas
• La llamada de FUN:
   – Sale= FUN(TAB, n, s);
Suma y Resta de vectores
//Inicio del programa comentarios y prototipos
                                                                case 4:
{
                                                                       printf(“Fin del proceso”); break;
Int A[6]={2,4,5,1,9,3}, B[6]={0,2,3,1,4,8}, i, C[6], opc=1,
                                                                 default:
while(opc!=4){
Switch(Opc=menu()){                                                    printf(“Opción inválida”);
   case 1:                                                      }// fin del case
           for(i=0;i<6;i++)                                    }//fin del while
              C[i]=A[i]+B[i];                                 }// fin del programa
            break;
  case 2:                                                     Int menu(){
           for(i=0;i<6;i++)                                   Int o;
              C[i]=A[i]-B[i];                                 printf(“MENUn”); printf(“1. Suma de elementosn”);
            break;                                            printf(“2. Diferencia de Elementosn”);
  case 3:                                                     printf(“3. Impresión de Elementos de los
          printf(“Los elementos del Vector A: ”)              vectoresn”);
          for(i=0;i<6;i++)                                    printf(“4. Salirn”);
              printf( “%d|”,A[i]);                            printf(“Seleccione su opción ”);
         printf(“Los elementos del Vector B: ”)               scanf(“%d”,&o);
         for(i=0;i<6;i++)
                                                              Return o;
              printf( “%d|”,B[i]);
                                                              }// fin de la función de impresión de menú
        printf(“Los elementos del Vector C: ”)
        for(i=0;i<6;i++)
              printf( “%d|”,C[i]);
        break;
Suma y Resta de vectores
//Inicio del programa comentarios y prototipos          // Funciones
Void suma(int[], int[], int[], int);                   Int menu(){
Void resta(int[], int[], int[], int);                  Int o;
Void imprime(int[], int[], int[], int);                printf(“MENUn”); printf(“1. Suma de elementosn”);
                                                       printf(“2. Diferencia de Elementosn”); printf(“3. Impresión
Int menu(void);                                        de Elementos de los vectoresn”); printf(“4. Salirn”);
Void main(void)                                        printf(“Seleccione su opción ”); scanf(“%d”,&o);
{                                                      return o;
Int A[6]={2,4,5,1,9,3}, B[6]={0,2,3,1,4,8}, i, C[6],   }// fin de la función de impresión de menú
opc=1,n=6;                                             Void suma(A[], int B[], int C[], int p){
while(opc!=4){                                                for(i=0;i<p;i++)
Switch(Opc=menu()){                                                C[i]=A[i]+B[i];}
   case 1: suma(A, B, C, n); break;                    Void resta suma(A[], int B[], int C[], int p){
                                                               for(i=0;i<p;i++)
   case 2: resta(A, B, C, n); break;
                                                                   C[i]=A[i]-B[i];}
   case 3: imprime(A, B, C, n); break;
                                                       Void imprime(A[], int B[], int C[], int p){
   case 4:
                                                               printf(“Los elementos del Vector A: ”) ;
          printf(“Fin del proceso”); break;                    for(i=0;i<p;i++)
     default:                                                       printf( “%d|”,A[i]);
          printf(“Opción inválida”);                           printf(“Los elementos del Vector B: ”)
    }// fin del case                                           for(i=0;i<p;i++)
  }//fin del while                                                  printf( “%d|”,B[i]);
}// fin del programa                                           printf(“Los elementos del Vector C: ”)
                                                               for(i=0;i<p;i++)
                                                                    printf( “%d|”,C[i]); }

Arreglos

  • 1.
  • 2.
    Operaciones especiales • Sumaimplicita de elementos del arreglo: – Arr[i]+=5 -- significa que al elemento i se le suma el valor de 5 y se guarda en ese elemento – Al igual que la suma se puede realizar la división u otra operación • Incremento de elementos: – ++arreglo[i] o arreglo[i]++ -- incrementa el elemento i en 1
  • 3.
    Operaciones con arreglos •Recorrido y operaciones con elementos de arreglos – While (i<5) Arr[i++]+=2; – En un arreglo de 5 elementos, sumarle 2 a cada elemento • Tamibien se puede utilizar la variante de incremento en 1 – While (i<5) Arr[i++]++; o al revés ++Arr[i++]; Se reducen líneas de código en forma significativa
  • 4.
    Arreglos multidimensiones • Bidimensionaleso multidimensionales – Utilización de 2 ó más índices al momento de las declaraciones – Utilización de 2 ó más for uno para el ciclo de cada indice • Operaciones tradicionales similares a los unidimensionales
  • 5.
    Arreglos multidimensionales • Lacarga es similar que con las unidimensionales • Otra forma de carga es: – Int arre[3][3]={{1,2,3}, {4,5,6}, {7,8,9}}; • Los elementos se referencia según su posición de fila y columna
  • 6.
    Funciones y Arreglos •Prototipo de funciones con referencia a arreglos unidimensionales – Tipo1 ndefuncion (tipo2 [], tipo3 ); Tipo1 es el tipo de retorno de funciones, tipo2 tipo de datos del arreglo, tipo3 es el tipo de dato del tamaño del arreglo. Estos dos datos deben ser enviados dentro de las funciones
  • 7.
    Funciones y Arreglos •Definición de funciones con arreglos unidimensionales – Tipo1 ndefuncion (tipo2 nom[], tipo3 var) • tipo1 es el tipo de retorno de funciones, tipo2 tipo de datos del arreglo, nom es el nombre del arreglo, tipo3 es el tipo de dato de la variable var cantidad de elementos. Estos tres datos son recibido en las funciones.
  • 8.
    Funciones y Arreglos •Llamada de funciones con referencia a arreglos unidimensionales – ndefuncion (nom, var); – Donde nom es el nombre del arreglo y var la cantidad de elementos del arreglo. – La facilidad de esta llamada es que sólo requiere enviar el nombre del arreglo unidimensional.
  • 9.
    Conceptualización de losArreglos • Todos los arreglos son declarados a nivel de memoria, dentro del computador, por ello una vez declarado puede ser referenciado a nivel de memoria desde el programa y desde cualquiera función • Cómo sucede esto?
  • 10.
    Arreglos en memoria •Al declarar un arreglo se crea una referencia en la memoria, al primer elemento del arreglo. • Es por eso que basta con utilizar el nombre del arreglo para tener acceso a todos los elementos del mismo. Aquí el arreglo int ARR[5]; 2 5 10 9 3 0 1 2 3 4
  • 11.
    La función FUNcon el arreglo ARR • Int FUN (int [], int); • Primera Línea de la definición: – Int FUN (int ARR[], int n) • La llamada de FUN: – Sale= FUN(ARR, n);
  • 12.
    Funciones y Arreglos •Prototipo de funciones con referencia a arreglos multidimensionales – Tipo1 ndefuncion (tipo2 [][tam], tipo3, tipo 4 ); Tipo1 es el tipo de retorno de funciones, tipo2 tipo de datos del arreglo, tipo3 es el tipo de dato de la cantidad de filas, tipo4 es el tipo de dato de la cantidad de columnas. Estos tres datos deben ser enviados dentro de las funciones. – tam debe tener un valor definido a la hora del prototipo
  • 13.
    Funciones y Arreglos •Definición de funciones con arreglos multidimensionales – Tipo1 ndefuncion (tipo2 nom [][tam], tipo3 var1, tipo 4 var2) • tipo1 es el tipo de retorno de funciones, tipo2 tipo de datos del arreglo, nom es el nombre del arreglo, tipo3 es la cantidad de filas identificada en la variable var1 y la cantidad de columnas identificada en la variable var2. Estos tres datos son recibido en las funciones. • tam es un valor necesario y que debe ser especificado en la función
  • 14.
    Funciones y Arreglos •Llamada de funciones con referencia a arreglos multidimensionales – ndefuncion (nom, var1, var2); – Donde nom es el nombre del arreglo, var1 y var2 la cantidad de filas del arreglo y cantidad de columnas, respectivamente. – La facilidad de esta llamada es que sólo requiere enviar el nombre del arreglo multidimensional y las cantidades de filas y columnas.
  • 15.
    Conceptualización de losArreglos • Como se dijo en la sección de los arreglos unidimensionales, estos son declarados a nivel de memoria, dentro del computador, por ello una vez declarado puede ser referenciado a nivel de memoria desde el programa y desde cualquiera función • Por ejemplo:
  • 16.
    Arreglos en memoria •Al declarar un arreglo se crea una referencia en la memoria, al primer elemento del arreglo, es decir el elemento [0][0]. • Aquí el arreglo bidimensional como por ejemplo: int TAB[3][3]; 0 1 2 Primer 0 1 6 3 elemento es el 1 ARR[0][0] 5 0 2 2 2 5 10
  • 17.
    La función FUN1con el arreglo TAB • Int FUN (int [][3], int, int); //prototipo • Primera Línea de la definición: – Int FUN (int TAB[][3], int n, int s) //n número de filas, s número de columnas • La llamada de FUN: – Sale= FUN(TAB, n, s);
  • 18.
    Suma y Restade vectores //Inicio del programa comentarios y prototipos case 4: { printf(“Fin del proceso”); break; Int A[6]={2,4,5,1,9,3}, B[6]={0,2,3,1,4,8}, i, C[6], opc=1, default: while(opc!=4){ Switch(Opc=menu()){ printf(“Opción inválida”); case 1: }// fin del case for(i=0;i<6;i++) }//fin del while C[i]=A[i]+B[i]; }// fin del programa break; case 2: Int menu(){ for(i=0;i<6;i++) Int o; C[i]=A[i]-B[i]; printf(“MENUn”); printf(“1. Suma de elementosn”); break; printf(“2. Diferencia de Elementosn”); case 3: printf(“3. Impresión de Elementos de los printf(“Los elementos del Vector A: ”) vectoresn”); for(i=0;i<6;i++) printf(“4. Salirn”); printf( “%d|”,A[i]); printf(“Seleccione su opción ”); printf(“Los elementos del Vector B: ”) scanf(“%d”,&o); for(i=0;i<6;i++) Return o; printf( “%d|”,B[i]); }// fin de la función de impresión de menú printf(“Los elementos del Vector C: ”) for(i=0;i<6;i++) printf( “%d|”,C[i]); break;
  • 19.
    Suma y Restade vectores //Inicio del programa comentarios y prototipos // Funciones Void suma(int[], int[], int[], int); Int menu(){ Void resta(int[], int[], int[], int); Int o; Void imprime(int[], int[], int[], int); printf(“MENUn”); printf(“1. Suma de elementosn”); printf(“2. Diferencia de Elementosn”); printf(“3. Impresión Int menu(void); de Elementos de los vectoresn”); printf(“4. Salirn”); Void main(void) printf(“Seleccione su opción ”); scanf(“%d”,&o); { return o; Int A[6]={2,4,5,1,9,3}, B[6]={0,2,3,1,4,8}, i, C[6], }// fin de la función de impresión de menú opc=1,n=6; Void suma(A[], int B[], int C[], int p){ while(opc!=4){ for(i=0;i<p;i++) Switch(Opc=menu()){ C[i]=A[i]+B[i];} case 1: suma(A, B, C, n); break; Void resta suma(A[], int B[], int C[], int p){ for(i=0;i<p;i++) case 2: resta(A, B, C, n); break; C[i]=A[i]-B[i];} case 3: imprime(A, B, C, n); break; Void imprime(A[], int B[], int C[], int p){ case 4: printf(“Los elementos del Vector A: ”) ; printf(“Fin del proceso”); break; for(i=0;i<p;i++) default: printf( “%d|”,A[i]); printf(“Opción inválida”); printf(“Los elementos del Vector B: ”) }// fin del case for(i=0;i<p;i++) }//fin del while printf( “%d|”,B[i]); }// fin del programa printf(“Los elementos del Vector C: ”) for(i=0;i<p;i++) printf( “%d|”,C[i]); }