Está en la página 1de 56

Subru%nas

Ciencias de la Computacin I

Ing. Andrea Quan 2013

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 Top-down approach

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

- Desplegar area del 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) . )

Argumentos: los valores que le mandamos a la subrutina (inputs)

Subrutinas
Parmetros: variables que representan los inputs a una subrutina
(define (area_anillo rinterior rexterior) . )

Argumentos: los valores que le mandamos a la subrutina (inputs)


(area_anillo 5 3 )

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)) )

(define (subrutina2) (define a 5) (define b 3) (+ (square a) (square b)) )

Funcin o procedimiento?
(define (subrutina3) (define a 5) (define b 3) (+ (square a)(square b)) (display (+ a b)) )

(define (subrutina4) (define a 5) (define b 3) (define c (+ a b)) c )

Variables locales y globales


Variables globales
Variables que pertenecen al entorno global de un programa. Pueden ser utilizadas por cualquier instruccin dentro del programa completo, incluyendo todas las subrutinas (scope global)

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

SCOPE LOCAL perimetro_circulo(5)

(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

SCOPE LOCAL area_circulo(5)

(* pi

25)

SCOPE LOCAL *(5,5)

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

SCOPE LOCAL volumen_esfera(5)

(* 4/3 pi 125)

SCOPE LOCAL expt(5,3)

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

También podría gustarte