InitProg Python par l exemple



Documents pareils
Les probabilités. Chapitre 18. Tester ses connaissances

Corrigé des TD 1 à 5

Cours Informatique Master STEP

1 Recherche en table par balayage

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

Chapitre 2 Devine mon nombre!

STAGE IREM 0- Premiers pas en Python

Probabilités Loi binomiale Exercices corrigés

Stopack : logiciel pour l entrepôt

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

Probabilités. I Petits rappels sur le vocabulaire des ensembles 2 I.1 Définitions... 2 I.2 Propriétés... 2

S initier aux probabilités simples «Un jeu de cartes inédit»

4. Exercices et corrigés

BONNE NOUVELLE, À PARTIR DE DEMAIN 15 AOÛT 2014, l inscription en ligne sera disponible à partir du site de l ARO.

Programmation Web. Madalina Croitoru IUT Montpellier

Chapitre 4 Pierre, papier, ciseaux

Génie Logiciel avec Ada. 4 février 2013

Feuille d exercices 2 : Espaces probabilisés

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Probabilité. Table des matières. 1 Loi de probabilité Conditions préalables Définitions Loi équirépartie...

L ALGORITHMIQUE. Algorithme

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

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

Application 1- VBA : Test de comportements d'investissements

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

Les structures de données. Rajae El Ouazzani

Pourquoi l apprentissage?

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

ScIn11 informatique Session d'appel, durée 1 heure, tous documents autorisés N'oubliez pas de reporter votre numéro d'anonymat :

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

Programmer en JAVA. par Tama

Probabilités. Une urne contient 3 billes vertes et 5 billes rouges toutes indiscernables au toucher.

Evaluation diagnostique de CM1 Circonscription de Saint Just en Chaussée Livret du maître partie Français

Importer les fichiers élèves - professeurs du secrétariat

Les arbres binaires de recherche

Les Cartes et leur Valeur

EXCEL TUTORIEL 2012/2013

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

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

S initier aux probabilités simples «Question de chance!»

Principes de mathématiques 12 SÉRIE DE PROBLÈMES. Septembre Student Assessment and Program Evaluation Branch

Modes opératoires pour le chiffrement symétrique

Petit memo rapide pour vous guider dans la gestion des engagements de vos compétitions FFM

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

Découverte de Python

TP 1. Prise en main du langage Python

Manuel. Administration P.CONSEIL. 12 avril Statut :

Initiation à Excel. Frédéric Gava (MCF)

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

SOMMAIRE... 1 ESPACE DU CLUB...

1 Lecture de fichiers

Comment développer et intégrer un module à PhpMyLab?

TRIGONOMETRIE Algorithme : mesure principale

Présentation du langage et premières fonctions

Conventions d écriture et outils de mise au point

La programmation orientée objet et le langage C++

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

LES DECIMALES DE π BERNARD EGGER

Algorithmique et Programmation, IMA

TUTORIEL Qualit Eval. Introduction :

Cours de Systèmes d Exploitation

Cours 7 : Utilisation de modules sous python

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

Examen Médian - 1 heure 30

Les clients puissance cube

Solutions du chapitre 4

2. Comprendre les définitions de classes

REGLEMENT DES JEUX PARTOUCHE IMAGES (Serveur vocal et Internet)

Langage Java. Classe de première SI

1 Introduction et installation

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Créer le schéma relationnel d une base de données ACCESS

Le logiciel : un outil de gestion des données, une aide pour le choix des techniques et un outil de communication pour le personnel de terrain

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

1. Déterminer l ensemble U ( univers des possibles) et l ensemble E ( événement) pour les situations suivantes.

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

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

Recherche dans un tableau

USTL - Licence ST-A 1ère année Initiation à la programmation TP 1

Utilisation d objets : String et ArrayList

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Initiation à LabView : Les exemples d applications :

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

I. Introduction aux fonctions : les fonctions standards

Vérification de programmes et de preuves Première partie. décrire des algorithmes

MATHÉMATIQUES APPLIQUÉES S4 Exercices

Traduction des Langages : Le Compilateur Micro Java


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)

Calcul Formel et Numérique, Partie I

Probabilités (méthodes et objectifs)

CM2 L architecture MIPS32

Organigramme / Algorigramme Dossier élève 1 SI

GUIDE Excel (version débutante) Version 2013

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

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

Transcription:

InitProg Python par l exemple Martin Monperrus 26 octobre 2012 Ce document illustre le polycopié du cours Initiation à la programmation (InitProg) de l Université Lille 1 avec quelques programmes Python simples. Il est destiné à la compréhension des bases. Table des matières 1 init_tas et deplacer_sommet 2 2 Le if/then et if/then/else 3 3 Algèbre booléenne 4 4 La boucle while 5 5 Définition d une fonction 6 6 Appels de fonction 7 1

1 init_tas et deplacer_sommet # {{init_tas et deplacer_sommet}} # init_tas # deplacer_sommet # Ce programme initialise le tas 1 avec une alternance de Pique et de Coeur # sur le tas 1 et rien sur les autres tas, puis trie toutes les cartes du tas 1 par couleur # sur les tas 2 (qui reçoit les Piques) et 3 (qui reçoit les Coeurs). # Rappel: ceci est un commentaire, que ocaml et ocamlcartes ignorent. # Les commentaires vous aident à structurer et comprendre votre propre programme, # et, pour les professeurs, à corriger vos travaux. # Nous utilisons le module Cartes # Initialisation du tas 1 avec 4 cartes. Il y a une alternance de Pique et Coeur. # La fonction init_tas prend deux paramètres: # le premier est un numéro de tas entre 1 et 4 # le deuxième est une chaîne de caractères décrivant le tas # C > Coeur # K > Carreau # T > Trèfle # P > Pique # La carte du dessous correspond au premier caractère: # init_tas(1,"cpt") # _La carte du dessous est un coeur # Les numéros de carte sont tirés au hasard. init_tas(1,"cpcp") # Les autres tas sont vides. Un tas vide est représenté par une chaîne de caractères vide notée en Ocaml "" init_tas(2,"") # Nous savons que la carte du dessus est un Pique, donc va sur le tas 2 # La suivante est un coeur # La suivante est un pique # La dernière est un coeur # Toutes les cartes sont triées, le programme est terminé! 2

2 Le if/then et if/then/else # {{Le if/then et if/then/else}} # le + et () dans init_tas # if/then/else # Ce programme initialise les tas 1 avec des valeurs aléatoires. Les autres tas sont vides. # Ensuite, dépendamment de l initialisation du tas 1, les coeurs partent # sur le tas 2, les trèfles sur le tas 3 et les piques sur le tas 4 # Initialisation du tas 1: # le + veut dire "ou": (C+P) donne un coeur ou un pique aléatoirement # les parenthèses permettent de délimiter des groupes # Ici, les tas possibles sont: # T # CP # PP # init_tas(1,"((c+p)p)+t") # Les autres tas sont vides. Un tas vide est représenté par # une chaîne de caractères vide notée en Ocaml "" init_tas(2,"") # Déplacements des cartes if sommet_trefle(1): else: # nous déplacons le pique du sommet deplacer_sommet(1,4) # sous le pique, avons nous un coeur ou un autre pique? if sommet_coeur(1): else: # c est nécessairement un pique (d après le init_tas) deplacer_sommet(1,4) 3

3 Algèbre booléenne # {{Algèbre booléenne}} # la fonction tas_vide, tas_non_vide # l algèbre booléenne not && # Ce programme initialise les tas 1 avec des valeurs aléatoires. # Les autres tas sont vides. # Ensuite, dépendamment de l initialisation du tas 1, les rouges partent # sur le tas 2, les noires sur le tas # Initialisation du tas 1 # Le tas peut être vide à cause du () init_tas(1,"((p+t)+(c+k))+()") # Les autres tas sont vides. Un tas vide est représenté par # une chaîne de caractères vide notée en Ocaml "" init_tas(2,"") # Si le tas 1 n est pas vide # NB: faire un sommet_coeur, sommet_carreau, sommet_pique # ou sommet_trefle sur un tas vide casse l automate if not(tas_vide(1)): # si carte est rouge if sommet_coeur(1) or sommet_carreau(1): # si la carte est noire # nous avons peut être déplacé une carte, donc on rajoute un test # notez que tas_vide(x) = not(tas_non_vide(x)) if tas_non_vide(1) and (sommet_pique(1) or sommet_trefle(1)): 4

4 La boucle while # {{La boucle while}} # le [] dans init_tas # la boucle while # Ce programme initialise les tas 1 et 2 avec n coeurs ou trèfles aléatoirement. # Puis déplace tous les coeurs du tas 1 sur le tas 4 et tous les coeurs du sommet du tas 2 sur le tas 4. # Le tas 3 est utilisé comme entrepôt # les crochets veulent dire n au hasard dans [0,52] # NB: l expression entre crochet est exécutée n fois, donc les tas 1 et 2 # contiennent une alternance aléatoire de coeur et trèfle init_tas(1,"[c+t]") init_tas(2,"[c+t]") # Les autres tas sont vides. # déplace tous les coeurs du tas 1 sur le tas 4 while tas_non_vide(1): if sommet_coeur(1): deplacer_sommet(1,4) else: # dans l entrepôt # tous les coeurs du sommet du tas 2 sur le tas 4. # Le tas 2 peut être vide si [] donne n=0 ou si il n y a que des coeurs sur le tas 2 # et qu ils ont tous été déplacés while tas_non_vide(2) and sommet_coeur(2): deplacer_sommet(2,4) 5

5 Définition d une fonction # {{Définition d une fonction}} # définition de fonctions # Ce programme déplace toutes les cartes des tas 1, 2 et 3 sur le tas 4 # Initialisation des tas: tous les tas possibles init_tas(1,"[p+c+k+t]") init_tas(2,"[p+c+k+t]") init_tas(3,"[p+c+k+t]") # Le tas 4 est vide # Déplace toutes les cartes du tas x vers le tas y. # Types: x et y sont des numéros de tas # Contrainte d utilisaton: x et y dans {1,2,3,4} def deplacer_tas(x,y): while tas_non_vide(x): deplacer_sommet(x,y) # déplacement des tas en utilisant la fonction deplacer_tas deplacer_tas(1,4) deplacer_tas(2,4) deplacer_tas(3,4) 6

6 Appels de fonction # {{Appels de fonction}} # Ce programme trie toutes les cartes de tous les tas. Les rouges finissent sur le tas 3 et les noires sur le tas 4. # La fonction "trie_tous_tas" appelle la fonction "trie_tas_par_couleur" # et la fonction "trie_tas_par_couleur" appelle la fonction "bouge_noir_sur" # et la fonction "bouge_rouge_sur" # Comme au légo, on commence par les plus petites briques: # l ordre de définition des fonctions commence par les "petites" fonctions qui sont appelées par d autres. # Initialisation des tas: tous les tas possibles init_tas(1,"[p+c+k+t]") init_tas(2,"[p+c+k+t]") init_tas(3,"[p+c+k+t]") # Le tas 4 est vide # déplace la carte du sommet du tas x sur le tas y # si et seulement si c est une carte rouge def bouge_rouge_sur(x,y): if tas_non_vide(x): if sommet_coeur(x) or sommet_carreau(x): deplacer_sommet(x,y) # déplace la carte du sommet du tas x sur le tas y # si et seulement si c est une carte noire def bouge_noir_sur(x,y): if tas_non_vide(x): if sommet_pique(x) or sommet_trefle(x): deplacer_sommet(x,y) # trie les cartes du tas x en mettant toutes les cartes rouges sur y et les cartes noires sur z def trie_tas_par_couleur(x,y,z): while tas_non_vide(x): bouge_rouge_sur(x,y) bouge_noir_sur(x,z) # trie toutes les cartes de tous les tas en mettant toutes les cartes rouges sur y et les cartes noires sur z def trie_tous_tas(y,z): # on libère les tas de destination trie_tas_par_couleur(y,1,2) trie_tas_par_couleur(z,1,2); # et on finit le tri trie_tas_par_couleur(1,y,z) trie_tas_par_couleur(2,y,z) trie_tous_tas(3,4) 7