Apprendre à programmer

Save this PDF as:
 WORD  PNG  TXT  JPG

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

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

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

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

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

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

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

Prendre un bon départ

Prendre un bon départ Chapitre A Prendre un bon départ 1 - Avant-propos Un ordinateur sait très bien faire deux choses : Calculer, d oùle nomcomputer en anglais que l on pourrait traduire par calculateur. Placer des données

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

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

Fonctions et procédures. Procedures: déclaration et appel

Fonctions et procédures. Procedures: déclaration et appel Cours 5 : fonctions, procédures, passage des paramètres 1 Fonctions et procédures Idée : capitaliser sur le code déjà écrit pour introduire des nouvelles commandes et opérations. On souhaite donner un

Plus en détail

Introduction au Logiciel GAMS (General Algebraic Modeling System)

Introduction au Logiciel GAMS (General Algebraic Modeling System) Introduction au Logiciel GAMS (General Algebraic Modeling System) J.-M. Reneaume SOMMAIRE A. INTRODUCTION... 1 B. DESCRIPTION DU MODELE... 3 1. Structure générale du modèle... 3 a) Structure du fichier

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

Mathématiques pour. l informatique

Mathématiques pour. l informatique Xavier Chanet Patrick Vert Mathématiques pour l informatique Pour le BTS SIO Toutes les marques citées dans cet ouvrage sont des marques déposées par leurs propriétaires respectifs. Illustration de couverture

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

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

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

Analyse de la complexité algorithmique (1)

Analyse de la complexité algorithmique (1) Analyse de la complexité algorithmique (1) L analyse de la complexité telle que nous l avons vue jusqu à présent nous a essentiellement servi à déterminer si un problème est ou non facile (i.e. soluble

Plus en détail

INTRODUCTION À L ALGORITHMIQUE

INTRODUCTION À L ALGORITHMIQUE INTRODUCTION À L ALGORITHMIQUE Table des matières 1. Introduction 1 2. Les éléments de base d un algorithme simple 2 2.1. Préparation du traitement 2 2.2. Le traitement 2 2.3. La sortie des résultats 2

Plus en détail

Objets Avancées Semestre 3 Année 2015-2016. Projet

Objets Avancées Semestre 3 Année 2015-2016. Projet Conception et Programmation IUT d Aix-Marseille Dép. INFO Aix Objets Avancées Semestre 3 Année 2015-2016 Projet André Abramé - andre.abrame@univ-amu.fr Sophie Nabitz - sophie.nabitz@univ-avignon.fr Petru

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

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

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

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

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

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

Abstraction: introduction. Abstraction et liaison dans les langages de programmation. Abstraction: principe. Abstraction: terminologie. N.

Abstraction: introduction. Abstraction et liaison dans les langages de programmation. Abstraction: principe. Abstraction: terminologie. N. Abstraction et liaison dans les langages de programmation LIN2: Paradigmes de programmation N. Hameurlain Abstraction: introduction L'importance de l abstraction découle de sa capacité de cacher les détails

Plus en détail

1 Création de processus : primitive fork()

1 Création de processus : primitive fork() O r s a y Travaux Pratiques n o 2 : Synchronisation DUT Informatique 2010 / 2011 Nom(s) : Groupe : Date : Objectifs : rappels sur la création de processus par la primitive fork() et synchronisation de

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

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

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

Cours Info - 8. Fonctions & Modularité. D.Malka MPSI 2015-2016. D.Malka Cours Info - 8 MPSI 2015-2016 1 / 40

Cours Info - 8. Fonctions & Modularité. D.Malka MPSI 2015-2016. D.Malka Cours Info - 8 MPSI 2015-2016 1 / 40 Cours Info - 8 Fonctions & Modularité D.Malka MPSI 2015-2016 D.Malka Cours Info - 8 MPSI 2015-2016 1 / 40 Sommaire Sommaire 1 Intérêt des fonctions 2 Déclaration d une fonction 3 Appel d une fonction 4

Plus en détail

MÉRÉ Aurélien FIIFO1. Pathfinder

MÉRÉ Aurélien FIIFO1. Pathfinder MÉRÉ Aurélien FIIFO1 AMC Pathfinder 1 Sommaire Préambule... 3 Modélisation de l espace... 4 Modélisation des cases δ, α... 4 Interface en mode texte... 5 Modélisation du robot... 8 1 ) Le type Robot...

Plus en détail

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 2 : Communication

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 2 : Communication iut ORSAY DUT Informatique Département Informatique 2009 / 2010 Travaux Pratiques n o 2 : Communication Nom(s) : Groupe : Date : Objectifs : rappels sur la création de processus par la primitive fork()

Plus en détail

LES PROCÉDURES ET LES FONCTIONS

LES PROCÉDURES ET LES FONCTIONS LES PROCÉDURES ET LES FONCTIONS 165 LES PROCÉDURES ET LES FONCTIONS CHAPITRE 7 OBJECTIFS EXPOSER LE PRINCIPE DE LA DÉCOMPOSITION DES PROGRAMMES DANS LE LANGAGE PASCAL. PRÉCISER LE RÔLE ET L UTILITÉ DES

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

Excel avancé. Frédéric Gava (MCF) gava@univ-paris12.fr

Excel avancé. Frédéric Gava (MCF) gava@univ-paris12.fr Excel avancé Frédéric Gava (MCF) gava@univ-paris12.fr LACL, bâtiment P2 du CMC, bureau 221 Université de Paris XII Val-de-Marne 61 avenue du Général de Gaulle 94010 Créteil cedex Rappels et compléments

Plus en détail

Créer des documents XML

Créer des documents XML 1 Créer des documents XML La spécification XML définit comment écrire un document au format XML. XML n est pas un langage en lui-même mais, en revanche, un document XML est écrit dans un langage à balises

Plus en détail

Les tableaux (ou vecteurs) (1/3) Cours numéro 3: Programmation impérative LI213 Types et Structures de données. Les tableaux (3/3) Les tableaux (2/3)

Les tableaux (ou vecteurs) (1/3) Cours numéro 3: Programmation impérative LI213 Types et Structures de données. Les tableaux (3/3) Les tableaux (2/3) Les tableaux (ou vecteurs) (1/3) Le type tableau est une des réponses à la question : LI213 Types et Structures de données Licence d Informatique Université Paris 6 comment agréger un très grand nombre

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

Eléments de Programmation - Thème 9

Eléments de Programmation - Thème 9 Eléments de Programmation - Thème 9 Equipe enseignants 1i-001 UPMC Licence 1 2014/2015 Table des matières Exercice 1 : Différence symétrique 1 Exercice 2 : Traduction 2 Exercice 3 : Magasin en ligne 4

Plus en détail

module SIN21 Rendre un syste me communicant Analyse UML et algorithmie 1 Modification du cahier des charges

module SIN21 Rendre un syste me communicant Analyse UML et algorithmie 1 Modification du cahier des charges Module SIN221 Rendre un syste me communicant Analyse UML et algorithmie Objectifs : Modifier des diagrammes UML suite à la modification du cahier des charges. Caractériser et valider une classe en C++.

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

Obert Hervé Stumpf Mathieu Licence 3 RIA. Réseaux & Protocoles. Client pair-à-pair. Projet L3 RIA 2005-2006 Sommaire.

Obert Hervé Stumpf Mathieu Licence 3 RIA. Réseaux & Protocoles. Client pair-à-pair. Projet L3 RIA 2005-2006 Sommaire. Obert Hervé Stumpf Mathieu Licence 3 RIA Réseaux & Protocoles Client pair-à-pair Projet L3 RIA 2005-2006 Sommaire Page 1 sur 10 Introduction - Présentation du projet 3 Fonctionnement coté graine 4 Fonctionnement

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

Luc PONSONNET Lycée Bonaparte 83000 Toulon Académie de Nice TRAAM 2013-2014 Page 1

Luc PONSONNET Lycée Bonaparte 83000 Toulon Académie de Nice TRAAM 2013-2014 Page 1 Luc PONSONNET - Académie de Nice - TraAM 2013-2014 " L ENORME SAUT DE THIERRY NEUVILLE AU RALLYE DE FINLANDE" Niveau de la classe : première scientifique Testée avec une classe de première scientifique

Plus en détail

Ioannis Parissis UFR IMA Laboratoire LIG. Test logiciel

Ioannis Parissis UFR IMA Laboratoire LIG. Test logiciel Test logiciel Objectif et plan du du cours Présenter les concepts de base sur le test logiciel Introduire des techniques simples pour construire des tests A partir de la spécification informelle du programme

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

Introduction au langage

Introduction au langage Introduction au langage Un langage de programmation : de haut niveau interprété orienté objet si on le souhaite rapide à écrire et proche du pseudo-code simple tant qu on fait des choses simples Un programme

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

INF 201 - TP 2 - Programmation C T. Grandpierre 12/2008

INF 201 - TP 2 - Programmation C T. Grandpierre 12/2008 INF 201 - TP 2 - Programmation C T. Grandpierre 12/2008 Ce qu il faut rendre : A la fin du TP il faudra archiver et compresser l ensemble de votre travail (y compris le rapport avec vos noms) avec la commande

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

Programmation trame GPS

Programmation trame GPS Lycée polyvalent DIDEROT 61, rue David d Angers 75019 PARIS http://www.diderot.org Département IRIS TP Programmation trame GPS Manipulation de trame GPS NMEA Auteur Version - Date Nom du fichier G.VALET

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

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

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 2 : JUnit

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 2 : JUnit iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 2 : JUnit Nom(s) : Groupe : Date : Objectifs : Apprendre à vérifier une implantation à l aide de tests unitaires sous

Plus en détail

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Arts & Métiers Filière PSI

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Arts & Métiers Filière PSI Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Arts & Métiers Filière PSI Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes

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

Initialisation des attributs (1)

Initialisation des attributs (1) Initialisation des attributs (1) Initialiser les attributs d une instance en leur affectant individuellement une valeur, après l instanciation, n est pas une technique satisfaisante: a) elle est fastidieuse,

Plus en détail

Cours Systemes d exploitation

Cours Systemes d exploitation Université de Kairouan Institut Supérieur des Siences Appliquées et de Technologie Cours Conçu Spécialement Aux Etudiants: De Master Pilotage et Réseaux Industriels Cours Systemes d exploitation Noureddine

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

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

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

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

TP Qt : Prise en main

TP Qt : Prise en main Université de Strasbourg UFR de Mathématiques et d Informatique Département d Informatique Licence 3 d Informatique IHM Année 2009/2010 TP Qt : Prise en main Objectif Le but de ce tp est une prise en main

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

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

Compteurs, variables et afficheurs dans Automgen

Compteurs, variables et afficheurs dans Automgen Section : S Option : Sciences de l ingénieur Discipline : Génie Électrique Compteurs, variables et afficheurs dans Automgen Domaine d application : Traitement programmé de l information Type de document

Plus en détail

Plan. Conseils de Programmation. Types et Classes. Exemple: fraction. Méthodes. Variables locales:

Plan. Conseils de Programmation. Types et Classes. Exemple: fraction. Méthodes. Variables locales: Plan Conseils de Programmation Joël Quinqueton Dépt MIAp, UFR IV UPV Université Montpellier III Types et classes Un exemple de classe Les erreurs en Java L héritage en Java Types primitifs Tableaux Classes:

Plus en détail

De l art d écrire des programmes qui résolvent des problèmes que l on ne sait pas résoudre soi-même!

De l art d écrire des programmes qui résolvent des problèmes que l on ne sait pas résoudre soi-même! Chapitre 1 La récursivité De l art d écrire des programmes qui résolvent des problèmes que l on ne sait pas résoudre soi-même! 1.1 Définition et types de récursivité Définition 1 (Définition récursive,

Plus en détail

Arnaud DABOUIS Vincent HURBOURQUE IMAC 1. PROJET C : Traitement d images

Arnaud DABOUIS Vincent HURBOURQUE IMAC 1. PROJET C : Traitement d images PROJET C : Traitement d images 1 SOMMAIRE 1) Schéma et structure a) Schéma de la structure b) Les structures utilisées La structure image La structure calque La structure LUT La structure Historique et

Plus en détail

Algèbre de Boole. Chapitre. 2.1 Notions théoriques

Algèbre de Boole. Chapitre. 2.1 Notions théoriques Chapitre 2 Algèbre de Boole G oerge Boole (1815-1864), mathématicien autodidacte anglais, a développé une algèbre permettant de manipuler les propositions logiques au moyen d équations mathématiques où

Plus en détail

Codage - Cryptographie

Codage - Cryptographie Codage - Cryptographie Emmanuel Jeandel (emmanuel.jeandel@lif.univ-mrs.fr) http://www.lif.univ-mrs.fr/ ejeandel/enseignement.html 28 mars 2011 1 Partages de Secret Q 1) Trouver un protocole pour que Alice

Plus en détail

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 2013-2014 (1ere session) durée 3h Tous documents et calculatrices autorisés. Répondez aux questions sur une copie séparée Le sujet comporte 12 pages

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

Chap. 2. Langages et automates

Chap. 2. Langages et automates Chapitre 2. Langages et automates 1. Quelques définitions et description d un langage. 2. Les expressions régulières. 3. Les automates fini déterministes et non-déterministes. 4. Construction automatique

Plus en détail

Fiche PanaMaths Introduction au tracé de courbes avec Scilab

Fiche PanaMaths Introduction au tracé de courbes avec Scilab Fiche PanaMaths Introduction au tracé de courbes avec Scilab Introduction Ce document présuppose un certain niveau de connaissance du logiciel Scilab de la part du lecteur (de la lectrice) : calcul matriciel,

Plus en détail

Remarques sur le premier contrôle de TD :

Remarques sur le premier contrôle de TD : Remarques sur le premier contrôle de TD : Démêlons les confusions en tous genres... Licence 1 MASS semestre 2, 2006/2007 La première remarque est qu il faut apprendre le cours, faire les exercices et poser

Plus en détail

CADEPA. A - Arborescence générale : organisation projet/application.

CADEPA. A - Arborescence générale : organisation projet/application. Document d accompagnement pour le logiciel... CADEPA Le logiciel CADEPA 1 permet la réalisation complète d un projet d automatisme de l écriture au test jusqu au téléchargement du programme vers l automate.

Plus en détail

Et également retour sur le TP2. Prog Web Server - 2015-2016

Et également retour sur le TP2. Prog Web Server - 2015-2016 Et également retour sur le TP2 C'est un moyen simple de passer en revue un tableau Deux syntaxes À chaque itération, la valeur de l'élément courant est assignée à $value et le pointeur interne à la liste

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

Atelier B MDELTA. Manuel Utilisateur. version 2.0

Atelier B MDELTA. Manuel Utilisateur. version 2.0 Atelier B MDELTA Manuel Utilisateur version 2.0 ATELIER B MDELTA Manuel Utilisateur version 2.0 Document établi par CLEARSY. Ce document est la propriété de CLEARSY et ne doit pas être copié, reproduit,

Plus en détail

Analyse lexicale 2014-2015

Analyse lexicale 2014-2015 Analyse (lexicale, syntaxique) L3 MIAGE Analyse lexicale Université de Lille, France 2014-2015 1 Rappels Rôle de l analyse lexicale Outils 2 Mise en oeuvre Lexème Vers l analyseur syntaxique Codage d un

Plus en détail

Chapitre 1. Programmation en Python 2ème année. 23 septembre 2014. E-mail mlahby@gmail.com

Chapitre 1. Programmation en Python 2ème année. 23 septembre 2014. E-mail mlahby@gmail.com Chapitre 1 La récursivité Programmation en Python 2ème année E-mail mlahby@gmailcom 23 septembre 2014 Programmation en Python 2ème année CPGE GSR 2014-2015 1/ 24 Plan 1 Rappel 2 Récurrence en mathématique

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

La programmation modulaire et les fonctions

La programmation modulaire et les fonctions Chapitre 6 La programmation modulaire et les fonctions Comme tous les langages, C permet de découper un programme en plusieurs parties nommées souvent «modules». Cette programmation dite modulaire se justifie

Plus en détail

Informatique 2014-2015 MP/MP*/PC/PC*/PSI* DS1 Samedi 22 novembre. Exercice N 1 A la découverte de la notation polonaise inversée

Informatique 2014-2015 MP/MP*/PC/PC*/PSI* DS1 Samedi 22 novembre. Exercice N 1 A la découverte de la notation polonaise inversée Le sujet comporte un total de 3 exercices indépendants qui peuvent être traités dans l ordre de votre choix. Exercice N 1 A la découverte de la notation polonaise inversée Introduction La notation polonaise

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

CAPTURE DES MAILS PROFESSIONNELS

CAPTURE DES MAILS PROFESSIONNELS CAPTURE DES MAILS PROFESSIONNELS 2 Téléchargement 3 Installation 8 Prise en main rapide 11 Lancement Recherche 14 Gestion des fichiers 15 Recherche des adresses mails 16 Importation d un fichier d adresses

Plus en détail

INTRODUCTION À OMP PROBLÈME D USINAGE 1 Préambule

INTRODUCTION À OMP PROBLÈME D USINAGE 1 Préambule 1 Préambule 1 sur 7 Le logiciel OMP est un produit de OM Partners. Le version mise à disposition est la version 9.27. OMP comporte : un compilateur de modèles et de données ; un optimiseur ; un générateur

Plus en détail

Allocation dynamique en c++

Allocation dynamique en c++ Allocation dynamique en c++ *tableau; tableau * tableau = tableau = new [ no_max ]; tableau = new * [ no_max ] tableau[i] = new int[ 5 ]; tableau tableau[i] = new int[5]; * tableau[0] int int int int int

Plus en détail

U2 MATHÉMATIQUES POUR L INFORMATIQUE

U2 MATHÉMATIQUES POUR L INFORMATIQUE Brevet de Technicien Supérieur SERVICES INFORMATIQUES AUX ORGANISATIONS U2 MATHÉMATIQUES POUR L INFORMATIQUE U21 MATHÉMATIQUES Cette unité d'enseignement se décline en six modules spécifiques : Arithmétique

Plus en détail

Les sous-programmes : exercices résolus en C Corrigé

Les sous-programmes : exercices résolus en C Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Exercices résolus en C, Semaine 3 avril mai 2013 Corrigé Objectifs Savoir écrire des sous-programmes ; Comprendre les modes de passage de paramètres ; Faire la

Plus en détail

Web & XML. Evaluation 1/2. ENSEIRB Programmation Web / XML. Version 1.00 du 19 décembre 2012 Etat : Travail SOPRA GROUP. Page 1/9

Web & XML. Evaluation 1/2. ENSEIRB Programmation Web / XML. Version 1.00 du 19 décembre 2012 Etat : Travail SOPRA GROUP. Page 1/9 Web & XML ENSEIRB Programmation Web / XML Evaluation 1/2 Version 1.00 du 19 décembre 2012 Etat : Travail SOPRA GROUP Page 1/9 Historique : Version Date Origine de la mise à jour Rédigée par Validée par

Plus en détail

IN 101 - Cours 05. 7 octobre 2011. Un problème concret Recherche de collisions

IN 101 - Cours 05. 7 octobre 2011. Un problème concret Recherche de collisions Un problème concret Recherche de collisions IN 101 - Cours 05 7 octobre 2011 Le paradoxe des anniversaires dit que 365 élèves sont suffisants (en moyenne) pour avoir une collision d anniversaire, deux

Plus en détail

Travaux pratiques MPI Liste des exercices

Travaux pratiques MPI Liste des exercices Travaux pratiques MPI Liste des exercices 1 T.P. MPI Exercice 1 : Environnement MPI... 2 2 T.P. MPI Exercice 2 : Ping-pong... 3 3 T.P. MPI Exercice 3 : Communications collectives et réductions... 5 4 T.P.

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

Machines de Turing. Chapitre 14 14.1. DÉFINITION ET FONCTIONNEMENT

Machines de Turing. Chapitre 14 14.1. DÉFINITION ET FONCTIONNEMENT Chapitre 4 Machines de Turing Dans ce chapitre on présente un modèle de calcul introduit dans les années 3 par Turing, les machines de Turing. Ces machines formalisent la notion de calculabilité. La thèse

Plus en détail

CAPTURE DES PROFESSIONNELS

CAPTURE DES PROFESSIONNELS CAPTURE DES PROFESSIONNELS CAPTURE DES PROFESSIONNELS 2 Téléchargement 3 Installation 8 Prise en main rapide 10 Lancement Recherche 14 Gestion des fichiers 23 Compare et Sépare 25 Fichiers annexes 27 Le

Plus en détail

FILIÈRE MP - OPTION SCIENCES INDUSTRIELLES

FILIÈRE MP - OPTION SCIENCES INDUSTRIELLES ÉCOLE POLYTECHNIQUE ÉCOLE SUPÉRIEURE DE PHYSIQUE ETCHIMIEINDUSTRIELLES CONCOURS 2002 FILIÈRE MP - OPTION SCIENCES INDUSTRIELLES FILIÈRE PC ÉPREUVE FACULTATIVE D INFORMATIQUE (Durée : 2 heures) L utilisation

Plus en détail

GUIDE D UTILISATION PLATE-FORME WEB EN FORME AVEC MYG ET GYM

GUIDE D UTILISATION PLATE-FORME WEB EN FORME AVEC MYG ET GYM GUIDE D UTILISATION PLATE-FORME WEB EN FORME AVEC MYG ET GYM Octobre 2013 Table des matières 1. Présentation générale... 3 2. Accès à la section privilégiée... 4 2.1 Votre code d accès et votre mot de

Plus en détail