viernes, 8 de junio de 2018

Instrucciones de Control, Métodos, Clases y Objetos, Matrices y Cadenas de Caracteres.



Instrucciones de control.

Instrucciones de Control en Pseudocódigo.
  • La instrucción if-else es básicamente igual que en C, C++ y Java.
  • La diferencia de la instrucción switch con la versión de C, C++ y Java es que todo cuerpo perteneciente a un case debe de toparse con un break o un goto antes de toparse con otro case, a menos que dicho cuerpo esté vacío.
  • La instrucción for es básicamente igual que en C, C++ y Java.
  • La instrucción while es básicamente igual que en C, C++ y Java.
  • La instrucción do-while es básicamente igual que en C, C++ y Java.
  • La instrucción foreach realiza un ciclo a través de los elementos de una colección (grupo de objetos). El formato de esta instrucción es: foreach(tipo variable in coleccion) instruccion;. En este ciclo se recorre la colección y la variable recibe un respectivo elemento de dicha colección en cada iteración.
  • Al igual que en C y C++, la instrucción break permite forzar la salida de un ciclo omitiendo el código restante en el cuerpo del ciclo.
  • Al igual que en C y C++, la instrucción continue permite forzar la repetición temprana de un ciclo omitiendo el código restante en el cuerpo del ciclo.
  • La instrucción return es básicamente igual que en C, C++. Se utiliza para devolver un valor y salir de un método.
  • La instrucción goto se sigue utilizando en C♯ a pesar de toda la polémica que esto conlleva.

Métodos

  • Todo método debe de ser parte de una clase, no existen métodos globales.
  • De forma predeterminada, los parámetros se pasan por valor (se copia dicho valor).
  • El modificador ref fuerza a pasar los parámetros por referencia en vez de pasarlos por valor.
  • El modificador out es similar al modificador ref con una excepción: sólo se puede utilizar para pasar un valor fuera de un método. El método debe de asignar un valor al parámetro antes de que el método finalice.
  • Cuando ref y out modifican un parámetro de referencia, la propia referencia se pasa por referencia.
  • El modificador params sirve para definir un número variable de argumentos los cuales se implementan como una matriz. Ejemplo: public int maxVal(params int[] nums){...}, esta función se podría llamar así: maxVal(23,3,a,-12);.
  • Un método debe tener como máximo un único parámetro params y éste debe de ser el último.
  • Un método puede devolver cualquier tipo de datos, incluyendo tipos de clase.
  • Ya que en C# las matrices se implementan como objetos, un método también puede devolver una matriz (algo que se diferencia de C++ en que las matrices no son válidas como tipos de valores devueltos).
  • C♯ implementa sobrecarga de métodos, dos o más métodos pueden tener el mismo nombre siempre y cuando se diferencien por sus parámetros.
  • El método Main es un método especial al cual se refiere el punto de partida del programa. Tiene la siguiente sintaxis: public static int Main(string[] args){...}.

Clases y objetos

Varios puntos a tener en cuenta en C♯ con respecto a clases y objetos son los siguientes:
  • Una variable de objeto de cierta clase no almacena los valores del objeto sino su referencia (al igual que Java).
  • El operador de asignación no copia los valores de un objeto, sino su referencia a él (al igual que Java).
  • Un constructor tiene el mismo nombre que su clase y es sintácticamente similar a un método.
  • Un constructor no devuelve ningún valor.
  • Al igual que los métodos, los constructores también pueden ser sobrecargados.
  • Si no se especifica un constructor en una clase, se usa uno por defecto que consiste en asignar a todas las variables el valor de 0, null o false según corresponda.
  • Para crear un nuevo objeto se utiliza la siguiente sintaxis: variable = new nombre_clase();.
  • Un destructor se declara como un constructor, aunque va precedido por un signo de tilde ~.
  • Se emplea una desasignación de memoria de objetos no referenciados (recolección de basura), y cuando esto ocurre se ejecuta el destructor de dicha clase.
  • El destructor de una clase no se llama cuando un objeto sale del ámbito.
  • Todos los destructores se llamarán antes de que finalice un programa.
  • La palabra clave this es un apuntador al mismo objeto en el cual se usa.
  • La palabra clave static hace que un miembro pertenezca a una clase en vez de pertener a objetos de dicha clase. Se puede tener acceso a dicho miembro antes de que se cree cualquier objeto de su clase y sin referencias a un objeto.
  • Un método static no tiene una referencia this.
  • Un método static puede llamar sólo a otros métodos static.
  • Un método static sólo debe tener acceso directamente a datos static.
  • Un constructor static se usa para inicializar atributos que se aplican a una clase en lugar de aplicarse a una instancia.
  • C♯ permite la sobrecarga de operadores con la palabra clave operator

Matrices

En C♯ las matrices se implementan como objetos.
Para crear una matriz se utiliza el siguiente formato: tipo[] nombre_matriz = new tipo[tamaño];
Se puede crear una matriz inicializada así: tipo[] nombre_matriz = { val1 , val2 , val3 , ... , valN };
Los índices de las matrices comienzan en 0.
Para crear una matriz bidimensional se utiliza el siguiente formato: tipo[,] nombre_matriz = new tipo[filas,columnas]
Para referirse a un elemento de una matriz bidimensional no se usa la forma matriz[fila][columna] (la cual usa C++), si no matriz[fila,columna].
Ya que C♯ implementa matrices como objetos, cada matriz tiene asociada una propiedad Length que contiene el número de elementos que puede alojar cada matriz.

Cadenas de caracteres.

  • El tipo de dato cadena se llama string.
  • Realmente la palabra clave string es un alias de la clase System.String de la plataforma .NET.
  • En C♯ las cadenas son objetos y no una matriz de caracteres, aun así, se puede obtener un carácter arbitrario de una cadena por medio de su índice (mas no modificarlo).
  • La forma más común de construir una cadena es por medio de una literal o constante: string str = "Una cadena";
  • El operador == determina si dos referencias hacen referencia al mismo objeto, pero al usar dicho operador con dos operandos tipo string se prueba la igualdad del contenido de las cadenas y no su referencia. Sin embargo, con el resto de los operadores relacionales, como < o >= se comparan las referencias.
  • Se pueden concatenar (unir) dos cadenas mediante el operador +.
  • Las cadenas son inmutables, una vez creadas no se pueden modificar, solo se pueden copiar total o parcialmente.
  • Las cadenas se pueden usar en las instrucciones switch.

No hay comentarios:

Publicar un comentario