Il s'agit ici d'une fiche rapide de rappels sur une partie des notions vues en cours. Ce n'est en aucun cas un cours complet! Cette fiche sert surtout de référence pour retrouver rapidement les syntaxes et quelques notions élémentaires.
Déclaration d'une variable :
type nom_variable; type nom_variable=valeur; type var1,var2,var3; type var1=x,var2y,var3=z;
En pratique cela donnera par exemple :
//déclaration d'un entier : int x; //déclaration d'un entier et assignation de valeur : int y=5; //déclaration d'un nombre à virgule avec float : float k; //déclaration et assignation d'un float : float pi=3.14159; //déclaration d'un nombre à virgule avec double et assignation de valeur : double pi2=3.1415962;
On peut effectuer les opérations arithmétiques habituelles:
//déclaration de nos variables int a1=5,a2=4,a3,a4; float k; //addition a3=a1+5; //soustraction a4=a2-a3; //multiplication a1=a1*a2; //division k=2.5654/0.007; //division par un entier k=(a1+a3)/(float)a2;
Pour la division, on s'assurera que le diviseur est différent de 0. De plus, si l'on divise par un entier, on pourra ajouter (float) devant le diviseur pour forcer à le considérer comme un nombre à virgule. Dans le cas contraire, on effectue une division euclidienne : 3/2=1, et il reste 1.
On pourra également ajouter l'opérateur modulo (%), qui donne le reste de la division euclidienne :
int reste=3%2; //ici reste vaut 1, car en 3 je trouve une fois deux, et il reste un.
Au sein d'un programme on fera souvent des affichages et des saisies. Pour l'instant nous utiliserons deux fonctions : printf() pour l'affichage, scanf() pour la saisie.
On peut afficher du texte et des variables en utilisant la fonction printf(). Il est également possible d'effectuer des affichages composés pour afficher des variables dans du texte. Voyons quelques exemples :
#include <stdio.h> int main() { int a=0; float pi=3.1415; //affichage de texte: printf("Ce texte sera affiché dans le terminal"); //affichage d'une variable entière seule : printf("%d",a); //affichage d'une variable de type float seule : printf("%f",pi); //affichage de texte et d'une variable : printf("La valeur de pi est de %f. Ceci est une valeur approximative.",pi); //affichage de texte avec un retour à la ligne en utilisant \n printf("le caractère spécial antislash-n permet un retour à la ligne.\n"); printf("on peut en mettre autant que voulu : \n\n\n Ici, nous avons sauté 2 lignes vides en plus du retour à la ligne."); //affichage avec plusieurs variables: printf("a vaut %d et pi vaut %f.\n",a,pi); //mêmes variables dans l'autre sens : printf("pi vaut %f et a %d\n",pi,a); return 0; }
La fonction scanf() est très puissante et peut être utilisée pour effectuer des saisies au clavier. Il faudra généralement confirmer la saisie en appuyant sur entrée. Voici quelques exemples d'utilisation :
#include <stdio.h> int main() { int a=0; float p=0; //saisie d'un entier: scanf("%d",&a); //saisie d'un float : scanf("%f",&p); //il est préférable de mettre un affichage avant le scanf pour que l'utilisateur sache ce qu'on attend de lui : printf("veuillez saisir un nombre entier : "); scanf("%d",&a); printf("veuillez saisir un nombre réel : "); scanf("%f",&p); return 0; }
Dans notre programme, on peut vouloir faire une chose ou une autre en fonction d'une variable. Par exemple, si le solde d'un compte est inférieur à 0, on affichera un message dans ce sens. Pour cela on utilisera des instructions conditionnelles, avec principalement if, else et else if.
L'utilisation minimale se fait comme suit :
#include <stdio.h> int main() { int solde=0; printf("veuillez saisir le solde du compte : "); scanf("%d",&solde); if(solde<0) //si le solde est strictement inférieur à 0 { printf("votre compte est à découvert.\n");//on affiche le message } return 0; }
Ici on affichera un message uniquement quand le solde est négatif. Si l'on souhaite ajouter un message dans les autres cas, on utilisera l'instruction else :
#include <stdio.h> int main() { int solde=0; printf("veuillez saisir le solde du compte : "); scanf("%d",&solde); if(solde<0) //si le solde est strictement inférieur à 0 { printf("votre compte est à découvert.\n");//on affiche le message } else { printf("vous n’êtes pas à découvert\n"); } return 0; }
Notez qu'il n'y a JAMAIS de else sans if.
Si l'on a plus de cas, on peut utiliser autant de fois l'instruction else if que souhaité :
#include <stdio.h> int main() { int solde=0; printf("veuillez saisir le solde du compte : "); scanf("%d",&solde); if(solde<0) //si le solde est strictement inférieur à 0 { printf("votre compte est à découvert.\n");//on affiche le message } else if(solde == 0) { printf("votre compte est vide, vous n'avez plus un sou!"); } else { printf("vous n’êtes pas à découvert\n"); } return 0; }
Notez qu'on peut avoir autant de else if que voulu, mais un seul else, et celui ci vient toujours en dernier dans pour ce bloc if.
Voyons la liste des conditions simples courantes.
//si a est strictement inférieur à b if(a<b) { printf("a<b.\n"); }
//si a est strictement inférieur à b if(a<b) { printf("a<b.\n"); }
//si a est strictement inférieur à b if(a<=b) { printf("a<b.\n"); }
//si a est strictement inférieur à b if(a>=b) { printf("a<b.\n"); }
//si a est strictement inférieur à b if(a==b) { printf("a<b.\n"); }
Notez bien le double signe d'égalité!
//si a est strictement inférieur à b if(a!=b) { printf("a<b.\n"); }
On peut combiner plusieurs conditions, en utilisant les opérateurs logiques ET et OU. Exemples :
//si a vaut 0 et que b est inférieur à 10 if(a==0 && b<10) { printf("a=0 et b plus petit que 10.\n"); }
Il s'agit du caractère et commercial (&) qui se trouve sur la touche 1 des touches numériques au dessus des lettres.
//si a vaut 0 OU bien si b est inférieur à 10 if(a==0 || b<10) { printf("a=0 et/ou b est plus petit que 10.\n"); }
Il s'agit du caractère pipe (tuyau, en anglais) (|) qui se trouve sur la touche 6 des touches numériques au dessus des lettres, accessible en pressant la touche Alt Gr + la touche 6 en question.
On peut combiner ces opérateurs à volonté. Par exemple si l'on souhaite que a soit compris entre 0 et 42 (inclus), ou que b soit négatif, je ferai comme suit :
//si 0<a<=42 OU bien si b est inférieur à 0 if(a>0 && a<=42 || b<10) { //faire quelque chose }
En programmation, nous aurons souvent besoin de répéter une opération un certain nombre de fois. Pour cela, nous utiliserons les boucles, qui permettent de répéter des instructions autant que souhaité. Les deux boucles étudiées sont for et while.
La boucle for permet de répéter un nombre précis de fois une instruction, même s'il est possible de passer outre ce comportement classique. En pratique, si l'on souhaite par exemple afficher les nombres de 1 à 100, on ferra comme suit :
#include <stdio.h> int main() { int i; for (i=1;i<=100;i++) { printf("i vaut %d\n",i); } return 0; }
Dans les parenthèses du for, on trouve trois blocs séparés par un point virgule.
Notre boucle commencera à i=1, et continuera tant que i sera inférieur ou égal à 100, et à chaque tour i augmentera de 1. Les instructions entre les accolades du for seront celles qui seront exécutées à chaque tour. Nous afficherons donc ici les nombres de 1 (inclus) à 100 (inclus). i++ est une forme compactée de i=i+1, et il est possible de faire varier i comme on le souhaite, par exemple i=i*2, i=i-2, etc…
Les fonctions permettent en quelques sortes d'ajouter du vocabulaire à notre langage C. Ainsi, nous utilisons déjà les fonctions printf() et scanf(), mais il nous est possible d'en créer d'autres.
Les noms de fonctions respecteront les mêmes contraintes que celles des noms de variables. De plus une fonction et une variable ne peuvent jamais avoir le même nom au sein d'un même programme.
Le prototype générique de la déclaration d'une fonction sera donc le suivant :
type nomfonction(type1 param1,type2 param2,...,typeN paramN) { //instructions effectuées par la fonction }
Entre les parenthèses, on mettra les paramètres. On peut avoir autant de paramètres que voulu, ou aucun (dans ce cas, on ne met rien entre les parenthèses).
Le type de la fonction correspond au type de valeur retournée. Si notre fonction renvoie un entier, il sera int par exemple. Il s'agit donc des mêmes types que ceux utilisés pour les variables. Si la fonction ne renvoie rien, elle sera de type void.
Pour retourner une variable ou une valeur, on utilisera le mot clef return.
Une fonction qui fait la somme de deux entiers :
int somme(int a, int b) { int c=a+b; return c; }
On peut aussi l'écrire comme suit :
int somme(int a, int b) { return a+b; }
Une fonction qui ne renvoie rien
void etat_solde(int solde) { if(solde>0) { printf("Vous avez des économies sur votre compte\n"); } else if(solde==0) { printf("votre compte est vide\n"); } else { printf("Vous avez des dettes!\n"); } }
Exemple de fonction sans paramètre et qui ne retourne rien :
void analyse_nombre() { int a=0; printf("veuillez saisir un nombre entier"); scanf("%d",&a); if(a>0) { printf("le nombre est strictement positif.\n"); } else { printf("Le nombre est négatif ou nul.\n"); } }