TD 3 : Structures de contrôles : instructions conditionnelles, boucles simples

Documents pareils
Programme Compte bancaire (code)

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

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

Java Licence Professionnelle CISII,


Recherche dans un tableau

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

Les arbres binaires de recherche

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

Algorithmique et Programmation, IMA

TP, première séquence d exercices.

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

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

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

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)

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

STAGE IREM 0- Premiers pas en Python

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

Solutions du chapitre 4

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

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

Claude Delannoy. 3 e édition C++

Initiation à la programmation en Python

Cours de Systèmes d Exploitation

Initiation à l algorithmique

TP : Gestion d une image au format PGM

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

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

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

Tp 1 correction. Structures de données (IF2)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

TP 1. Prise en main du langage Python

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

Algorithmique et programmation : les bases (VBA) Corrigé

Projet de programmation (IK3) : TP n 1 Correction

Premiers Pas en Programmation Objet : les Classes et les Objets

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours d Algorithmique et de Langage C v 3.0

Examen Médian - 1 heure 30

Introduction au pricing d option en finance

Notions fondamentales du langage C# Version 1.0

Licence Sciences et Technologies Examen janvier 2010

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Plateforme PAYZEN. Définition de Web-services

Corrigé des exercices sur les références

Cours d algorithmique pour la classe de 2nde

1 Recherche en table par balayage

Corrigés des premiers exercices sur les classes

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

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

INF 321 : mémento de la syntaxe de Java

Informatique III: Programmation en C++

Utilisation d objets : String et ArrayList

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

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

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

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

a) b)

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Conventions d écriture et outils de mise au point

Programmer en JAVA. par Tama

Organigramme / Algorigramme Dossier élève 1 SI

Le langage C. Séance n 4

Corrigé des TD 1 à 5

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

CHAPITRE V. Recherche et tri

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

1 Lecture de fichiers

TP3 : Manipulation et implantation de systèmes de fichiers 1

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

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

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

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

PROGRAMMER EN MQL4. Apprenez à automatiser vos stratégies sur MetaTrader 4

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

1. Structure d'un programme FORTRAN 95

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

Programmation avec des objets : Cours 7. Menu du jour

Analyse de sécurité de logiciels système par typage statique

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Les structures de données. Rajae El Ouazzani

Canevas théoriques du projet sur le poker Partie A

Introduction à la programmation concurrente

GUIDE ISAN: 7 Création d un ISAN In-Dev 1

Algorithmique I. Algorithmique I p.1/??

TP1 : Initiation à Java et Eclipse

ACTIVITÉ DE PROGRAMMATION

Définition des Webservices Ordre de paiement par . Version 1.0

Découverte de Python

4. Groupement d objets

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

IRL : Simulation distribuée pour les systèmes embarqués

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

Chapitre 2 Devine mon nombre!

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

DM 1 : Montre Autoquartz ETA

I. Introduction aux fonctions : les fonctions standards

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Transcription:

Licence MPI, Semestre 1, Introduction à l informatique (Info 111) Année 2018 2019 TD 3 : Structures de contrôles : instructions conditionnelles, boucles simples Dans les exercices suivants, vous préciserez le nom, l entrée et la sortie de vos programmes. Par exemple, pour un programme calculant le maximum de deux nombres, vous écrirez : // Programme maximum // Entrée: deux entiers a et b de type int // Sortie: le maximum de a et de b, stocké dans la variable max int max; if ( a >= b ) { max = a; max = b; Si vous vous sentez à l aise, mettez votre programme sous la forme d une fonction : int maximum(int a, int b) { if ( a >= b ) { return a; return b; Exercice 1. Instructions conditionnelles : if Écrire un programme qui prend en entrée l âge d une personne (un entier donc) et dont la sortie est true si elle est majeure et false sinon. Modifier votre programme pour que la la sortie soit une chaîne de caractères (type string) contenant le tarif SNCF appliqué à cette personne : "enfant" (moins de 11 ans), "jeune" (12-27 ans), "senior" (60 ans ou plus) ou "plein tarif" sinon. Solution naïve : // Entrée: un entier age // Sortie: un booléen stocké dans la variable majeur, qui vaut // true si on est majeur, false sinon bool majeur; if (age >= 18) { majeur = true; majeur = false; Mieux : bool majeur = age >= 18;

2 TD 3 : STRUCTURES DE CONTRÔLES : INSTRUCTIONS CONDITIONNELLES, BOUCLES SIMPLES Exercice 2 (À faire chez vous). Le magasin Honeydukes est ouvert de 10h à 12h et de 14h à 19h. Écrire un programme qui prend en entrée l heure sous forme d un entier et dont la sortie est true si le magasin est ouvert et false sinon. Si ce n est pas déjà le cas, modifier votre programme pour qu il y ait au plus un if. (3) Si ce n est pas déjà le cas, modifier votre programme pour qu il n y ait pas de if. Indication : remarquer que l expression booléenne qui sert de condition au if a déjà la valeur recherchée (voir aussi le cours : «Erreurs classiques avec les conditionnelles»). bool ouvert(int heure) { if ((heure >= 10 and heure <= 12) or (heure >= 14 and heure <= 19)) { return true; return false; Ce qui s écrit, de manière beaucoup plus rapide et plus simple : bool est_ouvert(int heure) { return (heure >= 10 and heure <= 12) or (heure >= 14 and heure <= 19); Exercice 3 (Programme mystère). Instructions itératives : boucle while Exécuter pas à pas le fragment de programme suivant pour a = 3 et b = 11 : while ( b >= a ) { b = b - a; Pour a et b entiers positifs quelconques, quelle est la valeur de b après la boucle? Exercice 4 (logarithme entier en base 2). Écrire un programme dont l entrée est un entier positif n et qui calcule le plus petit i de la forme 2 k tel que n i. Indication : partir de i=1 et le multiplier par 2 tant que nécessaire. Modifier votre programme pour que la sortie soit k tel que i = 2 k (où i est l entier défini à la question précédente). Instructions itératives avec compteur : boucles while et for Exercice 5. On rappelle les exemples de programmes vus en cours pour afficher les nombres de 1 à 10 avec respectivement une boucle while et une boucle for : int i = 1; while ( i <= 10 ) { i = i + 1; // Affiche la valeur de i

TD 3 : STRUCTURES DE CONTRÔLES : INSTRUCTIONS CONDITIONNELLES, BOUCLES SIMPLES 3 for ( int i = 1; i <= 10; i = i + 1 ) { // Affiche la valeur de i Dans chacun de ces deux programmes, entourer la déclaration du compteur, l initialisation, la condition et l incrémentation. Adapter le premier exemple pour affiche les nombres pairs inférieurs ou égaux à 10, en commençant par 0. De même avec le deuxième exemple. (3) Même chose pour afficher les nombres de 10 à 1 ; (4) Même chose pour afficher les nombres entiers de carré inférieur à 10 ; (5) Même chose pour calculer la valeur de la somme 1 2 + 2 2 + + 10 2. int i = 0; while (i <= 10) { i = i + 2; (3) for (int j = 0; j <= 10; j = j + 2) { cout << j << endl; int i = 10; while (i >= 0) { i = i - 1; (4) for (int j = 10; j >= 0; j--) { cout << j << endl; int i = 0; while (i*i <= 10) { i++; (5) for (int j = 0; j*j <= 10; j++) { cout << j << endl; int accumulateur = 0; int compteur = 1; while ( compteur <= n ) { accumulateur = accumulateur + compteur * compteur;

4 TD 3 : STRUCTURES DE CONTRÔLES : INSTRUCTIONS CONDITIONNELLES, BOUCLES SIMPLES compteur++; À votre avis, dans chacun des cas ci-dessus, laquelle des deux formes est la plus naturelle? Exercice 6 (Nombres premiers). (3) Pour aller plus loin Écrire une fonction qui prend en argument (entrée) un entier n et teste si n est un nombre premier (c est-à-dire renvoie true si n est premier et false sinon). Écrire une fonction qui prend en argument un entier n et affiche tous les nombres premiers entre 1 et n. Écrire une fonction qui affiche les n premiers nombres premiers. bool premier(int n) { if (n == 1) return false ; for (int i = 2; i < n; i++) if (n % i == 0 ) return false; return true ; void nombres_premiers(int n) { for (int i = 2 ; i <= n ; i++) if (premier(i)) cout << i << " " ; void premiers_nombres_premiers(int n) { int compteur = 0 ; int i = 2 ; while (compteur < n) { if (premier(i)) { cout << i << " " ; compteur++ ; i++ ; Exercice 7 (Dates). Écrire une fonction qui prend en entrée une date sous la forme de trois entiers jour / mois / année, et teste si c est une date valide. Pour l instant, on ignore les années bissextiles. Par exemple : date_valide(28, 5, 1973) renvoie true date_valide(31, 2, 2015) renvoie false

TD 3 : STRUCTURES DE CONTRÔLES : INSTRUCTIONS CONDITIONNELLES, BOUCLES SIMPLES 5 int main() { int j, m, a; bool ok; cout << "Entrez une date: "; cin >> j >> m >> a; if (m < 12) if ((m == 1) or (m == 3) or (m == 5) or (m == 7) or (m == 8) or (m == (m == 12)) ok = (j <= 31); if (m!= 2) ok = (j <= 30); ok = (j <= 28); ok = false; cout << "La date " << j << " / " << m << " / " << a; if (ok) cout << " est valide"; cout << " n est pas valide"; cout << endl; return 0; Écrire une fonction qui prend en argument une date valide sous la forme de trois entiers et affiche la date du lendemain. Par exemple : jour_suivant(18, 12, 2017) affiche Le jour suivant est le 19 12 2018. void jour_suivant (int jour, int mois, int annee) { if (jour < 28 or (jour < 31 and ((mois == 3) or (mois == 5) or (mois == 7 (mois == 8) or (mois == 10) or (mois == 12))) or (jour < 30 and ((mois == 1) or (mois == 4) or (mois == 6) or (mois (mois == 11)))) { cout << "Le jour suivant est le " << jour + 1 << " / " << mois << " / " << annee << endl; if (mois < 12) { cout << "Le jour suivant est le " << 1 << " / " << mois + 1 << " / " << annee; cout << "Le jour suivant est le 1 / 1 / " << annee + 1; (3) Reprendre la question 1 en considérant les années bissextiles (une année est bissextile si elle est divisible par 4, mais pas 100 sauf si elle est divisible par 400). int j, m, a; bool ok; cout << "Entrez une date: "; cin >> j >> m >> a; if (m < 12) if ((m == 1) or (m == 3) or (m == 5) or (m == 7) or (m == 8) or (m == (m == 12)) ok = (j <= 31);

6 TD 3 : STRUCTURES DE CONTRÔLES : INSTRUCTIONS CONDITIONNELLES, BOUCLES SIMPLES (4) if (m!= 2) ok = (j <= 30); if (a % 400 == 0 or (a % 4 == 0 and a % 100!= 0)) ok = (j <= 29); ok = (j <= 28); ok = false; cout << "La date " << j << " / " << m << " / " << a; if (ok) cout << " est valide"; cout << " n est pas valide"; cout << endl; Écrire une fonction qui prend en argument une date valide et renvoie le jour de la semaine de cette date. (5) Projet Euler- 19 : Combien de 1 er du mois ont été des dimanches au XX e siècle?