Upload
wilbert-dalguerre
View
232
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Equivalencias de sintaxis entre Algorítmica, Visual Basic y C#
Citation preview
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.
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.
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.
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
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
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)
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>);
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.
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)
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
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:
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:
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.
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 /.
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{
//..
}
}
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{
//...
}
}