Trilhas
/
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 números e strings.

Números

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

O AWK entende constantes numéricas octais (começando com 0) e constantes numéricas hexadecimais (começando com 0x ou 0X).

Operações numéricas

Você pode usar os operadores aritméticos padrão +, -, *, /, %. O operador de exponenciação é ^. Existem algumas funções numéricas internas, 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

Strings no AWK são sequências de caracteres. Especifique uma constante do tipo string usando aspas duplas.

Operações com strings

Existe apenas 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 concatená-las:

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

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

O AWK tem uma grande variedade de funções de manipulação de strings. Vamos conhecê-las em profundidade conforme avançarmos pela trilha.

Convertendo entre números e strings

Não há operadores explícitos para converter entre números e strings. O AWK faz isso implicitamente, com base no contexto do programa. Isso torna muito simples trabalhar com os valores dos campos de entrada: em geral, o AWK faz exatamente o que você quer.

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

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

De strings para números

A forma como o AWK converte uma string em número pode ser confusa. Uma forma simples de pensar nisso é que o AWK lê os "caracteres de número" desde o início da string até encontrar um caractere que não seja número. Alguns exemplos:

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

Instruções

Você está ajudando um amigo a gerar um relatório a partir de leituras que ele fez em diferentes cantos do jardim dele. Infelizmente, seu amigo guardou os dados em um formato estranho. Cada leitura é um conjunto de campos separados por vírgula. No entanto, ele distribuiu números de dois dígitos em duas colunas.

número do campo significado
1 número de ID
2 localização
3 primeira leitura, valor das dezenas
4 primeira leitura, valor das unidades
5 segunda leitura, valor das dezenas
6 segunda leitura, valor 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

Sua tarefa é encontrar a média das duas leituras e produzir a saída de cada linha no seguinte formato

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

Como a média de 42 e 54 é 48, a saída para a linha de exemplo deve ser:

#101, house = 48
Editar via GitHub O link abre em uma nova janela ou aba
AWK Exercism

Tudo pronto para começar Relatório simples?

Crie sua conta no Exercism para aprender e dominar AWK com 3 conceitos92 exercícios e mentoria humana de verdade, tudo de graça.