Aunque ya la hemos estado utilizando en muchos ejercicios, vamos a estudiar un poco más en profundidad cómo funciona la consola en jC.
Además de pintar, jC también es capaz de pedir e imprimir texto. Esto se denomina "consola", pues es la forma estándar de comunicarse con un ordenador: introduciendo órdenes por el teclado y observando el resultado por la pantalla.
- Las funciones que tenemos a nuestra disposición para manejarnos con la consola son precisamente dos:
- print( <expr> ): Permite mostrar cualquier valor por la pantalla. Hay dos variantes: print() y println(), la segunda realiza un salto de línea tras imprimir.
Ejemplo
print( "Tu nombre es: " ); println( nombre );
-
readln( <msg> ): Devuelve la cadena de texto introducida por el usuario. El mensaje permite que el usuario conozca qué datos se le están preguntando.
Ejemplo
def nombre = readln( "Introduce tu nombre: " ); print( "Hola, " ); println( nombre );
Dado que lo que devuelve readln() es una cadena, el código anterior es equivalente a:Ejemplo
char[] nombre = readln( "Introduce tu nombre: " ); print( "Hola, " ); println( nombre );
- Funciones de conversión de cadena a número:
- strToInt( <cadena de texto> ): Esta función acepta una cadena de texto como parámetro, y devuelve el número entero que contiene.
Ejemplo
int edad = strToInt( cadenaDeTexto ); println( edad );
- strToDbl( <cadena de texto> ): Esta función acepta una cadena de texto como parámetro, y devuelve el número real que contiene.
Ejemplo
int altura = strToDbl( cadenaDeTexto ); println( altura );
Realizaremos ahora un programa completo, que permita convertir grados celsius en farenheit, y viceversa. Para convertir los grados celsius (c) en farenheit (f), es necesario aplicar la fórmula:
f = ( c * 1,8 ) + 32Para realizar la conversión inversa, de farenheit (f) a celsius (c):
c = ( f - 32 ) / 1,8Es muy fácil escribir, por tanto dos funciones que hagan las conversiones respectivas. Dado que los grados llevan posiciones decimales, es necesario que las variables a utilizar sean de tipo número real (double).
double cnvtGradosCelsiusFarenheit(double x) { return ( ( x * 1.8 ) + 32 ); } double cnvtGradosFarenheitCelsius(double x) { return ( ( x - 32 ) / 1.8 ); }
Sólo resta, por tanto, pedir una cadena de texto, y convertirla a un número real (double), esto puede hacerse de manera muy sencilla:
def grados = strToDbl( readln( "Introduce unos grados: " ) );Una vez que se ha llamado a las funciones anteriores con la variable grados, sólo es necesario imprimir el resultado. El programa completo aparece a continuación:
/** @name conversorGrados * @brief Convierte los grados celsius a farenheit y vicecersa. * @author jbgarcia@uvigo.es * @date 2013-11-21 */ import std.io; import std.string; double cnvtGradosCelsiusFarenheit(double x) { return ( ( x * 1.8 ) + 32 ); } double cnvtGradosFarenheitCelsius(double x) { return ( ( x - 32 ) / 1.8 ); } def grados = strToDbl( readln( "Introduce unos grados: " ) ); print( "Los grados celsius introducidos son grados farenheit: " ); println( cnvtGradosCelsiusFarenheit( grados ) ); print( "Los grados farenheit introducidos son grados celsius: " ); println( cnvtGradosFarenheitCelsius( grados ) );
No hay comentarios:
Publicar un comentario