« Exercices en langage C/Notions de base » : différence entre les versions

Contenu supprimé Contenu ajouté
→‎Notions de base : On commence simplement
Greudin (discussion | contributions)
+avertissement bonnes pratiques
Ligne 1 :
{{Exercices en langage C}}
 
Ces exercices sur les '''notions de base''' aborderont la saisie et traitement de différents types de données, des calculs simple jusqu'à l'utilisation de la bibliothèque mathématiques.
== Notions de base ==
 
{{bandeau d'alerte
Pour tous ces exercices, on demandera à l'utilisateur d'entrer des données, et on les récupèrera à l'aide de la fonction <tt>lire_ligne</tt> fournie dans le livre [[Programmation C]] au chapitre [[Programmation C Entrées/sorties#Entrées non formatées|Entrées non formatées]].
|style=background: #ffd; width: 100%;>
|image=Achtung.svg|Avertissement
|texte='''Avertissement'''<br/>
Les codes sources présentés sont à vocation pédagogiques ne correspond pas à de bonnes pratiques de programmation notamment en sécurité. L'utilisation de ces programmes compilés peuvent entrainer des [[w:Dépassement de tampon|dépassements de capacité]].
}}
 
PourAinsi pour tous ces exercices, onil demanderaest àpréférable lorsque l'utilisateur d'entrersaisira des données, et on les récupèrera à ld'aide deutiliser la fonction <tt>lire_ligne</tt> fournie dans le livre [[Programmation C]] au chapitre : [[Programmation C Entrées/sorties#Entrées non formatées|Entrées non formatées]]. :
Pour ces premiers exercices, on commence simplement :
* on ne traitera pas les cas d'erreur où <tt>errno</tt> est placé à une valeur non nulle;
* on n'utilisera pas de compilation séparée pour <tt>lire_ligne</tt>, mais on copiera directement son code dans le fichier contenant la fonction <tt>main</tt>.
 
=== Exercice 1 ===
Écrire un programme qui demande à l'utilisateur de taper la largeur et la longeurlongueur d'un champ rectangulaire, en flottants, et qui en affiche le périmètre et la surface.
 
On utilisera <tt>atof</tt> pour la conversion des entrées en nombres.
 
<div style="width:70%">{{Boîte déroulante|titre=Solution|contenu =
<source lang="C">
#include <stdio.h>
 
int main(int argc, char *argv[])
{
double largeur, longueur, surface, perimetre;
 
printf("Tapez la largeur du champ : ");
scanf("%lf", &largeur);
printf("Tapez la longueur du champ : ");
scanf("%lf", &longueur);
 
surface = largeur * longueur;
perimetre = 2 * (largeur + longueur);
 
printf("La surface vaut : %lf\n", surface);
printf("Le perimetre vaut : %lf\n", perimetre);
 
return 0;
}</source>
 
Avec les bonnes pratiques de programmation C, on utilisera des données de type décimale (float) et la fonction <tt>atof</tt> pour la conversion des entrées en nombres.
<source lang="c">
#include <stdio.h>
 
Ligne 40 ⟶ 64 :
 
return 0;
}</source>
 
 
}}</div>