Utiliser typedef pour les alias de types
Fait partie de la section Logic & Flow du Journey C de Coddy. Leçon 58 sur 63.
Parfois, en programmation C, vous rencontrerez des situations où les noms des types de données existants sont soit trop verbeux, soit n'expriment pas clairement l'intention de votre programme. Le mot-clé typedef offre une solution en vous permettant de créer de nouveaux noms pour les types de données existants.
Considérez typedef comme la création d'un alias ou d'un surnom pour un type de données. La syntaxe de base est simple :
typedef existing_type new_name;Par exemple, vous pouvez créer un nom plus descriptif pour le type de données int :
typedef int Integer;Après cette déclaration, vous pouvez utiliser Integer partout où vous utiliseriez normalement int. Les deux int count = 5; et Integer count = 5; accomplissent exactement la même chose, mais la seconde version pourrait être plus significative dans certains contextes.
Cette fonctionnalité devient particulièrement précieuse lorsque vous travaillez avec des types de données complexes ou lorsque vous souhaitez rendre votre code plus auto-documenté et plus facile à maintenir.
Défi
FacileCréez un programme C qui démontre l'utilisation de typedef pour créer des alias de type significatifs pour un système de surveillance de la température. Votre programme doit :
- Créer les alias de type suivants en utilisant
typedef:- Créer un alias de type
Temperaturepourfloat - Créer un alias de type
SensorIDpourint - Créer un alias de type
Statuspourint
- Créer un alias de type
- Dans la fonction principale :
- Déclarer une variable de type
SensorIDnomméesensor - Déclarer une variable de type
TemperaturenomméecurrentTemp - Déclarer une variable de type
Temperaturenomméethreshold - Déclarer une variable de type
StatusnomméealertStatus - Lire quatre valeurs à partir de l'entrée dans cet ordre : l'ID du capteur, la température actuelle, la température de seuil et le statut de l'alerte
- Attribuer ces valeurs d'entrée aux variables correspondantes
- Afficher les informations du capteur dans ce format exact :
Sensor ID: [sensor_id]Current Temperature: [current_temp]Threshold: [threshold_temp]Alert Status: [alert_status]
- Effectuer une analyse de la température et afficher les résultats :
- Calculer la différence de température (température actuelle moins le seuil) et la stocker dans une variable
Temperaturenomméedifference - Afficher la différence dans ce format exact :
Temperature Difference: [difference] - Déterminer la catégorie de température en fonction de la température actuelle :
- Si la température est inférieure à 0.0 : afficher
Category: Freezing - Si la température est comprise entre 0.0 et 25.0 (inclus) : afficher
Category: Normal - Si la température est supérieure à 25.0 : afficher
Category: Hot
- Si la température est inférieure à 0.0 : afficher
- Vérifier si une alerte doit être déclenchée :
- Si la température actuelle est supérieure au seuil ET que le statut de l'alerte est 1 : afficher
Alert: Temperature exceeded threshold! - Sinon : afficher
Alert: No alert triggered
- Si la température actuelle est supérieure au seuil ET que le statut de l'alerte est 1 : afficher
- Calculer la différence de température (température actuelle moins le seuil) et la stocker dans une variable
- Déclarer une variable de type
Ce défi démontre comment typedef rend le code plus auto-documenté et plus facile à comprendre. Au lieu d'utiliser des types génériques comme int et float tout au long de votre programme, vous utiliserez des noms significatifs comme SensorID, Temperature et Status qui indiquent clairement le but de chaque variable. Cette approche améliore la lisibilité du code et facilite la maintenance et la modification de vos programmes.
Essayez vous-même
#include <stdio.h>
// TODO: Créer des alias typedef ici
int main() {
// TODO: Déclarer des variables en utilisant les alias typedef
// Lire les valeurs d'entrée
scanf("%d", &sensor);
scanf("%f", ¤tTemp);
scanf("%f", &threshold);
scanf("%d", &alertStatus);
// TODO: Écrivez votre code ci-dessous pour afficher les informations du capteur et effectuer l'analyse
return 0;
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logic & Flow
1Les bases des pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de pointeursL'opérateur d'adresse (&)L'opérateur de déréférencement (*)Pointeurs NULLRécapitulatif : Les bases des pointeurs4Projet : Utilitaire de texte simple
Présentation du projetCompter les caractères7Structures (structs)
Qu'est-ce qu'une Struct ?Déclarer une StructCréer des variables de type StructAccéder aux membres d'une StructInitialiser des StructsRécapitulatif : Struct de données étudiant10Énumérations et typedef
enum pour les constantes nomméesDéclarer et utiliser des énumérationsLes énumérations dans les instructions switchUtiliser typedef pour les alias de typestypedef avec les structuresRécapitulatif : Pratique de typedef et enum2Pointeurs et Tableaux
Noms de tableaux comme pointeursÉléments de tableau - PointeursArithmétique des pointeursComparaison de pointeursRécapitulatif : Parcours de tableau par pointeur5Pointeurs et fonctions
Passage par valeurPassage de pointeurs aux fonctionsModifier des variables via des pointeursUn exemple classique : SwapPassage de tableaux aux fonctionsRécapitulatif : Pointeurs comme arguments de fonction3Tableaux de caractères et chaînes
Les chaînes comme tableaux de charLe terminateur nulSaisie de chaînes avec scanfUtilisation de strlen()Utilisation de strcpy()Utilisation de strcat()Utilisation de strcmp()Récapitulatif : Fonctions de base sur les chaînesEntraînez-vous par vous-même : Compilateur C en ligne