Beruflich Dokumente
Kultur Dokumente
C# Basico, II 1
Comentarios en C#
Son del mismo tipo que en C++:
/*
Es un comentario de ms de una lnea
*/
C# Basico, III 2
Palabras reservadas
abstract, as, base, bool, break, byte, case, catch,
char, checked, class, const, continue, decimal,
default, delegate, do, double, else, enum, event,
explicit, extern, false, finally, fixed, float, for,
foreach, goto, if, implicit, in, int, interface,
internal, is, lock, long, namespace, new, null,
object, operator, out, override, params,
private,protected, public, readonly, ref, return,
sbyte, sealed, short, sizeof, stackalloc, static,
string, struct, switch, this, throw, true, try, typeof,
uint, ulong, unchecked, unsafe, ushort, using,
C# Basico, II 3
virtual, void, while
Identificadores en C#
C# Basico, III 4
Tipos de datos en C#
Un tipo es una categora, especie o clase cuyos constituyentes
comparten caractersticas comunes que permiten distinguir entre uno y
otro.
C# Basico, III 5
Tipos de datos en C#
En C#, la informacin almacenada en un tipo puede
incluir:
C# Basico, III 6
Tipos de datos en C#
C# es un lenguaje fuertemente tipiado. Cada variable o constante tiene un tipo, as como
tambin cada expresin que evala a un valor. Cada firma de mtodo especifica un tipo
para cada parmetro y para el valor de retorno.
Por defecto, los tipos de uso ms frecuente de la biblioteca de clases del Framework
.NET estn disponibles en cualquier programa de C# (System). Otros tipos estarn
disponibles agrega explcitamente, mediante using, una referencia al namespace que lo
contiene.
Despus de que el compilador tiene una referencia namespace puede declarar variables
(y constantes) de los tipos declarados en dichos namespace..
C# Basico, III 7
Tipos de datos en C#
Tipos intrnsecos o predefinidos del lenguaje
C# Basico, III 8
Tipos de datos en C#
C# Basico, III 9
Tipos de datos en C#
Intrnsecos o predefinidos (built-in)
Types built-in C# types
Type Bytes Description Default
value
byte 1 unsigned byte 0
sbyte 1 signed byte 0
El tipo char
short 2 signed short 0
representa un
ushort 2 unsigned short 0
carcter UNICODE,
int 4 signed integer 0
uint 4 unsigned integer 0
lo cual permite
long 8 signed long 0L
representar
ulong 8 unsigned long 0
cualquier carcter
float 4 floating point number 0.0f
de cualquier
double 8 double precision number 0.0d
lengua.
decimal 8 fixed precision number 0.0m
string Unicode string
char 2 Unicode char
bool 4 true, false boolean
C# Basico, III 10
Tipos de datos en C#
Resumen de los tipos de datos de C# con su rango o precision
C# Basico, III 11
Tipos de datos en C#
Tipos de
datos del
sistema
C# Basico, III 12
Tipos de datos en C#
Definidos por el desarrollador (user-defined types)
Tipos class
Tipos struct
Tipos Interface
Tipos enum
Segn la parte de RAM que usan, los tipos se dividen en dos categoras:
Tipo valor
Tipo referencia
..
C# Basico, III 13
Tipos de datos en C#
Los tipos valor Son asignados en el stack de la
RAM.
C# Basico, III 14
Tipos de datos en C#
El tipo struct en C# .NET :
Un tipo struct es un tipo de valor que se suele utilizar para encapsular
pequeos grupos de variables relacionadas, como las coordenadas de un
rectngulo o las caractersticas de un elemento de un inventario. En el ejemplo
siguiente se muestra una declaracin de struct sencilla.
C# Basico, III 15
/*
Struct1.cs
csc.exe 4.5
*/
using System;
struct Delincuente {
C# Basico, III 16
Struct1.cs
// todos los miembros de una struct deben ser inicializados de esta manera, con un constructor
/*
*/
C# Basico, III 17
Struct1.cs
// Testing
class EstructuraDelincuente {
public unsafe static void Main() {
/*
Delincuente de = new Delincuente(99999, 1234.56);
- ERROR CS0227: Unsafe code may only appear if compiling with /unsafe
- El uso de new implica el uso implicito de puntero lo cual, como veremos en el tema
de punteros, es en C# un modo unsafe.
*/
Delincuente de;
de.cedula = 888888;
de.montoRobado = 65748374;
de.mostrarDatos();
}
}
C# Basico, III 18
Struct1.cs
/*
*/
C# Basico, III 19
/*
Struct1b.cs
csc.exe 4.5
using System;
struct Delincuente {
public ulong cedula;
public double montoRobado ;
// todos los miembros de una struct deben ser inicializados de esta manera, con un constructor
public Delincuente( ulong ced, double mo) {
cedula = ced;
montoRobado = mo;
}
public void mostrarDatos() {
Console.WriteLine(cedula);
Console.WriteLine(montoRobado);
}
} C# Basico, III 20
Struct1b.cs
// Testing
class EstructuraDelincuente {
public unsafe static void Main() {
// Delincuente de;
de.cedula = 888888;
de.montoRobado = 65748374;
de.mostrarDatos();
}
}
C# Basico, III 21
Struct1b.cs
/*
99999
1234.56
888888
65748374
*/
C# Basico, III 22
Tipos de datos en C#
Tipo enum
C# Basico, III 23
/*
enum0.cs
*/
using System;
// Tester class
class Fofi {
C# Basico, III 24
enum0.cs
C# Basico, III 25
Tipos de datos en C#
Los tipos referencia:
C# Basico, III 26
Tipos de datos en C#
Otra categora de tipo en C# son tipo puntero :
...
C# Basico, III 27
typeof en C#
Es un operador de informacin de tipo utilizado para obtener el objeto
System.Type1 correspondiente a un tipo.
Retorna un objeto de tipo Type
La sintaxis de uso es: Type t = typeof(tipo); Donde:
C# Basico, III 28
typeof en C#
/*
TypeofExample.cs
*/
using System;
namespace Ferreiras {
class TypeofExample {
static void Main() {
double unDoble = 0.0034; // Si no es inicializada, ERROR: Use of unassigned local variable
float unFlotante = 35.44f; // Si no es inicializada, ERROR: Use of unassigned local variable
C# Basico, III 29
typeof en C#
// TypeofExample.cs - continuacin
Type t2 = unDoble.GetType();
Console.WriteLine(t2.ToString());
Type t3 = unDoble.GetType();
/*
El mtodo Object.GetType obtiene el objeto Type de la instancia actual
*/
Console.WriteLine(t3.ToString());
Type t4 = unFlotante.GetType();
Console.WriteLine(t4.ToString());
}
}
}
Ferreiras.TypeofExample
System.Double
System.Double
System.Single
C# Basico, III 32
Operadores
Un operador en C# es un smbolo formado por uno o
ms caracteres que permite realizar una
determinada operacin entre uno o ms datos y
produce un resultado.
A continuacin se describen cules son los
operadores incluidos en el lenguaje clasificados segn
el tipo de operaciones que permiten realizar, aunque hay
que tener en cuenta que C# permite la redefinicin del
significado de la mayora de los operadores segn el
tipo de dato sobre el que se apliquen, por lo que lo que
aqu se cuenta se corresponde con los usos ms
comunes de los mismos:
C# Basico, II 33
Operadores aritmticos
Los operadores aritmticos incluidos en C# son los
tpicos de suma (+), resta (-), producto (*), divisin (/) y
mdulo (%) Tambin se incluyen operadores de menos
unario () y ms unario (+)
C# Basico, II 35
Operadores relacionales
Se han incluido los tradicionales
operadores de igualdad (==), desigualdad
(!=), mayor que (>), menor que (<),
mayor o igual que (>=) y menor o igual
que (<=)
C# Basico, II 36
Operadores de manipulacin de
bits
Se han incluido operadores que permiten
realizar a nivel de bits operaciones and (&),
or (|), not (~), xor (^), desplazamiento a
izquierda (<<) y desplazamiento a derecha (>>)
El operador << desplaza a izquierda rellenando
con ceros, mientras que el tipo de relleno
realizado por >> depende del tipo de dato sobre
el que se aplica: si es un dato con signo
mantiene el signo, y en caso contrario rellena
con ceros
C# Basico, II 37
Otros operadores
Otros operadores:
min=a<b ? a:b; // if a<b min=a else min=b;
. para acceso a miembros, e.j. args.Length
() para conversin de tipos
[] como ndice de arrays, punteros, propiedades y
atributos
new para crear nuevos objetos
typeof para obtener el tipo de un objeto
is para comparar el tipo de un objeto en runtime
sizeof para obtener el tamao de un tipo en bytes
* para obtener la variable a la que apunta un
puntero
->, p->m es lo mismo que (*).m
& devuelve la direccin de un operando
C# Basico, II 38
1
Arreglos en C#
En C#, los arreglos funcionan de manera similar a como lo hacen en la mayora
de los lenguajes de programacin. Sin embargo, se debe tener en cuenta que en
C#:
1
: Ver Arrays Tutorial en http://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx
C# Basico, III 39
Arreglos en C#
/*
ArraysEjemplo.cs
*/
using System;
class ArraysEjemplo {
class ArraysEjemplo {
static void Main() {
// declara e inicializa un arreglo 1D
int[ ] array2 = new int[ ] { 1, 3, 5, 7, 9 };
// array2 inicializado con otro tamao
array2 = new int[ ] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// declara e inicializa un arreglo 1D
int[ ] array3 = { 1, 2, 3, 4, 5, 6 };
// declara un arreglo 2D, de 2 filas X 3 columnas
int [ , ] array2D = new int[2, 3];
// declara e inicializa un arreglo 2D de 2 filas X 3 columnas
int [ , ] otroArray2D = { { 1, 2, 3 }, { 4, 5, 6 } };
// declara un arreglo de arreglo de arreglo
// // el primero tiene un tamao de 6 elementos
int [ ] [ ] array4 = new int[6][ ];
// establece valores para los elementes del primer arreglo del anterior.
array4[0] = new int[8] { 1, 2, 3, 4, 5, 6, 7, 8 };
// observe que se cambi el tamao del primer arreglo
array4[9 ] = new int[7] { 1, 2, 3, 4, 5, 6, 7 };
}
} C# Basico, III 41
Arreglos en C#
/*
Arreglo2D.cs
Ferreiras / C# / arreglos
*/
using System;
class Arreglo2D {
static void Main() {
int i, j;
// declaracin de arreglo
string [ , ] Libros = new string[3,3]; // 3 X 3 = 9 elementos en total
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
Console.Write("\nEntre el nombre del libro [ {0}, {1} ] = ", i, j );
Libros[i,j] = Console.ReadLine();
}
}
C# Basico, III 42
Arreglos en C#
Arreglo2D.cs - continuacin
Console.WriteLine("\n\n*****************************************");
Console.WriteLine("Los libros almacenados en el arreglo son: \n\n");
// formatear la salida
Console.Write("\t1\t2\t3\n\n");
for (i = 0; i < 3; i++) {
Console.Write("{0}.\t", i + 1);
for (j = 0; j < 3; j++) {
Console.Write("{0}\t", Libros[i,j]);
}
Console.Write("\n");
}
Console.WriteLine("\n\n*****************************************");
Console.WriteLine("\nPULSAR <ENTER> PARA CONTINUAR");
Console.ReadLine();
}
}
C# Basico, III 43
Arreglos en C#
Arreglo2D.cs - continuacin
*****************************************
Los libros almacenados en el arreglo son:
1 2 3
*****************************************
C# Basico, III 45
Sentencias en C# I
Las sentencias pueden ocupar ms de una lnea y deben
terminarse con un ;
Grupos de sentencias se pueden agrupar en bloques con { y }
E.j:
int i, j;
// un sentencia simple
i=1;
// un bloque de sentencias
{
j=2;
i=i+j;
}
Sentencias en C# II
if, sirve para saltar en base a una condicin:
Se debe utilizar para leer y no se recomienda su uso cambiar el contenido de los objetos Collection
porque puede tener resultados imprevisibles.
Donde:
identificador Nombre de un iterador que identifica cada elemento del array u objeto Collection.
Cuerpo del bucle Es el bloque de cdigo que se ejecutar en cada recorrido del bucle o ciclo.
El cdigo se ejecuta para cada elemento del array u objeto Collection. Despus, el control pasa a la
siguiente sentencia del cuerpo del bucle.
C# Basico, III 52
foreach
foreach no usa un ndice entero. En su lugar, usa una Collection y retorna cada uno
de los elementos en orden, eliminando un posible error causado por manejo
incorrecto del ndice de la Collection.
C# Basico, III 53
foreach
/*
Foreach2.cs
Ferreiras / C# / foreach
*/
using System;
class Foreach2 {
static void Main() {
string[] nombreLargo = {
"SHAKESPEARE MOZART ARMSTRONG CORREA PEREZ",
"DISNEY LANDIA RODRIGUEZ JUAREZ",
"FLORES DE VALGAZ ALAYA ADOLFO HITLER",
"USNAY MARINA PEREZ CONZALEZ",
"EMAIL SUAREZ BARBOZA",
"YAM CLOCK ALEJANDRO PIZARRO ROJAS"
};
C# Basico, III 54
foreach
Foreach2.cs -continuacin-
Console.WriteLine("\n");
// bucle con foreach
foreach ( string control in nombreLargo ) {
Console.WriteLine(control);
}
}
}
C# Basico, III 55
foreach
Foreach2.cs -continuacin-
/*
*/
C# Basico, III 56
foreach
/*
foreachEjemplo.cs
Ferreiras / C# / foreach
*/
using System;
class ForeachEjemplo {
El elemento 0 es = 345
El elemento 1 es = 566
El elemento 2 es = 385
El elemento 3 es = 711
El elemento 4 es = 874
El elemento 5 es = 236
*/
C# Basico, III 58
Referencias
The C# Programming Language; Anders Hejlsberg, Scott Wiltamuth, Peter Golde; Microsoft
.NET Development Series; Addison-Wesley Professional, Pearson Education, Inc., Third
Edition, 2004
Head First C#; Andrew Stellman and Jennifer Greene ; Second Edition; OReilly Media, 2010.
Desarrollo de aplicaciones .NET con Visual C#; Miguel Rodrguez Gmez-Stern, Marcos
Antonio Besteiro Gorostizaga; McGra2-Hill/Interamericana de Espaa, S.A.U., 2002.
Visual C# Language
http://msdn.microsoft.com/en-us/library/aa287558(v=vs.71).aspx...
C# Basico, III 59
Referencias
C# Concisely; Judith Bishop, Nigel Hospool; Pearson, Addison Wisley 2003.
Head First C#; Andrew Stellman and Jennifer Greene ; Second Edition; OReilly
Media, 2010.
Visual C# Language
http://msdn.microsoft.com/en-us/library/aa287558(v=vs.71).aspx
...
C# Basico, II 60
Agradecimientos
Agradecimientos especiales al
Maestrsimo Felix Ferreiras por el aporte
de este valioso material para poder
impartir este curso.
Gracias maestro!!!