5. Subprogramas Fundamentos de Informática

Documentos relacionados
6. Vectores. 1. Introducción. 2. Declaración (I) Fundamentos de Informática Dpto. Lenguajes y Sistemas Informáticos.

Programa completo de resolución de ecuaciones de 2º grado

3. Estructuras iterativas

Seminario de Actualización - Excel Avanzado y Macros. Visual Basic. Conceptos Básicos de Visual Basic para Aplicaciones

llamada a la función Val(num) cambiosigno(n) redondeo(num,3)

Algoritmos y Programación Clase 8

Operaciones con vectores

Resolver triángulos en Visual Basic. Parte 3/3

1. Introducción a la programación. Ej01: Diagrama de Flujo

Programa de resolución de ecuaciones de primero y segundo grado

FUNDAMENTOS DE INFORMÁTICA

Tema 5.- Recursividad

Comencemos a programar con. Entrega 10. Estructuras de Control II

FUNDAMENTOS DE INFORMÁTICA

Parte 4: Estructuras de Control

FUNDAMENTOS DE INFORMÁTICA

Curso de Programación II con Visual Basic.Net

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

Índice general. Capítulo 1 Conceptos básicos. Capítulo 2 Controles básicos I. Pág. N. 1

Sentencias o instrucciones en Visual BASIC

Comencemos a programar con. Entrega 09

Macros y VBA en MS Excel (Visual Basic for Applications) Aplicaciones para Ingeniería. Profesores: Hugo Mora, Ignacio Casas

Programación n con Visual Basic.NET. Visual Basic.NET. Francisco Ruiz Manuel Ángel Serrano

Módulo 8: Primitivas en Pascal

Programa de números aleatorios

Resumen del lenguaje de programación Visual Basic.NET

PROCEDIMIENTOS Y FUNCIONES DE LA PROGRAMACIÓN (VISUAL BASIC)

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

Como se declara un vector en Visual Basic 6.0

Tecnologías de la Información. Apuntes de programación en Visual Basic 6.0

Introducción a la Programación en Visual Basic y su aplicación en Excel. M.I. Jaime Alfonso Reyes Cortés

Indice del curso básico programación desde cero Visual Basic Nivel I (CU00302A)

Introducción a la. programación en. OpenOffice.org Basic

Universidad Metropolitana Castro Carazo Prof. Ing. Patricia Vargas. Material de apoyo Semana #2 PROGRAMACIÓN II

Estatutos de Control C# Estatutos de Decisión (Selección)

INDICE Parte 1. Visual Basic Capitulo 1. Qué es Visual Basic? Capitulo 22. Mi Primera Aplicación Capitulo 3. Elementos del lenguaje

Operadores lógicos y matemáticos en Visual Basic. Math. Comentarios en VB. Rem. Ejemplos. (CU00314A)

Ejemplos de uso de forms, labels, inputbox y msgbox en Visual Basic. (CU00332A)

ax 2 + bx + c = 0, con a 0

Curso de Excel Avanzado

EDUComputacion. Te ofrece el curso de:

Resolver triángulos en Visual Basic. Parte 2/3

Comencemos a programar con. Entrega 17

Equivalencia de instrucciones de C# y VB.NET (I) Cómo hacer las mismas cosas (o casi) en C# y Visual Basic.NET

VB Access 2000 Fermí Vilà 1. Visual Basic para Aplicaciones del Access 2007

GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE)

Resumen teórico. En la Consola. Abre nuevo proyecto y elige Consola aplicación y ponle el nombre que quieras y escribe: Module Module1

Programación con Visual Basic 6

CTIBridgeClient V1.0 DOCUMENTACION DEL PROGRAMADOR

Librería: winfis32.dll v04.27 Para uso con impresoras fiscales HASAR

COMANDOS EN LENGUAJE DE PROGRAMACIÓN BASIC

Basic Express Referencia del Lenguaje. Versión 2.0

Funciones. Parámetros por valor

VISUAL BASIC SCRIPT. Manual de Visual Basic Script INTRODUCCIÓN

Programación MODULAR: Subalgoritmos - funciones y procedimientos

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

1 Entorno de Desarrollo.NET

VB Script. Autor: J. Quijado ( Fuente:

Cómo nombrar variables ( 2&

Operaciones con vectores

GUÍA BÁSICA DE SCHEME v.4

Guía practica de Visual Basic 6.0

Diseño Basado en Componentes. Curso 2008 / 09

UNIVERSIDAD LIBRE DE COLOMBIA ELECTIVA IV VISUAL BASIC GUIA No. 1

Manejo de Software para Microcomputadoras. Visual Basic para Aplicaciones en Excel

Tutorial Básico de vbscript

Normas de estilo para la codificación de programas

Funciones como Subprogramas en C++

Estructuras de repetición

ÍNDICE DEL LIBRO Y DEL EBOOK APRENDER A PROGRAMAR: ALGORITMOS Y FUNDAMENTOS DE PROGRAMACIÓN ORIENTADOS A LA INGENIERÍA Y CIENCIAS

Bloque 4. La descomposición funcional y el diseño descendente

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Active Server Pages. Que es?.

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Ecuaciones cuadráticas Resolver ecuaciones cuadráticas mediante factorización

Manual de turbo pascal

Curso Completo de Visual Basic 6.0

PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad

METODOS DE INTEGRACION IV FRACCIONES PARCIALES

Ejercicios sobre Objetos Libros:

Resolver triángulos en Visual Basic. Parte 1/3

Introducción a las Macros para Microsoft Excel

11/02/2009 IEC de febrero de 2009 Antonio Cambronero, Product Engineer OMRON Electronics Iberia S.A.U. IEC ( Programación en ST )

Funciones Tipos de funciones y Recursividad

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

Visual Basic: procedimientos Sub y funciones Function. Tipos de parámetros y tipos de retorno. Ejemplos (CU00340A)

PRÁCTICAS DE VISUAL BASIC APLICADO AL CÁLCULO ACTUARIAL

1. LIBRERÍA DEL USB: MPUSBAPI.DLL

Como hacer un troyano en Visual Basic 6.0

Fundamentos de la Programación

Porqué Visual Basic?

Estructura de Datos y de la Información. Pilas y expresiones aritméticas

Transcripción:

5. Subprogramas Fundamentos de Informática Dpto. Lenguajes y Sistemas Informáticos Curso 2012 / 2013

Índice Subprogramas 1. Cálculo de la función Coseno 2. Suma 3. Ecuación de 2º grado 2

1. Cálculo de la función Coseno Título Coseno Nombre PrgCoseno Descripción 1. Coseno Programa VB que lee un ángulo en radianes y calcule su coseno, utilizando el desarrollo de Taylor con un error inferior a 0,000001. Observaciones Descomposición en funciones Diseño con y sin funciones 2i i x cos( x) = ( 1) (2)! i i= 0 Diseño descendente - implementación ascendente 3

1.1 Análisis Coseno Subprogramas 1. Coseno 2i i x cos( x) = ( 1) (2)! i i= 0 y 2i i x = ( 1) (2)! i i= 0 y = t0 + t1 + t2 + t3 +... + t 2 0 0 x t 0 = 1 = 1 (2 0)! 2 4 6 x x x y = 1 + +... 1 x x 2! 4! 6! t 1 = = 1 (2 1)! 2 2 1 2 Cada t i reduce el error en t i x x 2 1 (2 2)! 24 2 2 4 2 t = = 2 3 6 3 x x t 3 = = 1 (2 3)! 720 4

1. Coseno 1.2 Programa Coseno sin subprogramas PrgCoseno x LeeReal x: real i, j, sig: entero y: real f2i, num: real ter, err: real y = i= 0 2i i x ( 1) (2 i )! Escribe y 5

1. Coseno 1.2 Programa Coseno sin subprogramas y 2i i x = ( 1) (2)! i i= 0 y 0 i 0 f2i 1 x: real i, j, sig: entero y: real f2i, num: real ter, err: real fact2i (2 i)! j j + 1 j 1 j 2 i No Sí f2i f2i j sig -1 i num x 2 i ter sig num / f2i y y + ter err ter no err ter ter < 0 sí err -ter i i + 1 No err < 0,000001 Sí 6

1. Coseno 1.3 Programa Coseno con subprogramas PrgCoseno1 ang LeeReal cos Coseno (ang) Escribe cos ang: real cos: real Llamada a la función Coseno con el valor de ang Se evalúa ang y se envía ese valor a la función 7

1.4 Interfaz de la función Coseno 1. Coseno Parámetro de entrada: x Es una variable inicializada en cada llamada Tipo del valor devuelto por la función x: real Coseno real La función devuelve un valor, asignado al nombre de la función Coseno... Coseno Variables locales 8

1.5 Llamada a la función Coseno cos Coseno (ang) En la llamada se produce una asignación implícita x ang 1. Coseno x: real Coseno real La evaluación de la función es valor devuelto y asignado cos Coseno Se calcula el valor del coseno 9

1.6 Función Coseno Subprogramas 1. Coseno x: real Coseno real 2i i x cos( x) = ( 1) (2)! i i= 0 2i i x y = ( 1) (2)! i i= 0 y 0 i 0 f2i Factorial (2 i) sig -1 i num x 2 i ter sig num / f2i y y + ter err ValAbs (ter) i i + 1 i, sig: entero f2i, num, y: real ter, err: real Llamadas a funciones No err < 0,000001 Valor devuelto por la función Sí Coseno y 10

1.7 Función Coseno VB Subprogramas Function Coseno (ByVal x As Double)_ As Double Dim i As Integer, sig As Integer Dim f2i As Integer, num... y = 0 i = 0 Do f2i = Factorial (2*i) sig = (-1) ^ i... Loop Until err < 0.000001 Coseno = y End Function x: real Coseno real No 1. Coseno 2i i x cos( x) = ( 1) (2)! i y 0 i 0 f2i Factorial (2 i) sig -1 i num x 2 i ter sig num / f2i y y + ter err ValAbs (ter) i i + 1 err < 0,000001 Sí Coseno y i= 0 i, sig: entero f2i, num, y: real ter, err: real 11

1.8 Función Factorial Subprogramas 1. Coseno Tipo del resultado n: entero Factorial entero Parámetro de entrada i i + 1 f 1 i 1 i n i, f: entero No Variables locales Valor devuelto por la función Nota: 13! ya no entra en un entero de 32 bits por lo que sería mejor utilizar reales dobles para f y el resultado Sí f f i Factorial f 12

1.8 Función Factorial VB Subprogramas 1. Coseno n: entero Factorial entero i, f: entero Function Factorial (ByVal n As Integer)_ Dim i As Integer Dim f As Double f = 0 For i = 1 To n Step 1 f = f * i Next i Factorial = i End Function As Double i i + 1 Nota: usamos doubles en vez de enteros f 1 i 1 i n Sí f f i No Factorial f 13

1.9 Función ValAbs Subprogramas 1. Coseno x: real ValAbs real no x < 0 sí ValAbs x ValAbs -x 14

1.10 Función ValAbs1 Subprogramas 1. Coseno x: real ValAbs1 real no x < 0 sí x -x ValAbs x El cambio no afecta a la variable de llamada ya que se copia el valor 15

base: real expo: entero Parámetros de entrada Subprogramas Pot p 1 real i: entero p: real 1. Coseno 1.11 Función Pot (no necesaria en VB) Tipo del resultado i i + 1 i 1 i expo No Variables locales Sí p p base Valor devuelto por la función (resultado) Pot p 16

2. Suma 2. Suma Modelos de paso de parámetros Descripción Escribir un subprograma que calcule la suma de dos números Versiones 1. función con dos parámetros de entrada y devuelve el resultado 2. procedimiento con dos parámetros de entrada y uno de salida 3. procedimiento con un parámetro de entrada y otro de entrada/salida Observaciones Paso de parámetros por valor y por referencia Los procedimientos no devuelven nada (pueden usar parámetros de salida) 17

2. Suma1 2.1 Suma con función: programa y llamada Parámetros de entrada Asignación del resultado Psu1 a LeeReal b LeeReal s Suma1 (a, b) a, b: real s: real Escribe s Llamada a la función Cabecera de la función x1, x2: real Suma1 real 18

2.1 Función Suma1: DdF y VB 2. Suma1 x1, x2: real Suma1 real Suma1 x1 + x2 Function Suma1 (ByVal x1 As Double, ByVal x2 As Double)_ As Double Suma1 = x1 + x2 End Function 19

2.1 Llamadas a la función Suma1 Llamada con variables 2. Suma1 x1, x2: real Suma1 real s Suma1 (a, b)... s = Suma1 (a, b)... Suma1 x1 + x2 Llamada con constantes s Suma1 (5, 7)... s = Suma1 (5, 7)... 20

2. Suma2 2.2 Procedimiento 1: programa y llamada Parámetros de entrada Psu2 a LeeReal b LeeReal Suma2 (a, b, s) a, b: real s: real Parámetro de salida Escribe s Cabecera del procedimiento x1, x2: real Suma2 x: real 21

2. Suma2 2.2 Procedimiento Suma2: DdF y VB x1, x2: real Suma2 x: real x x1 + x2 Sub Suma2 (ByVal x1 As Double, ByVal x2 As Double, _ x = x1 + x2 End Sub ByRef x As Double) Puede omitirse Los cambios realizados sobre las variables pasadas por referencia afectan a las variables de la llamada, que pueden llamarse igual o distinto 22

2. Suma2 2.2 Llamadas al procedimiento Suma2 Llamada con variables x1, x2: real Suma2 x: real Suma2 (a, b, s)... Call Suma2 (a, b, s)... Llamada con constantes (por valor) Suma2 (5, 7, s) x x1 + x2 Ha de ser una variable para recoger el resultado... Call Suma2 (5, 7, s)... 23

2. Suma3 2.3 Procedimiento 2: programa y llamada Psu3 a, b: real Parámetro de entrada Parámetro de entrada a LeeReal b LeeReal Suma3 (a, b) Escribe a y salida (el parámetro tiene el mismo nombre en la cabecera) x1, x2: real Suma3 x1: real 24

2. Suma3 2.3 Procedimiento Suma3: DdF y VB x1, x2: real Suma3 x1: real x1 x1 + x2 Podemos leer el valor de las variables pasadas por referencia y los cambios que hagamos afectan a las variables de la llamada Sub Suma3 (ByRef x1 As Double, ByVal x2 As Double) x1 = x1 + x2 End Sub Puede omitirse Por la cabecera VB no podemos saber si x1 es de salida o de entrada/salida 25

2. Suma3 2.3 Llamadas al procedimiento Suma3 Llamada con variables x1, x2: real Suma3 x1: real Suma3 (a, b)... Call Suma3 (a, b)... Llamada con constantes x1 x1 + x2 Ha de ser una variable para recoger el resultado Suma3 (a, 7)... Call Suma3 (a, 7)... 26

3. Ecuación de 2º grado Descripción Subprogramas Calcular las raíces de una ecuación de 2º grado Tipo 0: No es una ecuación Tipo 1: Ecuación lineal Tipo 2: Soluciones reales Tipo 3: Soluciones complejas Observaciones Paso de parámetros por referencia x = ax 2 b ± 3. Ecuación 2º grado + bx + c = 0 b 2 4ac 2a 27

3. Ecuación 2º grado 3.1 Programa ecuación de 2º grado - DdF Programa principal Pec2 a LeeReal b LeeReal c LeeReal Ecuacion2 (a, b, c, t, s1, s2) a, b, c: real s1, s2: real t: entero No es evidente qué parámetros son de entrada y cuáles de salida EscribeRes (t, s1, s2) Llamadas a los procedimientos 28

3.2 Procedimiento Ecuación2 DdF 3. Ecuación 2º grado a, b, c: real Ecuacion2 tipo: entero x1, x2: real no a 0 sí d, rcd: real no b 0 sí d b 2 4 a c tipo 0 x1 -c/b tipo 1 no d 0 sí rcd (-d) x1 -b / (2 a) x2 rcd / (2 a) tipo 3 rcd (d) x1 (-b + rcd) / (2 a) x2 (-b rcd) / (2 a) tipo 2 29

3.3 Procedimiento EscribeRes DdF 3. Ecuación 2º grado tp: entero n1, n2: real EscribeRes no tp = 0 sí no tp = 1 sí Escribe No es ecuación no tp = 2 sí Escribe Lineal n1 Escribe Complejas n1, n2 Escribe Reales n1, n2 30

Sub Pec2_Click() Dim s As String Dim a As Double, b As Double, c As Double Dim s1 As Double, s2 As Double Dim t As Integer s = InputBox ("Coeficiente A") a = CDbl (s) s = InputBox ("Coeficiente B") b = CDbl (s) s = InputBox ("Coeficiente C") c = CDbl (s) Call Ecuacion2 (a, b, c, t, s1, s2) Call EscribeRes (t, s1, s2) End Sub Subprogramas 3.4 Programa VB ecuación 2º grado Llamadas a procedimientos Pec2 Ecuacion2 (a, b, c, t, s1, s2) EscribeRes (t, s1, s2) 3. Ecuación 2º grado a LeeReal b LeeReal c LeeReal a, b, c: real s1, s2: real t: entero 31

3.5 Procedimiento VB Ecuacion2 Sub Ecuacion2 (ByVal a As Double, ByVal b As Double, ByVal c As Double, _ ByRef tipo As Integer, ByRef x1 As Double, ByRef x2 As Double) Dim d As Double, rcd As Double If a <> 0 Then d = b*b 4*a*c If d >= 0 Then rcd = Sqr (d) x1 = (-b + rcd)/(2*a) x2 = (-b rcd)/(2*a) tipo = 2 Else rcd = Sqr (-d) x1 = -b /(2*a) x2 = rcd / (2*a) tipo = 3 End If Else End If End Sub a, b, c: real tipo 0 no Else If b <> 0 Then x1 = -c/b tipo = 1 Else tipo = 0 End If End If b 0 sí no x1 -c/b tipo 1 Ecuacion2 a 0 no sí rcd (-d) x1 -b / (2 a) x2 rcd / (2 a) tipo 3 3. Ecuación 2º grado d b 2 4 a c d 1 tipo: entero x1, x2: real d, rcd: real sí rcd (d) x1 (-b + rcd) / (2 a) x2 (-b rcd) / (2 a) tipo 2 32

3.6 Procedimiento VB EscribeRes 3. Ecuación 2º grado Sub EscribeRes (ByVal tp As Integer, _ ByRef n1 As Double, ByRef n2 As Double) If tp = 0 Then MsgBox "No es una ecuación" ElseIf tp = 1 Then MsgBox "Ecuación lineal. X: " & CStr (n1) ElseIf tp = 2 Then MsgBox "Soluciones reales. " & _ " x1: " & CStr (n1) & _ Else End If End Sub " x2: " & CStr (n2) tp: entero n1, n2: real MsgBox "Soluciones complejas. " & _ " x1: " & CStr (n1) & "+" & CStr (n2) & "i" & _ " x2: " & CStr (n1) & "-" & CStr (n2) & "i" no Escribe Complejas n1, n2 tp = 2 no tp = 1 sí no EscribeRes sí tp = 0 Escribe Reales n1, n2 sí Escribe Lineal n1 Escribe No es ecuación 33

3.7 Programa alternativo con función 3. Ecuación 2º grado La función devuelve el tipo de ecuación Pec2a a LeeReal b LeeReal c LeeReal a, b, c: real s1, s2: real t: entero t Ec2_1 (a, b, c, s1, s2) EscribeRes (t, s1, s2) Cambia la cabecera: dos parámetros de salida por un valor devuelto a, b, c: real Ec2_1 x1, x2: real entero a, b, c: real Ecuacion2 tipo: entero x1, x2: real 34

3.8 Alternativa VB ecuación 2º grado 3. Ecuación 2º grado Sub Pec2a_Click() Dim s As String Dim a As Double, b As Double, c As Double Dim s1 As Double, s2 As Double Dim t As Integer s = InputBox ("Coeficiente A") a = CDbl (s) s = InputBox ("Coeficiente B") b = CDbl (s) s = InputBox ("Coeficiente C") c = CDbl (s) t = Ec2_1 (a, b, c, s1, s2) Call EscribeRes (t, s1, s2) End Sub Pec2 a LeeReal b LeeReal c LeeReal t Ec2_1 (a, b, c, s1, s2) EscribeRes (t, s1, s2) a, b, c: real s1, s2: real t: entero 35

3.9 Función VB Ec2_1 Subprogramas 3. Ecuación 2º grado Function Ec2_1 (ByVal a As Double, ByVal b As Double, ByVal c As Double, _ ByRef x1 As Double, ByRef x2 As Double) As Integer Dim d As Double, rcd As Double If a <> 0 Then d = b*b 4*a*c If d >= 0 Then rcd = Sqr (d) x1 = (-b + rcd)/(2*a) x2 = (-b rcd)/(2*a) Ec2_1 = 2 Else rcd = Sqr (-d) x1 = -b /(2*a) x2 = rcd / (2*a) Ec2_1 = 3 End If Else End If End Function Else If b <> 0 Then x1 = -c/b Ec2_1 = 1 Else Ec2_1 = 0 End If End If 36