Résumé cours programmation C 1 I- Notions de base. 1- Compilateur sensible à la

Résumé cours programmation C 1 I- Notions de base. 1- Compilateur sensible à la casse. Attention, lettre majuscule différente de lettre minuscule. 2- Commentaires. /* texte commentaire */ 3- Types de base. a- Caractère :char Le type char permet de stocker des valeurs signées ou non (signed ou unsigned) sur 1 octet. Par défaut, il s’agit de valeurs signées. char : valeurs comprises entre -128 et +127 signed char : idem unsigned char : valeurs comprises entre 0 et +255 Le type char est signé à cause de la marque de fin de fichier EOF qui vaut -1. b- Entiers : int Les entiers peuvent être signés ou non (signed ou unsigned), courts ou long (short ou long). Par défaut, il s’agit d’entiers courts signés. int (ou short int ou signed int ou signed short int) : sur 2 octets Valeurs comprises entre -32768 et +32767 unsigned int (ou unsigned short int) : sur 2 octets Valeurs comprises entre 0 et +65535 long int (ou long ou signed long int) :sur 4 octets Valeurs comprises entre -2.147.483.648 et +2.147.483.647 unsigned long int : sur 4 octets Valeurs comprises entre 0 et +4.294.967.295 c- Réels Pour stocker les réels, on dispose de deux types, le type flottant simple précision (float) et le type flottant double précision (double). float : sur 4 octets (1octet pour l’exposant et son signe, 3 octets pour la mantisse et son signe) Valeurs absolues comprises entre 9,9x 10-38 et 9,9x 10+38 double : sur 8 octets (11 bits pour l’exposant et son signe, 53 bits pour la mantisse et son signe) Valeurs absolues comprises entre 9,9x 10-307 et 9,9x 10+307 4- Représentation des valeurs a- Valeurs caractères. 1 caractère entre ‘ ‘ Combinaison de caractères ‘\n’ passage à la ligne ‘\t’ tabulation ‘\b’ back space ‘\r’ retour chariot ‘\f’ saut de page ‘\\’ back slash Tout caractère peut être exprimé de manière octale ‘\0’ caractère NUL ‘012’ ‘\n’ Résumé cours programmation C 2 b- Valeurs chaines de caractères. ″ chaîne ″ ″ exemple de \n texte sur \n 3 lignes ″ un marqueur de fin de chaîne est ajouté ‘\0’ NUL ASCII Une chaîne occupe toujours un octet de plus que le nombre de caractères. c- Valeurs entières. Par défaut, les valeurs entières sont exprimées en base 10 et stockées sur des short int. Exemples : -32 5678 Si on veut qu’elles soient stockées en long int, il faut faire suivre la valeur de L. Exemple : 1234567L Si on veut exprimer les valeurs en base 8 (ou 16), il faut faire précéder la valeur de O (ou Ox ou OX). Exemples : 020 correspond à (16)10 0x20 à (32)10 d- Valeurs réelles. Elles sont exprimées en notation virgule fixe ou virgule flottante, et stockées en double. Notation virgule fixe 3.14459 -10.0 Notation virgule flottante (Mantisse, exposant) 4e16 -8.2345 E-10 5- Déclarations. a- constantes symboliques. #define <ident> <expression> #define PI 3.14592358 #define E 2.718281828 #define entier int #define debut { #define fin } Remarque : les mot-clés commençant par # sont des directives de précompilation, qui sont traitées avant la compilation. La directive #define permet de remplacer dans le texte source toutes les occurrences de <ident> par <expression>. b- Variables. <type> <ident1>, <ident2>, …, <identn>; Exemples : int i, j ; double t ; long k ; char reponse ; int tab[10] ; /* tableau de10 entiers*/ Initialisation à la déclaration : int i = 0 ; double t = 0.1 ; II- Les opérateurs. 1- Affectation. <ident> = <expression> ; L’affectation peut être vue comme une fonction renvoyant la valeur affectée, on peut donc enchaîner les affectations. i = 3 ; f = -5E3 ; k = total + 1 ; c = 2 ; a = (b = c) + 4 ; /* a vaut 6*/ Le membre de gauche doit être d’un type de base (pas d’affectation de tableau). Résumé cours programmation C 3 2- Incrémentation / Décrémentation. ++ préfixé sur une variable => avant accès -- ou postfixé sur une variable => après accès i=2;j=2 ; k=i++; /* k vaut 2, i vaut 3 */ k=++j; /* k vaut 3 j vaut 3 */ i=2;j=2 ; k=i--; /* k vaut 2, i vaut 1 */ k=--j; /* k vaut 1 j vaut 1 */ 3- Opérateurs arithmétiques. - <exp> /* moins unaire */ <exp1> – <exp2> /* soustraction */ <exp1> + <exp2> /* addition */ <exp1> * <exp2> /* multiplication */ <exp1> / <exp2> /* division */ <exp1> % <exp2> /* modulo */ En ce qui concerne la division, si l’une des expressions est réelle, alors la division est réelle, sinon il s’agit d’une division entière. Pour le modulo (reste de la division entière), le signe du reste est celui du dividende. Exemples : 15%2 /* vaut 1 */ -15%2 /* vaut -1 */ 15%-2 /* vaut 1 */ -15%-2 /* vaut -1 */ b * (a/b)+ a%b ≡ a 4- Opérateurs relationnels. En C, il n’y a ni type ni valeur booléens. Les booléens sont exprimés par des int, la valeur 1 correspondant à VRAI et la valeur 0 à FAUX. <exp1> == <exp2> /* égalité */ <exp1> != <exp2> /* différent */ <exp1> > <exp2> /* supérieur */ <exp1> < <exp2> /* inférieur */ <exp1> >= <exp2> /* supérieur ou égal */ <exp1> <= <exp2> /* inférieur ou égal */ Remarque : a < b < c => VRAI (avec a = 10, b=20, c=15) 5- Opérateurs logiques. <exp1> et <exp2> sont des expressions entières. <exp1> && <exp2> /* ET logique */ si <exp1> = 0, <exp2> n’est pas évalué <exp1> || <exp2> /* OU logique */ si <exp1> = 1, <exp2> n’est pas évalué !<exp1> /* NON logique */ 6- Opérateurs de bits. <exp1> et <exp2> sont des expressions entières( int ou char). ~ <exp2> /* complément à 1 */ <exp1> & <exp2> /* ET bit à bit */ <exp1> | <exp2> /* OU inclusif bit à bit */ Résumé cours programmation C 4 <exp1> ^ <exp2> /* OU exclusif bit à bit */ <exp1> << <exp2> /* décalage à gauche */ La valeur de <exp1> est décalée à gauche de valeur de <exp2> bits. <exp1> >> <exp2> /* décalage à droite */ La valeur de <exp1> est décalée à droite de valeur de <exp2> bits. Si <exp1> est unsigned, remplissage à gauche par des 0. Sinon, remplissage par des 0 si <exp1> positive ou nulle, ou remplissage par des 1 si <exp1> est négative (Mais à vérifier en fonction du compilateur). 7- Opérateur conditionnel. (<exp1>) ? <exp2> : <exp3> si <exp1> ≠ 0 , l’opérateur renvoie <exp2> sinon <exp3> 8- Opérateur virgule. <exp1>,<exp2> L’opérateur virgule est un séquenceur d’actions. <exp1> est d’abord évaluée, mais son résultat n’est pas pris en compte, puis <exp2> est évaluée et retournée. Une telle formulation n’a de sens que si <exp1> produit un « effet de bord ». Exemple : a=b +(c=2,++c) ; Utilisation de 2 variables de contrôle dans une boucle for : for(i=0,j=MAX;i<MAX;i++,j--) {-----} 9- Affectation composée. <exp1> <op> = <exp2> <op> pouvant être l’un des opérateurs suivants : +,-,*,/,%,>>,<<,&,|,^ Cette formulation équivaut à : (<exp1>) = <exp1> <op> (<exp2>) Exemples : i +=3 ; /* i=i+3 */ x *= y+1 ; /* x=x*(y+1) */ a /= b–c ; /* a=a/(b–c) */ 10- Forceur de type. (<nouveau-type> ) <exp> <nouveau-type> est un type de base ou un pointeur. 11- Précédences. Opérateurs Ordre évaluation () [] -> . gauche->droite ! ~ ++ -- - unaire * unaire & unaire (type) sizeof droite -> gauche * / % gauche->droite + - gauche->droite << >> gauche->droite < <= > >= gauche->droite == != gauche->droite & gauche->droite ^ gauche->droite | gauche->droite && gauche->droite || gauche->droite ? : gauche->droite = += -= *= /= %= >>= <<= &= |= ^= droite-> gauche Résumé cours programmation C 5 Dans ce tableau, les opérateurs sont présentés selon leurs priorités décroissantes du haut vers le bas. La plupart des opérateurs sont binaires, sauf ceux marqués explicitement unaires, ainsi que l’opérateur ternaire ?:. Lorsqu’une expression comporte des opérateurs de même priorité, l’évaluation se fait de la gauche vers la droite, sauf en ce qui concerne les opérateurs de la seconde ligne et de l’avant dernière ligne du tableau. 12- Impression formatée. printf(″<chaîne de contrôle>″, <suite d’expressions>) ; <chaîne de contrôle> est une chaîne de caractères contenant des caractères ordinaires à imprimer tels quels, et des spécifications de format commençant par le symbole %,contenant au moins un caractère indiquant le format d’impression. Chaque spécification de format correspond à l’une des expressions de <suite d’expressions>(selon l’ordre d’apparition). d entier décimal signé u entier décimal non signé o entier octal non signé x,X entier hexadécimal non signé f réel en notation virgule fixe [-]dddd.dddddd e,E réel en notation virgule flottante [-]d.ddddd E[-]ddd c caractère s chaîne de caractères <chaîne de contrôle> peut ne pas contenir de spécification de format, auquel cas la chaîne sera affichée telle quelle. Exemples : printf(″\nBonjour″); int i=3, j=4 ; printf(″\nLa valeur de i est %d et celle de j uploads/s3/ resume-c.pdf

  • 24
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager