Diapositivas

Anuncio
UNIDAD IV

Secuenciales:
◦ Sentencias son ejecutadas en un orden especifico
(arriba abajo o izq. a derecha).

Selectivas:
◦ El flujo del programa se determina de acuerdo a una
expresión lógica (comparación o condición).
 Selección simple: (un camino alterno)
 Selección doble: (dos caminos alternos)
 Selección múltiple: (varios caminos alternos)

Repetitivas:
◦ Permiten la repetición de una secuencia de sentencias
en función de si se cumple o no una expresión lógica.
 Repetición Predefinida
 Repetición con entrada condicionada
 Repetición con salida condicionada


Sentencia: es una instrucción o línea de código en algún lenguaje
de programación.
Sentencias de Declaración de variables o constantes:
◦ Dim variable as Tipo o Const identificador as tipo

Sentencias de entrada o lectura de datos:
◦ Console.read() lee un carácter desde teclado
◦ Console.readLine() lee una línea de caracteres (cadena) desde teclado

Sentencias que formulan el proceso a realizar a través de
operaciones primitivas (expresiones aritméticas o lógicas):
◦
◦
◦
◦
◦

Asignación: variable=valor o expresión
Operadores Aritméticos: ^,*,/,\,MOD,+,Operadores Relacionales: >,<,>=,=<,<>,=
Operadores Lógicos: AND, OR, NOT, XOR, ANDALSO, ORELSE
Asignaciones simplificadas: +=,-=,*=,/=,&=,\=, ^=
Sentencias de salida o escritura de datos:
◦ Console.write() escribe un mensaje o datos sin saltar de línea
◦ Console.writeLine() escribe un mensaje o datos y salta una línea
Module Suma
Sub Main()
Dim a,b,r as integer
Console.write(“Dame el primer valor”)
a=CINT(Console.readline())
Console.write(“Dame el segundo valor”)
b=CINT(Console.readline())
r=a+b
Console.writeLine(“La suma de {0} y {1} es {2}“,a,b,r)
End Sub
End Module

Se selecciona un camino o flujo a seguir de acuerdo al
resultado de una expresión lógica.
 Una expresión lógica es aquella cuyo resultado es un
valor lógico: Falso (false) o Verdadero (true).
 La expresión lógica esta utiliza operadores relacionales
para comparar y lógicos para relacionar 2 o más
comparaciones.
 Una comparación esta conformada por 2 operandos
(variables o constantes numéricas) y un operador
relacional. Ejemplos:
(5>3) , (a<=b), (a<>7),…
 Una expresión lógica puede estar conformada por 2 o
más comparaciones unidas por operadores lógicos, por
ejemplo:
((a>b) and (b>c)) or ((a=b) and (b=c))
Si la expresión lógica es verdadera se realizan las
sentencias incluidas en la estructura. Sólo se considera una
alternativa.
Sintaxis:
Varias líneas de código:

If Expresión lógica Then
Código
End If
Una línea de código:
If Expresión Then Instrucción
Module Mayor3
Sub Main()
Dim a,b,c,mayor as integer
Console.writeline(“Teclea los 3 valores:”)
a=Cint(Console.readLine())
b=Cint(Console.readLine())
c=Cint(Console.readLine())
mayor=a
if (b>mayor) Then mayor=b
if (c>mayor) Then mayor=c
Console.writeLine(“El mayor es {0}”,mayor)
End Sub
End Module

Se consideran 2 alternativas (Verdadero y Falso). Si la expresión
lógica es verdadera el flujo del programa realiza las sentencias
incluidas en la parte verdadera (THEN) y en caso contrario si la
expresión es falsa se realiza el código incluido en la parte falsa
(ELSE).
Varias líneas de código:
Anidada o Multiple:
If Expresión lógica Then
If Expresión1 Then
Código
Else
Código
End If
Código
ElseIf Expresión2 Then
Código
...
[ElseIf ExpresiónN Then]
Código
Una línea de código:
Else
If Expresión Then Instrucción Else Instrucción
Código
End If
Manera Simplificada:
iff(Expresión,instrucción si verdadero,instrucción si falso)
Module Mayor3
Sub Main()
Dim a,b,c as integer
Console.writeline(“Teclea los 3 valores:”)
a=Cint(Console.readLine())
b=Cint(Console.readLine())
c=Cint(Console.readLine())
if (a>b) then
if (a>c) then
Console.writeLine(“El mayor es {0}”,a)
else
Console.writeLine(“El mayor es {0}”,c)
end if
elseif (b>c) then
Console.writeLine(“El mayor es {0}”,b)
else
Console.writeLine(“El mayor es {0}”,c)
end if
End Sub
End Module
Dependiendo del valor que toma una determina variable o
expresión (selector) se ejecuta el código correspondiente. La
variable o expresión debe de ser de tipo entero, carácter o
cadena.
Sintaxis:
Select Case Expresión
Case Lista1
Código
[Case Lista2]
Código
[Case Else]
Código
End Select
donde ListaN:
 Expresión o valor
 Expr1 To Expr2 (valorInicial To valorFinal)
 Is OpComparación Expresión o valor

Module DiasMes
Sub main
dim mes as Integer
Console.write("Teclea no. de mes")
mes=cint(Console.readLine())
select case (mes)
case 1,3,5,7,8,10,12
Console.writeLine("31 dias")
case 2
Console.writeLine("28 dias")
case 4,6,9,11
Console.writeLine("30 dias")
case else
Console.writeLine("No valido")
end select
End Sub
End Module


Una estructura de repetición, también llamada lazo o bucle(ciclo),
hace posible la ejecución repetida de secciones específicas de
código.
Hay tres tipos básicos de estructuras de repetición, cuya diferencia
principal radica en cómo se controlan las mismas:
◦ Repetición Predefinida: es controlada por un contador. Con esta
estructura, un bloque de sentencias se ejecuta una vez para cada
uno de los valores que va tomando un contador. Se ejecuta un
número específico de veces, siendo el número de repeticiones
conocido antes de que empiece la ejecución de tal ciclo (FOR).
◦ Repetición con entrada condicionada: la entrada al ciclo es
controlada por una expresión lógica . En este caso, un bloque de
sentencias se ejecuta un número indefinido de veces, mientras
satisfaga alguna condición establecida por el programador, lo cual
desde el punto de vista de la programación, equivale a que una
cierta expresión lógica tome el valor de true (WHILE).
◦ Repetición con salida condicionada: la salida del ciclo es
controlada por una expresión lógica . En este caso, un bloque de
sentencias se ejecuta un número indefinido de veces, hasta que se
satisface alguna condición establecida por el programador.
(DO..LOOP UNTIL).

Esta estructura ejecuta un bloque de sentencias un número
específico de veces. Se debe de utilizar cuando de antemano se
sabe cuantas veces se va a repetir un proceso. El número de
repeticiones no depende de las proposiciones dentro del ciclo. El
número de veces se obtiene del planteamiento del problema o de
una lectura que indica que el número de iteraciones se debe
realizar para N ocurrencias.
For contador = valorInicial To valorFinal [ Step paso ]
<sentencias>
Next
Para colecciones o arreglos:
For Each elemento In Variable
<sentencias>
Next
Module NumerosImpares
Sub main
dim n as Integer
Console.write(“Hasta que numero quieres")
n=cint(Console.readLine())
For i as integer=1 To n step +2
Console.write(“{0} “,i)
Next
End Sub
End Module



La estructura Mientras se utiliza cuando no se sabe el número de
veces a repetir un ciclo. Dicho número depende de las proposiciones
dentro del ciclo. La entrada o repetición del ciclo depende de la
evaluación de una expresión lógica y éste será ejecutado mientras la
condición sea verdadera. Es decir cuando la condición sea falsa se
finalizará la ejecución del ciclo.
Evaluación al principio:
While (condiciones)
Do While (condiciones)
<sentencias>
Código
[Exit While]
[Exit Do]
<sentencias>
Código
End While
Loop
Evaluación al final:
Do
<sentencias>
[Exit Do]
<sentencias>
Loop While (condiciones)
Imports System.Console
Module Primos
Sub Main()
Dim c, n, mitad As Integer: Dim primo As Boolean
Write("Tecla el numero a evaluar "):n = CInt(ReadLine())
mitad = n \ 2: c = 2
primo = True
While ((primo) And (c <= mitad))
If ((n Mod c) = 0) Then
primo = False
End If
c=c+1
End While
If ((primo) And (n > 1)) Then
WriteLine("Es primo")
Else
WriteLine("No primo")
End If
ReadLine()
End Sub
End Module


La estructura Until(hasta) se utiliza cuando no se sabe el
número de veces a repetir un ciclo. La repetición del ciclo
depende de si la evaluación de la expresión lógica es falsa,
es decir las sentencias dentro del ciclo se repiten hasta que
la condición sea verdadera. Cuando la condición es
verdadera se termina la ejecución del ciclo.
Evaluación al principio:
Do Until (Expresión lógica o condición)
Código
[Exit Do]
Código
Loop

Evaluación al final:
Do
Código
[Exit Do]
Código
Loop Until (Expresión lógica o condición)
Imports System.Console
Module gasto
Sub Main()
Dim gasto As Double
Dim suma As Double = 0.0
Do
Write("teclea un gasto")
gasto = CDbl(ReadLine())
If (gasto > 0) Then suma = suma + gasto
Loop Until (gasto < 0) 'Ciclo con salida
condicionada
Write("Total que gastastes={0}", suma)
ReadLine()
End Sub
End Module



Un método es un conjunto de instrucciones a las que se
les da un determinado nombre de tal manera que sea
posible ejecutarlas en cualquier momento sin tenerlas
que reescribir sino usando sólo su nombre. A estas
instrucciones se les denomina cuerpo del método, y a su
ejecución a través de su nombre se le denomina llamada
al método.
Es la implementación de un algoritmo que representa
una operación o función que un objeto realiza. El
conjunto de los métodos de un objeto determinan el
comportamiento del objeto.
La ejecución de las instrucciones de un método puede
producir como resultado un objeto de cualquier tipo. A
este objeto se le llama valor de retorno del método y es
completamente opcional, pudiéndose escribir métodos
que no devuelvan ninguno.



La ejecución de las instrucciones de un método puede
depender del valor de unas variables especiales
denominadas parámetros del método, de manera que en
función del valor que se dé a estas variables en cada
llamada la ejecución del método se pueda realizar de
una u otra forma y podrá producir uno u otro valor de
retorno.
Al conjunto formado por el nombre de un método y el
número y tipo de sus parámetros se le conoce como
signatura o firma del método.
La signatura o firma de un método es lo que
verdaderamente lo identifica, de modo que es posible
definir en un mismo tipo varios métodos con idéntico
nombre siempre y cuando tengan distintos parámetros.
Cuando esto ocurre se dice que el método que tiene ese
nombre está sobrecargado.


El método o subrutina main es invocado por el
sistema cuando se ejecuta un programa
(compilado).
Cada llamada a métodos regresa al lugar que lo
llamó.

En VB.NET los métodos se implementan a través
de procedimientos(subrutinas) y funciones:
◦ Sub (procedimientos), no devuelven valor
◦ Function (funciones), devuelven un valor
◦ Property (para manejar propiedades de objetos)

Llamada o invocación:
◦ Sub
ProcPrueba()
◦ Function
CalcRaiz()
Resultado = CalcRaiz() + 5

Sub
[Ámbito] Sub NombreProcedimiento[(ListaParámetros)]
[CódigoEjecutable]
[Exit Sub | Return]
[CódigoEjecutable]

End Sub
Function
[Ámbito] Function NombreFunción[(ListaParámetros)] As TipoDato
[CódigoEjecutable]
[Return Valor]
[NombreFunción = Valor]
[Exit Function]
[CódigoEjecutable]
End Function


Ámbito: capacidad de poder llamar a una
subrutina o procedimiento desde un punto dado
del código.
Depende del nivel de acceso indicado en la
declaración del Sub/Function:
◦ Ámbito { Sub | Function } Nombre ([Parámetros])
◦ Public: Público
 Puede ser llamado desde cualquier módulo del proyecto.
◦ Private: Privado
 Sólo puede ser llamado desde el módulo en que se ha
declarado.
public sub escribe(byRef frase as String, byVal n as Integer)
For i as interger=1 To n
Console.writeline(frase)
Next
End Sub
public Function suma(byVal a as integer,byVal b as integer)
Dim resultado as integer
resultado=a+b
return (resultado)
End Function






Los parámetros son canales de comunicación para pasar
datos entre programas y subprogramas en ambos sentidos.
Los parámetros van asociados a variables, constantes,
expresiones, etc., y, por tanto, se indican mediante los
correspondientes identificadores o expresiones.
Los parámetros que se utilizan en la llamada o invocación al
subprograma se denominan parámetros actuales, reales o
argumentos, y son los que entregan la información al
subprograma.
Los parámetros que la reciben en el subprograma se
denominan parámetros formales o ficticios y se declaran en la
cabecera del subprograma.
Algunos procedimientos carecen de parámetros cuando se
realizan tareas que no requieren recibir información del
programa principal.
En una llamada a un subprograma tiene que verificarse que:
◦ El número de parámetros formales debe ser igual al de actuales.
◦ Los parámetros que ocupen el mismo orden en cada una de las listas
deben ser compatibles en tipo.




cuando un parámetro actual se pasa por valor, el
método o función miembro hace una copia del valor de
éste en una posición de memoria idéntica en tamaño
pero distinta en ubicación a la del parámetro actual y la
asigna al parámetro formal correspondiente.
como el método o función miembro trabaja a partir de
sus parámetros formales, si durante la ejecución se
modifica
el
valor
de
un
parámetro
formal
correspondiente a un paso por valor, el contenido de la
posición de memoria del parámetro actual no se verá
alterado.
Puede decirse que el paso por valor es un canal de
transferencia de información con una sola dirección, es
decir, de entrada al método o función miembro.
El paso de las variables por valor le ofrece alguna
seguridad a los programadores: los métodos no puede
modificar de forma no intencionada una variable que
está fuera de su ámbito.


[Optional] [ByVal] [ParamArray] Nombre AsTipoDato
Opción por defecto, se crea una nueva variable (se hace
una copia)
Imports System.Console
Module ParametroValor
Sub Main()
Dim a As Integer=10
Dim b As Integer=20
prueba(a,b) „Parametros actuales o argumentos
Write(“El valor de a={0} y el de b={1}”,a,b)
End Sub
'Definición de una subrutina o procedimiento
Sub prueba(ByVal a As Integer, ByVal b As Integer) 'Param. Formales
a=a*100
b=b*100
End Sub
End Module




En el paso por referencia el parámetro formal queda asociado
a la misma posición de memoria que su correspondiente
parámetro actual, por lo que cualquier modificación que el
método o función miembro realice sobre el contenido del
parámetro formal se efectúa sobre el parámetro actual
correspondiente y repercutirá en el programa principal o
llamador.
Si un parámetro actual es pasado por referencia, este
parámetro no puede ser ni una constante, ni una expresión,
sino que debe ser una variable u objeto, ya que no pueden
modificarse los contenidos de una constante ni de una
expresión.
De todo esto se deduce que si no queremos que un método o
función altere el contenido de un parámetro actual, es decir,
de una variable del programa principal o invocador, debemos
realizar paso por valor.
Por el contrario, si queremos que un método o función altere
el valor de un parámetro actual tenemos que pasarlo por
referencia.



Ambas variables utilizan la misma memoria.
Los cambios afectan a la variable del código llamador.
[Optional] [ByRef] [ParamArray] Nombre AsTipoDato
Imports System.Console
Module ParametroReferencia
Sub Main()
Dim a As Integer=10
Dim b As Integer=20
prueba(a,b) „Parametros actuales o argumentos
Write(“El valor de a={0} y el de b={1}”,a,b)
End Sub
'Definición de una subrutina o procedimiento
Sub prueba(ByRef x As Integer, ByRef y As Integer) 'Param. Formales
x=x*100
y=y*100
End Sub
End Module


Los parámetros actuales(invocación) deben de
coincidir en el tipo de dato con los parámetros
formales(signatura del método).
Asociación entre los parámetros escritos en la
llamada y los escritos en la declaración del
procedimiento o función:
◦ Por posición
 Prueba (Importe, DiaHoy)
◦ Por nombre
 Prueba (Fecha:=DiaHoy, Cantidad:=Importe)






VB necesita que un método declare el tipo de dato del
valor que devuelve.
Los métodos pueden devolver tipos de datos primitivos
o tipos de datos de referencia.
Los métodos utilizan el operador return para devolver
un valor. Cuando el método es una Function debe
contener una sentencia return.
El tipo de dato del valor devuelto por la sentencia return
debe corresponder con el tipo de dato que el método
tiene que devolver; no se puede devolver un objeto
desde un método que fue declarado para devolver un
entero.
Cuando se devuelva un objeto, el tipo de dato del objeto
devuelto debe ser una subclase o la clase exacta
indicada.
Cuando se devuelva un tipo interface, el objeto
retornado debe implementar el interface especificado.

Varias versiones de un procedimiento (mismo
nombre),
pero
con
listas
de
parámetros
diferenciadas en su número, orden o tipo.
Overloads Sub Datos()
' código del procedimiento
' ............
End Sub
Overloads Sub Datos(ListaParametrosA)
' código del procedimiento
' ............
End Sub
Overloads Function Datos(ListaParametrosB) As TipoDatoRetorno
' código del procedimiento
' ............
End Function
public sub escribe()
For i as interger=1 To 10
Console.writeline(“HOLA MUNDO”)
Next
End Sub
public sub escribe(byVal n as Integer)
For i as interger=1 To n
Console.writeline(“HOLA MUNDO”)
Next
End Sub
public sub escribe(byRef frase as String, byVal n as Integer)
For i as interger=1 To n
Console.writeline(frase)
Next
End Sub
Descargar