Programmation procédurale

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimension: px
Commencer à balayer dès la page:

Download "Programmation procédurale"

Transcription

1 IUT IUT A Lyon 1 Informatique Programmation procédurale du du C-ANSI C au au C++ C++ ~ A. A. P. P. ~ Année Année ~2004 ~2004 U C L B Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 0

2 Programmation procédurale - du C-ANSI au C++ Chapitre 1 Eléments du langage C-ANSI page 1 Chapitre 2 Les types construits page 23 Chapitre 3 Les fonctions page 43 Chapitre 4 Les fichiers page 51 Chapitre 5 Compléments page 63 Chapitre 6 Les programmes multi-fichiers page 69 Chapitre 7 Du C-ANSI au C++ en programmation procédurale page 83 Annexe A La bibliothèque standard page 93 Annexe B Squelette d'un programme en langage C page 115 Annexe C Table ASCII page 117 Annexe D Bibliographie succincte page 119 Avertissement: Le présent document constitue le support papier du cours de programmation du premier semestre de première année. L'auteur n'autorise pas son utilisation ou sa diffusion en dehors du Département Informatique de l'iut-a de l'université Lyon-I. Merci de signaler les erreurs ou fautes constatées. Bonne lecture. A. P. Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 1

3 CHAPITRE 1 - ELEMENTS DE BASE DU LANGAGE C-ANSI 1 Introduction: Ce polycopié s adresse aux étudiants en première année du département Informatique de l IUT-A de l Université LYON-I. Il a pour but de présenter les éléments du langage C dans l environnement système Unix, mais n a pas pour vocation d être un cours sur les concepts et méthodes de programmation. Il existe à ce propos, d autres documents au département auxquels il faut se référer. Il en est de même pour le développement de programme C ou C++ avec l'outil Visual Studio. Le lecteur trouvera en annexe une bibliographie indicative, sachant que le manuel qui fait autorité reste l ouvrage de KERNIGHAN et RITCHIE intitulé " C-ANSI " publié aux éditions MASSON. En particulier sont évoqués dans l ouvrage cité, l historique et les évolutions du langage C. 2 L organisation d un programme C : Le langage C est dédié à la programmation procédurale. Un programme est un ensemble de séquences d opérations sur des structures de données qui se déroulent suivant un schéma établi par un algorithme. La philosophie de la programmation procédurale est de décomposer et de structurer un programme pour faciliter sa construction et sa maintenance. Les niveaux de décomposition en C sont dans l ordre hiérarchique décroissant: le module : c est un fichier texte comprenant la définition de fonctions la fonction : c est un ensemble de blocs le bloc : c'est un ensemble d'instructions; un bloc est délimité par les caractères { et } l'instruction: une instruction est une structure de contrôle ou une expression; une expression se termine par la caractère; La décomposition dépend de la complexité du problème à traiter. Ainsi suivant le cas, un programme peut être obtenu à partir : d un seul module qui ne comprend qu une seule fonction (cas rare) d un seul module comprenant plusieurs fonctions de plusieurs modules comprenant eux-mêmes une ou plusieurs fonctions. Parmi l ensemble des fonctions qui constituent un programme, il en existe une particulière qui constitue le point d entrée du programme et qui s appelle main(). Il ne doit y avoir qu une seule fonction main() par programme, même s'il est composé de plusieurs modules. Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 2

4 3 Production d un exécutable : Un programme exécutable est donc le résultat de la compilation et de l édition des liens entre modules. La compilation donne à partir d un fichier texte appelé source un module objet. L édition des liens est la phase qui permet à partir de plusieurs modules objets créés par l utilisateur ou déjà existants dans une bibliothèque, d obtenir un exécutable. On obtient dans l'environnement Unix donc le schéma de production suivant : Fichier source Fichier texte: le nom du fichier comprend l extension.c Compilation Phase de traduction par le compilateur Fichier objet Fichier objet : le nom est identique au fichier source mais l extension est maintenant.o Autre fichier objet Bibliothèque de fichiers objects Edition des liens Fichier exécutable Fichier exécutable d extension.e Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 3

5 Afin de faciliter la phase de compilation pour les premiers TP qui ne nécessitent pas la réalisation de plusieurs modules, il existe au département, une procédure de compilation appelée ccomp. Pour invoquer cette procédure il suffit de passer la commande : ccomp tp1.c Cette procédure génère soit un fichier exécutable d extension.e (tp1.e dans l exemple), soit un fichier des erreurs d extension.err (tp1.err ici). La compilation séparée de plusieurs modules en vue de l obtention d un exécutable est abordée au chapitre 6 du présent document. 4 Structure d un fichier texte C : Nous ne nous intéressons dans un premier temps qu aux programmes C ne comprenant qu un seul module texte; les principes de la programmation modulaire sont décrits au chapitre 6. Dans cette optique, le niveau de décomposition d'un programme est alors la fonction avec une fonction particulière appelée main(). Une fonction est paramètrable de sorte que le traitement qu elle effectue soit généralisable. La fonction main() n échappe pas à cette règle, mais dans un premier temps, on considérera qu il s agit d une fonction particulière qui ne reçoit aucun argument et qui ne retourne rien. Un programme constitué à partir d un seul module comprend donc : Des définitions générales La fonction main fonction 1 fonction 2 Exemple : Soit le programme qui souhaite la bienvenue aux nouveaux étudiants : #include <stdio.h> char pnom[25] ; void main(void) { printf("\n Entrez votre prenom : " ) ; scanf("%s",pnom) ; printf("\n\n Bienvenue a l IUT %s",pnom) ; } Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 4

6 Ce programme amène plusieurs remarques : 1. même un programme très simple invoque des fonctions qui ont déjà été écrites et qui sont archivées en tant que modules objet dans une bibliothèque. Ici les fonctions d entrée-sortie scanf et printf sont des fonctions de la bibliothèque standard fournie avec le compilateur C. 2.pour utiliser des fonctions de la bibliothèque standard, il faut annoncer le type de paramètres qu elles attendent et le type de valeur retournée s il y en a. Cette annonce est réalisée par un prototype de la fonction qui indique ces renseignements. C est le rôle de la directive #include d inclure les fichiers où se trouvent les prototypes des fonctions de la bibliothèque qui vont être utilisées. 3.la directive #include n est pas destinée au compilateur, mais au préprocesseur. Le préprocesseur effectue une analyse du texte source avant le compilateur et effectue l inclusion du texte indiqué chaque fois qu il rencontre cette directive. Ici on inclut un texte appelé <stdio.h>. Ce fichier est appelé un fichier d en-tête (ou headers d ou le.h). Tous les headers se trouvent sous le répertoire /usr/include/ ou dans /usr/local/include. Il s agit donc de fichiers texte contenant des définitions et des prototypes de fonctions. 4. pour indiquer qu une fonction ne reçoit pas d argument, on met (void) après son identificateur. Pour indiquer qu elle ne retourne rien on met void devant son identificateur. 5 Eléments du langage C : 5-1 Identificateurs, symboles, mots réservés : Un identificateur est un nom donné à une variable, une constante ou une fonction. Il est défini par le programmeur, et peut être constitué à partir de lettres (minuscules et majuscules étant différentes), du caractère de soulignement _ et de chiffres. Cependant un identificateur ne doit pas commencer par un chiffre. Les implémentations récentes du C-ANSI admettent des identificateurs pouvant aller jusqu'à 31 caractères. Les symboles sont des caractères ou groupe de caractères utilisés principalement pour représenter des opérateurs ou des caractère spéciaux. & ~ " # { } ( ) [ ] \ / * - + %, ;. < > =!? Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 5

7 Les mots réservés sont des identificateurs servant de mots-clés au langage C. auto break case char const continue default do double else enum extern float for goto if int long register return short sizeof static struct switch typedef union unsigned void volatile while Les commentaires dans un programme C commencent par la séquence /* et se terminent par la séquence */ quel que soit le nombre de lignes entre les deux. On ne peut pas inclure un commentaire dans un commentaire. 5-2 Les objets manipulés : Un objet au sens de la programmation procédurale est caractérisé par : 1) un identificateur 2) un type qui impose : une représentation interne des opérateurs associés 3) une valeur variable ou constante a) Les types de base : type char : codé sur un octet et considéré comme un entier sur 8 bits signés ou non (unsigned); un caractère est représenté par le code ASCII donné en annexe type int : entier en représentation interne en complément à 2; ils sont signés ou non signés(unsigned). On distingue : short :codés sur 2 octets long :codés sur 4 octets int :codés sur 2 ou 4 octets suivant la machine cible type float : nombre réel en représentation interne suivant la norme IEEE 754. On distingue : float : simple précision codé sur 4 octets double : double précision codés sur 8 octets Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 6

8 b) Mécanisme de construction de type : En dehors des types de base, il existe également le type tableau, le type structure, le type union, et le type pointeur. Ces types sont étudiés au chapitre 2. Enfin le langage C offre la possibilité au programmeur de construire lui-même ses propres types grâce à la directive typedef. Il s'agit en fait de renommer un type existant (soit un type de base soit un type construit) afin d'en améliorer la compréhension suivant le contexte. La syntaxe pour définir un type nouveau est la suivante: typedef type Nouveautype; Exemple: typedef int Age; /* Age est maintenant un type nouveau */ Age anciennete; /* anciennete est une variable de type Age */ c) Les constantes : constantes entières : on les exprime généralement en décimal ou en hexadécimal précédées alors de 0x.Une constante correspondant à un entier long est suffixée par la lettre L Exemple : 127 constante en base 10 0x7F constante en base L constante entier long en base constante entier long en base 8 constantes réelles : on les exprime soit avec une partie fractionnaire, soit sous forme mantisse plus exposant Exemple : 25.8 forme fractionnaire 1.03e-2 forme avec exposant constantes chaînes : en C, il n existe pas de type primitif chaîne. Une chaîne est traitée comme une suite d octets se terminant par le caractère '\0' (octet au 0 binaire). On peut définir une constante chaîne de caractères en donnant sa valeur encadrée par les caractères spéciaux " "; il s agira d une suite d octets terminée par '\0'. On peut aussi utiliser le mécanisme de substitution de texte offert par le préprocesseur, mais il ne s agira alors que de définir des constantes symboliques qui ne pourront pas être utilisées en tant que chaîne constante. Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 7

9 Exemple : "ceci est un message" chaîne constante terminée par '\0' #define TAILLE 10 substitution dans le texte de TAILLE par 10 constantes caractère : une constante caractère est de type entier mais codée sur un octet. Le codage peut se faire de plusieurs façons: on écrit le caractère entre apostrophes on code le caractère en donnant la valeur décimal de con code ASCII on code le caractère sous la forme '\ooo' ou la séquence ooo est la représentation en base 8 du code ASCII du caractère à coder on code le caractère sous la forme '\xhhh' où la séquence hhh est la représentation en base 16 du code ASCII du caractère à coder Exemple : c='a' c est le caractère A c=65 idem mais on donne le code ASCII de A en décimal c='\101' code ASCII de A est en octal c='\x41' code ASCII de A est en hexadécimal Il existe également des caractères spéciaux permettant de coder des caractères courants. Ces caractères sont notés sous la forme '\lettre'. On donne ici les caractères spéciaux les plus usuels. '\b' caractère backspace (retour arrière) '\n' caractère saut de ligne (new line) '\t' caractère de tabulation horizontale '\\' caractère \ d) Les variables : On définit une variable en précisant son type et son identificateur. On ne peut pas utiliser une variable non définie. Il est possible en langage C d initialiser une variable au moment de sa définition. Exemple: int x=3; /* definition de la variable x comme entier initialisé à la valeur 3 */ Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 8

10 Les termes de déclaration et de définition sont souvent confondus. Ils ne sont pourtant pas porteur du même sens. Une définition implique une allocation mémoire, celle ci étant faite au moment de la traduction du source, alors qu'une déclaration ne constitue que l'association d'un identificateur à un type. Il n'y a pas alors de réservation mémoire; nous verrons ainsi qu'un objet peut être déclaré plusieurs fois dans le cas de la programmation modulaire, alors qu'il ne doit être défini qu'une seule fois. La définition d'un objet implique également des règles de visibilité (c'est à dire où cet objet peut être atteint). Les règles de portée des variables sont étudiées au chapitre 3. Le C-ANSI permet de préciser au moment de la définition d'un objet que ce dernier ne devra pas être modifié. On utilise pour cela le qualificatif const. Etant donné que l'objet ne pourra plus être modifié par la suite, il doit donc être initialisé au moment de sa définition. Exemple: const int x=3; 5-3 Les opérateurs : Les opérateurs permettent de construire des expressions. Ils spécifient les calculs à effectuer sur leurs arguments appelés opérandes qui sont soit des objets (variables ou constantes) soit des sous-expressions. a) Les expressions : Une expression est construite à partir d'opérandes ou d'expressions, reliés par un opérateur. Un opérateur ne peut s'appliquer que sur un certain type d'opérande. En conséquence une expression a elle même un type résultant suivant les types des opérandes et de l'opérateur qui la composent et en fonction de certaines conversions étudiées plus loin. Exemples: l'expression x + y est constitué de l'opérateur + et des opérandes x et y qui peuvent être de type int ou float. Le résultat est de type int si x et y sont de type int; il est de type float si x et/ou y sont de type float. l'expression x + (y*z) est constituée de l'opérande x et de la sous-expression (y*z). Le type du résultat est soit int soit float suivant le type des opérandes. Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 9

11 b) Les opérateurs arithmétiques : Il y a quatre opérateurs arithmétiques de base applicables sur des opérandes de type entier ou réel; le type char étant considéré comme un entier on pourra donc lui appliquer également les opérateurs arithmétiques. Outre ces opérateurs de base, on dispose pour les entiers uniquement, de l'opérateur modulo qui représente le reste de la division entière. + addition - soustraction * multiplication / division % modulo (sur les entiers uniquement) Le résultat (sauf pour le modulo) est fonction du type des opérandes. Si l'un des deux opérandes est de type réel, le résultat de l'expression devient réel. Au moment de l'affectation de l'expression, des règles de conversion sont mises en œuvre; ces règles sont étudiées plus loin. Exemple: Supposons la variable définie de la sorte: int i=5; Dans ces conditions l'expression i/3 donne 1; en effet le résultat de l'expression est entier car les 2 opérandes sont entiers. En revanche l'expression i/3.0 donne ; le résultat de l'expression est réel car un des 2 opérandes est réel. c) Les opérateurs d'incrémentation : Pour les types entiers et réels, le C propose des opérateurs d'incrémentation et de décrémentation. Ces opérateurs sont notés: ++ incrémentation -- décrémentation Suivant l'écriture, il s'agit de pré-incrémentation ou de post-incrémentation ; de même pour la décrémentation. Exemples: considérons les définitions suivantes (on suit dans l'ordre l'évolution des variables): int i=1; int j, k, l, m; j=++i; incrémente i de 1 (pré-incrémentation) puis affecte i à j; donc i vaut 2 et j vaut 2 Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 10

12 k=i++; affecte i à k puis incrémente i de 1 (post-incrémentation); donc k vaut 2 et i vaut 3 l=--i; décrémente i de 1 (pré-décrémentation) puis affecte i à l; donc i vaut 2 et l vaut 2 m=i--; affecte i à m puis décrémente i de 1 (post-décrémentation); donc m vaut 2 et i vaut 1 i++; incrémente i de 1 j--; décrémente j de 1 d) Les opérateurs de traitement de bits : Ces opérateurs s'appliquent uniquement à des opérandes de type entier, et sont utiles pour intervenir directement sur le contenu en mémoire d'une variable. Il s'agit des opérateurs suivants: ~ opérateur unaire de complémentation << opérateur de décalage à gauche >> opérateur de décalage à droite & opérateur ET bit à bit opérateur OU inclusif bit à bit ^ opérateur OU exclusif bit à bit Exemples: On considère les objets de type entier i et j, et le caractère c: i=i<<3; j=~i; c=c&0x0f; décale i de 3 positions binaires à gauche affecte à j le complément de i applique un ET logique bit à bit entre l'octet et l'octet c (masque les 4 bits de poids fort de c) e) Les opérateurs relationnels : Il s'agit des opérateurs de comparaison qui s'appliquent sur des opérandes de type entier ou réel. Le résultat de l'expression est faux (=0) ou vrai ( 0). Cependant en langage C, il n'existe pas de type booléen de base. Aussi le résultat d'une expression est codé par un entier. Cet entier vaut 0 si le résultat de l'expression est considéré comme faux; toute autre valeur est interprétée comme donnant un résultat vrai. Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 11

13 == égalité (attention aux deux signes =)!= différence > >= < <= f) Les opérateurs logiques : Les opérateurs logiques permettent de construire une expression logique à partir d'opérandes eux-mêmes logiques. Ce sont:! opérateur unaire de négation (ne prend qu'un seul opérande) && opérateur ET logique (renvoie 0 si un des deux opérandes vaut 0) opérateur OU logique (renvoie 0 si les deux opérandes valent 0) g) Opérateur d'affectation : Il s'agit d'un opérateur qui copie le résultat de l'expression à droite dans la variable désignée à gauche de l'opérateur. L'opérateur est désigné par le caractère =. identicateur_objet=expression; Le langage C allège l'écriture de l'affectation lorsque l'expression de droite porte elle même sur la variable affectée à gauche, ceci grâce à des opérateurs d'affectation de la forme op= où op est un des opérateurs arithmétiques ou un des opérateurs de traitement de bits sauf bien sûr l'opérateur unaire de complémentation ~. Exemple: x+=2; x*=y; est équivalent à x=x+2; est équivalent à x=x*y; Remarques: 1) L'opérateur d'affectation ne peut être utilisé qu'avec les types de base. Le C-ANSI a généralisé cet opérateur aux structures et aux unions, mais on ne peut pas l'utiliser avec les tableaux. 2) Attention à ne pas confondre l'opérateur d'affectation = avec l'opérateur logique de comparaison ==. Ceci peut donner lieu à des résultats surprenants lors des évaluations d'expression; ainsi l'expression c=3 donne comme résultat vrai quelle que soit la valeur de c, alors que le résultat de l'expression c==3 dépend effectivement de la valeur de c. Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 12

14 h) Autres opérateurs : l'opérateur sizeof L'opérateur sizeof permet de récupérer sous forme d'entier la taille mémoire en nombre d'octets nécessaire pour représenter un objet ou un type donné. La syntaxe est la suivante: sizeof(objet ou type) l'opérateur?: L'opérateur?: est un opérateur ternaire qui permet de constituer une expression conditionnelle simple. La syntaxe est la suivante: expression1? expression2 : expression3 L'évaluation s'effectue de la sorte: si expression1 est vraie (résultat non nul) alors c'est expression 2 qui fournit le résultat de l'expression, sinon c'est expression3. Ceci est illustré par l'exemple suivant : valabs = (x >= 0)? x : -x; i) Priorité des opérateurs : Le tableau ci-après donne la priorité des opérateurs du plus prioritaire au moins prioritaire, avec pour un même niveau de priorité l'ordre d'évaluation (l'associativité) de gauche à droite ou de droite à gauche. Opérateur Associativité Arité () [] ->. de G à D 2! ~ (type) * & sizeof de D à G 1 * / % de G à D de G à D 2 << >> de G à D 2 < <= > >= de G à D 2 ==!= de G à D 2 & de G à D 2 ^ de G à D 2 de G à D 2 && de G à D 2 de G à D 2?: de D à G 3 = += -= *= /= %= >>= <<= &= ^= = de D à G 2, de G à D 2 Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 13

15 j) Règles de conversion : Des conversions peuvent être mises en œuvre par le compilateur lors: de l'évaluation des expressions des affectations du passage de paramètres à une fonction du retour de l'appel d'une fonction Les conversions appliquées sont soit des conversions implicites automatiquement appliquées, soit des conversions explicites demandées par le programmeur. conversions implicites Les conversions automatiques transforment la représentation interne d'un opérande en une représentation plus large. Les règles appliquées sont les règles dites de promotion numérique: char short int long unsigned char unsigned short unsigned int int float double Pour les calculs, on applique les règles de promotion en fonction du type des deux opérandes: si l'un est de type long, l'autre est converti en long si l'un est de type unsigned l'autre est converti en unsigned si l'un est de type float l'autre est converti en float si l'un est de type double l'autre est converti en double dans tous les autres cas, les deux opérandes sont convertis en int conversions explicites Le programmeur peut demander explicitement une conversion de type à l'aide d'un opérateur de conversion appelé cast operator ou opérateur de coercition de type. La syntaxe de cette demande de conversion est très simple, elle s'exprime de la sorte: (type) expression où type représente le type dans lequel l'expression doit être convertie. 5-4 Les structures de contrôle : Les structures de contrôle servent à traduire soit un schéma alternatif soit un schéma répétitif. le test if a) Les structures alternatives : Il s'agit de la traduction du schéma si (condition) alors...sinon...finsi. La syntaxe en langage C est de la forme: Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 14

16 if (<expression_logique>) <bloc1> else <bloc2> Un bloc est délimité par les caractères { et }; il comprend des instructions terminée par la caractère ; la partie else étant facultative. Lorsque le bloc ne comprend qu'une seule instruction ou bien qu'il est constitué d'une structure de contrôle imbriquée, les délimiteurs { et } du bloc sont facultatifs. Attention: Ceci peut être source d'ambiguïté; en effet lorsqu'un bloc n'est pas explicitement délimité, le compilateur associe un else au dernier if. Pour lever toute ambiguïté, il faut recourir à l'usage des délimiteurs de blocs { et }. Ainsi dans l'exemple suivant, le else est rattaché au dernier if. if (<expression_logique_1>) if (<expression_logique_2>)...; else { /* sinon de expression_logique_2 */...;...; } D'autre part si pour une raison quelconque, on doit rajouter par la suite une instruction dans le bloc du premier if, il faut alors penser à mettre un délimiteur de bloc, sinon l'instruction rajoutée termine le if et le comportement du programme n'est pas du tout celui attendu. Pour toutes ces raisons, il est donc conseillé de recourir systématiquement aux délimiteurs de blocs. L'exemple précédent doit être écrit de la sorte: Remarque: if (<expression_logique_1>) { if (<expression_logique_2>) {...; } else {...;...; } } Les instructions placées à l'intérieur d'un bloc sont décalées pour améliorer la lisibilité; on parle d'indentation. En ce qui concerne les ouvertures et fermetures de blocs, le style d'écriture retenu ici est celui préconisé par KERNIGHAN & RITCHIE, mais d'autres styles peuvent être utilisés. Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 15

17 le choix multiple switch Cette instruction évite le recours à un enchaînement de si alors sinon si en cascade. Elle permet de tester la valeur d'une expression entière uniquement parmi plusieurs valeurs possibles et d'effectuer un traitement approprié à chaque valeur. La syntaxe est la suivante: switch (<expression_entière>) { case valeur_1:...;...; case valeur_2:...;...; } case valeur-n:...;...;...; default:...;...; Les expressions valeur_1.. valeur_n doivent être des expressions constantes. Le traitement commence à la première instruction correspondant à la valeur de expression_entière lorsque celle ci est trouvée parmi les valeurs possibles valeur_i, ou bien à la première instruction correspondant à default lorsqu'elle n'est pas trouvée. S'il n'y a pas de branchement default, cela signifie qu'aucune action n'est entreprise lorsque la valeur de l'expression n'est pas trouvée. Le traitement s'arrête, soit à la première instruction de sortie break si il y en a une, soit à la fin du switch. En conséquence lorsque le programmeur veut une action particulière pour chaque valeur, il doit placer un break à la fin de la liste d'instructions associée sinon l'exécution continue dans le cas suivant. L'exemple suivant illustre ce principe. switch (rep) { /* on teste la valeur du caractère rep */ case ' ' : nb_space++; break; case '\n': case '\0': fini=1; break; /* fini=1 pour rep ='\n' ou '\0' */ default : nb_car++; } b) Les structures répétitives : l'itération bornée for Il s'agit de la traduction de la boucle pour dont la forme générale est: for(<expression_1>;<expression_2>;<expression_3>) <bloc> Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 16

18 et dans laquelle: 1. expression_1 est une liste d'instructions exécutées une seule fois avant la répétitive; il s'agira ici des initialisations 2. expression_2 est une expression logique représentant la condition de maintien dans la boucle; cette expression est évaluée avant chaque passage donc le nombre de passage dans la boucle varie de 0 à n. 3. expression_3 est une liste d'instructions exécutées à la fin de chaque passage dans la boucle; il s'agira ici de l'itération du compteur de boucle et de l'itération d'autres variables suivant les besoins 4. expression_1 et expression_3 peuvent comprendre plusieurs instructions séparées par le caractère, Dans l'exemple suivant on fait la somme des 10 premiers entiers naturels for (i=1, somme=0; i<=10; i++) somme+=i; la boucle while Il s'agit de la traduction de la boucle tant que et dont la forme générale est: while(<expression >) <bloc> et dans laquelle expression est une expression logique représentant la condition de maintien dans la boucle; cette expression étant évaluée avant chaque exécution du bloc, le nombre de passage varie de 0 à n. la boucle do while Il s'agit de la traduction de la boucle répéter... tant que et dont la forme générale est: do <bloc> while(<expression >) Cependant l'écriture diffère légèrement de celle du répéter...jusqu'à puisque expression est une expression logique représentant la condition de maintien dans la boucle et non pas la condition d'arrêt; cette expression étant évaluée après chaque exécution du bloc, le nombre de passage varie de 1 à n. Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 17

19 Remarques: 1) comme dans le cas du if un bloc ne comportant qu'une seule instruction peut ne pas comprendre de délimiteurs { et }; il est cependant recommandé d'utiliser les délimiteurs pour des problèmes de maintenance 2) pour estimer la condition de maintien, il est parfois plus facile d'estimer la condition de sortie puis de complémenter cette expression 3) pour passer n fois dans une boucle, le plus simple est d'initialiser un compteur de boucle à 0 et d'écrire comme condition de maintien compteur_boucle < n l'instruction break L'instruction break sert à forcer la sortie dans le cas d'un switch, d'un do, d'un for et d'un while. Ceci provoque le branchement immédiat à l'instruction qui suit la structure de contrôle. Un cas d'utilisation relativement courant est la boucle infinie d'attente d'un événement, que l'on peut programmer de la sorte: for(;;) { if (EVENEMENT) break; /* si EVENEMENT devient VRAI on sort */ } l'instruction continue L'instruction continue sert dans le cas d'une répétitive à forcer le branchement en fin de la boucle et donc à passer directement à l'itération suivante. Dans le cas d'un for, les expressions de fin de boucle sont effectuées avant de réévaluer la condition de maintien. Exemple: while (i<10) { printf("\n entrez un entier naturel "); scanf("%d%*c",&n); if (n<0) continue;...; /* traitement si n >= 0 */...; } Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 18

20 5-5 Les entrées-sorties : On ne s'intéresse ici qu'aux entrées au clavier et aux sorties à l'écran. Il existe à cet effet des fonctions de la bibliothèque standard étudiées plus en détail en annexe. Pour utiliser ces fonctions, il faut inclure dans le fichier source le fichier d'en-tête <stdio.h>. saisie d'un caractère Pour saisir un caractère, il faut passer par la fonction getchar();il suffit d'affecter à une variable de type char le résultat retourné par cette fonction. Exemple: rep=getchar(); afficher un caractère Pour afficher un caractère, il faut passer par la fonction putchar(); l'utilisation est simple; il suffit de fournir en paramètre à cette fonction la variable de type char à afficher. Exemple: putchar(rep); saisie d'une variable Pour saisir une variable de type char, int ou float avec leur variante (short, long, double), il faut passer par la fonction scanf(). Cette fonction convertit des caractères saisis au clavier dans la représentation binaire associée au type de la variable en mémoire centrale. Par exemple lorsqu'on veut affecter un entier, celui-ci est représenté sur 4 octets en mémoire suivant le principe du complément à 2. L'utilisateur quant à lui saisit une suite de chiffres terminée par <Entrée>, chaque chiffre étant codé sur un octet d'après le code ASCII. La fonction scanf va alors effectuer la conversion de cette suite d'octets codés en ASCII suivant le format entier sur 4 octets en complément à 2. Etant donné que cette fonction peut effectuer plusieurs conversions car elle permet d'affecter soit un caractère soit un entier soit encore un réel (dont la représentation interne est sous forme IEEE 754), on doit lui préciser le format de conversion. Les différents format de conversion utilisables sont détaillés en annexe, mais les plus usités sont les suivants: %c : format de conversion en caractère %s : format de conversion en chaîne de caractères %d : format de conversion en entier signé %f : format de conversion en virgule flottante simple précision %lf : format de conversion en virgule flottante double précision Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 19

21 Exemple: scanf("%d",&x); /* saisi de l'entier x */ scanf("%c",&rep); /* saisi du caractère rep */ scanf("%f",&y); /* saisi du réel y */ scanf("%s",tab); /* saisi de la chaîne tab */ On remarque que les objets de type char, int et float doivent être précédés de l'opérateur &. Nous verrons qu'il s'agit du mécanisme de passage par référence permettant effectivement à la fonction de modifier le contenu des objets passés en argument. Nous verrons également pourquoi ceci n'est pas utile dans le cas des chaînes de caractères. Remarque: La gestion des entrées-sorties par scanf peut donner lieu à des comportements qui déroutent l'utilisateur novice. En effet, l'entrée au clavier est validée par l'appui sur la touche <Entrée>. Or cette touche génère au même titre que les autres touches, un code qui est interprété comme étant le caractère '\n' ou 0A en hexadécimal. Ce caractère peut parasiter d'autres entrées par scanf puisqu'il est dans le tampon. Afin d'éviter un parasitage possible, il est conseillé de filtrer ce caractère par l'option %*c, qui signifie que l'on a saisi aussi un octet mais qui ne sera affecté à rien. Ainsi la saisie d'un entier devient: scanf("%d%*c",&x); affichage d'une variable Pour afficher une variable de type char, int ou float avec leur variante (short, long, double), il faut passer par la fonction printf(). Cette fonction convertit en caractères affichés à l'écran le contenu d'une variable dont la représentation en mémoire centrale dépend du type de la variable. Comme dans le cas de scanf(), cette fonction peut effectuer plusieurs conversions précisées par des formats. Ces formats sont les mêmes que pour scanf() et ils sont détaillés en annexe. L'exemple suivant illustre le principe de fonctionnement de printf(). Ce qui doit être affiché est placé entre les caractères " ". On précise dans cette chaîne le texte à afficher et chaque fois qu'il doit y avoir l'affichage d'une variable, on indique non pas la variable mais le format de conversion. Les variables sont ensuite passées en paramètres et dans l'ordre; il est possible d'utiliser également les caractères spéciaux comme \n qui sert de saut de ligne.. Ici on veut afficher un entier et un réel. printf("\n\nla valeur de x est %d et celle de y est %f : ",x,y); Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 20

22 saisie au vol d'un caractère Pour saisir au vol un caractère, c'est à dire sans avoir à taper sur la touche <Entrée>, il faut passer par une fonction propre au département et qui s'appelle kbget(). Pour utiliser cette fonction, vous devez inclure le header <iutio.h> situé dans le répertoire /usr/local/include; cette fonction retourne le caractère frappé au clavier dès lors que l'utilisateur a appuyer sur une touche (cf. Annexe B). 6 Le préprocesseur C: Tout texte source écrit en langage C est d'abord analysé par le préprocesseur avant d'être traduit par le compilateur. Cette phase est automatiquement exécutée lorsqu'on invoque le compilateur (et donc lorsqu'on passe par la procédure de compilation ccomp). Le rôle du préprocesseur se limite à une simple manipulation du texte du fichier source, c'est à dire qu'en sortie du préprocesseur le fichier fourni reste du texte. On peut d'ailleurs demander uniquement le passage du préprocesseur avec l'option -E du compilateur C du GNU ou du compilateur HP-UX. Il est également possible d'invoquer directement le préprocesseur par la commande suivante: /usr/ccs/lbin/cpp nom_fichier_source.c Les directives passées au préprocesseur commencent toujours par le caractère # et elles ne comprennent pas le caractère ; qui marque la fin d'une instruction C. Le rôle du préprocesseur est de permettre: l'inclusion des fichiers d'en-tête.h: ce sont des fichiers texte qui comprennent des définitions de types, de constantes et le prototypage de fonctions; la directive d'inclusion est #include <xxxxx.h> ou encore #include "xxxxx.h" lorsque le fichier d'en-tête est situé dans le répertoire courant. Le préprocesseur inclut alors à l'emplacement de la directive le contenu du fichier.h la définition de constantes: la directive #define NOM_CONST valeur_const indique au préprocesseur qu'il doit substituer dans le texte source C toute occurrence de NOM_CONST par valeur_const la définition de macroinstructions: il s'agit de définitions paramétrées grâce à la directive #define NOM_MACRO(paramètre_1,...paramètre_n) expression. Le préprocesseur effectue là aussi la substitution à chaque occurrence dans le texte de NOM_MACRO(paramètres) par l'expression définie; comme il s'agit de substitution de texte, il faut avoir recours au parenthésage pour forcer les priorités la compilation conditionnelle: il existe des directives qui permettent de sélectionner suivant une condition certaines parties du texte source. Cet aspect est traité au chapitre 6 sur la programmation modulaire Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 21

23 Exemples: #include<stdio.h> /* inclusion du fichier d'en-tête stdio.h situé dans /usr/include */ #define MAX 10 /* définition de la constante symbolique MAX qui vaut 10 */ #define CARRE(x) ((x)*(x)) /* définition de la macro CARRE; le parenthésage permet d'invoquer la macro avec des expression comme CARRE(a+b) */ Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 22

24 Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 23

25 CHAPITRE 2 - LES TYPES CONSTRUITS 1 Le type énumération: Le type énuméré est un moyen pratique de définir une variable qui peut prendre une valeur parmi un ensemble d'entiers constants appelés constantes énumérées. La valeur des constantes énumérées peut être fixée par défaut ou bien être définie par l'utilisateur d'après le principe suivant : chaque valeur peut être imposée par le programmeur lorsqu'une valeur n'est pas imposée, elle se déduit de la précédente par incrémentation de 1 lorsqu'aucune valeur n'est imposée, la valeur de la première constante énumérée est 0, les autres se déduisant par incréments successifs La définition d'une énumération se fait grâce au mot réservé enum suivant la syntaxe: enum identificateur_enumeration{liste_constantes_enumerees}; Exemples: enum bool {FAUX,VRAI}; /* définition de la variable énumérée bool qui ne peut prendre que */ /* deux valeurs FAUX (=0) ou VRAI (=1) */ enum jour {LUNDI=1,MARDI,MERCREDI,JEUDI,VENDREDI,SAMEDI,DIMANCHE}; /* définition de la variable énumérée jour qui ne peut prendre que */ /* sept valeurs LUNDI (=1) ou MARDI (=2) ou MERCREDI (=3) etc */ enum statut {ERREUR=-1, OK=1}; /* définition de la variable énumérée statut qui ne peut prendre */ /* que deux valeurs possibles ERREUR (=-1) ou OK (=1) */ Il est souvent pratique de construire un type pour une sorte d'énumération. On passe pour cela par la directive typedef suivant la syntaxe: typedef enum {liste_constantes_enumerees} NOUVEAU_TYPE; Comme le montre l'exemple suivant, le type booléen n'existant pas en C, il est possible de définir un type que l'on appelle ici LOGIQUE et qui ne prendra que la valeur VRAI ou la valeur FAUX. typedef enum {FAUX, VRAI} LOGIQUE; On peut ensuite à tout moment définir une variable du nouveau type LOGIQUE, comme par exemple: LOGIQUE fini; Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 24

26 2 Le type tableau: 2-1 Définition: Un tableau est une structure de données qui regroupe une suite finie d'objets de même type disposés de façon contiguë en mémoire centrale. Les éléments du tableau sont formés par ces objets qui sont repérées par un rang. Le rang d'un élément est un entier ou une expression. Un tableau est caractérisé par sa dimension qui peut être un entier N quelconque, mais généralement on ne considère que des tableaux de dimension 1 (vecteur) ou 2, voire 3 (matrice). Nous ne nous intéresserons ici dans un premier temps qu'aux tableaux à une dimension. 2-2 Déclaration et initialisation d'un tableau: En langage C, on déclare un tableau en précisant l'identificateur du tableau, le type des variables qui constituent ses éléments et la taille du tableau. type_des_éléments identificateur_tableau[nombre_d'éléments]; Exemple: int tabl[10]; /*déclare un tableau de 10 entiers qui s'appelle tabl */ Comme toutes les variables en langage C, un tableau peut être initialisé à sa définition, par une liste d'éléments compris entre accolades. Les éléments de la liste sont affectés dans l'ordre aux éléments du tableau. Le nombre d'éléments de la liste doit bien sûr être inférieur ou égal au nombre d'éléments que peut contenir le tableau. Les autres éléments sont mis à zéro et il n'est pas possible d'initialiser un élément sans avoir initialisé les précédents. Dans le cas particulier des tableaux de caractères, ceux-ci peuvent être initialisés caractère par caractère, ou bien par une constante de type chaîne. Le nombre d'éléments du tableau peut être omis lorsque: le tableau est un paramètre formel d'une fonction le tableau est une variable de classe de mémorisation extern (voir chapitre 6) le tableau est explicitement initialisé lors de sa définition Exemples: int mois[] = {1,2,3,4,5,6,7,8,9,10,11,12}; char tab[] = { a, l, a, i, n, \0 } ; char tab[] = "langage" le caractère fin de chaîne \0 est alors rajouté Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 25

27 2-3 Manipulation des éléments d'un tableau: On atteint un élément d'un tableau par son rang. Dans le cas d'un tableau monodimensionnel, (vecteur), l'élément de rang i (i étant un entier ou le résultat entier d'une expression) est atteint par: identificateur_tableau[i] avec i [0..N-1] N étant la taille du tableau; En algorithmique, on considère souvent que le premier élément d'un tableau est de rang 1 alors qu'en langage C, il est de rang 0. Nous verrons par la suite pourquoi. Les éléments sont donc comptés de 0 à N-1. Par exemple, avec le tableau tabl de 10 entiers déclaré précédemment, on a: tabl[0] /* premier élément */ tabl[1] /*deuxième élément */... tabl[9] /* dixième élément */ On peut manipuler l'élément d'un tableau comme toute variable, c'est à dire: Exemples: l'affecter par une valeur ou par le résultat d'une expression donnant un type identique à celui de l'élément lui appliquer tous les opérateurs compatibles avec son type for(i=nb_elem;i>k;t[i]=t[i-1],i--); /* décalage à droite des éléments du tableau depuis le rang k */ t[i]=x; /* affectation de x à l'élément de rang i */ t[0]++; /* incrémentation du premier élément du tableau t */ 2-4 Tableau à deux dimensions: En langage C, un tableau à deux dimensions est en fait un tableau à une dimension dont chaque élément est lui même un tableau. Par exemple si on veut disposer d une matrice de caractères de 10 lignes par 20 colonnes, il faut déclarer : char tab[10][20]; /* 10 lignes et 20 colonnes */ On accède alors à un élément en précisant le numéro de ligne et le numéro de colonne. Par exemple, si on considère la matrice tab déclarée précédemment, tab[2][5] représente le cinquième élément de la deuxième ligne, car tab[2][5] correspond aussi à tab[2*20+5] en linéarisant la matrice. Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 26

28 Tout comme dans le cas d'un tableau monodimentionnel, on peut initialiser une matrice en donnant la liste des valeurs par ligne et colonne, et appliquer sur chaque élément les opérateurs d'affectation et ceux compatibles avec le type des éléments de la matrice. Exemple: On détermine les éléments de la matrice D de m lignes et p colonnes résultat du produit de la matrice A de m lignes n colonnes par la matrice B de n lignes p colonnes; for(i=0;i<m;i++) { for (j=0;j<p;j++) { for(somme=0,k=0;k<n;k++) { somme+=a[i][k] * B[k][j]; } D[i][j]=somme; } } 3 Le type structure: 3-1 Définition d une structure: Une structure est un agrégat d'éléments de type différents. Chaque élément peut avoir les types suivants: types de base (caractère, entier, réel) type pointeur type structure ou union type tableau type construit par le développeur sauf une fonction (mais peut être un pointeur sur fonction) Si la structure contient une structure, cela ne peut être celle en cours de définition, mais en revanche cela peut être un pointeur sur celle ci. Les éléments qui constituent une structure sont appelés membres de la structure. Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 27

29 3-2 Construction d'une structure: La définition en C d'une structure se fait à l'aide du mot réservé struct. La définition commence par le caractère { et se termine par le caractère }. Dans l'exemple suivant struct individu { char nom[20]; char prenom[15]; int age; char sexe; } etudiant; individu représente un descripteur de type struct qui contient les membres (appelés aussi parfois champs) nom, prénom, age et sexe. En revanche etudiant représente une instance de la structure, c'est à dire un objet de type struct individu. On peut initialiser une variable de type structure au moment de sa définition en la faisant suivre par une liste d'expression constante correspondant à chaque membre de la structure. Exemple: struct individu prof = {"deloin","alain",36,'m'}; Une autre façon de procéder pour construire une structure est de définir un nouveau type grâce à typedef. Ceci permet de ne pas avoir à indiquer le type struct lorsqu'on définit une variable correspondant à un descripteur de structure. Ainsi dans l'exemple suivant typedef struct individu { char nom[20]; char prenom[15]; int age; char sexe; } INDIVIDU; individu est le descripteur d'une structure contenant les membres nom, prenom, age et sexe alors que INDIVIDU est un type synonyme de struct individu. Ainsi pour déclarer les variables etudiant et prof de type structure suivant le descripteur struct il suffit maintenant d'écrire: INDIVIDU prof, etudiant; Ceci est équivalent à: struct individu prof, etudiant; On voit donc bien que individu n'est qu'un descripteur de structure et non pas un type. Le type d'une structure est donc défini par struct descripteur, comme c'est le cas ici avec struct individu. On constatera par la même occasion la souplesse apportée par le mécanisme de construction de type synonyme grâce à typedef. Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 28

30 3-3 Accès aux membres d'une structure: On accède aux membres d'une structure grâce à l'opérateur. qui permet d'associer le nom du membre au nom d'une structure. Ainsi pour atteindre le membre d'une structure, il faut indiquer le nom de la variable structure suivi du nom de la variable membre d'après la syntaxe structure.membre. Exemple: struct individu { char nom[20]; char prenom[15]; int age; char sexe; } etudiant,prof; strcpy(etudiant.nom,"dugommier"); strcpy(etudiant.prenom,"robert"); etudiant.age=20; etudiant.sexe='m'; On peut utiliser le membre d'une structure comme une variable quelconque, par exemple: printf("%s",etudiant.nom); if (etudiant.age > 65 )?????; 3-4 Structures imbriquées: Une structure peut comprendre un membre de type structure pourvu que le type en question ait été défini préalablement. Exemple: struct adresse { int numero; char rue[25]; }; struct individu { char nom[20]; char prenom[15]; struct adresse adr; int age; char sexe; }; On peut initialiser au moment de la déclaration une structure imbriquée en respectant l'ordre de la construction lors de l'affectation des expressions constantes. Ainsi avec la déclaration précédente: struct individu prof = {"deloin","alain",10,"avenue joffre",36,'m'}; Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 29

31 Pour atteindre le membre d'une structure imbriquée dans une structure, on répète le mécanisme d'accès par l'opérateur. en respectant la hiérarchie de construction. L'exemple suivant s'applique à la construction précédente. printf("%s %s ",prof.nom,prof.prenom); printf("%d %s ",prof.adr.numero,prof.adr.rue); printf("%d %c ",prof.age,prof.sexe); 3-5 Affectation d une structure: Pour affecter une structure, on peut soit affecter les membres les uns après les autres, soit (et ceci depuis la norme ANSI) affecter globalement une structure par une autre structure pourvu qu'elle soit de même type. Il s agit alors d une recopie en mémoire octet par octet définie par la taille identique des deux structures. C est un mécanisme qui permet en plus de s affranchir du problème du choix de l opérateur d affectation en fonction des types des membres de la structure. Exemple : struct individu etudiant_2annee, etudiant_1annee ;... etudiant_2annee=etudiant_1annee ; 4 Le type union: 4-1 Définition d une union: Une variable de type union est une variable qui peut contenir à un moment donné des objets de type et de taille différents. La déclaration est identique à celle d'une structure sauf que le mot union remplace le mot struct. Mais contrairement à une structure, l'allocation mémoire est faite ici en recouvrement, car les différents membres sont une description différente d'une même zone mémoire. L'union est très pratique puisqu'elle permet de définir une variable qui peut contenir toutes sortes de type. Exemple: union bidon { int code; float valeur; char * libellé; } zone-trav ; A un moment donné la variable zone-trav de type union bidon peut contenir un entier un réel ou une chaîne. C est au programmeur de savoir ce qu il manipule. Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 30

32 4-2 Affectation et accès aux membres d une union: On accède aux membres de l'union de la même façon qu une structure. Pour accéder à un membre on utilise la syntaxe variable_union.membre; L'affectation se fait également comme dans le cas d'une structure. On peut imbriquer des unions dans des structures. On accède alors à la variable union comme un membre de la structure. Exemple: On considère les définitions suivantes: typedef struct { char nom[31]; char prenom[31]; } E1; typedef struct { char titre[56]; int date; } E2; typedef struct { int code; union { E1 e1; E2 e2; } enreg; } BUFF; BUFF buff; On peut alors écrire par exemple: scanf("%s",buff.enreg.e1.nom); printf("\n le nom entre vaut : %s ",buff.enreg.e1.nom); Université LYON I ~ IUT-A Département Informatique ~ A.P. ~ Programmation procédurale: du C-ANSI au C++ 31

CHAPITRE 3 : Types de base, Opérateurs et Expressions

CHAPITRE 3 : Types de base, Opérateurs et Expressions CHAPITRE 3 : Types de base, Opérateurs et Expressions 1. Types simples Un type définit l'ensemble des valeurs que peut prendre une variable, le nombre d'octets à réserver en mémoire et les opérateurs que

Plus en détail

Langage C notes de cours

Langage C notes de cours Langage C notes de cours K. El Omari IUT GTE, UPPA 1 Présentation générale 1.1 Introduction La programmation par le langage C (ainsi que par d autres langages dit compilés) est basée sur : 1. la rédaction

Plus en détail

Introduction au langage C - types et variables

Introduction au langage C - types et variables Chapitre 2 Introduction au langage C - types et variables 1 Le Langage C Le langage C est un langage de bas niveau dans le sens où il permet l accès à des données que manipulent les ordinateurs (bits,

Plus en détail

ISMIN 1A Programmation 1 : Examen de programmation C. Réponses. Partie 1. Questions ouvertes

ISMIN 1A Programmation 1 : Examen de programmation C. Réponses. Partie 1. Questions ouvertes ISMIN 1A Programmation 1 : Examen de programmation C Réponses Partie 1. Questions ouvertes 1. Soit la déclaration suivante, char tab[] = "". Que contient le tableau tab? Réponse : tab[0] = \0. tab est

Plus en détail

LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS

LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS 1. PRÉSENTATION. Le langage C a fait son apparition en 1972 pour le développement du système d exploitation Unix. Il est devenu un standard de la norme ANSI en 1983.

Plus en détail

Algorithmique et programmation : les bases (C) Corrigé

Algorithmique et programmation : les bases (C) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours C, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage C des éléments vus en algorithmique. Table des matières 1 Pourquoi

Plus en détail

Premiers exemples de traitements

Premiers exemples de traitements #include #include Premiers exemples de traitements void main() float b(0.0); float c(0.0); float delta(0.0); cin >> b >> c; delta = b*b - 4*c; if (delta < 0.0) cout

Plus en détail

Fascicule de Génie Electrique (Terminale S option SI)

Fascicule de Génie Electrique (Terminale S option SI) Le langage C Ressource Centre d intérêt CI10 : Traitement de Thématique I11 - Les systèmes numériques : Mise en œuvre d un microcontrôleur avec des composants logiciels réutilisables. 1 Les constantes

Plus en détail

Introduction au langage C++

Introduction au langage C++ Introduction au langage C++ Chapitres traités Langage de bas niveau Langage de bas niveau (langage machine) Pourquoi le codage binaire? Les composants à l'intérieur de l'ordinateur sont des composants

Plus en détail

Chapitre 1 Introduction

Chapitre 1 Introduction Chapitre 1 Introduction Jean Privat Université du Québec à Montréal INF7330 Construction de logiciels Diplôme d études supérieures spécialisées en systèmes embarqués Automne 2012 Jean Privat (UQAM) 01

Plus en détail

Langage C. E. Boucharé

Langage C. E. Boucharé Langage C E. Boucharé Table des Matières Introduction.............................................................................. 1 Chapitre 1. Les types de données de C....................................................

Plus en détail

PLAN DU COURS ENTRÉE SORTIE FONCTION PRINTF. Fonction de la bibliothèque stdio.h. Affichage d'un texte:

PLAN DU COURS ENTRÉE SORTIE FONCTION PRINTF. Fonction de la bibliothèque stdio.h. Affichage d'un texte: PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, Tableaux, opérateurs Entrées sorties de base Structures de contrôle Algorithmes de recherche Algorithmes de

Plus en détail

La programmation Impérative par le Langage C

La programmation Impérative par le Langage C La programmation Impérative par le Langage C 1. Introduction 1.1 Qu est-ce que la programmation impérative? Un programme est constitué de plusieurs lignes d instructions. Chaque instruction permet d effectuer

Plus en détail

Cours d informatique. 1 ère année 2014 2015

Cours d informatique. 1 ère année 2014 2015 Cours d informatique en Langage C è 1 ère année 2014 2015 L informatique à l IOGS 1A : Langage C : apprentissage d un langage de programmation structuré 3 séances Matlab : analyse numérique 2A : Langage

Plus en détail

Ch1 : Eléments de base du langage C

Ch1 : Eléments de base du langage C Ch1 : Eléments de base du langage C Fathi Mguis Atelier de programmation 1 LFSI1/LARI1 A.U : 2014-2015 Plan 1 Généralités 2 Avantages 3 Structure d un programme en C 4 Les diverse phases d un programme

Plus en détail

3 Lien entre pointeurs et tableaux.

3 Lien entre pointeurs et tableaux. programme sont dit dynamiques. On se limite ici aux tableaux statiques à une seule dimension, analogue aux vecteurs manipulés en mathématiques. Ils se déclarent sous la forme : type_d_élément variable_tableau[taille];

Plus en détail

Cours C++ Lorsque je lance Dev C++, il apparaître l'écran ci-contre.

Cours C++ Lorsque je lance Dev C++, il apparaître l'écran ci-contre. Cours C++ Définition : Le langage C est un langage de programmation inventé par MM. Kernighan et Ritchie au début des années 70. Au début des années 90, Bjarne Stroustrup fait évoluer le langage vers le

Plus en détail

Normes de programmation en langage C++

Normes de programmation en langage C++ Normes de programmation en langage C++ Bakhtouchi Abdelghani EMP, Bordj El Bahri bakhtouchi@yahoo.fr ANNEE: 2009/2010 Sommaire 1. Introduction.. 1 2. Présentation.. 1 2.1. Format des fichiers source. 1

Plus en détail

INF 2005 Programmation orientée objet avec C++ Texte 2

INF 2005 Programmation orientée objet avec C++ Texte 2 INF 2005 Programmation orientée objet avec C++ Texte 2 1. Mots clés du langage C++ et premiers pas... 2 1.1 Les mots clés du langage C++... 2 1.2 Familiarisation avec le langage... 3 2. Les entrées-sorties...

Plus en détail

Organisation des données et structures de stockage

Organisation des données et structures de stockage ING2 - ING3 Nvx 2009-2010 Organisation des données et structures de stockage I. Stockage de l information en C Ce chapitre rappelle brièvement et complète certaines notions de base vues en première année

Plus en détail

Apprendre à programmer

Apprendre à programmer La résolution des problèmes est traitée suivant le cycle de développement analyse conception codage. L analyse du problème conduit à la conception d un algorithme répondant aux exigences exprimées. Chaque

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 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 int main() { printf ( this

Plus en détail

renforcer le contrôle de type :

renforcer le contrôle de type : renforcer le contrôle de type : définitions, prototypes de fonctions surcharge références conversions de void * préférer le compilateur au préprocesseur considérer les entrées/sorties opérations abstraites

Plus en détail

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali 3. Langage Python 3 2 a. Introduction Présentation du langage Python : Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans l imposer) une approche modulaire et orientée objet

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Expressions, types et variables en Python

Expressions, types et variables en Python Expressions, types et variables en Python 2015-08-26 1 Expressions Les valeurs désignent les données manipulées par un algorithme ou une fonction. Une valeur peut ainsi être : un nombre, un caractère,

Plus en détail

Système et Programmation (en C)

Système et Programmation (en C) Système et Programmation (en C) ENSTA - TC 1ère année François Pessaux U2IS 2015-2016 francois.pessaux @ ensta-paristech.fr Introduction François Pessaux IN102 Système et Programmation (en C) 2/31 But

Plus en détail

6. Lecture/écriture formatées et Fichiers. printf / scanf Fichier: Mémoire tampon Accès aux fichiers Modes d'ouverture Lecture / écriture

6. Lecture/écriture formatées et Fichiers. printf / scanf Fichier: Mémoire tampon Accès aux fichiers Modes d'ouverture Lecture / écriture 1 6. Lecture/écriture formatées et Fichiers printf / scanf Fichier: Mémoire tampon Accès aux fichiers Modes d'ouverture Lecture / écriture 2 Références Site du zèro : Programmer en C http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html

Plus en détail

TP Interface graphique et C++ numéro 1

TP Interface graphique et C++ numéro 1 TP Interface graphique et C++ numéro 1 Master IGC - 1 re année année 2010-2011 Ce premier TP a pour objectif de vous familiariser avec le compilateur C++, les entréessorties du langage et l utilisation

Plus en détail

Entrée et sortie standards (stdin,stdout et cin,cout)

Entrée et sortie standards (stdin,stdout et cin,cout) Chapitre 4 Entrée et sortie standards (stdin,stdout et cin,cout) Pour réaliser les opérations élémentaires d écriture sur l écran ou de lecture des informations du clavier, le C utilise un ensemble de

Plus en détail

L1 Informatique Université Paris 8-2010-2011 Programmation Impérative I Rim Chaabane rchaabane@ai.univ-paris8.fr - Cours 6 - Les pointeurs

L1 Informatique Université Paris 8-2010-2011 Programmation Impérative I Rim Chaabane rchaabane@ai.univ-paris8.fr - Cours 6 - Les pointeurs Les pointeurs Le langage C permet de manipuler des adresses d objets ou de fonctions par le biais de pointeurs. Pour ce faire on peut désigner des variables dites de type pointeur, destinées à contenir

Plus en détail

Programmation Répartie - Langage C

Programmation Répartie - Langage C frederic.guinand@univ-lehavre.fr IUT Le Havre Plan les bases quelques rappels de langage C les structures de contrôle conditionnelles les structures de contrôle itératives les tableaux les pointeurs les

Plus en détail

Complément du cours Langage C

Complément du cours Langage C Complément du cours Langage C Licence Fondamentale SMI (semestre 3) Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2013/2014 2013/2014 Pr. Ben Mamoun 1 Chapitre 9 Types structures, unions

Plus en détail

Langage C : Algorithmes + Programmation. Bastien Morier

Langage C : Algorithmes + Programmation. Bastien Morier Langage C : Algorithmes + Programmation Bastien Morier 2007/2008 Sommaire I. Introduction... 3 II. Analyse... 3 III. Variables... 3 IV. Règles d'écriture des variables et des constantes... 3 V. Opérateurs...

Plus en détail

COURSC 1. Langage C. Support de cours. Patrick Corde. Messagerie : corde@idris.fr

COURSC 1. Langage C. Support de cours. Patrick Corde. Messagerie : corde@idris.fr COURSC 1 Langage C Support de cours Messagerie : corde@idris.fr Liste des transparents 2 1 Présentation du langage C......... 7 1.1 Historique................ 8 1.2 Intérêts du langage............ 10 1.3

Plus en détail

Abrégé de programmation en Langage C

Abrégé de programmation en Langage C Abrégé de programmation en Langage C Denis Robilliard version 2010 Laboratoire d Informatique du Littoral Université du Littoral-Côte d'opale Table des matières I Introduction 2 1 Origines..................................................

Plus en détail

STANDARD DE PROGRAMMATION C++ (version pour 007, 2006-10-23)

STANDARD DE PROGRAMMATION C++ (version pour 007, 2006-10-23) STANDARD DE PROGRAMMATION C++ (version pour 007, 2006-10-23) 1. GÉNÉRALITÉS 1.1 Identification des fichiers Les noms de fichiers doivent être significatifs. Cependant, pour simplifier l'affichage dans

Plus en détail

BAT 4 Polytech Nice. Cours Environnement Logiciel puis Internet, Services et Réseaux en BAT4. Vérification des effectifs, Appel Sur EDT

BAT 4 Polytech Nice. Cours Environnement Logiciel puis Internet, Services et Réseaux en BAT4. Vérification des effectifs, Appel Sur EDT BAT 4 Polytech Nice Cours Environnement Logiciel puis Internet, Services et Réseaux en BAT4 Vérification des effectifs, Appel Sur EDT Une consigne : prenez des notes pendant les cours! Les supports ne

Plus en détail

Quelques notions d'algorithmique

Quelques notions d'algorithmique Quelques notions d'algorithmique I- Généralités Un algorithme est une suite finie d'instructions permettant la résolution systématique d'un problème donné. Un algorithme peut-être décrit en langage «naturel»,

Plus en détail

PHP INTRODUCTION STEFAN DU CHÂTEAU 08/08/2015

PHP INTRODUCTION STEFAN DU CHÂTEAU 08/08/2015 PHP INTRODUCTION STEFAN DU CHÂTEAU 08/08/2015 GENERALITEES LANGUAGE INTERPRETE LANGUAGE INTERPRETE DU COTE DU SERVEUR LANGUAGE TRES UTILISE DANS LES TECHNOLOGIES DU WEB UTILISATION AVEC HTML, JAVASCRIPT,

Plus en détail

Procédures et fonctions

Procédures et fonctions Chapitre 5 Procédures et fonctions 5.1 Introduction Considérons le programme suivant, dont le but est d inverser les éléments d un tableau : public class InversionTableau1 { int t[]= {8, 2, 1, 23; Terminal.ecrireStringln("Tableau

Plus en détail

Programmation : Exercices

Programmation : Exercices Programmation : Exercices IUT de Villetaneuse R&T 1 ère année Laure Petrucci 6 novembre 2007 1 Premiers programmes Exercice 1.1 : Machine à dessiner On souhaite écrire un programme pour afficher des dessins.

Plus en détail

L3 Info & Miage. TP-Projet SGF

L3 Info & Miage. TP-Projet SGF TP-Projet SGF 1. Introduction L objectif de ce mini-projet est de réaliser un Système de Gestion de Fichiers simplifié capable de gérer des accès à des fichiers séquentiels de type flot. L idée est ici

Plus en détail

Programmation en Langage C/C++ par Sylvain Ferey. pour le Forum des Programmeurs Francophones

Programmation en Langage C/C++ par Sylvain Ferey. pour le Forum des Programmeurs Francophones Programmation en Langage C/C++ par Sylvain Ferey pour le Tables des matières Introduction... 5 Réalisation de notre premier programme C... 6 Les types du C / C++... 9 Le type caractère...9 Un signe de

Plus en détail

ULCO-L1-Algo1-CM : Initiation à l algorithmique avec le langage C++

ULCO-L1-Algo1-CM : Initiation à l algorithmique avec le langage C++ ULCO-L1-Algo1-CM : Initiation à l algorithmique avec le langage C++ Table des matières 1 Généralités 3 1.1 Définitions/Glossaire....................................... 3 1.2 Exemples d algorithmes de la

Plus en détail

Info. Informatique. Le Langage C. Cours. Agnès Priou. IUT de Cachan. Dpt Génie Electrique et Informatique Industrielle. Nom de l étudiant :

Info. Informatique. Le Langage C. Cours. Agnès Priou. IUT de Cachan. Dpt Génie Electrique et Informatique Industrielle. Nom de l étudiant : 10100011 Info Informatique Le Langage C Cours Agnès Priou IUT de Cachan Dpt Génie Electrique et Informatique Industrielle Septembre 2010 Nom de l étudiant : Table des matières Introduction... 5 1 - Premier

Plus en détail

Tableau R : 255 0 0 255 255 0. Tableau G : 0 255 255 255 255 0. Tableau B : 0 0 255 0 255 0. Chaque carré représente un pixel

Tableau R : 255 0 0 255 255 0. Tableau G : 0 255 255 255 255 0. Tableau B : 0 0 255 0 255 0. Chaque carré représente un pixel Mini-Projet n 2 : Jouer avec les images. A rendre pour le lundi 14 novembre 2011 avant midi. Introduction : Une image est un ensemble de pixels dont chacun est défini par trois valeurs, que l'on note R,

Plus en détail

Fiche de révisions - Algorithmique

Fiche de révisions - Algorithmique Fiche de révisions - Algorithmique Rédigé par : Jimmy Paquereau 1. Généralités Algorithme : un algorithme est la description d une procédure à suivre afin de résoudre un problème donné. Il n est pas nécessairement

Plus en détail

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles GL / C++ Chapitre 7 Lien Dynamique Méthodes Virtuelles 1. Pointeur sur un objet d'une classe dérivée Considérons les classes écrites précédemment : Personne Etudiant // dérive de personne Salarie // dérive

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

Codage de l'information. 01000011 01101111 01100100 01100001 01100111 01100101, ce qui donne un découpage de 8 sextets

Codage de l'information. 01000011 01101111 01100100 01100001 01100111 01100101, ce qui donne un découpage de 8 sextets Univ. Lille 1 - Licence Informatique 2ème année 2013-2014 Objectifs du TP Codage de l'information TP : Le codage Base 64 Ce TP a pour but 1. de convertir des chiers quelconques en un chier texte codé en

Plus en détail

S. Laporte C# mode console DAIGL TS1

S. Laporte C# mode console DAIGL TS1 Bases du langage C# I. C# en mode console (mode texte) Avantages par rapport au mode graphique (Application Windows): - C'est un mode plus proche de l'approche algorithmique (pas de notions de composants,

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Algorithmique - Programmation 1. Cours 1

Algorithmique - Programmation 1. Cours 1 Algorithmique - Programmation 1 Cours 1 Université Henri Poincaré CESS Epinal Automne 2008 1/ 24 Plan Introduction Introduction A propos d AP1 Quelques concepts de base Premiers pas avec Caml Le branchement

Plus en détail

if (condition) et ==,!=, <, > (opérateurs logiques de comparaison)

if (condition) et ==,!=, <, > (opérateurs logiques de comparaison) if (condition) et ==,!=, (opérateurs logiques de comparaison) L'instruction if ("si" en français), utilisée avec un opérateur logique de comparaison, permet de tester si une condition est vraie, par

Plus en détail

1. Eléments de base du langage C

1. Eléments de base du langage C 1 1. Eléments de base du langage C Généralités Programme et sous-programme Fonction C Structure d un programme C Vocabulaire de base et syntaxe Exemples 2 Généralités Crée en 1972 par D. Ritchie pour écrire

Plus en détail

LE LANGAGA C POUR L EMBARQUE

LE LANGAGA C POUR L EMBARQUE ENSEIRB-MATMECA LE LANGAGA C POUR L EMBARQUE Patrice KADIONIK http://kadionik.vvv.enseirb-matmeca.fr/ D après le cours originel de M. Touraïvane, Maître de Conférence à l ESIL pk/enseirb/2005 v1.0-1 -

Plus en détail

Construction et destruction des objets de vie des objets Objets composites Tableaux d'objets Copie (Initialisation et affectation) des objets

Construction et destruction des objets de vie des objets Objets composites Tableaux d'objets Copie (Initialisation et affectation) des objets Construction et destruction des objets Durée de vie des objets Objets composites Tableaux d'objets Copie (Initialisation et affectation) des objets Initialisation des objets Constructeur par recopieinit

Plus en détail

VII- Enumérations dans l ordre alphabétique

VII- Enumérations dans l ordre alphabétique VII- Enumérations dans l ordre alphabétique Prenons un dictionnaire. Comment savoir si un mot se trouve avant ou après un autre? On commence par comparer la première lettre de ces deux mots. Si elles sont

Plus en détail

3 Pseudo-code et algorithmes 26

3 Pseudo-code et algorithmes 26 TABLE DES MATIÈRES 1 Introduction à la programmation 1 1.1 Programme et langage de programmation 2 1.2 Étapes du développement des programmes 2 1.3 Notion d'algorithme 6 2 Notions de base 9 2.1 Constantes

Plus en détail

Traduction des arbres programmatiques en C

Traduction des arbres programmatiques en C Traduction des arbres programmatiques en C Table des matières 1 Premier exemple : helloworld.c 1 2 Méthode de programmation 2 3 Déclaration de variables 2 4 Structures de contrôle 3 5 Opérateurs C 5 6

Plus en détail

Les chaînes de caractères

Les chaînes de caractères Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

1. Base de connaissance du langage C# 2. Initiation de l environnement de développement 3. Exercices

1. Base de connaissance du langage C# 2. Initiation de l environnement de développement 3. Exercices Sihao DENG sihao.deng@utbm.fr http://deng.sihao.perso.sfr.fr/mn41 1. Base de connaissance du langage C# 2. Initiation de l environnement de développement 3. Exercices Langage C Références: http://deng.sihao.perso.sfr.fr/mn41/lo11.pdf

Plus en détail

Types de données et objets

Types de données et objets Types de données et objets VL A D Y RA V E L O M A N A N A Licence 1 S2 Université Denis Diderot (P7). vlad@liafa.jussieu.fr LIAFA Bureau 6A13. 175, rue Chevaleret Ravelomanana Vlady Types de données et

Plus en détail

Programmation orientée objet TP 1 Prise en main de l environnement Java

Programmation orientée objet TP 1 Prise en main de l environnement Java Programmation orientée objet TP 1 L2 MPCIE Prise en main de l environnement Java Exercice 1 Nous désirons développer un programme pour la gestion (très simplifiée) d'un parc de véhicules destinés à la

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Python langage de programmation

Python langage de programmation Initiation à la programmation avec Python langage de programmation Valérie Bellynck (2009), d après un diaporama d Alain Bozzi (2008), lui-même venant de celui de Bob Cordeau (2008) 1 Langage de Programmation

Plus en détail

Licence Fondamentale SMI (semestre 3)

Licence Fondamentale SMI (semestre 3) Cours Programmation I (chapitres 1&2) Licence Fondamentale SMI (semestre 3) Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2014/2015 2014/2015 Pr. Ben Mamoun 1 Plan du cours (1) 1. Introduction

Plus en détail

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs Sebastien.Kramm@univ-rouen.fr IUT GEII Rouen 2010-2011 S. Kramm (IUT Rouen) MCII1 - Cours 3 2010-2011 1 / 47 Sommaire 1 Rappels de C et définitions

Plus en détail

IFT1166 TRAVAIL PRATIQUE #3 18 juin 2008. Gestion de stocks à la sauce C++! Mohamed Lokbani

IFT1166 TRAVAIL PRATIQUE #3 18 juin 2008. Gestion de stocks à la sauce C++! Mohamed Lokbani IFT1166 TP3 Été 2008 1/5 IFT1166 TRAVAIL PRATIQUE #3 18 juin 2008 Gestion de stocks à la sauce C++! Mohamed Lokbani Équipes : le travail peut-être fait en binôme mais vous ne remettez qu un travail par

Plus en détail

1 Notions de base 1.1 Structure d'un programme

1 Notions de base 1.1 Structure d'un programme 1 Notions de base 1.1 Structure d'un programme Le langage C++ contient le langage C : tout programme écrit en C à la norme ANSI doit pouvoir être compilé par un compilateur C++. C++ fait la diérence entre

Plus en détail

Programmation sous Python

Programmation sous Python Erwan Biland Lycée Chateaubriand - BCPST 1C Année scolaire 2014-2015 Objects du Utilisation de la console (shell ) Python calculatrice Fichier machin.py Manipulation des variables Création/affectation,

Plus en détail

3 - Boucles for et Séquences (range, listes, chaînes de caractères)

3 - Boucles for et Séquences (range, listes, chaînes de caractères) 3 - Boucles for et Séquences (range, listes, chaînes de caractères) Exercices et programmes à rendre dans le compte-rendu de TP : ex 1 (TP3_1), ex 2 (TP3_2), ex 3 (TP3_3), ex 5 (TP3_5), ex 6 (TP3_6), ex

Plus en détail

H.E.M.E.S. Informatique André CLARINVAL

H.E.M.E.S. Informatique André CLARINVAL H.E.M.E.S. Informatique André CLARINVAL Le langage C édition : octobre 1998 Chapitre 1. Survol introductif 1. Définitions de départ Algorithme : méthode de composition d'opérations pour arriver à la solution

Plus en détail

Javascript : les bases du langage

Javascript : les bases du langage Javascript : les bases du langage Technologies du Web 1 Jean-Christophe Routier Licence 1 SESI Université Lille 1 Université Lille 1 - Licence 1 SESI Technologies du Web 1 1 Javascript présentation partielle,

Plus en détail

Java : Programmation Impérative

Java : Programmation Impérative 1 Java : Programmation Impérative Résumé du cours précédent (I11) Paradigme impératif Algorithmique simple Découpage fonctionnel Qu est-ce qu un programme informatique? / un langage de programmation? /

Plus en détail

Programmation C++ Le langage impératif. Stéphane Vialette. 12 novembre 2012. LIGM, Université Paris-Est Marne-la-Vallée

Programmation C++ Le langage impératif. Stéphane Vialette. 12 novembre 2012. LIGM, Université Paris-Est Marne-la-Vallée Programmation C++ Le langage impératif Stéphane Vialette LIGM, Université Paris-Est Marne-la-Vallée 12 novembre 2012 Stéphane Vialette (LIGM UPEMLV) Programmation C++ 12 novembre 2012 1 / 67 C++ : chronologie

Plus en détail

Introduction à Fortran 90

Introduction à Fortran 90 Introduction à Fortran 90 Nicolas Kielbasiewicz 19 mars 2008 Fortran pour FORmula TRANslator est comme son nom l indique dédié au calcul scientifique car très performant de ce point de vue. Fortran 77

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-onventions Initiation à la programmation en Python Une commande Python sera écrite en caractère gras. Exemples : print("bonjour") max=input("nombre maximum autorisé :") Le résultat de l'exécution d'un

Plus en détail

Tableaux et manipulation d images «bitmap»

Tableaux et manipulation d images «bitmap» T.P. numéro VII Tableaux et manipulation d images «bitmap» Ce T.P. va faire intervenir les notions suivantes : lecture/écriture de fichiers binaires ; images bitmap ; tableaux de données. 1 Fichiers binaires

Plus en détail

Bases de la programmation : Cours de C. IUT de Villetaneuse.

Bases de la programmation : Cours de C. IUT de Villetaneuse. Bases de la programmation : Cours de C 1ère année IUT de Villetaneuse. Hanène Azzag, Frédérique Bassino, Bouchaïb Khafif, François Lévy,Mustapha Lebbah 28 février 2012 IUT de Villetaneuse 2 Table des matières

Plus en détail

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons du cours d aujourd hui Programmation «orientée système» LANGAGE C POINTEURS (5/5) des pointeurs Complément (et mise en garde) sur Exemple pratique : listes Forçage de type (casting) Laboratoire d Intelligence

Plus en détail

Tableaux à deux dimensions

Tableaux à deux dimensions Cours 8 Tableaux à deux dimensions Un tableau à deux dimensions (tableau 2D) est un tableau contenant des lignes et des colonnes comme celui-ci : 4 22 55 2 5 2 4 4 2 24 2 12 Ce tableau à deux dimensions

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Période 3 Les tableaux

Période 3 Les tableaux Département Génie Électrique et Informatique Industrielle Période 3 Les tableaux 1/ Recopie de certains éléments d un tableau Soit les déclarations suivantes : int Tabint[10]={65,21, 9,23, 1,32,5, 69,12,

Plus en détail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

Principes de la programmation impérative

Principes de la programmation impérative Séquence d instructions Variables et types Types élaborés Procédures, arguments Gestion de la mémoire Langage compilé, interprété Principes de la programmation impérative Séquence d instructions Variables

Plus en détail

Introduction au C++ Kévin Santugini-Repiquet. Kévin Santugini-Repiquet. Introduction au C++. Licence. 2011. <cel-00725771>

Introduction au C++ Kévin Santugini-Repiquet. Kévin Santugini-Repiquet. Introduction au C++. Licence. 2011. <cel-00725771> Introduction au C++ Kévin Santugini-Repiquet To cite this version: Kévin Santugini-Repiquet. Introduction au C++. Licence. 2011. HAL Id: cel-00725771 https://cel.archives-ouvertes.fr/cel-00725771

Plus en détail

Les types de données

Les types de données Accueil Accueil Page des cours Bibliothèque Les types de données News Sommaire rubrique Cours précédent Langage C : Hello World C! Cours suivant Langage C : Les entrées et sorties en C Nous allons apprendre

Plus en détail

Travaux Pratiques en Dev C++ (1 GIM)

Travaux Pratiques en Dev C++ (1 GIM) Université Sidi Mohammed Ben Abdellah École Supérieure de Technologie de Fès Filière Génie Industriel et Maintenance Travaux Pratiques en Dev C++ (1 GIM) Mr KHATORY TABLE DE MATIERES PREMIERS PAS EN DEV

Plus en détail

GELE5343 Chapitre 2 : Révision de la programmation en C

GELE5343 Chapitre 2 : Révision de la programmation en C GELE5343 Chapitre 2 : Révision de la programmation en C Gabriel Cormier, Ph.D., ing. Université de Moncton Hiver 2013 Gabriel Cormier (UdeM) GELE5343 Chapitre 2 Hiver 2013 1 / 49 Introduction Contenu 1

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Langages de haut niveau

Langages de haut niveau Langages de haut niveau Introduction Un assembleur est un programme traduisant en code machine un programme écrit à l'aide des mnémoniques Les langages d'assemblage représentent une deuxième génération

Plus en détail

Travaux Pratiques d Informatique 1

Travaux Pratiques d Informatique 1 Faculté Polytechnique de Mons Service d Informatique Travaux Pratiques d Informatique 1 par Mohammed BENJELLOUN Avec la participation de : J-F Bauwens, Assistant S. Mahmoudi, Assistant E. Malengreau, Assistante

Plus en détail

Eléments du langage. Eléments du langage PHP. Variables. Variables

Eléments du langage. Eléments du langage PHP. Variables. Variables Eléments du langage Eléments du langage PHP Séparation des instructions Comme en C, C++, Perl, les instructions doivent être séparées par un point virgule. Les commentaires // Ceci est un commentaire sur

Plus en détail

Master Informatique Fondamentale - M1 Compilation

Master Informatique Fondamentale - M1 Compilation Master Informatique Fondamentale - M1 Compilation Systèmes de types Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr perso.ens-lyon.fr/paul.feautrier 8 février 2007 1 / 20 Système de types Un type

Plus en détail

Variables, types simples, expressions et instructions simples

Variables, types simples, expressions et instructions simples 2.2 - Chap. 05 Variables, types simples, expressions et instructions simples 1 / 5 Variables, types simples, expressions et instructions simples 1 Variable de types simples 1.1 Notion de variable Une variable

Plus en détail

P.O.O. : Java TD n 1 Les bases du langage

P.O.O. : Java TD n 1 Les bases du langage E.P.U. GB4 (BIMB) Eclipse P.O.O. : Java TD n 1 Les bases du langage Eclipse est un IDE (Integrated Development Environment EDI en français). Il est développé par IBM, est gratuit et disponible pour la

Plus en détail