subrutinas y funciones leonel morales díaz ingeniería simple leonel@ingenieriasimple.com...

Post on 22-Apr-2015

17 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Subrutinas y Funciones

Leonel Morales Díaz

Ingeniería Simple

leonel@ingenieriasimple.com

Disponible en: http://www.ingenieriasimple.com/introprograCopyright 2008 by Leonel Morales Díaz – Ingeniería Simple.

Derechos reservados

Problema

Construya un programa que:Dibuje una tabla de 10x12Luego una tabla de 8x11Luego otra más de 15x10

3 tablas de diferente tamaño

¿Y si fueran 5? ¿7? ¿10?

Algoritmo Tradicional

Dibujar la tabla de 10x12Dibujar 10 filas

En cada fila dibujar 12 celdas

Dibujar la tabla de 8x11Dibujar 8 filas

En cada fila dibujar 11 celdas

Dibujar la tabla de 15x10Dibujar 15 filas

En cada fila dibujar 10 celdas

Programa

Dim i,j

Document.Write “<Table>”

For i = 1 To 10

Document.Write “<TR>”

For j = 1 To 12

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>“

Next

Document.Write “</Table><BR>”

Document.Write “<Table>”

For i = 1 To 8

Document.Write “<TR>”

For j = 1 To 11

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>“

Next

Document.Write “</Table><BR>”

Document.Write “<Table>”

For i = 1 To 15

Document.Write “<TR>”

For j = 1 To 10

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>“

Next

Document.Write “</Table>”

33

22

3 Iteraciones

Dim i,j

Document.Write “<Table>”

For i = 1 To 10

Document.Write “<TR>”

For j = 1 To 12

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>“

Next

Document.Write “</Table><BR>”

Document.Write “<Table>”

For i = 1 To 8

Document.Write “<TR>”

For j = 1 To 11

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>“

Next

Document.Write “</Table><BR>”

Document.Write “<Table>”

For i = 1 To 15

Document.Write “<TR>”

For j = 1 To 10

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>“

Next

Document.Write “</Table>”

11

33

22

Parámetros

11

Dim i,j

Document.Write “<Table>”

For i = 1 To 10

Document.Write “<TR>”

For j = 1 To 12

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>“

Next

Document.Write “</Table><BR>”

Document.Write “<Table>”

For i = 1 To 8

Document.Write “<TR>”

For j = 1 To 11

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>“

Next

Document.Write “</Table><BR>”

Document.Write “<Table>”

For i = 1 To 15

Document.Write “<TR>”

For j = 1 To 10

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>“

Next

Document.Write “</Table>”

Transformarlo a Subrutina

Sub DibujaTabla(Filas,Columnas)

‘Dibuja una tabla

Dim i,j

Document.Write “<Table Border=1>”

For i = 1 To Filas

Document.Write “<TR>”

For j = 1 To Columnas

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>”

Next

Document.Write “</Table><BR>”

End Sub

‘Llamadas a la subrutina

DibujaTabla 10,12

DibujaTabla 8,11

DibujaTabla 15,10

Subrutina

Sub DibujaTabla(Filas,Columnas)

‘Dibuja una tabla

Dim i,j

Document.Write “<Table Border=1>”

For i = 1 To Filas

Document.Write “<TR>”

For j = 1 To Columnas

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>”

Next

Document.Write “</Table><BR>”

End Sub

EncabezadoEncabezado

FinalFinal

Sub DibujaTabla(Filas,Columnas)

Nombre de la Nombre de la SubrutinaSubrutina

ParámetrosParámetros

Los Los parámetros son parámetros son como variablescomo variables

Subrutinas

Procedimientos o agrupaciones de instruccionesQue realizan una tarea concretaQue varía por los parámetros

Puede que no lleve parámetros

Tiene sus propias variables

En el código<HTML><Head><Title>Dibuja varias tablas con

subrutinas</Title></Head><Body><H1>En esta página se dibujan varias tablas mediante el

uso de subrutinas.</H1><Script Language=“VBScript”>Option Explicit

Sub DibujaTabla(Filas,Columnas)‘Dibuja una tablaDim i,jDocument.Write “<Table Border=1>”For i = 1 To Filas

Document.Write “<TR>”For j = 1 To Columnas

Document.Write “<TD>*</TD>”

NextDocument.Write “</TR>”

NextDocument.Write “</Table><BR>”

End Sub

‘Llamadas a la subrutina

DibujaTabla 10,12

DibujaTabla 8,11

DibujaTabla 15,10

</Script>

<P Align=Center>Este texto estará al final de las tres tablas</P>

</Body>

</HTML>

ej048.html

33

22

Parámetros

11

Dim i,j

Document.Write “<Table>”

For i = 1 To 10

Document.Write “<TR>”

For j = 1 To 12

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>“

Next

Document.Write “</Table><BR>”

Document.Write “<Table>”

For i = 1 To 8

Document.Write “<TR>”

For j = 1 To 11

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>“

Next

Document.Write “</Table><BR>”

Document.Write “<Table>”

For i = 1 To 15

Document.Write “<TR>”

For j = 1 To 10

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>“

Next

Document.Write “</Table>”

Más Parámetros

Sub DibujaTabla(Filas,Columnas,RellenoRelleno)

‘Dibuja una tabla

Dim i,j

Document.Write “<Table Border=1>”

For i = 1 To Filas

Document.Write “<TR>”

For j = 1 To Columnas

Document.Write “<TD>” & RellenoRelleno & “</TD>”

Next

Document.Write “</TR>”

Next

Document.Write “</Table><BR>”

End Sub

Más Parámetros

Sub DibujaTabla(Filas,Columnas,Relleno,BordeBorde)

‘Dibuja una tabla

Dim i,j

Document.Write “<Table Border=“ & BordeBorde & “>”

For i = 1 To Filas

Document.Write “<TR>”

For j = 1 To Columnas

Document.Write “<TD>” & Relleno & “</TD>”

Next

Document.Write “</TR>”

Next

Document.Write “</Table><BR>”

End Sub

Múltiples Llamadas

Sub DibujaTabla(Filas,Columnas)

‘Dibuja una tabla

Dim i,j

Document.Write “<Table Border=1>”

For i = 1 To Filas

Document.Write “<TR>”

For j = 1 To Columnas

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>”

Next

Document.Write “</Table><BR>”

End Sub

‘Llamadas múltiples

Dim i,j

j = 3

For i = 1 To 10

DibujaTabla i,j

j = j + 5

Next

ej049.html

Múltiples Llamadas

Sub DibujaTabla(Filas,Columnas)

‘Dibuja una tabla

Dim i,j

Document.Write “<Table Border=1>”

For i = 1 To Filas

Document.Write “<TR>”

For j = 1 To Columnas

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>”

Next

Document.Write “</Table><BR>”

End Sub

‘Llamadas múltiples

Dim i,j

j = 3

For i = 1 To 10

DibujaTabla i,j

j = j + 5

Next

ej049.html

Múltiples Llamadas

Sub DibujaTabla(Filas,Columnas)

‘Dibuja una tabla

Dim i,j

Document.Write “<Table Border=1>”

For i = 1 To Filas

Document.Write “<TR>”

For j = 1 To Columnas

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>”

Next

Document.Write “</Table><BR>”

End Sub

‘Llamadas múltiples

Dim i,j

j = 3

For i = 1 To 10

DibujaTabla i,j

j = j + 5

Next

Diferente ÁmbitoDiferente Ámbitoej049.html

Múltiples Llamadas

Sub DibujaTabla(Filas,Columnas)

‘Dibuja una tabla

Dim i,j

Document.Write “<Table Border=1>”

For i = 1 To Filas

Document.Write “<TR>”

For j = 1 To Columnas

Document.Write “<TD>*</TD>”

Next

Document.Write “</TR>”

Next

Document.Write “</Table><BR>”

End Sub

‘Llamadas múltiples

Dim i,j

Document.Write “<Center><Table Border=1 Width=50%>”

For i = 1 To 10

Document.Write “<TR>”

For j = 1 To 5

Document.Write “<TD Align=Center Valign=Middle><BR>”

DibujaTabla 3,3DibujaTabla 3,3

Document.Write “</TD>”

Next

Document.Write “</TR>”

Next

Document.Write “</Table></Center>”

ej050.html

Convertir a Binario

1. Se divide la entrada entre 2

2. Si es el primer residuo solo se coloca

3. De lo contrario1. Se coloca el residuo a la izquierda del residuo anterior

4. Si el resultado es mayor o igual que 21. Tomarlo como entrada y volver a paso 1

5. De lo contrario1. Colocar el resultado a la izquierda del residuo anterior

2. Fin del algoritmo

Subrutina

1. Se divide la entrada entre 22. Si es el primer residuo solo se

coloca3. De lo contrario

1. Se coloca el residuo a la izquierda del residuo anterior

4. Si el resultado es mayor o igual que 2

1. Tomarlo como entrada y volver a paso 1

5. De lo contrario1. Colocar el resultado a la

izquierda del residuo anterior2. Fin del algoritmo

¿Nombre?

¿Parámetros?

¿Variables locales?

Subrutina

1. Se divide la entrada entre 22. Si es el primer residuo solo se

coloca3. De lo contrario

1. Se coloca el residuo a la izquierda del residuo anterior

4. Si el resultado es mayor o igual que 2

1. Tomarlo como entrada y volver a paso 1

5. De lo contrario1. Colocar el resultado a la

izquierda del residuo anterior2. Fin del algoritmo

Sub CambiaBase(UnNumero,LaBase)Dim Resu,Resi,SalidaResu = UnNumero\LaBaseResi = UnNumero Mod LaBaseSalida = “” & ResiDo While Resu >= LaBase

Resi = ResuResu = Resu\LaBaseResi = Resi Mod LaBaseSalida = Resi & Salida

LoopSalida = Resu & SalidaDocument.Write “<P>Salida: “ & Salida & “</P>”

End Sub

ej051.html

Funciones

TienenNombreParámetrosVariables locales Igual que una subrutine

Devuelven un valorA = F(X,Y)

Comparación

Sub CambiaBase(UnNumero,LaBase)

Dim Resu,Resi,Salida

Resu = UnNumero\LaBase

Resi = UnNumero Mod LaBase

Salida = “” & Resi

Do While Resu >= LaBase

Resi = Resu

Resu = Resu\LaBase

Resi = Resi Mod LaBase

Salida = Resi & Salida

Loop

Salida = Resu & Salida

Document.Write “<P>Salida: “ & Salida & “</P>”

End Sub

Function CambiaBase(UnNumero,LaBase)

Dim Resu,Resi,Salida

Resu = UnNumero\LaBase

Resi = UnNumero Mod LaBase

Salida = “” & Resi

Do While Resu >= LaBase

Resi = Resu

Resu = Resu\LaBase

Resi = Resi Mod LaBase

Salida = Resi & Salida

Loop

Salida = Resu & Salida

CambiaBase = SalidaCambiaBase = Salida

End Function

Llamadas a Funciones

Function CambiaBase(UnNumero,LaBase)

Dim Resu,Resi,Salida

Resu = UnNumero\LaBase

Resi = UnNumero Mod LaBase

Salida = “” & Resi

Do While Resu >= LaBase

Resi = Resu

Resu = Resu\LaBase

Resi = Resi Mod LaBase

Salida = Resi & Salida

Loop

Salida = Resu & Salida

CambiaBase = SalidaCambiaBase = Salida

End Function

Dim iDocument.Write “<Table

Border=1><TR><TH>Número </TH><TH>Base 2</TH> <TH>Base 5</TH> <TH>Base 8</TH> <TH>Base 16</TH></TR>”

For i = 1 To 30Document.Write “<TR><TD>” & i & “</TD><TD>” & CambiaBase(i,2) & “</TD><TD>” & CambiaBase(i,5) & “</TD><TD>” & CambiaBase(i,8) & “</TD><TD>” & CambiaBase(i,16) & “</TD></TR>”

NextDocument.Write “</Table>”

ej052.html

Utilización en Formularios

Al crear un botón:<Input Type=Button Name=Salir OnClick=“SalirPrograma”>

<Script Language=“VBScript”>

Sub SalirPrograma

Window.Close

End Sub

</Script>

Utilización en Formularios

En un hipervínculo:<a href=“ej040.html” OnClick=“SalirPrograma”>Parece que va a

ej040.html pero sale del programa.</a>

<Script Language=“VBScript”>

Sub SalirPrograma

Window.Close

End Sub

</Script>

ej053.html

Eventos

Cosas que pasanQue le pasan a los objetosA las ventanas:Las abren, las cierran

A los documentos:Los cargan

A los botones e hipervínculos:Les dan click

Ejercicio

Hacer un formulario que cargue la página que dibuja tablas de Fils x Cols

top related