Publié le 18/05/2016
Auteur James
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Premier pas avec une application en C

Dans l'article précédent, nous avons vu des notions de base en C comme le fonctionnement du compilateur, la structure du programme ou encore les opérateurs. Maintenant, nous allons aborder la saisie de valeur par l'utilisateur, le contrôle de l’exécution et les type de données.

Saisie de valeur par l'utilisateur

Pour l'instant, mon programme manque un peu d'interactivité : l'idéal serait que l'utilisateur puisse choisir la température qu'il veut convertir et que le programme lui donne la réponse. Pour cela, il faut une fonction capable de lire des caractères alpha-numériques au clavier et de les stocker dans une variable. Cette fonction s'appelle scanf. Elle ressemble beaucoup à printf :
Voici le nouveau programme :
    #include <stdio.h>
    main () {
      int centigrade, farenheit;
 
      printf("Entrez la température en degrés centigradenT=");
      scanf("%d", &centigrade);
 
      farenheit = 32 + 1.8 * centigrade;
      printf("n%d°C = %d°Fn", centigrade, farenheit);
 
      return 0;
    }

Sans entrer dans les détails, scanf, comme printf, utilise une chaîne de caractères et une liste de variables. La chaîne de caractères identifie le format dans lequel les données seront entrées (ici en format d'entier décimal), et la liste de variables indique dans quelles variables ces données seront stockées. Toutes les variables utilisées dans scanf doivent commencer par le caractère & tant qu'elles ne sont pas des chaînes de caractères
Vous pouvez dès à présent de programmer par vous même des petits convertisseurs (entre les bases, de francs en euros etc...).

Note: Le préprocesseur est une des premières étapes de la compilation. Pour l'instant, la seule instruction du préprocesseur qui a été utilisée est #include, mais il y en a d'autres. #define sert à définir une constante. Cette constante sera remplacée avant la compilation. Pour une constante utilisée une seule fois, un #define n'est pas très utile, en revanche si la constante est utilisée 100 fois, il suffit de modifier la ligne #define au lieu de modifier les 100 occurrences de la constante.
Par exemple:
    #include <stdio.h>

    #define UN 1
    #define PI 3.141593
    #define AUTEUR "C.Szymanski"

    main () {
      printf("a=%dnpi=%fnProgramme écrit par %sn", UN, PI, AUTEUR);
 
      return 0;
    }

Par convention, les constantes sont écrites en majuscules.

Contrôle de l’exécution

Dans une application, nous avons besoin de test logique, de boucle et de condition pour faire fonctionner le programme.

La boucle while

Elle s’exécute tant qu'une condition est vraie. Par exemple, le programme qui affiche le tableau des températures:
    #include <stdio.h>
    main () {
      int centigrade, farenheit;
 
      printf(" °C  ->  °Fn");
      centigrade = -20;
      while(centigrade <= 50) {
        farenheit = 32 + centigrade * 1.8;
        printf(" =  ]n", centigrade, farenheit);
        centigrade += 5;
      }
 
      return 0;
    }

Les conditions: pour exprimer une condition, on utilise des opérateurs spécifiques < > <= >= != ==
Les symboles sont respectivement inférieur, supérieur, supérieur ou égal, inférieurs ou égal, différent et égal à.
Remarque : Comme on peut utiliser le = dans une expression pour donner une valeur à une variable, il faut utiliser == pour tester si deux valeurs sont égales.

Le bloc if

C'est un des plus utilisés en programmation, il sert à vérifier une condition.
    if (condition1) { %1% }
    elseif (condition2) { %2% }
    ...
    else { %x% }
    %s%

%1% est exécuté si condition1 est vraie ensuite le programme passe à %s% (même si condition2 est vraie). Si condition1 est fausse et que condition2 est vraie, alors %3% est exécuté etc... %x% est exécuté si condition1 condition2 condition3... sont toutes fausses.

Les types de données

Cette partie décrit de façon détaillée tous les types de données. Les apprendre par coeur n'est pas nécessaire, il faut juste savoir quel type de valeur ils servent à représenter.

type int :
Le type int sert à représenter des nombres entiers. Il utilise soit 16bits soit 32bits.
On déclare tout simplement une variable de type int par la commande int :
int chiens, chats, vaches, poussins;
On peut l'initialiser dès sa déclaration :
int chiens = 3, chats = 5, vaches = 10, poussins = 4;

type char :
Le type char sert à représenter un caractère. Il a la capacité d'un octet (256 valeurs maximum). On le déclare par la commande char :
char c, reponse, lettre;
On peut l'initialiser de différentes façons :
Soit par un caractère :
char c = 'A';
Soit par un nombre qui correspond au code ASCII du caractère :
char c = 65;

type float :
Le type float sert à représenter des nombres décimaux à virgule flottante. Le type float a généralement une capacité de 32 bits. Ils peuvent représenter les nombres à virgule de +/- 10-37 à 1038 avec une précision de 6 ou 7 chiffres après la virgule.
On les note en utilisant la lettre 'e' suivie d'un nombre entier représentant l'exposant.
6.36x10^-34 est noté 6.36e-34
on peut aussi le noter .636e-33 ou encore 636e-36
Il existe aussi un autre type, servant à représenter des nombres plus grands, plus petits, ou plus proches de 0 que le type float, c'est le type double. Il a généralement une capacité de 64bits ce qui lui permet de représenter de +/- 10-307 à 10308.
Les règles de déclaration et d'initialisation sont les mêmes :
float soleil = 2e30;

Leur utilisation avec printf se fait grâce à %f (pour float et double) qui affiche en notation décimale et %e qui affiche en notation exponentielle.
Remarque : unsigned supprime le signe, ce qui signifie qu'on peut représenter des nombres de 0 à 1076 en utilisant unsigned float.

On peut convertir n'importe quelle variable dans n'importe quel type. Considérons le programme suivant :
    float nombre;
    nombre = 3.14;
    printf("%f n", (int)nombre);

On obtient un 3 ; pourtant on a utilisé %f. (int) a simplement converti nombre en entier.
Cette méthode fonctionne avec tous les types possibles.

Les tableaux :
On peut créer un tableau à plusieurs dimensions. Chaque élément contient le même type de données. Par exemple :
int nombre[20];
Crée un tableau de nombres entiers. Il y en a 20 : nombre[0], nombre[1], nombre[2]... nombre[19].
Dans un programme, voici ce que ça donne :
    int main() {
      int suite[50], i;
 
      suite[0] = 0;
      suite[1] = 1;
      for (i=2; i<=50; i++)
        suite[i]=suite[i-1]+suite[i-2];
 
      for (i=0; i<50; i++)
        printf("%d: %dn", i, suite[i]);
 
      return 0;
    }

Ce programme calcule puis affiche les 50 premiers éléments de la suite de Fibonacci. Chaque élément de la suite est la somme des deux précédents.


J'espère que les deux tuto sur le langage vous à plus et vous sera utile. Il y a encore beaucoup de choses à voir ensemble comme les pointeurs, la copie de variable et le tri de liste. Restez à l'écoute, je publierais surement d'autres articles sur l'utilisation du langage C pour apprendre à utiliser ces instructions dans vos programmes.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
tuto - webmaster
Mise a jour
18/05/2016
Visualisation
vu 726 fois
Public
Internaute
Auteur de la publication
James
Membre junior
Auteur de 6 articles
|BIO_PSEUDO|
Commentaires récents

Publié par ING_BIO dans CMS

tres bonnes aide merci

Publié par Fobec dans php5

Bonjour,
vous pouvez poster un message sur le forum, la communaut vous donnera un coup de main pour la mise en place du script.

Publié par Ludwig dans tuto

Bonjour,
Il me semble que les plugins de gestion d'images sont payants pour TinyMCE et CKeditor, est-ce toujours le cas ?
Il manque amha l'excellent Xinha dans cette liste, qui lui est Open Sour...

Publié par Christof dans CMS

Je pense qu'il y a un problème au niveau de l'affectation du longint "Color" dans la
variable de type byte "r". A mon avis, cela risque de provoquer une erreur de
vérifi...

Publié par Roger HENRI dans CMS

Je ne suis pas sûr que cette procédure marche toujours parfaitement à cause du mot
"selstart" qui, chez moi au moins, paraît être capricieux.

Quand je veux lire sa valeu...