CH 1 : Variables et opérations________________1 Annexe : les caractères _______
CH 1 : Variables et opérations________________1 Annexe : les caractères ______________12 CH 2 : Structures alternatives _______________13 CH 3 : Structures itératives _________________21 CH 4 : Tableaux__________________________26 CH 5 : Fonctions _________________________32 Annexe : visibilité _________________40 CH 6 : Bilan _____________________________41 TEST 2009-2010 _________________________43 ANNEXES Annexe 1 : utiliser Code::blocks _____________45 Annexe 2 : installer Code::blocks ____________49 Annexe 3 : compléments de langage C ________50 Annexe 4 : structure d’un programme en C ____51 IUT ANNECY Département Mesures Physiques Cours d’informatique Initiation au langage C myriam.chesneau@univ-savoie.fr Mots clefs : Initiation à la programmation Langage C Variables Opérations Structures alternatives et itératives Tableaux Fonction Algorithmes La plus part des exercices proposés sont de grands classiques de l’initiation à la programmation. Ils sont présentés dans de nombreux ouvrages, livres, polycopiés, cours en ligne, et sont indépendants du langage. - 1 - CH 1 : VARIABLES ET OPERATIONS L’ordinateur utilise une représentation binaire de l’information, l’information élémentaire est le bit, il ne peut prendre que deux valeurs 0 ou 1. Programme, fichier texte, fichier image…tout ce qui est utilisé par un ordinateur est donc codé en un ensemble de 0 et de 1. Ces deux valeurs correspondent à deux états électriques, utilisés pour mémoriser et traiter l’information au sein de l’ordinateur. Les circuits de l’ordinateur manipulent des ensembles de bits : • Quartet 4 bits • Octet 8 bits • Mot 16, 32 bits ( ou plus, à préciser) • ko, Mo, Go : multiples de l’octet Dans ce module, nous utiliserons • les nombres, entiers et réels, dont le codage est introduit au paragraphe suivant, et • les caractères : chaque caractère est codé par 7 bits en code ASCII standard, sur 8 bits en code ASCII étendu. Ceci est détaillé en annexe 1, en fin de chapitre. 1. CODAGE DES NOMBRES (VOIR COURS D’INFO. D’INSTRUM.)__________________________________ Un nombre est représenté et codé par un nombre fini (4, 8, 16...) de bits. 1.1 Les entiers Code binaire naturel sur n bits Il permet de représenter les entiers naturels compris entre 0 et 2n-1 Exemple sur 8 bits on peut coder les entiers positifs de 0 à 28 - 1 = 255 73 = 64 + 8 + 1 = 26 + 23 + 20 = 0 × 27 + 1 × 26 + 0 × 25 + 0 × 24 + 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20 est codé par 0100 1001 sur 8 bits. Code complément à deux sur n bits C’est le plus utilisé en calcul scientifique. Il permet de représenter les entiers naturels compris entre –2n-1 et 2n-1-1 • les entiers positifs sont codés en binaire naturel • les entiers négatifs : la valeur absolue est codée en binaire naturel, le résultat est complémenté (1 ⇔0) puis on ajoute 1 au nombre obtenu. Exemple Sur 8 bits on peut coder les entiers de - 27 à 27 – 1 soit –128 à 127 - 73 est codé par complément de (0100 1001) + 1 = 1011 0110 + 1 =1011 0111 sur 8 bits. 1.2 Les réels Le codage le plus fréquent est le codage virgule flottante standard (IEEE 754). Pour un tel codage sur 32 bits S Exposant : E Mantisse : M S e7 e6 e5 e4 e3 e2 e1 e0 m1 m2 m3 m4 m5 m6 m23 • S bit de signe • E exposant sur 8 bits à lire en binaire naturel • M mantisse sur 23 bits à lire comme une partie décimale en binaire (M = 2-1.m1+2-2m2 + … +2-23m23) X = (-1)S . (1+M) . 2E-127 - 2 - 2. VARIABLES ________________________________________________________ 2.1 Type et nom des variables Les nombres et caractères sont stockés dans des variables. Une variable possède un nom et un type adapté. Les principaux types de variable utilisés sont • les entiers, codés sur 8, 16 ou 32 bits (int = integer) • les réels, codés sur 32 ou 64 bits, (double = réel double précision) • les caractères, codés sur 8 bits, et associés à une lettre ou un signe via le code ASCII. Exemple char lettre; int compte; int entier1, entier2; double longueur, largeur; On écrit le nom des variables en utilisant les lettres minuscules et majuscules, les chiffres, mais pas le _. On évite d’appeler tous les entiers « n » et tous les réels « x » ou toutes les variables « toto »: on donne des noms significatifs comme « longueur », « taux », « note »…Le programme gagne ainsi en lisibilité. Les majuscules servent à délimiter les noms, on commencera par une minuscule : Exemple motDePasse bilanJanvier reel2 adresseDeBase 2.2 Assignation, initialisation On peut affecter une valeur à une variable au moment de sa déclaration. On dit qu’on initialise la variable. Exemple int nbr=2, triple=3*nbr; char lettre='A'; //'A' désigne le caractère A On peut affecter une valeur à une variable après sa déclaration, on dit qu’on assigne une valeur à une variable. Exemple nbr=3; triple = 3 * nbr; longueur = 0.12; // réel double précision virgule flottante largeur = 1.5e-1; // réel double précision notation scientifique Attention : double quotient; quotient = 5/3 ; // 1.00 quotient = 5./3 ; // 1.67 2.3 Conversions Conversion implicite Lors d'une opération entre deux variables de types différents, c'est le type « le plus précis » qui est choisi pour évaluer l'opération. Lors d'une affectation, il y a conversion dans le type de la variable. A chaque conversion implicite, le compilateur prévient par un WARNING : il est préférable d’être explicite. Exemples : int nbr1, nbr2 = 3; double reel = 1.1; nbr1 = nbr2/reel; - 3 - //nbr1 -> double, puis opération sur 2 doubles : 2.73, puis résultat tronqué : 2 cout<<nbr2<<endl; Conversion explicite Pour transformer le type d'une variable, on fait précéder l'expression par le nouveau type entre parenthèses. Il peut y avoir perte d'information lors d'une conversion explicite. Exemple double reel; int partieEntiere; partieEntiere = (int)reel; // ou encore partieEntiere = int(reel) ; 2.4 Constantes Pour interdire le changement de la valeur d'une variable, on fait précéder son nom, lors de l'assignation, du mot const : Exemple const int NOMBRE = 3; const double TAUX = 0.86; const double PI = 3.14159 ; On écrit le nom des constantes en majuscule. 3. OPERATEURS ______________________________________________________ 3.1 Opérateurs arithmétiques Opérateur Nom Exemple Résultat + Identité unaire +5 - Opposé unaire -5 + Addition binaire 3+6 - Soustraction binaire 3.5-2 * Produit binaire 5*2 / Quotient binaire 7/3 11./2. % modulo (n'agit que sur des entiers) binaire 11%3 12%3 3.2 Opérateurs relationnels Une expression utilisant un ou plusieurs opérateurs relationnels vaut 0 si elle est fausse, 1 si elle est vraie. Opérateur Nom Exemple Résultat pour a=2 b=4 == égal à (3==5) (a==b/2) != différent de (a!=b) < inférieur (a<b) <= inférieur ou égal (a<=b/2) > supérieur (b>(a%2)) >= supérieur ou égal (b>=a) 3.3 Opérateurs logiques Ces opérateurs considèrent toute valeur entière non nulle comme un 1 logique (vrai) et zéro comme un 0 logique (faux). Opérateur Nom Exemple Résultat pour a=2 b=4 && ET logique (a==2)&&(b>3) || OU Logique (c<d)||(c>=d) ! NON Logique !(a>b) - 4 - Evaluation de gauche à droite, jusqu'à ce que le résultat définitif soit trouvé : (a<b)&&(c<d) si a>b, la seconde expression n'est pas évaluée. 3.4 Opérateurs de décrémentation et d'incrémentation Nous utiliserons juste i++; qui augmente de « 1 » le contenu de i. Voir en annexe 3 les autres opérateurs. 3.5 Ordre de priorité des opérateurs On peut bien sûr utiliser des parenthèses lorsqu’on ne connaît pas les priorités : la compréhension peut être plus immédiate. (cf. ex 1.1) Opérateur ordre de priorité opérateur ordre de priorité 1 () gauche à droite 8 & gauche à droite 2 ! ~ ++ -- (type) droite à gauche 9 ^ gauche à droite 3 * / % gauche à droite 10 | gauche à droite 4 + - gauche à droite 11 && gauche à droite 5 << >> gauche à droite 12 || gauche à droite 6 < <= > >= gauche à droite 13 expr condition droite à gauche 7 == != gauche à droite - 5 - TD 1 1. ANALYSE DE CODE Déterminer les valeurs de res1, res2 et res3 int nbr1, nbr2; int res1, res2, res3; nbr1 = 3; nbr2 = 4; res1 = nbr2%nbr1; res2 = 45%4; res3 = 45%nbr1; Déterminer les valeurs successives de k et x. int i=10, j=4, k; double x; k=i+j; x=i; x=i/j; x=(double)i/j; x=5/i; k=i%j; x=105; i=5; x= x+i; Déterminer les valeurs de x après avoir placé des parenthèses « inutiles » mettant en évidence les priorités : x= 7 + 3 * 6 / 2 – 1 ; x = 2 % 2 +2*2-2/2 ; x = (3*9*(3+(9*3/(3)))) ; Déterminer les valeurs successives de q et x int n=5, p=9; int q; double x; q=n<p; q=n==p; q=p%n+p>n; x=p/n; x=(double)p/n; x=(int)(p+0.5)/n; Chercher et expliquer les erreurs du programme const int X=10; int y,z; y+z = 10; 10 uploads/S4/ cours-td-tp-informatique-initiation-au-langage-c-2010-2011-2.pdf
Documents similaires










-
31
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Fev 12, 2022
- Catégorie Law / Droit
- Langue French
- Taille du fichier 0.4806MB