Programmation 3. Fiche de TD 2

Documents pareils
Introduction au langage C

Java Licence Professionnelle CISII,

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

Programmation C++ (débutant)/instructions for, while et do...while


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)

Plan du cours. Historique du langage Nouveautés de Java 7

Conventions d écriture et outils de mise au point

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

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

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

Programme Compte bancaire (code)

Les arbres binaires de recherche

Programmer en JAVA. par Tama

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

TD3: tableaux avancées, première classe et chaînes

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Examen Médian - 1 heure 30

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

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

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

Algorithmique et Programmation, IMA

Claude Delannoy. 3 e édition C++

Corrigé des TD 1 à 5

INF 321 : mémento de la syntaxe de Java

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

TP, première séquence d exercices.

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

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Notions fondamentales du langage C# Version 1.0

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

ACTIVITÉ DE PROGRAMMATION

Corrigé des exercices sur les références

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

as Architecture des Systèmes d Information

Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 23/04/2007

Cours de Systèmes d Exploitation

Programmation en langage C

Le prototype de la fonction main()

Introduction à l algorithmique et à la programmation M1102 CM n 3

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

Java Licence Professionnelle CISII,

Initiation à la programmation en Python

Licence Sciences et Technologies Examen janvier 2010

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Le langage C. Séance n 4

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

INITIATION A LA PROGRAMMATION

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Cours Informatique Master STEP

Qualité du logiciel: Méthodes de test

Langage Éric Guérin 5 octobre 2010

1. Structure d'un programme FORTRAN 95

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Algorithmique et programmation : les bases (VBA) Corrigé

STAGE IREM 0- Premiers pas en Python

Algorithmique I. Algorithmique I p.1/??

V- Manipulations de nombres en binaire

OCL - Object Constraint Language

Programmation en Java IUT GEII (MC-II1) 1

1 Lecture de fichiers

I. Introduction aux fonctions : les fonctions standards

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Recherche dans un tableau

Projet de programmation (IK3) : TP n 1 Correction

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

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

Programmation Classique en langage C

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Utilisation d objets : String et ArrayList

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Principes des langages de programmation INF 321. Eric Goubault

Problèmes liés à la concurrence

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Organigramme / Algorigramme Dossier élève 1 SI

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

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

Initiation à l algorithmique

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

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

IUT ANNECY Département Mesures Physiques Cours d informatique Initiation au langage C

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

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

Langage Java. Classe de première SI

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

Résolution de systèmes linéaires par des méthodes directes

Programmation système I Les entrées/sorties

Architecture des ordinateurs

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

Introduction à MATLAB R

Les structures de données. Rajae El Ouazzani

Transcription:

Programmation L Informatique 01-01 Fiche de TD Notions abordées : macro instructions ; effets de bord ; structures conditionnelles et de boucle. Exercice 1. (Débogage conditionnel) 1. La macro assert, définie dans l en-tête assert.h, sert à vérifier si les arguments d une fonction respectent certains pré-requis. Par exemple, 1 double d i v i s i o n ( double x, double y ) { a s s e r t ( y!= 0 ) ; return x / y ; 4 } permet de stopper l exécution du programme si l argument y vaut 0. L intérêt d un tel procédé réside dans le fait que lorsque la condition testée par le assert est fausse, l endroit du code qui a provoqué l erreur peut être connu et le débogage du programme est ainsi facilité. Il existe cependant un problème : dans certains cas, les assert testent des conditions gourmandes en temps. Il est ainsi souvent préférable de pouvoir les désactiver pour gagner en efficacité. Définir une macro ASSERT qui, lorsqu elle est utilisée à la place de assert, peut être désactivée. Pour cela, définir une constante DEBOGUER. En fonction de sa valeur, 1 ou 0, la macro ASSERT délègue son argument à assert ou ne fait rien. Indication : utiliser les commandes #if, #else et #endif du préprocesseur.. Pour déboguer efficacement un programme, on souhaite afficher, pour chaque structure conditionnelle if, le nom du fichier.c qui le contient, sa ligne dans le code et si la condition testée est vérifiée ou non. Pour cela, définir une macro IF qui prend trois paramètres : une condition cond, un bloc d instructions bloc then et un bloc d instructions bloc else. Cette macro teste la condition cond et exécute bloc then si cond est vraie, et bloc else sinon. Elle affiche également que l on exécute une structure if, le fichier qui la contient, sa ligne dans le code et si c est bloc then qui est exécuté ou bien bloc else. Indication : utiliser les commandes LINE et FILE du préprocesseur qui permettent respectivement de connaître la ligne courante et le fichier courant. 1

Exercice. (Effets de bord) 1. Rappeler ce qu est une expression à effet de bord.. Dire si les expressions suivantes sont à effet de bord : 1 + (8 ) ; (b) 1 p r i n t f ( Bonjour \n ) ; 1 i n t a ; (d) 1 a = + (8 ) ; (e) 1 i f ( a == 17) { a ; } (f) 1 i f ( a == 16) { a ; }. Rappeler ce qu est une fonction à effet de bord. 4. Dire si les fonctions suivantes sont à effet de bord : 1 i n t somme( i n t tab, i n t n ) { i n t i, r e s ; 4 r e s = 0 ; for ( i = 0 ; i < n ; i ++) 6 r e s += tab [ i ] ; 7 return r e s 8 } (b) 1 void a f f i c h e r ( i n t tab, i n t n ) { i n t i ; 4 for ( i = 0 ; i < n ; i ++) p r i n t f ( %d, tab [ i ] ) ; 6 } 1 void echanger ( i n t x, i n t y ) { i n t tmp ; 4 tmp = x ; x = y ; 6 y = tmp ; 7 }

(d) 1 i n t nb appels = 0 ; i n t f c t 1 ( i n t n ) { 4 nb appels ++; return n + 1 ; 6 } (e) 1 i n t nb appels = 0 ; i n t f c t ( i n t n ) { 4 i f ( nb appels == 0) return 0 ; 6 e lse 7 return n + 1 ; 8 }. Expliquer ce qu affiche le programme suivant et en quoi il n est pas recommandable. 4 i n t n ; 6 n = 0 ; 7 n = etrange (&n, etrange (&n, 1 0 ) ) ; 8 p r i n t f ( %d\n, n ) ; 9 10 return 0 ; 11 } 1 1 i n t etrange ( i n t n, i n t m) { 14 n += m; 1 return n + 1 ; 16 } Exercice. (Structures conditionnelles) 1. Rappeler ce qu est un bloc.. Rappeler quelles sont les structures conditionnelles et expliquer leur utilité.. On suppose définies trois fonctions 1 i n t f ( ) ; i n t g ( ) ; i n t h ( ) ;

qui retournent chacune 0 ou 1 en fonction du résultat d un test qu elles réalisent. On souhaite afficher un caractère en fonction des résultats obtenus, conformément au tableau suivant : f g h Caractère 0 0 0 A 0 0 1 B 0 1 0 C 0 1 1 D 1 0 0 E 1 0 1 F 1 1 0 G 1 1 1 H Écrire un programme qui répond à ce problème avec les contraintes suivantes : utiliser des structures conditionnelles if ; il est interdit d utiliser des variables ; toute exécution du programme appelle exactement une fois chacune des fonctions f, g et h. 4. Reprendre la question précédente avec les contraintes suivantes : utiliser une structure conditionnelle switch ; utiliser au plus une variable de type int ; toute exécution du programme appelle exactement une fois chacune des fonctions f, g et h. Indication : utiliser des masques de bits.. Donner et expliquer la sortie produite par les programmes suivants : 4 i n t i ; 6 i = ; 7 switch ( i ) { 8 case 1 : p r i n t f ( 1 ) ; 9 case : p r i n t f ( ) ; 10 case : p r i n t f ( ) ; 11 case 4 : p r i n t f ( 4 ) ; 1 default : p r i n t f ( d ) ; 1 } 14 1 return 0 ; 16 } (b) 4

4 i n t i ; 6 i = ; 7 switch ( i ) { 8 case 1 : p r i n t f ( 1 ) ; 9 case : p r i n t f ( ) ; 10 case : p r i n t f ( ) ; 11 case 4 : p r i n t f ( 4 ) ; 1 default : p r i n t f ( d ) ; 1 case : p r i n t f ( ) ; break ; 14 case 6 : p r i n t f ( 6 ) ; 1 } 16 17 return 0 ; 18 } 4 i n t i ; 6 i = ; 7 switch ( i ) { 8 case 1 : p r i n t f ( 1 ) ; 9 case : p r i n t f ( ) ; 10 case : p r i n t f ( ) ; 11 case 4 : p r i n t f ( 4 ) ; 1 default : p r i n t f ( d ) ; 1 case : p r i n t f ( ) ; break ; 14 case 6 : p r i n t f ( 6 ) ; 1 case : p r i n t f ( ) ; 16 } 17 18 return 0 ; 19 } 6. Rappeler quelles sont les structures de boucle et expliquer leur utilité. 7. Expliquer dans quelles circonstances il est préférable d utiliser une boucle for plutôt qu une boucle while et réciproquement. 8. Écrire, en utilisant judicieusement des boucles for, while ou encore do while, les fonctions : 1 void a f f i c h e r t r i a n g l e 1 ( i n t n ) ;

(b) qui produit la sortie suivante (donnée ici dans le cas n = 4) : * * * * * * * * * * 1 void a f f i c h e r t r i a n g l e ( i n t n ) ; qui produit la sortie suivante (donnée ici dans le cas n = 4) : 1 void a f f i c h e r d a m i e r ( i n t n ) ; (d) * - - - * * - - * * * - * * * * qui produit la sortie suivante (donnée ici dans le cas n = 4) : * - * - - * - * * - * - - * - * 1 void a f f i c h e r t r i a n g l e ( i n t n ) ; qui produit la sortie suivante (donnée ici dans le cas n = 6) : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 9. La suite de Syracuse est une suite (S i ) i 0 d entiers dépendant d un paramètre n définie de la manière suivante : n si i = 0, S S i := i 1 si S i 1 est pair, S i 1 + 1 sinon. Une conjecture énonce que pour tout entier n 1, il existe un entier i 0 tel que S i = 1. Écrire un programme qui demande à l utilisateur d entrer au clavier un entier n et qui affiche les éléments de la suite (S i ) i 0 correspondante et s arrête dès qu un terme est égal à 1. 6