01 - Introduccion A La Programacion Con C#

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 23

02/09/2009

Lenguaje ,Sintaxis y Lógica de Programación

INTRODUCCIÓN A LA
PROGRAMACIÓN CON .NET

Introducción a la programación
Lógica de Programación y selección del lenguaje

Lógica de Programación

Entrada
Entrada

No

Prueba ok?
Proceso

Si

Salida Salida

1
02/09/2009

Lógica de Programación

 La entrada de datos puede ser a través de


la Web, una aplicación Windows, un
SmartPhone (teléfono inteligente), una
Pocket PC, o cualquier medio que
interactúe con el usuario.
 La salida de datos puede ser por medio
impreso, por voz, por algún medio digital o
simplemente mostrada por pantalla.

Lógica de Programación

Entrada
Base de Datos

Proceso Biblioteca de
clases

Salida
Servicio Web

Lenguajes

 .NET utiliza UN solo runtime (CLR) y TODO


lenguaje para .NET compila a MSIL
 Prácticamente no hay diferencias entre VB.NET y
C#.
 Cual lenguaje usar, dependerá de su experiencia
previa con otros lenguajes o decisión personal.
 Si conoce Java, C++, etc. >> C#
 Si conoce VB o VBScript >> VB.NET

2
02/09/2009

Lenguaje y Sintaxis
Programación con C#

Variables

 Una variable es un espacio asignado en la


memoria RAM que se puede utilizar en el
código.
 Variables en .NET:
 Declaradas en cualquier lugar del lugar del código.
 Todas deben tener un tipo.
 El contenido de la variable tiene que estar de
acuerdo con su definición.

Declaración de Variables

 En C#: el tipo de variable precede al


indicador.
int x;
decimal y;
rectangle z;
Cliente cli;

 C#: toda variable debe ser inicializada


EXPLICITAMENTE antes de ser usada

3
02/09/2009

Variables - Nomenclaturas

 ¿Cómo declarar una variable?


 Nomenclaturas y convenciones

Tipos de Variables

Nombre Corto Clase .Net Tipo Ancho Intervalo


Entero sin
byte Byte 8 0 a 255
signo
Entero con
sbyte SByte 8 -128 a 127
signo
Entero con
int Int32 32 -2.147.483.648 a 2.147.483.647
signo
Entero sin
uint UInt32 32 0 a 4294967295
signo
Entero con
short Int16 16 -32.768 a 32.767
signo
Entero sin
ushort UInt16 16 0 a 65535
signo
Entero con -922337203685477508 a
long Int64 64
signo 922337203685477507

Tipos de Variables
Nombre Corto Clase .Net Tipo Ancho Intervalo
ulong UInt64 Entero sin signo 64 0 a 18446744073709551615

Tipo de punto flotante de


float Single 32 -3,402823e38 a 3,402823e38
precisión simple
Tipo de punto flotante de -1,79769313486232e308 a
double Double 64
precisión doble 1,79769313486232e308
Símbolos Unicode utilizados
char Char Un carácter Unicode 16
en el texto

bool Boolean Tipo Boolean lógico 8 True o false

Tipo base de todos los


object Object
otros tipos
Una secuencia de
string String
caracteres
Tipo preciso fraccionario
o integral, que puede
decimal Decimal representar números 128 ±1.0 × 10e−28 a ±7.9 × 10e28
decimales con 29 dígitos
significativos

4
02/09/2009

Tipos de Variables

Variables - Alcance

 Tiempo de vida de una variable.


string fuera = “Declarada fuera”
string temp = “”
If ( mostrarValores )
{
string dentro = “Mostrada Dentro”
temp = dentro
}
else
{
temp = fuera
}

Case Sensitive

 C# es case - sensitive.
system.console.writeline(“HOLA”); INCORRECTO

System.Console.WriteLine(“HOLA”); CORRECTO

 VB.NET no es case – sensitive.


system.console.writeline(“HOLA”) CORRECTO

System.Console.WriteLine(“HOLA”) CORRECTO

5
02/09/2009

Terminaciones de Linea

 C# la linea finaliza con un ;

//Una linea con mas de un renglon


string sName = sFirstName +
sLastName;
//El punto y coma indica FINAL de linea

Comentarios

 C# soporta dos tipos de comentarios.

// Comentario de una sola linea


string sName = “Juan”;
/* Comentario con mas
de un renglon */

Estructuras de Decisión

 La estructura de decisión es la más utilizada


en la programación.
 Su objetivo es analizar una condición y dirigir
el flujo del programa hacia un determinado
cálculo, rutina, desvio, función, etc., según el
resultado de la misma.
 Los statements pueden ser instrucciones
simples o bloques de código.

6
02/09/2009

IF

IF – C#
if ((condición
condición))
statements
else if (condición
(condición))
statements
else
statements

Operadores Lógicos
C# Operador
&& Operador logico Y

|| Operador logico O

! Negacion logica

== Igual

!= Distinto

//Si Hacer1() es True, entonces //Si Hacer1() es False, entonces


//NO se evalua Hacer2() //NO se evalua Hacer2()
if (Hacer1() || Hacer2()) if (Hacer1() && Hacer2())
{ {
} }

If - Else
if (x > 10) if (x < 10) if (x < 10) if (x < 10)
HacerAlgo(); { { {
Hacer1(); Hacer1(); Hacer1();
Hacer2(); } }
} else else if (x > 20)
{ {
Hacer2(); Hacer2();
} }
else
{
Hacer3();
}

if (nombre ==“Juan”) if (nombre != “Carlos”) if ( nombre==“Juan” ||


HacerAlgo(); { nombre==“Carlos)
Hacer1(); {
Hacer2(); Hacer1();
} }

7
02/09/2009

Estructuras de decisión CASE

switch – C#
switch (expresion
(expresion--a-evaluar)
evaluar) {
case valor:
statements
break;
default:
statements
break;
}

Estructuras de decisión CASE

 Permiten obtener un código más claro, limpio,


fácil de mantener y más comprensible.
 La expresión es evaluada dentro del switch y
para cada posible valor que pueda tomar la
condición existe un CASE donde ésta se
validará .

Estructuras de decisión CASE

 Es necesario declarar una sentencia BREAK por


cada CASE para que el programa no siga
evaluado todos los posibles casos
 Si ninguno de los Cases fuera evaluado como
verdadero se puede usar la instrucción CASE
ELSE.

8
02/09/2009

switch – C#
string Pais = valor;
string Deporte = “”;
swktch (Pais)
case “Brasil”:
Deporte = “Futbol”;
break;
case “USA”:
Deporte = “Basquet”;
default:
Deporte = “Tenis”
break;

int opcion = valor;


string Deporte = “”;
swktch (opcion)
case 1:
Deporte = “Futbol”;
break;
case 2:
Deporte = “Basquet”;
default:
Deporte = “Tenis”
break;

Arrays

 El array, es un conjunto de valores o variables


del mismo tipo, que es almacenado en
posiciones de memoria generalmente
consecutivas.
 Pueden ser de 1 dimensión, o de varias
(matrices).
 La forma de acceder a los elementos es
directa, es decir, a partir de un índice.

Arrays

 C# utiliza corchetes [ ] para definición de


arrays

string[] telefonos; //Definicion de un Arreglo de strings


telefonos = new string[3]; //De 3 elementos
telefonos[0] = “1245”; //Seteo del 1er elemento del arreglo

//Definicion y asignacion de una vez


telefonos = new string[] {“1”,“2”,“3”};

9
02/09/2009

Arrays

Estructuras de iteración FOR

 El uso de estructuras de iteración nos permite


recorrer una determinada colección de datos,
un conjunto de registros, valores de matrices,
etc.
 El for permite realizar una serie
predeterminada de ciclos, que permite, por
ejemplo, recorrer los elementos de un array.

for C#

 C#: la sentencia for consta de tres partes

//Partes: declaración, prueba, acción


for (int i=1; i < 10; i++)
{
}

10
02/09/2009

for C#

 C# usa las palabras claves for, y break.

for (contador; expresion; incremento)


{
statements
}

FOR C#

 for (int item = 1; i<=10; i++)


 Console.WriteLine(i);

for (int item = 1; i<=10; i++)


{
Console.WriteLine(i);
}

for / each

 Es utilizado en casos donde se necesita


recorrer una colección de datos.
 En el foreach no se necesita verificar el límite
de la iteración, ya que esto está implícito
dentro de la propia colección.
 La lógica del foreach es la siguiente: “Para
cada elemento contenido en una colección,
hacer algo”.

11
02/09/2009

foreach – C#

foreach (elemento in grupo){


statements }
int multDos = 0;
int noMult = 0;
int[] arrayData = {1, 5, 8, 45, 25};
foreach (int numero In arrayData)
{
if (numero MOD 2 == 0)
multDos += 1;
else
noMult +=1;
}

WHILE

 C# usa las palabras claves while,


while, do - while.
while.
 Es ejecutado siempre asociado a una
condición, en cada pasaje por el loop la
condición es evaluada.
 Dependiendo de la situación, la condición
debe ser colocada al inicio o al final del bucle.

WHILE
C#
while (expresion
(expresion){
){ statements }
do{ statements } while (expresion
(expresion);
);

bool condicion = true;


while (condicion)
{
//codigo que haga que cambie la condicion
}

12
02/09/2009

Conversión de Tipos

 C# no permite conversiones implícitas de


tipos.
 Si falla el casting se genera una
InvalidCastException
Cuenta cta = new CtaCte();
CtaCte cc = cta; //Error: puede que cta no sea una CtaCte
CtaCte cc = (CtaCte)cta; //Conversion explicita “CASTING”
CtaCte cc = cta as CtaCte; //Usando el operador “as”

if (cta is CtaCte) ... //Comp. con el operador “is”

Conversión de Tipos

 Existen situaciones donde la conversión de


una variable es necesaria, principalmente
cuando interactúe con el usuario.

 .NET ofrece métodos para realizar las


conversiones, por ejemplo el ToString()
que todos los object tienen.

Conversión de Tipos

 También se puede utilizar la función Ctype


para convertir un objeto, informando el
contenido y el tipo de dato que deberá ser
convertido.

int numero = 10;


object obj;
obj = numero; //boxing
numero = (int)obj; //unboxing
string valor = numero.ToString(); //Convierte int en cadena

13
02/09/2009

Enumerados

 Los enumerados son listas de datos.


 C#: las estructuras se definen mediante
enum.

//Definicion del enum dias


enum Dias {lunes, martes, miercoles, jueves, viernes};

Clases

 Clase: es la definición de las características


de un determinado tipo de objeto.
 C#: las clases son declaradas mediante
class.
//Definicion de la clase CtaCte
class CtaCte
{
//Definicion de miembros
}

Constructores

 Constructor: funciones dentro de la clase,


que son llamadas cuando se crea una
instancia de dicha clase.
 En C# tienen el mismo nombre de la clase.

class CtaCte
{
public CtaCte(){...} //Const. por default
public CtaCte(int i){...} //Const. con un parametro
}

14
02/09/2009

Propiedades

 Propiedad: característica o atributo de un


objeto
 Las propiedades encapsulan los atributos de
una clase y permiten realizar la asignación y
obtención de valores

Propiedades
class CtaCte
{
int _balance;

public int Balance


{
get
{
return _balance;
}
set
{
_balance = value;
}
}
}

CtaCte cc = new CtaCte();


cc.Balance = 100; //Asignación
Mostrar(cc.Balance); //Obtención

Métodos

 Métodos: acciones que un objeto puede


llevar a cabo.
 En C# todo método es una función.
public void HacerDeposito(int importe) //No devuelve valor
{
}

public int ObtenerInventario(int codArticulo) //Devuelve un entero


{
}

15
02/09/2009

Métodos

 Una función es una rutina a ser ejecutada que


siempre deberá devolver algo de un tipo, por
ejemplo un string, un integer, un DataSet,
etc.
 Un método puede o no contener argumentos.
En caso de tenerlos, es necesario definir sus
nombres y tipos de dato.
 Existen centenares de funciones en el
Framework listas para ser utilizadas.

Sobrecarga de Métodos

 Sobrecarga: varios métodos con el mismo


nombre pero diferentes parámetros.
 La idea principal de sobrecarga de métodos
es evitar que el desarrollador deba recordar
distintos nombres para métodos que hacen
cosas parecidas.
public void HacerDeposito(int importe)
{
}

public void HacerDeposito(int importe, bool acreditar)


{
}

Namespaces

 Namespace:
Namespace: grupo de clases que tienen el
mismo prefijo.
 Los namespaces son agrupaciones lógicas
de clases.
 Las directivas using en C# y Imports en
VB.NET permiten el uso de un tipo de un
namespace, sin necesidad de escribirlo
completo.

16
02/09/2009

Namespaces
namespace BancoARG
{
namespace Gestion
{
public class CtaCte
{
}
public class CajaAhorro
{
}
}
}

//Referencia “full”
BancoARG.Gestion.CtaCte;
BancoARG.Gestion.CajaAhorro;

//Referencia “corta”
using BancoARG.Gestion;
CtaCte cc = new CtaCte();
CajaAhorro ca = new CajaAhorro();

Herencia

 Herencia: mecanismo por el cual una clase


(hija) hereda de otra (padre) para extender
su funcionalidad.
 En .Net solo se permite herencia simple.

class Cuenta //Clase Padre


{
}
class CtaCte : Cuenta //Clase Hija
{
}

Herencia

 Hereda:
 Todas las operaciones y atributos públicos y privados
 Los constructores y destructores no son heredados

class MyBaseClass
{}

class MyDerivedClass: MyBaseClass


{}

17
02/09/2009

Herencia

 La palabra clave “abstract” permite crear


clases y miembros de clases únicamente para
herencia, definiendo características de las
clases derivadas que no serán abtractas.
 Las clases abstractas no pueden ser
instanciadas.
 La palabra clave “sealed” permite prevenir la
herencia de una clase o algún miembro .

Herencia

public sealed class Cuenta


{
}
public abstract class Cuenta
{
}

Clases Parciales

 Permite que una implementación abarque múltiples archivos


 Valido para clases y structs.
 Declaradas utilizando el nuevo modificador partial.
 Provee una serie de beneficios:
 Implementaciones grandes pueden ser divididas
 Código de usuario puede ser separado de código generado
automáticamente
 Varios desarrolladores pueden trabajar en la misma clase.
 Permite code-beside en lugar de code-behind
 Permite mejor mantenimiento y control de código fuente.

18
02/09/2009

Clases Parciales
Class1.cs Class3.cs

Class2.cs

Métodos Virtuales

 Es un método que la clase base permite


que sea sobrescrito en una clase derivada
 Un método no-virtual es la UNICA
implementación posible para este método.
 No puede ser estático.
 No puede ser privado.

Métodos Virtuales
class MyBaseClass
{
public virtual void MyMethod(){}
}
class MyDerivedClass: MyBaseClass
{
public override void MyMethod(){}
}

 Debe tener la misma firma para el


método.
 No se puede sobrescribir un método
sobrescrito.
 Override = virtual to third level
level..
 No puede ser estático o privado.

19
02/09/2009

Métodos “estáticos”

 Los métodos estáticos forman parte de una


clase, pero pueden ser invocados sin
necesidad de que esta sea instanciada.
 Solo podrá acceder a atributos de la clase que
sean estáticos también.
 El uso de métodos estáticos resulta muchas
veces práctico, pero implica perdidas de
performance.

Métodos “estáticos”

public static void HacerDeposito(int importe)


{

Alcance de miembros

 Miembro: se refiere a los campos, propiedades,


métodos, eventos, clases anidadas, etc.
 C#: todo miembro es declarado como PUBLIC
por default
 En C# los tipos de accesibilidad son Public,
Protected, Internal, Protected Internal y
Private.
 El tipo de acceso de una declaración se especifica
a través de un modificador,si no se especifica
ninguno, la accesibilidad depende del contexto.

20
02/09/2009

Alcance de miembros
 Public: No hay restricciones de uso de las entidades
así declaradas.
 Protected: Accesibles solo en las clases derivadas.
 Internal: Las entidades son accedidas solo por el
programa que contiene la declaración de la entidad.
 Protected internal: Es la unión de los dos casos
 Privadas: Solo accedidas en su contexto de
declaración

Alcance de miembros

C# VB.NET
public Public
private Private
internal Friend
protected Protected
protected internal Protected Friend

Clases Abstractas

 Proveen una implementación parcial para


que sea heredada por las clases derivadas
 No pueden ser instanciadas
 Tiene métodos comunes a varias clases, pero
no puede ser una instancia en si. Por ejemplo,
la clase Animal, de la que heredan perro, gato
y caballo.

21
02/09/2009

Clases Abstractas
abstract class Transporte
{
public virtual string Name()
{ ... }
}
Transporte
class Taxi: Transporte, ITransporte { abstract }
{ ... }

class Colectivo: Transporte,


ITransporte
{ ... } Taxi Colectivo
<<Concrete>> <<Concrete>>

Excepciones

 Excepción: objeto que se genera cuando en


tiempo de ejecución ocurre un error y
contiene info sobre el mismo
 Ejecución de un programa en forma irregular.
 Código bien escrito debe controlarlas.
 .NET cuenta con gran soporte para el manejo
de excepciones.

Excepciones

 C#: usa las palabras try/catch/finally.


try
{
int resultado = x/y;
}
catch(DivideByZeroException e)
{
//Error division por cero
}
catch
{
//Otro error
}
finally
{
//Siempre pasa por aca
}

22
02/09/2009

Resumen

 Lógica de programación
 Elección del lenguaje
 Variables
 Estructuras de decisión e iteración
 POO y Sintaxis
 Clases, Métodos
 Herencia y Constructores
 Partial Classes
 Clases Abstractas

FIN

23

También podría gustarte