C# - Fundamentos del Lenguaje (I)

30
Ignacio García, Ismael Caballero {Ignacio.GRodriguez, Ismael.Caballero}@uclm.es Universidad de Castilla La Mancha Sesión 1.3. C# - Fundamentos del Lenguaje (I) Versión 1.0 Curso de Enseñanzas Propias “Lenguaje de Programación C#” Curso 2008/09

description

C# - Fundamentos del Lenguaje (I) Curso de Enseñanzas Propias “Lenguaje de Programación C#”Curso 2008/09

Transcript of C# - Fundamentos del Lenguaje (I)

Page 1: C# - Fundamentos del Lenguaje (I)

Ignacio García, Ismael Caballero

{Ignacio.GRodriguez, Ismael.Caballero}@uclm.es

Universidad de Castilla La Mancha

Sesión 1.3.

C# - Fundamentos del Lenguaje (I) Versión 1.0

Curso de Enseñanzas Propias “Lenguaje de Programación C#”

Curso 2008/09

Page 2: C# - Fundamentos del Lenguaje (I)

2CEP "Lenguaje de Programación C#"- Curso 08/09

1. Características de C#2. Anatomía de un Programa3. Tipos de Datos y Variables 4. Métodos y paso de argumentos5. Algunos ejercicios para practica

Sesión 1.3.

Contenidos

Page 3: C# - Fundamentos del Lenguaje (I)

3CEP "Lenguaje de Programación C#"- Curso 08/09

• Principales Características de C#� Implementa Seguridad de Tipos� Orientado a Objetos� Sintaxis parecida a C, C++ y Java

• Facilita la curva de aprendizaje• Simplifica el uso de C++• Proporciona características que no estaban en Java cuando salió C# (algunas

ya están en Java a partir de 1.5)– tipos de valores que aceptan valores NULL, enumeraciones, delegados, métodos

anónimos y acceso directo a memoria– http://www.javacamp.org/javavscsharp/

� C# facilita el desarrollo de componentes de software a través de:• Firmas de métodos encapsulados denominadas delegados, que permiten

notificaciones de eventos con seguridad de tipos.• Propiedades, que actúan como descriptores de acceso para variables miembro

privadas. • Atributos, que proporcionan metadatos declarativos sobre tipos en tiempo de

ejecución. • Comentarios en línea de documentación XML

� Interoperabilidad• Para comunicarse con Windows como hacía C++

1. Características de C#

Objetivos del Curso

Page 4: C# - Fundamentos del Lenguaje (I)

4CEP "Lenguaje de Programación C#"- Curso 08/09

1. Características de C#2. Anatomía de un Programa3. Tipos de Datos y Variables 4. Métodos y paso de argumentos5. Estructuras de Control de Flujo6. Algunos ejercicios para practicar

Sesión 1.3.

Contenidos

Page 5: C# - Fundamentos del Lenguaje (I)

5CEP "Lenguaje de Programación C#"- Curso 08/09

2. Anatomía de un programa

Elementos

Comentarios

Comentarios

Mecanismos para usar “paquetes” (espacios

de nombres)

Mecanismos para crear espacios de nombres

Mecanismos para crear

clases

Definición de la función

principal (“M ”)

Para escribir en Línea de Comandos

Definición de Variables

Mecanismos para especificar opciones de

ejecución

Para leer de Línea de

Comandos

Mecanismos para pasar argumentos en línea de

comandos

Page 6: C# - Fundamentos del Lenguaje (I)

6CEP "Lenguaje de Programación C#"- Curso 08/09

1. Características de C#2. Anatomía de un Programa3. Tipos de Datos y Variables 4. Métodos y paso de argumentos5. Algunos ejercicios para practicar

Sesión 1.3.

Contenidos

Page 7: C# - Fundamentos del Lenguaje (I)

7CEP "Lenguaje de Programación C#"- Curso 08/09

• Tipos de Datos en C#� Integrados (CTS)

• Numéricos (int, float, …), Texto (char, string), Fecha(Date), Boolean

� Definidos por el Usuario• enum, struct, class

3. Tipos de Datos y Variables

Tipos de Datos: Sistemas de Tipos

public class PersonaPersonaPersonaPersona {private string nombre;private string apellido1;public Persona (string sNombre, string sApellido1){…}

}public struct PersonaPersonaPersonaPersona {public string Nombre;public String Apellido1;…

}

TiposTiposTiposTipos PorPorPorPor ValorValorValorValor: Simple, Enum y Struct

Page 8: C# - Fundamentos del Lenguaje (I)

8CEP "Lenguaje de Programación C#"- Curso 08/09

•Tipos de Datos Integrados

FechasDateTime

Caracteres unicodechar

Reales de 96 bitsdecimal

Reales de 64 bitsdouble

Reales de 32 bitsfloat

Enteros de 32 bitsint

Enteros sin signo de 16 bitsushort

Enteros de 16 bitsshort

Naturales de 8 bitsByte

Enteros de 8 bitssbyte

BooleanosBool

DescripciDescripciDescripciDescripcióóóónnnnTipoTipoTipoTipo

3. Tipos de Datos y Variables

Tipos de Datos Integrados

Page 9: C# - Fundamentos del Lenguaje (I)

9CEP "Lenguaje de Programación C#"- Curso 08/09

• Definición de Variables Locales

3. Tipos de Datos y Variables

Definición de Variables

int objetoCuenta;

int objetoCuenta, empleadoNúmero;

int empleadoNumero = 23;

string sCadena = “ismael”

int objetoCuenta;

int objetoCuenta, empleadoNúmero;

int empleadoNumero = 23;

string sCadena = “ismael”

TipoDatoTipoDatoTipoDatoTipoDato NombreVariableNombreVariableNombreVariableNombreVariable;;;;TipoDatoTipoDatoTipoDatoTipoDato NombreVariableNombreVariableNombreVariableNombreVariable;;;;

Page 10: C# - Fundamentos del Lenguaje (I)

10CEP "Lenguaje de Programación C#"- Curso 08/09

Palabras claveabstract event new struct as explicit null switch base extern object this bool false operator throw break finally out true byte fixed override try case float params typeof catch for private uint char foreach protected ulong checked goto public unchecked class if readonly unsafe const implicit ref ushort continue in return using decimal int sbytevirtual default interface sealed volatile delegate internal short void do is sizeof while double lock stackalloc else long static enum namespace string

Palabras clave contextualesget partial set value where yield

3. Tipos de Datos y Variables

Definición de Variables (II)

Page 11: C# - Fundamentos del Lenguaje (I)

11CEP "Lenguaje de Programación C#"- Curso 08/09

• Operaciones entre variables del mismo tipo� Si son de distinto tipo habría cambios de tipo

• Precedencia y asociatividad de operadores � Todos los operadores binarios, salvo los de asignación, son

asociativos por la izquierda� Los operadores de asignación y el operador condicional son

asociativos por la derecha

3. Tipos de Datos y Variables

Operadores

OperadoresOperadoresOperadoresOperadores comunescomunescomunescomunesOperadoresOperadoresOperadoresOperadores comunescomunescomunescomunes

Operadores de igualdad

Operadores relacionales

Operadores condicionales

Operador de incremento

Operador de decremento

Operadores aritméticos

Operadores de asignación

EjemploEjemploEjemploEjemplo

== !=

< > <= >= is

&& || ?:

++

- -

+ - * / %

= *= /= %= += -= <<= >>= &= ^= |=

Page 12: C# - Fundamentos del Lenguaje (I)

12CEP "Lenguaje de Programación C#"- Curso 08/09

•Conversiones de tipo implícitas vs explícitas

3. Tipos de Datos y Variables

Conversiones de Tipo

using System;class Test{

static void Main( ) {

int intValor = 123;long longValor = intValor;Console.WriteLine("(long) {0} = {1}", intValor,

�longValor);}

}

using System;class Test{

static void Main( ) {

int intValor = 123;long longValor = intValor;Console.WriteLine("(long) {0} = {1}", intValor,

�longValor);}

}

using System;class Test{

static void Main( ) {

long longValor = Int64.MaxValor;int intValor = (int) longValor;Console.WriteLine("(int) {0} = {1}", longValor,

�intValor);}

}

using System;class Test{

static void Main( ) {

long longValor = Int64.MaxValor;int intValor = (int) longValor;Console.WriteLine("(int) {0} = {1}", longValor,

�intValor);}

}

Page 13: C# - Fundamentos del Lenguaje (I)

13CEP "Lenguaje de Programación C#"- Curso 08/09

• Entornos Comprobados (checked vs unchecked )� checked Especifica un contexto comprobado.

• El desbordamiento aritmético produce una excepción

� unchecked Especifica un contexto no comprobado.– Se hace caso omiso del desbordamiento y el resultado se trunca

� Dónde puede producirse?• Operadores ++ — - (unario) + - * /

• Conversiones numéricas explícitas entre tipos integrales

static int CheckedMethod(short x, short y){int z = 0; try { z = checked((short)(xchecked((short)(xchecked((short)(xchecked((short)(x + y));+ y));+ y));+ y));

}catch (System.OverflowExceptionSystem.OverflowExceptionSystem.OverflowExceptionSystem.OverflowException e){

Console.WriteLine(e.ToString()); } return z; }

static int CheckedMethod(short x, short y){int z = 0; try { z = checked((short)(xchecked((short)(xchecked((short)(xchecked((short)(x + y));+ y));+ y));+ y));

}catch (System.OverflowExceptionSystem.OverflowExceptionSystem.OverflowExceptionSystem.OverflowException e){

Console.WriteLine(e.ToString()); } return z; }

3. Tipos de Datos y Variables

Conversiones de Tipo (II)

Page 14: C# - Fundamentos del Lenguaje (I)

14CEP "Lenguaje de Programación C#"- Curso 08/09

•Introducción� Las matrices son estructuras de datos

homogéneas a las que se puede acceder medianteun índice entero

3. Tipos de Datos y Variables

Matrices

Índice entero 0Índice entero n-1

Especifica el rango de la tabla

Especifica el nombre de la variable de tabla

Especifica el tipo de elementos de la tabla (siempre el mismo para todos los elementos: puede ser CTS o definido por usr)

tipo[ ] nombre;tipo[ ] nombre;

Rango o Dimensión (n)

[a,b]: 2 Dimensiones[a]: 1 Dimensión

[a,b,..,m]: m Dimensiones

Page 15: C# - Fundamentos del Lenguaje (I)

15CEP "Lenguaje de Programación C#"- Curso 08/09

• Consideraciones� Una tabla no puede cambiar su tamaño cuando está llena

• Una clase de colección (se verá en 1.4), como ArrayList, puede cambiar su tamaño

� Una tabla contiene elementos de un solo tipo• Una colección está diseñada para contener elementos de

distintos tipos

• Los elementos de una tabla no pueden ser de sólo lectura

� Una colección puede tener acceso de sólo lectura• En general, las tablas son más rápidas pero menos flexibles

• Las colecciones son algo más lentas pero más flexibles

� Tablas en Métodos• Los métodos pueden devolver tablas

• Un parámetro tabla siempre se pasa por referencia

3. Tipos de Datos y Variables

Matrices (II)

Page 16: C# - Fundamentos del Lenguaje (I)

16CEP "Lenguaje de Programación C#"- Curso 08/09

• Declaración y Uso

long[ ] fila = long[ ] fila = long[ ] fila = long[ ] fila = newnewnewnew long[4];long[4];long[4];long[4];long[ ] fila = long[ ] fila = long[ ] fila = long[ ] fila = newnewnewnew long[4];long[4];long[4];long[4];

int[,] cuad = newnewnewnew int[2,3];int[,] cuad = newnewnewnew int[2,3];

3. Tipos de Datos y Variables

Matrices (III)

for(int i=0;i<fila.GetLength(0);i++){fila[i]++;

}

for(int i=0;i<fila.GetLength(0);i++){fila[i]++;

}

try{for(int nFila=0; i<cuad.GetLength(0); i++){

for(int nCol=0; i<cuad.GetLength(1); i++){Console.WriteLine(“Introduce elto {0},{1}”, nFila, nCol);cuad[nFila,nColcuad[nFila,nColcuad[nFila,nColcuad[nFila,nCol]=]=]=]=Console.ReadLine();

}catch (IndexOutOfRangeExceptionIndexOutOfRangeExceptionIndexOutOfRangeExceptionIndexOutOfRangeException IE){

Console.WriteLine (“Excepcion {0}”, IE.ToString());}

try{for(int nFila=0; i<cuad.GetLength(0); i++){

for(int nCol=0; i<cuad.GetLength(1); i++){Console.WriteLine(“Introduce elto {0},{1}”, nFila, nCol);cuad[nFila,nColcuad[nFila,nColcuad[nFila,nColcuad[nFila,nCol]=]=]=]=Console.ReadLine();

}catch (IndexOutOfRangeExceptionIndexOutOfRangeExceptionIndexOutOfRangeExceptionIndexOutOfRangeException IE){

Console.WriteLine (“Excepcion {0}”, IE.ToString());}

int[,] cuadr = {{5, 4, 3},{2, 1, 4}};int[,] cuadr = {{5, 4, 3},{2, 1, 4}};

•Para usar la tabla hay que definir la variable y crearla con new. •Todos los elementos se inicializan a cero

long[ ] fila2 = long[ ] fila2 = long[ ] fila2 = long[ ] fila2 = newnewnewnew long[3]{ 1,2,3};long[3]{ 1,2,3};long[3]{ 1,2,3};long[3]{ 1,2,3};long[ ] fila2 = long[ ] fila2 = long[ ] fila2 = long[ ] fila2 = newnewnewnew long[3]{ 1,2,3};long[3]{ 1,2,3};long[3]{ 1,2,3};long[3]{ 1,2,3};

void Metodo(string[ ] args) {foreach (string arg in args) Console.WriteLine(arg);

}

void Metodo(string[ ] args) {foreach (string arg in args) Console.WriteLine(arg);

}

Page 17: C# - Fundamentos del Lenguaje (I)

17CEP "Lenguaje de Programación C#"- Curso 08/09

• Atributos

• Métodos Matrices� Sort:

• Ordena los elementos en una tabla de rango 1

� Clear: • Asigna el valor cero o null a un rango de elementos

� Clone: • Crea una copia de la tabla

� GetLength: • Devuelve la longitud de una dimensión dada

� IndexOf: • Devuelve el índice de la primera vez que aparece un valor

3. Tipos de Datos y Variables

Matrices (IV)

cuad5 4 3

2 1 4

cuad.Rank==2cuad.Rank==2

cuad.Length==6cuad.Length==6

int[,] cuad = new int[2,3];int[,] cuad = new int[2,3];

Page 18: C# - Fundamentos del Lenguaje (I)

18CEP "Lenguaje de Programación C#"- Curso 08/09

• Definición, Creación y uso de tipos enumerados

3. Tipos de Datos y Variables

Tipos enumerados

enum Cargo [:int]{ Director[=1], Analista, Programador }

enum Cargo [:int]{ Director[=1], Analista, Programador }

Cargo cargoActual = Cargo.Analista; Cargo cargoActual = Cargo.Analista;

Console.WriteLine(“{0}”, cargoActual); // Mostraría “Analista”

Console.WriteLine(“{0}”, cargoActual); // Mostraría “Analista”

http://www.devjoker.com/asp/ver_contenidos.aspx?co_contenido=164

Investiga la Clase System.EnumInvestiga la Clase System.Enum

Page 19: C# - Fundamentos del Lenguaje (I)

19CEP "Lenguaje de Programación C#"- Curso 08/09

• Definición, Creación y uso de tipos estructuras� Agrupación de Varias Variables pertenecientes a la misma

entidad, sin necesidad de gestionar el comportamiento

3. Tipos de Datos y Variables

Tipos estructuras

Empleado UnEmpleado; UnEmpleado.NombrePila = "Juan";UnEmpleado.edad = 23;UnEmpleado.Cargo = Cargo.Analista;

Empleado UnEmpleado; UnEmpleado.NombrePila = "Juan";UnEmpleado.edad = 23;UnEmpleado.Cargo = Cargo.Analista;

public struct Empleado{

public string NombrePila;public int edad;public Cargo cargoActual;

}

public struct Empleado{

public string NombrePila;public int edad;public Cargo cargoActual;

}

Page 20: C# - Fundamentos del Lenguaje (I)

20CEP "Lenguaje de Programación C#"- Curso 08/09

1. Características de C#2. Anatomía de un Programa3. Tipos de Datos y Variables 4. Tipos de instrucciones5. Algunos ejercicios para practicar

Sesión 1.3.

Contenidos

Page 21: C# - Fundamentos del Lenguaje (I)

21CEP "Lenguaje de Programación C#"- Curso 08/09

•Bloques de Instrucciones

4. Tipos de Instrucciones

Bloques de Instrucciones

Se usan llaves paradelimitar bloques

{

// código

}

{

// código

} {

int i;

...

{

int i;

...

}

}

{

int i;

...

{

int i;

...

}

}

{

int i;

...

}

...

{

int i;

...

}

{

int i;

...

}

...

{

int i;

...

}

Bloques Anidados:Un bloque y subloque padre o pueden tener unavariable con el mismo nombre

Bloques hermanospueden tenervariables con el mismo nombre

Page 22: C# - Fundamentos del Lenguaje (I)

22CEP "Lenguaje de Programación C#"- Curso 08/09

•Tipos de Instrucciones

4. Tipos de Instrucciones

Tipos de Instrucciones para control del flujo

InstruccionesInstruccionesInstruccionesInstrucciones CondicionalesCondicionalesCondicionalesCondicionalesLas Las Las Las instruccionesinstruccionesinstruccionesinstrucciones if y switchif y switchif y switchif y switch

InstruccionesInstruccionesInstruccionesInstrucciones CondicionalesCondicionalesCondicionalesCondicionalesLas Las Las Las instruccionesinstruccionesinstruccionesinstrucciones if y switchif y switchif y switchif y switch

InstruccionesInstruccionesInstruccionesInstrucciones de de de de iteraciiteraciiteraciiteracióóóónnnnLas Las Las Las instruccionesinstruccionesinstruccionesinstrucciones while, do, for, y while, do, for, y while, do, for, y while, do, for, y foreachforeachforeachforeach

InstruccionesInstruccionesInstruccionesInstrucciones de de de de iteraciiteraciiteraciiteracióóóónnnnLas Las Las Las instruccionesinstruccionesinstruccionesinstrucciones while, do, for, y while, do, for, y while, do, for, y while, do, for, y foreachforeachforeachforeach

InstruccionesInstruccionesInstruccionesInstrucciones de de de de saltosaltosaltosaltoLas Las Las Las instruccionesinstruccionesinstruccionesinstrucciones gotogotogotogoto, break, y continue , break, y continue , break, y continue , break, y continue

InstruccionesInstruccionesInstruccionesInstrucciones de de de de saltosaltosaltosaltoLas Las Las Las instruccionesinstruccionesinstruccionesinstrucciones gotogotogotogoto, break, y continue , break, y continue , break, y continue , break, y continue

Ojo con los breaks en los

case

Usada en lascolecciones

Page 23: C# - Fundamentos del Lenguaje (I)

23CEP "Lenguaje de Programación C#"- Curso 08/09

•Métodos “instrucciones personalizadas”

4. Métodos y Paso de Argumentos

Definición y Uso de Métodos

Accesibilidad Modificador TipoDatoDevuelto NombreNombreNombreNombre((((listaParametroslistaParametroslistaParametroslistaParametros) ) ) ) throws de excepciones {{{{

////////SecuenciaSecuenciaSecuenciaSecuencia de de de de InstruccionesInstruccionesInstruccionesInstruccionesreturn return return return TipoDatoDevueltoTipoDatoDevueltoTipoDatoDevueltoTipoDatoDevuelto;;;;

}}}}

Accesibilidad Modificador TipoDatoDevuelto NombreNombreNombreNombre((((listaParametroslistaParametroslistaParametroslistaParametros) ) ) ) throws de excepciones {{{{

////////SecuenciaSecuenciaSecuenciaSecuencia de de de de InstruccionesInstruccionesInstruccionesInstruccionesreturn return return return TipoDatoDevueltoTipoDatoDevueltoTipoDatoDevueltoTipoDatoDevuelto;;;;

}}}}

static string EjemploMethod( ){

int numBeans;//...

Console.WriteLine("Hola"); if (numBeans < 10)

return “Hola”Console.WriteLine(“Adiós");

return “Adiós”;}

static string EjemploMethod( ){

int numBeans;//...

Console.WriteLine("Hola"); if (numBeans < 10)

return “Hola”Console.WriteLine(“Adiós");

return “Adiós”;}

Page 24: C# - Fundamentos del Lenguaje (I)

24CEP "Lenguaje de Programación C#"- Curso 08/09

4. Métodos y Paso de Argumentos

• Definición y uso

Parámetros en los métodos

static void UnMetodo (int n, string y){ ... }

static void OtroMetodo () {UnMetodo(2, "Hola, mundo");

}

static void UnMetodo (int n, string y){ ... }

static void OtroMetodo () {UnMetodo(2, "Hola, mundo");

}

Llamada desdeotro método

Page 25: C# - Fundamentos del Lenguaje (I)

25CEP "Lenguaje de Programación C#"- Curso 08/09

�Como ref , pero no se pasan valores al método

�Se usa la palabra clave out en la declaración y las llamadas al método

Salida

�Se usa la palabra clave ref en la declaración y las llamadas al método

�Los tipos y valores de variables deben coincidir

�Los cambios hechos en el método afectan al llamador

�Hay que asignar un valor al parámetro antes de la llamada al método

Entrada/Salida(por referencia)

�Se copia el valor del parámetro�Se puede cambiar la variable dentro del método

�No afecta al valor fuera del método�El parámetro debe ser de un tipo igual o compatible

Entrada(por valor)

4. Métodos y Paso de Argumentos

Tipos de Paso de Parámetros en los métodos

•Mecanismos de Paso de Parámetros

static void SumaUno(int x) {

x++; // Incrementar x}

static void SumaUno(int x) {

x++; // Incrementar x}

static void SumaUno(ref int x) {

x++; // Incrementar x}

static void SumaUno(ref int x) {

x++; // Incrementar x}

static void OutDemo(out int p) { // ... }int n;OutDemo(out n);

static void OutDemo(out int p) { // ... }int n;OutDemo(out n);

Page 26: C# - Fundamentos del Lenguaje (I)

26CEP "Lenguaje de Programación C#"- Curso 08/09

static long AddList(params long[ ] v)

{

long total, i;

for (i = 0, total = 0; i < v.Length; i++)

total += v[i];

return total;

}

static void Main( )

{

long x = AddList(63,21,84);

}

static long AddList(params long[ ] v)

{

long total, i;

for (i = 0, total = 0; i < v.Length; i++)

total += v[i];

return total;

}

static void Main( )

{

long x = AddList(63,21,84);

}

4. Métodos y Paso de Argumentos

Tipos de Paso de Parámetros en los métodos (II)

•Lista de Parámetros de Longitud Variable

Page 27: C# - Fundamentos del Lenguaje (I)

27CEP "Lenguaje de Programación C#"- Curso 08/09

• Resumen Uso Tipos de Parámetros� Mecanismos

• El paso por valor es el más habitual

• El valor de retorno del método es útil para un solo valor

• ref y/o out son útiles para más de un valor de retorno• ref sólo se usa si los datos se pasan en ambos sentidos

� Eficiencia • El paso por valor suele ser el más eficaz

4. Métodos y Paso de Argumentos

Tipos de Paso de Parámetros en los métodos (III)

Page 28: C# - Fundamentos del Lenguaje (I)

28CEP "Lenguaje de Programación C#"- Curso 08/09

Métodos que comparten una signatura� Se distinguen examinando la lista de parámetros� No hay que abusar, ya que:

• Son difíciles de depurar

• Son difíciles de mantener

class OverloadingExample{

static static static static intintintint SumaSumaSumaSuma(int(int(int(int a, a, a, a, intintintint b)b)b)b){

return a + b;}static static static static intintintint SumaSumaSumaSuma(int(int(int(int a, a, a, a, intintintint b, b, b, b, intintintint c) c) c) c) {

return Suma(a,Suma(b,c));}static void Main( ) {

Console.WriteLine(Suma(1,2) + Suma(1,2,3));}

}

class OverloadingExample{

static static static static intintintint SumaSumaSumaSuma(int(int(int(int a, a, a, a, intintintint b)b)b)b){

return a + b;}static static static static intintintint SumaSumaSumaSuma(int(int(int(int a, a, a, a, intintintint b, b, b, b, intintintint c) c) c) c) {

return Suma(a,Suma(b,c));}static void Main( ) {

Console.WriteLine(Suma(1,2) + Suma(1,2,3));}

}

4. Métodos y Paso de Argumentos

Sobrecarga de Métodos

Page 29: C# - Fundamentos del Lenguaje (I)

29CEP "Lenguaje de Programación C#"- Curso 08/09

1. Características de C#2. Anatomía de un Programa3. Tipos de Datos y Variables 4. Métodos y paso de argumentos5. Algunos ejercicios para practicar

Sesión 1.3.

Contenidos

Page 30: C# - Fundamentos del Lenguaje (I)

30CEP "Lenguaje de Programación C#"- Curso 08/09

• Ejercicios1. Haz un programa que lea de teclado dos números e

imprima el mayor.2. Escribe un método que genere un menú, donde las

opciones sean los elementos de un tipo enumerado.3. Escribe un método que genere una variable de tipo

enumerado con el resultado de la opción del menú.4. Haz un programa que implemente una sumadora n-aria

donde los sumandos se pasarán como argumentos.5. Haz un método que admita un número indeterminado de

cadenas y muestre la de mayor tamaño.6. Haz un método que admita una matriz de estructuras

con datos de alumnos (nombre, apellido1 y nota en letras) y muestre el número de apariciones de cada nota

5. Ejercicios para practicar

Ejercicios para implementar lo visto hasta ahora.