Introduction
Dans ce laboratoire (lab), nous apprendrons à écrire un programme en langage C qui permet de trouver le plus grand nombre parmi un ensemble de nombres fournis par l'utilisateur. Il s'agit d'un exercice de programmation fondamental qui aborde plusieurs concepts importants :
- La prise de données d'entrée de l'utilisateur
- Le travail avec des boucles (loops)
- La réalisation de comparaisons
- Le suivi de la valeur maximale au cours des itérations
L'algorithme que nous allons implémenter est simple : nous demanderons à l'utilisateur combien de nombres il souhaite saisir, puis nous parcourrons chaque nombre saisi. Au fur et à mesure que nous traitons chaque nombre, nous le comparerons avec le plus grand nombre que nous avons trouvé jusqu'à présent, et nous mettrons à jour notre variable « largest » si nécessaire.
À la fin de ce laboratoire, vous aurez créé un programme capable de gérer n'importe quel nombre de données d'entrée et d'identifier de manière fiable la plus grande valeur parmi elles.
Création de notre fichier de programme
Commençons par créer un nouveau fichier C pour notre programme. Dans l'éditeur WebIDE, nous allons créer un fichier nommé main.c dans le répertoire du projet.
Accédez au répertoire du projet dans le panneau du terminal :
cd ~/projectMaintenant, dans l'éditeur WebIDE, cliquez sur le bouton "Nouveau fichier" dans le panneau de l'explorateur à gauche, ou cliquez avec le bouton droit dans le panneau de l'explorateur et sélectionnez "Nouveau fichier".
Nommez le fichier
main.cet appuyez sur Entrée.Commençons par ajouter la structure de base de notre programme C au fichier nouvellement créé :
#include <stdio.h> int main() { // Nous allons ajouter notre code ici return 0; }Enregistrez le fichier en appuyant sur Ctrl+S ou en sélectionnant Fichier > Enregistrer dans le menu.
Cette structure comprend :
- La directive
#include <stdio.h>qui inclut la bibliothèque Standard Input/Output (Bibliothèque standard d'entrée/sortie), dont nous avons besoin pour des fonctions telles queprintf()etscanf() - La fonction
main(), qui est le point d'entrée de tout programme C - Une instruction
return 0;qui indique que l'exécution de notre programme s'est terminée avec succès
Le fichier d'en-tête stdio.h fournit des fonctions pour les opérations d'entrée et de sortie. La fonction main() est là où commence l'exécution de notre programme, et return 0; signale au système d'exploitation que notre programme s'est terminé sans erreurs.
Gestion de l'entrée utilisateur
Ensuite, nous devons configurer notre programme pour interagir avec l'utilisateur. Nous devrons :
- Déclarer des variables pour stocker nos données
- Demander à l'utilisateur le nombre d'éléments
- Configurer le processus pour recevoir le premier nombre
Mettons à jour notre code dans main.c :
#include <stdio.h>
int main() {
// Declare variables
int n; // To store the number of elements
float big; // To store the largest number found
// Prompt the user for the number of elements
printf("Enter the number of elements you wish to find the greatest element of: ");
scanf("%d", &n);
// Check if the input is valid
if (n <= 0) {
printf("Please enter a positive number of elements.\n");
return 1; // Exit with error code
}
// Prompt for the first number and initialize 'big' with it
printf("Enter %d numbers:\n", n);
printf("Enter element 1: ");
scanf("%f", &big);
return 0;
}
Comprenons ce que nous avons ajouté :
Déclaration de variables :
int n: Une variable entière pour stocker combien de nombres l'utilisateur souhaite saisirfloat big: Une variable à virgule flottante pour stocker le plus grand nombre trouvé
Entrée utilisateur pour le nombre d'éléments :
- Nous utilisons
printf()pour afficher une invite demandant le nombre d'éléments - Nous utilisons
scanf("%d", &n)pour lire un entier saisi par l'utilisateur et le stocker dansn - Le symbole
&avantnest l'opérateur "adresse de", qui indique àscanf()où stocker la valeur saisie
- Nous utilisons
Validation de l'entrée :
- Nous vérifions si l'utilisateur a saisi un nombre positif
- Sinon, nous affichons un message d'erreur et nous quittons le programme avec le code de retour 1 (indiquant une erreur)
Entrée du premier nombre :
- Nous demandons à l'utilisateur d'entrer le premier nombre
- Nous stockons ce premier nombre dans
bigcar, à ce stade, c'est le seul nombre (et donc le plus grand) que nous avons
Lorsque vous exécutez ce code, il demandera le nombre d'éléments puis le premier élément, mais il ne fera rien avec ces informations pour l'instant. Dans l'étape suivante, nous ajouterons la logique pour traiter tous les nombres et trouver le plus grand d'entre eux.
Recherche du plus grand nombre
Maintenant, nous allons implémenter la logique principale de notre programme - trouver le plus grand nombre parmi les entrées. Nous allons utiliser une boucle for pour :
- Parcourir les nombres restants (du 2ème au nème)
- Comparer chaque nombre avec notre plus grande valeur actuelle
- Mettre à jour la plus grande valeur si nous trouvons un nombre plus grand
Mettez à jour votre fichier main.c avec le code suivant :
#include <stdio.h>
int main() {
// Declare variables
int n; // To store the number of elements
float big; // To store the largest number found
// Prompt the user for the number of elements
printf("Enter the number of elements you wish to find the greatest element of: ");
scanf("%d", &n);
// Check if the input is valid
if (n <= 0) {
printf("Please enter a positive number of elements.\n");
return 1; // Exit with error code
}
// Prompt for the first number and initialize 'big' with it
printf("Enter %d numbers:\n", n);
printf("Enter element 1: ");
scanf("%f", &big);
// Process remaining numbers using a loop
for (int i = 2; i <= n; i++) {
float current; // Variable to store the current number
// Prompt for the current number
printf("Enter element %d: ", i);
scanf("%f", ¤t);
// Compare with the current largest
if (current > big) {
big = current; // Update 'big' if current number is larger
}
}
// Display the result
printf("The largest of the %d numbers is %.2f\n", n, big);
return 0;
}
Comprenons le nouveau code que nous avons ajouté :
Boucle For :
- Nous commençons à
i = 2car nous avons déjà traité le premier élément - Nous continuons jusqu'à ce que nous ayons traité
néléments - À chaque itération, nous incrémentons
ide 1
- Nous commençons à
Traitement de chaque nombre :
- Nous déclarons une nouvelle variable
currentpour stocker chaque nombre saisi - Nous demandons à l'utilisateur d'entrer l'élément actuel
- Nous lisons l'entrée à l'aide de
scanf()
- Nous déclarons une nouvelle variable
Recherche du maximum :
- Nous comparons l'entrée actuelle
currentavec notre plus grande valeur actuellebig - Si
currentest plus grand, nous mettons à jourbigpour stocker cette nouvelle plus grande valeur - Sinon, nous laissons
biginchangée et passons à l'entrée suivante
- Nous comparons l'entrée actuelle
Affichage du résultat :
- Après avoir traité toutes les entrées, nous affichons le plus grand nombre trouvé
- Le spécificateur de format
%.2faffiche le nombre à virgule flottante avec 2 décimales
Cette implémentation suit un modèle courant pour trouver la valeur maximale dans une séquence :
- Initialiser le maximum avec la première valeur
- Parcourir les valeurs restantes
- Mettre à jour le maximum chaque fois que nous trouvons une valeur plus grande
- À la fin, la variable contient la plus grande valeur de la séquence
Compilation et test du programme
Maintenant que nous avons écrit notre programme C complet, nous devons le compiler et l'exécuter pour voir s'il fonctionne correctement.
Pour compiler le programme, exécutez la commande suivante dans le terminal :
gcc ~/project/main.c -o ~/project/mainCette commande invoque le compilateur C GNU (gcc) pour compiler notre fichier source
main.cet créer un fichier exécutable nommémain. Le flag-ospécifie le nom du fichier de sortie.S'il n'y a pas d'erreurs dans votre code, la commande s'exécutera sans afficher de message. Cela signifie que votre programme s'est compilé avec succès.
Si vous voyez des messages d'erreur, lisez-les attentivement pour comprendre ce qui a mal fonctionné. Les erreurs courantes incluent :
- Des points-virgules manquants (
;) - Des accolades non appariées (
{et}) - Des noms ou des types de variables incorrects
- Des instructions
includemanquantes ou incorrectes
- Des points-virgules manquants (
Une fois que vous avez compilé le programme avec succès, exécutez-le en utilisant :
~/project/mainTestez votre programme avec différentes entrées. Voici un exemple de cas de test :
Entrée :
Enter the number of elements you wish to find the greatest element of: 5 Enter 5 numbers: Enter element 1: 12.5 Enter element 2: 9.7 Enter element 3: 25.8 Enter element 4: 15.2 Enter element 5: 4.9Sortie attendue :
The largest of the 5 numbers is 25.80Essayez un autre cas de test avec des nombres négatifs :
Entrée :
Enter the number of elements you wish to find the greatest element of: 3 Enter 3 numbers: Enter element 1: -10.5 Enter element 2: -2.3 Enter element 3: -15.7Sortie attendue :
The largest of the 3 numbers is -2.30Testez également avec un seul nombre :
Entrée :
Enter the number of elements you wish to find the greatest element of: 1 Enter 1 numbers: Enter element 1: 42.0Sortie attendue :
The largest of the 1 numbers is 42.00
Si votre programme produit les sorties attendues pour ces cas de test, félicitations ! Vous avez réussi à implémenter un programme pour trouver le plus grand nombre parmi N nombres saisis.
Ce processus de compilation et de test est une partie essentielle du développement logiciel. Il vous permet de vérifier que votre code fonctionne comme prévu et vous aide à identifier et corriger tout bogue ou problème.
Résumé
Dans ce laboratoire, nous avons réussi à implémenter un programme C qui trouve le plus grand nombre parmi un ensemble de nombres fournis par l'utilisateur. Revoyons ce que nous avons accompli :
Compréhension du problème : Nous avons identifié le besoin de traiter une collection de nombres et de déterminer lequel est le plus grand.
Structure du programme : Nous avons créé un programme C bien structuré avec des inclusions appropriées, des déclarations de variables et un flux logique.
Gestion des entrées utilisateur : Nous avons implémenté du code pour obtenir des entrées de la part des utilisateurs, y compris une validation pour garantir des données correctes.
Implémentation de l'algorithme : Nous avons utilisé un algorithme simple mais efficace pour trouver la valeur maximale :
- Initialisation avec la première valeur
- Comparaison de chaque valeur suivante avec le maximum actuel
- Mise à jour du maximum lorsqu'une valeur plus grande est trouvée
Test et exécution : Nous avons compilé notre programme et l'avons testé avec diverses entrées pour vérifier qu'il fonctionne correctement.
Ce laboratoire démontre des concepts de programmation fondamentaux qui sont précieux dans de nombreux contextes :
- Exécution séquentielle
- Instructions conditionnelles
- Structures de boucle
- Suivi des variables
- Opérations d'entrée/sortie
Le code complet
Voici le code complet que nous avons développé dans ce laboratoire :
#include <stdio.h>
int main() {
// Declare variables
int n; // To store the number of elements
float big; // To store the largest number found
// Prompt the user for the number of elements
printf("Enter the number of elements you wish to find the greatest element of: ");
scanf("%d", &n);
// Check if the input is valid
if (n <= 0) {
printf("Please enter a positive number of elements.\n");
return 1; // Exit with error code
}
// Prompt for the first number and initialize 'big' with it
printf("Enter %d numbers:\n", n);
printf("Enter element 1: ");
scanf("%f", &big);
// Process remaining numbers using a loop
for (int i = 2; i <= n; i++) {
float current; // Variable to store the current number
// Prompt for the current number
printf("Enter element %d: ", i);
scanf("%f", ¤t);
// Compare with the current largest
if (current > big) {
big = current; // Update 'big' if current number is larger
}
}
// Display the result
printf("The largest of the %d numbers is %.2f\n", n, big);
return 0;
}
Vous pouvez étendre ce programme de plusieurs façons :
- Trouver à la fois le plus grand et le plus petit nombre
- Calculer la moyenne de tous les nombres
- Trier les nombres par ordre croissant ou décroissant
- Gérer des structures de données plus complexes comme les tableaux
Nous espérons que ce laboratoire vous a aidé à comprendre les bases de la programmation en C et la pensée algorithmique. Ces concepts forment la base pour des sujets plus avancés et des techniques de résolution de problèmes.



