Documentos de Académico
Documentos de Profesional
Documentos de Cultura
then
Las palabras if y then tienen que aparecer siempre. La condicin es una expresin lgica. Y sentencia puede ser una sentencia simple o varias si estn encerradas entre begin y end. Para saber lo que hace esta sentencia basta con tener unos conocimientos mnimos del Ingls: Si (if) se cumple la condicin, entonces (then) se ejecuta/n la/s sentencia/s. Bueno, en realidad existen otras formas de escribir sentencias if. A continuacin tienes dos ms completas que la anterior: if condicin1 then sentencia1 else if condicin2 then sentencia2 else sentencia3
...
if
then else
else
sentenciaN
La palabra else significa sino y es la que marca las sentencias que se ejecutarn cuando no se cumpla la condicin. nota: la sentencia que vaya antes de else no puede finalizar con punto y coma (mira el siguiente ejemplo). Veamos un ejemplo para comprender mejor la sentencia if:
program Chequeo_Signo; var Numero : real; begin writeln('Introduzca un numero: '); readln(Numero);
numero es
else
writeln('El numero es
negativo'); end.
Se lee de la entrada estndar (teclado) un valor que se almacena en la variable real Numero. A continuacin se determina si el numero es mayor o igual que cero. Si lo es, entonces se escribe en pantalla el mensaje El numero es positivo, sino se escribe El numero es negativo.
La sentencia case
La sentencia case al igual que las if permite elegir entre diferentes alternativas. Tiene la estructura siguiente: case
selector of lista_constantes1 : sentencia1; lista_constantes2 : sentencia2; ... lista constantesN : sentenciaN else sentecia_Else end;
Las palabras case, of y end tienen que aparecer siempre. El selector tiene que ser una constante, una variable, o una expresin, pero su tipo debe ser ordinal. La palabra else y su correspondiente sentencia es opcional, y en caso de ponerla indica la sentencia que se ejecutar sino coincide el selector con ninguna de las listas de constantes. La lista de constantes se compone de o uno o ms valores constantes. En caso de ser ms de uno se separarn por comas. Aunque tambin existe la posibilidad de especificar un rango de valores como: 0..9 La forma que tiene de trabajar es la siguiente: o Se mira si el valor del selector aparece en alguna de las listas de constantes o Si aparece, entonces se ejecuta la sentencia correspondiente o Si no aparece y hay una clusula else entonces se ejecuta la sentencia que la sigue o Si no aparece y no hay else entonces no se hace nada
Veamos un ejemplo:
program prueba_CASE; var Opcion : char; ... begin ... readln(Opcion); case Opcion of '1' : nuevaEntrada; '2' : cambiarDatos; '3' : borrarEntrada; '0' : salir else writeln('Opcion no valida!!') end; ... end.
En este ejemplo se presenta uno de los usos ms tpicos de la sentencia case: la creacin de un menu de opciones. El cdigo aqu representado podra formar parte de un programa que simulase una agenda de telfonos. Y con este cdigo lo que hacemos es elegir uno de entre varios procedimientos disponibles, como aadir un nuevo telfono o borrar uno ya existente.
Volver al inicio de la pgina Pasar al siguiente ejemplo sobre las sentencias alternativas
operador and o el operador or. Adems puedes comprobar el resultado de la ejecucin pulsando el botn. nota: lgicamente los valores que tienes que teclear para las variables tienen que ser numricos. Porque si introduces letras u otros caracteres se mostrar un error.
Volver al inicio de la pgina Pasar al siguiente apartado sobre las sentencias repetitivas
A las sentencias repetitivas tambin se las conoce como sentencias iterativas o bucles porque permiten realizar una tarea varias veces. Dentro de un bucle distinguimos dos partes:
seccin de control: es donde se determina si se ejecutar y el nmero de veces que lo har el cuerpo del bucle cuerpo del bucle: es el que contiene las sentencias a ejecutar
La sentencia for
La sentencia for es la nica de las repetitivas que no depende de una expresion. En su ejecucin no es necesario chequear ninguna condicin. Veamos su sintaxis: for begin
var
:=
inicial
to
final
do
sentencia
end;
Lo que aparece en azul es obligatorio y no se puede sustituir por otras palabras var es una variable ordinal, casi siempre de tipo entero inicial y final son valores constantes, recordar que incluso pueden ser expresiones si devuelven un valor de igual tipo que var Y sentencia es una o ms sentencias separadas por punto y coma. Si es una sla sentencia no es necesario inclur las palabras reservadas begin y end
Lo que hace la sentencia for es bien sencillo: ejecuta lo que hay entre begin y end un nmero de veces igual a final-inicial+1 incrementando el valor de var en una unidad despus de cada iteracin. Advertencias sobre la variable var
El valor que tiene al terminar la sentencia for es indefinido No se puede cambiar su valor en el cuerpo del bucle No pasarla como parmetro por referencia a una funcin o procedimiento
Veamos un ejemplo:
program prueba_FOR; const inicial = 0; var i : integer; final : integer; begin write('Introduzca el valor FINAL:
'); readln(final);
final
do
El cdigo anterior representa un programa en el que se pide al usuario el valor final del bucle for, y a continuacin se escriben en pantalla nmeros desde cero hasta el valor introducido por el usuario.
La sentencia while
As como la sentencia repetitiva for no depende de ninguna condicin, while si que depende de la evaluacin de una expresin lgica. Esta caracterstica tambin est presente en la sentencia repeat, por eso se les conoce como bucles condicionales. Como ya sabrs las expresiones lgicas slo pueden devolver uno de dos posibles valores: true o false. Y las sentencias contenidas en el cuerpo del while se ejecutarn mientras la evaluacin de la expresin devuelva cierto (true). Veamos la sintaxis y un pequeo ejemplo:
program prueba_WHILE; const inicial = 0; var i : integer; final : integer;
condicion
do
sentencia
while begin
i<=final
do
end
end.
Las palabras en azul son obligatorias y no se pueden sustituir condicin es una expresin que tiene que devolver true o false Y sentencia es una o ms sentencias separadas por punto y coma. Si es una sla sentencia no es necesario inclur las palabras reservadas begin y end
El ejemplo hace exactamente lo mismo que el que se presenta en la seccin del for.
La sentencia repeat
La sentencia de control repeat es casi igual a la while, en lo nico que difieren es en que el cuerpo de la primera se ejecutar al menos una vez. Esto se debe a que en el while el chequeo de la condicin se realiza antes de ejecutar las sentencias, mientras que en el repeat se ejecutan primero las sentencias y luego se chequea la condicin. Lo que hace repeat es repetir las sentencias hasta que se cumple una condicin. Veamos su sintaxis: repeat
sentencia
until
condicion;
repeat y until deben aparecer siempre A diferencia de while, cuando repeat lleva ms de una sentencia no necesitan ir entre begin y end Como siempre la condicin es una expresin que tiene que devolver true o false
repeat
write('Quiere cambiar los datos (s/n)?'); readln(Resp); if (Resp<>'s') and (Resp<>'n') then writeln('Valor incorrecto'); until (Resp='s') or (Resp='n');
En el ejemplo tenemos una tarea muy comn, que es solicitar una confirmacin por parte del usuario. Pero en este caso estamos solicitando una respuesta de forma robusta, ya que si el usuario no teclea una de las posibles opciones entonces se le volver a pedir la respuesta. Por ltimo comentar que para resolver la mayora de los problemas es indistinto utilizar while o repeat, aunque mi consejo es que utilices siempre que puedas while y dejes repeat para los casos en los que las sentencias se tengan que ejecutar al menos una vez. nota: lo de que utilices siempre que puedas el while es porque si te pasas a otro lenguaje de programacin igual te llevas la desagradable sorpresa de que no dispones de sentencia repeat.
Volver al inicio de la pgina Pasar al siguiente ejemplo sobre las sentencias repetitivas
La diferencia entre if y case es simplemente una sintaxis, ambos se puede decir que en esencia es lo mismo, porque lo que hacen es tomar una desicin entre una o varias opciones, por ejemplo if (a > b) then a es el mayor else b es el mayor end if select case a case is > b a es el mayor case else b es el mayor end select hay algunas diferencias que son en alguna aplicaciones especificas donde uno es mas limitado que el otro y viceversa
Para asignar a una variable un valor se procede de la siguiente manera se declara la variable y luego se asigna con el operador =. Se presentan 2 opciones a. Dim va As Integer va=5 Dim va As Integer=5 Y las constantes se declaran como Const n as Integer=10 `En esta lnea no usamos Dim porque es constante precisamente. Tambin se pueden declarar varias variables en una misma lnea por ejemplo: Dim a,b,c As Short En la lnea anterior a, b y c sern de tipo Short Lo anterior se pudo haber escrito como: Dim a As Short Dim b As Short Dim c As Short O bien Dim a As Short,b As Short,c As Short No es recomendable dejar una variable sin indicar el tipo por ejemplo: Dim i Esto generara un error despus de declarar la Option Strict en On, porque indicara que no se debe dejar sin declarar el tipo. Algo que no se puede hacer es lo siguiente: Dim i,b As short=5 Porque generara un error indicando que no se puede inicializar varias variables al tiempo. Lo cual se hara de la siguiente manera Dim As Short,b As short=5 Aunque solo b tendr un valor de 5 Igualmente Dim a As Short,b,c As integer,d As Short=3 Slo d tendr un valor de 3 Todas las variables numricas al no inicializarlas tendrn como valor inicial 0, las variables de tipo char tendrn un null o vaca. Ejemplos 1 Module Module1 Sub Main() Dim A As Short = 2, B As Short B=4 Console.Write("A={0},B={1}", A, B)
Console.Read() End Sub End Module Esto da como resultado A=2,B=4 2. Operadores Los operadores se utilizan para realizar operaciones aritmticas con los datos contenidos dentro de las variables. Estos son: */\ +*= /= += -= y otros que estn mostrados en una tabla ms adelante Los parntesis indican cmo se necesita ejecutar una operacin aritmtica. Por ejemplo observe el resultado de las dos operaciones siguientes. Dim i As Short=5 Dim j As Short=10 1 i* j+5 2 i* (j+5) La lnea 1 da como resultado 55 La lnea 2 da cmo resultado 75 Los operadores += y -= se utilizan para sumar o restar la unidad a una variable por ejemplo Dim i As Short i+=1 i-=1 sin embargos se pueden usar de la manera normal o sea i=i+1 i=i-1 Los otros operadores se usan de igual forma El siguiente cuadro resume los operadores de vb.net Accin Aritmticos Asignacin Comparacin Concatenacin ^, -, *, /, \, Mod, +, = =, ^=, *=, /=, \=, +=, -= &= =, <>, <, >, <=, >=, Like, Is &, + Elemento del lenguaje
Varias operaciones
AddressOf, GetType
Por ejemplo si usamos una variable string Dim var1 As String = "10" Dim var2 As String = "3" var1 += var2 ' El valor de var1 ahora es "103". Sera una buena practica de programacin si se activa la opcin Option Strict o sea que est en On y no en Off para que obligue a que los tipos de datos que se usen sean del tipo adecuado. Adems de Option Explicit en On para que todas las variables sean declaradas Cuando est activa esta opcin no se puede realizar la siguiente asignacin Dim carcter As Char=A Porque generara un error indicando que no se puede convertir un tipo string a char lo mejor sera definirla como Dim carcter As Char=Ac Ejemplo 2 Option Strict On Module Module1 Sub Main() Dim A As Char = "E"c, B As Char = "A"c Dim union As String union &= A union &= B Console.Write("union={0}", union) Console.Read() End Sub End Module Esto da como resultado Union=EA Instrucciones bsicas Las instrucciones bsicas de todo lenguaje comprende las condiciones y los ciclos. Entre ellas veremos: If Esta se usa para preguntar por ejemplo Dim i As Short=5 If i > 0 then `Haga cualquier cosa End if Como tambin se puede evaluar la parte negativa If i > 0 then
`Haga cualquier cosa else `Tambien haga cualquier cosa End if Cmo tambin se puede evaluar varias alternativas cmo If i =1 0 then `Muestre el valor elseif i=2 then `Muestre el valor else `Tambien haga cualquier otra cosa End if Tambin podemos usar la funcion IIF, que funciona de la siguiente forma iif(i=1,uno,otro) o iif(i>0,Positivo,Negativo), si tuviramos el siguiente caso if B=5 then A=1 Elseif B<=0 then A=-1 Elseif B>5 then A=1 Else A=0 End if Lo llevaramos a la funcin iif de la siguiente forma A=iif(B=5,1,iif(B<=0,-1,iif(B>5,1,0))) Sin embargo tenemos otra opcin, la funcin Switch A=Switch(B=5,1,B<=0,-1,B>5,1) Como observar el primer elemento de cada pareja es la expresin a evaluar. Tambin se puede anidar las instrucciones if Por ejemplo If A>0 then If (A mod 2 )=0 then `Nmero par Else `Nmero impar End if Else `Nmero negativo End if
Select case Esta instruccin permite evaluar mltiples valores por ejemplo: Dim B As Short =30 Select case B Case 5 `Si fuera igual a 5 Caso Is < 10 `Si fuera menor a 10 Case Is> 20 `Si fuera mayor a 20 Case 23 to 25 `Si fuera mayor o igual a 23 y menor e igual a 25 Case 1 to 2 `Si fuera 1 o 2 Case 26 to 28,31 `Si fuera mayor o igual a 26 y menor e igual a 28 o si es 31 Case else `Si no es ninguna de las anteriores End select Do While Este ciclo es mejor mostrarlo un ejemplo supongo que con eso es suficiente Se ciclo se realiza mientras la condicin sea verdadera o para este caso mientras i sea mayor que 0, observe que si i no fuera mayor que cero al ingresar no realizara el ciclo Option Strict On Module Module1 Sub Main() Dim i As Integer = 5 Do While i > 0 Console.WriteLine(i) i -= 1 Loop Console.Read() End Sub End Module Debe generar como resultado 5 4 3 2
1 Do Loop While Igual que anterior es mejor mostrarlo con un ejemplo Este ciclo se realiza mientras i sea mayor que 0, observe que si i fuera menor que cero al menos ingresara una vez al ciclo Option Strict On Module Module1 Sub Main() Dim i As Integer = 5 Do Console.WriteLine(i) i -= 1 Loop While i > 0 Console.Read() End Sub End Module Debe generar como resultado 5 4 3 2 1 El ciclo for se analizar cuando veamos arreglos Ejemplo 3 Option Strict On Module Module1 Sub Main() Dim B As Short = 6, A As Short If B = 5 Then A=1 ElseIf B <= 0 Then A = -1 ElseIf B > 5 Then A=1 Else A=0 End If Console.Write("A={0}", A)
Console.Read() End Sub End Module Esto da como resultado A=1 Ejemplo 4 Option Strict On Module Module1 Sub Main() Dim B As Short = 30 Select Case B Case 5 'Si fuera igual a 5 Console.Write("B={0}", B) Case Is < 10 'Si fuera menor a 10 Console.Write("B={0}", B) Case Is > 20 'Si fuera mayor a 20 Console.Write("B={0}", B) Case 23 To 25 'Si fuera mayor o igual a 23 y menor e igual a 25 Console.Write("B={0}", B) Case 1 To 2 'Si fuera 1 o 2 Console.Write("B={0}", B) Case 26 To 28, 31 'Si fuera mayor o igual a 26 y menor e igual a 28 o si es 31 Console.Write("B={0}", B) Case Else 'Si no es ninguna de las anteriores Console.Write("ninguna de las anteriores") End Select Console.Read() End Sub End Module Esto da como resultado B=30 Ejemplo 5
Option Strict On Module Module1 Sub Main() Dim i As Integer Dim j As Integer Dim c As Char i = Console.Read()'aqui lee un carcter c = Microsoft.VisualBasic.Chr(i)'Lo convierte a carcter j = Microsoft.VisualBasic.Val(c)'Lo convierte a integer j += 5 Console.WriteLine("j: {0}", j)'Muestra el resultado Console.ReadLine() End Sub End Module Si le digitamos 5 para el valor de i Esto da como resultado J:10 Observe que en este ejemplo se usan las funciones de la versin anterior de visual basic.net TIPOS DE DATOS COMO OBJETOS DE CLASE Antes de introducirnos en este tema se debe aclara que es una clase y objeto Clase: Son tipos de datos a partir de los cuales podemos crear objetos, estos pueden contener miembros, mtodos, propiedades etc. Objeto: Es una instancia de una clase Los tipos de datos en visual basic.net son objetos de clase, cada vez que se crea un objeto bien sea short, integer o cualquier otro se crea un objeto de clase short, integer o cualquier otro tipo de datos. Las clases numricas En esta seccin veremos las siguientes clases La clase Integer Esta clase almacena un datos de tipo entero. Alguno de sus mtodos son: CompareTo Compara esta instancia con un objeto especificado y devuelve una indicacin de los valores relativos. Equals Devuelve un valor que indica si la instancia equivale a un objeto especificado. GetHashCode Devuelve el cdigo hash de esta instancia. GetType Obtiene el tipo de objeto de la instancia actual Parse Convierte la representacin en forma de cadena de un nmero en el entero de 32 bits con signo equivalente. ToString Convierte el valor numrico de esta instancia en la representacin de cadena equivalente. Ahora se realizarn ejemplos para mostrar cada uno de los mtodos anteriores
CompareTo Este mtodo lo que hace es una comparacin con otro objeto o consigo mismo verificando si es igual en su contenido. Por ejemplo Este ejemplo compara dos objetos de tipo integer verificando el contenido. Hay 3 posibilidades Si el resultado es =0 indica que el contenido en el objeto es igual que el contenido almacenado en el objeto pasado como parmetro Si el resultado es >0 indica que el contenido en el objeto es mayor que el contenido almacenado en el objeto pasado como parmetro Si el resultado es >0 indica que el contenido en el objeto es menor que el contenido almacenado en el objeto pasado como parmetro Module Module1 Sub Main() Dim i As Integer = 5 Dim j As Integer = 4 Dim r As Integer r = i.CompareTo(j) If r > 0 Then Console.Write("i={0} es mayor que j={1}", i, j) ElseIf r < 0 Then Console.Write("j={0} es menor que i={1}", j, i) Else Console.Write("i={0} es igual a j={1}", i, j) End If Console.Read() End Sub End Module Dar como resultado i=5 es mayor que j=4 Equals compara dos objetos del mismo tipo retorno true o false Por ejemplo Module Module1 Sub Main() Dim i As Integer = 5 Dim j As Integer = 4 Dim r As Boolean r = i.Equals(j) If r = True Then Console.Write("i={0} es igual a j={1}", i, j) Else
Console.Write("i={0} es diferente de j={1}", i, j) End If Console.Read() End Sub End Module Dar como resultado I=5 es diferente de j=4 Si j tuviera 5 el resultado sera I=5 es igual a j=4 GetHashCode Devuelve el codigo hash de esta instancia (Realmente no s la utilidad) Ejemplo Module Module1 Sub Main() Dim i As Integer = 5 Console.Write("Cdigo hash para i:{0}={1}", i, i.GetHashCode()) Console.Read() End Sub End Module Dar como resultado i:5=5 GetType indica el tipo de objeto Ejemplo Module Module1 Sub Main() Dim i As Integer = 5 Console.Write("i es un Tipo de dato {0}", i.GetType()) Console.Read() End Sub End Module Dar como resultado i es un Tipo de dato System.Int32 Se preguntarn porque System.Int32 lo que pasa es que se es el verdadero nombre que tiene el tipo de dato Integer en la plataforma .net framework y ahora se llama Integer para conservar la compatibilidad con las versiones anteriores, es simplemente lo vb.net muestra pero realmente hace uso de la anterior. Parse convierte una cadena que representa un nmero Integer a un nmero Integer Ejemplo Module Module1 Sub Main() Dim i As Integer
Dim valor As String valor = 31000 'Primera opcin i = Integer.Parse(valor) 'Segunda opcin ' se coloca en comentario 'si quiere coloca en comentario la lnea de 'la primera opcin y quita el comentari de l 'la segunda 'i = i.Parse(valor) Console.Write("i={0}", i) Console.Read() End Sub End Module ToString Este mtodo convierte a cadena el nmero especificado Ejemplo Module Module1 Sub Main() Dim i As Integer = 31550 Dim valor As String valor = i.ToString() Console.Write("valor={0}", valor) Console.Read() End Sub End Module