TD1 - Structure Programme et compilation

Structure Programme et compilatio

Durée : 1h30

Objectifs :

  • Créer son premier programme en C
  • Gérer la validité des saisies d’un utilisateur en C
  • Utiliser les boucles en C

Attention :

À chaque étape de programmation, vous devez vérifier si le programme :

  • Compile sans warning
  • Obtient les résultats attendus
  • Avant de coder, il faut écrire un algo avec un papier et un stylo !

    logo

Rappels

Pour compiler un programme, on utilise l’instruction suivante :

gcc -Wall exo.c -o nomExecutable

Pour executer un programme, on utilise l’instruction suivante :

./nomExecutable

Exercice 1 : Helloworld

0.Créer un répertoire ProgrammationProc, puis dans ce même répertoire, créer le répertoire TD1 et enfin, créer le répertoire exo1

  1. À l’interieur du répertoire exo1, créer le fichier helloworld.c

  2. Ajouter dans le fichier helloworld.c, le code suivant :

#include <stdio.h>
#include <stdlib.h>

int main(){
    char prenom[100];
    int a,b;

    printf("Bonjour, comment vous appelez vous ? \n");
    scanf("%s",prenom);

    printf("entrez un entier : \n");
    scanf("%d",&a);

    printf("entrez une entier : \n");
    scanf("%d",&b);

    printf("L'addition de %d et %d est %d",a,b,a+b);

    return 0;
}
  1. Compiler le fichier helloworld.c
  1. Exécuter le code compilé
  1. À quoi sert l’instruction dans les printf* ?

  2. Quelle est la différence entre la compilation et l’exécution ?

  3. Quels sont les différences principales entre ALGO et C ?

Exercice 2 : La saisie

  1. Ajouter dans l’arborescence précédement créée le répertoire exo2

  2. Écrire un exo2.c qui demande la saisie d’un nombre puis l’affiche.

PROGRAMME SaisieNombre
VARIABLES
    nb : entier
DÉBUT
    ECRIRE("veuillez saisir un nombre : ")
    LIRE(nb)
    ECRIRE("le nombre saisie est : " + nb)
FIN
  1. Que se passe-t-il si vous entrez à la place du nombre :
  • un réel,
  • une lettre,
  • une chaîne,
  • une chaîne commençant par un chiffre.
  1. Gérer les cas d’erreurs losrqu’il y en a.

Il faut récupérer la valeur de retour du scanf et si cette valeur de retour est égale à 0 alors il y a une erreur de saisie.

Dans notre cas scanf est une fonction C qui prend 2 paramètres (“%d”, et &nb), et renvoi 0 s’il y a une erreur de typage sinon elle renvoie 1.

  1. À l’endroit de votre programme, créez un fichier texte data.txt dans lequel vous saisissez simplement une valeur (42, par exemple). Puis utilisez les redirections du cours de commandes unix :

Solution 1

./votreProgramme < data.txt

Solution 2

cat data.txt | ./votreProgramme

Exercice 3 : Décliner votre identité

  1. Créer un répertoire exo3 dans lequel on ajoutera le fichier exo3.c contenant le code suivant :
#include <stdio.h>
#include <stdlib.h>

int main(){
    return 0;
}
  1. Créer un programme reproduisant (par exemple) la sortie ci-dessous. Votre programme devra redemander de saisie l’âge jusqu’à ce qu’une saisie soit correcte (un entier, positif, inférieur à 27).
Entrez votre nom : ...
Entrez votre prénom : ...
Entrez votre âge : ...

Voici ce que vous avez entré :
Nom : Cobain
Prénom : Kurt
Âge : 27 ans
  1. Améliorer le programme principale en ajoutant la possibilité de vider le buffer pour éviter un problème. Effectivement, dans la démonstration précédente lorsque l’on saisie une lettre à la place de l’âge, au tour suivant, on ne peut plus remplir son nom. Pour cela, nous pouvons utiliser la fonction qui vide le buffer et permet d’éviter le problème. On l’appelera après le scanf de l’âge.
/* Auteur : Peio */
/* Date :  19/11/20 */
/* Résumé :  procédure qui permet de vider le buffer d'un scanf */
/* Entrée(s) :  aucune */
/* Sortie(s) :  aucune */
void emptyBuffer() {
  char c;
  while (((c = getchar()) != '\n') && (c != EOF));
}

Exercice 4 : Séquences d’échappement

Créer un répertoire exo4 dans lequel on ajoutera le fichier exo4.c contenant le code suivant :

#include <stdio.h>
#include <stdlib.h>

int main(){
    return 0;
}
  1. Ajouter au programme les instructions, permettant de tester les différents caractères d’échappement étudiés en cours

Caractère provoquant un ”affichage” particulier : \n, \t, \v, \b, \r, \f, \’, \", \\, \nnn, \xnnn, ...

  1. Créer une documentation Doxygen