TP1 - Briques de base (1) - Partie 1
AVERTISSEMENT SUR LE NIVEAU DE DIFFICULTÉ : Le niveau de logique nécessaire pour résoudre les exercices suivants est tout à fait à votre portée. Ces exercices, qualifiés de « Briques de bases », sont donnés à des lycéens en classe de première S et de terminale S.
Exercice 1 • Premiers pas en C
Ouvrir l'explorateur de fichiers Windows (combinaison des touches + )
- Ouvrir le disque
C:
- Créer le répertoire
C:\PROG1ACI
- Créer le répertoire
C:\PROG1ACI\PremiersProgrammesC
- Copier, dans ce répertoire, le programme du cours helloworld.c
Attention : faire donc, ici même, sur cette page web, un clic droit sur helloworld.c
et choisir "Enregistrer la cible du lien sous…" depuis le menu contextuel.
Modifier le programme helloworld pour qu'il parle… en français.
Lancer l'éditer de texte notepad++ (pas de Visual Code, ni de Visual Studio, ni autres logiciels) pour modifier le fichier :
- Depuis l'explorateur de fichiers : faire un clic droit sur le fichier
C:\PROG1ACI\PremiersProgrammesC\helloworld.c
- Choisir "Edit with notepad++" depuis le menu contextuel
- Modifier ce programme pour qu'il affiche « Bonjour le Monde!!! » plutôt que « Hello World!!! »
Lancer la console Windows ("Invite de commandes" : Menu Windows > Tous les programmes > Accessoires > Invite de commandes)
- Taper
cd ..
- Taper
cd ..
- Taper
cd PROG1ACI
- Taper
cd PremiersProgrammesC
Cela permet de changer de répertoire de travail - Taper
dir
et vérifier la présence du fichier helloworld.c
dir
permet de lister le contenu du répertoire de travail - Taper
gcc -Wall -ansi helloworld.c -o helloworld.exe
Si rien ne s'affiche, alors c'est que le programme a été compilé avec succès.
Sinon, retourner dans notepad++ afin de corriger les erreurs détectées par le compilateur.
Commande inconnue ? Exécutez une nouvelle console en tant qu'administrateur (clic droit > Exécuter en tant qu'administrateur), puis tapez la ligne :setx PATH "%PATH%;C:\MinGW\bin" -m
et ensuite, fermez toutes les consoles et démarrez-en une nouvelle.
Si cela ne fonctionne toujours pas, installez MinGW à partir de l'archive suivante : programmation_1a_mingw.zip
a) Décompresser l'archive
b) Exécuter le fichier bat en tant qu'administrateur - Ensuite, une fois que la compilation réussie, taper
dir
et vérifier la présence du fichier helloworld.exe (sa création résulte de la compilation). - Enfin, taper
helloworld.exe
- Que se passe-t-il ?
Retourner dans l'explorateur de fichiers Windows, dans le répertoire C:\PROG1ACI\PremiersProgrammesC
- Observer que le fichier helloworld.exe est apparu (si besoin appuyer sur pour rafraîchir la vue).
• La signification de la commande cd
est « change directory »
• Les touches et permettent d'éviter de réécrire des lignes de commandes déjà écrites en parcourant l'historique
• La touche de complétion permet d'éviter de devoir écrire en entier le nom des fichiers. Par exemple, entrez simplement hello
puis tapez plusieurs fois sur
Exercice 2 • Paramètres en ligne de commande
Question 2.1
Écrire un programme qui prendra deux nombres entiers en arguments (qui seront donc donnés au moment de l'appel du programme) puis affiche le produit de ces deux nombres.
Pour ce faire, faites une copie du fichier addition.c
(exemple 4 du cours) que vous renommerez en multiplication.c
et modifiez ce programme.
N'oubliez pas de tester votre programme, avec des nombres positifs, négatifs, positifs et négatifs, nuls, …
Voici ce que devra faire votre programme :
ascii to integer
La fonction int atoi (const char *nstr);
(lignes 14 et 15) calcule une valeur entière à partir d'une chaîne de caractères passée en paramètre (qui ne contient que des chiffres). Cette fonction retourne la valeur entière ainsi calculée.
Rappel : pour compiler depuis la console Windows (Invite de commandes)
(1) Votre répertoire de travail doit être C:\PROG1ACI\PremiersProgrammesC
(2) Taper la commande dir
et vérifier la présence du fichier multiplication.c
(3) Compiler le programme avec la commande suivante :gcc -Wall -ansi multiplication.c -o multiplication.exe
Question 2.2
Adaptez le programme pour la multiplication de nombres réels (et non plus des entiers).
Voici ce que devra faire votre programme :
N'oubliez pas de tester votre programme !!! Avec des nombres positifs, négatifs, positifs et négatifs, nuls, …
ascii to floating point number
La fonction double atof(const char *nstr);
calcule une valeur réelle à partir de la chaîne de caractères passée en paramètre. Cette fonction retourne la valeur réelle ainsi calculée.
Avec printf()
le formatage de conversion ASCII pour les types float
et double
est %f
Exercice 3 • Entrées au clavier
Question 3.1
Écrire un programme qui récupère la valeur de deux nombres entiers entrés au clavier et qui affiche les valeurs lues.
Le nom du fichier source sera calculs2nombres.c
et le nom de l'exécutable sera calculs2nombres.exe
Voici ce que devra faire votre programme :
N'oubliez pas de tester votre programme !!!
Besoin d'aide ? Vous trouverez un exemple de saisie d'un nombre entier au clavier dans l'exemple 3 du cours : parite.c
Question 3.2
Modifier ce programme pour afficher la somme des deux nombres. (Puis le tester !!!)
Question 3.3
Compléter ce programme pour afficher, en plus, le produit et la moyenne des deux nombres. (Puis le tester !!!)
Question 3.4
Adapter le programme pour manipuler des nombres réels (et non plus des entiers).
Avec scanf()
le formatage de conversion ASCII pour le type float
est %f
Avec scanf()
le formatage de conversion ASCII pour le type double
est %lf
.
Exercice 4 • Le plus grand
Question 4.1
Écrire un programme qui lit deux nombres au clavier et qui dit lequel est le plus grand.
- Faire une copie du fichier
calculs2nombres.c
qui s'appelleraleplusgrand2.c
Procéder, depuis l'explorateur de fichier Windows,
Ou encore avec une commande équivalente pour faire cela depuis la console :copy calculs2nombres.c leplusgrand2.c
- Modifier la fin du programme pour afficher lequel des deux nombres est le plus grand. Pour ce faire, vous utiliserez une structure de contrôle «
if
» :if (condition) {
...
} else {
...
} - L'exécution du programme devra produire des affichages strictement identiques aux suivants :
Astuce compilation : En cas de nombreuses erreurs lors de la compilation d'un programme, il est très fortement conseillé de commencer par résoudre les premières erreurs. En effet, une erreur au début du programme peut avoir pour incidence d'engendrer la détection d'autres erreurs dans la suite du programme (erreurs en cascade), mais qui en fait n'en sont peut-être pas. Ainsi, il est vivement indiqué de commencer par regarder les premières erreurs puis de tenter de nouveau de compiler le programme.
Question 4.2
Écrire un programme qui lit trois nombres au clavier et qui dit lequel est le plus grand.
Faire une copie du programme précédent qui s'appellera leplusgrand3.c
Question 4.3
Compléter le programme pour dire aussi lequel des trois nombres est le plus petit.
Exercice 5 • Première boucle
Question 5.1
Écrire un programme qui lit N nombres entiers au clavier et qui dit lequel est le plus grand.
Attention, vous devez procéder sans stocker les nombres dans un tableau. Le calcul du maximum doit être réalisé au fur est à mesure que les nombres sont récupérés. Pour ce faire, vous utiliserez une variable d'aide max
- Le programme commence par demander le nombre N de nombres à lire
- Puis, il demande un à un les N nombres
- Pour répéter plusieurs fois un bloc d'instructions, vous utiliserez une boucle
POUR
et une variable entièrei
Un exemple de boucle POUR
dans ce fichier : boucle_for.c
Si vous ne comprenez pas ce que fait ce mini-programme, compilez-le et testez-le.
Question 5.2
Compléter ce programme pour également indiquer lequel des N nombres est le plus petit
Question 5.3
Compléter ce programme pour afficher en plus la somme des N nombres