tete du loic

 Loïc YON [KIUX]

  • Enseignant-chercheur
  • Référent Formation Continue
  • Responsable des contrats pros ingénieur
  • Référent entrepreneuriat
  • Responsable de la filière F2 ingénieur
  • Secouriste Sauveteur du Travail
mail
loic.yon@isima.fr
phone
(+33 / 0) 4 73 40 50 42
location_on
ISIMA
  • twitter
  • linkedin
  • viadeo

[IniC] TP 1

Date de première publication : 2015/07/22

Hello world

Taper ou copier-coller le code suivant dans un éditeur de texte (code, geany, gedit, nano, vi par exemple sous nightmare) :

/*
     Voici un premier programme en C qui correspond au "Hello World" classique
*/

#include <stdio.h>

int main()
{
   printf("Bonjour les ZZ1!\n");
   printf("Comment allez-vous ?\n");

   return 0;
}
$ gcc bonjour.c -o bonjour

Si vous oubliez l'option -o, le nom du fichier compilé, s'il n'y a pas d'erreur, sera a.out. Le programme obtenu après compilation est directement exécutable (pas besoin d'un chmod +x comme pour les scripts).

$ bonjour
$ ./bonjour
  • Déclarer une variable entière et l'initialiser avec un nombre positif
  • Afficher cette variable comme un entier
  • Afficher cette variable comme un réel
  • Bien noter ce que vous dit le compilateur quand vous vous trompez de format au printf()
  • Faire de même avec une variable de type réel : déclarer, l'afficher comme un nombre réel puis comme un entier
  • Pour la compilation, on vous demande de prendre l'habitude de compiler avec les options suivantes à minima :

    -Wall -Wextra -g

    Vous allez changer successivement certaines lignes pour voir les messages d'erreurs ou d'avertissement. Il est fondamental de connaître les principaux messages pour savoir comment remédier aux bêtises faites.

    Lors de l'affichage des variables, vous pouvez essayer les différents formats : %d %x %u pour les entiers, %f %F %g et autres pour les réels. Que se passe-t-il par exemple quand vous affichez un entier négatif avec %u ?

    Tests

    Exemple du cours

    Tester le programme du cours en modifiant i

    int main()
    {
        int i = 17304;
    
        if (i == -1)  printf("i vaut -1\n");
        if (i != -1)  printf("i est différent de -1\n");
        if (i != 0)   printf("i est non nul\n");
        if (i)        printf("i est non nul également\n");
        if (i == 0)   printf("i est nul\n");
        if (!i)       printf("i est nul encore !\n");
        if (i>=0) && (i<=10) printf("i est petit\n");
        if (i>3) || (i<-3) printf("i est hors intervalle\n");     
        return 0;
    }

    Il est tout à fait possible que le code ci-dessus comporte des coquilles.

    Solutions d'une équation de degré 2

    Une équation de degré 2 est caractérisée par les coefficient a, b et c dans ax2+bx+c = 0.

    On vous demande d'afficher l'équation à résoudre, le nombre de solutions et les solutions de l'équation.

    Dans un premier temps, a, b et c seront des variables. Le programme sera recompilé à chaque fois que les valeurs de a, b ou c changeront.

    La fonction racine carrée est sqrt(), elle est dans la bibliothèque math.h et nécessite d'ajouter l'option -lm à la compilation.

    Cette option -lm ne peut pas être placée n'importe où dans la ligne de "compilation". Par exemeple, il ne faut pas séparer l'option -o et son paramètre ! Pour éviter les problèmes, on vous conseille de le mettre en fin de commande.

    Boucles

    On vous demande de réaliser les petites choses suivantes en utilisant les différents types de boucle : while, for et do while.

    Affichages en tout genre

    Exécuter le programme suivant :

    int main() 
    {
      float x =1.0, y=.0;
      int i = 7;
      /* Quelques exemples */
      printf("Un mot\n");
      printf("un nombre : %d\n", 3);
      printf("Solution x:%f, y:%f\n", x, y);
    
      printf("%d\n", i);
      printf("%d\n", ++i);
      printf("%d\n", i);
      printf("%d\n", i++);
      printf("%d\n", i);
    
      printf("%d\n", 3.5);
      printf("\n");
      printf("\t\t %d\n", i);
    
      return 0;
    }