On désire donner une définition syntaxique du langage constitué des mots suivants : acb, aacccccccbb, aaabbb, aaaaaaccbbbbbb,

Documents pareils
Examen Médian - 1 heure 30

Corrigé des TD 1 à 5

Enseignement secondaire technique

Correction TD algorithmique

Cours Informatique Master STEP

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)

Organigramme / Algorigramme Dossier élève 1 SI

Algorithmes et programmation en Pascal. Cours

1. Structure d'un programme FORTRAN 95

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Programmation structurée et algorithmes de base en Pascal

Algorithmique & programmation

Cours d algorithmique pour la classe de 2nde

Recherche dans un tableau

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

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

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

FORD C-MAX + FORD GRAND C-MAX CMAX_Main_Cover_2013_V3.indd /08/ :12

Initiation à la programmation en Python

CORRECTION EXERCICES ALGORITHME 1

Propagation sur réseau statique et dynamique

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

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

MINISTERE DE L ENSEIGNEMENT TECHNIQUE ET DE LA FORMATION PROFESSIONNELLE. (Pour l obtention du diplôme d analyste programmeur)

L ALGORITHMIQUE. Algorithme

Application 1- VBA : Test de comportements d'investissements

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

Les structures. Chapitre 3

Java Licence Professionnelle CISII,

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Algorithmique et programmation : les bases (VBA) Corrigé

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

Calcul Formel et Numérique, Partie I

Présentation du langage et premières fonctions

Logiciel Libre Cours 2 Fondements: Programmation

Algorithmique et Programmation, IMA

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

Compilation (INF 564)

0 si a=b. Si a^ et b^ sont deux éléments différents du même anneau, alors le résultat de

OCL - Object Constraint Language

Découverte de Python

Cours de Programmation 2

Suites numériques. Exercice 1 Pour chacune des suites suivantes, calculer u 1, u 2, u 3, u 10 et u 100 : Introduction : Intérêts simpleset composés.

TRIGONOMETRIE Algorithme : mesure principale

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Objets et Programmation. origine des langages orientés-objet

ACTIVITÉ DE PROGRAMMATION

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

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

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Cours d Informatique

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

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.

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

UML et les Bases de Données

La question est : dans 450 combien de fois 23. L opération est donc la division. Le diviseur. Le quotient

Programmer en JAVA. par Tama

Programme Compte bancaire (code)

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cours d Algorithmique et de Langage C v 3.0

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

as Architecture des Systèmes d Information


Programmation sous Delphi

Problèmes liés à la concurrence

Cours d algorithmique BTS SIO première année. Nicolas FRANCOIS nicolas.francois@free.fr

Série TD 3. Exercice 4.1. Exercice 4.2 Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible! Exercice 4.3. Exercice 4.

EES : Engineering Equation Solver Fiche récapitulative - Marie-Sophie Cabot

1 Recherche en table par balayage

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

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

Notions fondamentales du langage C# Version 1.0

Algorithme. Table des matières

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

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

Programmation en Java IUT GEII (MC-II1) 1

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

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Langage Java. Classe de première SI

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Visual Basic for Applications

a et b étant deux nombres relatifs donnés, une fonction affine est une fonction qui a un nombre x associe le nombre ax + b

Puissances d un nombre relatif

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

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

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

TSTI 2D CH X : Exemples de lois à densité 1

Introduction à MATLAB R

Programmation en Caml pour Débutants

CHAPITRE 9. Codes source. 9.1 Insertion brute

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Programmation Classique en langage C

FRAIS DE VEHICULE 2012

Chapitre 2 Devine mon nombre!

Transcription:

Partie n 1 Problème n 1 (3 points) : Diagramme de Conway On désire donner une définition syntaxique du langage constitué des mots suivants : acb, aacccccccbb, aaabbb, aaaaaaccbbbbbb, 1) Donner une formule pour définir ce langage. 2) Définir le diagramme de Conway associé. Solution : Problème n 2 (4 points) : Que Fait ce Programme? Vous disposez du programme ci-dessous. Ce programme respecte la syntaxe Pascal, mais il est mal présenté et les commentaires ont été oubliés. Vous devez retrouver l algorithme et donner des exemples d utilisation. PROGRAM que_fait_le_programme_suivant ; Var x, y, resultat, reste : integer; Begin Writeln('Donner la valeur de x'); Readln(x); Writeln('Donner la valeur de y'); Readln(y); Resultat:=1; While (y<>0) do Begin Reste := y mod 2; If (reste=0) then x:=x*x; y:=y div 2; else resultat:=resultat*x; y:=y-1; ; ; Writeln('Le résultat est =', resultat); readln. 1) Réécrire ce programme en respectant les règles d indentation du langage Pascal. 2) Exécuter le programme avec x=2 et y=4 et x=4 et y=3. Pour les deux applications numériques donner les valeurs de x, y, Resultat et Reste pour chaque itération. 3) Expliquer le calcule réalisé pas ce programme en fonction des variables d entrées. 4) Ajouter des commentaires dans ce programme.

Solution : Ce programme calcule resultat=x^y PROGRAM que fait le programme suivant ; Var x, y, resultat, reste : integer; Begin Writeln('Donner la valeur de x'); Readln(x); Writeln('Donner la valeur de y'); Readln(y); Resultat:=1; While (y<>0) do Reste := y mod 2; If (reste=0) then x:=x*x; y:=y div 2; else { Cas de y impair } resultat:=resultat*x; y:=y-1; ; ; Writeln('Le résultat est =', resultat); readln; readln; readln. Partie n 2 (7 points) : Structures alternatives 1) Jour du lemain : écrire un programme pascal qui demande à utilisateur d'entrer une date (JJ/MM/AAAA) et affiche le jour du lemain. Rappel : Soit une année A : Si A n'est pas divisible par 4, l'année n'est pas bissextile. Si A est divisible par 4, l année est bissextile sauf si A est divisible par 100 à moins que A ne soit divisible par 400.

Réponse : Program jour_du_lemain; var jour, mois, annee : integer; {données d'entrée} maxj : integer; {prra le nombre des jours d'un mois donné} jour_d, mois_d, annee_d : integer; {données de sortie} writeln('veuillez entrer une date, dans le format (jj mm aaaa)'); readln(jour,mois,annee); {calcul du jour maxi pour les mois} case mois of 1, 3, 5, 7, 8, 10, 12 : maxj := 31; 4, 6, 9, 11 : maxj := 30; 2 : if ((annee mod 4) = 0 )and( (annee mod 400 = 0 )or( annee mod 100 <> 0 ) ) then maxj := 29 else maxj := 28; ; {case of} {vérifie si on est dans la discontinuité -- fin de mois} if jour = maxj then if mois = 12 then jour_d := 1; mois_d := 1; annee_d := annee + 1; else jour_d := 1; mois_d := mois + 1; annee_d := annee; else {si pas dans la discontinuité, jour du lemain est juste "le jour d'après"} jour_d := jour + 1; mois_d := mois; annee_d := annee; ; {affichage des résultats} writeln('le jour du lemain est : ',jour_d,'/',mois_d,'/',annee_d); readln;{astuce sur Dev-Pascal pour garder la console ouverte pant qu'on lise les résultats}.

2) On veut calculer les dépenses relatives à l'utilisation d un scooter ou d une moto en vue de la déclaration d impôts sur les revenus 2012. Ces dépenses peuvent être évaluées par l'application d'un barème kilométrique annuellement publié par l'administration et donné dans le tableau ci-dessous (ou d représente la distance parcourue). Puissance Jusqu'à 3000 km De 3001 à 6000 km Au-delà de 6000 km administrative 1 ou 2 CV d x 0,318 (d x 00,080) + 714 d x 00199 3, 4 ou 5 CV d x 00,378 (d x 00,066) + 936 d x 00,222 Plus de 5 CV d x 00,489 (d x 00,063) + 1278 d x 00,276 Ecrire le programme qui demande à l utilisateur de rentrer la puissance administrative de son véhicule ainsi que le nombre de kilomètres parcourus durant l année 2012 avec ce même véhicule et affiche l évaluation des dépenses selon le calcul administratif. Solution : program frais_reelles; var cv : integer; d, frais : real; writeln('veuillez indiquer le nombre des quilomètres parcourus pant l''année'); readln(d); writeln('veuillez indiquer la puissance fiscal de votre véhicule'); readln(cv); writeln('le montant des frais s''élève à : '); if d <= 3000 then case cv of 1, 2 : writeln(d*0.318); 3, 4, 5 : writeln(d*0.378); otherwise writeln(d*0.489); else if (d > 3000) and (d <= 6000) then case cv of 1, 2 : writeln((d*0.080)+714); 3, 4, 5 : writeln((d*0.066)+936); otherwise writeln((d*0.063)+1278); else case cv of 1, 2 : writeln(d*0.199); 3, 4, 5 : writeln(d*0.222); otherwise writeln(d*0.276); ; readln;.

Partie n 3 (6 points) : Jeu de Nim Le jeu de Nim, popularisé dans un film des années soixante, admet différentes variantes. En voici la plus simple : on joue à deux joueurs. On dispose 17 allumettes sur une table. A tour de rôle, chaque joueur pr 1, 2 ou 3 allumettes. L un des joueurs commence, l autre réplique et ainsi de suite. Le perdant est celui qui est obligé de prre la dernière allumette. 1) Ecrire un programme en Pascal qui contrôle l exécution de ce jeu avec deux joueurs dont vous entrerez les noms. Le programme gère les allumettes et demande à chaque joueur ce qu il veut jouer. Ce programme doit en particulier s arrêter dès que l un des joueurs a perdu, auquel cas le vainqueur devra être proclamé, ou dès que l un des joueurs pr plus d allumettes qu il n est autorisé. Dans ce cas, un message d avertissement sera affiché. Program JEU_DE_NIM ; {------------------------------} var nom1, nom2 : string ; n, allu : integer ; writeln( entrez le nom du premier joueur ) ; readln(nom1) ; writeln( entrez le nom du premier joueur ) ; readln(nom2) ; allu := 17 ; repeat writeln(nom1, combien d allumettes prenez-vous? ) ; readln(n) ; if n>3 then writeln(nom2, vous avez gagné la partie ) else allu := allu n ; if allu = 0 then writeln(nom2, vous avez gagné la partie ) else writeln(nom2, combien d allumettes prenez-vous? ) ; readln(n) ;

if n>3 then writeln(nom1, vous avez gagné la partie ) else allu := allu n ; if allu=0 then writeln(nom1, vous avez gagné la partie ) ; ; until (allu = 0) or (n >3) ; writeln( game over ) ;. Remarque : à noter qu il existe une version plus concise, mais un petit peu plus technique, où un seul joueur est considéré à chaque itération. 2) Déterminez un principe qui assure la victoire à celui qui ne commence pas la partie (trouver l algorithme général ou la méthode pour que celui qui ne commence pas la partie gagne à tous les coups). le joueur qui joue en second gagne s il laisse à chaque fois un nombre entier d allumettes n de la forme n = 4k+1, avec k entier. En effet, ceci est toujours possible car le nombre de départ est précisément de cette forme. k diminuant à chaque itération, vira nécessairement le moment où k=0 : le premier joueur sera alors contraint de prre la dernière allumette restante.