Está en la página 1de 20

La sentencia if

La sentencia if tiene la forma siguiente: if


condicin sentencia

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

condicin sentencia1 sentencia2

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);

if Numero >= 0.0 then writeln('El


positivo')

numero es

else

writeln('El numero es

negativo'); end.

El ejemplo es un programa muy sencillo que determina si un numero es positivo o negativo:


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

Un ejemplo sobre las sentencias alternativas


Por si no te qued muy clara la sentencia if, a continuacin tienes un ejemplo que te ayudar. En la primera parte del cdigo que se muestra puedes introducir valores para tres variables: a, b y c. A continuacin aparece una sentencia if que usa estas variables, y donde tambin puedes elegir entre el

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

Sentencias de control repetitivas


Con las sentencias de control repetitivas puedes realizar algo varias veces sin tener que escribirlo cada vez. Por ejemplo si quieres imprimir en pantalla los nmeros del 1 al 20 no tienes porque escribir 20 llamadas a writeln, basta con una y alguna lnea de cdigo adicional. Sera algo como:
numero := 0;

haz lo siguiente 20 veces


begin writeln('El valor es ',numero); numero := numero + 1 end;

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

Las sentencias iterativas se dividen en tres:

La sentencia for La sentencia while La sentencia repeat

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);

for i:=inicial to begin end


end.

final

do

writeln('El valor actual es ',i)

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;

while begin end;

condicion

do

sentencia

begin write('Introduzca el valor FINAL: '); readln(final); i := inicial;

while begin

i<=final

do

writeln('El valor actual es ',i); i := i + 1

end
end.

Con respecto a la sintaxis:


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

Para aclarar un poco las ideas, veamos un ejemplo:


...

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

Un ejemplo sobre las sentencias repetitivas


Despus de ver la parte terica de los bucles pasemos a ver un ejemplo interactivo. Primeramente debes elegir valores para las variables inicial y final. A continuacin tienes que elegir entre una de las tres sentencias repetitivas: for, while o repeat. Y para ver la ejecucin tienes que pulsar el botn ejecutar. Este ejemplo te ayudar a entender mejor las diferencias entre los tres tipos de bucles. Para ello, y despus de elegir valores para las variables y el tipo de bucle, debes de pensar el resultado antes de pulsar el botn, as podrs comprobar si ests o no en lo cierto.

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

hace 4 aos Notificar un abuso

Puntuacin del usuario que pregunta:

Comentario de la persona que pregunta: gracias por tu respuesta me sirvio de mucho

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

Operadores lgicos/bit a Not, And, Or, Xor, AndAlso, OrElse bit

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

También podría gustarte