IP2122 - Sesión 02

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

INTRODUCCIÓN A LA PROGRAMACIÓN

Sesión 2. Primeros programas - Bibliotecas


Competencias previas
• Partes básicas e instrucciones de un programa en C++.
• Resolver problemas mediante programas en C++ usando variables de tipos simples y las instruc-
ciones de escritura, lectura y asignación.
• Crear, importar, exportar, compilar y ejecutar un proyecto en Eclipse.

Objetivos
• Practicar la importación, exportación, creación, compilación y ejecución de proyectos en Eclip-
se.
• Utilizar las bibliotecas estándar de C++.
• Resolver problemas mediante programas en C++ usando variables de tipos simples y las instruc-
ciones de escritura, lectura y asignación.
• Usar el Laboratorio Virtual de Programación del aula virtual.

Bibliotecas estándar de C++


Cuando se escriben programas dentro de un ámbito concreto, al final hay muchos subproblemas concretos
que se repiten. No tiene sentido tener que resolver esos subproblemas desde el principio.

Pensemos, por ejemplo, en programas que resuelvan problemas matemáticos. En muchas ocasiones habrá
que elevar un número a otro, calcular la raíz cuadrada, el coseno o sumar dos polinomios. Nos interesaría
tener ya definidas esas operaciones en algún sitio, de forma que se pudieran usar cuando las necesitára-
mos, teniendo la seguridad además de que funcionan bien ya que han sido probadas con anterioridad.

Se denomina biblioteca (o librería, mala traducción de library pero de uso muy extendido) a una recopi-
lación de funciones que resuelven problemas concretos. Una biblioteca está almacenada en ficheros sepa-
rados al fichero donde se encuentra el programa principal.

C++ cuenta con bibliotecas predefinidas que se pueden usar en nuestros programas. Usar funciones de
las bibliotecas estándar ayuda a mejorar el rendimiento y la portabilidad del software.

Hay muchas bibliotecas predefinidas en C y en C++ sobre diferentes temas: matemáticas, entrada/salida,
cadenas de caracteres, tiempo, etc.

Se puede consultar una descripción completa de las bibliotecas estándar y las funciones que incluyen en:
http://www.cplusplus.com/reference/clibrary/

En C y C++ existen bibliotecas equivalentes para mantener la compatibilidad entre los dos lenguajes. Así,
la librería matemática se denomina <math.h> y <cmath> en C++. Ambas se pueden usar en C++.

Para poder usar las funciones de una biblioteca predefinida se debe poner la directiva #include seguida
del nombre de la biblioteca. Por ejemplo:
#include <iostream>
#include <cmath>
A partir de ese momento, y en todo el fichero, se pueden usar las funciones definidas en la biblioteca.

Para poder usar una función concreta tenemos que conocer la biblioteca en la que se encuentra y su cabe-
cera.

La cabecera de una función indica el nombre exacto de la función, el número y tipo de la información
que hay que pasarle y el tipo del resultado.

Así, por ejemplo, si queremos calcular ab podemos usar la siguiente función de la librería <cmath>:

double pow (double base, double exponente);

UEx – Escuela Politécnica Sesión 2.1


INTRODUCCIÓN A LA PROGRAMACIÓN

double es un tipo real, como float, pero con un rango mayor de valores. Se puede usar también con
variables de tipo int y float.

De esa cabecera sacamos la siguiente información:


• La función se denomina pow
• Hay que pasarle dos valores reales (parámetros): el primero será la base y el segundo, el expo-
nente. (Lo importante es el tipo, no el nombre de las variables, que sirven para aclarar el signifi-
cado.)
• La función devolverá un valor de tipo double con el resultado.

Si, por ejemplo, queremos guardar el resultado de elevar 2 a 4 en una variable x, pondríamos la siguiente
instrucción en un programa:
x = pow ( 2, 4 );
Tras ejecutarse, en x tendríamos el valor 16.

La llamada a una función puede ponerse en cualquier lugar en el que se pueda poner un valor del
tipo devuelto por la función.

Algunos ejemplos de funciones en bibliotecas estándar:

Librería cmath: Funciones matemáticas


• double ceil(double x) Redondea x al entero más cercano hacia arriba.
• double cos(double x) Devuelve el coseno de x, donde x está dado en radianes.
• double exp(double x) Devuelve el valor de e (la base de los logaritmos naturales)
elevado a la potencia x.
• double fabs(double x) Devuelve el valor absoluto del número x.
• double floor(double x) Redondea x hacia abajo al entero más cercano hacia abajo.
• double log(double x) Devuelve el logaritmo neperiano de x.
• double log10(double x) Devuelve el logaritmo decimal de x.
• double pow(double x, double y) Devuelve el valor de x elevado a y.
• double sin(double x) Devuelve el seno de x.
• double sqrt(double x) Devuelve la raíz cuadrada no negativa de x.
• double tan(double x) Devuelve la tangente de x.

Librería cstdlib: Funciones generales


• int rand (void) Devuelve un número pseudoaleatorio entre 0 y la constante
RAND_MAX (definida también en esta librería).
• void srand (unsigned int seed) Inicia la semilla de una secuencia de
números pseudoaleatorios.
• int abs (int n) Valor absoluto de n

Actividad 1: Ejemplos de funciones predefinidas


• Descarga del aula virtual e importa en Eclipse el proyecto funciones.tar.gz que contiene varios
ejemplos de uso de funciones predefinidas.
• Analiza los ejemplos presentados.

Actividad 2: Lista de errores frecuentes y convenciones de pro-


gramación
• Descarga del aula virtual el fichero ListaErroresFrecuentes.odt.
• Cada vez que cometamos un error al escribir un programa (durante el proceso de compilación o
de ejecución), debemos escribir en este documento el mensaje de error obtenido o el problema
observado y una breve explicación de cómo se solucionó.
• Cuando nos encontremos con errores debemos echar un vistazo a esta lista para comprobar si ya
ha aparecido antes y si la solución de entonces sirve para este nuevo caso.

UEx – Escuela Politécnica Sesión 2.2


INTRODUCCIÓN A LA PROGRAMACIÓN

• En el documento IP_Convenciones_de_programación.pdf que está en el aula virtual puedes ver


cómo vamos a escribir el código de los ejemplos de la asignatura. Lee el documento e intenta
aplicarlo en tus programas.

Actividad 3: Raíces de una ecuación de segundo grado


• Descarga del aula virtual el proyecto raices.zip
• Analiza el código que hay en el proyecto:
o Dos funciones (solo la especificación y la cabecera) para calcular las dos
raíces reales. Falta la implementación.
Podemos suponer que las raíces serán reales (no imaginarias). Se ha indica-
do así en las precondiciones.
o Un módulo de pruebas supervisado: realiza una serie de llamadas a las dos
funciones anteriores y escribe los resultados obtenidos y esperados.
o Un módulo que ejecuta el programa normal, donde se nos piden los datos y
se muestra el resultado.
o Al principio se incluye la librería <cmath> por si se necesita alguna función
predefinida.
• Implementa las dos funciones. El módulo de pruebas debe mostrar los resultados co-
rrectos. Prueba también el módulo con la ejecución normal.

Recordemos que las raíces de una ecuación ax2 + bx + c = 0 se calculan con la siguiente
fórmula:

En la ejecución del programa deberíamos ver algo similar a esto:


Para la ecuación de segundo grado ax² + bx + c = 0
Introduce el coeficiente a:
4.5
Introduce el coeficiente b:
3
Introduce el coeficiente c:
-2
Raíz: 0.412023
Raíz: -1.07869

Actividad 4: Bufete
Un bufete de abogados cobra según la cantidad de tiempo que le dedican a un caso.

Cada cuarto de hora se cobra a 60€ (impuestos incluidos). No cobra tiempos inferiores a un cuarto de
hora.

Así, si una persona emplea 1 hora y 14 minutos en un caso, el bufete solo cobra por 1 hora.

• Implementar un programa que lea el número de horas y de minutos que se ha trabajado en un ca-
so y muestre el precio que hay que cobrar en la factura.

• Debe especificarse e implementarse una función que, dadas las horas (un valor entero
mayor o igual que 0) y los minutos (un valor entero entre 0 y 59, ambos incluidos),
devuelva el precio.

A continuación se muestran dos ejemplos de lo que se vería al ejecutar el programa.


Los valores en verde son los datos introducidos (primero el número de horas, y luego el
de minutos). El tercer valor es el resultado obtenido.
No ponemos mensajes de entrada y salida porque vamos a probar la corrección del pro-
grama usando LVP (Laboratorio Virtual de Programación, Virtual Programming Labora-

UEx – Escuela Politécnica Sesión 2.3


INTRODUCCIÓN A LA PROGRAMACIÓN

tory), un tipo de actividad que hay en el aula virtual de la asignatura, y que compara las
salidas con una batería de test.
1
14
240
Otro ejemplo
1
15
300

• Prueba el programa con LVP - Actividad 4 - Bufete hasta que pase todas las prue-
bas.

Actividad 5: Aforo
Con la actual pandemia, se ha limitado el aforo de cualquier recinto. En el caso de las aulas, por ejemplo,
se parte del número total de plazas y se calcula un porcentaje que será el máximo de plazas que se podrán
ocupar.

Con ese máximo de ocupación, luego hay que comprobar si cabe o no el grupo que tiene que estar en esa
aula.

Tienes que implementar un programa que ayude a realizar estos cálculos. El programa pedirá el número
de plazas de un aula, el porcentaje máximo de ocupación y el número de estudiantes del grupo. Todos
estos datos serán números enteros.

Como resultado, el programa escribirá el número de plazas que quedarán libres. (Si el número es negati-
vo, significará que faltarán esas plazas.)

La ejecución de tu programa debería tener un aspecto similar al de los siguientes ejemplos. Los valores en
verde son los datos introducidos.

El primer valor es el número de plazas del aula (un valor mayor o igual que 0). El segundo, el porcentaje
de ocupación (un valor entre 0 y 100, ambos incluidos). El tercero, el número de estudiantes del grupo (un
valor mayor o igual que 0). El resultado, con el número de plazas libres, es el cuarto número.

100
60
53
7

80
50
46
-6

230
55
126
0

(Ten en cuenta que el aforo resultante será siempre un número entero y que no habrá redondeo al alza.)
Suponemos que los datos leídos son correctos siempre.

• Prueba el programa con VPL: Actividad 5 - Aforo hasta que pase todas las pruebas.

UEx – Escuela Politécnica Sesión 2.4


INTRODUCCIÓN A LA PROGRAMACIÓN

Ejercicio adicional: Cono recto


En geometría, un cono recto es un sólido de revolución generado por el giro de un triángulo rectángulo
alrededor de uno de sus catetos.

Eje: Es el cateto fijo alrededor del cual gira el triángulo.

Base: Es el círculo que forma el otro cateto.

Altura: Es la distancia del vértice a la base.

Generatriz: Es la hipotenusa del triángulo rectángulo.

Queremos implementar un programa que calcule el área de la superficie y el volumen de un cono recto a
partir de la altura y el radio de la base.

El área de la superficie del cono recto es:

donde r es el radio de la base y g la longitud de la generatriz del cono recto.

La generatriz de un cono recto es la hipotenusa del triángulo rectángulo que forman la altura del cono y
el radio de la base, y se calcula aplicando el teorema de Pitágoras.

El volumen de un cono de radio r y altura h es 1/3 del volumen del cilindro que posee las mismas dimen-
siones:

Escribe un programa que pida los datos del cono (radio de la base y altura) y muestre por pantalla el área
de la superficie y el volumen del cono.

Se deben definir, al menos, tres funciones:


• una función que calcule la generatriz del cono recto
• una función que calcule el área de la superficie del cono recto
• una función que calcule el volumen del cono recto
Para cada función se deben incluir, como comentarios, su especificación con pre/postcondiciones y 3
pruebas de funcionamiento.

Los datos del cono pueden ser números reales. Suponemos que los datos leídos son siempre correctos. Se
deben incluir mensajes para la entrada de datos y para mostrar los resultados que hagan fácil de usar el
programa.

En la siguiente dirección puedes comprobar si los valores calculados por tu programa son correctos:
https://www.calculatorsoup.com/calculators/geometry-solids/cone.php

UEx – Escuela Politécnica Sesión 2.5

También podría gustarte