You are on page 1of 8

Integrantes del Grupo (o Individual)

Nro. Nombre C.I.


1 Yusneyi Carballo Barrera 00.000.000

UNIVERSIDAD CENTRAL DE VENEZUELA


ESCUELA DE COMPUTACIN
ALGORITMOS Y PROGRAMACIN

TAREA Nro 2. REPASO


Ciclos, Acciones, Funciones y Pase de Parmetros

EJEMPLOS DE SOLUCIN

OBJETIVOS:
Repasar Ciclos (tema 5) y Procedimientos (tema 6).
Repasar y consolidar los elementos conceptuales y prcticos de la materia, de manera que
estemos a punto para el momento de la realizacin del quiz y parcial 2.

EJEMPLO DE SOLUCIN, EJERCICIO 2:


2. Escribe una accin Principal que lea un conjunto de N nmeros, los sume y llame a funciones
encargadas de calcular la media, la varianza y la desviacin estndar de cada nmero ledo.
La media y varianza de los N nmeros X1, X2, X3... Xn se pueden calcular usando las siguientes frmulas:
2
1
n n

x
1
2 xi
1
media var ianza xi2 desv.Estndar var ianza
n i 1
i
n i 1
n i 1
Caracas, 17-Marzo-2014

Anlisis del Ejercicio


Las sumatorias ( ) se calculan utilizando ciclos, en este caso el ms natural es el ciclo Para, pero tambin
puede usarse Repetir o Mientras. En las sumatorias se utiliza adems de la variable i o ndice del Para, una
variable acumuladora, por ejemplo llamada S, la cual inicializamos en 0 porque va a ir acumulando o
sumndose en ella los valores de cada iteracin o repeticin del ciclo.

Las productorias ( ) tambin se calculan utilizando ciclos. Su calculo es parecido al de la sumatoria, se


utiliza la variable i o ndice del Para, una variable acumuladora, por ejemplo llamada P, la cual inicializamos
en 1 porque va a ir acumulando resultados de multiplicaciones (si la iniciamos en 0 el resultado de 0 * nuevo
valor, siempre ser 0).

La Media se calcula utilizando un ciclo Para, que va desde i=1 hasta n, sumando los valores x
dados por el usuario

La Varianza se calcula utilizando dos ciclos Para, ambos desde i=1 hasta n, el primer ciclo suma
los valores de x2 y el segundo los valores de X, pero estos valores son los mismos que la media
calculada antes, elevada al cuadrado (media2)

La Desviacin Estndar no necesita un ciclo porque es la raz cuadrada de la varianza que


calculamos antes y que debemos tener almacenada en una variable.

Profa. Yusneyi Carballo Barrera. 20.04.2014 1


Cmo se traducen estas series o frmulas en Pseudocdigo?
Accin CalculosEstadsticos
// utiliza funciones para calcular los estadsticos media, varianza y desviacin estndar
// se asume que los valores X dados por el usuario son de tipo Entero, pero tambin pueden ser de tipo Real

Entero n; Real media, varianza, desvEstndar;

// Solicitamos al usuario la cantidad de valores para el clculo, es decir el valor de n y lo validamos


Repetir
Escribir (Indique la cantidad de valores que se va a procesar, el valor de n); Leer (n);
Hasta (n 1);
// llamada a las funciones que realizarn los clculos

media = calcularMedia(n);
varianza = calcularVarianza(n, media);
desvEstndar = calcularDesvEstndar(varianza);

Escribir (Resultado del clculo de la Media: + media + resultado del clculo de la Varianza: + varianza
+ resultado del clculo de la Desviacin Estndar: + desvEstndar);
FAccin;

// funciones llamadas o invocadas en la Accin Principal

Funcin calcularMedia(Entero n): Real


// calcula la sumatoria de la frmula estadstica Media
Entero i, X; Real M, S;

x
S = 0; // inicializando la variable acumuladora

// Realizamos el ciclo Para que calcula la sumatoria de los valores de X i


Para i=1 hasta n en 1 hacer
S es i 1
// solicitamos cada valor de X al usuario
Escribir (Suministre el valor + i + de X); Leer (X);
S = S + X; // acumulamos o sumamos cada valor de x, desde el primer X hasta el ltimo X
FPara;

// terminamos de calcular la frmula de la media


M = 1 / n * S;
Retornar (M); // la funcin retorna o devuelve el resultado que calcul
FFuncin;

Funcin calcularVarianza(Entero n; Real Media): Real


// calcula la frmula estadstica de la Varianza, aprovechando el resultado ya calculado de la media
Entero i, X;
Real V, S;

S = 0; // inicializando la variable acumuladora n 2

Profa. Yusneyi Carballo Barrera. 20.04.2014


S es
x
i 1
i 2
// Realizamos el ciclo Para que calcula la primera sumatoria de los valores de X2
Para i=1 hasta n en 1 hacer
// solicitamos cada valor de X al usuario
Escribir (Suministre el valor + i + de X); Leer (X);
S = S + X ^ 2; // acumulamos o sumamos cada valor de X2, desde el primer X hasta el ltimo X
FPara;

// terminamos de calcular la frmula de la varianza, reutilizando o aprovechando el valor


// previamente calculado de la media

V = 1 / n * S (1 / n ^ 2) * media ^ 2 ;
// 1 / n * S es la traduccin a pseudo-cdigo de la sumatoria de la izquierda
// (1 / n ^ 2) * media ^ 2 es la traduccin a pseudo-cdigo de la sumatoria de la derecha

Retornar (V); // la funcin retorna o devuelve el resultado que calcul


FFuncin;

Funcin calcularDesvEstndar(Real Varianza): Real


// calcula la frmula estadstica Desviacin Estndar
Real D;

// esta clculo no necesita sumatoria ni ciclos, es una frmula directa en donde se calcula la raz cuadrada
D = Varianza ^ (1 / 2);

Retornar (D); // la funcin retorna o devuelve el resultado que calcul


FFuncin;

Profa. Yusneyi Carballo Barrera. 20.04.2014 3


EJEMPLO DE SOLUCIN, EJERCICIO 3:
Construye una accin a la cual se le suministra un valor en segundos y calcula los segundos que le faltan para
obtener la siguiente cantidad exacta en minutos (esto implica utilizar pase de parmetros por valor y por
referencia). Luego utilice esta accin, en una accin Principal en donde se escriba la cantidad de segundos que
hacen falta y los minutos que se obtienen.
Considere que slo debe llamar a la accin que calcula los segundos faltantes si la cantidad de segundos
suministrada por el usuario no es mltiplo de 60; si la cantidad de segundos de entrada es mltiplo de 60 se
debe informar directamente desde la accin Principal los minutos a que equivalen.
Alcance de Variables: Identifique para las acciones y funciones creadas por Usted las variables globales, locales
y no locales a cada procedimiento, parmetros actuales y parmetros formales.

Anlisis del Ejercicio


Este ejercicio nos pide bsicamente convertir una cantidad en segundos a su equivalente en minutos.
Para resolverlo debemos utilizar las operaciones de divisin de nmeros enteros div y mod, dividiendo entre
60 ya que 1 minuto tiene 60 segundos.
El ejercicio nos pide considerar dos posibilidades:
1. Si la cantidad de segundos, por ejemplo llamada s, es mltiplo exacto de 60, informamos en la
Accin Principal la cantidad de minutos a la que equivale.
2. Si la cantidad de segundos no equivale a una cantidad exacta de minutos, entonces llamamos a una
accin que deber calcular la cantidad de segundos faltantes para completar el prximo minuto
exacto.
Los resultados deben escribirse en la Accin Principal, por lo tanto debemos hacer buen uso del pase de
parmetros por valor y por referencia.

Parte 1. Cmo se traduce este anlisis en Pseudocdigo?


Accin procesarSegundos
// accin Principal que solicita y valida datos de entrada, adems de invocar a procedimientos de apoyo y
// escribir los resultados del algoritmo

Entero seg, min, seg2;

// Solicitamos al usuario la cantidad de segundos a procesar y validamos que sea una cantidad positiva
Repetir
Escribir (Suministre una cantidad positiva de segundos a procesar); Leer (seg);

// validacin adicional y recordatorio en caso de que el usuario suministre un valor negativo


Si (seg < 0) Entonces
Escribir (Estimado usuario, le recordamos que la cantidad de segundos debe ser positiva);
FSi;
Hasta (seg 0);

Profa. Yusneyi Carballo Barrera. 20.04.2014 4


// verificamos la cantidad de segundos suministrada y descartamos los posibles casos
Si (seg == 0) Entonces
Escribir (La cantidad de minutos es cero (0), porque la cantidad de segundos tambin es cero (0));
Sino
Si (seg mod 60 == 0) Entonces
min = seg div 60; // con la divisin entera entre 60 transformamos los segundos a minutos
Escribir (Se suministraron + seg + segundos, equivalentes a + min + minutos.);
Sino
transformarSegundos(seg, min,seg2); // se llama a la accin encargada de realizar la transformacin
Escribir (Se suministraron + seg + segundos, equivalentes a + min + minutos, faltan
+ seg2 + segundos para completar el minuto + (min + 1) );
FSi;
FSi;
FAccin procesarSegundos; // termina la accin principal

// acciones invocadas en la Accin Principal

Accin transformarSegundos(Entero s; Var Entero m, s2)


// Transforma la cantidad de segundos s a su equivalente en minutos, y calcula segundos faltantes
// para el prximo minuto exacto

m = s div 60; // mediante esta divisin entera calculamos los minutos contenidos en la variable s
s = s mod 60; // mediante esta divisin calculamos el resto o segundos que sobran
// NOTA: siempre nos va a sobrar aunque sea 1 segundo, porque esta accin slo es
// llamada si la divisin de seg / 60 no es exacta en la accin Principal

s2 = 60 - s; // calculamos la cantidad de segundos para llegar el prximo minuto

// NOTA, USO DEL PASE DE PARMETROS:


// Importante ver que las nicas variables que se devuelven a la accin principal con un nuevo valor o
// cambiadas con m y s2, que son las pasadas por Referencia.
// en cambio la variable s, como es pasada por Valor, cambia dentro de esta accin transformarSegundos, pero
// mantiene su valor original en la accin que la invoca, es decir, no cambia en procesarSegundos.

FAccin transformarSegundos;

Profa. Yusneyi Carballo Barrera. 20.04.2014 5


Parte 2. Alcance de Variables
Alcance de Variables: Globales del Algoritmo, Locales y No Locales
procesarSegundos >> Variable Globales seg, min, seg2
Son las variables declaradas en la accin o
funcin Principal del algoritmo

Locales No Locales
Variables, parmetros y procedimientos Variables locales y no locales de quien lo invoc, sin incluir, las
invocados dentro de la accin o funcin que estn re-declaradas dentro del procedimiento, es decir,
identificadas con el mismo nombre de variable.
Todo procedimiento es no local a s mismo.

procesarSegundos seg, min, seg2, procesarSegundos (porque todo procedimiento es no


transformarSegundos local a s mismo)

transformarSegundos s, m, s2 (parmetros formales de la seg, min, seg2, procesarSegundos


accin) (identificadores locales y no locales de quien la llama)
transformarSegundos (porque todo procedimiento es no
No tiene variables declaradas local a s mismo)
internamente, ni llama a otros
procedimientos.

Parmetros Actuales y Parmetros Formales:


Parmetros Formales Parmetros Actuales
Son las variables indicadas en la declaracin Son las variables o procedimientos utilizados en la
formal, cabecera o firma de la accin o llamada al procedimiento dentro de otra accin o
funcin. funcin.

procesarSegundos Esta accin principal no tiene seg, min,seg2;


parmetros formales en su cabecera. usada en la llamada
La mayora de las veces no los transformarSegundos(seg, min,seg2)
usamos para la accin principal.

transformarSegundos Entero s; Var Entero m, s2 No tiene, no llama internamente a ningn


procedimiento.

Parte 3. Corrida en fro del Algoritmo


Caso de prueba 1: cantidad de segundos suministrados seg = 0
Tabla de variables de la accin Principal procesarSegundos

seg min seg2 Acciones, mensajes al usuario y salidas

-- -- -- Escribir (Suministre una cantidad positiva de segundos a procesar)


(declaradas, (declaradas, (declaradas, Leer(0);
pero no pero no pero no
inicializadas) inicializadas) inicializadas)

0 -- -- seg no es <0, no se ejecuta el condicional


seg 0, salimos del repetir de validacin
seg == 0, se cumple la condicin del primer condicional de procesamiento

Respuesta mostrada al usuario:


Escribir (La cantidad de minutos es cero (0), porque la cantidad de
segundos tambin es cero (0));
Fin del algoritmo.

Profa. Yusneyi Carballo Barrera. 20.04.2014 6


Caso de prueba 2: cantidad de segundos suministrados seg = -3.720
Tabla de variables de la accin Principal procesarSegundos

seg min seg2 Acciones, mensajes al usuario y salidas

-- -- -- Escribir (Suministre una cantidad positiva de segundos a procesar)


Leer(-3720)

-3720 seg es <0, se ejecuta el condicional


Escribir (Estimado usuario, le recordamos que la cantidad de segundos debe
ser positiva)
Como seg < 0, se ejecuta nuevamente el ciclo Repetir de validacin

Escribir (Suministre una cantidad positiva de segundos a procesar)


Leer(3720)

3720 62 seg no es <0, no se ejecuta el condicional


seg 0, salimos del repetir de validacin
seg == 3720, se cumple la condicin Sino del condicional de procesamiento
se cumple el condicional seg mod 60 == 0, porque 3720 es mltiplo de 60, es
decir 3720 mod 60 tiene residuo 0
min = seg div 60, por lo tanto min = 62

Respuesta mostrada al usuario:


Escribir (Se suministraron + 3720 + segundos, equivalentes a + 62 +
minutos. );
Fin del algoritmo.

Caso de prueba 3: cantidad de segundos suministrados seg = 3.728


Tabla de variables de la accin Principal procesarSegundos

seg min seg2 Acciones, mensajes al usuario y salidas

-- Escribir (Suministre una cantidad positiva de segundos a procesar)


Leer(3728)

3728 -- -- seg no es <0, no se ejecuta el condicional


(declaradas, (declaradas, seg 0, salimos del repetir de validacin
pero no pero no seg == 3728, se cumple la condicin Sino del condicional de procesamiento
inicializadas) inicializadas)
seg no mltiplo de 60, porque 3728 mod 60 tiene residuo, sobran 8 segundos
se entra por el Sino y se llama a la accin transformarSegundos(seg,
min,seg2)
// ver tabla de variables de la accin transformarSegundos, prx. pg.

3728 62 52 Al regresar de transformarSegundos, se actualizan los valores de las variables


(pase por (pase por (pase por pasadas por parmetro
valor, no referencia, si referencia, si
cambia) cambia) cambia) Respuesta mostrada al usuario:
Escribir (Se suministraron + 3728 + segundos, equivalentes a + 62 +
minutos, faltan + 52 + segundos para completar el minuto + 63 );

Fin del algoritmo.

Profa. Yusneyi Carballo Barrera. 20.04.2014 7


Tabla de variables de la accin Principal transformarSegundos

s m s2 Acciones, mensajes al usuario y salidas

3728 -- -- se invoca a la accin con los valores


transformarSegundos(3728, indefinido, indefinido)

3728 62 52 m = s div 60, por lo tanto, m = 3728 div 60; m = 62


s = s mod 60, por lo tanto, s = 3728 mod 60; s = 8
s2 = 60 - s, por lo tanto, s2 = 60 - 8; s2= 52

Los valores de las variables m y s2 se informan a la accin Principal


procesarSegundos por ser pasadas por referencia.

Fin de la accin y regresamos a la accin invocante, en este caso


regresamos al punto de ejecucin en la accin Principal.

Profa. Yusneyi Carballo Barrera. Ciudad Universitaria de Caracas

20.Abril.2014

Profa. Yusneyi Carballo Barrera. 20.04.2014 8