Apprendre à programmer

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

Download "Apprendre à programmer"

Transcription

1 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 solution algorithmique est proposée, dans chacun des deux langages. Sommaire 1. C et Python - fondements 2. Approche de programmation modulaire 3. Problèmes corrigés 4. Modélisation : exemples de jeux programmés 5. Exercices d approfondissement Index Bibliographie Violeta Felea est maître de conférences en informatique à l université de Franche-Comté. Ses travaux concernent les algorithmes et les systèmes parallèles et distribués. Victor Felea est professeur honoraire en informatique à l université AI. I. Cuza de Iasi, en Roumanie, où il enseigne les algorithmes et les systèmes d exploitation de bases de données. Il est auteur de plusieurs manuels d informatique dans le domaine des bases de données. Jean-Pierre Steen est professeur honoraire en informatique à l université de Lille 1 et mathématicien formé au calcul numérique. ISBN bts services informatiques aux organisations Cours et exercices corrigés Destiné aux étudiants des premiers cycles de l enseignement supérieur qui débutent dans le développement des applications informatiques, cet ouvrage aborde la pratique de deux langages de programmation, C et Python. Il comprend une synthèse de leur présentation, de nombreux problèmes résolus et des exercices d approfondissement. dut et licence 1 informatique Apprendre à programmer avec C et Python Apprendre à programmer avec C et Python Violeta Felea, Victor Felea et Jean-Pierre Steen Violeta Felea Victor Felea Jean-Pierre Steen dut et licence 1 informatique bts services informatiques aux organisations Apprendre à programmer avec C et Python Cours complet Algorithmes, codages, tests Problèmes intégralement résolus Exercices d approfondissement Python.indd 1 04/08/15 16:19

2

3 Table des matières Retrouvez des compléments numériques en accès libre sur le site à la page du livre. Préface iii 1 C et Python fondements Cycle de développement informatique Variables, types, expressions Instructions Structure du programme principal Approche de programmation modulaire Fonctions : paramètres et appels Modularité en langage algorithmique Modularité en langage C Modularité en langage Python Optimisation des performances de la récursivité Fonctions de bibliothèque Compilation et exécution des programmes Problèmes corrigés Constantes, variables, expressions Primitives Instruction simple Bloc d instructions Instructions conditionnelles Instructions répétitives Modularité Types composites Techniques algorithmiques Modélisation : exemples de jeux programmés Exercices proposés Constantes, variables, expressions Primitives Instruction simple Bloc d instructions Instructions conditionnelles Instructions répétitives Modularité

4 ii Table des matières 5.6 Types composites Techniques algorithmiques Modélisation Index 397 Index des termes génériques Index des notions algorithmiques Index des notions en langage C Index des notions en langage Python Bibliographie 403

5 CHAPITRE 2 Approche de programmation modulaire La conception modulaire est une technique de conception de logiciel qui s appuie sur la composition du logiciel en parties séparées. Dans la phase d analyse du problème, une analyse du découpage du problème en sous-problèmes s impose. Cette analyse devrait déceler la fonctionnalité d un algorithme, ses données d entrée, ses données en sortie ou les données, en entrée, à modifier. La section suivante présente les principes génériques de la modularité. Les trois autres sections abordent la mise en place de ces principes dans le langage algorithmique, ainsi que dans les langages C et Python. 2.1 Fonctions : paramètres et appels La modularité fait partie des bonnes pratiques de la conception logicielle. Il s agit de définir des parties de code, appelées génériquement fonctions, répondant à une fonctionnalité précise, pouvant à la fois apporter de la généricité 1 et de la réutilisation. Une conception modulaire facilite la lisibilité du code et sa maintenance. Les fonctions doivent pouvoir être reliées les unes aux autres. Par conséquent, deux notions les caractérisent : le paramétrage (les fonctions peuvent prendre des paramètres, afin d échanger des données entre elles) et l appel (ces fonctions doivent pouvoir être appelées et peuvent en appeler d autres). Afin que l appel puisse être réalisé, une fonction doit être déclarée. La définition d une fonction précise, d un point de vue syntaxique : son entête (appelée aussi dans les langages de programmation signature ou prototype), nécessaire pour la fonction qui l appelle. Ceci constitue ainsi l interfaçage entre la fonction appelante et la fonction appelée. L entête précise : le nom de la fonction et les paramètres, notés par des identificateurs de paramètres séparés par des virgules ; son corps, qui comprend la partie de déclaration de variables locales et les instructions liées au traitement. 1 La généricité (ou la programmation générique) consiste à définir des algorithmes/programmes identiques opérant sur des données différentes.

6 46 Chapitre 2. Approche de programmation modulaire L appel d une fonction doit être conforme à sa définition. Dans la définition d une fonction, les paramètres sont formels (car ils ne désignent pas encore des données concrètes), mais lors de l appel, les paramètres sont effectifs. Ces derniers sont aussi appelés arguments. La conformité lors de l appel se traduit en trois règles, appelées règles de mise en correspondance, à respecter : le nombre de paramètres effectifs est égal au nombre de paramètres formels, l association d un paramètre effectif à un paramètre formel dépend de la position dans l ensemble de paramètres (le premier paramètre effectif correspond au premier paramètre formel, etc.), chaque paramètre effectif a un type compatible avec le type du paramètre formel correspondant. Il faut noter que même si deux paramètres, actuel et formel, sont désignés par le même identificateur, ils désignent des entités différentes (présentes à des adresses différentes en mémoire). Du point de vue du flux de contrôle, l appel d une fonction interrompt le flux d exécution de la fonction courante, pour que les instructions de la fonction appelée soient exécutées. À la fin de cette exécution, le contrôle est rendu à la fonction appelante, qui continue à exécuter ses instructions par la première qui suit l appel de la fonction. 2.2 Modularité en langage algorithmique Dans le langage algorithmique, les fonctions génériques sont matérialisés par des algorithmes, ayant deux formes : des actions ou des fonctions. Le terme sous-algorithme est parfois utilisé pour les distinguer de l algorithme principal. Définition Un algorithme est spécifié grâce à son entête. L entête d un algorithme précise le type de l algorithme, action ou fonction, son nom et les paramètres. La définition d un algorithme prend les formes suivantes, selon qu il soit : une action action identact (liste-ident-paramètres ) spéc-param liste-déclarations-locales bloc-instr finaction une fonction fonction identfct (liste-ident-paramètres ) : type spéc-param liste-déclarations-locales bloc-instr retourner : expr finfonction où identact ou identfct sont des identificateurs désignant le nom de l action, respectivement de la fonction ;

7 2.2 Modularité en langage algorithmique 47 liste-ident-paramètres (optionnelle) est une succession d identificateurs, séparés par des virgules, correspondant aux paramètres (cette liste peut être vide) ; spéc-param (optionnelle si aucun paramètre n est présent) donne la spécification de certains paramètres (voir ci-après) ; liste-déclarations-locales (optionnelle) est une succession de déclarations de variables locales (cette succession peut être vide) ; bloc-instr (optionnel) est l ensemble d instructions du corps de l algorithme ; pour les fonctions, le mot clé retourner, suivi d un deux-points et d une expression, précise la valeur une seule possible retournée par la fonction. Dans ce cas, l expression retournée doit être évaluée à un type compatible avec le type précisé dans l entête de la fonction, par type. La spécification d un paramètre inclut la définition de sa catégorie (Données, Données/Résultats ou Résultats) et la déclaration de son type. Les trois catégories sont identifiées en fonction de la relation entre l algorithme appelant et l algorithme appelé : Données l algorithme appelé utilise le paramètre seulement en lecture, Résultats l algorithme appelé utilise le paramètre seulement en écriture, Données/Résultats l algorithme appelé utilise le paramètre en lecture et écriture. Les paramètres ne peuvent appartenir qu à une seule catégorie. En fonction de la forme de l algorithme, les paramètres peuvent être d une certaine catégorie. Pour les actions, les paramètres peuvent appartenir à toutes des catégories citées précédemment. Exemple. L action affichant le nombre de jours d un mois est définie ainsi : action affichernbjours(mois, nbjours) Données mois : entier { le numéro du mois } nbjours : entier { le nombre de jours du mois } écrire "Nombre de jours du mois " mois " est " nbjours finaction Dans cet exemple, les deux paramètres appartiennent à la catégorie Données, c est-à-dire que quand l algorithme est appelé, il utilise les valeurs des paramètres en lecture, mais l algorithme qui l appelle n attend pas une modification de ces valeurs. Cependant, l appartenance à la catégorie Données d un paramètre n interdit pas sa modification dans le corps de l algorithme quand il est appelé. Cette modification ne sera pas, par contre, répercutée sur le paramètre effectif. Pour les fonctions, les paramètres ne peuvent appartenir que seulement à la catégorie Données.

8 48 Chapitre 2. Approche de programmation modulaire Exemple. La fonction calculant le nombre de jours d un mois est définie ainsi : fonction nbjoursmois(mois) : entier Données mois : entier { le numéro du mois } Locales nbj : entier { le nombre de jours du mois donné } { instructions permettant de faire le calcul } retourner : nbj finfonction Les variables locales définies dans les algorithmes ne peuvent pas être paramètres simultanément. Par conséquent, l ensemble de variables locales et l ensemble de paramètres sont disjoints. Appel L appel d une action est considéré comme une instruction. L appel d une fonction est une expression ; par conséquent, il doit apparaître dans le membre droit d une affectation, ou dans une expression, ou il peut être imbriqué dans l appel à une autre fonction ou action, ou être inclus dans une primitive d écriture. Dans ces deux derniers cas, il s agit d un appel imbriqué. Seul l appel d une fonction peut être imbriqué. Etant donné les catégories de paramètres, un paramètre Données doit être une expression : l expression est évaluée et le paramètre effectif prend comme valeur le résultat de l évaluation, transférée au paramètre formel, un paramètre Résultats doit être une variable : l algorithme appelé affectera une valeur au paramètre formel, qui sera transférée au paramètre effectif, un paramètre Données/Résultats doit être une variable valuée (variable contenant une valeur) : la valeur du paramètre effectif est transférée au paramètre formel, qui sera modifiée par l algorithme et la nouvelle valeur sera transférée au paramètre effectif. Afin d identifier les algorithmes nécessaires pour la résolution d un problème, de façon modulaire, une analyse du découpage du problème en sous-problèmes s impose. Cette analyse devrait déceler la fonctionnalité d un algorithme, ses données d entrée (les paramètres Données), ses données en sortie (les paramètres Résultats) ou les données, en entrée, à modifier (les paramètres Données/Résultats). L algorithme principal aura le rôle d appeler des algorithmes définis, afin de construire la structure de la solution à base des briques élémentaires données par les sous-algorithmes. 2.3 Modularité en langage C Définition La modularité en C s exprime par l intermédiaire des fonctions, dont la définition est la suivante : type identfct (liste-déclarations-paramètres ) { liste-déclarations-locales bloc-instr } où

9 2.3 Modularité en langage C 49 type est le type de l expression rendue par la fonction, ou void si la fonction ne rend pas de valeur ; identfct est le nom de la fonction ; liste-déclarations-paramètres (optionnelle) est une liste de déclarations de paramètres formels, séparées par des virgules ; chaque déclaration contient le type du paramètre suivi par son identificateur ; liste-déclarations-locales (optionnelle) est une liste de déclarations de variables locales utilisées dans les instructions de la fonction ; bloc-instr (optionnel) définit l ensemble des instructions à exécuter par la fonction. Si la fonction rend une valeur, l instruction return expr; doit apparaître parmi les instructions du bloc. Lors de l exécution d une telle instruction, l expression expr est évaluée et le contrôle d exécution est rendu à l appelant de la fonction. Aucune autre instruction suivant l instruction return n est exécutée. La valeur rendue par la fonction est celle de l expression. Exemples. Un premier exemple de fonction est celui de la fonction principale dans un programme écrit en C (voir la page 43). Les paramètres formels définis servent à obtenir les valeurs des arguments de la ligne de commande. La fonction C affichant le nombre de jours d un mois est définie ainsi : void affichernbjours(int mois, int nbjours) { // mois : le numéro du mois // nbjours : le nombre de jours du mois printf("nombre de jours du mois %d est %d\n", mois, nbjours); } La fonction C calculant le nombre de jours d un mois est définie ainsi : int nbjoursmois(int mois) { // paramètre mois : le numéro du mois (entre 1 et 12) int nbj; // le nombre de jours du mois donné // instructions permettant de faire le calcul return nbj; } Si la dernière instruction exécutée par une fonction n est pas une instruction return, la valeur rendue par la fonction est indéterminée. L instruction return peut apparaître à plusieurs endroits, dans le corps d une fonction qui rend une valeur, comme par exemple, si une instruction conditionnelle est utilisée. La déclaration imbriquée de fonctions n est pas autorisée dans le standard du langage, mais certains compilateurs intègrent cette syntaxe 2. Appel L appel d une fonction C est : soit une expression, si la fonction rend une valeur : identvar = identfct(liste-expressions ); 2 Le compilateur gcc est un exemple de compilateur acceptant les déclarations imbriquées de fonctions.

10 50 Chapitre 2. Approche de programmation modulaire La sémantique est la suivante : les expressions de la liste d expressions listeexpressions sont évaluées, puis passées en tant que paramètres effectifs à la fonction de nom identfct, qui est ensuite exécutée. La valeur rendue par la fonction est la valeur affectée à la variable identvar. soit une instruction, si la fonction ne rend aucune valeur : identact(liste-expressions ); De même qu en langage algorithmique, les appels peuvent être imbriqués : une fonction qui renvoie une valeur peut être imbriquée dans toute autre fonction, c est-àdire que des appels (imbriqués) de fonctions peuvent correspondre aux paramètres effectifs de la fonction appelée. Une fonction qui ne renvoie rien ne peut pas être imbriquée. Passage de paramètres En C, les paramètres sont passés par valeur, c est-à-dire que les paramètres formels sont considérés comme des variables locales à la fonction et sont initialisées automatiquement par les valeurs des paramètres effectifs. La fonction, le sous-programme travaille avec une copie. C est le cas des paramètres de type scalaire (numérique, alphanumérique). Par conséquent, toute modification qui pourrait s effectuer dans la fonction n a aucune incidence sur le contenu du paramètre effectif. Quand un paramètre formel est de type pointeur, le passage de paramètre est appelé, en C, passage par référence : c est la valeur du pointeur (une adresse dans la mémoire) qui est attribuée au paramètre formel. Ainsi, la fonction a la possibilité de modifier le contenu du paramètre effectif (celui qui est à l adresse indiquée), donc sa valeur, par une affectation effectuée sur le déréférencement du pointeur. Exemple erroné. void lireentiers(int a, int b) { // lire deux valeurs entières et les retourner scanf("%d", &a); scanf("%d", &b); } // appel dans une fonction (main ou autre) int x = 10, y = 15; lireentiers(x, y); // x vaut 10 et y vaut 15 même si dans la fonction lireentiers, // les paramètres ont été modifiés par une saisie au clavier Le code précédent, correctement d un point de vue syntaxique, définit une fonction qui prend en paramètres deux scalaires entiers, dont le passage est effectué par valeur. Les paramètres effectifs x et y ont des valeurs définies à la déclaration, grâce à l affectation. Les paramètres formels a et b reçoivent ces valeurs lors de l appel de la fonction lireentiers. Les valeurs saisies au clavier sont effectivement mémorisées, mais aux adresses des variables a et b, paramètres formels, qui sont différentes des adresses des variables x et y, paramètres effectifs. Cela explique le fait que le contenu des variables x et y n est pas modifié après le retour de l appel de la fonction lireentiers.

11 2.3 Modularité en langage C 51 Exemple correct. Définition de la fonction (utilisant les pointeurs voir la page 13) : void lireentiers(int* pa, int* pb) { // lire deux valeurs entières et les retourner // pa et pb sont des adresses scanf("%d", pa); scanf("%d", pb); } Utilisation de la fonction (l appel) : // appel dans une fonction (main ou autre) int x, y; lireentiers(&x, &y); Dans le code de l exemple précédent, il s agit d un passage par référence, pour les deux paramètres. Cela traduit le fait que la valeur du paramètre, donc l adresse de la variable, est affectée au paramètre formel. Il est à noter que la même sémantique que précédemment est utilisée : les paramètres formels et les paramètres effectifs correspondent à des variables différentes (ici, elles contiennent les adresses mémoire de x et y). Les instructions de saisie au clavier utilisent directement la valeur du paramètre formel, qui, justement, représente l adresse en mémoire où doit être mémorisée la valeur saisie. Et, comme cette adresse correspond aussi à l adresse du paramètre effectif, ceci permet d obtenir, après le retour de l appel de fonction, les valeurs saisies dans les variables x et y. Par conséquent, l utilisation d un paramètre de la catégorie Données dans le langage algorithmique devrait se traduire par un passage par valeur en C, tandis que l utilisation d un paramètre des catégories Données/Résultats ou Résultats devrait se traduire par un passage par référence en C. Définition et appel Lorsqu une fonction est appelée, sa définition doit être connue par l appelant. Si cette définition est présente dans le même fichier que la fonction appelante, généralement elle précède l endroit où l appel est réalisé. L exception est faite pour les fonctions récursives 3 qui n exigent pas que cet ordre soit respecté car il n est pas réalisable. Aussi, comme pour les fonctions réciproquement récursives (c est-à-dire la fonction fct1 appelle la fonction fct2 et inversement), la précédence dans le fichier ne peut pas être appliquée, on place un prototype de la fonction appelée avant l endroit où l appel est réalisé. Sa définition peut le succéder. Exemple. // prototype fonction fct1 /* définition fonction fct2 - avec appel de fct1 */ /* définition fonction fct1 */ 3 Une fonction récursive est une fonction qui s appelle elle-même, directement ou par l intermédiaire d autres fonctions.

12 52 Chapitre 2. Approche de programmation modulaire Référence à une fonction externe Dans certains cas, des fonctions définies en dehors du fichier courant peuvent être appelées. C est le cas des fonctions de bibliothèque standard, comme celles nécessaires pour les opérations d affichage ou de saisie. Il y a une méthode permettant de faire cela de manière automatique grâce au mécanisme d inclusion de fichiers d entête, utilisant la directive de compilation include qui doit apparaître en début du fichier contenant le code source. Grâce à ce mot clé et aux indications que l accompagnent, est précisé le fichier (avec l extension.h) contenant les entêtes de toutes les fonctions pouvant être appelées par le code courant. Exemple. #include <stdio.h> permet l utilisation des fonctions de la bibliothèque standard d entrée/sortie. Le fichier d entête à inclure, permettant l accès à la fonction de bibliothèque, est précisé dans la documentation de chaque fonction. Pointeur de fonction Un pointeur peut contenir une adresse d une fonction. Elle représente l adresse de la première instruction exécutable du code machine de cette fonction. La conséquence directe est la possibilité de passer en paramètres des fonctions, par la notion de pointeur de fonction. Déclaration : Un pointeur vers une fonction se déclare de la manière suivante : typeret (*identptrfct)(liste-types ); déclare un pointeur ayant le nom identptrfct vers une fonction, ayant des paramètres de types donnés par liste-types et qui renvoie un résultat de type typeret. Manipulation : Un pointeur de fonction est initialisé par l adresse de la fonction grâce à l opérateur de référencement : identptrfct = &nomfct ; où nomfct est le nom de la fonction référencée. Exemple. Soit cmpinf une fonction de comparaison d infériorité entre deux entiers : bool cmpinf(int a, int b) { return a <= b; } Cette fonction peut être appelée, par l intermédiaire d un pointeur vers elle, de la manière suivante : bool (*ptrcmp)(int, int); // déclaration de pointeur ptrcmp = &cmpinf; // initialisation de pointeur de fonction printf(ptrcmp(a,b)); // appel de la fonction par l intermédiaire // du pointeur de fonction L exemple précédent n apporte pas une fonctionnalité supplémentaire, car l appel d une fonction peut être réalisé directement, grâce au nom de la fonction. Cependant, il sert d étape intermédiaire pour comprendre comment les fonctions peuvent être passées en paramètre pour d autres fonctions.

13 2.3 Modularité en langage C 53 Exemple. Prenons, à titre d exemple, une fonction qui permet d ordonner deux entiers, soit en ordre croissant, soit en ordre décroissant, l ordre étant induit par un paramètre qui est une fonction. bool cmpsup(int a, int b) { return a >= b; } // nouvelle fonction, // en complément de la précédente void ordo(int* pa, int* pb, bool(*pfctcmp)(int,int)) { // ordonner le contenu aux adresses pa et pb // selon les indications d une fonction dont l adresse est pfctcmp if (!pfctcmp(*pa,*pb)) { // permuter int tmp; tmp = *pa, *pa = *pb; *pb = tmp; } } // appel pour deux entiers x, y ordo(&x, &y, &cmpinf); // après l appel : x <= y ordo(&x, &y, &cmpsup); // après l appel : x >= y Si une fonction peut être passée en paramètre, elle peut également apparaître en retour d une fonction ou encore en paramètre passé par référence. Il est à noter que cet usage est moins répandu. Exemple. Considérant une fonction carre qui renvoie le carré d un entier et une fonction doubler qui renvoie le double de l entier en paramètre, il s agit de définir une fonction qui renvoie soit la fonction carre, si l entier est strictement négatif, soit la fonction doubler au cas contraire. int carre(int x) { int doubler(int x) { int (* fctgen(int a))(int) { return x*x; return 2*x; // retour d un pointeur sur fct } } if (a < 0) return carre; return doubler; } // appels de fctgen int (*ptrfct)(int); ptrfct = fctgen(-2); // ptrfct est la fonction carre int res1 = ptrfct(-3); // appel de carre(-3) -> 9, même résultat que fctgen(-2)(-3) int res2 = ptrfct(4); // appel de carre(4) -> 16, même résultat que fctgen(-2)(4) ptrfct = fctgen(3); // ptrfct est la fonction doubler res1 = ptrfct(-1); // appel de doubler(-1) -> -2, même résultat que fctgen(3)(-1) res2 = ptrfct(5); // appel de doubler(5) -> 10, même résultat que fctgen(3)(5) La fonction fctgen précise un paramètre entier, selon lequel le choix de la fonction à retourner est réalisé. À son tour, la fonction retournée prend un entier en paramètre pour réaliser le calcul. La définition de la fonction retournée peut utiliser la redéfinition de type pour un pointeur de fonction. La définition suivante : typedef typeret (* TypePtrFct) (liste-types ) définit un type TypePtrFct comme pointeur sur toute fonction ayant les paramètres de types donnés par liste-types et qui renvoie une valeur de type typeret.

14

15 CHAPITRE 3 Problèmes corrigés 3.1 Constantes, variables, expressions Ex. 1 Opérateurs et expressions arithmétiques Écrire les expressions mathématiques suivantes en langages algorithmique, C et Python : 1. a 2 a c + bc + c d + e f 2. 1 a + 1 b c + d Solution (Ex. 1) Dans les trois langages, les expressions mathématiques se traduisent de la même manière : 1. a a - c + a / (b c + c /(d + e / f)) 2. (1 / a + 1 / b) / (c + d) Ex. 2 Expressions En fonction des déclarations des variables suivantes, en langage algorithmique : i, j, k : entier x, y, z : réel c : caractère b : booléen donner l expression équivalente, en C et en Python, pour chacune des expressions algorithmiques ci-dessous : c-i i=j x+2.0 x+i x/2.0 i/2 i/2.0 i div 2 x<y i mod j+y i/j+y i et b i>j et k>j x+y*i Solution (Ex. 2)

16 78 Chapitre 3. Problèmes corrigés expression type explication algorithmique C Python c-i c-i entier conversion implicite Rem1 Rem2 (algorithmique et C) entre le type entier et le type caractère i=j i==j i==j booléen opérateur de comparaison d égalité x+2.0 x+2.0 x+2.0 réel un des opérandes est réel x+i x+i x+i réel un des opérandes est réel x/2.0 x/2.0 x/2.0 réel division réelle i/2 i/2.0 i/2 réel division réelle i/2.0 i/2.0 i/2.0 réel division réelle i div 2 i/2 i//2 entier division entière x<y x<y x<y booléen opérateur de comparaison i mod j+y i%j+y i%j+y réel mod prioritaire i/j+y i/(j*1.0)+y i/(j*1.0)+y réel la division est prioritaire (l expression évaluée est un réel) i et b évaluation impossible (l opérande i n est pas booléen) i>j et k>j i>j && k>j i>j and k>j booléen expression booléenne dont les opérandes sont des expressions de comparaison x+y*i x+y*i x+y*i réel la multiplication est prioritaire Remarques. Dans le tableau précédent, une remarque s impose pour l expression c-i. Rem1. En C, le type de l expression c-i dépend du type de la variable à laquelle l expression est affectée. Ainsi, l expression pourrait être évaluée à un type char ou un type int (correspondant au code ASCII du caractère). Rem2. En Python, l expression c-i ne se traduit pas de la même manière car l opérateur de soustraction ne peut pas être appliqué sur une chaîne de caractères et un entier. Deux expressions équivalentes peuvent être écrites : chr(ord(c)-i) pour obtenir le caractère et ord(c)-i pour obtenir le code ASCII du caractère correspondant. Ex. 3 Théorèmes de Morgan Formulés par le mathématicien britannique, Augustus de Morgan, ces théorèmes énoncent des équivalences entre des expressions booléennes et permettent de les simplifier. Question 1. Compléter les tableaux suivants : a b non a non b a ou b non(a ou b) non a et non b faux faux faux vrai vrai faux vrai vrai

17 3.1 Constantes, variables, expressions 79 a b non a non b a et b non(a et b) non a ou non b faux faux faux vrai vrai faux vrai vrai Question 2. Déduire les relations entre : l expression non(a ou b) et l expression non a et non b, l expression non(a et b) et l expression non a ou non b. Solution (Ex. 3) a b non a non b a ou b non(a ou b) non a et non b faux faux vrai vrai faux vrai vrai faux vrai vrai faux vrai faux faux vrai faux faux vrai vrai faux faux vrai vrai faux faux vrai faux faux En conséquence, on déduit que les expressions non(a ou b) et non a et non b sont équivalentes. a b non a non b a et b non(a et b) non a ou non b faux faux vrai vrai faux vrai vrai faux vrai vrai faux faux vrai vrai vrai faux faux vrai faux vrai vrai vrai vrai faux faux vrai faux faux En conséquence, on déduit que les expressions non(a et b) et non a ou non b sont équivalentes. Ex. 4 Expressions booléennes Former les expressions booléennes (en langage algorithmique et en langages C et Python) correspondant aux énoncés suivants : 1. u = 1 ou 2 ou 3 ou 4 ; 2. u v ; 3. u [5,10] ; 4. u ]-2,0] [10, + ) ; 5. u [a,b] ]c, d] ; 6. u IR\ ]-a, a[ (IR désignant l ensemble des réels). Solution (Ex. 4) Les expressions dans le langage algorithmique sont les suivantes : 1. u=1 ou u=2 ou u=3 ou u=4 ; 2. u v soit non(u = v) ; 3. u 5 et u 10 ;

18 80 Chapitre 3. Problèmes corrigés 4. u > -2 et u 0 ou u 10 ; 5. u a et u b et u > c et u d ; 6. non (u > -a et u < a). Leurs traductions en langage C, respectivement en Python, sont données dans le tableau ci-après : C Python u==1 u==2 u==3 u==4 u==1 or u==2 or u==3 or u==4 u!= v u!= v!(u == v) not(u == v) u >= 5 && u <= 10 u >= 5 and u <= 10 u > -2 && u <= 0 u >= 10 u > -2 and u <= 0 or u >= 10 u >= a && u <= b && u > c u >= a and u <= b and u > c && u <= d and u <= d!(u > -a && u < a) not (u > -a and u < a) Ex. 5 Expression booléenne composée En considérant que les deux variables booléennes pluie et froid, correspondent respectivement aux deux situations de la météo : "il pleut" et "il fait froid", établir la table de vérité de l expression algorithmique suivante : pluie et non froid Solution (Ex. 5) pluie froid non froid pluie et non froid faux faux vrai faux faux vrai faux faux vrai faux vrai vrai vrai vrai faux faux Conclusion : il pleut et il ne fait pas froid uniquement si la variable pluie est évaluée à vrai et la variable froid est évaluée à faux, c est-à-dire quand pluie et non froid sont vrai en même temps. Ex. 6 Identité entre valeurs Considérons trois valeurs numériques mémorisées par l intermédiaire des variables différentes. Exprimer en langage algorithmique, par une expression booléenne, les situations suivantes : 1. au moins deux valeurs parmi les trois sont identiques, 2. deux valeurs et seulement deux valeurs parmi les trois sont identiques, 3. au plus deux valeurs parmi les trois sont identiques. Solution (Ex. 6) Considérons les identificateurs x, y, z pour les trois variables numériques. Les expressions booléennes, correspondant aux situations de l énoncé, sont les suivantes : 1. x = y ou y = z ou x = z ou (x = y et y = z), 2. (x = y et y z) ou (y = z et x y) ou (x = z et y x),

19 3.1 Constantes, variables, expressions (x = y et y z) ou (y = z et x y) ou (x = z et y x) ou (x y et y z). Ex. 7 Conditions d accès au musée Les conditions d accès demi-tarif à un musée sont les suivantes : toute personne, non étudiante, de plus de 60 ans, ne faisant pas partie de l association des amis du musée, tout étudiant non membre de l association, toute personne de moins de 60 ans et membre de l association, toute personne de plus de 60 ans, ne faisant pas partie de l association, mais au chômage, tout étudiant de moins de 60 ans et qui n est pas au chômage, toute personne membre de l association, au chômage, toute personne de plus de 60 ans, membre de l association, non au chômage. Quelle est l expression booléenne traduisant les conditions pour se voir autorisé un demi-tarif pour l accès au musée? Remarque. Exprimons, par les variables booléennes, les situations : une personne est étudiant, une personne a plus de 60 ans, une personne est membre de l association, une personne au chômage. Solution (Ex. 7) Considérons les variables booléennes suivantes : e : la personne est un étudiant, a : la personne a plus de 60 ans, m : la personne est membre de l association des amis du musée, c : la personne est au chômage. En suivant les règles de l énoncé, l expression suivante est évaluée à vrai quand la personne a droit à une entrée demi-tarif au musée : (non e et a et non m) ou (e et non m) ou (non a et m) ou (a et non m et c) ou (e et non a et non c) ou (m et c) ou (a et m et non c). Il s agit de la disjonction de chacune des règles ; chaque règle est une expression booléenne exprimée par une conjonction de variables, en fonction de la contrainte exprimée. Par exemple, pour la première règle, qui stipule que toute personne, non étudiante, de plus de 60 ans, ne faisant pas partie de l association des amis du musée a droit à un demi-tarif, il s agit de l expression non e et a et non m. Remarque. Cette expression peut être simplifiée. La simplification peut être réalisée, de manière générale, soit en utilisant les théorèmes fondamentaux (voir l exercice 2 à la page 343), soit en construisant les diagrammes de Karnaugh [9]. Plusieurs expressions simplifiées différentes peuvent être obtenues, mais elles seront équivalentes. La simplification est importante afin que l expression booléenne obtenue, utilisée comme condition dans une structure de contrôle conditionnelle ou itérative, soit la plus compacte possible, réduisant ainsi le nombre d opérations effectuées. En construisant les diagrammes de Karnaugh pour quatre variables, nous obtenons l expression simplifiée : m ou (non m et a) ou (non m et non a et e) ou encore e ou a ou m

20 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 solution algorithmique est proposée, dans chacun des deux langages. Sommaire 1. C et Python - fondements 2. Approche de programmation modulaire 3. Problèmes corrigés 4. Modélisation : exemples de jeux programmés 5. Exercices d approfondissement Index Bibliographie Violeta Felea est maître de conférences en informatique à l université de Franche-Comté. Ses travaux concernent les algorithmes et les systèmes parallèles et distribués. Victor Felea est professeur honoraire en informatique à l université AI. I. Cuza de Iasi, en Roumanie, où il enseigne les algorithmes et les systèmes d exploitation de bases de données. Il est auteur de plusieurs manuels d informatique dans le domaine des bases de données. Jean-Pierre Steen est professeur honoraire en informatique à l université de Lille 1 et mathématicien formé au calcul numérique. ISBN bts services informatiques aux organisations Cours et exercices corrigés Destiné aux étudiants des premiers cycles de l enseignement supérieur qui débutent dans le développement des applications informatiques, cet ouvrage aborde la pratique de deux langages de programmation, C et Python. Il comprend une synthèse de leur présentation, de nombreux problèmes résolus et des exercices d approfondissement. dut et licence 1 informatique Apprendre à programmer avec C et Python Apprendre à programmer avec C et Python Violeta Felea, Victor Felea et Jean-Pierre Steen Violeta Felea Victor Felea Jean-Pierre Steen dut et licence 1 informatique bts services informatiques aux organisations Apprendre à programmer avec C et Python Cours complet Algorithmes, codages, tests Problèmes intégralement résolus Exercices d approfondissement Python.indd 1 04/08/15 16:19

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

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

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

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

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

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

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

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel) Algorithmes et Programmes Introduction à l informatiquel! Vie d'un programme! Algorithme! Programmation : le langage! Exécution et test des programmes Chapitre : Algorithmes et Programmes 2 Cycle de vie

Plus en détail

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION En C

ALGORITHMIQUE ET PROGRAMMATION En C Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2

Plus en détail

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

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

Algorithmique, Structures de données et langage C

Algorithmique, Structures de données et langage C UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure

Plus en détail

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Cours de Programmation Impérative: Zones de mémoires et pointeurs Cours de Programmation Impérative: Zones de mémoires et pointeurs Julien David A101 - david@lipn.univ-paris13.fr Julien David (A101 - david@lipn.univ-paris13.fr) 1 / 1 Z`o n`e s `d`e m`é m`o i r`e Julien

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

Poker. A rendre pour le 25 avril

Poker. A rendre pour le 25 avril Poker A rendre pour le 25 avril 0 Avant propos 0.1 Notation Les parties sans * sont obligatoires (ne rendez pas un projet qui ne contient pas toutes les fonctions sans *). Celles avec (*) sont moins faciles

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

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

TD3 - Facturation avec archivage automatisé

TD3 - Facturation avec archivage automatisé TD3 - Facturation avec archivage automatisé Objectifs Insérer les formules nécessaires aux calculs d une facture. Créer une macro- commande avec l enregistreur de macros et l affecter à un bouton. Utiliser

Plus en détail

Annexe : La Programmation Informatique

Annexe : La Programmation Informatique GLOSSAIRE Table des matières La Programmation...2 Les langages de programmation...2 Java...2 La programmation orientée objet...2 Classe et Objet...3 API et Bibliothèque Logicielle...3 Environnement de

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

SUPPORT DE COURS. Langage C

SUPPORT DE COURS. Langage C Dpt Informatique 2010-2011 SUPPORT DE COURS Langage C Semestre 1 par : «CaDePe» Marie-Françoise Canut Marianne de Michiel André Péninou Table des Matières 1 Généralités...8 1.1 Introduction aux langages

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Initiation. àl algorithmique et à la programmation. en C

Initiation. àl algorithmique et à la programmation. en C Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,

Plus en détail

Claude Delannoy. 3 e édition C++

Claude Delannoy. 3 e édition C++ Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Chap III : Les tableaux

Chap III : Les tableaux Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 4 : Fonctions La construction de fonctions dans un langage de programmation permet aux

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

UE C avancé cours 1: introduction et révisions

UE C avancé cours 1: introduction et révisions Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple

Plus en détail

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables

Plus en détail

Chapitre 5 : Les procédures stockées PL/SQL

Chapitre 5 : Les procédures stockées PL/SQL I. Introduction Une procédure ou une fonction stockée est un bloc PL/SQL nommé pouvant accepter des paramètres et être appelée. Généralement, on utilise une fonction pour calculer une valeur. Les procédures

Plus en détail

Travaux Dirigés n 1 : chaînes de caractères

Travaux Dirigés n 1 : chaînes de caractères UE LE315 Travaux Dirigés n 1 : chaînes de caractères Exercice 1 Ecrire une fonction int nombre_caract(char *chaîne) qui retourne la taille d une chaîne de caractères. Exercice 2 Ecrire la fonction void

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire

Plus en détail

I00 Éléments d architecture

I00 Éléments d architecture I00 I Exemples d ordinateur Pour les informaticiens, différentes machines de la vie courante sont des ordinateurs : par exemple les ordinateurs portables, les ordinateurs fixes, mais aussi les supercalculateurs,

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Cours Informatique 1. Monsieur SADOUNI Salheddine

Cours Informatique 1. Monsieur SADOUNI Salheddine Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale

Plus en détail

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

1 Lecture de fichiers

1 Lecture de fichiers Programmation 1 Cours n 6 GB3, 2 nd semestre 2014-2015 Cours de Python Gilles Bernot 1 Lecture de fichiers Un fichier est une suite de caractères mémorisés sur le disque dur de la machine dans un endroit

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

Architecture des Systèmes d Information Architecture des Systèmes d Information

Architecture des Systèmes d Information Architecture des Systèmes d Information Plan... Tableaux et tris I3 - Algorithmique et programmation 1 Rappels Nicol Delestre 2 Tableaux à n dimensions 3 Initiation aux tris Tableaux - v2.0.1 1 / 27 Tableaux - v2.0.1 2 / 27 Rappels : tableau

Plus en détail

Chapitre 1 : La gestion dynamique de la mémoire

Chapitre 1 : La gestion dynamique de la mémoire Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Notions fondamentales du langage C# Version 1.0

Notions fondamentales du langage C# Version 1.0 Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales

Plus en détail

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle. Université Montpellier-II UFR des Sciences - Département Informatique - Licence Informatique UE GLIN302 - Programmation Applicative et Récursive Cours No 3 : Identificateurs, Fonctions, Premières Structures

Plus en détail

Compression de Données - Algorithme de Huffman Document de Conception

Compression de Données - Algorithme de Huffman Document de Conception ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs

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

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION Classe de terminale de la série Sciences et Technologie du Management et de la Gestion Préambule Présentation Les technologies de l information

Plus en détail

Arguments d un programme

Arguments d un programme Arguments d un programme L2 SPI, Bruno Jacob 1 Arguments Quand on appelle un programme dans un environnement UNIX ou MS- DOS, on compose une ligne de commandes de la forme : nom-du-programme argument1

Plus en détail

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail