Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Introducción a la programación en C#, Apuntes de Ingeniería de Telecomunicaciones

Asignatura: Introducció als Computadors, Profesor: , Carrera: Enginyeria de Sistemes de Telecomunicació, Universidad: UPC

Tipo: Apuntes

2012/2013

Subido el 05/11/2013

avilagran
avilagran 🇪🇸

4.7

(7)

2 documentos

1 / 327

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Introducción a la programación con C#, por Nacho Cabanes
Revisión 0.99 Página 1
Introducción a la programación
con C#
Este texto es una introducción a la programación de ordenadores, usando el lenguaje C#.
Está organizado de una forma ligeramente distinta a los libros de texto "convencionales",
procurando incluir ejercicios prácticos lo antes posible, para evitar que un exceso de teoría en
los primeros temas haga el texto pesado de seguir.
Este texto ha sido escrito por Nacho Cabanes. Si quiere conseguir la última versión, estará en
mi página web:
www.nachocabanes.com
Este texto es de libre distribución ("gratis"). Se puede distribuir a otras personas libremente,
siempre y cuando no se modifique. Si le gustan los formalismos, esto sale a equivaler a una
licencia Creative Commons BY-NC-ND: reconocimiento del autor, no se puede hacer uso
comercial (no se puede "vender" este curso), no se puede crear obras derivadas.
Este texto se distribuye "tal cual", sin garantía de ningún tipo, implícita ni explícita. Aun así, mi
intención es que resulte útil, así que le rogaría que me comunique cualquier error que
encuentre.
Para cualquier sugerencia, no dude en contactar conmigo a través de mi web.
Revisión actual: 0.99
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Vista previa parcial del texto

¡Descarga Introducción a la programación en C# y más Apuntes en PDF de Ingeniería de Telecomunicaciones solo en Docsity!

Introducción a la programación

con C#

Este texto es una introducción a la programación de ordenadores, usando el lenguaje C#.

Está organizado de una forma ligeramente distinta a los libros de texto "convencionales", procurando incluir ejercicios prácticos lo antes posible, para evitar que un exceso de teoría en los primeros temas haga el texto pesado de seguir.

Este texto ha sido escrito por Nacho Cabanes. Si quiere conseguir la última versión, estará en mi página web:

www.nachocabanes.com

Este texto es de libre distribución ("gratis"). Se puede distribuir a otras personas libremente, siempre y cuando no se modifique. Si le gustan los formalismos, esto sale a equivaler a una licencia Creative Commons BY-NC-ND: reconocimiento del autor, no se puede hacer uso comercial (no se puede "vender" este curso), no se puede crear obras derivadas.

Este texto se distribuye "tal cual", sin garantía de ningún tipo, implícita ni explícita. Aun así, mi intención es que resulte útil, así que le rogaría que me comunique cualquier error que encuentre.

Para cualquier sugerencia, no dude en contactar conmigo a través de mi web.

Revisión actual: 0.

Contenido

0. Conceptos básicos sobre programación

Un programa es un conjunto de órdenes para un ordenador.

Estas órdenes se le deben dar en un cierto lenguaje, que el ordenador sea capaz de comprender.  El problema es que los lenguajes que realmente entienden los ordenadores resultan difíciles para nosotros, porque son muy distintos de los que nosotros empleamos habitualmente para hablar. Escribir programas en el lenguaje que utiliza internamente el ordenador (llamado " lenguaje máquina " o "código máquina") es un trabajo duro, tanto a la hora de crear el programa como (especialmente) en el momento de corregir algún fallo o mejorar lo que se hizo.

Por ejemplo, un programa que simplemente guardara un valor "2" en la posición de memoria 1 de un ordenador sencillo, con una arquitectura propia de los años 80, basada en el procesador Z80 de 8 bits, sería así en código máquina:

Prácticamente ilegible. Por eso, en la práctica se emplean lenguajes más parecidos al lenguaje humano, llamados "lenguajes de alto nivel ". Normalmente, estos son muy parecidos al idioma inglés, aunque siguen unas reglas mucho más estrictas.

0.1. Lenguajes de alto nivel y de bajo nivel.

Vamos a ver en primer lugar algún ejemplo de lenguaje de alto nivel, para después comparar con lenguajes de bajo nivel, que son los más cercanos al ordenador.

Uno de los lenguajes de alto nivel más sencillos es el lenguaje BASIC. En este lenguaje, escribir el texto Hola en pantalla, sería tan sencillo como usar la orden

PRINT "Hola"

Otros lenguajes, como Pascal , nos obligan a ser algo más estrictos, pero a cambio hacen más fácil descubrir errores (ya veremos por qué):

program Saludo;

begin write('Hola'); end.

El equivalente en lenguaje C resulta algo más difícil de leer:

#include <stdio.h>

int main() { printf("Hola");

}

En C# hay que dar todavía más pasos para conseguir lo mismo:

public class Ejemplo { public static void Main() { System.Console.WriteLine("Hola"); } }

Como se puede observar, a medida que los lenguajes evolucionan, son capaces de ayudar al programador en más tareas, pero a la vez, los programas sencillos se vuelven más complicados. Afortunadamente, no todos los lenguajes siguen esta regla, y algunos se han diseñado de forma que las tareas sencillas sean sencillas de programar (de nuevo). Por ejemplo, para escribir algo en pantalla usando el lenguaje Python haríamos:

print("Hello")

Por el contrario, los lenguajes de bajo nivel son más cercanos al ordenador que a los lenguajes humanos. Eso hace que sean más difíciles de aprender y también que los fallos sean más difíciles de descubrir y corregir, a cambio de que podemos optimizar al máximo la velocidad (si sabemos cómo), e incluso llegar a un nivel de control del ordenador que a veces no se puede alcanzar con otros lenguajes. Por ejemplo, escribir Hola en lenguaje ensamblador de un ordenador equipado con el sistema operativo MsDos y con un procesador de la familia Intel x86 sería algo como

dosseg .model small .stack 100h

.data hello_message db 'Hola',0dh,0ah,'$'

.code main proc mov ax,@data mov ds,ax mov ah, mov dx,offset hello_message int 21h

mov ax,4C00h int 21h main endp end main

Resulta bastante más difícil de seguir. Pero eso todavía no es lo que el ordenador entiende, aunque tiene una equivalencia casi directa. Lo que el ordenador realmente es capaz de comprender son secuencias de ceros y unos. Por ejemplo, las órdenes "mov ds, ax" y "mov ah, 9" (en cuyo significado no vamos a entrar) se convertirían a lo siguiente:

operativos). Esta misma idea se sigue en el lenguaje C#, que se apoya en una máquina virtual llamada "Dot Net Framework" (algo así como "armazón punto net").

0.3. Pseudocódigo

A pesar de que los lenguajes de alto nivel se acercan al lenguaje natural, que nosotros empleamos, es habitual no usar ningún lenguaje de programación concreto cuando queremos plantear los pasos necesarios para resolver un problema, sino emplear un lenguaje de programación ficticio, no tan estricto, muchas veces escrito incluso en español. Este lenguaje recibe el nombre de pseudocódigo.

Esa secuencia de pasos para resolver un problema es lo que se conoce como algoritmo (realmente hay alguna condición más, por ejemplo, debe ser un número finito de pasos). Por tanto, un programa de ordenador es un algoritmo expresado en un lenguaje de programación.

Por ejemplo, un algoritmo que controlase los pagos que se realizan en una tienda con tarjeta de crédito, escrito en pseudocódigo, podría ser:

Leer banda magnética de la tarjeta Conectar con central de cobros Si hay conexión y la tarjeta es correcta: Pedir código PIN Si el PIN es correcto Comprobar saldo_existente Si saldo_existente >= importe_compra Aceptar la venta Descontar importe del saldo. Fin Si Fin Si Fin Si

Ejercicios propuestos

  1. Localizar en Internet el intérprete de Basic llamado Bywater Basic, en su versión para el sistema operativo que se esté utilizando y probar el primer programa de ejemplo que se ha visto en el apartado 0.1.
  2. Localizar en Internet el compilador de Pascal llamado Free Pascal, en su versión para el sistema operativo que se esté utilizando, instalarlo y probar el segundo programa de ejemplo que se ha visto en el apartado 0.1.
  3. Localizar un compilador de C para el sistema operativo que se esté utilizando (si es Linux o alguna otra versión de Unix, es fácil que se encuentre ya instalado) y probar el tercer programa de ejemplo que se ha visto en el apartado 0.1.

1. Toma de contacto con C#

C# es un lenguaje de programación de ordenadores. Se trata de un lenguaje moderno, evolucionado a partir de C y C++, y con una sintaxis muy similar a la de Java. Los programas creados con C# no suelen ser tan rápidos como los creados con C, pero a cambio la productividad del programador es mucho mayor.

Se trata de un lenguaje creado por Microsoft para crear programas para su plataforma .NET, pero estandarizado posteriormente por ECMA y por ISO, y del que existe una implementación alternativa de "código abierto", el "proyecto Mono", que está disponible para Windows, Linux, Mac OS X y otros sistemas operativos.

Nosotros comenzaremos por usar Mono como plataforma de desarrollo durante los primeros temas. Cuando los conceptos básicos estén asentados, pasaremos a emplear Visual C#, de Microsoft, que requiere un ordenador más potente pero a cambio incluye un entorno de desarrollo muy avanzado, y está disponible también en una versión gratuita (Visual Studio Express Edition).

Los pasos que seguiremos para crear un programa en C# serán:

  1. Escribir el programa en lenguaje C# ( fichero fuente ), con cualquier editor de textos.
  2. Compilarlo con nuestro compilador. Esto creará un "fichero ejecutable".
  3. Lanzar el fichero ejecutable.

La mayoría de los compiladores actuales permiten dar todos estos pasos desde un único entorno , en el que escribimos nuestros programas, los compilamos, y los depuramos en caso de que exista algún fallo.

En el siguiente apartado veremos un ejemplo de uno de estos entornos, dónde localizarlo y cómo instalarlo.

1.1 Escribir un texto en C#

Vamos con un primer ejemplo de programa en C#, posiblemente el más sencillo de los que "hacen algo útil". Se trata de escribir un texto en pantalla. La apariencia de este programa la vimos en el tema anterior. Vamos a verlo ahora con más detalle:

public class Ejemplo { public static void Main() { System.Console.WriteLine("Hola"); } }

Esto escribe "Hola" en la pantalla. Pero hay mucho alrededor de ese "Hola", y vamos a comentarlo antes de proseguir, aunque muchos de los detalles se irán aclarando más adelante. En este primer análisis, iremos de dentro hacia fuera:

public static void Main(){ System.Console.WriteLine("Hola"); } }

(esta es la forma que yo emplearé preferentemente en este texto cuando estemos trabajando con fuentes de mayor tamaño, para que ocupe un poco menos de espacio).

 La gran mayoría de las órdenes que encontraremos en el lenguaje C# son palabras en inglés o abreviaturas de éstas. Pero hay que tener en cuenta que C# distingue entre mayúsculas y minúsculas, por lo que "WriteLine" es una palabra reconocida, pero "writeLine", "WRITELINE" o "Writeline" no lo son.

1.2. Cómo probar este programa

1.2.1 Cómo probarlo con Mono

Como ya hemos comentado, usaremos Mono como plataforma de desarrollo para nuestros primeros programas. Por eso, vamos a comenzar por ver dónde encontrar esta herramienta, cómo instalarla y cómo utilizarla.

Podemos descargar Mono desde su página oficial:

http://www.mono-project.com/

En la parte superior derecha aparece el enlace para descargar ("download now"), que nos lleva a una nueva página en la que debemos elegir la plataforma para la que queremos nuestro Mono. Nosotros descargaremos la versión más reciente para Windows (la 2.10.5 en el momento de escribir este texto).

Se trata de un fichero de cerca de 90 Mb. Cuando termina la descarga, haremos doble clic en el fichero recibido, aceptaremos el aviso de seguridad que posiblemente nos mostrará Windows, y comenzará la instalación, en la que primero se nos muestra el mensaje de bienvenida:

El siguiente paso será aceptar el acuerdo de licencia:

El siguiente paso es elegir qué componentes queremos instalar (Mono, Gtk#, XSP):

Nuevamente, soy partidario de no instalar todo. Mono es imprescindible. La creación de interfaces de usuario con Gtk# queda fuera del alcance que se pretende con este texto, pero aun así puede ser interesante para quien quiera profundizar. El servidor web XSP es algo claramente innecesario por ahora, y que además instalaría un "listener" que ralentizaría ligeramente el ordenador, así que puede ser razonable no instalarlo por ahora:

El siguiente paso es indicar en qué carpeta del menú de Inicio queremos que quede accesible:

A continuación se nos muestra el resumen de lo que se va a instalar. Si confirmamos que todo nos parece correcto, comienza la copia de ficheros:

Quizá se nos lleve a una carpeta que esté dentro de "Documents and settings" o quizá incluso a alguna en la que no tengamos permiso para escribir, como "Windows\System32". Si queremos cambiar la carpeta de arranque de Mono, lo podemos hacer pulsando el botón derecho sobre la opción "Mono-x.x.x Command Prompt" del menú de inicio y escogiendo "Propiedades".

Para crear un programa, el primero paso será teclear el "fuente". Para ello podemos usar cualquier editor de texto. En este primer fuente, usaremos simplemente el "Bloc de notas" de Windows. Para ello tecleamos:

notepad ejemplo01.cs

Aparecerá la pantalla del "Bloc de notas", junto con un aviso que nos indica que no existe ese fichero, y que nos pregunta si deseamos crearlo. Respondemos que sí y podemos empezar a teclear el ejemplo que habíamos visto anteriormente:

Guardamos los cambios, salimos del "Bloc de notas" y nos volvemos a encontrar en la pantalla negra del símbolo del sistema. Nuestro fuente ya está escrito. El siguiente paso es compilarlo. Para eso, tecleamos

gmcs ejemplo01.cs

Si no se nos responde nada, quiere decir que no ha habido errores. Si todo va bien, se acaba de crear un fichero "ejemplo01.exe". En ese caso, podríamos lanzar el programa tecleando

mono ejemplo01.exe

y el mensaje "Hola" debería aparecer en pantalla.

Si en nuestro ordenador está instalado el "Dot Net Framework" (algo que debería ser cierto en las últimas versiones de Windows, y que no ocurrirá en Linux ni Mac OsX), no debería hacer falta decir que queremos que sea Mono quien lance nuestro programa, y podremos ejecutarlo directamente con su nombre:

ejemplo

1.2.2 Otros editores más avanzados

Si quieres un editor más potente que el Bloc de notas de Windows, puedes probar Notepad++, que es gratuito (realmente más que eso: es de "código abierto") y podrás localizar fácilmente en Internet. Geany también es un alternativa muy interesante, disponible para muchos sistemas operativos.

Si prefieres un entorno desde el que puedas teclear, compilar y probar tus programas, incluso los de gran tamaño que estén formados por varios ficheros, en el apartado 6.13 hablaremos de SharpDevelop (para Windows), y de MonoDevelop (para Windows, Linux y Mac). Si quieres saber cosas sobre el entorno "oficial" de desarrollo, llamado Visual Studio, lo tienes en el Apartado 6.8.

Hay un posible problema que se debe tener en cuenta: algunos de estos entornos de desarrollo muestran el resultado de nuestro programa y luego regresan al editor tan rápido que no da tiempo a ver los resultados. Una solución provisional puede ser añadir "System.Console.ReadLine()" al final del programa, de modo que se quede parado hasta que pulsemos Intro: