Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase8 Subrutinas
Clase8 Subrutinas
Ciencias de la Computacin I
Recordemos
Algoritmo
Recordemos
Algoritmo
- Set de pasos a seguir - Realiza una tarea o resuelve un problema - Instrucciones bien definidas y no ambiguas
Recordemos
Algoritmo Programa
Recordemos
Algoritmo Programa
Set de intrucciones Traduccin de un algoritmo Conjunto de reglas
Recordemos
Algoritmo Programa Variable
Recordemos
Algoritmo Programa Variable
Referencia a un dato guardado en memoria.
Recordemos
Algoritmo Programa Variable Condicin
Recordemos
Algoritmo Programa Variable Condicin
Pregunta que puede devolver como respuesta, nicamente, verdadero o falso.
Recordemos
Algoritmo Programa Variable Condicin Condicional
Recordemos
Algoritmo Programa Variable Condicin Condicional
Estructura de Control que nos permite cambiar el flujo de ejecucin del programa, redirigiendolo hacia un set de intrucciones, basado en la respuesta a una condicin.
Recordemos
Algoritmo Programa Variable Condicin Condicional Medios de Abstraccin
Recordemos
Algoritmo Programa Variable Condicin Condicional Medios de Abstraccin
El lenguaje nos provee formas para que elementos compuestos puedan ser nombrados y manipulados como unidades.
Programacin Modular
Programa dividido en mdulos. Un mdulo principal y varios mdulos auxiliares. Cada mdulo tiene una tarea y es parte de la solucin al problema completo Se crea cdigo que puede ser fcilmente reutilizado
Top-down approach
Se encuentra una solucin general al problema Solucin se divide en sub-soluciones Cada vez que se va bajando de nivel en la divisin de sub-soluciones, aumenta el nivel de especificacin que se le da a la solucin. Se utilizan black boxes para representar subsoluciones.
Programacin modular
(define (area_circulo r) (* 3.14 (square r)) ) (define (area_anillo ri re) (- (area_circulo re)(area_circulo ri)) ) (define (main) (display Ingrese radio interior: ) (define radioi (read)) (display Ingrese radio exterior: ) (define radioe (read)) (define area (area_anillo radioi radioe)) (display el area del anillo es: ) (display area)(newline) ) (main)
Programacin modular
LEER Radio exterior Area del anillo Radio interior DESPLEGAR
Programacin modular
- Leer y guardar radio (ri) interior y radio exterior (re)
ri, re
Area_anillo
areaA
Programacin modular
re
ri, re
ri
area_circulo area_circulo
areaA
Programacin modular
radio
square 3.1416
X
Programacin modular
square area_circulo
Saca el cuadrado de un numero Saca el area del circulo a partir del radio Saca el area del anillo a partir de radio interior y radio exterior Lee radios de un anillo y despliega area
area_anillo main
PROGRAMA
Programacin modular
(define (area_circulo r) (* 3.14 (square r)) ) (define (area_anillo ri re) (- (area_circulo re)(area_circulo ri)) ) (define (main) (display Ingrese radio interior: ) (define radioi (read)) (display Ingrese radio exterior: ) (define radioe (read)) (define area (area_anillo radioi radioe)) (display el area del anillo es: ) (display area)(newline) ) (main)
Programacin modular
(define (area_circulo r) (* 3.14 (square r)) ) (define (area_anillo ri re) (- (area_circulo re)(area_circulo ri)) ) (define (main) (display Ingrese radio interior: ) (define radioi (read)) (display Ingrese radio exterior: ) (define radioe (read)) (define area (area_anillo radioi radioe)) (display el area del anillo es: ) (display area)(newline) ) (main)
Programacin modular
(define (area_circulo r) (* 3.14 (square r)) ) (define (area_anillo ri re) (- (area_circulo re)(area_circulo ri)) ) (define (main) (display Ingrese radio interior: ) (define radioi (read)) (display Ingrese radio exterior: ) (define radioe (read)) (define area (area_anillo radioi radioe)) (display el area del anillo es: ) (display area)(newline) ) (main)
Programacin modular
(define (area_circulo r) (* 3.14 (square r)) ) (define (area_anillo ri re) (- (area_circulo re)(area_circulo ri)) ) (define (main) (display Ingrese radio interior: ) (define radioi (read)) (display Ingrese radio exterior: ) (define radioe (read)) (define area (area_anillo radioi radioe)) (display el area del anillo es: ) (display area)(newline) ) (main)
Programacin modular
(define (area_circulo r) (* 3.14 (square r)) ) (define (area_anillo ri re) (- (area_circulo re)(area_circulo ri)) ) (define (main) (display Ingrese radio interior: ) (define radioi (read)) (display Ingrese radio exterior: ) (define radioe (read)) (define area (area_anillo radioi radioe)) (display el area del anillo es: ) (display area)(newline) ) (main)
Subrutinas
Un sub-block de instrucciones escritas en un programa, el cual tiene asociado un nombre y es utilizado como una unidad.
El nombre se utiliza para referirnos a ese block de instrucciones Se puede mandar a ejecutar mas de una vez en el programa completo (reutilizacin de cdigo) No se ejecuta si no se manda a llamar (ejecutar)
Subrutinas en Scheme
(define (nombre_subrutina instrucciones ) lista_parametros)
Subrutinas en Scheme
(define (nombre_subrutina lista_parametros) instrucciones - Nombre asociado al sub block de instrucciones ) - lo utilizamos para referirnos
a la subrutina cuando queremos mandarla a ejecutar
Subrutinas en Scheme
(define (nombre_subrutina lista_parametros) instrucciones Variables con las que representamos los inputs )
a la subrutinas
Subrutinas en Scheme
(define (nombre_subrutina lista_parametros) instrucciones Instrucciones que se )
ejecutaran en el momento que la subrutina se mande a llamar o a ejecutar
Subrutinas
Parmetros: variables que representan los inputs a una subrutina
Subrutinas
Parmetros: variables que representan los inputs a una subrutina
(define (area_anillo rinterior rexterior) . )
Subrutinas
Parmetros: variables que representan los inputs a una subrutina
(define (area_anillo rinterior rexterior) . )
Subrutinas
Parmetros: variables que representan los inputs a una subrutina
(define (area_anillo rinterior rexterior) . )
Subrutinas
Se dividen en dos tipos: Funciones
Al final de su ejecucin devuelve algo (tiene un valor de retorno), el cual puede ser utilizado/ manipulado/guardado por la instruccin que la mando a ejecutar (caller)
Procedimientos
Instrucciones se ejecutan y NO tiene un valor de retorno
Subrutinas
FUNCIONES
(* 4/3 pi (expt radio 3)) (define a (area_anillo 5 3))
PROCEDIMIENTOS
(string-set! s 0 #\b) (newline) (display hola)
Funciones
(define (square x) (* x x) ) (define (square x) (define valor (* x x)) valor ) (define (magnitud x y) (define xcuadrado (square x)) (define ycuadrado (square y)) (sqrt (+ xcuadrado ycuadrado)) )
Procedimientos
(define (square r) (define cuadrado (* r r)) (display El cuadrado de ) (display r) (display es: ) (display cuadrado) (newline) )
Funcin o procedimiento?
(define (subrutina1) (define a 5) (define b 3) (define c (+ a b)) )
Funcin o procedimiento?
(define (subrutina3) (define a 5) (define b 3) (+ (square a)(square b)) (display (+ a b)) )
Variables locales
Variables que pertenecen al entorno en donde fueron definidas. Solo pueden ser utilizadas y manipuladas dentro de las subrutinas en donde se definieron. Desaparecen cuando el entorno local desaparece. (scope local)
(define pi 3.1416) (define (perimetro_circulo r) (* 2 pi r) ) (define (area_circulo r) (* pi (* r r)) ) (define (volumen_esfera r) (* 4/3 pi (expt r 3)) ) (define (programa_principal) (display Ingrese el radio: ) (define radio (read)) (define perimetro (perimetro_circulo radio)) (define area (area_circulo radio)) (define volumen (volumen_esfera radio)) (display El perimetro es: )(display perimetro) (display \nEl area es: )(display area) (display \nEl volumen es: )(display volumen) ) (programa_principal)
(define pi 3.1416) (define (perimetro_circulo r) (* 2 pi r) ) (define (area_circulo r) (* pi (* r r)) ) (define (volumen_esfera r) (* 4/3 pi (expt r 3)) ) (define (programa_principal) (display Ingrese el radio: ) (define radio (read)) (define perimetro (perimetro_circulo radio)) (define area (area_circulo radio)) (define volumen (volumen_esfera radio)) (display El perimetro es: )(display perimetro) (display \nEl area es: )(display area) (display \nEl volumen es: )(display volumen) ) (programa_principal)
(define pi 3.1416) (define (perimetro_circulo r) (* 2 pi r) ) (define (area_circulo r) (* pi (* r r)) ) (define (volumen_esfera r) (* 4/3 pi (expt r 3)) ) (define (programa_principal) (display Ingrese el radio: ) (define radio (read)) (define perimetro (perimetro_circulo radio)) (define area (area_circulo radio)) (define volumen (volumen_esfera radio)) (display El perimetro es: )(display perimetro) (display \nEl area es: )(display area) (display \nEl volumen es: )(display volumen) ) (programa_principal)
(define pi 3.1416) (define (perimetro_circulo r) (* 2 pi r) ) (define (area_circulo r) (* pi (* r r)) ) (define (volumen_esfera r) (* 4/3 pi (expt r 3)) ) (define (programa_principal) (display Ingrese el radio: ) (define radio (read)) (define perimetro (perimetro_circulo radio)) (define area (area_circulo radio)) (define volumen (volumen_esfera radio)) (display El perimetro es: ) (display perimetro) (display \nEl area es: ) (display area) (display \nEl volumen es: ) (display volumen) ) (programa_principal)
SCOPE GLOBAL
pi
3.1416 (perimetro_circulo r) (area_circulo r) (volumen_esfera r) (programa_principal)
(define pi 3.1416) (define (perimetro_circulo r) (* 2 pi r) ) (define (area_circulo r) (* pi (* r r)) ) (define (volumen_esfera r) (* 4/3 pi (expt r 3)) ) (define (programa_principal) (display Ingrese el radio: ) (define radio (read)) (define perimetro (perimetro_circulo radio)) (define area (area_circulo radio)) (define volumen (volumen_esfera radio)) (display El perimetro es: ) (display perimetro) (display \nEl area es: ) (display area) (display \nEl volumen es: ) (display volumen) ) (programa_principal)
SCOPE GLOBAL
pi
3.1416 (perimetro_circulo r) (area_circulo r) (volumen_esfera r) (programa_principal) SCOPE LOCAL programa_principal
(define pi 3.1416) (define (perimetro_circulo r) (* 2 pi r) ) (define (area_circulo r) (* pi (* r r)) ) (define (volumen_esfera r) (* 4/3 pi (expt r 3)) ) (define (programa_principal) (display Ingrese el radio: ) (define radio (read)) (define perimetro (perimetro_circulo radio)) (define area (area_circulo radio)) (define volumen (volumen_esfera radio)) (display El perimetro es: ) (display perimetro) (display \nEl area es: ) (display area) (display \nEl volumen es: ) (display volumen) ) (programa_principal)
SCOPE GLOBAL
pi
3.1416 (perimetro_circulo r) (area_circulo r) (volumen_esfera r) (programa_principal) SCOPE LOCAL programa_principal
radio
(define pi 3.1416) (define (perimetro_circulo r) (* 2 pi r) ) (define (area_circulo r) (* pi (* r r)) ) (define (volumen_esfera r) (* 4/3 pi (expt r 3)) ) (define (programa_principal) (display Ingrese el radio: ) (define radio (read)) (define perimetro (perimetro_circulo radio)) (define area (area_circulo radio)) (define volumen (volumen_esfera radio)) (display El perimetro es: ) (display perimetro) (display \nEl area es: ) (display area) (display \nEl volumen es: ) (display volumen) ) (programa_principal)
SCOPE GLOBAL
pi
3.1416 (perimetro_circulo r) (area_circulo r) (volumen_esfera r) (programa_principal) SCOPE LOCAL programa_principal
radio
perimetro
31.416
(define pi 3.1416) (define (perimetro_circulo r) (* 2 pi r) ) (define (area_circulo r) (* pi (* r r)) ) (define (volumen_esfera r) (* 4/3 pi (expt r 3)) ) (define (programa_principal) (display Ingrese el radio: ) (define radio (read)) (define perimetro (perimetro_circulo radio)) (define area (area_circulo radio)) (define volumen (volumen_esfera radio)) (display El perimetro es: ) (display perimetro) (display \nEl area es: ) (display area) (display \nEl volumen es: ) (display volumen) ) (programa_principal)
SCOPE GLOBAL
pi
3.1416 (perimetro_circulo r) (area_circulo r) (volumen_esfera r) (programa_principal) SCOPE LOCAL programa_principal
radio
perimetro
31.416
(define pi 3.1416) (define (perimetro_circulo r) (* 2 pi r) ) (define (area_circulo r) (* pi (* r r)) ) (define (volumen_esfera r) (* 4/3 pi (expt r 3)) ) (define (programa_principal) (display Ingrese el radio: ) (define radio (read)) (define perimetro (perimetro_circulo radio)) (define area (area_circulo radio)) (define volumen (volumen_esfera radio)) (display El perimetro es: ) (display perimetro) (display \nEl area es: ) (display area) (display \nEl volumen es: ) (display volumen) ) (programa_principal)
SCOPE GLOBAL
pi
3.1416 (perimetro_circulo r) (area_circulo r) (volumen_esfera r) (programa_principal) SCOPE LOCAL programa_principal
radio area
5 78.54
perimetro
31.416
(* pi
25)
Op1
Op2
(define pi 3.1416) (define (perimetro_circulo r) (* 2 pi r) ) (define (area_circulo r) (* pi (* r r)) ) (define (volumen_esfera r) (* 4/3 pi (expt r 3)) ) (define (programa_principal) (display Ingrese el radio: ) (define radio (read)) (define perimetro (perimetro_circulo radio)) (define area (area_circulo radio)) (define volumen (volumen_esfera radio)) (display El perimetro es: ) (display perimetro) (display \nEl area es: ) (display area) (display \nEl volumen es: ) (display volumen) ) (programa_principal)
SCOPE GLOBAL
pi
3.1416 (perimetro_circulo r) (area_circulo r) (volumen_esfera r) (programa_principal) SCOPE LOCAL programa_principal
radio area
5 78.54
perimetro
31.416
(define pi 3.1416) (define (perimetro_circulo r) (* 2 pi r) ) (define (area_circulo r) (* pi (* r r)) ) (define (volumen_esfera r) (* 4/3 pi (expt r 3)) ) (define (programa_principal) (display Ingrese el radio: ) (define radio (read)) (define perimetro (perimetro_circulo radio)) (define area (area_circulo radio)) (define volumen (volumen_esfera radio)) (display El perimetro es: ) (display perimetro) (display \nEl area es: ) (display area) (display \nEl volumen es: ) (display volumen) ) (programa_principal)
SCOPE GLOBAL
pi
3.1416 (perimetro_circulo r) (area_circulo r) (volumen_esfera r) (programa_principal) SCOPE LOCAL programa_principal
radio area
5 78.54
perimetro volumen
31.416 532.6
(* 4/3 pi 125)
base
exp
(define pi 3.1416) (define (perimetro_circulo r) (* 2 pi r) ) (define (area_circulo r) (* pi (* r r)) ) (define (volumen_esfera r) (* 4/3 pi (expt r 3)) ) (define (programa_principal) (display Ingrese el radio: ) (define radio (read)) (define perimetro (perimetro_circulo radio)) (define area (area_circulo radio)) (define volumen (volumen_esfera radio)) (display El perimetro es: ) (display perimetro) (display \nEl area es: ) (display area) (display \nEl volumen es: ) (display volumen) ) (programa_principal)
SCOPE GLOBAL
pi
3.1416 (perimetro_circulo r) (area_circulo r) (volumen_esfera r) (programa_principal) SCOPE LOCAL programa_principal
radio area
5 78.54
perimetro volumen
31.416 532.6
Ejemplos
Ejemplo #1 : Haga una funcin que dados(inputs) los catetos de un tringulo, encuentre la hipotenusa. Ejemplo #2 : Haga un procedimiento que dados(inputs) los coeficientes de una ecuacin cuadrtica y un nmero, encuentre (despliegue) si el nmero es solucin de la ecuacin cuadrtica. Ejemplo #3: Haga un procedimiento que dado un String que representa un nombre completo (un nombre y un apellido separados por un espacio) despliegue cual es el nombre y cual es el apellido