Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

C2 Funciones

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 14

IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

Asignatura: Introducción a la programación


Carrera: Ingeniería Informática
Tipo de Curso: CRD Año: 1ro. Semestre: 1ro.

Tema 2: Introducción a la programación

Conferencia # 2: Funciones.

Contenidos:
1. Bloques.
2. Funciones suministradas. Cap 3, Epíg 3.6, pág 45; Cap. 4, pág 62
3. Funciones construidas por el programador. Transferencia por valor. Cap. 3, Epíg.3.5,
pág 40
4. Función main() Cap1, Epíg 1.5, pág 19
5. Prototipo de funciones.
6. Homonimia de funciones
7. Entrada/salida de datos por teclado.
8. Estudio Independiente

Bibliografía:
Aprenda Java como si estuviera en primero

Introducción

1.- Bloques

Al construir sus aplicaciones verá que estas están formadas por conjuntos de sentencias
agrupadas que se denominan bloques organizados según las reglas sintácticas en cada caso.
Para delimitar un bloque se utilizan las llaves, {}.

El ejemplo visto en la conferencia anterior puede verse como un bloque y se escribiría


como sigue:
{
/* secuencia que calcula el volumen de un cilindro hueco
conocidos su radio interior, radio exterior y su longitud*/
const float PI = 3.1416;
float radioExt= 5.12;
float radioInt= 3.4;
float longitud= 10;
float areaBaseExterior= PI * radioExt * radioExt;
float areaBaseInterior= PI * radioInt * radioInt;
float areaBase= areaBaseExterior – areaBaseInterior;
float volumen= areaBase * longitud;
}
Es una buena práctica indentar las sentencias agrupadas en un bloque dos espacios hacia la
derecha con respecto a las llaves, tal como se hizo en el ejemplo. De esta manera aumenta
la claridad del código.
IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

Los bloques pueden estar anidados, o sea, un bloque puede estar dentro de otro bloque.

Las declaraciones de variables y constantes que se hacen dentro de un bloque tienen


alcance solo para el interior de dicho bloque. Esto quiere decir que si una variable se
declara dentro de un bloque no puede ser referenciada fuera del mismo. Por ejemplo:

{ /*Este bloque solo puede usar las variables a, b y c. La


variables k y r son locales al bloque más interno y por tanto
este bloque más externo no las puede usar*/
int a= 10, b= 20;
float c= 5.5;
{ /*dentro de este bloque se pueden usar todas las variables
que se han definido, o sea las del bloque más externo y la
de este más interno: a, b, c, k y r*/
int k;
k= a + b;
float r= c * k;
}
a= a+1;
b= b-1;
c= (float)a/b;
}

En la medida que se avance en el curso se irá indicando dónde es necesario construir


bloques de sentencias.

2- Funciones Suministradas.

Una función puede verse como una caja negra que, recibiendo unos datos de entrada,
realiza algunas operaciones para devolver un valor. O sea:
Datos de entrada Función Resultado

Las funciones según quien las construye se clasifican en:

 Funciones suministradas
 Funciones construidas por el programador

Funciones suministradas
En todos los ambientes de desarrollo los programadores disponen de un grupo de funciones
ya definidas por los compiladores que pueden ser usadas para resolver problemas muy
frecuentes. Por ejemplo, tal es el caso las funciones trigonométricas seno, coseno o las
funciones matemáticas raíz cuadrada, exponencial, valor absoluto, logaritmo natural, etc.

En Java algunas de estas funciones son:

Función Descripción Ejemplo


sqrt(x) raíz cuadrada de x sqrt(900) es 30.0
IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

exp(x) función exponencial ex exp(1.0) es 2.718282


sin(x) seno trigonométrico de x sin(0.0) es 0-0
power(x,y) x elevado a la potencia y (xy) power(2,7) es 128.0

Cada una de las funciones suministradas se encuentra en una librería (o biblioteca o clase)
que será necesario especificar para poder usarlas. Por ejemplo, power() se encuentra en la
librería Math y para poder usarla debemos incluir (poner en uso) dicha librería en nuestra
aplicación de la siguiente manera import java.lang.Math. Más adelante en el curso se
amplía el tema de las librerías o clases de utilidad como también se les conoce.

Algunas funciones suministradas tienen entre paréntesis uno o más argumentos que son los
valores que necesita la función para evaluarse y devolver un resultado. A los argumentos se
les conoce en programación como parámetros.

Las ayudas en línea de los ambientes de desarrollo y los libros o manuales de referencia de
los lenguajes contienen una descripción de todas las funciones disponibles. En ellos se
puede encontrar el identificador de cada función y sus argumentos, para poder usar las
funciones correctamente, así como el paquete donde se encuentra donde se encuentra.

En los programas las funciones suministradas se pueden invocar donde quiera que se
puede escribir una expresión y cuando se invocan se deben colocar entre paréntesis los
valores de los argumentos o paréntesis vacíos si la función no requiere argumentos.

Ejemplos de invocaciones a funciones suministradas

float fx= a*b+sqrt(x)+3;


float y= power(x,0.5) /*el primer argumento es el valor de la

base y el segundo el exponente */

En cualquiera de los ejemplos anteriores la variable x debe haber sido declarada e


inicializada previamente.

Al invocar a una función esta siempre devuelve un valor. Por tanto, al evaluar las
expresiones donde ellas se encuentran es necesario primero evaluar la función, para tomar
su valor y con él evaluar la expresión.

¿Qué hace el compilador cuándo encuentra la invocación a una función? Podemos explicar
el procedimiento del compilador más o menos como sigue:

En el punto donde aparece la invocación, se detiene la ejecución de esa sentencia, se


transfiere el control a la zona donde está implementada la función, esta se ejecuta y retorna
un valor. Se regresa al punto donde aparecía la invocación, se sustituye la invocación por el
resultado retornado por la función y con este valor se continúa evaluando la expresión. Por
ejemplo, al evaluar la expresión: a*b+sqrt(x)+3 el compilador realizará los pasos en el
orden siguiente:
IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

1ro: multiplica a y b
2do: se transfiere el control de la ejecución a la función sqrt(x) pasándole a través del
parámetro el valor de la variable x, se ejecuta el cuerpo de la función y se retorna un
resultado que se suma al valor resultante del producto a*b
3ro: al resultado anterior se le suma 3.

3- Funciones construidas por el programador.

Los programadores también pueden construir sus propias funciones o métodos y después
invocarlas en las diferentes partes de la aplicación donde se necesiten. Para ello es
necesario construir un bloque con la siguiente sintaxis:

<tipo de la función> <identificador de la función> (lista de parámetros formales) {

<secuencia de declaraciones y sentencias>


}

donde:
tipo de la función: es el tipo del valor que devuelve la función una vez que es invocada.
lista de parámetros formales: todos los argumentos separados por comas y especificando el
tipo de cada uno. Por ahora diremos que son los datos que debe recibir la función para que
pueda ejecutarse correctamente.

Dentro del cuerpo de la función generalmente es necesario colocar al menos una sentencia
return para indicar el valor que devuelve la función. Más adelante en el curso cuando se
amplíen los conocimientos veremos que esto cambia para funciones sin tipo.

Por ejemplo, la siguiente función calcula el volumen de un cilindro hueco recibiendo como
datos el radio exterior, el radio interior y la longitud. O sea, veremos cómo hacer una
función con el fragmento de código que se hizo en la conferencia anterior.

float volumen(float radioExt,float radioInt,float longitud)


{
/*calcula el volumen de un cilindro hueco conocidos su radio
interior, radio exterior y su longitud*/
const float PI= 3.1416;
float areaBaseExt= PI * power(radioExt,2);
float areaBaseInt= PI * power(radioInt,2);
float areaBase= areaBaseExt – areaBaseInt;
return areaBase * longitud;
}

Nótese que:
 La función recibe los valores del radio exterior, el radio interior y la longitud a través de
los parámetros radioExt, radioInt y longitud respectivamente, esto permite calcular
el volumen del cilindro hueco para distintos valores de radios y longitud.
IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

 Los parámetros se declaran en el encabezamiento, por lo que no es necesario volver a


declarar dichos identificadores en el cuerpo de la función.
 Todos los identificadores declarados dentro de la función son locales a esta. O sea, no
pueden ser accedidos desde el exterior de la función.
 En el cuerpo de la función hay una sentencia return. Esta sentencia es la encargada de
retornar el valor que devuelve la función, por tanto la expresión que sigue a la palabra
reservada return tiene que ser del mismo tipo que el tipo de la función, o de algún
tipo compatible con él.
 Una vez que se ejecuta la sentencia return se abandona la función.

Al igual que las funciones suministradas, las funciones construidas por el programador son
invocadas en expresiones. La invocación se realiza escribiendo el identificador de la
función y entre paréntesis el valor de sus argumentos o parámetros actuales como también
se les conoce.

Transferencia por valor

Cuando el compilador intenta evaluar la expresión donde se inserta la invocación a una


función, se transfiere el control a la función y los valores de los argumentos en la
invocación son asignados a los parámetros definidos en el encabezamiento de la función.
Con esos valores se ejecuta la función retornando un resultado al punto donde se invocó.
Por ejemplo, para la función que calcula el volumen de un cilindro hueco, construida
anteriormente podemos hacer la siguiente invocación:

float v= volumen(13.5,5,10);

En este caso el compilador transfiere el control a la función volumen asignándole al


parámetro radioExt el valor 13.5, a radioInt el valor 5, y a longitud el valor 10. Es
como si hicieran las siguientes asignaciones:
float radioExt= 13.5;
float radioInt= 5;
float longitud= 10;

Con estos valores se ejecuta la función retornando el valor: 4937.65

Podemos esquematizar esta situación como sigue:


Parámetros formales

float volumen(float radioExt,float radioInt,float longitud)

float V= volumen(13.5,5,10);

Parámetros actuales o argumentos


IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

A este tipo de transferencia en la que se transfieren los valores de los parámetros actuales a
los parámetros formales se le llama transferencia por valor. Más adelante en el curso
veremos que existe otra forma de transferir parámetros desde y hacia funciones.

Nótese que al tratarse de una transferencia por valor los parámetros actuales pueden ser:
 Constantes
En el ejemplo anterior solo se transfieren valores constantes.
También pueden usarse identificadores de constantes declaradas previamente.
 Variables
Por ejemplo: float v= volumen(RE,RI,L); donde RE, RI y L son variables que
tienen que haber tomado valor previamente.
 Expresiones
Por ejemplo:
float v= volumen(RI+7,RI,L); donde RI y L son variables que tienen que haber
tomado valor previamente. Para el cilindro de este caso el radio exterior es 7 unidades
mayor que el radio interior.
float v= volumen(RE,RE*0.5,L); donde RE, y L son variables que tienen que haber
tomado valor previamente. El radio interior es la mitad del radio exterior

Los parámetros formales y actuales tienen que concordar en cantidad, tipo y orden.

Java no permite construir funciones anidadas, o locales, o sea una función dentro de otra.
En otros lenguajes como Pascal, Object Pascal esto sí es posible.

En próximas conferencias se profundizará en las funciones en Java.

Ventajas de la construcción de funciones


1. Permiten aislar fragmentos de código con una lógica concreta e identificarlo con un
nombre.
2. Permiten programar un algoritmo una sola vez y ejecutarlo cada vez que sea
necesario en las diferentes partes de una aplicación.
3. Hacen más fácil la depuración del código y la puesta a punto.
4. Hacen más fácil el trabajo en equipo.

4.- Función main()

Es una función que debe aparecer en todo programa en Java. Como su nombre lo indica es
la función principal del programa y es por donde este comienza a ejecutarse.

Durante la fase de enlazado de la compilación el enlazador siempre añade a cualquier


programa Java un módulo especial, de inicio, que es realmente el punto de entrada a la
ejecución del programa. Este módulo realiza diversas tareas previas a la ejecución
propiamente dicha. Por ejemplo, iniciar todas las variables estáticas o globales y realizar
determinadas verificaciones del hardware. Finalmente pasa el control a la función que
responde al nombre de main y le pasa algunos argumentos en base a datos que ha recibido
a su vez del Sistema Operativo; esta es la razón por la que todos los programas Java deben
IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

contener una función con este nombre. Así pues, main representa el punto de la ejecución a
partir del cual el programador toma el control de la ejecución. Antes de esto ya han
sucedido muchas cosas en el programa.

La función main NO puede ser invocada explícitamente a lo largo del programa, es


invocada de forma automática por el módulo de inicio.

El orden en que aparezcan las funciones dentro del código no es significativo. O sea, puede
escribirse primero la función main y a continuación otras funciones o viceversa.

5.- Prototipo de funciones

Un prototipo de función le indica al compilador el tipo de dato regresado por la función, el


número de parámetros que la función espera recibir, así como el tipo y orden en que estos
deben ser enviados. El compilador utiliza los prototipos de funciones para verificar las
llamadas a funciones.

Para crear un prototipo de función solo se necesita especificar su tipo de regreso seguido de
su identificador y entre paréntesis el tipo de cada uno de los parámetros que espera recibir
en el orden en que serán esperados. No es necesario incluir en el prototipo de funciones el
identificador de cada parámetro, aunque puede hacerse para documentar mejor el código.
De incluirse serán ignorados por el compilador. Sin embargo, es obligatorio escribir los
identificadores en la implementación.

Los prototipos de funciones siempre se escriben terminando en punto y coma (;).

Ejemplos:

 char uperCase(char);//función que espera un char y regresa un char


 float average(int, int, int); /*función que regresa un flotante y
recibe tres parámetros enteros */

Cuando la llamada a la función no coincide con su prototipo se genera un error de sintaxis,


lo mismo ocurrirá si el prototipo y la implementación no coinciden.

Otra característica importante de los prototipos de funciones es la coerción de argumentos,


o sea, obligar a los argumentos al tipo apropiado. Por ejemplo, la función volumen
construida anteriormente puede ser invocada como volumen(13.5, 5,10) tal y como se
mostró en el ejemplo anterior. Nótese que el segundo y tercer argumentos son enteros
mientras que los parámetros formales correspondientes son de punto flotante. Esto es
posible porque los valores de los argumentos que no correspondan precisamente a los tipos
de los parámetros del prototipo serán convertidos al tipo apropiado antes de que la función
sea llamada. Estas conversiones pueden llevar a resultados incorrectos si no se siguen las
reglas de promoción de C. Estas reglas definen cómo deben ser convertidos los tipos a
otros tipos, sin perder datos y se aplican no solo en la invocación de funciones sino en
cualquier expresión que contenga dos o más tipos de datos involucrados. El tipo de cada
valor en una expresión es automáticamente promovido al tipo más alto en la expresión (de
IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

hecho se crea una versión temporal para cada valor y se utiliza para la expresión
conservándose los valores originales). A continuación, se muestra la jerarquía de
promoción para los tipos de datos conocidos hasta ahora, comenzando por los tipos más
alto hasta los tipos más bajos:

double /*tipo de dato de punto flotante que acepta valores de


mayor magnitud y con más precisión.*/
float
int
char

Según esta jerarquía un char puede convertirse a un int, un int a un float y un float
a un double. Las conversiones contrarias, o sea, de tipos superiores a tipos inferiores,
implican pérdida de información, que por lo general resultan en valores incorrectos. Por
ejemplo, la conversión de un float a un int truncaría el número real, tomando solo la
parte entera de dicho número, por lo que se perdería la parte decimal. Por ejemplo, si la
función int square(int); que eleva al cuadrado el argumento de entrada se invoca por
square(4.5) regresaría 16 y no 20.25.

En Java no es obligatorio escribir prototipos de funciones. Si el prototipo de función de una


función no se incluye en el programa el compilador lo genera automáticamente a partir de
la primera ocurrencia de la función.

6.- Homonimia de funciones.

Java permite definir, en una misma aplicación, más de una función con el mismo
identificador, siempre que tengan diferentes conjuntos de parámetros, por lo menos en lo
que se refiere a sus tipos. Esta capacidad se llama Homonimia de Funciones y a las
funciones que cumplen estas condiciones se les conoce como funciones homónimas. La
homonimia de funciones se utiliza por lo general para crear varias funciones del mismo
nombre, que ejecutan tareas similares, sobre tipos de datos diferentes. Esto aporta más
claridad a los programas.

Cuando se invoca a una función homónima, el compilador selecciona de forma automática


la función correcta examinando número, tipo y orden de los argumentos de la llamada.

Las funciones homónimas pueden o no tener tipos de regresos distintos. Los conjuntos de
parámetros de funciones homónimas tienen que diferenciarse en cantidad y/o tipo de cada
parámetro. Debe prestarse especial atención a la homonimia de funciones utilizando
parámetros por omisión, ya que esto puede causar ambigüedad, pues una función con
argumentos por omisión omitidos pudiera ser llamada en forma idéntica a otra función
homónima.

Ejemplos

float volumen(float,float,float); //volumen de un cubo: a*b*c


float volumen(float,float); //volumen de un cilindro: П*r2*l
IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

float volumen(float); //volumen de una esfera: 4*П*r3


int mayor(int,int,int); //el mayor de tres enteros
int mayor(float,float,float); //el mayor de tres flotantes
bool equal(int,int); //deveuelve true si dos enteros son iguales
bool equal(float,float); //deveuelve true si dos float son iguales
bool equal(char,char); //deveuelve true si dos char son iguales
bool equal(bool,bool); //deveuelve true si dos boolean son iguales

Ambigüedad en funciones homónimas

Si por ejemplo, las funciones tuvieran argumentos por omisión, como en el caso:

int a(int=1,float= 0);


float a(char=‘a’,int=3,float=5.0);
char a(char);

cómo el compilador podría distinguir cuál función se está invocando en cada uno de los
siguientes llamados:

a()
a(‘b’)

Por supuesto, el compilador no tiene cómo resolver esta ambigüedad y por tanto resultaría
en un error.

7.- Entrada y salida de datos por teclado

A una función le entran a través de sus parámetros los valores necesarios para su ejecución,
pero cómo la aplicación conoce los datos que debe transferir a las funciones cuando estos
varían de una ejecución a otra y quien los conoce es el usuario. Por otra parte, cómo la
aplicación le informa a los usuarios los resultados de cierto procesamiento.

La entrada y salida de datos se hace según el ambiente de desarrollo que se utiliza y el tipo
de interfaz desarrollada para la aplicación. En este curso explicaremos cómo se realiza en el
ambiente Netbeans para aplicaciones consola. En la asignatura DPOO se estudiará cómo se
hace la entrada y salida cuando se construyen aplicaciones con interfaces gráficas.

Entrada
La entrada estándar del ordenador es el teclado. Java, como lenguaje de programación,
ofrece las herramientas necesarias para leer los datos que un usuario introduce en un
programa a través del teclado. Para ello, se emplea el objeto System.in, perteneciente a la
clase InputStream.
El objeto System.in ofrece diversos métodos para leer del teclado. El más básico es el
método read.
Ejempo: char variable=(char) System.in.read();
IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

El método read devuelve el código ASCII, en decimal, del carácter introducido. El método
read permite leer un único carácter a la vez. Para no tener que leer de carácter en carácter,
Java ofrece una clase diferente: BufferefReader. Se crea un objeto de la clase
BufferedReader a partir de la clase InputStream.
Ejemplo:
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);

Para leer una frase del teclado, se utiliza el método readLine.


Este método lee todos los caracteres introducidos por el usuario hasta detectar un salto de
línea.
Ejemplo: String frase=br.readLine();

En ocasiones existen programas en los que se necesita leer otros tipos de datos, por
ejemplo, números. Para transformar la cadena de caracteres que lee el método readLine de
la clase BufferedReader se puede utilizar el código:
int numero=Integer.parseInt(br.readLine());

Código ASCII
El código ASCII, mencionado anteriormente, es un código de caracteres basado en el
alfabeto latino, tal como se usa en inglés moderno. Utiliza 7 bits para representar los
caracteres, aunque inicialmente empleaba un bit adicional (bit de paridad) que se usaba para
detectar errores en la transmisión. ASCII fue publicado como estándar por primera vez en
1967 y fue actualizado por última vez en 1986. En la actualidad define códigos para 32
caracteres no imprimibles, de los cuales la mayoría son caracteres de control que tienen
efecto sobre cómo se procesa el texto, más otros 95 caracteres imprimibles que les siguen
en la numeración (empezando por el carácter espacio).
IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

Casi todos los sistemas informáticos actuales utilizan el código ASCII o una extensión
compatible para representar textos y para el control de dispositivos que manejan texto como
el teclado.
Salida
Java utiliza dos objetos para la salida: System.out y System.err.
 System.out: implementa la salida estándar (consola). Los métodos que proporciona
para controlar la salida son:
o print(a) imprime a en la salida, donde a puede ser cualquier tipo básico de
Java ya que Java hace su conversión automática a cadena.
o println(a) igual que el método anterior, salvo que imprime un salto de línea
después de a
 System.err: implementa una salida en caso de error. Los métodos de este objeto son
exactamente iguales a los de System.out. Suele usarse en las construcciones try-
catch.

Normalmente la salida es la pantalla, pero puede ser interesante redirigirlo, por ejemplo, a
un fichero, para diferenciar claramente ambos tipos de salida.

Conclusiones

Que los programadores puedan definir sus propias funciones tiene grandes ventajas. En
primer lugar permite aplicar el enfoque divide y vencerás y por tanto abordar un problema a
través de los distintos subproblemas en que este puede dividirse, en segundo lugar reutilizar
código, en tercer lugar aporta mayor claridad a los programas y por consiguiente se obtiene
un código mucho más fácil de depurar y mantener. Por último, no solo se puede dividir el
problema sino los propios equipos de programadores, de manera que cada uno programe
determinados módulos aumentando la productividad del equipo de desarrollo y logrando un
adecuado nivel de ocultamiento de información. Un buen principio de diseño de funciones
es el de mínimo privilegio, que parte de dar a conocer a cada función solo la información
que necesite para realizar las tareas en ellas programadas.

Motivación

Cómo proceder si en dependencia del valor de una condición nuestros algoritmos toman
por unos caminos u otros, o sea si necesitamos implementar algoritmos para los cuales en
determinadas condiciones se ejecuten unos pasos y en otras condiciones se ejecuten otros
pasos. En la próxima conferencia se estudiarán las estructuras alternativas que permiten
resolver este problema.

En las clases prácticas 3 y 4 se ejercitarán los contenidos sobre funciones que se han
estudiado en esta conferencia. Para ello el estudiante debe complementar la información
recibida en clases con la documentación orientada para la lectura en tiempo extra clase.

Estudio Independiente
IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

1. Estudiar capítulo 15, epígrafe 15.3, pág 562. Entrada/salida con cin/cout.

Ejercicios Clase Práctica No.3

1. Comprobación de Lectura.

2. ¿Cuáles de los siguientes prototipos no son correctos? Justifique


a) calcular(int,int,char r);
c) float aumentar(float valor);
d) float negativo(float int);
e) int menor(int,int,int);
f) char menu(int opciones);
g) bool esLetra(char= ‘a’);
f) float caudrado(int=2,int);

3. Señale y corrija los errores que aparecen en las funciones siguientes:


a) int sum(int x,int y){
int result;
result= x+y;
}
b) float promedio(float x,y,z)
{
float sum(float x,float y,float z)
{
return x+y+z;
}
return sum/3.0;
}
c) float cociente(float y=1,float x){
return x/y;
}

4. Proporcione un prototipo y un encabezamiento de función válidos para cada uno de los


siguientes casos:

a) Función hypotenuse que toma dos argumentos (longitud de los catetos) y devuelve
un resultado (longitud de la hipotenusa del triángulo rectángulo correspondiente).
b) Función smallest que toma tres enteros (ceros por defecto los tres) y regresa el
menor de ellos.
c) Función intToFloat que toma un argumento entero y devuelve un resultado en punto
flotante.

5. Convierta en una función los fragmentos de código programados en el taller # 1 que se


indican a continuación. Escriba la función main correspondiente en cada caso con las
invocaciones que se indican y sustituya la simulación de las entradas y salidas con cin y
cout respectivamente.
IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

a) El por ciento que representa un número x de un total dado.

//Calcular el porcentaje que representa x de total


float x, total;
ENTRAR x, total
float porciento= x*100/total;
MOSTRAR porciento

Invocaciones

a.1) calcular el porcentaje que representa 3 de 50


a.2) calcular el porcentaje que representa a de b
a.3) calcular el porcentaje que representa a de 100
a.4) calcular el porcentaje que representan los aprobados del total de estudiantes
matriculados en los grupos IF11, IF12 e IF13

b) Obtener el valor de W dados, H,G,A,D y X, conociendo que:


//devuelve el valor de w
float h,g,x;
int a,d;
ENTRAR h,g,x,a,d;
float w= 1/(-(1+h/g*(h/g))/a*a/(d*d)*(1+x));
MOSTRAR w

Donde: H, G y X son valores reales y A y D son enteros

c) Escriba un algoritmo en seudocódigo que recibiendo por teclado los datos de cada una de las 3
líneas de producción de una fábrica, calcule la producción promedio, el porcentaje que esta
representa de la norma conocida y la ganancia total de la fábrica conociendo el costo y precio
unitario. Asuma que las tres líneas producen el mismo producto, que la norma es igual para
todas y que la producción se da en unidades. Implemente dicho algoritmo en C.

int ProdLinea1,ProdLinea2,ProdLinea3;
ENTRAR ProdLinea1,ProdLinea2,ProdLinea3
int norma;
ENTRAR norma
float ganancia,precio,costo;
ENTRAR ganancia,precio,costo
int ProdTotal= ProdLinea1+ProdLinea2+ProdLinea3;
float promedio= ProdTotal/3.0;
IP, Conferencia 2, Curso 2021 Última modificación: 18/10/2021

float porciento= promedio/norma * 100;


float ganancia= ProdTotal*(precio-costo);
MOSTRAR promedio,porciento,ganancia

Ejercicios Clase Práctica No. 4

1. Programe funciones que permitan conocer:

a) El cubo de un número.
b) El volumen de una esfera
c) El perímetro de un rectángulo

Ejemplifique las invocaciones con parámetros variables, constantes y expresiones.

2. Implemente un programa que tenga dos unit. En la unit principal implemente la entrada
de datos y en la otra una función que calcule cuánto ganará un individuo al cabo de un
mes si deposita su dinero en un banco, conociendo que la tasa de interés mensual.
3. Un vendedor recibe un sueldo base más un 10% extra por comisión de sus ventas, el
vendedor desea saber cuánto dinero obtendrá por concepto de comisiones por las tres
ventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta su
sueldo base y comisiones. Implemente un programa que entre los datos necesarios e
invoque a una función que calcule el total que ganará el vendedor por concepto de
comisión.
4. Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea
saber cuánto deberá pagar finalmente por su compra. Implemente un programa que
entre los datos necesarios e invoque a una función que calcule el total que pagará el
cliente.
5. Un alumno desea saber cuál será su calificación final en una asignatura conociendo que
la nota final se compone de los siguientes porcentajes:
 55% del promedio de sus tres calificaciones parciales.
 30% de la calificación del examen final.
 15% de la calificación de un trabajo final.

También podría gustarte