SlideShare una empresa de Scribd logo
1 de 12
ESCUELA SUPERIOR POLITÉCNICA DE
                   CHIMBORAZO
Nombre: Andrés Cabrera
Curso: Cuarto “B”
Fecha: 2011-10-31
Código: 1168
                   ARREGLO UNIDIMENSIONAL
1.1.1.- Conceptos básicos.
Un arreglo unidimensional tiene una sola dimensión. En C#, la dimensión se maneja por medio
de un par de corchetes.

A los arreglos de una dimensión también se les llama listas.


1.1.2.- Operaciones.
Para manejar un arreglo, las operaciones a efectuarse son:

                                 Declaración del arreglo,
                                 Creación del arreglo,
                                 Inicialización de de los elementos del arreglo, y
                                 Acceso a los elementos del arreglo.

A continuación describiremos cada una de estas operaciones, en C#.


Declaración.
La declaración de un arreglo unidimensional consiste en establecer las características del arreglo
y sus elementos, por medio de la siguiente sintaxis:

<tipo> [ ] < identificador > ;

Donde:

tipo indica el tipo correspondiente a los elementos del arreglo ,

identificador es el nombre del arreglo, y

el par de corchetes, [ ], representa la dimensión del arreglo y encierra un número entero que
corresponde al número de elementos del arreglo.
Ejemplos:

int [ ] a ;

float [ ] distancia ;

Artículo [ ] art = new Artículo[ 3];

Observe que, en la declaración, el espacio entre los corchetes está vacío. Esto se debe a que,
durante dicha operación, no se reserva espacio en la memoria.

Creación.

La creación de un arreglo unidimensional consiste en reservar espacio de memoria para todos
sus elementos, utilizando la siguiente sintaxis:

< identificador > = new <tipo> [ tamaño ] ;

Donde:

new es el operador para gestionar espacio de memoria, en tiempo de ejecución,

tamaño es un número entero que representa el número de elementos del arreglo.

Ejemplos:

a = new int [10] ; // Se crea el arreglo a , con 10 elementos de tipo entero.

distancia = new float[ 5] ; // Se crea el arreglo distancia , con 5 elementos de punto flotante y
precisión sencilla .Artículo [] art = new Artículo[3];

Artículo [ ] art = new Artículo[ 3]; // Se crean 3 referencias a objetos de la clase Artículo

art[0]= new Artículo(); // Se crea el primer objeto del arreglo art

art[1]= new Artículo(); // Se crea el segundo objeto del arreglo art

art[2]= new Artículo(); // Se crea el tercer objeto del arreglo art



Las dos primeras operaciones de declaración y creación anteriores se pueden agrupar en una
sola instrucción, como se muestra enseguida:

int [ ] a = new int [10] ;

float [ ] distancia = new float[5] ;
Inicialización.

Un arreglo es un objeto que,cuando es creado por el compilador, se le asignan automáticamente
valores iniciales predeterminados a cada uno de sus elementos, de acuerdo a los siguientes
criterios:

                          Si el tipo del arreglo es numérico, a sus elementos se les asigna el
                          valor cero.
                          Si el tipo del arreglo es char, a sus elementos se les asigna el valor
                          'u0000'.
                          Si el tipo del arreglo es bool, a sus elementos se les asigna el valor
                          false.
                          Si el tipo del arreglo es una clase, a sus elementos se les asigna el valor
                          null.

Cuando se requiere asignar valores iniciales diferentes de los predeterminados, es posible
agrupar las operaciones de declaración, creación e inicialización en una sola instrucción, por
ejemplo:

int [ ] a = { 1, 0,4,-6, 2,9, 23,455, 90,35 };

float [ ] distancia = { 2.50F, 286.45F, 46.75F, 30.62F, 93.00F };

string [ ] pato = { "Hugo", "Paco", "Luís" };



Acceso.

Se puede acceder a los valores de los elementos de un arreglo a través del nombre del arreglo y
un subíndice. El subíndice debe escribirse entre corchetes y representa la posición del elemento
en el arreglo. Así, podemos referirnos a un elemento del arreglo escribiendo el nombre del
arreglo y el subíndice del elemento entre corchetes. Los valores de los subíndices empiezan en
cero para el primer elemento, hasta el tamaño del arreglo menos uno.

Ejemplo:

float [ ] distancia = new float[5] ; // Crea el arreglo distancia con 5 elementos.

float x = 25F, y = 10F ; // Crea dos variables de punto flotante y precisión sencilla.

distancia[0] = x + y ; // El valor asignado al primer elemento es 35.

distancia[1] = ++distancia[0] ; // Asigna 36 al segundo elemento.

distancia[2] = distancia[1] - distancia[0] + 4 ; // Asigna 5 al tercer elemento.

distancia[3] = distancia[2]-- ; // Asigna 5 al cuarto elemento

// y disminuye en 1 el valor del tercero.
distancia[4] = distancia[3] * distancia[2] ; // Asigna 20 al quinto elemento.

y = distancia[4] ; // Asigna a y el valor almacenado en el quinto elemento.

1.1.3.- Aplicaciones.

Listas.

Resolvamos el problema de manejar dos listas: una con los nombres de un grupo de alumnos y
otra con una calificación para cada uno de los alumnos.
Primero se deberán leer los nombres de los alumnos y la calificación que corresponde a cada
uno de ellos y después habrá que desplegar dos columnas: una con los nombres de los alumnos
y la otra con sus respectivas calificaciones.

La lectura debe lucir de manera similar a la siguiente:

Número de alumnos: 30

Nombre [0] :
Calificación[0] :

Nombre [1] :
Calificación[1] :

Nombre [2] :
Calificación[2] :

...
...

Nombre [29] :
Calificación[29] :

El despliegue en el monitor luciría así:

No.         Nombre                                        Calif.
       1 Hugo                                               100
       2 Paco                                                90
       3 Luís                                                95
      ...                                                    ...
      30 Donald                                              70

El siguiente código corresponde a un programa que resuelve el problema.

// Lista.cs : Lee una lista de nombres y calificaciones correspondientes a un grupo de

// alumnos de una materia.

using System;
using C = System.Console;
public class Lista
{

public static void Main()

{

int nAlumnos;

C.Write("Número de alumnos: ");

nAlumnos = Convert.ToInt32(C.ReadLine());

string [ ] alumnos = new string[nAlumnos]; //Crea el arreglo de

//alumnos.

int [ ] calif = new int [nAlumnos]; // Crea el arreglo de calificaciones.

// Lee los elementos de los dos arreglos.

for(int i = 0; i < nAlumnos ; i++)
{

C.Write("Nombre del alumno [" + i + "] : ");
alumnos[i] = C.ReadLine( );

C.Write("Calificación [" + i + "] : ");
calif[i] = Convert.ToInt32(C.ReadLine( ));

}

// Despliega los valores de los dos arreglos.

C.WriteLine("No. Nombre Calif.");

for(int i = 0 ; i < nAlumnos ; i++)
{

C.Write(" " + (i+1) + ".- " + alumnos[ i] );
C.WriteLine(" " + calif[i] );



Vectores.

Otra de las aplicaciones de los arreglos es el manejo de vectores. En Física, los vectores sirven
para representar velocidades, aceleraciones, etc.

Podemos representar a un vector como un segmento de recta dirigida que tiene magnitud,
orientación y sentido.
En un espacio tridimensional, un vector puede expresarse por medio de tres componentes sobre
los ejes cartesianos. Cada componente puede, a su vez, expresarse en función de los vectores
unitarios i, j, k ,que se ubican en los ejes x, y, z, respectivamente.

Por ejemplo , un vector v1 puede representarse en función de sus componentes como:

v1 = 20i + 15j + 35k

Si tenemos otro vector,

v2 = -5i + 40j + 25k

La suma de los dos vectores sería:

s = v1+v2 = (20-5)i +(15+40)j+(35+25)k

s = 15i + 55j + 60k

Un segmento del programa para este ejemplo sería:

double v1[ ] = new double[3];
double v2[ ] = new double[3];
double s[ ] = new double[3];

v1[0] = 20;
v1[1] = 15;
v1[2] = 35;

v2[0] = -5;
v2[1] = 40;
v2[2] = 25;

for(int i=0; i < 3 ; i++)
{

s[ i ] = v1[ i ] + v2[ i ] ;




                               ARREGLO BIDIMENSIONAL


1.2.1.- Conceptos básicos.
Un arreglo bidimensional tiene dos dimensiones y es un caso particular de los arreglos
multidimensionales. En C#, las dimensiones se manejan por medio de un par de
corchetes, dentro de los que se escriben, separados por comas, los valores de las dos
dimensiones.
1.2.2.- Operaciones.
Para manejar un arreglo, las operaciones a efectuarse son:

        Declaración del arreglo,
        Creación del arreglo,
        Inicialización de de los elementos del arreglo, y
        Acceso a los elementos del arreglo.

A continuación describiremos cada una de estas operaciones, en C#.

Declaración.
La declaración de un arreglo consiste en establecer las características del arreglo y sus
elementos, por medio de la siguiente sintaxis:

<tipo> [ , ] < identificador > ;

Donde:

tipo indica el tipo correspondiente a los elementos del arreglo ,

identificador es el nombre del arreglo, y

el par de corchetes y la coma, [ , ], representan las dimensiones del arreglo y encierra
dos números enteros, cuyo producto corresponde al número de elementos del arreglo.

Ejemplos:

double [ , ] matriz ;

int [ , ] ubicación ;

Rama [ , ] árbol; // Rama es una clase.

Observe que, en la declaración, el espacio entre los corchetes está vacío. Esto se debe a
que, durante dicha operación, no se reserva espacio en la memoria.

Creación.
La creación de un arreglo bidimensional consiste en reservar espacio en la memoria
para todos sus elementos, utilizando la siguiente sintaxis:

< identificador > = new <tipo> [ dim1, dim2 ] ;

Donde:

new es el operador para gestionar espacio de memoria, en tiempo de ejecución,
dim1 y dim2 son valores enteros que representan las dimensiones del arreglo.

El tamaño del arreglo es el resultado de multiplicar los valores de las dimensiones y
representa el número de elementos del arreglo.

Ejemplos:

matriz = new double [2, 3] ; // Se crea el arreglo matriz, con 6 elementos de tipo

//punto flotante y precición doble .

ubicación = new int[ 4,2] ; // Se crea el arreglo ubicación, con 8 elementos de

//tipo entero de 32 bits .

árbol = new Rama[5,2] ; // Se crea el arreglo arbol, con 10 objetos

//de la clase Rama.

Las operaciones de declaración y creación anteriores se pueden agrupar en una sola
instrucción, como se muestra enseguida:

double [ , ] matriz = new double [2,3] ;

int [ , ] ubicación = new int[4, 2] ;

Rama [ , ] alumno = new Rama[5,2] ;




Inicialización.
Un arreglo es un objeto que,cuando es creado por el compilador, se le asignan
automáticamente valores iniciales predeterminados a cada uno de sus elementos, de
acuerdo a los siguientes criterios:

        Si el tipo del arreglo es numérico, a sus elementos se les asigna el valor cero.
        Si el tipo del arreglo es char, a sus elementos se les asigna el valor 'u0000'.
        Si el tipo del arreglo es bool, a sus elementos se les asigna el valor false.
        Si el tipo del arreglo es una clase, a sus elementos se les asigna el valor null.

Cuando se requiere asignar valores iniciales diferentes de los predeterminados, es
posible agrupar las operaciones de declaración, creación e inicialización en una sola
instrucción, por ejemplo:



double [ , ] matriz = { {1.5, 0, 4, -6.5, 2 } , {2.3, 9, 3.5, 4.8, 6.2} };
int [ , ] ubicación = { {2, 4} , {6, 8} , {9, 10}, {5 , 1}};

string [ , ] funcionario = { {"Hugo", "jefe"} ,

{ "Paco", "operador "},

{ "Luís","ayudante"} };

Acceso.

Se puede acceder a los valores de los elementos de un arreglo bidimensional a través del nombre
del arreglo y dos subíndices. Los subíndices deben escribirse entre corchetes y representa la
posición del elemento en el arreglo. Así, podemos referirnos a un elemento del arreglo
escribiendo el nombre del arreglo y los subíndices del elemento entre corchetes. Los valores de
los subíndices empiezan en cero para el primer elemento, hasta el tamaño del arreglo menos
uno.

Ejemplo:

int [ , ] posición = new int[5, 10] ; // Crea el arreglo posición , con 50 elementos de tipo
entero.

int x;

posición[ 3, 5] = 3 ;

x = posición[ 3, 5] ;

1.2.3.- Aplicaciones.
Matrices.

Una matriz es un arreglo rectangular de dos dimensiones, donde el acomodo de los
elementos está dispuesto en renglones y columnas.

Ejemplo 1:

Se debe controlar la ubicación de los asistentes a una sala de conferencias por medio de
un gafete que tiene escrito el nombre del asistente, la fila y la columna donde se ubica
su asiento.

El siguiente segmento de código muestra la solución con arreglos bidimensionales.

string [ , ] asistente = new string[10,12] ;

// Inicializa los valores de los nombres con cadenas vacías.

for(int i=0 ; i < 10 ; i++ ) // Controla la fila.

for(int j=0 ; j < 12 ; j++ ) // Controla la columna.
asistente[ i , j ] = " " ;

// Captura los nombres de todos los asistentes y les asigna sus asientos,

// en el orden en que van llegando.

for(int i=0 ; i < 10 ; i++ ) // Controla la fila.

for(int j=0 ; j < 12 ; j++ ) // Controla la columna.

asistente[ i , j ] = System.Console.ReadLine( );

// Despliega los nombres de todos los asistentes.

for(int i=0 ; i < 10 ; i++ ) // Controla la fila.

for(int j=0 ; j < 12 ; j++ ) // Controla la columna.

System.Console.WriteLine( asistente[ i , j ] );



Ejemplo 2 :

Dada la matriz A :

          8           9         5

          6           3         2


y la matriz B :

          7           1         4

          5           0         3


Elaborar un programa en C# para obtener la suma de ambas matrices: S = A + B

// SumMatrices.cs : Suma dos matrices de 2 renglones y 3 columnas.

using System;
using C = System.Console;

namespace Sumatrices
{
class Matriz
{


public static void Main()
{

const int r = 2, c = 3;
int i, j;

double[,] A = new double[r, c];
double[,] B = new double[r, c];
double[,] S = new double[r, c];

C.Clear();

// Lectura de valores para los elementos de A.

C.WriteLine("Suma de las matrices A y B de 2x3n");
C.WriteLine("nTeclee los valores de la Matriz An");

for (i = 0; i < r; i++)

for (j = 0; j < c; j++)
{

C.Write(" A[{0},{1}] = ",i,j);
A[i, j] = Double.Parse(Console.ReadLine());

}

// Lectura de valores para los elementos de B.

C.WriteLine("nTeclee los valores de la Matriz Bn");

for (i = 0; i < r; i++)

for (j = 0; j < c; j++)
{

C.Write(" B[{0},{1}] = ", i,j);
B[i, j] = Double.Parse(Console.ReadLine());

}

// Suma y despliegue de la matriz resultado.

C.WriteLine("nMatriz S = A+Bn");

for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
S[i, j] = A[i, j] + B[i, j];
C.Write(" " + S[i, j]

C.WriteLine();

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Primeros Pasos Con VS2005
Primeros Pasos Con VS2005Primeros Pasos Con VS2005
Primeros Pasos Con VS2005
 
Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
 
Arreglos
ArreglosArreglos
Arreglos
 
Informe tecnico victor_uex
Informe tecnico victor_uexInforme tecnico victor_uex
Informe tecnico victor_uex
 
Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
0.2 Conceptos Basicos C++ II
0.2  Conceptos Basicos C++ II0.2  Conceptos Basicos C++ II
0.2 Conceptos Basicos C++ II
 
APO1 - Presentacion nivel 2
APO1 - Presentacion nivel 2APO1 - Presentacion nivel 2
APO1 - Presentacion nivel 2
 
Intro classes(1)
Intro classes(1)Intro classes(1)
Intro classes(1)
 
7.arreglos y vectores en c++
7.arreglos y vectores en c++7.arreglos y vectores en c++
7.arreglos y vectores en c++
 
Arreglos
ArreglosArreglos
Arreglos
 
Arreglos C++
Arreglos C++Arreglos C++
Arreglos C++
 
Presentación Sevibus Wear
Presentación Sevibus WearPresentación Sevibus Wear
Presentación Sevibus Wear
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()
 
3. lenguaje c-
3. lenguaje c-3. lenguaje c-
3. lenguaje c-
 
Conceptos de programacion orientada a objetos
Conceptos de programacion orientada a objetosConceptos de programacion orientada a objetos
Conceptos de programacion orientada a objetos
 
Arreglos en c ++
Arreglos en c ++Arreglos en c ++
Arreglos en c ++
 
Clase IX
Clase IXClase IX
Clase IX
 
Clase 9- programacion
Clase 9- programacionClase 9- programacion
Clase 9- programacion
 

Similar a Compu

Similar a Compu (20)

11 arreglos-multidimensionales
11 arreglos-multidimensionales11 arreglos-multidimensionales
11 arreglos-multidimensionales
 
11 arreglos-multidimensionales
11 arreglos-multidimensionales11 arreglos-multidimensionales
11 arreglos-multidimensionales
 
11 arreglos-multidimensionales
11 arreglos-multidimensionales11 arreglos-multidimensionales
11 arreglos-multidimensionales
 
Unidad 7 Arreglos.pdf
Unidad 7 Arreglos.pdfUnidad 7 Arreglos.pdf
Unidad 7 Arreglos.pdf
 
6.1 vectores
6.1 vectores6.1 vectores
6.1 vectores
 
Ejercicios oo
Ejercicios ooEjercicios oo
Ejercicios oo
 
Clase 09
Clase 09 Clase 09
Clase 09
 
7.arreglos en java
7.arreglos en  java7.arreglos en  java
7.arreglos en java
 
C sharp intro1
C sharp intro1C sharp intro1
C sharp intro1
 
Arreglos En C ++
Arreglos En C ++Arreglos En C ++
Arreglos En C ++
 
11 arreglos-multidimensionales
11 arreglos-multidimensionales11 arreglos-multidimensionales
11 arreglos-multidimensionales
 
Arreglos
ArreglosArreglos
Arreglos
 
Arrays unidimensionales
Arrays unidimensionalesArrays unidimensionales
Arrays unidimensionales
 
Los 100 fuegos
Los 100 fuegosLos 100 fuegos
Los 100 fuegos
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++
 
arreglos y matrices
arreglos  y matricesarreglos  y matrices
arreglos y matrices
 
c++_ECCI.pptx
c++_ECCI.pptxc++_ECCI.pptx
c++_ECCI.pptx
 
Semana 4 arreglos simples (1)
Semana 4   arreglos simples (1)Semana 4   arreglos simples (1)
Semana 4 arreglos simples (1)
 
Introducción a C SHARP
Introducción a C SHARPIntroducción a C SHARP
Introducción a C SHARP
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 

Compu

  • 1. ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO Nombre: Andrés Cabrera Curso: Cuarto “B” Fecha: 2011-10-31 Código: 1168 ARREGLO UNIDIMENSIONAL 1.1.1.- Conceptos básicos. Un arreglo unidimensional tiene una sola dimensión. En C#, la dimensión se maneja por medio de un par de corchetes. A los arreglos de una dimensión también se les llama listas. 1.1.2.- Operaciones. Para manejar un arreglo, las operaciones a efectuarse son: Declaración del arreglo, Creación del arreglo, Inicialización de de los elementos del arreglo, y Acceso a los elementos del arreglo. A continuación describiremos cada una de estas operaciones, en C#. Declaración. La declaración de un arreglo unidimensional consiste en establecer las características del arreglo y sus elementos, por medio de la siguiente sintaxis: <tipo> [ ] < identificador > ; Donde: tipo indica el tipo correspondiente a los elementos del arreglo , identificador es el nombre del arreglo, y el par de corchetes, [ ], representa la dimensión del arreglo y encierra un número entero que corresponde al número de elementos del arreglo.
  • 2. Ejemplos: int [ ] a ; float [ ] distancia ; Artículo [ ] art = new Artículo[ 3]; Observe que, en la declaración, el espacio entre los corchetes está vacío. Esto se debe a que, durante dicha operación, no se reserva espacio en la memoria. Creación. La creación de un arreglo unidimensional consiste en reservar espacio de memoria para todos sus elementos, utilizando la siguiente sintaxis: < identificador > = new <tipo> [ tamaño ] ; Donde: new es el operador para gestionar espacio de memoria, en tiempo de ejecución, tamaño es un número entero que representa el número de elementos del arreglo. Ejemplos: a = new int [10] ; // Se crea el arreglo a , con 10 elementos de tipo entero. distancia = new float[ 5] ; // Se crea el arreglo distancia , con 5 elementos de punto flotante y precisión sencilla .Artículo [] art = new Artículo[3]; Artículo [ ] art = new Artículo[ 3]; // Se crean 3 referencias a objetos de la clase Artículo art[0]= new Artículo(); // Se crea el primer objeto del arreglo art art[1]= new Artículo(); // Se crea el segundo objeto del arreglo art art[2]= new Artículo(); // Se crea el tercer objeto del arreglo art Las dos primeras operaciones de declaración y creación anteriores se pueden agrupar en una sola instrucción, como se muestra enseguida: int [ ] a = new int [10] ; float [ ] distancia = new float[5] ;
  • 3. Inicialización. Un arreglo es un objeto que,cuando es creado por el compilador, se le asignan automáticamente valores iniciales predeterminados a cada uno de sus elementos, de acuerdo a los siguientes criterios: Si el tipo del arreglo es numérico, a sus elementos se les asigna el valor cero. Si el tipo del arreglo es char, a sus elementos se les asigna el valor 'u0000'. Si el tipo del arreglo es bool, a sus elementos se les asigna el valor false. Si el tipo del arreglo es una clase, a sus elementos se les asigna el valor null. Cuando se requiere asignar valores iniciales diferentes de los predeterminados, es posible agrupar las operaciones de declaración, creación e inicialización en una sola instrucción, por ejemplo: int [ ] a = { 1, 0,4,-6, 2,9, 23,455, 90,35 }; float [ ] distancia = { 2.50F, 286.45F, 46.75F, 30.62F, 93.00F }; string [ ] pato = { "Hugo", "Paco", "Luís" }; Acceso. Se puede acceder a los valores de los elementos de un arreglo a través del nombre del arreglo y un subíndice. El subíndice debe escribirse entre corchetes y representa la posición del elemento en el arreglo. Así, podemos referirnos a un elemento del arreglo escribiendo el nombre del arreglo y el subíndice del elemento entre corchetes. Los valores de los subíndices empiezan en cero para el primer elemento, hasta el tamaño del arreglo menos uno. Ejemplo: float [ ] distancia = new float[5] ; // Crea el arreglo distancia con 5 elementos. float x = 25F, y = 10F ; // Crea dos variables de punto flotante y precisión sencilla. distancia[0] = x + y ; // El valor asignado al primer elemento es 35. distancia[1] = ++distancia[0] ; // Asigna 36 al segundo elemento. distancia[2] = distancia[1] - distancia[0] + 4 ; // Asigna 5 al tercer elemento. distancia[3] = distancia[2]-- ; // Asigna 5 al cuarto elemento // y disminuye en 1 el valor del tercero.
  • 4. distancia[4] = distancia[3] * distancia[2] ; // Asigna 20 al quinto elemento. y = distancia[4] ; // Asigna a y el valor almacenado en el quinto elemento. 1.1.3.- Aplicaciones. Listas. Resolvamos el problema de manejar dos listas: una con los nombres de un grupo de alumnos y otra con una calificación para cada uno de los alumnos. Primero se deberán leer los nombres de los alumnos y la calificación que corresponde a cada uno de ellos y después habrá que desplegar dos columnas: una con los nombres de los alumnos y la otra con sus respectivas calificaciones. La lectura debe lucir de manera similar a la siguiente: Número de alumnos: 30 Nombre [0] : Calificación[0] : Nombre [1] : Calificación[1] : Nombre [2] : Calificación[2] : ... ... Nombre [29] : Calificación[29] : El despliegue en el monitor luciría así: No. Nombre Calif. 1 Hugo 100 2 Paco 90 3 Luís 95 ... ... 30 Donald 70 El siguiente código corresponde a un programa que resuelve el problema. // Lista.cs : Lee una lista de nombres y calificaciones correspondientes a un grupo de // alumnos de una materia. using System; using C = System.Console;
  • 5. public class Lista { public static void Main() { int nAlumnos; C.Write("Número de alumnos: "); nAlumnos = Convert.ToInt32(C.ReadLine()); string [ ] alumnos = new string[nAlumnos]; //Crea el arreglo de //alumnos. int [ ] calif = new int [nAlumnos]; // Crea el arreglo de calificaciones. // Lee los elementos de los dos arreglos. for(int i = 0; i < nAlumnos ; i++) { C.Write("Nombre del alumno [" + i + "] : "); alumnos[i] = C.ReadLine( ); C.Write("Calificación [" + i + "] : "); calif[i] = Convert.ToInt32(C.ReadLine( )); } // Despliega los valores de los dos arreglos. C.WriteLine("No. Nombre Calif."); for(int i = 0 ; i < nAlumnos ; i++) { C.Write(" " + (i+1) + ".- " + alumnos[ i] ); C.WriteLine(" " + calif[i] ); Vectores. Otra de las aplicaciones de los arreglos es el manejo de vectores. En Física, los vectores sirven para representar velocidades, aceleraciones, etc. Podemos representar a un vector como un segmento de recta dirigida que tiene magnitud, orientación y sentido.
  • 6. En un espacio tridimensional, un vector puede expresarse por medio de tres componentes sobre los ejes cartesianos. Cada componente puede, a su vez, expresarse en función de los vectores unitarios i, j, k ,que se ubican en los ejes x, y, z, respectivamente. Por ejemplo , un vector v1 puede representarse en función de sus componentes como: v1 = 20i + 15j + 35k Si tenemos otro vector, v2 = -5i + 40j + 25k La suma de los dos vectores sería: s = v1+v2 = (20-5)i +(15+40)j+(35+25)k s = 15i + 55j + 60k Un segmento del programa para este ejemplo sería: double v1[ ] = new double[3]; double v2[ ] = new double[3]; double s[ ] = new double[3]; v1[0] = 20; v1[1] = 15; v1[2] = 35; v2[0] = -5; v2[1] = 40; v2[2] = 25; for(int i=0; i < 3 ; i++) { s[ i ] = v1[ i ] + v2[ i ] ; ARREGLO BIDIMENSIONAL 1.2.1.- Conceptos básicos. Un arreglo bidimensional tiene dos dimensiones y es un caso particular de los arreglos multidimensionales. En C#, las dimensiones se manejan por medio de un par de corchetes, dentro de los que se escriben, separados por comas, los valores de las dos dimensiones.
  • 7. 1.2.2.- Operaciones. Para manejar un arreglo, las operaciones a efectuarse son: Declaración del arreglo, Creación del arreglo, Inicialización de de los elementos del arreglo, y Acceso a los elementos del arreglo. A continuación describiremos cada una de estas operaciones, en C#. Declaración. La declaración de un arreglo consiste en establecer las características del arreglo y sus elementos, por medio de la siguiente sintaxis: <tipo> [ , ] < identificador > ; Donde: tipo indica el tipo correspondiente a los elementos del arreglo , identificador es el nombre del arreglo, y el par de corchetes y la coma, [ , ], representan las dimensiones del arreglo y encierra dos números enteros, cuyo producto corresponde al número de elementos del arreglo. Ejemplos: double [ , ] matriz ; int [ , ] ubicación ; Rama [ , ] árbol; // Rama es una clase. Observe que, en la declaración, el espacio entre los corchetes está vacío. Esto se debe a que, durante dicha operación, no se reserva espacio en la memoria. Creación. La creación de un arreglo bidimensional consiste en reservar espacio en la memoria para todos sus elementos, utilizando la siguiente sintaxis: < identificador > = new <tipo> [ dim1, dim2 ] ; Donde: new es el operador para gestionar espacio de memoria, en tiempo de ejecución,
  • 8. dim1 y dim2 son valores enteros que representan las dimensiones del arreglo. El tamaño del arreglo es el resultado de multiplicar los valores de las dimensiones y representa el número de elementos del arreglo. Ejemplos: matriz = new double [2, 3] ; // Se crea el arreglo matriz, con 6 elementos de tipo //punto flotante y precición doble . ubicación = new int[ 4,2] ; // Se crea el arreglo ubicación, con 8 elementos de //tipo entero de 32 bits . árbol = new Rama[5,2] ; // Se crea el arreglo arbol, con 10 objetos //de la clase Rama. Las operaciones de declaración y creación anteriores se pueden agrupar en una sola instrucción, como se muestra enseguida: double [ , ] matriz = new double [2,3] ; int [ , ] ubicación = new int[4, 2] ; Rama [ , ] alumno = new Rama[5,2] ; Inicialización. Un arreglo es un objeto que,cuando es creado por el compilador, se le asignan automáticamente valores iniciales predeterminados a cada uno de sus elementos, de acuerdo a los siguientes criterios: Si el tipo del arreglo es numérico, a sus elementos se les asigna el valor cero. Si el tipo del arreglo es char, a sus elementos se les asigna el valor 'u0000'. Si el tipo del arreglo es bool, a sus elementos se les asigna el valor false. Si el tipo del arreglo es una clase, a sus elementos se les asigna el valor null. Cuando se requiere asignar valores iniciales diferentes de los predeterminados, es posible agrupar las operaciones de declaración, creación e inicialización en una sola instrucción, por ejemplo: double [ , ] matriz = { {1.5, 0, 4, -6.5, 2 } , {2.3, 9, 3.5, 4.8, 6.2} };
  • 9. int [ , ] ubicación = { {2, 4} , {6, 8} , {9, 10}, {5 , 1}}; string [ , ] funcionario = { {"Hugo", "jefe"} , { "Paco", "operador "}, { "Luís","ayudante"} }; Acceso. Se puede acceder a los valores de los elementos de un arreglo bidimensional a través del nombre del arreglo y dos subíndices. Los subíndices deben escribirse entre corchetes y representa la posición del elemento en el arreglo. Así, podemos referirnos a un elemento del arreglo escribiendo el nombre del arreglo y los subíndices del elemento entre corchetes. Los valores de los subíndices empiezan en cero para el primer elemento, hasta el tamaño del arreglo menos uno. Ejemplo: int [ , ] posición = new int[5, 10] ; // Crea el arreglo posición , con 50 elementos de tipo entero. int x; posición[ 3, 5] = 3 ; x = posición[ 3, 5] ; 1.2.3.- Aplicaciones. Matrices. Una matriz es un arreglo rectangular de dos dimensiones, donde el acomodo de los elementos está dispuesto en renglones y columnas. Ejemplo 1: Se debe controlar la ubicación de los asistentes a una sala de conferencias por medio de un gafete que tiene escrito el nombre del asistente, la fila y la columna donde se ubica su asiento. El siguiente segmento de código muestra la solución con arreglos bidimensionales. string [ , ] asistente = new string[10,12] ; // Inicializa los valores de los nombres con cadenas vacías. for(int i=0 ; i < 10 ; i++ ) // Controla la fila. for(int j=0 ; j < 12 ; j++ ) // Controla la columna.
  • 10. asistente[ i , j ] = " " ; // Captura los nombres de todos los asistentes y les asigna sus asientos, // en el orden en que van llegando. for(int i=0 ; i < 10 ; i++ ) // Controla la fila. for(int j=0 ; j < 12 ; j++ ) // Controla la columna. asistente[ i , j ] = System.Console.ReadLine( ); // Despliega los nombres de todos los asistentes. for(int i=0 ; i < 10 ; i++ ) // Controla la fila. for(int j=0 ; j < 12 ; j++ ) // Controla la columna. System.Console.WriteLine( asistente[ i , j ] ); Ejemplo 2 : Dada la matriz A : 8 9 5 6 3 2 y la matriz B : 7 1 4 5 0 3 Elaborar un programa en C# para obtener la suma de ambas matrices: S = A + B // SumMatrices.cs : Suma dos matrices de 2 renglones y 3 columnas. using System; using C = System.Console; namespace Sumatrices {
  • 11. class Matriz { public static void Main() { const int r = 2, c = 3; int i, j; double[,] A = new double[r, c]; double[,] B = new double[r, c]; double[,] S = new double[r, c]; C.Clear(); // Lectura de valores para los elementos de A. C.WriteLine("Suma de las matrices A y B de 2x3n"); C.WriteLine("nTeclee los valores de la Matriz An"); for (i = 0; i < r; i++) for (j = 0; j < c; j++) { C.Write(" A[{0},{1}] = ",i,j); A[i, j] = Double.Parse(Console.ReadLine()); } // Lectura de valores para los elementos de B. C.WriteLine("nTeclee los valores de la Matriz Bn"); for (i = 0; i < r; i++) for (j = 0; j < c; j++) { C.Write(" B[{0},{1}] = ", i,j); B[i, j] = Double.Parse(Console.ReadLine()); } // Suma y despliegue de la matriz resultado. C.WriteLine("nMatriz S = A+Bn"); for (i = 0; i < r; i++)
  • 12. for (j = 0; j < c; j++) S[i, j] = A[i, j] + B[i, j]; C.Write(" " + S[i, j] C.WriteLine();