Premier programme en C : => 1.4 Que fait le programme ? => 1.5 #include <stdio.h> : inclure un fichier d’entête ( .h “header” )qui permet de faire appel aux fonctions standards du langage C ( stdio : standard input output ). Si cette ligne n’apparait pas dans le programme , la compilation renvoie une erreur d’identification des instructions qui suivent .
Premier programme en C : => 1.6 Le début de la fonction principale se repère toujours par son nom , soit : main() ou int main() ou void main() => 1.7 La fonction principale du programme renvoie ici un entier de valeur égale à 0 à l’aide de l’instruction return à la fin de son exécution ( ou de son traitement ) . L’instruction return permet de sortir de la fonction une fois traitée .C’est l’équivalent d’un retour de sous programme du type “retlw” en langage assembleur dédié aux PIC . => 1.8 Les types de variables a,b,calcul , u et v : int a,b,calcul : trois variables définies de type entier . ( nombres entiers signés) char u,v : 2 variables définies de type caractère ( des symboles ou des nombres entiers ) .
Premier programme en C : => 1.9 Le deuxième affichage de u renvoie : A Le deuxième affichage de v renvoie : A …cela est cohérent ….. Car ces 2 variables ont été déclarées comme des caractères …..oui , mais dans le programme u=65 !! => 1.10 La fonction printf permet d’afficher dans la console les contenus des variables dans différents types possibles !! %d : indique que l’on affichera un entier …même si la variable à visualiser ne l’est pas . Il ya donc une conversion !!! %c : indique que l’on affichera un charactère …même si la variable à visualiser ne l’est pas . Dans la table ASCII : Le codage du symbole A est la valeur entière 65 !!
Premier programme en C : => 1.11 En enlevant le \n de chaque printf , on obtient le traitement suivant : le \n permet d’effectuer un retour à la ligne après chaque traitement d’affichage .
Premier programme en C : => 1.12 Le point virgule permet de terminer une ligne d’instruction à l’édition . Si on l’oublie , il y a une erreur de compilation . La compilation interprète l’instruction comme étant tout ce qu’elle trouve en attendant de trouver un point virgule . …..cela entraine parfois des messages d’erreurs qui n’ont rien avoir avec cet oubli …..
Type de variables : init2.c et init3.c => 2.1 c=66 : après l’exécution de cette ligne , la valeur entière 66 est affectée à la variable c qui est définie comme un charactère . ….en code ASCII la valeur 66 permet de définir le B ! ( juste après 65 …eh oui c’est le A ) . => 2.3 %d et %c …déjà vu à la question 1.10 %x :indique que l’on affichera un hexadecimal …même si la variable à visualiser ne l’est pas . Il ya donc une conversion !!! %o :indique que l’on affichera une valeur en base 8 (base octale) …même si la variable à visualiser ne l’est pas . Il ya donc une conversion !!!
Type de variables : init2.c et init3.c Début Affecter 66 à c Afficher c en base 16 Afficher c comme un caractère Afficher c en base 8 (octale) Afficher un commentaire Attendre la saisie d ’une frappe Fin Afficher c en base 10 => 2.4 Algorigramme de init2.c
Etude d’une boucle while : init4.c => 3.1 Les 2 instructions c=getch(); et printf(“%c\n”,c); permettent de saisir un caractère au clavier et de l’afficher dans la console . Si la seconde instruction n’existait pas : la valeur saisie ne serait pas afficher ….mais elle est bien affectée à la variable c . => 3.2 Le symbole != : signifie “différent de” . Exemple : la condition a!=b renvoie 1 si a est différent de b . elle renvoie 0 si a égal b .
Etude d’une boucle while : init4.c => 3.3 la boucle do…while : Instruction 1 Instruction 2 Instruction n Condition est vraie oui non => Faire { instruction 1; instruction 2; …………..; instruction n; } tant que (condition est vraie)
Etude d’une boucle while : init4.c => 3.4 Pour sortir de la boucle do…while : ……la condition reste vraie si “ sortie!=‘s’ ” …alors on reste dans la boucle . ……pour que la condition soit fausse ….c’est à dire , sortir de la boucle , il faut que l’utilisateur du programme tape sur le clavier ‘s’ . do { instruction 1; instruction 2; …………..; instruction n; } while (sortie !=‘s’)
Etude d’une boucle while : init4.c oui => 3.5 Algorigramme de init4.c Afficher «entrer un caractère » sortie ’s ’? non Début Saisir et charger le caractère dans c Afficher le caractère c Afficher le code ASCII de c Afficher un commentaire Attendre la saisie d ’une frappe Charger le caractère saisi dans sortie Fin Le programme :
Les règles de syntaxes de base: // tout ce qui suit sur la ligne est un commentaire. /* */ tout ce qui est entre ces 2 symboles est un commentaire. # annonce une directive de compilation. ; doit toujours terminer une instruction C. { } tout ce qui est entre ces 2 accolades est un seul et même bloc. main() il doit y avoir au minimum une fonction nommée main qui définit le bloc principal du programme . /* ……Mon premier programme version 1.0 du 17/03/06...*/ #include < stdio.h > #define TOTO 4 main() { int v,somme; v=2; somme=v+TOTO; printf(“Bonjour !”); printf(“La somme est égale de :%d”,somme); }
Les règles de syntaxes de base (suite) : Structure générale d’un programme : /* commentaires */ #include <stdio.h> #define Pi 3.14 main() { Déclaration des variables; Initialisations; Instructions; } Appel des fonctions de base du c stdio.h : fichier « header » Constante symbolique Fonction main Types de données: int, float, char Opérateurs : = , == , != , || , % , + + for ( ; ;) { …. ;} while (condition) { … ;} if (condition) { … ;}
Type de variables : init5.c => 5.2 : Tableau des différents types de variables => 5.3 : unsigned int : sa taille = 4 octets réservés en mémoire la plage de valeur : de 0 à 4 294 967 295 ……..pour un caractère char : sa taille = 1 octet réservé en mémoire la plage de valeur : de -128 à +127 ………..un unsigned char : de 0 à 255 .
Type de variables : init5.c => L’évolution des tailles des types des variables :
Les types de données (simples): Le langage C traite des bits, octets, mots, double mots, et des réels ( nombres décimaux ) . Les noms des types sont bit, char, short, int , long , float , double. Par défaut toutes les nombres sont signés (signed). Par contre , les entiers peuvent-être non-signés (unsigned). Remarque :On peut passer d'un type à un autre par un cast, si cela à un sens…: int i; /* la variable i est défini comme étant un entier signé*/ unsigned int k=0xff; /*k=255*/ i = (int) k; // La variable k est convertie en un //entier signé --> i=-1 !!
Les types de données (complexes): Les tableaux : données de même type, accès par indexation . Exemple :float temperature[10] ; tableau de 10 cases . Chaque case est un nombre réel (float) . Les différentes cases sont accessibles de temperature[0] à temperature[9] Les structures: permettent de grouper des variables de types différents. Les unions : permettent plusieurs interprétations d'une même zone mémoire.C’est aussi un regroupement de plusieurs variables . Les exemples de ces 2 derniers types de données seront traitées dans le projet !!!