REPASO GENERAL C

June 14, 2017 | Autor: L. Galvan Tovar | Categoría: Ingenieria De Sistemas
Share Embed


Descripción

DESARROLLO DE SISTEMAS I - 2015 Clases, Objetos y tipos La esencia de la programación orientada a objetos es la creación de nuevos tipos. Un tipo es la representación de un componente (Pensado en un ordenador (un computador) que está compuesto de varios componentes). En programación un componente es algo que cumple una función. Por ejemplo, un componente puede ser un botón en un programa. En una aplicación podemos tener varios botones del mismo tipo como por ejemplo botones de Aceptar, Cancelar, etc. Porque son del mismo tipo estos botones tienen propiedades y comportamientos similares. Pueden tener propiedades como cambiar de "tamaño", "posición", etc. Las propiedades son las mismas pero los valores almacenados en sus atributos pueden ser diferentes. Por ejemplo, un botón puede tener tamaño 10 y otro tamaño 6. Podemos decir entonces que tenemos varias instancias del mismo componente (o varios botones del mismo tipo) con diferentes valores en sus atributos. La programación orientada a objetos es esto. Crear componentes que puedan ser reusados. Así no tenemos que programar varios componentes que cumplan funciones similares sino solo uno que podrá llevar diferentes atributos y que podrá ser reproducido (o instanciado) tantas veces como lo necesitemos. Como en varios lenguajes de programación orientado a objetos, en C# los tipos o componentes son definidos por una clase (class en inglés).Las diferentes reproducciones o instancias de un componente del mismo tipo se conoce como objetos. Ejercicio_1. //tipo 01 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ejercicio_1 { class Program { static void Main(string[] args) { string var = "Mundo"; Console.WriteLine("Hola {0}!", var); Console.ReadKey(); } } } //tipo 02 namespace Ejercicio_1 { class Program { static void Main(string[] args) { string var = "Mundo"; Console.WriteLine("Hola " + var + "!"); Console.ReadKey(); } } } Ejercicio_2: Tipos de datos namespace Ejercicio_2 { DESARROLLO DE SISTEMAS I - 2015

ING. MIGUEL CASMIRO BRAVO

DESARROLLO DE SISTEMAS I - 2015

}.

class Program { static void Main(string[] args) { int minuto = 60; //segundos por minuto int hora = minuto * 60; int dia = hora * 24; long anio = dia * 365; Console.WriteLine("Segundos en un dia: {0}", dia); Console.WriteLine("Segundos en un año: {0}", anio); } }

namespace Ejercicio_3 { class Program { static void Main(string[] args) { int minuto = 60; //segundos por minuto int hora = minuto * 60; int dia = hora * 24; long anio = dia * 365; /*Console.WriteLine("Segundos en un dia: {0}", dia); Console.WriteLine("Segundos en un año: {0}", anio);*/ Console.WriteLine("En un dia: {0}; en un año: {1}", dia, anio); Console.ReadKey(); } } } namespace Ejercicio_4 { class Program { static void Main(string[] args) { int a = 2; double log2 = Math.Log(a); double raiz2 = Math.Sqrt(a); Console.WriteLine("El logaritmo de dos es {0}", log2); Console.WriteLine("La raiz de dos es {0}", raiz2); Console.ReadKey(); } } } namespace Ejercicio_5 { class Program { static void Main(string[] args) { bool b; b = true; Console.WriteLine("b es {0}", b); if(b) { Console.WriteLine("esto saldrá"); DESARROLLO DE SISTEMAS I - 2015

ING. MIGUEL CASMIRO BRAVO

DESARROLLO DE SISTEMAS I - 2015

}

}

}

} b = false; if (b) { Console.WriteLine("esto no saldrá"); } Console.WriteLine("2==2 es {0}", 2 == 2); Console.ReadKey();

namespace Ejercicio_6 { class Program { static void Main(string[] args) { int[] arr = new int[3]; arr[0] = 1; arr[1] = 2; arr[2] = 3; Console.WriteLine(arr[1]); Console.ReadKey(); } } } namespace Ejercicio_7 { class Program { static void Main(string[] args) { int[] arr = { 1, 2, 3 }; Console.WriteLine(arr[1]); Console.ReadKey(); } } } int[] arr = {1,2,3}; //es exactamente lo mismo que el ejemplo anterior namespace Ejercicio_8 { class Program { static void Main(string[] args) { int[,] arr = new int[2, 2]; arr[0, 0] = 1; arr[1, 0] = 2; arr[0, 1] = 3; arr[1, 1] = 4; Console.WriteLine("El valor que posee la variable arr[1,1] es {0}", arr[1, 1]); } } } igual que el ejemplo anterior, podemos declarar todo el arreglo de la siguiente forma: DESARROLLO DE SISTEMAS I - 2015

ING. MIGUEL CASMIRO BRAVO

DESARROLLO DE SISTEMAS I - 2015 int[,] arr = ;

Identificadores, Variables, Constantes y Enumeraciones Identificadores

1. Un identificador DEBE empezar con una letra o un signo _ 2. Un identificador NO puede tener espacios en blanco 3. Un identificador NO puede llevar el mismo nombre que una palabra clave Después de que el identificador empiece con una letra o un simbolo _, el identificador puede tener cualquier cantidad de letras, líneas o números. EsteIdentificadorEsValido _este_también esteEsOtro1 esteEsOtro2 como ejemplos inválidos tenemos: Esto es invalido 123_Otro_inválido Int Nota: Es recomendado que las variables siempre empiecen con minusculas y que sigan el patrón llamado Camello es decir que el nombre de la variable que tenga varias palabras debe ser formado de la siguiente manera: la primera palabra empezará con minúsculas pero la segunda, tercera, etc palabras estarán unidas a la primera y tendrán su primera letra en mayúsculas ejemplo: miVariable. También se ha recomendado que el nombre de Métodos, Clases y demás nombres que necesitamos especificar deberán llevar el mismo formato anterior con la excepción de que la Primera letra deberá ser mayúscula. Variables Una variable es el nombre que se le da al espacio donde se almacena la información de los tipos. La primera vez que una variable recibe un valor se llama inicialización de la variable. En C# todas las variables que van a ser utilizadas deben ser inicializadas para que nuestro programa pueda funcionar. En caso anterior hemos creado la variable var e inicializado la variable con el valor 10. Hay que tener cuidado que la creación de una variable se la hace 1 sola vez y la asignación de diferentes valores se puede hacer cuantas veces queramos. int var = 10; Constantes Las constantes como su nombre lo indica son variables cuyo valor no puede ser alterado. Éstas se utilizan para definir valores que no cambian con el tiempo. Por ejemplo, podemos definir una constante para especificar cuantos segundos hay en una hora de la siguiente forma: const int segPorHora = 3600; Las constantes deben ser inicializadas en el momento de su creación. Enumeraciones Supongamos que estamos diseñando un juego y necesitamos crear una variable para saber cuál es el estado del tanque de combustible de nuestro automóvil. Suponiendo que tenemos 4 niveles en el tanque: lleno, medio, bajo y crítico. ¿Qué tipo de variable podríamos usar para especificar estos estados? Una forma de hacerlo podría ser si especificamos una variable de tipo int (entero) que tome los valores de 1 para lleno, 2 para medio, 3 para bajo y 4 para crítico. Esta alternativa funcionaría pero a la larga nos olvidaremos qué número representaba qué. Una forma muy elegante de solucionar este problema es utilizando el tipo enum o enumeraciones. Veamos el siguiente ejemplo para comprender este concepto: namespace Autos DESARROLLO DE SISTEMAS I - 2015

ING. MIGUEL CASMIRO BRAVO

DESARROLLO DE SISTEMAS I - 2015 {

}

class Control { enum tanque { lleno, medio, bajo, critico, } static void Main() { tanque auto1 = tanque.lleno; RevisarEstadoTanque(auto1); auto1 = tanque.critico; RevisarEstadoTanque(auto1); Console.ReadKey(); } static void RevisarEstadoTanque(tanque auto) { if (auto==tanque.lleno) Console.WriteLine ("¡El tanque está lleno!"); if (auto==tanque.medio) Console.WriteLine("El tanque está por la mitad"); if (auto == tanque.bajo) Console.WriteLine("¡El tanque está casi vacío!"); if (auto == tanque.critico) Console.WriteLine("¡Alerta! tu auto se quedó sin combustible"); } }

Este programa sencillo crea una enumeración llamada tanque y dentro de ella crea 4 constantes: lleno, medio, bajo, y critico. Dentro de nuestro programa creamos la variable de tipo tanque llamada auto1 la cual podrá tomar los valores especificados dentro de la enumeración. Cuando asignamos a la variable auto1 el valor de tanque.lleno y revisamos el estado del tanque llamando a la función RevisarEstadoTanque, podremos comprobar cuál es el estado actual del tanque de combustible. Ésta es una forma muy descriptiva de cómo crear variables que cambien de estado, una solución elegante y sencilla a nuestro problema. En realidad las constantes dentro de las enumeraciones tienen valores enteros asignados. Estos valores pueden ser inicializados con distintos valores que nosotros deseemos e incluso podemos especificar qué tipo de entero queremos usar. En nuestro ejemplo anterior los valores de la enumeración son valores enteros del tipo int el primer elemento dentro de la enumeración tiene asignado el valor de 0, el siguiente el valor 1 y así sucesivamente. Esto sucede cuando no especificamos a qué tipo queremos inicializar nuestra enumeración y tampoco asignamos valores a las constantes. En el siguiente ejemplo podemos ver cómo especificar otro tipo de constantes y otros valores. Supongamos que queremos especificar cuantos segundos hay en un minuto, cuantos segundos hay en una hora y cuantos segundos hay en 24 horas. Con enumeraciones lo podemos hacer de la siguiente manera: namespace Ejemplos { class Enumeraciones { enum segundos :uint { minuto = 60, hora = 3600, dia = 86400, } DESARROLLO DE SISTEMAS I - 2015

ING. MIGUEL CASMIRO BRAVO

DESARROLLO DE SISTEMAS I - 2015 static void Main() { Console.WriteLine("Existen {0} segundos en 1 minuto, {1} segundos en 1 hora y {2} segundos en 24 horas",(uint)segundos.minuto, (uint)segundos.hora, (uint)segundos.dia); Console.ReadKey(); } } } El ejemplo anterior nos muestra otra forma de usar una enumeración. Hay que tener en cuenta que el tipo que va a tener la enumeración se encuentra después del nombre de la enumeración precedido por dos puntos. De esa forma podremos especificar de qué tipo son. Como habíamos dicho anteriormente se podrá utilizar cualquier tipo de la clase enteros como byte, sbyte, short, ushort, int, uint, long o ulong. En el caso de que no se especifique a qué tipo pertenece el compilador le dará el tipo int. También se debe tomar en cuenta que los valores de las constantes están asignados con el signo = y están separadas por comas. NOTA enum números { uno, //toma el valor de 0 dos, //toma el valor de 1 diez = 10, //toma el valor de 10 once, //toma el valor de 11 }

Operadores

Los operadores son símbolos con los cuales C# tomará una acción. Por ejemplo existen operadores matemáticos para sumar, restar, multiplicar y dividir números. Existen también operadores de comparación que analizará si un valor es igual, mayor o menor que otro y operadores de asignación los cuales asignarán nuevos valores a los objetos o variables. class operadoresMatematicos { public static void Main() { int a = 7; int b = 4; int c = a + b; int d = a - b; int e = a * b; int f = a / b; int g = a % b; Console.WriteLine ("De los números: {0} y {1} la suma es: {2}, la resta es:{3}, la multiplicación es: {4}, la división es: {5} con un residuo de: {6}",a,b,c,d,e,f,g); Console.ReadKey(); } } var += 10; // realiza la operación var = var+10; var -= 10; // realiza la operación var = var-10; var *= 10; // realiza la operación var = var*10; var /= 10; // realiza la operación var = var/10; var++; //realiza la operacion var = var+1; después de procesar esta línea ++var; //realiza la operación var = var+1; antes de procesar esta línea var--; //realiza la operacion var = var-1; después de procesar esta línea --var; //realiza la operación var = var-1; antes de procesar esta línea DESARROLLO DE SISTEMAS I - 2015

ING. MIGUEL CASMIRO BRAVO

DESARROLLO DE SISTEMAS I - 2015

Estructuras de control

Hay dos maneras de cambiar el rumbo de ejecución de un programa, estos pueden ser saltos incondicionales y saltos condicionales. En este capítulo se describen algunas de estas sentencias. Algunas son muy similares a las existentes en otros lenguajes, como las sentencias if, for, while, etc. y otras, como foreach, throw o continue, son algo más específicas.

Saltos incondicionales

Las instrucciones de un programa se ejecutan sentencia por sentencia empezando desde el método o función principal llamado Main() hasta terminar con el programa. El programa sin embargo, tomará otros rumbos incondicionalmente en dos oportunidades: 1. Cuando encuentre la llamada a otros métodos (Ejemplo 1) y 2. Con el uso de las palabras claves como goto, break, continue, return y throw namespace Ejemplos { class Ejemplo_1 { static void Main() { Console.WriteLine("Esta parte se ejecuta primero"); LlamadaOtraFuncion(); Console.WriteLine("Esta parte se ejecuta al final"); } static void LlamadaOtraFuncion() { Console.WriteLine("Ha salido del método Main()"); } } } GOTO namespace Ejemplos { class Ejemplo4_2 { static void Main() { int contador = 0; REPETIR: Console.WriteLine("Esta línea se repetirá 100 veces, esta es la linea numero: {0}", contador); if (contador++ < 100) goto REPETIR; Console.WriteLine("Despues de que el contador sea igual o mayor que 100 se imprimirá esta línea"); Console.ReadKey(); } } }

Saltos condicionales

Los saltos condicionales sirven para ejecutar cierto código solamente si se cumple con alguna condición. Entre otros tenemos:

Instrucción if

Esta sentencia sirve para ejecutar unas instrucciones en caso de que se cumpla determinada condición. La forma completa de la instrucción if es DESARROLLO DE SISTEMAS I - 2015

ING. MIGUEL CASMIRO BRAVO

DESARROLLO DE SISTEMAS I - 2015

if( condición ) { instrucciones; ... } else { instrucciones; ... } namespace Ejemplos { class InstruccionIf { public static void Main() { double d; Console.WriteLine("Introduce un numero"); d = Double.Parse(Console.ReadLine()); if (d > 0) { Console.WriteLine("El numero {0} es positivo", d); } else { Console.WriteLine("El numero {0} es negativo", d); } Console.ReadKey(); } } } if( condicion1 ) { instrucciones; } else if( condicion2 ) { instrucciones; } ... else { instrucciones; }

Instrucción switch

La instrucción switch es muy parecida a la estructura if-else-if, sólo que permite seleccionar entre varias alternativas de una manera más cómoda. Funciona de la siguiente manera: el valor de una expresión se prueba sucesivamente con una lista de constantes. Cuando se encuentra una coincidencia, se ejecuta la secuencia de instrucciones asociada con esa coincidencia. La forma general de la instrucción switch es la siguiente: switch( expresión ){ case constante1: case constante2: DESARROLLO DE SISTEMAS I - 2015

instrucciones; break; ING. MIGUEL CASMIRO BRAVO

DESARROLLO DE SISTEMAS I - 2015 instrucciones; break;

... default: }

instrucciones; break;

namespace Ejemplos { class InstruccionSwitch { public static void Main() { string s; Console.WriteLine( "Elige hacer algo con los números 2 y 3"); Console.WriteLine( " + para sumarlos" ); Console.WriteLine( " - para restarlos" ); Console.WriteLine( " * para multiplicarlos" ); Console.WriteLine( " / para dividirlos (division entera)" ); s = Console.ReadLine(); switch(s) { case "+": Console.WriteLine("El resultado es {0}", 2+3); break; case "-": Console.WriteLine("El resultado es {0}", 2-3); break; case "*": Console.WriteLine("El resultado es {0}", 2*3); break; case "/": Console.WriteLine("El resultado es {0}", 2 / 3); break; default: Console.WriteLine("No te entiendo"); break; } Console.ReadKey(); } } } namespace Ejemplos { class InstruccionSwitch { public static void Main() { int voto; Console.WriteLine( "Qué tipo de musica te gusta más"); Console.WriteLine( "1 - Rock" ); Console.WriteLine( "2 - Clásica (clasica cuenta como instrumental)" ); Console.WriteLine( "3 - Instrumental" ); Console.WriteLine( "4 - Alternativa (alternativo cuenta como Rock)" ); DESARROLLO DE SISTEMAS I - 2015

ING. MIGUEL CASMIRO BRAVO

DESARROLLO DE SISTEMAS I - 2015

}

}

}

voto = Int32.Parse(Console.ReadLine()); switch(voto) { case 1: Console.WriteLine("Has votado por Rock o Alternativo"); break; case 2: //Debido a que no tiene ni un goto ni break y está vacía va al siguiente caso case 3: Console.WriteLine("Has votado por Clásica o Instrumental"); break; case 4: goto case 1; default: Console.WriteLine("No te entiendo"); break; } Console.ReadKey();

Bucle for

El bucle for de C# es idéntico al encontrado en los lenguajes C/C++ y Java. El formato general es for( inicialización; condición; iteración ) { instrucciones; } namespace Ejemplos { class BucleFor2 { public static void Main() { int i; int j; for (i = 0, j = 10; i < j; i++, j--) { Console.WriteLine("( {0} , {1} )", i, j); } Console.ReadKey(); } } }

Bucle while

El bucle while es un bucle que se realiza mientras se cumpla determinada condición. Tiene la forma while( condición ) { instrucciones; } Donde la condición tiene que ser un valor booleano. Tiene una estructura muy sencilla, así que vamos a ver directamente un ejemplo. namespace Ejemplos

DESARROLLO DE SISTEMAS I - 2015

ING. MIGUEL CASMIRO BRAVO

DESARROLLO DE SISTEMAS I - 2015 {

}

class BucleWhile { public static void Main() { int i = 0; while (i < 10) { Console.WriteLine(i); i = i + 1; } } }

Bucle do-while

Se trata de una ligera variante del bucle anterior, con la diferencia de que ahora primero se ejecutan las instrucciones y luego se evalúa la condición, de forma que tiene tiene una estructura: do{ instrucciones; } while( condición ); namespace Ejemplos { class BucleDoWhile { public static void Main() { string s = ""; do { Console.WriteLine("Introduce si para salir del bucle"); s = Console.ReadLine(); } while (s != "si"); } } }

Bucle foreach

El bucle foreach se utiliza para hacer iteraciones sobre elementos de una colección, como pueden ser los enteros dentro de un arreglo de enteros. La sintaxis sigue la siguiente estructura: foreach( tipo in coleccion ) { instrucciones; } namespace Ejemplos { class BucleForeach { public static void Main() { int[,] arr = {{1,2},{2,3}}; foreach (int elem in arr) DESARROLLO DE SISTEMAS I - 2015

ING. MIGUEL CASMIRO BRAVO

DESARROLLO DE SISTEMAS I - 2015 {

}

}

}

Console.WriteLine(elem); } Console.ReadKey();

Igual pero con for namespace Ejemplos { class BucleForeach { public static void Main() { int i, j; //seran los indexadores de la matriz int[,] arr = { { 1, 2 }, { 2, 3 } }; for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { Console.WriteLine(arr[i, j]); } } Console.ReadKey(); } } }

Usando continue y break

continue y break son dos palabras clave que nos permiten saltar incondicionalmente al inicio de un bucle (continue) o fuera de un bucle (break) cuando se necesite. namespace Ejemplos { class continueBreak { public static void Main() { for(int i = 0; i
Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.