Rutas
/
AWK
AWK
/
Ejercicios
/
Informe sencillo
Informe sencillo

Informe sencillo

Ejercicio de aprendizaje

Introducción

Números y strings

AWK es un lenguaje muy pequeño y solo tiene unos pocos tipos de datos básicos. En esta lección vamos a ver los números y los strings.

Números

Los números en AWK se implementan como números de coma flotante de doble precisión. No hay distinción entre enteros, números de coma flotante y números de doble precisión.

AWK entiende las constantes numéricas octales (que empiezan por 0) y las constantes numéricas hexadecimales (que empiezan por 0x o 0X).

Operaciones numéricas

Puedes usar los operadores aritméticos estándar +, -, *, /, %. El operador de exponenciación es ^. Hay algunas funciones numéricas integradas, como las funciones trigonométricas, la generación de números aleatorios y int(x), que trunca un número al entero más cercano entre x y cero.

Strings

Los strings de AWK son secuencias de caracteres. Las constantes de string se especifican con comillas dobles.

Operaciones con strings

Solo hay una operación con strings: la concatenación. La concatenación no tiene un operador especial; basta con colocar dos strings uno al lado del otro para concatenarlos:

BEGIN {
    hw = "Hello" "World"
    print hw
}
# => HelloWorld
Note

print es una instrucción, no una función. print no requiere paréntesis.

AWK tiene una gran cantidad de funciones para manipular strings. Las iremos conociendo en profundidad a medida que avancemos por el track.

Conversión entre números y strings

No hay operadores explícitos para convertir entre números y strings. AWK lo hace de forma implícita según el contexto del programa. Esto hace que trabajar con los valores de los campos de entrada sea muy sencillo: por lo general, AWK simplemente hace lo que quieres que haga.

  • print x + y convertirá los valores de las variables x e y a números gracias a la operación numérica +.
  • print x y convertirá los valores de las variables x e y a strings gracias a la operación de concatenación.

Si quieres ser explícito, 0 + x da la representación numérica de x y "" x da la representación como string de x.

De strings a números

La forma en que AWK convierte un string a un número puede resultar confusa. Una forma sencilla de verlo es pensar que AWK lee «caracteres numéricos» desde el principio de un string hasta que encuentra un carácter «no numérico». Algunos ejemplos son:

  • "2.5" se convierte en el número 2.5;
  • "1e3" se convierte en el número 1000 (notación científica);
  • "456abc" se convierte en el número 456 (como a no es un «numeral», la conversión se detiene ahí).
  • "abc789" se convierte en el número 0 (no hay números al principio del string).

Instrucciones

Estás ayudando a un amigo a generar un informe a partir de las lecturas que ha tomado en distintos rincones de su jardín. Por desgracia, tu amigo ha guardado los datos en un formato extraño. Cada lectura es un conjunto de campos separados por comas. Sin embargo, ha guardado números de dos dígitos repartidos en dos columnas.

número de campo significado
1 número de ID
2 ubicación
3 primera lectura, valor de las decenas
4 primera lectura, valor de las unidades
5 segunda lectura, valor de las decenas
6 segunda lectura, valor de las unidades

Para una fila de entrada como 101,house,4,2,5,4

  • la primera lectura es 42,
  • la segunda lectura es 54.

Tarea 1: Generar el informe

Tu tarea es encontrar la media de las dos lecturas y mostrar los resultados de cada fila en el siguiente formato

#<id>, <label> = <average>

Como la media de 42 y 54 es 48, la salida para la fila de ejemplo debería ser:

#101, house = 48
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
AWK Exercism

¿Listo para empezar Informe sencillo?

Regístrate en Exercism para aprender y dominar AWK con 3 conceptos92 ejercicios y mentoría humana real, todo gratis.