Programación en C#
Programación en C#
Programación en C#
Instalar el compilador
Para programar en cualquier lenguaje, se necesita un compilador. Vamos a entender sto
como un entorno de trabajo necesario para hacer un programa.
Normalmente hay varias opciones, nosotros utilizaremos el oficial de Microsoft, que
adems es gratuito y podemos descargar desde su pgina web.
La versin concreta que vamos a utilizar es la siguiente:
Visual C# 2010 Express
Descargar aqu
Proceso de instalacin
Ejecuta el instalador una vez descargado.
Espera a que la aplicacin extraiga los archivos.
En esta ventana nos pregunta si queremos colaborar con Microsoft en mejorar el programa,
etc. Decide t mismo/a. Yo lo he dejado marcado.
A continuacin debemos aceptar la licencia as que marca la primera opcin: "He ledo y
acepto los trminos de la licencia".
Productos opcionales que podemos instalar. Desmarca el primero si lo marca por defecto.
No necesitamos ninguno de ellos para este curso.
Mostrar los requisitos del sistema. Si cumples los requisitos podemos proseguir.
Si todo ha ido bien, nos mostrar esta ventana indicando que la instalacin fue correcta.
1. Guardar todo. Utilizaremos este botn para ir guardando el proyecto. Lo que hace
es guardar los avances en todos los proyectos que tengamos abiertos. Si queremos
guardar slo el actual, utilizaremos el botn que est justo a su izquierda.
2. Nuevo proyecto... Haciendo click ah crearemos un nuevo proyecto.
3. Proyectos recientes. Desde aqu podemos abrir los proyectos en los que hemos
trabajado recientemente. Lo normal es que ahora mismo no tengamos ninguno.
4. Iniciar. Desactivado, porque se utiliza para ejecutar el proyecto actual. Con esto
iniciaremos el programa que tengamos abierto en ese momento para probarlo.
5. Explorador de soluciones. Aqu veremos qu proyectos estn abiertos en ese
momento, por eso ahora no hay nada. Entenderemos "solucin" como un proyecto.
Adems del punto 2, tambin podemos crear un nuevo proyecto desde el men Archivo.
Vamos a crear un proyecto nuevo:
Si todo ha ido bien, veremos una pantalla con el proyecto abierto, tal que as:
Muy bien, hasta aqu todo lo que necesitas saber sobre la creacin de un proyecto.
La lnea debe ir dentro de ese bloque. Dentro? Como puedes observar hay una lnea en
blanco encerrada entre corchetes { }. En programacin, el bloque es separado en lneas para
mantener una estructura ms fcil de entender.
A su vez, este bloque est dentro de "class Program" y ste dentro de "namespace
PrimerPrograma". Esto no hace falta que lo entendamos por el momento, lo que es
importante es no modificar nada en la estructura.
Tampoco debemos modificar el primer bloque del programa donde aparecen las directivas
"using", de las que ms tarde hablaremos.
Vamos a solucionarlo escribiendo una lnea que har que se cierre la consola cuando
pulsemos una tecla. Quedando as:
Ya hemos hecho nuestro primer programa funcional. Con esto hemos aprendido a escribir
texto en la consola.
Errores
Si has tenido algn error de escritura, al ejecutar el programa vers una ventana avisando de
ello, as:
Para evitar estos problemas, es recomendable utilizar la ayuda que ofrece el compilador:
Puede que en este programa tan sencillo no hayas fallado, pero ten en cuenta estas pautas
para solucionar posibles errores en futuros ejercicios.
La apertura de un comentario (//) slo permite escribir en una lnea. Si queremos escribir en
ms de una, debemos hacerlo de la siguiente forma:
Vamos a ver ahora los tipos de datos ms comunes para programar. Estos tipos de datos
son con los que operamos en los programas y se les conoce como variables.
Un pequeo ejemplo, imaginad que tenemos que hacer una cuenta aritmtica en un
momento determinado que sera:
4,5 + 7
Bien, pues 4,5 no es un valor del mismo tipo que 7. El valor 4,5 deber ser almacenado en
una variable compatible con su tipo (es un valor decimal) y el nmero 7 en otro tipo (es un
valor entero).
Estos son los tipos que utilizaremos en este curso. Hay ms tipos y cada uno tiene unas
limitaciones. Para saber ms sobre ello, puedes investigar por tu cuenta, aunque no lo
necesitars para realizar las prcticas que haremos en las prximas lecciones.
Si te quedaron algunas dudas, no te preocupes, en la leccin siguiente veremos la
declaracin de variables y cmo asignar valores a cada tipo para que lo entiendas
perfectamente.
Declaracin de variables
Veamos como se declara una variable:
Tan simple como escribir el tipo de dato seguido del nombre que le queramos dar a la
variable, finalizando la instruccin con punto y coma (;).
Recuerda: En C# al final de cada instruccin siempre hay que poner punto y coma (;),
excepto en algunas otras instrucciones como bucle.
Respecto al nombre de la variable, hemos dicho antes que podemos darle el nombre que
queramos, esto es correcto, pero hay que seguir unas normas:
Bueno, esto es slo una declaracin. Digamos que hasta aqu lo nico que hace esa
instruccin es decirle al compilador que hemos creado una variable de tal tipo y que tiene
tal nombre.
A continuacin voy a declarar e inicializar una variable de cada tipo que vimos en la
leccin anterior. Voy a mezclar formas de hacerlo como hemos visto aqu, ya deberas
entender el cdigo sin problemas:
Operadores aritmticos
En programacin necesitaremos constantemente operar con valores. Estos valores pueden
ser escritos en el programa en el momento necesario, o pueden estar almacenados en
variables. Depender del uso que queramos darles.
Vamos a ver la forma de operar con operadores aritmticos, con variables o con valores
determinados en el momento.
Lo primero que hemos hecho es almacenar unos valores en variables de tipo int. Luego
necesitamos otra variable donde se almacenar el resultado.
El resultado ser el mismo. La decisin es nuestra, todo depender de si los valores van a
ser reutilizados o no. Si los vas a utilizar ms adelante para otras cuentas, es conveniente
almacenarlos en una variable y poder utilizarlos por su nombre en diferentes lugares del
programa.
Si estamos en un taller, y tenemos que comprar 4 ruedas y 2 espejos por cada coche; el
nmero de coches es fijo para cada total que vamos a calcular, entonces s nos conviene
declarar la variable para reutilizarla.
Quizs aqu no se aprecie tanto su utilidad, pero en programas ms grandes a veces se
necesita un mismo valor en muchas ocasiones o mismamente, es til para que el programa
se entienda mejor.
Como hemos visto, ya hemos sumado (+) y multiplicado (*). En programacin podemos
utilizar cualquier operador aritmtico, como en una calculadora. Esto sigue las mismas
reglas que en las matemticas para el orden de las operaciones.
Incluso podemos poner parntesis para realizar clculos:
Vamos a quedarnos con esto: sumar (+), restar (-), dividir (/) y multiplicar (*). Otras
cosas como potencias y races cuadradas se hacen mediante funciones, de momento no
entraremos en eso.
Asegrate de elegir el tipo de dato correcto, por ejemplo, si estamos dividiendo, el
resultado puede ser un nmero decimal, elegiremos un tipo de dato float.
Con la "f" detrs del nmero se le indica que estamos utilizando un nmero con coma
flotante (decimal).
Seguiremos practicando esto en futuras lecciones.
Constantes
Las constantes son un tipo de dato invariable. Se declaran y se utilizan de forma muy
similar a las variables, con la diferencia de que no podemos modificar su valor.
De esta forma, podemos utilizar constantes para aquellos valores fijos que nunca
cambiarn su valor en el programa. Vamos a reescribir el ejemplo del taller de la leccin
anterior utilizando constantes.
Declaracin de constantes: se hace igual que con las variables, pero aadiendo
delante la palabra reservada "const".
Variables: el nmero de coches del taller podra variar para hacer otros clculos
durante el programa, por lo que utilizaremos una variable.
Totales: hemos declarado las dos variables del total en la misma lnea, es una forma
de ahorrar espacio y organizarlo mejor.
Sacamos el resultado por pantalla para comprobar que las cuentas son correctas.
Si todo ha ido bien, veremos lo siguiente al ejecutar el programa.
Para rematar el ejemplo, vamos a sacar el resultado por pantalla de forma ms presentable.
Para sacar datos estamos utilizando la funcin "Console.WriteLine();". Entre parntesis le
damos lo que queremos que se escriba, que hasta ahora ha sido o un texto ("Hola Mundo")
o una variable.
Vamos a unir texto y variable, as:
Dentro de los parntesis escribimos el texto que queramos entre comillas (" ") y con el
operador ms (+) unimos la variable que queramos.
Ahora la salida por pantalla quedar as:
Instruccin If
La instruccin "if " es algo bsico en programacin, y se utiliza para el control de flujo del
programa.
Vamos a empezar con una muy sencilla para ver si funcionamiento:
Declaramos una variable "a" que toma el valor de cinco (5). Con la instruccin "if"
comprobamos si "a" vale "5". Para comprobar si una variable es igual a algn valor se
utiliza el operador de comparacin de igualdad, que son dos signos de igual juntos (==).
Dar error
b.
No har nada
c.
Estos son los operadores de comparacin que existen: (utilizamos la variable "a" y el valor
5 en los ejemplos para mejor entendimiento)
Igual que: a == 5
Distinto de: a != 5
Tambin podemos comparar valores bool para comprobar si son verdadero (true) o falso
(false).
Else / Else if
La instruccin "if" tiene un par de modificadores que ayudan a tener mayor control del
programa. stas son else y else if. Ambas son opcionales.
Veamos una ejemplo completo:
La diferencia entre este ejemplo y el de la leccin anterior con 3 instrucciones "if", es que
esta sentencia est anidada. Quiere decir que cambia la forma de actuacin.
Si ejecutamos este programa, veremos que cumple la primera condicin y no hace nada
ms.
Prueba a cambiar else if por if, y vers la diferencia.
A tener en cuenta:
La cosa se complica, pero si lo vemos paso a paso nos daremos cuenta de que
realmente no es tan complicado: primero vemos "si a es igual a 1 y b es igual a 3".
El resultado de la primera condicin es s, y el de la segunda tambin, as que todo
se cumple.
"Si c es igual a 1" no se cumple ya que c vale cero (0). Pero estas condiciones estn
unidas mediante un OR. En la imagen he simplificado la pregunta y he dividido sta
en dos resultados arriba. Vamos a hacer la pregunta con primera condicin y
segunda condicin.
Sera:
"Si se cumple la primera condicin o se cumple la segunda condicin". El resultado
es s ya que se cumple alguna de las dos.
Veamos otro ejemplo cambiando un poco la cosa:
Switch
La instruccin switch nos va a facilitar mucho trabajo en determinados programas.
Supongamos que queremos hacer un programa que d un nmero entero y escriba por
pantalla su valor ordinal (primero, segundo, etc...).
Con lo que sabemos hasta ahora, lo haramos as:
La variable puede ser de cualquier tipo, luego las condiciones deben atenerse al
cambio.
A que ahora se aprecia mejor el cambio? Esto mismo utilizando if-else sera mucho ms
complejo.
Funciones
La utilizacin de funciones en programacin nos ayudan mucho.
Es altamente recomendable hacer uso de ellas por estos dos motivos principales:
1. Ahorramos lneas de cdigo.
2. Facilitan mucho el entendimiento del programa y del cdigo.
Vamos a entrar en materia para comprobar realmente su potencial. Lo primero que vais a
ver es una funcin muy sencilla:
Esta funcin lo que hace es escribir "Hola otra vez". Cada vez que en un programa
queramos escribir esto, en lugar de utilizar "Console.WriteLine()" para hacerlo, slo
tenemos que llamar a esta funcin. S, lo s, muchos trminos nuevos, pero es muy simple,
vamos a ver ahora mismo su funcionamiento.
Por si no ha quedado claro, voy a poner otro ejemplo que espero resuelva las posibles
dudas:
Sabras qu resultado dar ese programa? Si lo sabes es que has entendido como funcionan
las funciones, si no, ejectalo en tu ordenador y seguramente salgas de dudas.
Seguiremos haciendo uso de funciones a lo largo del curso. As que este tema debe quedar
bien entendido.
>> Cdigo del proyecto <<
Instruccin For
La instruccin for es un bucle.
Vamos a ver un ejemplo sencillo:
Iterador: la variable inicializada incrementa su valor en uno (i++) cada vez que
termina su ejecucin el bloque.
Voy a explicar, lnea a lnea, todo lo que hace este bucle for:
1. Inicializa (i = 0). Comprueba i es menor que 5? (i vale 0) S. Ejecuta el bloque y
escribe i, o sea, 0. Fin de ejecucin.
2. Itera (i++). Comprueba i es menor que 5? (i vale 1) S. Ejecuta el bloque y escribe
i, o sea, 1. Fin de ejecucin.
3. Itera (i++). Comprueba i es menor que 5? (i vale 2) S. Ejecuta el bloque y escribe
i, o sea, 2. Fin de ejecucin.
4. Itera (i++). Comprueba i es menor que 5? (i vale 3) S. Ejecuta el bloque y escribe
i, o sea, 3. Fin de ejecucin.
5. Itera (i++). Comprueba i es menor que 5? (i vale 4) S. Ejecuta el bloque y escribe
i, o sea, 4. Fin de ejecucin.
6. Itera (i++). Comprueba i es menor que 5? (i vale 5) No. Fin de ejecucin.
Este es el resultado de ejecutar el programa:
Si pensis un poco, os daris cuenta de que es muy til. Cuando tenemos que repetir alguna
instruccin muchas veces nos ahorra muchas lneas de cdigo. Por ejemplo, escribir los
nmeros del 1 al 100 en pantalla. Sabras hacerlo? Te reto a probarlo.
Os dejo el cdigo del programa "nmeros del 1 al 100" para comprobar, o por si no os sale.
>> Escribir nmeros del 1 al 100 <<
Arrays
Un array es la agrupacin de un tipo de dato en una variable. Por ejemplo, supongamos
que quieres almacenar los nmeros del 1 al 20. En lugar de crear 20 variables de tipo
entero, creamos un array de enteros de 20 elementos.
Lo crearamos as:
int[] numeros = new int[20];
1. Tipo de dato seguido de corchetes [].
2. Nombre de la variable.
3. Signo igual (=).
4. Palabra new, para crear el array.
5. Tipo de dato otra vez.
Bien, ya hemos creado el array de 20 elementos, pero est vaco. Vamos a insertar los
nmeros del 1 al 20. Sera as:
Tambin podemos darle los valores al array en el momento de crearlo. Es lo ideal para
cuando conocemos qu valores tendr, y se hace de esta forma:
No hace falta decirle cuantos valores tendr. Y a continuacin se escriben los valores entre
llaves y separados por coma cada uno.
Vamos a ver otra forma sencilla y rpida de rellenar un array con valores del 1 al 20, se os
ocurre como? recordis el bucle for? All vamos:
Arrays bidimensionales
Vamos a ver arrays bidimensionales, stos son igual que un array normal pero pueden tener
ms de una dimensin. Slo voy a poner ejemplo de un array de dos dimensiones para no
complicar ms el asunto, y sera as:
Entre los corchetes se pone una coma en la declaracin, significa que a cada lado de
la coma va la longitud de cada dimensin (2 dimensiones).
Sabiendo esto, te habrs dado cuenta que puedes no darle valores al crearlo y asignarlos
despus de esta misma forma.
aleatorio.Next(0, 3) + 1
Esto rellenar el array de 10 posiciones con un nmero aleatorio entre 1 y 6 en cada una.
Ya habamos rellenado un array con un bucle for anteriormente. Lo nico nuevo aqu es la
asignacin de un nmero aleatorio.
En la prxima leccin haremos una funcin que escriba un array por pantalla, as podremos
ver el resultado de este ejemplo.
Para pasar un valor por parmetro, simplemente detrs del nombre de la funcin, entre
parntesis, se escribe el tipo de dato y el nombre que tendr la variable dentro de la
funcin.
Voy a poner dos formar de llamar a la funcin para explicarlo bien y que no haya los.
De esta forma podemos crear funciones tiles que podamos usar ms de una vez en el
programa. Decir que, una funcin creada por nosotros, puede recibir todos los parmetros
que queramos, pero siempre habr que indicarlo correctamente en la declaracin.
Os dejo una funcin que multiplica dos nmeros enteros (int) que le pasamos por
parmetro y devuelve el resultado (return).
Instruccin While
La instruccin while es un bucle al igual que for. Lo que hace es repetir un bloque de
cdigo mientras se cumpla una o varias condiciones.
Por eso tiene algunas diferencias respecto a for, veamos un ejemplo prctico:
Como podemos apreciar, se diferencia bastante de un bucle for, pese a hacer la misma
funcin.
1. Slo lleva condicin (o condiciones) entre parntesis.
2. Si queremos modificar el valor de la condicin habr que hacerlo aparte y ste
debe ser inicializado antes.
Con esta descripcin, vemos que es ms complejo que el bucle for, adems de engorroso.
El bucle while en este ejemplo, es totalmente prescindible y sustituible por un bucle for.
Pero ms adelante veremos que en otros casos es ms til y adecuado que for. Sobretodo en
programas que necesitan llevar un control de flujo en ciertas partes del cdigo.
Listas
Las listas son algo muy til. Son una coleccin de datos del mismo tipo, como los arrays, a
diferencia de que en una lista podemos aadir y quitar datos fcilmente y cuando
queramos.
As creamos una lista de cadenas (string):
1. Palabra reservada List, seguido del tipo de dato que queremos almacenar entre los
smbolos mayor y menor que <>.
2. Nombre de la lista, en nuestro caso, compra, ya que vamos a crear la lista de la
compra.
3. Palabra reservada new, que es la que crea la lista.
4. De nuevo la estructura inicial List<string>. Debe coincidir aqu el tipo de dato con
el de la declaracin del punto 1.
5. Finalizamos con parntesis (), y punto y coma (;) como siempre al final de cada
instruccin.
Ya tenemos nuestra lista de la compra creada, pero est vaca. Vamos a aadir las cosas que
tenemos que comprar:
Tan sencillo como efectivo. Slo hay que escribir el nombre de la lista, seguido de la
funcin Add, y entre parntesis el valor del nuevo elemento. Esto aade un elemento al
final de la lista.
Vale, vale, no he explicado como escribir la lista por pantalla, aqu vemos como:
Hay dos novedades respecto a los bucles for que hemos hecho anteriormente.
1. La variable de iteracin i se declara dentro del bucle (int i = 0), es una forma
correcta y rpida de hacerlo.
2. Con compra.Count() obtenemos el nmero de elementos de la lista, de esta forma,
si aadimos ms elementos no hace falta cambiar nada en el bucle for para que
funcione bien.
>> Programa completo <<
Funcin creaLista:
Esta funcin recibir por parmetro la lista que crearemos en el programa y la
devolver escrita.
Para escribirla crearemos un array de cadenas (string) dentro de la funcin con 10
elementos y los iremos aadiendo a la lista.
Funcin escribeLista:
Esta funcin simplemente recibir la lista por parmetro y la escribir en pantalla.
Yo he hecho el programa con una lista de la compra, pero podis poner cualquier cosa,
siempre y cuando sea texto.
El resultado final debe ser este:
En la lista no estarn escritos los nmeros, habr que escribirlos slo en la funcin que
escribe la lista.
Ejercicio 1 resuelto
Voy a empezar con las funciones, la primera, creaLista:
Creamos un array con los 10 elementos que irn en la lista, de esta forma, los
aadiremos con un bucle for y ser ms rpido y sencillo.
No hace falta explicar mucho aqu. Si has conseguido hacerlo, aunque sea de otra manera,
enhorabuena. Si no, no te desanimes, una vez visto el ejercicio resuelto, puedes intentar
rehacerlo desde cero.
Cadenas y caracteres
Ya hemos trabajado un poco con cadenas (string), pero vimos que haba dos tipos de datos
de texto, string y char.
Ahora veremos las diferencias entre ambos:
El tipo string acepta cadenas de texto y el dato debe ser dado entre comillas dobles.
El tipo char acepta un slo carcter y el dato debe ser dado entre comillas simples.
Un ejemplo sencillo:
Esa es la diferencia principal. Ahora veremos una similitud. Vamos a ver como un array
de char funciona igual que un string.
Si ejecutamos este programa, el resultado de ambas variables debe ser el mismo, en este
caso la letra que hay en el ndice especificado es equis "x".
Os preguntaris, si ambos pueden ser usados por igual, Por qu existen los dos tipos de
datos? Bien, dir algunas explicaciones:
En C# cada tipo de dato tiene unas funciones propias de su tipo, por lo cual, stas
son diferentes en cada uno.
Hasta aqu los tipos de datos de texto por el momento. Pronto veremos alguna de estas
funciones que he comentado en el ltimo punto.
Ah est el ejemplo completo. Por si no se entiende, voy a desglosarlo por partes para que
todo quede explicado:
Creamos una variable tipo string para almacenar los datos recibidos por teclado.
En las prximas lecciones veremos como podemos obtener otros tipos de datos.
Casting de datos
Los casting en programacin se utilizan para asegurarse que un dato es de un tipo en
concreto. Si es necesario, se convertir al tipo de dato pedido, pero no sirve en todos los
casos, ya que no es un sistema de conversin como tal.
Supongamos que tenemos una variable de tipo float y queremos asignarla a una variable de
tipo int.
As:
Como vemos, aparece la variable float ene (n) subrayada. Es un error, ya que no se puede
asignar un dato float a una variable int.
Para poder hacerlo vamos a utilizar un casting, de esta forma:
Lo nico que tenemos que hacer es poner entre parntesis el tipo de dato al cual
queremos asignar entre la asignacin (=) y la variable; en este caso int.
Como he dicho antes, esto no funcionar con todos los tipos de datos porque no es una
herramienta de conversin, para esto hay otros mtodos que veremos ms adelante.
Convertir datos
Como los castings no valen para todo, hay diversas formas de convertir datos de un tipo a
otro. Voy a explicar algunos de los ms comunes.
Por ejemplo, veamos como convertir cualquier tipo de dato al tipo string.
Ahora vamos a ver como convertir un string (que sea un nmero) en un int.
Partiendo de que tenemos una variable int y otra string. Lo que hacemos es asignar a la
variable int el mtodo int.Parse, entre parntesis debe ir el string.
Hay muchas ms posibilidades, para conocerlas todas sera necesario saber el caso concreto
que queremos hacer y buscar la forma en la documentacin de C#.
En este ejemplo indice valdr 2. En este caso devuelve el ndice de la primera 'a'.
En este ejemplo la variable corte valdr "Frase". La funcin Remove, elimina parte de la
cadena, desde la posicin indicada (5) hasta el final.
En este ejemplo la variable nueva valdr "Fr*se de prueb*". Sustituye el carcter 'a' por '*'.
-Recortar la cadena:
En este ejemplo la variable trozo valdr "de". Extrae parte de la cadena empezando por la
posicin indicada con el primer valor (6) y con una longitud de 2, indicado con el segundo
valor.
Hay ms funciones para cadenas y todas se pueden usar de formas distintas. Esto slo son
algunos ejemplos para aprender.
Funciones matemticas
Vamos a ver como realizar ciertas operaciones con nmeros. Muchas de estas funciones
utilizan el tipo de dato double, que no hemos visto anteriormente pero es un nmero
decimal.
-Potencia:
-Raz cuadrada:
En este ejemplo la variable resultado valdr 3. Es la raz cuadrada del nmero especificado
(9).
-Truncar un decimal:
En este ejemplo la variable resultado valdr 7. Esta funcin elimina cualquier decimal (sin
redondear).
Ejercicio 2: Multiconversor
Vamos a realizar otro ejercicio.
En este caso, se trata de dar unas opciones al usuario, y segn la opcin que elija, realizar
un clculo u otro:
Para ello vamos a hacer uso de un switch (leccin 12) para las diferentes opciones.
El usuario introducir un nmero por teclado (leccin 25) para elegir dicha opcin.
1 cm = 0.39370 pulgadas
1 kg = 2.20462262 libras
1 km = 0.621371192 millas
Variables necesarias:
Ayuda: para recoger un nmero entero por teclado, suponiendo que tengamos una variable
de tipo int que se llame opcion:
opcion = int.Parse(Console.ReadLine());
Escribir opciones.
Este ejercicio es fcil, que no te mareen tantos nmeros, lo nico que hay que hacer es
saber poner en cada opcin la conversin correcta, que no es ms que una multiplicacin.
Os dejo una pantalla del resultado final donde se elije la primera opcin:
Ejercicio 2 resuelto
Declaramos las variables que vamos a necesitar, en nuestro caso una del tipo int y
dos del tipo double.
Recogemos el dato escrito por el usuario para saber que opcin elije.
A continuacin creamos un switch con 4 opciones (case), ms una por defecto para cuando
el nmero no est entre 1 y 4. Cada cual se corresponder con su opcin y se repetir el
proceso en cada uno, sustituyendo slo los textos.
ste es el proceso a seguir:
Mostramos el resultado.
Finalmente, terminamos el programa con esa instruccin para ver el resultado final.
Structs (Estructuras)
Las estructuras o structs nos permiten crear un tipo de dato nico con los miembros y
propiedades que queramos.
Es como tener un tipo de dato personalizado.
Se escribe la palabra reservada struct, seguido del nombre que queramos darle
(normalmente que empiece en mayscula)
Dentro del bloque entre corchetes ({}) se crean los datos que queramos (variables,
constantes, etc...), previa palabra que mide su nivel de proteccin. Vamos a utilizar
siempre public para los ejemplos, en este curso no entraremos en esos detalles.
Es importante el lugar, debe ir dentro de la clase Program y fuera del mtodo Main.
Ahora, en el mtodo principal (Main), vamos a trabajar con la estructura que hemos creado:
Se asignan los datos: Para asignar los datos escribimos el nombre de la variable
seguido de un punto y el dato al que queremos asignar. Y asignamos un valor
como haramos en una variable cualquiera.
Escribimos el resultado: Como otras veces hemos hecho ya, de la misma forma
que asignamos, accedemos a los datos del struct para escribirlos por pantalla, con la
llamada notacin de punto.
Os dejo un ejemplo igual que el de este ejercicio pero usando una funcin para los ms
atrevidos.
>> Cdigo completo <<
Mtodos: Un objeto puede tener mtodos o no, si los tiene, se crean dentro del
mismo.
Quizs os hayis dado cuenta que se parece bastante a las estructuras de la leccin
anterior (struct). Y as es, lo que cambia es la forma en que se crean los objetos.
Digamos que la clase es un molde, y cada vez que se crea un objeto con ese molde se dice
que se ha creado una instancia de ese objeto.
Se pueden crear tantos objetos como se deseen de la misma clase, y cada uno de ellos ser
diferente, pero compartirn atributos y mtodos.
Clase
Ahora vamos a hacer un ejemplo completo trabajando con objetos:
Utilizaremos una clase, miembros, objetos, un constructor... En definitiva, lo que es la
programacin orientada a objetos.
Vamos a crear una clase llamada Carta que tendr un valor posible del 1 al 12, que
identificarn el valor de la carta; y otro del 0 al 3, que identificarn los 4 palos de la baraja.
Es un tema que suele costar a la gente aprenderlo, por eso he reservado varias lecciones
para ir paso a paso.
A continuacin, el nombre que queramos dar a la clase (se suele poner con la
primera letra en mayscula).
Listo, ya hemos creado nuestra clase Carta, pero no funcionar de ninguna manera, ya que
le faltan cosas que vamos a ir viendo en la siguiente leccin.
Miembros o atributos
Es momento de aadir los miembros a la clase. Recordemos que con esto nos referimos a
las constantes o variables que tendrn los objetos de dicha clase.
Veamos como se declaran:
Palos: contiene los nombres de los palos, de esta forma se asocia cada valor
numrico a uno de ellos mediante los ndices del array.
Hasta aqu los miembros. Ni que decir tiene que una clase puede tener tantos miembros
como queramos, pero en este caso los que tenemos son suficientes.
En la prxima leccin veremos como crear el constructor del objeto y los mtodos.
Constructor y mtodos
A continuacin aadiremos el constructor a la clase. Esto es un mtodo (aunque sea
llamado constructor), que nos sirve para crear una instancia del objeto, o en este
ejemplo, para crear una carta.
Quedara as:
No voy a explicar esto, ya que es una funcin tal como explicamos en la leccin 13, pero en
este caso se escribe dentro de la clase Carta y slo puede ser usada desde un objeto
creado de esa clase. Ms adelante veremos ms sobre esto, de momento, qudate con la
idea.
Lo nico que hay aqu es que escribimos una lnea con los valores que queremos.
Hasta ahora, tenemos una clase completa con lo mnimo que debera tener.
Creacin de un objeto
Una vez creada la clase, volvemos a trabajar en el mtodo Main. Aqu crearemos un objeto
de la clase Carta, de esta forma:
Y entre parntesis los datos que le pasamos al constructor, en el caso de que haya.
En nuestro caso primero el valor de la carta, y luego el valor del palo.
De esta forma ya hemos creado una carta. Como habamos dicho, se pueden crear muchas
instancias de una misma clase. Es tan fcil como crear otra carta, en el siguiente ejemplo
creamos dos instancias del objeto carta:
Al igual que trabajando con variables, podemos crear un objeto de esta otra forma:
Ya sabemos crear instancias de un objeto, ahora veremos como acceder a l mediante los
mtodos; pero esto ser en la prxima leccin.
Acceso al objeto
Ya tenemos todo. Slo nos falta saber cmo acceder al objeto y sus mtodos.
Para ello escribimos el nombre del objeto seguido de un punto y nos saldrn una serie de
mtodos por defecto, adems del mtodo (o mtodos) que hayamos creado.
Aqu vemos el mtodo que hemos creado. El resto son mtodos que tienen por defecto
todos los objetos en C#, y no vamos a entrar en esos detalles.
Nota: no aparecen los miembros porque stos son privados (private), hemos comentado
sto por encima en algunas lecciones, si hubiera algn miembro pblico (public)
aparecera en la lista, y podramos acceder a l igual que lo hacemos con los mtodos de
la clase.
Aadimos la ltima lnea para poder ver el resultado, y al ejecutar el programa deberamos
ver algo como esto:
Bien, hasta aqu este ejemplo de POO simple. Hemos ido paso a paso con la intencin de
mostrar claramente su enfoque.
Si an siguiendo estos pasos, no lo ves claro, te recomiendo volver a leer la leccin 33,
pues probablemente leyendo la teora una vez vista la prctica, consigas aclarar mejor los
conceptos. Y cuando creas que eres capaz de hacer tu propia clase y trabajar con ella,
pasaremos al ejercicio final en el que se trabajar con todo lo visto en el curso.
cogeCarta(int n): Coge la carta (escribe en pantalla) que est en la posicin "n"
pasada por parmetro y la saca de la baraja.
escribeBaraja(): Escribe el nombre de todas las cartas de la baraja (una por lnea).
No os olvidis del constructor, ste debe introducir las 48 cartas de la baraja en la lista.
Luego en el mtdo Main, creamos una instancia de la baraja y vamos probando los
mtodos para ir comprobando si la cosa sale bien.
Ayuda
En el proyecto deben estar las clases Carta (que ya tenemos hecha) y Baraja.
En el constructor de Baraja crea una instancia de Carta, una vez aadida a la lista
puedes reutilizar esa instancia de la Carta para aadir las 42 cartas. Cada valor de la
lista ser una instancia de Carta.
En esta ocasin, el ejercicio es bastante largo, as que dejar el cdigo adjunto, eso s, est
comentado para que podis entender todo.
>> Cdigo completo comentado <<
Os animo a seguir creando ejemplos, juegos u otras cosas que se os ocurran para entrenar,
pues es como mejor se aprende, programando mucho y probando cosas nuevas.
Tras finalizar este curso, quizs os venga bien investigar acerca de cuestiones ms
tcnicas como la importacin de libreras, privacidad o mbito de variables, abstraccin de
cdigo, etc...
ste ha sido el punto de partida, si llegaste hasta aqu y has ido captando cosas, ya ests
preparado para entrar en este mundo; pero ten una cosa clara, nunca dejars de aprender,
as que no renuncies a seguir estudiando aunque creas saber lo suficiente.