16
2012 Página 1 ENTREGA NÚMERO 01: ESTRUCTURAS DE CONTROL 1. Consideraciones Generales 2. Declarar variables con o sin asignación del valor por defecto 3. Ámbitos (niveles de accesibilidad) 4. Ámbitos predeterminados (si no se indica) 5. Bucles For y For Each (foreach) 6. Bucles While, Do... Loop 7. Abandonar un bucle o procedimiento 8. Comparaciones: IF, Else... 9. Select Case / switch 10. Operadores lógicos y aritméticos 11. Procedimientos/Métodos (funciones, propiedades) 1- Consideraciones generales Les alcanzo la primera parte de un grupo de equivalencias que les será muy útil al momento de implementar los algoritmos en los lenguajes de programación Visual Basic (VB) y C Sharp (C#). Este grupo de equivalencias está orientado a la primera parte de nuestro curso y lo pueden utilizar en las evaluaciones. Cualquier duda comunicarse con mi persona mediante este medio o personalmente en el transcurso de las clases.

AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

Embed Size (px)

DESCRIPTION

Equivalencias de sintaxis entre Algorítmica, Visual Basic y C#

Citation preview

Page 1: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 1

ENTREGA NÚMERO 01:

ESTRUCTURAS DE

CONTROL

1. Consideraciones Generales

2. Declarar variables con o sin asignación

del valor por defecto

3. Ámbitos (niveles de accesibilidad)

4. Ámbitos predeterminados (si no se

indica)

5. Bucles For y For Each (foreach)

6. Bucles While, Do... Loop

7. Abandonar un bucle o procedimiento

8. Comparaciones: IF, Else...

9. Select Case / switch

10. Operadores lógicos y aritméticos

11. Procedimientos/Métodos (funciones,

propiedades)

1- Consideraciones generales

Les alcanzo la primera parte de un grupo de equivalencias que les será muy útil al

momento de implementar los algoritmos en los lenguajes de programación Visual

Basic (VB) y C Sharp (C#).

Este grupo de equivalencias está orientado a la primera parte de nuestro curso y lo

pueden utilizar en las evaluaciones.

Cualquier duda comunicarse con mi persona mediante este medio o personalmente

en el transcurso de las clases.

Page 2: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 2

C#:

Una cosa que debes tener muy presente cuando quieras escribir código en C#, es

que todas las líneas deben acabar en un punto y coma (;).

Debido a esta peculiaridad, puedes "alargar" cada línea de código C# en varias

líneas, ya que el fin de una "sentencia" viene indicada por el punto y coma.

En C#, se pueden agrupar líneas de código en bloques, los bloques siempre

estarán dentro de un par de llaves: { y }.

En C# todas las variables deben estar declaradas con un tipo de datos específico, lo

mismo ocurre cuando asignamos datos de distintos tipos, siempre debe indicarse el

tipo al que se quiere convertir.

Visual Basic .NET:

En Visual Basic .NET cada línea física es una sentencia, si necesitas que ocupe más

de una línea, tendrás que usar el guión bajo al final de la línea y continuar en la

siguiente. Esto no es aplicable a los comentarios.

En VB.NET no se obliga a que se especifique el tipo de datos, pero si quieres hacer

las cosas bien, deberías tener siempre conectado Option Strict On, esto te

obligará a declarar las variables con el tipo de datos adecuado y así cuando hagas

una asignación entre tipos diferentes de datos, tendrás que especificar el tipo, para

ello hay que hacer una conversión explícita de datos (casting).

Esto último es algo que muchos programadores de VB no suelen hacer, pero te lo

recomiendo encarecidamente que lo hagas.

Page 3: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 3

2- Declarar una variable, con y sin asignación del valor por defecto

En Visual Basic .NET se utiliza de la siguiente forma:

<ámbito> <variable> As <tipo>

<ámbito> <variable> As <tipo> = <valor>

En C# se declara de la siguiente forma:

<ámbito> <tipo> <variable>;

<ámbito> <tipo> <variable> = <valor>;

Algorítmica Visual Basic .NET C#

i : Entero

i1 : Entero = 10

d : Real

d1 : Real = 3.5

f : Real

s : Cadena

c : Caracter

l : Entero

m : Real

o : MiClase

o1 : MiClase

o2 : MiClase

Sp : Cadena

s1 : Cadena

Dim i As Integer

Dim i1 As Integer = 10

Dim d As Double

Dim d1 As Double = 3.5#

Dim f As Single

Dim s As String

Dim c As Char

Dim l As Long

Dim m As Decimal

Dim o As MiClase

Dim o1 As New MiClase()

Dim o2 As MiClase = New MiClase()

Public Sp As String

Private s1 As String

int i;

int i1 = 10;

double d;

double d1 = 3.5;

float f;

string s;

char c;

long l;

decimal m;

MiClase o;

MiClase o1 = new MiClase();

MiClase o2 = new MiClase();

public string Sp;

private string s1;

En Visual Basic .NET cuando se declaran variables dentro de un procedimiento

(método o propiedad) sólo se puede indicar Dim ya que esas variables serán

privadas al procedimiento.

En estos casos, en C# no se indicará el ámbito, simplemente el tipo de la variable.

Page 4: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 4

3- Ámbito (niveles de accesibilidad)

Cualquiera de los miembros de una clase pueden tener un ámbito o nivel de

accesibilidad que dependerá de cómo y desde dónde se podrá acceder a dicho

miembro.

Los ámbitos pueden ser: privados, públicos, a nivel de ensamblado, etc. Para más

información consulta en la documentación de Visual Studio .NET, los siguientes

links te muestran la explicación de los mismos tanto para C# como para Visual

Basic .NET:

C#: ms-

help://MS.VSCC/MS.MSDNVS.3082/csref/html/vclrfDeclaredAccessibilityPG.htm

VB: ms-help://MS.VSCC/MS.MSDNVS.3082/vbcn7/html/vbconaccessibility.htm

VB: ms-help://MS.VSCC/MS.MSDNVS.3082/vbcn7/html/vbconscopelevels.htm

Veamos las equivalencias de los modificadores de ámbito entre Visual Basic y C#,

así como una pequeña descripción de esos mismos ámbitos.

Visual Basic .NET C# Descripción del ámbito

Private private Accesible dentro del mismo módulo,

clase o estructura.

Friend internal Accesible desde dentro del mismo

proyecto, pero no desde fuera de él.

Protected protected

Accesible desde dentro de la misma

clase o desde una clase derivada de

ella.

Protected Friend protected

internal

Accesible desde clases derivadas o

desde dentro del mismo proyecto, o

ambos.

Public public

Accesible desde cualquier parte del

mismo proyecto, desde otros

proyectos que hagan referencia al

proyecto, y desde un ensamblado

generado a partir del proyecto.

4- Ámbitos predeterminados (si no se indica)

Cuando declaramos una variable, método, etc. y no indicamos el ámbito que

tienen, el compilador le asigna uno de forma predeterminada, según el lenguaje

Page 5: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 5

que estemos usando o el tipo de elemento en el que estemos haciendo esa

declaración, tendrá un ámbito o nivel de accesibilidad diferente.

En la siguiente tabla, podemos ver qué ámbito tendría, dependiendo de dónde se

declare.

Nota: Esta información está en la ayuda de Visual Studio .NET, para más

información usa links indicados

C#:

help://MS.VSCC/MS.MSDNVS.3082/csref/html/vclrfDeclaredAccessibilityPG.htm

Miembros de Accesibilidad

predeterminada

Accesibilidades declaradas

permitidas

enum public Ninguna

class private public

protected

internal

private

protected internal

interface public Ninguna

struct private public

internal

private

VB: No he encontrado una lista con esta información... así que en algunos casos,

simplemente lo he comprobado.

Miembros de Accesibilidad

predeterminada

Accesibilidades declaradas

permitidas

Enum Public Ninguna

Class

Module

Public Public

Protected

Friend

Private

Protected Friend

Interface Public Ninguna

Structure Siempre hay que

indicar el ámbito

Public

Friend

Private

Page 6: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 6

5- Bucles For y For Each (foreach)

Nota: En las versiones de Visual Basic .NET incluidas en Visual Studio .NET 2003

(.NET Framework 1.1) se pueden declarar variables para usar en el propio bucle

(For o For Each).

En C#, cuando se usa un bucle foreach, siempre hay que declarar la variable a

usar con el bucle.

Algorítmica Visual Basic .NET C#

i : Entero

Para i Desde 1 Hasta 10

...

Fin Para

Dim i As Integer

For i = 1 To 10

' ...

Next

int i;

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

{

// ...

}

i : Entero

Para i Desde 1 Hasta 10

...

Fin Para

'Sólo Visual Studio .NET 2003

For i As Integer = 1 To 10

' ...

Next

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

{

// ...

}

objeto : <Tipo>

Para Cada objeto En Colección

Dim objeto As <Tipo>

For Each objeto In colección

foreach(<Tipo> objeto in colección)

objeto : <Tipo>

Para Cada objeto En Colección

'Sólo Visual Studio .NET 2003

For Each objeto As <Tipo> In

colección

foreach(<Tipo> objeto in colección)

Page 7: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 7

6- Bucles While, Do... Loop

Algorítmica Visual Basic .NET C#

Hacer

...

Mientras <expresión>

Do

'...

Loop While <expresión>

do

{

//...

}while(<expresión>);

Mientras <expresión>

...

Fin Mientras

While <expresión>

'...

End While

while(<expresión>)

{

//...

}

Mientras <expresión>

...

Fin Mientras

Do While <expresión>

'...

Loop

while(<expresión>)

{

//...

}

Mientras (true)

...

Fin Mientras

Do

'...

Loop

while(true)

{

//...

}

Hasta <expresión>

...

Repetir

Do Until <expresión>

'...

Loop

while(!<expresión>)

{

//...

}

Repetir

...

Hasta <expresión>

Do

'...

Loop Until <expresión>

do

{

//...

}while(!<expresión>);

Page 8: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 8

7- Abandonar un bucle o procedimiento

Visual Basic .NET:

Para abandonar un bucle Do... Loop, se utiliza Exit Do.

Para abandonar un bucle While... End While, se utiliza Exit While.

Para abandonar un bucle For o For Each, se utiliza Exit For

Para abandonar un procedimiento Function (función), se utilizará Exit Function.

Para abandonar un procedimiento Sub, se utilizará Exit Sub.

Para abandonar un procedimiento Property, se utilizará Exit Property.

C#:

Para abandonar cualquier tipo de bucle, se utilizará break.

Para abandonar cualquier tipo de procedimiento, se utilizará return.

Page 9: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 9

8- Comparaciones, If, Else...

Algorítmica Visual Basic .NET C#

Si x = 10

Entonces

...

Fin Si

If x = 10 Then

'...

End If

if(x == 10)

{

//...

}

Si x = 10

Entonces

...

Sino

...

Fin Si

If x = 10 Then

'...

Else

'...

End If

if(x == 10)

{

//...

}

else

{

//...

}

Si x = 10

Entonces

...

Sino Si x > 50

Entonces

...

Fin Si

If x = 10 Then

'...

ElseIf x > 50 Then

'...

End If

if(x == 10)

{

//...

}

else if(x > 50)

{

//...

}

En C# no es necesario usar llaves para indicar la instrucción a ejecutar cuando se

cumpla la condición del IF, pero si hay más de una instrucción, es necesario usar

las llaves.

Estos ejemplos lo aclararán mejor:

// con una instrucción, no es necesario usar llaves

if(x == 10)

Page 10: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 10

Console.WriteLine(x);

// con más de una instrucción, hay que usar las llaves

if(x == 10)

{

Console.WriteLine(x);

x += 10;

}

En Visual Basic no es necesario usar End If si el código a ejecutar se incluye en una

línea, pero esa instrucción (o instrucciones separadas por dos puntos (:) deberán

estar en la misma línea.

' con una instrucción

If x = 10 Then Console.WriteLine(x)

' con más de una instrucción, pero en una sola línea

' pero separando cada instrucción con dos puntos

If x = 10 Then Console.WriteLine(x): x += 10

Page 11: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 11

9- Select Case / switch

Algorítmica Visual Basic C#

Caso Que <condición>

Sea <opción 1>

...

Sea <opción 2>

...

Sea <opción N>

...

Otro Caso

...

Fin Caso

Select Case <condición>

Case <opción 1>

'...

Case <opción 2>

'...

Case Else

'...

End Select

switch (<condición>)

{

case <opción 1>:

//...

break;

case <opción 2>:

//...

break;

default:

//...

break;

}

En C# los valores de las opciones case deben ser valores constantes, no se permiten

expresiones ni variables, además de que solo se puede indicar un valor en cada "case",

aunque se pueden indicar varios case para contemplar más de un valor para ejecutar el

código de un mismo bloque.

En Visual Basic se permiten expresiones y para ello existen instrucciones que podemos

indicar en cada bloque Case.

La condición, tanto en VB como en C#, puede ser una expresión.

Caso Que <expresión

con valor entero>

Sea 1

...

Sea 2, 3, 4

...

Otro Caso

Select Case <expresión

con valor entero>

Case 1

'...

Case 2, 3, 4

'...

Case Else

switch (<expresión con

valor entero>)

{

case 1:

//...

break;

case 2:

Page 12: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 12

...

Fin Caso

También de esta forma

Caso Que <expresión

con valor entero>

Sea 1

...

Sea 2 Hasta 4

...

Otro Caso

...

Fin Caso

'...

End Select

' También de esta forma

Select Case <expresión

con valor entero>

Case 1

'...

Case 2 To 4

'...

Case Else

'...

End Select

case 3:

case 4:

//...

break;

default:

//...

break;

}

Además en Visual Basic se pueden usar varios valores en cada Case, separándolos con

comas, y esos valores pueden ser expresiones de cualquier tipo, además de poder usarse

variables, etc., es decir, cualquier cosa que produzca un valor del tipo esperado.

En Visual Basic, para indicar valores que requieran los operadores de comparación

debemos usar Is, por ejemplo, para indicar que el valor sea mayor que 7, lo haremos con:

Case Is > 7.

Y si queremos que esté dentro de un rango de valores, podemos usar To, en el ejemplo

anterior hemos usado 2 To 4 para indicar los valores entre 2 y 4, pero también podemos

combinar varias expresiones, por ejemplo:

Case 2 To 4, 9 To 12, Is > 99, Is < 299

En este caso se tendrían en cuenta todos los valores posibles indicados en esas

expresiones. Como puedes comprobar, no podremos usar los operadores And, Or, etc.,

en su caso podemos usar varios Is.

ATENCIÓN:

Page 13: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 13

Si usas Is < 299 debes tener en cuenta que esa condición se evalúa de forma

independiente de las demás, por tanto el caso anterior, (si solo quieres valores hasta 299),

lo puedes escribir solo con la última condición:

Case Is < 299

Ya que si no cumple ninguna de las anteriores, se evaluará esa, por tanto, si, por ejemplo,

el valor de la condición indicada en Select Case fuese 8, también se evaluaría, ya que es

menor de 299.

Pero el "problema" va a más y en el ejemplo Case 2 To 4, 9 To 12, Is > 99, Is < 299, en

realidad "capturará" cualquier valor, ya que si se cumple el Is > 99 también se capturarán

valores mayores de 298.

Por tanto, aunque en un Case puedas poner varias expresiones, debes ser consciente de

que es lo que "realmente" estás haciendo... y no "pensar" que es lo que "supuestamente"

estás haciendo.

Por último decir que como en Visual Basic los dos puntos se utilizan como separador de

instrucciones en una misma línea, podemos usar los dos puntos para separar

instrucciones Case, estén o no en la misma línea.

Case 2:

Case 3:

Case 2 : Case 3

Otra cosa a tener en cuenta (además de la advertencia anterior), es que cada sentencia

Case solo se evaluará después de las que haya antes.

Page 14: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 14

10- Operadores lógicos y aritméticos

Algorítmica Visual Basic .NET C#

Y And &

Y Además AndAlso &&

O Or |

O Sino OrElse ||

XOr ^

No Not !

= = ==

<> <> !=

& & (concatenación de

cadenas)

+

Div \ (división de números

enteros)

/

/= \= /=

Mod Mod %

Es Nulo Is Nothing == null

En C# sólo se utiliza el símbolo / para división tanto de números enteros como

decimales

En VB la división de números enteros se realiza con \, la división de números

decimales se hace con /.

Page 15: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 15

11- Procedimientos / Métodos (funciones, propiedades)

En Visual Basic existen tres tipos de procedimientos: Sub, Function y Property

En C# los procedimientos pueden ser funciones o propiedades. Las funciones

pueden o no devolver algún valor, en caso de que no devuelvan un valor se

comportan como los Subs de Visual Basic.

Declarar un procedimiento de tipo Sub en Visual Basic y el equivalente en C#

Algorítmica Visual Basic .NET C#

Procedimiento <nombre>()

Fin Procedimiento

<ámbito> Sub <nombre>()

End Sub

<ámbito> void <nombre>()

{

}

Declarar un procedimiento de tipo Function en Visual Basic y el equivalente en C#

Algorítmica Visual Basic .NET C#

Función <nombre>(): Tipo

Fin Función

<ámbito> Function <nombre>() As <tipo>

End Function

<ámbito> <tipo> <nombre>()

{

}

Declarar un procedimiento de tipo Property en Visual Basic y el equivalente en C#

Algorítmica Visual Basic .NET C#

Propiedad <nombre>: Tipo

<atributo> = Valor

Retornar(<atributo>)

Fin Propiedad

<ámbito> Property <nombre>() As <tipo>

Get

'...

End Get

Set

'...

End Set

End Property

<ámbito> <tipo> <nombre>

{

get{

//...

}

set{

//..

}

}

Page 16: AL0-E01 - Equivalencias Entre VB Y CS Estructuras de Control

2012

Página 16

Propiedad Lectura <nombre>: Tipo

<atributo> = Valor

Fin Propiedad

<ámbito> ReadOnly Property <nombre> As <tipo>

Get

'...

End Get

End Property

<ámbito> <tipo> <nombre>

{

get{

//...

}

}

Propiedad Escritura <nombre>:

Tipo

<atributo> = Valor

Retornar(<atributo>)

Fin Propiedad

<ámbito> WriteOnly Property <nombre> As<tipo>

Set

'...

End Set

End Property

<ámbito> <tipo> <nombre>

{

set{

//...

}

}