Guillaume Rivière 2010 – 2017

Le logo de la CCI Bayonne Pays Basque

Programmation Procédurale en langage C

TP1 - Briques de base (1) - Partie 1

FYI 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 « Win » + « E » )

  1. Ouvrir le disque D:
  2. Créer le répertoire D:\PremiersProgrammesC
  3. 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++ pour modifier le fichier :

  1. Depuis l'explorateur de fichiers : faire un clic droit sur le fichier D:\PremiersProgrammesC\helloworld.c
  2. Choisir "Edit with notepad++" depuis le menu contextuel
  3. 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)

  1. Au départ, le répertoire de travail est C:\...
  2. Taper D: (puis appuyer sur la touche « Entrée »)
    ⇒ Cela permet de changer le disque courant
  3. Taper cd PremiersProgrammesC
    ⇒ Cela permet de changer de répertoire de travail
  4. Taper dir et vérifier la présence du fichier helloworld.c
    ⇒ dir permet de lister le contenu du répertoire de travail
  5. 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.
  6. 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).
  7. Enfin, taper helloworld.exe
  8. Que se passe-t-il ?

Retourner dans l'explorateur de fichiers Windows, dans le répertoire D:\PremiersProgrammesC

  1. Observer que le fichier helloworld.exe est apparu (si besoin appuyer sur F5 pour rafraîchir la vue).

• La signification de la commande cd est « change directory »
• Les touches «flèche haut» et «flèche bas» permettent d'éviter de réécrire des lignes de commandes déjà écrites en parcourant l'historique
• La touche de complétion «tabulation» permet d'éviter de devoir écrire en entier le nom des fichiers. Par exemple, entrez simplement hello puis tapez plusieurs fois sur «tabulation»

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 :

Exécution multiplication.exe v1
Figure 2.1.1

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 D:\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 :

Exécution multiplication.exe v2
Figure 2.2.1

N'oubliez pas de tester votre programme !!! Avec des nombres positifs, négatifs, positifs et négatifs, nuls, …

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 :

Exécution calculs2nombres.exe v1
Figure 3.1.1

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 !!!)

Exécution calculs2nombres.exe v2
Figure 3.2.1
Question 3.3

Compléter ce programme pour afficher, en plus, le produit et la moyenne des deux nombres. (Puis le tester !!!)

Exécution calculs2nombres.exe v3
Figure 3.3.1
Question 3.4

Adapter le programme pour manipuler des nombres réels (et non plus des entiers).

Exécution calculs2nombres.exe v4
Figure 3.4.1

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.

  1. Faire une copie du fichier calculs2nombres.c qui s'appellera leplusgrand2.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
  2. 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 {
    ...
    }
  3. L'exécution du programme devra produire des affichages strictement identiques aux suivants :
Exemple 1 exécution leplusgrand2.c Exemple 2 exécution leplusgrand2.c Exemple 3 exécution leplusgrand2.c
Figure 4.1.1

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

  1. Le programme commence par demander le nombre N de nombres à lire
  2. Puis, il demande un à un les N nombres
  3. Pour répéter plusieurs fois un bloc d'instructions, vous utiliserez une boucle POUR et une variable entière i
Exécution leplusgrandN.exe v1
Figure 5.1.1

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

Exécution leplusgrandN.exe v2
Figure 5.2.1
Question 5.3

Compléter ce programme pour afficher en plus la somme des N nombres

Exécution leplusgrandN.exe v3
Figure 5.3.1