Des.Apli.Net 02.Sintaxis C Sharp

6,305 views

Published on

1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total views
6,305
On SlideShare
0
From Embeds
0
Number of Embeds
2,660
Actions
Shares
0
Downloads
0
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

Des.Apli.Net 02.Sintaxis C Sharp

  1. 1. Desarrollo de Aplicaciones Capítulo 02 Sintaxis de C# Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  2. 2. Agenda <ul><li>Repaso sesión anterior. </li></ul><ul><li>Sintaxis C# </li></ul><ul><ul><li>Introducción </li></ul></ul><ul><ul><li>Expresiones </li></ul></ul><ul><ul><li>Operadores </li></ul></ul><ul><ul><li>Statements </li></ul></ul><ul><ul><li>Tipos y Variables (Valor y Referencia) </li></ul></ul><ul><ul><li>Literales </li></ul></ul><ul><ul><li>Cadenas (Strings) </li></ul></ul><ul><ul><li>Formateo de Cadenas </li></ul></ul><ul><ul><li>Conversión entre tipos </li></ul></ul><ul><li>Depuración básica en VS2005 </li></ul><ul><li>Que veremos la próxima sesión? </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  3. 3. Repaso sesión anterior <ul><li>Introducción a .NET </li></ul><ul><ul><li>Arquitectura de aplicaciones. </li></ul></ul><ul><ul><li>NET Framework (CLR, BCL, FCL, Lenguajes). </li></ul></ul><ul><ul><li>Visual Studio 2005 / Ediciones </li></ul></ul><ul><ul><li>Estructura de un programa C# </li></ul></ul><ul><ul><li>Clases y objetos </li></ul></ul><ul><li>Ver diapositivas previas. </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  4. 4. Sintaxis C# Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com) <ul><li>Referencias </li></ul><ul><li>Learning C# 2005. Caps. 3 (Language Fundamentals) , 4 (Operators), 15 (Strings) </li></ul><ul><li>Microsoft Visual C# 2005 Step by Step. Caps. 2 (Variables, Operators and Expressions), 3 (Scope) </li></ul><ul><li>Wikibooks C# Programming. Caps 3 (Syntax), 4 (Variables), 5 (Operators) </li></ul><ul><li>CSharp Language Specification 3.0. Caps 1 (Introduction), 6 (Conversions) </li></ul><ul><li>Csharp Operators: http://en.wikibooks.org/wiki/C_Sharp_Programming/Operators </li></ul><ul><li>Csharp Operators: http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=301 </li></ul><ul><li>Variables y Tipos: http://www.softsteel.co.uk/tutorials/cSharp/lesson4.html </li></ul><ul><li>Illustrated Csharp. Caps 8 (Expressions and Operators), 9 (Statements) </li></ul><ul><li>Microsoft Visual C# Unleashed . Caps 3 (Strings and Regular Expressions) </li></ul>
  5. 5. Sintaxis C# <ul><li>Introducción </li></ul><ul><li>Similar a Java. </li></ul><ul><li>Hereda mucha sintaxis de C y C++. </li></ul><ul><li>La naturaleza orientada a objetos de C# requiere que los programas sean definidos mediante clases. </li></ul><ul><li>Para que el compilador interprete el código, ciertas palabras deben tener un significado especial (reserved words / keywords). </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  6. 6. Sintaxis C# <ul><li>Expresiones </li></ul><ul><li>Están formadas por operandos y operadores. </li></ul><ul><li>Los operadores de una expresión indican la operación a realizar con los operandos. (+, - *, /, etc.) </li></ul><ul><li>Cuando hay múltiples operadores, la precedencia controla el orden de evaluación de los operadores. </li></ul><ul><li>Evalúan valores y convergen hacia un valor. </li></ul><ul><li>int a,b,c,d,e; </li></ul><ul><li>a = b = c = d = e = 20; </li></ul><ul><li>mySecondVariable = myVariable = 57; </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  7. 7. Sintaxis C# <ul><li>Operadores y precedencia (alta a baja) </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  8. 8. Sintaxis C# <ul><li>Statements </li></ul><ul><li>Una sentencia completa se llama “statement”. </li></ul><ul><li>Cada statement termina con punto y coma (;). </li></ul><ul><li>Es la unidad básica de ejecución de C#. </li></ul><ul><li>Un programa C# está formado por una secuencia de instrucciones (statements). </li></ul><ul><li>Pueden ser: </li></ul><ul><ul><li>Declaraciones de variables </li></ul></ul><ul><ul><li>Expresiones </li></ul></ul><ul><ul><li>Selección (if, case) </li></ul></ul><ul><ul><li>Iteración </li></ul></ul><ul><ul><li>Etc… </li></ul></ul><ul><li>Pueden ser agrupadas mediante bloques {…}. </li></ul>int myVariable; // a statement myVariable = 23; // another statement int anotherVariable = myVariable; // yet another statement Console.WriteLine(&quot;Hello World&quot;); Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  9. 9. Sintaxis C# <ul><li>Ejemplos de sentencias (statements) </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  10. 10. Sintaxis C# Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com) <ul><li>Tipos y variables </li></ul><ul><li>Todos los tipos caen en 2 categorías. </li></ul><ul><li>Existen 2 categorías: Value Types y Reference Types . </li></ul><ul><li>Variables del tipo “Value Type” contienen la data y se almacenan en el Stack . </li></ul><ul><li>Variables del tipo “Reference Types” contienen referencias a la data (dirección de memoria) y se almacenan en el Heap . </li></ul><ul><li>El Stack (pila) lleva un seguimiento de lo que se está ejecutando y almacena cierto tipo información en forma ordenada. Es autoadministrada. </li></ul><ul><li>El Heap es un almacén de información solamente y no hay restricción para almacenar data. El GC la monitorea. </li></ul>
  11. 11. Sintaxis C# <ul><li>Tipos por valor y referencia </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com) public class MyInt { public int MyValue; } public int ReturnValue2() {     MyInt x;     x.MyValue = 3;     MyInt y;     y = x;                     y.MyValue = 4;     return x.MyValue; }
  12. 12. Sintaxis C# Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  13. 13. Sintaxis C# <ul><li>Literales </li></ul><ul><li>Son números o cadenas escritas en el código fuente que representan un valor o conjunto de valores. </li></ul><ul><li>Al ser escritos en el código fuente, sus valores se conocen en tiempo de ejecución. </li></ul><ul><li>El tipo “bool” tiene 2 literales: true y false . </li></ul><ul><li>Para variables del tipo Referencia , el literal null significa que no referencia ningún objeto en memoria. </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  14. 14. Sintaxis C# <ul><li>Ejemplos de Literales </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  15. 15. Sintaxis C# <ul><li>Literales de números enteros </li></ul><ul><li>Son los más comunes. </li></ul><ul><li>No tienen punto decimal. </li></ul><ul><li>Pueden tener un sufijo para especificar el tipo de entero. </li></ul><ul><li>Pueden ser escritos en forma decimal o hexadecimal. </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  16. 16. Sintaxis C# <ul><li>Literales de números reales </li></ul><ul><li>Consisten en dígitos decimales, punto decimal (opcional), parte exponencial (opcional) y sufijo (opcional). </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  17. 17. Sintaxis C# <ul><li>Literales de caracteres </li></ul><ul><li>El tipo de un carácter es char . </li></ul><ul><li>Están delimitados por comillas simples (‘) </li></ul><ul><li>Una secuencia de escape simple está formada por un backslash () seguido de un carácter. </li></ul><ul><li>Una secuencia de escape Hexadecimal está formada por un backslash+x (x) seguido de hasta 4 dígitos hexadecimales. </li></ul><ul><li>Una secuencia de escape Unicode está formada por un backslash+u (u) seguido de hasta 4 dígitos hexadecimales. </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  18. 18. Sintaxis C# <ul><li>Literales de cadenas </li></ul><ul><li>El tipo de un carácter es string . </li></ul><ul><li>Están delimitados por comillas dobles (“) </li></ul><ul><li>Hay dos (2) tipos de literales de cadenas: </li></ul><ul><ul><li>Regulares: </li></ul></ul><ul><ul><ul><li>Caracteres </li></ul></ul></ul><ul><ul><ul><li>Secuencias de escape simples </li></ul></ul></ul><ul><ul><ul><li>Secuencias de escape Unicode y Hexadecimales </li></ul></ul></ul><ul><ul><li>Verbatim: </li></ul></ul><ul><ul><ul><li>No evalúan las secuencias de escape. </li></ul></ul></ul><ul><ul><ul><li>Se escriben como las Regulares pero precedidas por el carácter arroba (@). </li></ul></ul></ul><ul><ul><ul><li>Todo dentro de las comillas simples se imprime tal cual. </li></ul></ul></ul><ul><ul><ul><li>La excepción es doble comilla-doble que se interpretan como simple comilla-doble. </li></ul></ul></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  19. 19. Sintaxis C# Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  20. 20. Sintaxis C# <ul><li>Strings (Cadenas) </li></ul><ul><li>El tipo “string” es un alias de System.String. </li></ul><ul><li>Es un tipo “sealed”, por lo cual no puede heredarse. </li></ul><ul><li>Representa cadenas de caracteres Unicode. </li></ul><ul><li>Es un tipo de Referencia. </li></ul><ul><li>Pueden crearse desde arrays de caracteres. </li></ul><ul><li>Son inmutables: su secuencia de caracteres no puede ser modificada. </li></ul><ul><li>Cada vez que se modifica un string, se crea una nueva instancia en memoria. El GC se encarga de las anteriores. </li></ul><ul><li>Utilizar StringBuilder para concatenaciones y manejo óptimo de cadenas. </li></ul><ul><li>Se puede realizar búsquedas y agrupamiento con expresiones regulares sobre cadenas. </li></ul><ul><li>Utilizar el método Split() para partir cadenas. </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com) String[] resultArray = s1.Split( delimiters ); foreach ( String subString in resultArray ) { Console.WriteLine(ctr++ + &quot;:&quot; + subString); }
  21. 21. Sintaxis C# <ul><li>Formateo de Cadenas (formatting) </li></ul><ul><li>Dar formato a cadenas es una tarea común. </li></ul><ul><li>Necesario para mostrar fechas, números, valores decimales, etc. </li></ul><ul><li>C# proporciona un conjunto amplio de opciones de formateo de cadenas. </li></ul><ul><li>El formateo aplicado depende de la localización. </li></ul><ul><li>Se realiza invocando el método Format de la clase string. </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com) string formatted = string.Format(&quot;The value is {0}&quot;, value); DateTime.ToString(&quot;format specifiers&quot;); int i = 105263; textBox1.Text = i.ToString(“E4&quot;); // 1.0526E+005
  22. 22. Sintaxis C# <ul><li>Ejemplos de formateo de fechas </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com) DateTime dt = DateTime.Now; Console.WriteLine(string.Format(&quot;Default format: {0}&quot;, dt.ToString())); Console.WriteLine(dt.ToString(&quot;dddd dd MMMM, yyyy g&quot;)); Console.WriteLine(string.Format(&quot;Custom Format 1: {0:MM/dd/yy hh:mm:sstt}&quot;, dt)); Console.WriteLine(string.Format(&quot;Custom Format 2: {0:hh:mm:sstt GT zz}&quot;, dt)); Default format: 9/24/2005 12:59:49 PM Saturday 24 September, 2005 A.D. Custom Format 1: 09/24/05 12:59:49PM Custom Format 2: 12:59:49PM GMT -06
  23. 23. Sintaxis C# <ul><li>Ejemplos de formateo de números </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  24. 24. Sintaxis C# <ul><li>Formateo avanzado de números </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com) Console.WriteLine(&quot;C: {0}&quot;, 39.22M.ToString(&quot;C&quot;)); Console.WriteLine(&quot;D: {0}&quot;, 982L.ToString(&quot;D&quot;)); Console.WriteLine(&quot;E: {0}&quot;, 3399283712.382387D.ToString(&quot;E&quot;)); Console.WriteLine(&quot;F: {0}&quot;, .993F.ToString(&quot;F&quot;)); Console.WriteLine(&quot;G: {0}&quot;, 32.559D.ToString(&quot;G&quot;)); Console.WriteLine(&quot;N: {0}&quot;, 93823713.ToString(&quot;N&quot;)); Console.WriteLine(&quot;P: {0}&quot;, .59837.ToString(&quot;P&quot;)); Console.WriteLine(&quot;R: {0}&quot;, 99.33234D.ToString(&quot;R&quot;)); Console.WriteLine(&quot;X: {0}&quot;, 369329.ToString(&quot;X&quot;)); La ejecución del código anterior, utilizando la cultura us-EN mostraría: C: $39.22 D: 982 E: 3.399284E+009 F: 0.99 G: 32.559 N: 93,823,713.00 P: 59.84 % R: 99.33234 X: 5A2B1
  25. 25. Sintaxis C# <ul><li>Conversiones entre tipos </li></ul><ul><li>Permite que una tipo sea tratado como otro tipo de dato. </li></ul><ul><li>Es importante que los tipos soporten la conversión cuando sea necesario. </li></ul><ul><li>No existe un casting válido entre tipos numéricos y booleanos. </li></ul><ul><li>C# brinda flexibilidad para realizar las conversiones entre tipos. </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  26. 26. Sintaxis C# <ul><li>Tipos de Conversión: </li></ul><ul><li>Explicit Cast </li></ul><ul><li>Implicit Cast </li></ul><ul><li>Without Casting </li></ul><ul><ul><li>Utilizando el método Parse() </li></ul></ul><ul><ul><li>Utilizando System.Convert </li></ul></ul><ul><ul><li>Utilizando ToString() </li></ul></ul><ul><ul><li>Utilizando tryParse() </li></ul></ul><ul><ul><li>(nuevo en .NET 2.0) </li></ul></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com) int intNumber = 31416; long longNumber = intNumber; string text = &quot;9.11E-31&quot;; float kgElectronMass = float.Parse(text); String middleCText = &quot;278.4375&quot;; double middleC = System.Convert.ToDouble(middleCText); bool boolean = System.Convert.ToBoolean(middleC); bool boolean = true; string text = boolean.ToString(); System.Console.WriteLine(text); // Display &quot;True&quot; int intNumber = 31416; long longNumber = ( long ) intNumber; double number ; string input ; System.Console.Write(&quot;Enter a number: &quot;); input = System.Console.ReadLine(); if (double.TryParse(input, out number)) { // Converted correctly, now use number // ... } else { System.Console.WriteLine( &quot;The text entered was not a valid number.&quot;); }
  27. 27. Depuración básica en VS2005 Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com) <ul><li>Referencias </li></ul><ul><li>Learning C# 2005. Caps. 9 (Basic Debugging) </li></ul>
  28. 28. Depuración básica en VS2005 <ul><li>Un bug es un error en el programa. </li></ul><ul><li>No confundir “huecos de seguridad” con bugs. Los “security holes” consisten en utilizar el programa en forma distinta a lo que fue creado. </li></ul><ul><li>Depuración es el acto de encontrar y eliminar errores en el software. </li></ul><ul><li>El depurador de VS2005 trae todas las herramientas necesarias para realizar programas C# de calidad. </li></ul><ul><li>Para depurar aplicaciones en VS2005, se deben ejecutar mediante F5 (Run with Debugging Support enabled) </li></ul><ul><li>Si se encuentra un error, VS se detiene y muestra el error, sugiriendo maneras de corregirlo. </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  29. 29. Depuración básica en VS2005 <ul><li>Establecer un breakpoint </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  30. 30. Que veremos la próxima sesión? <ul><li>Control, Bucles y Excepciones </li></ul><ul><ul><li>Branching </li></ul></ul><ul><ul><li>Control </li></ul></ul><ul><ul><li>Bucles </li></ul></ul><ul><ul><li>Excepciones </li></ul></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
  31. 31. Fin de la sesión <ul><li>Dudas, comentarios, sugerencias? </li></ul><ul><li>Comunicarse por email a eriveraa@gmail.com </li></ul><ul><li>Gracias por su atención !! </li></ul>Desarrollo de aplicaciones .NET Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)

×