Está en la página 1de 35

UNIVERSIDAD NACIONAL AGRARIA DE LA SELVA

TINGO MARA

FACULTAD DE INGENIERA EN INDUSTRIAS ALIMENTARIAS


DEPARTAMENTO ACADMICO DE CIENCIAS, TECNOLOGA E
INGENIERA DE ALIMENTOS

CURSO: LENGUAJE DE PROGRAMACION

DOCENTE: ING. ROLDAN CARBAJAL, WILLIAMS

INTEGRANTES

CANALES VASQUEZ MARIA


ESPINOZA LUNA MARYORY
EGUSQUIZA SANTOS INDIRA
HUITRON RAMIREZ TABITA
MIRANDA VARGAS KARLA A.
PORTILLA CHAVEZ LUIS F.

TINGO MARA
PER

INTRODUCCION

El lenguaje de programacin utilizado es Visual Basic, por ser un lenguaje de


fcil aprendizaje y muy atractivo para programadores principiantes y expertos,
debido a la sencillez con que permite hacer programas para Windows.
En general los textos sobre Visual Basic estn orientados a lectores que han
programado en otros lenguajes, por lo cual se dedican a explican
detalladamente las caractersticas propias de este lenguaje la sintaxis,
controles, eventos, funciones, etc., sin

profundizar en la lgica de

programacin. Por otra parte, en su gran mayora la bibliografa sobre lgica de


programacin utiliza seudocdigo, o se orienta a otros lenguajes clsicos en la
enseanza de programacin, tales como Pascal. El objetivo es presentar
algunos conceptos bsicos de programacin utilizando Visual Basic, as como
tambin ejemplos que permitan una mejor comprensin terica.

I.

VARIABLES

Estas son utilizadas para almacenar valores que pueden cambiar durante la
ejecucin de un programa, existen 3 tipos de variables:
-Variables de objeto
-Variables de entorno
-Variables declaradas

I.1.

CARACTERSTICAS Y CONDICIONES

-Iniciar con una letra.


-No tener espacios.
-Su longitud no debe superar los 245 caracteres.
-Poseer un nombre nico dentro de su alcance.

I.2.

DECLARACIN DE VARIABLES EN VISUAL BASIC

Una variable se declara para especificar su nombre y sus caractersticas.


La instruccin de declaracin para variables es Instruccin Dim (Visual Basic).
Su ubicacin y contenido determinan las caractersticas de la variable.
Para las reglas de denominacin de variables y consideraciones, consulte
Nombres de elementos declarados (Visual Basic).
I.2.1. Niveles de declaracin
I.2.1.1.

Valor local y variables miembros

Una variable

local es

aquella

que

se

declara

dentro

de

un

procedimiento. Una variable miembro es un miembro de un tipo de Visual


Basic; se declara en el nivel de mdulo, dentro de una clase, estructura o
mdulo, pero no dentro de ningn procedimiento interno de esa clase,
estructura o mdulo.
I.2.1.2.

Variables compartidas y de instancias

La categora de una variable miembro, en una clase o estructura, depende


de que la variable est o no compartida. Si una variable se declara con la
palabra clave Shared, es una variable compartida, y existe en una nica copia
compartida por todas las instancias de la clase o estructura.

De lo contrario, es una variable de instancia, y se crea una copia


independiente de ella para cada instancia de la clase o estructura. Una copia
determinada de una variable de instancia slo est disponible en la instancia de
la clase o estructura en que se cre. Es independiente de una copia de la
variable de instancia en cualquier otra instancia de la clase o estructura.
I.2.2. Caractersticas de variables declaradas
El perodo de duracin de una variable representa el tiempo durante el cual
la variable est disponible para que pueda ser utilizada. En general, una
variable existe mientras el elemento que lo declara (como un procedimiento o
clase) siga existiendo. Si la variable no necesita seguir existiendo ms all de
la duracin de su elemento contenedor, no necesita hacer nada especial en la
declaracin. Si la variable debe seguir existiendo durante ms tiempo que su
elemento contenedor, puede incluir la palabra clave Static o Shared en su
instruccin Dim.
El mbito de una variable est formado por todo cdigo que puede hacer
referencia a la variable sin tener que calificar su nombre. El mbito de una
variable est determinado por la ubicacin en la que se haya declarado la
variable. El cdigo de una regin determinada puede utilizar las variables
definidas en dicha regin sin necesidad de especificar los nombres de las
variables. Para obtener ms informacin, vea mbito en Visual Basic.
El nivel de acceso de una variable es la extensin de cdigo que tiene
permiso para tener acceso a ella. El modificador de acceso (como Public
(Visual Basic) o Private (Visual Basic)) que utiliza en la instruccin Dim es
quien determina esto.
I.3.

DECLARAR EL TIPO DE DATOS.

La clusula As de la instruccin de declaracin permite definir el tipo de


datos o de objetos de la variable que se est declarando. Se puede especificar
cualquiera de los siguientes tipos para una variable:

Un tipo de datos bsico, como Boolean, Long o Decimal.

Un tipo de datos compuesto, como una matriz o una estructura.

Un tipo de objeto o clase, definido en su aplicacin o en otra aplicacin

Clase de .NET Framework, como Label o TextBox

Un tipo de interfaz, como IComparable o IDisposable

Puede declarar varias variables en la misma instruccin sin necesidad de


repetir el tipo de datos. En las instrucciones siguientes, las variables i, jyk se
declaran como tipo Integer, l y m como Long, y x e y como Single:
Dim i, j, k As Integer
' All three variables in the preceding statement are declared as Integer.
Dim l, m As Long, x, y As Single
' In the preceding statement, l and m are Long, x and y are Single.
Para obtener ms informacin acerca de tipos de datos, consulte Tipos de
datos en Visual Basic. Para obtener ms informacin sobre objetos,
consulte Objetos y clases de Visual Basic y Programming with Components.
I.4.

INFERENCIA DE TIPO DE VARIABLE LOCAL

La inferencia de tipos se usa para determinar los tipos de datos de las


variables locales que se han declarado sin ninguna clusula As. El compilador
deduce el tipo de la variable a partir del tipo de la expresin de
inicializacin. Esto permite declarar variables sin especificar un tipo de forma
explcita. En el ejemplo siguiente, num1 y num2 estn fuertemente tipiados
como enteros.
Public Sub inferenceExample()
' Using explicit typing.

Dim num1 As Integer = 3


' Using local type inference.
Dim num2 = 3
End Sub
Si desea utilizar la inferencia de tipo de variable local, Option Infer debe
estar establecido en On. Para obtener ms informacin, vea Inferencia de tipo
de variable local (Visual Basic) y Option Infer (instruccin).
Caractersticas de variables declaradas
El perodo de duracin de una variable representa el tiempo durante el cual
la variable est disponible para que pueda ser utilizada. En general, una
variable existe mientras el elemento que lo declara (como un procedimiento o
clase) siga existiendo. Si la variable no necesita seguir existiendo ms all de
la duracin de su elemento contenedor, no necesita hacer nada especial en la
declaracin. Si la variable debe seguir existiendo durante ms tiempo que su
elemento contenedor, puede incluir la palabra clave Static o Shared en su
instruccin Dim.
El mbito de una variable est formado por todo cdigo que puede hacer
referencia a la variable sin tener que calificar su nombre. El mbito de una
variable est determinado por la ubicacin en la que se haya declarado la
variable. El cdigo de una regin determinada puede utilizar las variables
definidas en dicha regin sin necesidad de especificar los nombres de las
variables. Para obtener ms informacin, vea mbito en Visual Basic.
El nivel de acceso de una variable es la extensin de cdigo que tiene
permiso para tener acceso a ella. El modificador de acceso (como Public
(Visual Basic) o Private (Visual Basic)) que utiliza en la instruccin Dim es
quien determina esto.
I.1.

EJERCICIO
Realizar una declaracin de variables para las siguientes propuestas de

programas.
a) Un programa que muestra un mensaje de bienvenida.

b) Un programa que nos pide nuestra edad y nos muestra el ao en que


nacimos.
c) Un programa que nos muestra el valor medio de tres magnitudes.
d) Un programa que trabaja con: tres contadores para bucles, tres valores de
tensin en una viga (de magnitud no conocida), valores de longitud de la viga,
canto y ancho y un valor interruptor que permite o impide que se muestren
resultados.
SOLUCIN
a) Dim mensaje As String. Tambin es vlida la expresin abreviada Dim
mensaje$.
b) Dim edad As Integer. Tambin podemos usar la expresin abreviada Dim
edad%.
Se podra definir otra variable llamada aonacimiento segn el programador lo
estime oportuno o no.
c) Dim magnitud1!, magnitud2!, magnitud3 As Single
Dim media As Single
Hemos utilizado el tipo Single para cubrirnos las espaldas. No sabemos
con qu tipo de valores vamos a trabajar y por ello cogemos un tipo de
variables bastante amplio como es el Single. Preferimos no coger Double si no
es estrictamente necesario.
Hemos utilizado dos lneas pero slo un tipo de variable Por qu? El
programador ordena la declaracin de variables como estime ms conveniente.
En este caso ordenamos valores para el clculo en una lnea y resultados
en otra. Resulta ms fcil de leer y analizar que estando todo en una sola lnea.
d) Dim i%, j%, k As Integer
Dim tension1!, tension2!, tension3 As Single
Dim largo!, canto!, ancho As Single
Dim Muestra resultados As Boolean.

Siempre ser preferible usar las expresiones tension1, tension2 y tension3


antes que t1, t2 y t3 que resultan ms confusas. Sin embargo, este tipo de
decisiones siempre quedan a criterio del programador.

1.5

CONTENIDO Y ASIGNACIN DE CONTENIDO A VARIABLES

Las normas para asignar contenido a variables sern las indicadas en el


curso teniendo en cuenta que de forma general usaremos estas equivalencias.
Nota: las variables "todo en uno" se denominan Variant en algunas versiones
mientras que en otras el tipo Variant no existe y su equivalente sera el tipo
Object.
Ejemplos de asignacin de contenidos son estos:
Declaracin

Ejemplo asignacin
contenidos

Dim A As Integer

A = 123

Dim A As Single

A = - 3323.57

Dim A As String

A = Hay que mejorar

Dim A As String

A = 123 coches

Dim A As String

A = Son 35,37 euros

Dim Salario As Integer

A = 30500

Dim Salario As Single

A = 30500

Dim Salario As String

A = Se asignarn 30500 euros

A=5+2
Dim A%, B%, Suma%

B = 32
Suma = A + B

[Suma valdr

39]
A=5
B = 32
Dim A%, B%, C%, D%, E%

C=A*B

[C toma el valor 160]

D = A + C [D toma el valor 165]


E=D

Dim Agotamiento As Boolean

[E toma el valor 165]

Agotamiento = True

II. INFORMACIN GENERAL SOBRE LAS CONSTANTES


Una constante es un nombre significativo que toma el lugar de un
nmero o cadena que no cambia. Las constantes almacenan valores que,
como su nombre indica, permanecen iguales durante la ejecucin de una
aplicacin. Puede mejorar considerablemente la legibilidad del cdigo y facilitar
su mantenimiento mediante constantes. Utilcelas en cdigo que contiene
valores que reaparecen o que dependen de ciertos nmeros que son difciles
de recordar o que no tienen un significado evidente.
2.1 CMO CREAR Y UTILIZAR CONSTANTES.Visual Basic contiene varias constantes predefinidas, que se utilizan
principalmente para operaciones de impresin y presentacin. Puede crear
tambin sus propias constantes con la instruccin Const, utilizando las mismas
directrices que en la creacin de nombres de variables. Si Option Strict es On,
debe declarar el tipo de constante explcitamente.
El mbito de una constante, que es el conjunto de todo el cdigo que puede
hacer referencia a ella sin calificar su nombre, es igual al de una variable
declarada en la misma ubicacin. Para crear una constante que exista en el
mbito de un procedimiento concreto, declrela dentro de dicho procedimiento.

Para crear una constante disponible en toda la aplicacin, declrela con la


palabra clave Public en la seccin de declaraciones de la clase.
Las constantes que se utilizan en el cdigo pueden ser definidas por el modelo
de objeto para los controles o componentes con los que trabaja o definidas por
el usuario, es decir, creadas por ste.
2.2 CONSTANTES EN TIEMPO DE COMPILACIN Y EN TIEMPO DE
EJECUCIN. Una constante en tiempo de compilacin se calcula cuando se compila el
cdigo, mientras que una constante en tiempo de ejecucin slo se puede
calcular mientras la aplicacin est en ejecucin. Una constante en tiempo de
compilacin tendr el mismo valor cada vez que se ejecuta una aplicacin,
mientras que una constante en tiempo de ejecucin puede cambiar cada vez.
Las constantes en tiempo de compilacin se requieren para casos como lmites
de matriz, expresiones de caso o inicializadores de enumerador.

2.2.1 En esta seccin


Definicin

Trmino

Cmo: Declarar una


constante (Visual
Basic)

Explica cmo utilizar la instruccin Const para


declarar una constante y establecer su valor; al
declarar una constante, asigna un nombre
significativo al valor.

Constantes definidas
por el usuario (Visual
Basic)

Describe la manera de crear sus propias


constantes, informacin sobre mbito y sobre
cmo evitar las referencias circulares.

Tipos de datos
constantes y literales
(Visual Basic)

Proporciona informacin sobre cmo el compilador


de Visual Basic inicializa las constantes cuando
Option Explicit est desactivada.

Cmo: Agrupar valores


de constantes
relacionadas (Visual
Basic)

Muestra cmo se agrupan valores de constantes


que estn relacionados.

2.2.2 Referencia

Definicin

Trmino

Constantes y enumeraciones
(Visual Basic)

Muestra las constantes predefinidas por


Visual Basic.

Instruccin Const (Visual Basic)

Describe la instruccin Const y su uso.

Option Strict (Instruccin)

Describe la instruccin Option Strict y


su uso.

lll. ESTRUCTURA ALTERNATIVA


Las estructuras alternativas permiten a la computadora elegir los cursos
de accin a seguir en un programa. En las estructuras alternativas se evala
una condicin y dependiendo del resultado se seleccionan las instrucciones a
ejecutar. Se puede elegir entre dos o ms alternativas posibles
Antes de comenzar a estudiar los conceptos relacionados, es importante
aprender a construir expresiones lgicas, usando operadores relacionales y
operadores lgicos. Este tipo de expresiones permite definir las condiciones
que utilizan las estructuras de decisin.
3.1 OPERADORES RELACIONALES
Son operadores que permiten hacer comparaciones entre constantes y
variables. En el cuadro 3.1 se muestran los operadores relacionales usados en
Visual Basic, su significado y el equivalente en notacin matemtica.
Cuadro 3.1 Operadores relacionales

3.2 OPERADORES LOGICOS

Los operadores lgicos bsicos son AND, OR y NOT. Estos operadores


se aplican a operadores lgicos, que son variables o constantes que pueden
tener el valor verdadero o falso, pero no ambos a la vez.

3.3 EXPRESIONES LOGICAS


Este tipo de expresiones se forma al combinar variables, constantes,
operadores relacionales y operadores lgicos. Se llaman expresiones lgicas
porque al ser evaluadas, el resultado siempre ser verdadero o falso
Cuadro 3.2 Ejemplos de expresiones lgicas simples

3.4 ESTRUCTURA ALTERNATIVA SIMPLE


Esta estructura permite evaluar una expresin lgica y en funcin de
dicha evaluacin ejecutar una accin (o composicin de acciones) o no
ejecutarla; tambin se la suele denominar SI-ENTONCES. A continuacin se
muestra la notacin algortmica y FORTRAN para la estructura alternativa
simple.

La figura 3.1 ilustra el diagrama de flujo de este tipo de instruccin

Figura 3.1 Diagrama de flujo de una estructura de decisin simple

Si expresin lgica es verdadera, se ejecutaran las instrucciones. Si es


falsa, no sucede nada y la ejecucin del programa continua en las instrucciones
que van despus de la estructura alternativa simple.
La sintaxis de una estructura de decisin simple en Visual Basic es la siguiente
If expresin lgica then
Una o varias instrucciones
End if
Ejemplo 1: programa que calcula el salario neto de un trabajador, teniendo
como entrada su salario base y el nmero de hijos. Al trabajador se le
descuenta al 5% de su salario base por concepto de seguro social, pero si tiene
ms de dos hijos se le pagan 50.000 Bs. Adicionales.
Option explicit
Sub main ( )
Dim sb as single, nh as byte, sn as single
Sb = inputBox (Salario base: )
nh = inputBox (nmero de hijos )
sn = sb 0.05 * sb

if nh > 2 then
sn = sn + 50000
end if
msgBox (Salario Neto = & sn )
end sub
3.5 ESTRUCTURA ALTERNATIVA DOBLE
La estructura alternativa doble es similar a la anterior con la salvedad de
que en este tipo de estructura se indican acciones no slo para la rama
verdadera sino tambin para la falsa; es decir, en caso de la expresin
lgica evaluada sea cierta se ejecutan una accin o grupo de acciones y en
caso de que sea falsa se ejecuta un grupo diferente.
En la figura 3.2 se presenta el diagrama de flujo de este tipo de
estructura de programacin. En el mismo, se observa claramente como la
computadora debe elegir entre dos cursos de accin.

Figura 3.2 Diagrama de flujo de una estructura de decisin doble

En Visual Basic una estructura de decisin doble se escribe de la siguiente


manera:

If (expresin lgica) then

Una o varias instrucciones


Else
Una o varias instrucciones
End if

Si la expresin lgica es verdadera se ejecutan las instrucciones que


estn a continuacin de Then, y si la expresin es falsa, se ejecutan las
instrucciones que estn despus de Else.
Ejemplo 2: programa que calcula el promedio de un estudiante dadas tres
calificaciones. Si el promedio es mayor o igual que 9.5 se debe mostrar un
mensaje que indique APROBADO. En caso contrario, el mensaje debe ser
REPROBADO
Option explicit
Sub main ( )
Dim C1 as single, C2 as single, C3 as single, prom as single
C1 = inputBox (Introduzca la calificacin 1)
C2 = inputBox (Introduzca la calificacin 2)
C3 = inputBox (Introduzca la calificacin 3)
Prom = (C1 + C2 + C3) / 3
sn = sn + 50000
if Prom > = 9.5 then
msgBox (Promedio = & prom & Chr (10) & Chr(10) & APROBADO )
else
msgBox (Promedio = & prom & Chr (10) & Chr(10) & APROBADO )
end if
end sub

3.6 ESTRUCTURA MULTIALTERNATIVA

Esta estructura evala una expresin que pueda tomar n valores


(enteros, caracteres y lgicos pero nunca reales) y ejecuta una accin o grupo
de acciones diferente en funcin del valor tomado por la expresin selectora.

Figura 3.3 Diagrama de flujo de una estructura multialternativa

Visual Basic permite escribir las estructuras multialternativas haciendo uso de


estructuras If then else, tal como se muestra a continuacin.
If (expresin lgica) then
Una o varias instrucciones
Else
If (expresin lgica) then
Una o varias instrucciones
Else
If (expresin lgica) then
Una o varias instrucciones
End if
End if
End if

IV. ESTRUCTURAS REPETITIVAS


Existen algoritmos cuyas operaciones se deben de ejecutar un nmero
repetido de veces. Esto es, las instrucciones son las mismas pero los datos
varan. El conjunto de instrucciones que se ejecutan repetidamente se llama

ciclo. Un ciclo tiene un nmero finito de veces de ejecucin. Un ciclo tiene una
condicin para seguir ejecutndose o para terminar. Esto es, todo ciclo tiene
una condicin de fin de ejecucin. En los algoritmos que se conoce el nmero
de veces que se repite el ciclo, se dice que se establece a priori. Esto significa
que el nmero de veces de repeticin no depende de los datos. Este tipo de
algoritmo se le llama repetir n veces el ciclo donde n es un nmero conocido.
Cuando no se conoce el nmero de veces a repetir el ciclo, esto es, que no se
puede establecer a priori el nmero de veces que ha de ejecutarse el ciclo sino
que depende del tipo de datos y de las instrucciones de repeticin, el algoritmo
se ejecuta mientras sucede una condicin de ejecucin.
En muchas ocasiones se conoce de antemano el nmero de veces que
se desean ejecutar las acciones o instrucciones de un bucle. En estos casos en
los que el nmero de iteraciones es fijo, se debe usar la estructura desde/para.
Por ejemplo, ingresar 10 notas, 100 nmeros, etc. La representacin grfica de
la estructura repetitiva desde/para en un Diagrama de Flujo es el siguiente:

Figura N 4 Diagrama de flujo de una estructura repeitiva

4.1.

REPETICIN

CONTROLADA POR

CONTADOR

O BUCLE DO

ITERATIVO
Esta estructura ejecuta un bloque de sentencias un nmero especfico de
veces. Se construye de la siguiente manera:
DO ndice = inicio, fin [, paso]

sentencia_1
sentencia_2

Cuerpo

END DO
-

ndice es una variable entera que se usa como contador del bucle.
Inicio, fin y paso son cantidades enteras y constituyen los parmetros del
ndice del bucle. Controlan los valores de la variable ndice durante la

ejecucin. Pueden ser constantes, variables o expresiones enteras.


Las sentencias entre la sentencia DO y la sentencia END DO se llaman
cuerpo del bucle. Para mejorar la lectura del cdigo es recomendable

endentar el cuerpo del bucle con dos o ms espacios.


Inicio marca el valor inicial que toma ndice cuando comienza la

ejecucin del bucle DO.


Fin marca el valor final que puede tomar ndice.
Paso indica el incremento con que ndice es modificado despus de
cada ejecucin del bucle DO. Es un parmetro opcional, cuando no
aparece, su valor por defecto es 1. Puede ser positivo o negativo.

4.1.1. Precauciones
-

No est permitido modificar el valor de ndice en el cuerpo del bucle. La


mayora de los compiladores Fortran suelen reconocer este problema y
generan un error en tiempo de compilacin si se intenta modificar su
valor. Caso de que el compilador no detectara este problema, se podra

dar el caso de un bucle infinito.


La nica manera de parar la ejecucin de un programa cuando ste

contiene un bucle infinito es matar el programa pulsando control +C.


En muchos computadores, el valor de ndice despus de la finalizacin
normal del bucle DO, est definido por el siguiente valor asignado como
resultado del incremento. Esto es lo que ocurre en el compilador de la
Salford FTN95. Sin embargo, su valor es indefinido oficialmente en el
Fortran estndar, de modo que algunos compiladores pueden producir
resultados diferentes. Por lo tanto, no conviene nunca usar el valor del

ndice de un bucle en las siguientes sentencias del programa Fortran.


Si paso toma el valor 0 se puede dar un bucle infinito.

4.2. REPETICIN CONTROLADA POR EXPRESIN LGICA O BUCLE


WHILE
-

En un bucle WHILE, un bloque de sentencias se ejecuta un nmero


indefinido de veces, hasta que se satisface alguna condicin establecida
por el usuario, o dicho de otro modo, hasta que una cierta expresin

lgica toma el valor .TRUE.


La sintaxis general de esta estructura es:

DO
sentencia_1
[sentencia_2]

IF (expresin lgica) EXIT


sentencia_3
[sentencia_4]

END DO
-

El bloque de sentencias entre la sentencia DO y la sentencia END DO


se ejecuta indefinidamente mientras expresin lgica es falsa. Cuando
expresin lgica se hace cierta; entonces, se ejecuta la palabra
reservada EXIT cuyo efecto es transferir el control fuera del bucle DO, a

la primera sentencia siguiente a END DO.


Un bucle WHILE puede contener varias sentencias EXIT, generalmente,
formando parte una sentencia IF o bloque IF. Sin embargo, no conviene
usar ms de uno por bucle WHILE, en aras de construir programas bien
estructurados. De esta manera, cada bucle WHILE tendr un nico
punto de entrada, la sentencia DO, y un nico punto de salida, la
sentencia EXIT.

Precauciones: si expresin lgica nunca se hace cierta, estaremos en un


bucle infinito.

4.3. BUCLE DO WHILE


-

En Fortran 90/95 hay otra forma alternativa de bucle WHILE, el llamado

bucle DO WHILE.
Su sintaxis general es:
DO WHILE (expresin lgica)
sentencia_1
[sentencia_2]
Cuerpo

END DO
Esta estructura funciona de la siguiente manera:
Si expresin lgica es cierta se ejecuta el cuerpo del bucle y el
control vuelve a la sentencia DO WHILE. Estructuras de control

repetitivas. Bucles 60
Si expresin lgica es cierta an, se ejecuta otra vez el cuerpo del

bucle y el control vuelve a la sentencia DO WHILE.


El proceso anterior se repite hasta que expresin lgica se hace
falsa, en cuyo caso el control pasa a ejecutar la primera sentencia

siguiente a END DO.


El bucle DO WHILE es un caso especial del bucle WHILE, en el
que el testeo de salida ocurre siempre en el cabecero del bucle.

4.4. SENTENCIAS EXIT Y CYCLE


-

En las secciones anteriores se ha visto que la sentencia EXIT produce la

salida inmediata de un bucle.


Otra sentencia que permite controlar la ejecucin de un bucle es la

sentencia CYCLE.
CYCLE detiene la ejecucin de la iteracin actual y devuelve el control a

la cabecera del bucle continuando su ejecucin en la iteracin siguiente.


Ambas sentencias pueden usarse tanto en bucles WHILE como en

bucles iterativos.
Ejemplo de la sentencia CYCLE.
Si en el cdigo Fortran anterior construido con bucle DO queremos
mostrar los tres ltimos mensajes de error slo a partir del tercer intento:

INTEGER :: num,cont=0
DO

WRITE (*,*)
WRITE (*,*) "Dame un numero de 0 a 10"
READ (*,*) num
cont=cont+1
IF (num>=0.AND.num<=10) EXIT
IF (cont<3) CYCLE
WRITE (*,*) "Has tecleado",num
WRITE (*,*) "El numero debe estar entre 0 y 10"
WRITE (*,*) "Vuelve a intentarlo"
END DO
WRITE (*,*) "*****ENHORABUENA*****"
WRITE (*,*) "lo conseguiste en",cont,"veces"

4.5. BUCLES CON NOMBRE


-

Es posible asignar un nombre a un bucle.


La sintaxis general de un bucle WHILE con un nombre aadido es:

[nombre:] DO
sentencia_1
[sentencia_2]

[ IF (expresin lgica) CYCLE [nombre]]


[sentencia_3]

IF (expresin lgica) EXIT [nombre]


[sentencia_4]


END DO [nombre]
-

La sintaxis general de un bucle iterativo con un nombre aadido es:

[Nombre:] DO indice = inicio, fin [, paso]


sentencia_1
[sentencia_2] Cuerpo

[ IF (expresin_lgica) CYCLE [nombre]]


[sentencia_4]

END DO [nombre]
-

En ambas estructuras, el nombre del bucle debe ser un identificador

vlido.
Es opcional poner nombre a un bucle, pero si se pone, ste debe

repetirse en la sentencia END DO.


Es opcional poner nombre a las sentencias CYCLE y EXIT, pero si se

pone, ste debe ser el mismo que el de la sentencia DO.


La utilidad de los nombres en los bucles aumenta a medida que lo hace
el tamao de los mismos. Por un lado, ayuda al usuario a identificar
rpidamente las sentencias que pertenecen un bucle complicado y
extenso y, por otro, ayuda al compilador a afinar la localizacin de las
sentencias de error.

4.6. BUCLES ANIDADOS DENTRO DE ESTRUCTURAS IF Y VICEVERSA


-

Es posible anidar bucles dentro de estructuras IF o tener estructuras IF

dentro de bucles.
Si un bucle se anida dentro de una estructura IF, el bucle debe
permanecer completamente dentro de un nico bloque de cdigo de la

estructura IF.
Ejemplo:
Externo: IF (x<y) THEN


Interno: DO i=1,5
END DO interno
ELSE

END IF externo

V. SENTENCIAS DE BIFURCACIN
Todo programa se ejecuta de manera secuencial, inicia en una lnea de
cdigo y termina en alguna otra lnea. Se escriben las lneas de cdigo unas a
despus de otras, y son evaluadas, igualmente, una despus de otra. Cada
sentencia a ejecutar puede ser de uno de dos tipos: las sentencias
secuenciales y las sentencias de bifurcacin.
Por sentencias de bifurcacin se entienden aquellas que permiten
cambiar el rumbo del flujo del programa el ejecutarse el cdigo, al aparecer una
interseccin, permitiendo tomar un camino u otro segn sea necesario.
Las sentencias de bifurcacin incondicional (GOTO) pasan el control a
una sentencia marcada con la etiqueta indicada en la sentencia incondicional,
saltndose as las sentencias que hay entre ella y la sentencia a la cual se
bifurca. Sin embargo el uso de esta sentencia en programacin estructurada
est prcticamente prohibido, y solo en casos muy especiales los
programadores experimentados se ven en la necesidad de incluirla de manera
moderada, ya que un programador principiante e inexperto puede enredar y

afectar gravemente el funcionamiento del programa, por ello se les obliga a


prescindir de ellas.
La forma general o sintaxis de esta sentencia es:
GOTO etiqueta
Por ejemplo supongamos una serie cualquiera de sentencias:
Sentencia1
Sentencia2
Sentencia3
GOTO A
B. Sentencia4
Sentencia5
A. Sentencia6
Sentencia7
En

este

ejemplo,

despus

de

ejecutarse

la

sentencia3

nos

encontramos con la sentencia GOTO A, la cual nos permite bifurcar hasta la


lnea donde se encuentra la etiqueta A, y ejecuta la sentencia6. Partiendo del
supuesto que en algn lugar del programa, se ejecuten alguna vez las
sentencias incluidas desde sentencia4.
Es importante haber aprendido a escribir condiciones, ya que son las
que permiten ejecutar o no el bloque de cdigo correspondiente a la sentencia
de control.
5.1 Operaciones lgicas
En el lenguaje C:
Una expresin es falsa si su valor es cero; verdadera si es diferente de
cero.
Si el resultado de una operacin lgica es falso, entonces la expresin
toma valor cero; uno en caso contrario.

El and debe estar implementado con cortocircuito. Es decir si el primer


operando es falso el resultado debe ser falso.
Para la implementacin en assembler, se requieren instrucciones de
bifurcacin:
La instruccin de mquina:
beq <reg1>,<reg2>, rtulo
Se interpreta segn:
if ( reg1 == reg2) PC = rtulo; else PC = PC +4;
Donde PC es un registro interno del procesador que apunta a la palabra
donde se encuentra la instruccin beq.

Entonces si los registros tienen

contenidos iguales, la prxima instruccin que se ejecuta es la ubicada en la


direccin simblica rtulo. Se bifurca la secuencia de acciones del programa.
Tambin se requiere un salto incondicional a un rtulo.
La macro instruccin:
b rtulo
se traduce a la de mquina:

j rtulo

que se interpreta como un salto incondicional a la direccin simblica de


una instruccin.
El lcc genera cdigo empleando el stack para la evaluacin de
expresiones, el programador assembler puede optimizar el cdigo mediante el
empleo de registros temporales.
-

Alternativa.

La alternativa escrita en C:
La instruccin de mquina: bifurca a rtulo si el registro es mayor o igual
a cero (bgez) puede implementar un salto incondicional si se elige el registro
con la constante cero, de este modo siempre se cumplir la condicin.

Programacin de condiciones.
Empleando Bifurcaciones y Saltos.
Basados en slt y beq.
a) slt r1, r2, r3
Cuya interpretacin es:

if (r2<r3) r1=1; else r1=0;

Y tambin, la lgicamente equivalente: if ( r2>=r3) r1=0; else r1=1;


b) beq r2, r3, rtulo
Usar sltu si los nmeros son naturales. (Sin signo)
Usar slti para comparar con constantes con signo.
Usar sltiu para comparar con constantes sin signo (naturales).
Obviamente las comparaciones de igualdad o desigualdad de dos
registros se traducen directamente, empleando beq y bne.

Veremos a

continuacin la implementacin de comparaciones menor y mayor o igual, en


base a slt y beq.
Veremos la generacin de otras condiciones, pero slo describiremos la
instruccin inicial, ya que el resto del cdigo es idntico.
Para programar empleando instrucciones de mquina, la estrategia
entonces es bifurcar al else.
Se han empleado los smbolos: else y endif para hacer referencia a las
direcciones donde se debe saltar o bifurcar. Estos nombres debe elegirlos el
programador, y ojal sean de ayuda al elaborar el cdigo.
Debido a que se dispone de bifurcacin por alguna condicin y tambin
la bifurcacin por el complemento de la condicin; y que adems puede
efectuarse diferentes elecciones para
comparacin (slt),

los operandos en la instruccin de

el segmento de cdigo anterior puede escribirse de

diferentes maneras.
Direccionamiento. Referencias en saltos y bifurcaciones.

La directiva (instruccin hacia el assembler) .text

le comunica al

ensamblador que lo que viene a continuacin son instrucciones.


La directiva .globl establece una direccin como global, sta podr ser
accedida desde otros mdulos assembler. En el lenguaje C, se emplea el
calificador extern, para especificar que una funcin (direccin) ha sido definida
como global en otro mdulo.

Main, arriba y abajo son direcciones simblicas. El programador emplea


smbolos para las direcciones (rtulos) de memoria donde se encuentran
almacenadas las instrucciones. .text .globl main
main: beq $t1, $t2, abajo
arriba: add $t1, $t1, $t1 addi $t2, $t3, 5
abajo: beq $t1, $t2, arriba
j arriba
j main # para repetir la secuencia
El ejemplo muestra referencias hacia delante (salto hacia instrucciones
que estn cargadas en direcciones mayores de la memoria que la que se est
ejecutando) y hacia atrs (el caso del salto hacia el rtulo arriba).
El assembler provee mecanismos para completar los campos binarios de
los saltos y bifurcaciones.
Para tal fin va incorporando los smbolos que aparecen en una tabla, en
la cual se asocia la calidad del smbolo (si est en el mdulo, o si es externo),
con la direccin que le corresponde (si es que la conoce, en caso de
referencias hacia delante no la conoce; y si no la conoce lo incorpora en la
tabla como una referencia no satisfecha).
Para ir colocando direcciones en la tabla, es preciso conocer la direccin
inicial de la primera instruccin (esto puede establecerse mediante la directiva
de origen), y el largo de la instruccin que se est ensamblando.

Un procedimiento habitual es efectuar una primera pasada de lectura del


cdigo, en la cual no se ensambla, slo se calculan direcciones y se va
llenando la tabla, de este modo todos los smbolos locales al mdulo quedan
con sus direcciones, excepto los externos. Luego se efecta una segunda
pasada, en la que va generando el cdigo binario de las instrucciones.
Cuando se emplean bibliotecas o diferentes mdulos, se traduce el texto
assembler a un formato objeto, que en forma binaria contiene los cdigos de
operacin y todos los campos que han podido calcularse, estableciendo algn
tipo de marcas en campos que an no pueden llenarse porque corresponden a
smbolos externos; adems de esto le agrega la tabla de smbolos del mdulo.
El ligador (linker) carga todos los mdulos objeto, le adiciona los segmentos de
cdigo de funciones de biblioteca, y genera una sola tabla de smbolos, con las
tablas que vienen en cada mdulo objeto, de esta forma puede llenar las
direcciones que le faltan en la tabla y luego reescribir los campos incompletos
de las instrucciones.
Cuando aparece el concepto multitarea, es decir tener varios programas
en ejecucin, tanto el assembler como el ligador se adaptaron para generar un
cdigo final que es relocalizable; es decir, no hay direcciones absolutas en el
cdigo binario. De este modo, el cargador (loader) puede depositar el programa
el cualquier lugar de la memoria, es el loader el que establece las direcciones
fsicas que tendrn finalmente las instrucciones de un programa. Esto, a su
vez demand disponer de repertorios con modos de direccionamiento que
permitan generar cdigos re localizables. El modo de direccionamiento relativo
a PC, para saltos y bifurcaciones tiene esta capacidad.
Si se agrega una instruccin assembler, todo el mdulo debe ser
reensamblado; ya que cambian los campos de direccionamiento de las
instrucciones de saltos y bifurcaciones. As tambin ocurre si se agregan datos,
o se cambia su tamao; todas las referencias a datos, a travs de las
instrucciones de carga y almacenamiento se modifican.
- Repeticiones.

While.

La sentencia bsica de iteracin en C es:


mientras se cumpla la condicin, realice accin.
while (v8 > v0) v0++;
Se traduce saltando al cdigo que efecta la evaluacin de la condicin;
y si el test resulta verdadero, se bifurca al bloque que realiza las acciones que
deben repetirse.
Las traducciones de los macros a secuencias de instrucciones de
mquina es similar al caso analizado antes.

Do while.

La repeticin de a lo menos una vez:


repita accin mientras condicin;
do {} while ();
Ntese que es ms compacto el primer cdigo para el while.
Cdigo que es ms eficiente, en velocidad, en caso que el bloque se
repita un nmero elevado de veces (ejecuta tres instrucciones por bloque).
Adems slo una bifurcacin por bloque, lo cual mejora la ejecucin en un
procesador segmentado (pipeline) como se ver ms adelante. La codificacin
correcta de la sentencia while implica el verificar que a medida que se efecta
el bloque repetitivo se vayan modificando algunas variables, de tal modo que la
condicin deje de ser cierta, en algn momento. Esto evita los lazos infinitos; si
por

mala

codificacin

se

producen,

el

procesador

queda

repitiendo

permanentemente una secuencia de instrucciones. Esto se denomina hang-up


(colgado).
En el caso del ejemplo, debe verificarse que R2 disminuye o que R4
aumente, con lo cual deja de ser verdadera la condicin (R2 >= R4), dando fin
a la repeticin.

For.

Una operacin frecuente es la repeticin de un bloque de instrucciones


un nmero conocido de veces, en los lenguajes de alto nivel suele
denominarse for. El lenguaje C, posee una construccin especial para el for,
que la hace muy poderosa. Se expresa segn:
for (inicio; condicin; reinicio) bloque;
Donde inicio, condicin y reinicio son expresiones.
Un ejemplo tpico de for es:

for ( i=0 ; i<N ; i++ ){ bloque de repeticin };

Se evala la condicin, luego se realiza el bloque y despus se modifica


la variable de control, y se vuelve a evaluar la condicin. De esta forma, si se
inicia la variable de control del for en cero (caso del ejemplo), despus de
realizado una vez el bloque, la variable se incrementa en uno; y as
sucesivamente. Es decir, en el momento de evaluar la condicin la variable de
control registra el nmero de veces que se ha realizado el bloque.
Si uno forma la expresin: (veces que se ha realizado el bloque)- (valor
de la variable de control al evaluar la condicin); podr verificar, mediante
razonamiento inductivo, que el valor de sta es cero. El hecho de que dicha
expresin no cambie su valor durante la repeticin permite denominarla:
invariante del lazo. Concepto que es til para determinar el nmero exacto de
veces que se desea repetir el bloque, y no una vez ms o una vez menos, si se
programa descuidadamente.
La correcta construccin, implica verificar que desde la expresin de
inicio y a medida que se ejecuta la expresin de reinicio se llegue a producir
que la condicin sea falsa.

Si nunca la condicin del for se hace falsa,

tendremos un lazo infinito.

VI. SENTENCIAS DE INVOCACIN


Las sentencias de invocacin permiten ceder el control a un conjunto de
sentencias agrupadas bajo un nombre (modulo), y una vez ejecutadas stas,
el control se devuelve a la sentencia que se sigue a la que la invoc.

Las sentencias de bifurcacin puede escribirse junto con las sentencias


secuenciales del programa principal (el caso de las condicionales) o puede
encontrarse en un mdulo por separado (el caso de los mdulos, los cuales
se llaman con la correspondiente sentencia de invocacin), pero igualmente,
sus lneas de cdigo se ejecutan secuencialmente, una tras otra, hasta que
termina el bloque, y luego se ejecuta la sentencia en orden secuencial dentro
del flujo normal del programa principal.
La caracterstica principal de las sentencias de control, es que dependen
de una condicin, la cual va a permitir ejecutar o no un bloque de cdigo en
particular. Estas se dividen en: Sentencias alternativas permiten implementar
la toma de decisiones dentro del programa, esto para elegir entre una u otra
accin a realizar. Las comunes se codifican de tal forma que al evaluar la
condicin, si se cumple (resultado verdadero) se realiza una accin y si no se
cumple (resultado falso) se realiza otra accin. Sentencias repetitivas
permiten repetir la ejecucin de un conjunto de sentencias, esto siempre y
cuando la condicin se cumpla.
6.1. SENTENCIA IF.
Representa una toma de decisin sencilla, es decir, si la condicin que
se evala es verdadera de realizan las instrucciones que pertenezcan al
bloque de IF y continuara con el resto del programa. Si la condicin es falsa
no entrara al bloque if y por consiguiente todas las instrucciones que estn en
el if no se ejecutaran. Cada vez que se utilice in if se debe finalizar con
ENDIF.

Su

If
instruccin

formato
(condicin)

ejecutarse

es:
then

si

la

condicin

es

verdadera

endif
Resto del programa
Si la condicin id es verdadera se realizara la instruccin y continua con el
resto del programa.
If (condicin) then instruccin de ejecutarse si la condicin es verdadera
Resto del programa

Si la condicin del if es verdadera y se quiere realizar solo una instruccin no


es necesario EndIf
If (condicin) then
Instruccin a ejecutarse si la condicin es verdadera
End If
Resto del programa
Se pueden anidar varios If es decir, uno entre otro para ingresar cada
vez al If mas interno es necesario que la condicin sea verdadera. Se debe
tener en cuenta que por bloque if que se realice debe existir una finalizacin
End If. Tambin se puede utilizar los operadores lgicos (and, ansalso. Or.
Oralso, xor, not) para concatenar varias condiciones.
If (condicin 1 and condicin 2) then
Instrucciones a ejecutarse si las condiciones son verdaderas
EndIf
Resto del programa
If (condicin or condicion2) then
Instrucciones a ejecutarse si algina de las condiciones es verdadera
Endif
Resto del programa
6.1.2. Sentencia if- else
Es una estructura compuesta que evala una condicin si esta
verdadera las instrucciones contenida en el bloque if, en caso contrario
ingresara por el bloque Ese. El programa solo tomara una de las alternativas y
continuara con el resto del programa. Su formato es el siguiente:
If (condicin) then
Instrucciones a ejecutarse si la condicin es verdadera
Else

Instruccin a ejecutarse si la condicin es falsa


Endif
Resto del programa
Como en el caso de la toma de decisiones if simple tambin se puede utilizar
los operadores lgicos y relaciones. Adems se pueden anidar varios if- else
Condicin 1

Condicin

False

Bloque 1 de
Sentencias

False
Condicin 2

True
Bloque 2 de
Sentencias

True

False

Bloque 1
True

Bloque 2

Bloque 3

La Figura 6.1 presenta esquemticamente ambas formas de representar estas sentencias:

6.1.3 Select case


Esta sentencia se asimila a If Else, aunque le agrega la posibilidad de evaluar
ms de una condicin al mismo tiempo y ejecutar una accin sobre cada una
de ellas.
Estructura Select case
Select case {expresin}
Case {este valor}
haz esto Case {otro valor}.
Case else
end select.
6.4. Sentencia DO... LOOP
Un Loop (bucle) repite la ejecucin de un conjunto de sentencias mientras una
condicin dada sea cierta, o hasta que una condicin dada sea cierta. La
condicin puede ser verificada antes o despus de ejecutarse el conjunto de
sentencias. Sus posibles formas son las siguientes:
Formato 1:

Do [{While/Until} condicion]
[Sentencias]

[Exit Do]

[Sentencias] Loop
Formato 2:
Do
[Sentencias]

[Exit Do]

[Sentencias]
Loop [{While/Until} condicion]

6.5 Sentencia WHILE WEND


Esta sentencia es otra forma de generar bucles que se recorren mientras se
cumpla la condicin inicial. Su estructura es la siguiente:
While condicion
[Sentencias]
Wend
Por ejemplo,
Counts = 0
While Counts < 20

Se inicializa la variable.
Se comprueba el valor de Counts.

Counts + 1 Se incrementa el valor de Counts. Wend

Counts =
Se

acaba el bucle cuando Counts > 19.

VII. REVISION BIBLIOGRAFCA


- Visual Basic Y Asp. Net/ Nivel Bsico/Intermedio- Carlos Alberto Vanegas,
Ingeniero De Sistemas Especialista En Ingeniera De Software, Maestra En
Ingeniera De Sistemas, Profesor, Universidad Distrital Francisco Jode De
Caldas Bogot, Enero 2011

- Visual Basic -Fernando O. Luna Coleccin Manuales Users Formato 17 X 24


-

Cm Pginas: 352.
Fundamentos

De

Programacin

En

Visual

Basic/

.sld.cu/galerias/doc/sitios/pdguanabo/curso_de_visual_basic_parte_1./ 11.11
am 16/04/2016
- Escuela Superior De Ingenieros Industriales Universidad De Navarra

Nafarroako - Javier Garca De Jaln, Jos Ignacio, Rodrguez Brazlez.


- Introduccin A La Programacin Estructurada M. C. Bertha Lpez Azamar
Profesor-Investigador
- Aprenda Visual Basic 6.0 Como Si Estuviera En Primero Escuela Superior De
Ingenieros Industriales Injineruen Goimailako Eskola UNIVERSIDAD DE
NAVARRA - NAFARROAKO UNIBERTSITATEA - Javier Garca De Jaln
- Jos Ignacio Rodrguez Brazlez

También podría gustarte