Percursos
/
AWK
AWK
/
Exercícios
/
Relatório simples
Relatório simples

Relatório simples

Exercício de aprendizagem

Introdução

Números e strings

O AWK é uma linguagem muito pequena e tem apenas alguns tipos de dados básicos. Nesta lição vamos ver os números e as strings.

Números

Os números em AWK são implementados como números de vírgula flutuante de precisão dupla. Não há distinção entre inteiros, números de vírgula flutuante e números de precisão dupla.

O AWK reconhece constantes numéricas octais (que começam por 0) e constantes numéricas hexadecimais (que começam por 0x ou 0X).

Operações numéricas

Podes usar os operadores aritméticos habituais +, -, *, /, %. O operador de exponenciação é ^. Existem algumas funções numéricas incorporadas, incluindo funções trigonométricas, geração de números aleatórios e int(x) para truncar um número para o inteiro mais próximo entre x e zero.

Strings

As strings em AWK são sequências de carateres. Especifica uma constante de string usando aspas duplas.

Operações com strings

Só existe uma operação com strings: a concatenação. A concatenação não tem um operador especial; basta colocar duas strings lado a lado para as concatenar:

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

print é uma instrução, não uma função. print não precisa de parênteses.

O AWK tem uma vasta coleção de funções de manipulação de strings. Vamos conhecê-las em detalhe à medida que avançamos no track.

Conversão entre números e strings

Não existem operadores explícitos para converter entre números e strings. O AWK fá-lo implicitamente, com base no contexto do programa. Isto torna muito simples trabalhar com os valores dos campos de entrada: na maior parte das vezes, o AWK faz simplesmente o que queres que faça.

  • print x + y vai converter os valores das variáveis x e y em números, graças à operação numérica +.
  • print x y vai converter os valores das variáveis x e y em strings, graças à operação de concatenação.

Se quiseres ser explícito, 0 + x dá a representação numérica de x e "" x dá a representação em string de x.

De strings para números

A forma como o AWK converte uma string num número pode ser confusa. Uma maneira simples de pensar nisto é que o AWK lê os "carateres numéricos" desde o início da string até encontrar um caráter que não seja um número. Alguns exemplos:

  • "2.5" converte-se no número 2.5;
  • "1e3" converte-se no número 1000 (notação científica);
  • "456abc" converte-se no número 456 (como a não é um "numeral", a conversão para aí).
  • "abc789" converte-se no número 0 (não há números no início da string).

Instruções

Estás a ajudar um amigo a gerar um relatório a partir das leituras que ele fez em diferentes cantos do seu jardim. Infelizmente, o teu amigo guardou os dados num formato estranho. Cada leitura é um conjunto de campos separados por vírgulas. No entanto, ele guardou números de dois algarismos distribuídos por duas colunas.

número do campo significado
1 número de identificação
2 localização
3 primeira leitura, algarismo das dezenas
4 primeira leitura, algarismo das unidades
5 segunda leitura, algarismo das dezenas
6 segunda leitura, algarismo das unidades

Para uma linha de entrada como 101,house,4,2,5,4

  • a primeira leitura é 42,
  • a segunda leitura é 54.

Tarefa 1: Gerar o relatório

A tua tarefa é encontrar a média das duas leituras e apresentar os resultados de cada linha no seguinte formato

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

Como a média de 42 e 54 é 48, o resultado para a linha de exemplo deve ser:

#101, house = 48
Editar via GitHub A ligação abre numa nova janela ou separador
AWK Exercism

Estás pronto para começar Relatório simples?

Inscreve-te no Exercism para aprenderes e dominares AWK com 3 conceitos92 exercícios, e mentoria humana real, tudo grátis.