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", ¢igrade);
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.