1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include <stdio.h> int main() { printf ( this is an example \n ); return 0; } 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: // 3. Mots clés : auto double int break else long switch case enum register typedef char extern return union const float short unsigned continue goto sizeof volatile do if static while Support de cours : Algorithmique, 2 ème année Licence Informatique, LMD, USTHB Prof. Slimane LARABI Page 1
4. Opérateurs Type d opérateur Opérateur Opérateur Opérateur Opérateur Opérateur Calcul + addition - soustraction * Multiplication / division % Reste de division entière Opérateurs bit à bit & and or ~ not ^ xor Assignation = += -= j+=2 j=j+2 Incrémentation ++ -- *= /= j+=2 j=j+2 = &= ^= Comparaison = =!= > >= < <= Logique or && and! not Opérateurs de décalage de bits Opérateurs de manipulation de bits >> j=j>>2 & &p Accès à la mémoire ( ) i=(*p)+5 Evaluation, séquentielle x,y évalue x puis y Evaluation? : conditionnelle x=(x>4)?j:j+1 << i=2<<2 * *p (type) (int)x_réel [ ] Tab[i] sizeof sizeof(float). structure. champ p champ _de_la_structure Support de cours : Algorithmique, 2 ème année Licence Informatique, LMD, USTHB Prof. Slimane LARABI Page 2
5. Ordre de priorités des opérateurs Par ordre décroissant : ( ) [ ] + - ++ --! ~ * & (type) sizeof * / % + - << >> < <= > >= ==!= & ^ &&? : = += -= *= /= %= &= ^= = <<= >>=, Encas de priorités identiques, l associativité es appliqué en allant de gauche à droite pour tous les opérateurs à l exception de :? : = += -= *= /= %= &= ^= = <<= >>=? : = += -= *= /= %= &= ^= = <<= >>= Exemple : (a=b=c=d) (a=(b=(c=d)) Support de cours : Algorithmique, 2 ème année Licence Informatique, LMD, USTHB Prof. Slimane LARABI Page 3
6. Les types de base int (short int, int, long int, unsigned) Les tailles dépendent des machines: Exemple: short int 2 octets, int, long int 4 octets float char Les constantes entières: -décimale: +23, -54 -octale: 012 00001010 10 -hexadécimal: 0x2A 00101010 42 Constante non signée (0..255) si elle est préfixée ou suffixée par U ou u: 014u 001100 12 Constante de type long int : 12l ou 12L Les constantes réelles: float double long double Les caractères: char my_character= a ; char str[11]= "chaîne de " ; Les constantes énumérées: enum couleur = {vert=4, bleu, rouge}; les valeurs se comportent comme des entiers (4, 5, 6). Support de cours : Algorithmique, 2 ème année Licence Informatique, LMD, USTHB Prof. Slimane LARABI Page 4
7. Instructions If (expression) {bloc} else {bloc}; Le else est regroupé avec ile if le plus interne, sinon on doit utiliser les crochets : If(m==0) if (n!=4) nb++; else nb=0; switch (expression) { case const1: instructions; break; case const2: instructions; break;.. default: instructions; } while (expression) {instructions;} for (expre1 ; expr2 ; expr3) { instructions;} do {instructions;} while (expression); break; quitter une boucle (for, do, while) continue: passer à l itération suivante, mais ne quitte pas la boucle. goto etiq; aller à l instruction étiquetée par etiq. Support de cours : Algorithmique, 2 ème année Licence Informatique, LMD, USTHB Prof. Slimane LARABI Page 5
8. Liste chaînée typedef struct MaListe { int Contenu; struct MaListe *psuivant; } Maliste; Maliste *Tete; Tete = NULL; 9. Pointeur sur tableau Tableau à une dimension tab[n]: int *ptab; ptab=(int*) malloc (n*sizeof(int)); 10. Instructions d entrée /sortie putchar (c) getchar() printf("message %format % format ", arg1, arg2); Formats de printf: Support de cours : Algorithmique, 2 ème année Licence Informatique, LMD, USTHB Prof. Slimane LARABI Page 6
Caractère Type Affiché comme: d argument d, i int nombre décimal o int nombre octal non signé (sans précéder par zéro) x, X int nombre hexadécimal non signé (sans 0x or 0X) u int Nombre décimal non signé c int un caractère s char * Affiche les caractères de la chaîne jusqu à '\0' ou bien en spécifiant le nombre f double [-]m.dddddd, où le nombre de d est précisé (par défaut 6). e, E double Affiche sous le format [-]m.dddddde+/-xx or [-]m.dddddde+/-xx, où le nombre de d est spécifié dans le format (par défaut 6). g, G double utilise %e or %E si l exposant est inférieur à -4 or supérieur ou égal à la précision; autrement, utilise %f. p void * pointeur % no argument affiche % scanf(format, liste d'adresses) Formats de scanf : Caractère Input Data Argument type d Entier décimal int * i Entier int *. Il peut être octal ou hexadécimal. o Entier octal (précédé ou non par zéro) int * u Entier décimal non signé unsigned int * x hexadecimal integer (with or without leading 0x or 0X) int * c caractère char *. Le prochain caractère en entrée is placé dans le buffer désigné. Pour lire le prochain caractère différent de l espace, %1s est utilisé. s Chaîne de caractères (sans quottes) char *, pointant un tableau de caractères se terminant par '\0'. e, f, g Nombre flottant avec en option le signe, le point décimal et l exposant float * % littéral % Sans assignation Support de cours : Algorithmique, 2 ème année Licence Informatique, LMD, USTHB Prof. Slimane LARABI Page 7