jueves, 27 de junio de 2013

Sintaxis de C# - Parte 1

La sintaxis de C# es uno de los temas más importantes e interesantes a tratar en el aprendizaje del lenguaje, es por esta razón que a partir de este post se presentaran temas relacionados divididos en partes para facilitar su estudio, lectura y comprensión. Empiezo con Identificadores y Palabras reservadas (e inclusive palabras reservadas contextuales), enseguida Literales, Puntuadores, y Operadores; Comentarios.


La clase EstudioSintaxisCSharp se convertirá en el caso de estudio para introducir los conceptos citados anteriormente. Este es el código fuente de la clase:

- Identificadores y Palabras Reservadas:

Identificadores

Los identificadores son los literales de un léxico específico (contexto del problema, por ejemplo) que representan locaciones de memoria. Éstos nos sirven como mecanismo nemotécnico para las variables, métodos, propiedades, eventos, etc. Los nombres escogidos para los identificadores son arbitrarios (dependen del léxico del programador, del dominio del problema en el que se esté trabajando). Es importante mencionar que los nombres deben poseer un nombre significativo para facilitar su uso, lectura, y refactorización futura.

Para el caso práctico, reconozcamos varios de los identificadores en el código fuente de la clase :
  • System
  • EstudioSintaxisCSharp
  • Main
  • x
  • Console
  • WriteLine
Para componer un identificador hay que tener en cuenta unas reglas y características:
  • Deben empezar con una letra (a-z, A-Z) o un carácter de subrayado (_).
    • No está permitido que el primer carácter sea un número.
  • Para evitar conflictos con las palabras reservadas utilizamos el prefijo @.
  • Están compuestas por caracteres Unicode.
Todos los identificadores (debido a la naturaleza de lenguaje estático de C#) son sensibles a mayúsculas y a minúsculas. El identificador x (equis minúscula) es distinto de X (equis mayúscula).

Los nombres de variables locales, parámetros, y campos privados, por convención, utilizan la escritura en camello (CamelCase [1]). Ejemplos:
  • miVariable
  • saldoCliente
  • capacidadMemoriaRam
Para los identificadores restantes, generalmente aceptado, se usa escritura Pascal (Pascal Case [2]).

Palabras Reservadas

Las palabras reservadas son literales especiales utilizadas por el compilador, y no pueden ser utilizadas como identificadores. En EstudioSintaxisCSharp se halla el siguiente conjunto de palabras reservadas:
  • using
  • class
  • static
  • void
  • int
C# 5.0 cuenta con más de 65 palabras reservadas. En la Figura 1 se muestra el listado completo.
Palabras reservadas C#
Figura 1. Listado completo palabras reservadas en C# 5.0 [4]
 - ¿Cómo evitar conflictos?:

En casos especiales en que el programador requiera usar una palabra reservada del lenguaje, C# provee una mecanismo útil y sencillo para lograrlo; es a través de el prefijo @. Para demostrarlo:

class class {...} // Ilegal
class @class {...} // Legal

Hay que dejar claro que el símbolo @ no hace parte del nombre de la variable: @miSaldo es lo mismo que miSaldo.


Este prefijo nos ayuda en casos cuando decidimos utilizar librerías de los diferentes lenguajes de .NET Framework que tienen diferentes palabras reservadas.


- Palabras reservadas contextuales (Contextual Keywords [5][6]):


En C# existen palabras reservadas que pueden ser utilizadas como tal, y también como identificadores: se les conoce como palabras reservadas contextuales (o en inglés, Contextual keywords). Además, su uso tiene significado específico en el código, por ejemplo [6]:

Notemos la declaración int var = 1; a pesar de que var es una palabra reservada, el compilador de C# no presenta ningún conflicto debido a que se trata de una palabra reservada contextual. Lo anterior lo contrastamos con var resultado, esta declaración hace uso de resultado como variable dinámica.


C# posee más de 24 palabras reservadas de este tipo. La Figura 1 presenta el listado completo.

Listado de palabras reservadas contextuales en C# 5.0
Figura 1. Listado de palabras reservadas contextuales (Contextual keywords) en C# 5.0 [4].

Conclusiones:

Se ha aprendido acerca del uso básico de la sintaxis en C#. Los identificadores son palabras de un léxico que sirven para hacer referencia a diferentes elementos del código fuente: método, variables, nombres de clases, de propiedades, eventos, etc. Las palabras reservadas son un conjunto especial de literales del compilador de C# para componer código fuente. Finalmente, las palabras reservadas contextuales no presentan conflicto si se utilizan como identificador.

Glosario:

- Camel case
- Keyword
- Literal
- Palabra reservada
- Pascal case
- Puntuador
- Sintaxis

Referencias:
[1] CamelCase - http://en.wikipedia.org/wiki/CamelCase
[2] Pascal Case - http://c2.com/cgi/wiki?PascalCase
[3] Unicode - https://en.wikipedia.org/wiki/Unicode
[4] C# 5.0 in a Nutshell by Joseph Albahari and Ben Albahari. Copyright 2012 Joseph Albahari and Ben Albahari, 978-1-449-32010-2.
[5] Contextual Keywords - http://msdn.microsoft.com/en-us/library/the35c6y.aspx
[6] C# Contextual Keywords - http://www.dotnetperls.com/contextual-keyword
J

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.