Subrutinas y Funciones Leonel Morales Daz Ingeniera Simple
Subrutinas y Funciones Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple. com Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados Disponible en: http: //www. ingenieriasimple. com/introprogra
Problema Construya un programa que: Dibuje una tabla de 10 x 12 l Luego una tabla de 8 x 11 l Luego otra más de 15 x 10 l 3 tablas de diferente tamaño ¿Y si fueran 5? ¿ 7? ¿ 10?
Algoritmo Tradicional Dibujar la tabla de 10 x 12 l Dibujar 10 filas l En cada fila dibujar 12 celdas Dibujar la tabla de 8 x 11 l Dibujar 8 filas l En cada fila dibujar 11 celdas Dibujar la tabla de 15 x 10 l Dibujar 15 filas l 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>”
3 Iteraciones Dim i, j Document. Write “<Table>” 1 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>” 2 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>” 3 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>”
Parámetros Dim i, j Document. Write “<Table>” 1 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>” 2 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>” 3 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 Dibuja. Tabla(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 Dibuja. Tabla 10, 12 Dibuja. Tabla 8, 11 Dibuja. Tabla 15, 10
Subrutina Encabezado Nombre de la Subrutina Sub Dibuja. Tabla(Filas, Columnas) ‘Dibuja una tabla Dim i, j Parámetros Document. Write “<Table Border=1>” For i = 1 To Filas Document. Write “<TR>” For j = 1 To Columnas Document. Write Los parámetros “<TD>*</TD>” Next son como Document. Write “</TR>” variables Next Document. Write “</Table><BR>” End Sub Final
Subrutinas Procedimientos o agrupaciones de instrucciones Que realizan una tarea concreta l Que varía por los parámetros l 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> <H 1>En esta página se dibujan varias tablas mediante el uso de subrutinas. </H 1> <Script Language=“VBScript”> Option Explicit Sub Dibuja. Tabla(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 Dibuja. Tabla 10, 12 Dibuja. Tabla 8, 11 Dibuja. Tabla 15, 10 </Script> <P Align=Center>Este texto estará al final de las tres tablas</P> </Body> </HTML> ej 048. html
Parámetros Dim i, j Document. Write “<Table>” 1 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>” 2 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>” 3 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 Dibuja. Tabla(Filas, Columnas, Relleno) Relleno ‘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>” & Relleno & “</TD>” Next Document. Write “</TR>” Next Document. Write “</Table><BR>” End Sub
Más Parámetros Sub Dibuja. Tabla(Filas, Columnas, Relleno, Borde) Borde ‘Dibuja una tabla Dim i, j Document. Write “<Table Border=“ & Borde & “>” 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 Dibuja. Tabla(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 Dibuja. Tabla i, j j=j+5 Next ej 049. html
Múltiples Llamadas Sub Dibuja. Tabla(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 Dibuja. Tabla i, j j=j+5 Next ej 049. html
Múltiples Llamadas Sub Dibuja. Tabla(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 Dibuja. Tabla i, j j=j+5 Next Diferente Ámbito ej 049. html
Múltiples Llamadas Sub Dibuja. Tabla(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>” Dibuja. Tabla 3, 3 Document. Write “</TD>” Next Document. Write “</TR>” Next Document. Write “</Table></Center>” ej 050. html
Convertir a Binario 1. 2. 3. Se divide la entrada entre 2 Si es el primer residuo solo se coloca De lo contrario 1. 4. Si el resultado es mayor o igual que 2 1. 5. Se coloca el residuo a la izquierda del residuo anterior Tomarlo como entrada y volver a paso 1 De lo contrario 1. 2. Colocar el resultado a la izquierda del residuo anterior Fin del algoritmo
Subrutina 1. 2. 3. Se divide la entrada entre 2 Si es el primer residuo solo se coloca De lo contrario 1. 4. Si el resultado es mayor o igual que 2 1. 5. Se coloca el residuo a la izquierda del residuo anterior Tomarlo como entrada y volver a paso 1 De lo contrario 1. 2. Colocar el resultado a la izquierda del residuo anterior Fin del algoritmo ¿Nombre? ¿Parámetros? ¿Variables locales?
Subrutina 1. 2. 3. Se divide la entrada entre 2 Si es el primer residuo solo se coloca De lo contrario 1. 4. Si el resultado es mayor o igual que 2 1. 5. Se coloca el residuo a la izquierda del residuo anterior Tomarlo como entrada y volver a paso 1 De lo contrario 1. 2. Colocar el resultado a la izquierda del residuo anterior Fin del algoritmo Sub Cambia. Base(Un. Numero, La. Base) Dim Resu, Resi, Salida Resu = Un. NumeroLa. Base Resi = Un. Numero Mod La. Base Salida = “” & Resi Do While Resu >= La. Base Resi = ResuLa. Base Resi = Resi Mod La. Base Salida = Resi & Salida Loop Salida = Resu & Salida Document. Write “<P>Salida: “ & Salida & “</P>” End Sub ej 051. html
Funciones Tienen Nombre l Parámetros l Variables locales l Igual que una subrutine l Devuelven un valor l A = F(X, Y)
Comparación Sub Cambia. Base(Un. Numero, La. Base) Dim Resu, Resi, Salida Resu = Un. NumeroLa. Base Resi = Un. Numero Mod La. Base Salida = “” & Resi Do While Resu >= La. Base Resi = ResuLa. Base Resi = Resi Mod La. Base Salida = Resi & Salida Loop Salida = Resu & Salida Document. Write “<P>Salida: “ & Salida & “</P>” End Sub Function Cambia. Base(Un. Numero, La. Base) Dim Resu, Resi, Salida Resu = Un. NumeroLa. Base Resi = Un. Numero Mod La. Base Salida = “” & Resi Do While Resu >= La. Base Resi = ResuLa. Base Resi = Resi Mod La. Base Salida = Resi & Salida Loop Salida = Resu & Salida Cambia. Base = Salida End Function
Llamadas a Funciones Function Cambia. Base(Un. Numero, La. Base) Dim Resu, Resi, Salida Resu = Un. NumeroLa. Base Resi = Un. Numero Mod La. Base Salida = “” & Resi Do While Resu >= La. Base Resi = ResuLa. Base Resi = Resi Mod La. Base Salida = Resi & Salida Loop Salida = Resu & Salida Cambia. Base = Salida End Function Dim i Document. 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 30 Document. Write “<TR><TD>” & i & “</TD><TD>” & Cambia. Base(i, 2) & “</TD><TD>” & Cambia. Base(i, 5) & “</TD><TD>” & Cambia. Base(i, 8) & “</TD><TD>” & Cambia. Base(i, 16) & “</TD></TR>” Next Document. Write “</Table>” ej 052. html
Utilización en Formularios Al crear un botón: <Input Type=Button Name=Salir On. Click=“Salir. Programa”> <Script Language=“VBScript”> Sub Salir. Programa Window. Close End Sub </Script>
Utilización en Formularios En un hipervínculo: <a href=“ej 040. html” On. Click=“Salir. Programa”>Parece que va a ej 040. html pero sale del programa. </a> <Script Language=“VBScript”> Sub Salir. Programa Window. Close End Sub </Script> ej 053. html
Eventos Cosas que pasan Que le pasan a los objetos A las ventanas: l Las abren, las cierran A los documentos: l Los cargan A los botones e hipervínculos: l Les dan click
Ejercicio Hacer un formulario que cargue la página que dibuja tablas de Fils x Cols
- Slides: 27