Parcours
/
AWK
AWK
/
Exercices
/
Rapport simple
Rapport simple

Rapport simple

Exercice d'apprentissage

Introduction

Nombres et strings

AWK est un langage très petit qui ne dispose que de quelques types de données de base. Dans cette leçon, on va passer en revue les nombres et les strings.

Nombres

Les nombres en AWK sont implémentés sous forme de nombres à virgule flottante en double précision. Il n'y a pas de distinction entre les entiers, les nombres à virgule flottante et les doubles.

AWK comprend les constantes numériques octales (qui commencent par 0) et les constantes numériques hexadécimales (qui commencent par 0x ou 0X).

Opérations numériques

On peut utiliser les opérateurs arithmétiques standards +, -, *, /, %. L'opérateur d'exponentiation est ^. Il existe quelques fonctions numériques intégrées, notamment les fonctions trigonométriques, la génération de nombres aléatoires, et int(x) pour tronquer un nombre vers l'entier le plus proche entre x et zéro.

Strings

Les strings en AWK sont des séquences de caractères. On écrit une constante string entre guillemets doubles.

Opérations sur les strings

Il n'existe qu'une seule opération sur les strings : la concaténation. La concaténation n'a pas d'opérateur dédié ; il suffit de placer deux strings côte à côte pour les concaténer :

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

print est une instruction, pas une fonction. print n'a pas besoin de parenthèses.

AWK dispose d'une multitude de fonctions de manipulation de strings. On les découvrira en détail au fil du parcours.

Convertir entre les nombres et les strings

Il n'existe pas d'opérateur explicite pour convertir entre les nombres et les strings. AWK le fait implicitement, en fonction du contexte du programme. Cela rend très simple le travail avec les valeurs des champs en entrée : en général, AWK fait simplement ce que tu veux qu'il fasse.

  • print x + y convertit les valeurs des variables x et y en nombres grâce à l'opération numérique +.
  • print x y convertit les valeurs des variables x et y en strings grâce à l'opération de concaténation.

Si tu veux être explicite, 0 + x donne la représentation numérique de x et "" x donne la représentation sous forme de string de x.

Des strings vers les nombres

La façon dont AWK convertit une string en nombre peut sembler déroutante. Une façon simple de voir les choses : AWK lit les « caractères numériques » depuis le début d'une string jusqu'à ce qu'il rencontre un caractère « non numérique ». Quelques exemples :

  • "2.5" se convertit en le nombre 2.5 ;
  • "1e3" se convertit en le nombre 1000 (notation scientifique) ;
  • "456abc" se convertit en le nombre 456 (comme a n'est pas un « chiffre », la conversion s'arrête là).
  • "abc789" se convertit en le nombre 0 (il n'y a aucun chiffre au début de la string).

Instructions

Tu aides un ami à générer un rapport à partir de relevés qu'il a effectués dans différents coins de son jardin. Malheureusement, ton ami a enregistré les données dans un format étrange. Chaque relevé est un ensemble de champs séparés par des virgules. Cependant, il a réparti les nombres à deux chiffres sur deux colonnes.

numéro de champ signification
1 numéro d'identification
2 emplacement
3 premier relevé, chiffre des dizaines
4 premier relevé, chiffre des unités
5 deuxième relevé, chiffre des dizaines
6 deuxième relevé, chiffre des unités

Pour une ligne d'entrée comme 101,house,4,2,5,4

  • le premier relevé est 42,
  • le deuxième relevé est 54.

Tâche 1 : Génère le rapport

Ta tâche consiste à calculer la moyenne des deux relevés et à afficher le résultat de chaque ligne au format suivant :

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

Comme la moyenne de 42 et 54 vaut 48, le résultat pour la ligne d'exemple doit être :

#101, house = 48
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
AWK Exercism

Prêt à commencer Rapport simple ?

Inscris-toi sur Exercism pour apprendre et maîtriser AWK avec 3 concepts92 exercices, et un vrai mentorat humain, le tout gratuitement.