Algorithmique et Programmation 2 LMI 1 Semestre 2 Cours 2 La séquence et l alternative



Documents pareils
STAGE IREM 0- Premiers pas en Python

Présentation du langage et premières fonctions

Initiation à la programmation en Python

Cours d algorithmique pour la classe de 2nde

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Algorithmique et programmation : les bases (VBA) Corrigé

Algorithmique et Programmation, IMA

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

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

L informatique en BCPST

Cours d Algorithmique et de Langage C v 3.0

TP 1. Prise en main du langage Python


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

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Chapitre 2 Devine mon nombre!

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

Algorithmique et structures de données I

Présentation du PL/SQL

Compléments de documentation Scilab : affichage de texte et formatage de nombres

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)

Licence Sciences et Technologies Examen janvier 2010

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

Cours 3 : Python, les conditions

Introduction à MATLAB R

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

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

Introduction au langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C

Chapitre I Notions de base et outils de travail

Le langage C. Séance n 4

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

I. Introduction aux fonctions : les fonctions standards

Organigramme / Algorigramme Dossier élève 1 SI

Conventions d écriture et outils de mise au point

Découverte de Python

Comment créer et utiliser une fonction

2 Comment fonctionne un ordinateur, dans les grandes lignes

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours 1 : Qu est-ce que la programmation?

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

Évaluation et implémentation des langages

V- Manipulations de nombres en binaire

Initiation. àl algorithmique et à la programmation. en C

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

R, Bonnes pratiques. Christophe Genolini

Les fonction affines

Cours Informatique Master STEP

Java Licence Professionnelle CISII,

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Guide de formation avec cas pratiques. Programmation. Philippe Moreau Patrick Morié. Daniel-Jean David

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

EXCEL TUTORIEL 2012/2013

Utilisation d objets : String et ArrayList

Calcul Formel et Numérique, Partie I

Les chaînes de caractères

Représentation d un entier en base b

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

Rappels Entrées -Sorties

Programmation Web. Madalina Croitoru IUT Montpellier

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

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

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

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

Programmer en JAVA. par Tama

Algorithme. Table des matières

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

ALGORITHMIQUE ET PROGRAMMATION En C


Puissances d un nombre relatif

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

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

SUPPORT DE COURS. Langage C

Programmation avec Xcas ou Python

Les structures de données. Rajae El Ouazzani

1. Structure d'un programme FORTRAN 95

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

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

R01 Import de données

Programmation en Caml pour Débutants

Correction TD algorithmique

Cours 1 : La compilation

Chapitre 4 : Édition de fichiers texte - Vi

Initiation à l algorithmique

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

La mémoire. Un ordinateur. L'octet. Le bit

Nom de l application

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Solutions du chapitre 4

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

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

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

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

Préparation à l examen EFA en Macro

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Transcription:

Algorithmique et Programmation 2 LMI 1 Semestre 2 Cours 2 La séquence et l alternative 2 janvier 2009 1 Les structures de contrôle En Scheme, le programmation se fait par composition de fonctions, et même les structures de choix comme le if sont exprimées sous la forme de fonctions, dont l un ou l autre des arguments est évalué. En programmation impérative, on utilise essentiellement la séquence : les instructions sont exécutées les unes à la suite des autres. S y ajoutent d autres éléments qui vont permettre le branchement conditionnel, le choix entre des instructions à effectuer la répétition d instructions 2 L alternative L instruction conditionnelle en Python est le if. Il s utilise ainsi : >>> mois = 1 >>> annee = 2008 >>> if (mois < 2): print Bonne annee, annee Bonne annee 2008 >>> La première partie du if, qui est entre parenthèses, est la condition : si elle est vérifiée, alors la séquence d instructions qui se trouve après le : sera exécutée. En Python, le : annonce le début d un bloc d instructions : il s agit d une suite d instructions qui seront executées ensemble, ou pas du tout. Un bloc d instructions se distingue syntaxiquement également par le fait qu il est indenté, i.e. décalé vers la droite par rapport au reste du code. Lorsqu on termine un bloc d instructions, on supprime une indentation (on revient d une tabulation vers la gauche). Ces limites de blocs d instructions sont analogues aux parenthèses ouvrantes et fermantes en Scheme qui délimitent les appels de fonctions. En Scheme, pour la lisibilité, il était demandé d indenter le code (mise à la verticale des ( et des ) de même niveau). En Python, il est obligatoire d avoir du code bien indenté et lisible pour programmer : l indentation est un élément syntaxique du langage. Mais, pas de panique! Il suffit d utiliser un éditeur intelligent pour que l indentation du code soit gérée facilement. 2.1 L alternative : syntaxe générale if (condition1): bloc-d instructions-alors-1 elif (condition2): bloc-d instructions-alors-2... 1

bloc-d instructions-sinon Les parties elif et else sont facultatives. On ne peut écrire qu une seule partie else pour un if, et toujours en dernière position. On peut écrire autant de parties elif que l on veut. Les parties elif, contraction de else if, signifient sinon si. L instruction if est exécutée ainsi : si condition1 est vraie, alors bloc-d instructions-alors-1 est exécuté, puis on sort du if si condition1 est fausse, alors, si condition2 est vraie, bloc-d instructions-alors-2 est exécuté, puis on sort du if même chose pour toutes les parties elif suivantes (elles ne seront exécutées que si aucune des conditions précédentes n a été vérifiée, et si leur propre condition est vraie) ; enfin, si aucune condition n a été vérifiée, c est bloc-d instructions-sinon qui sera exécuté. 2.2 Exemples 2.2.1 Conversion Fahrenheit - Celsius On écrit le même programme que la semaine dernière, mais l utilisateur nous indique en plus en quelle unité il donne la température : F pour Fahrenheit, et C pour Celsius. On fait la conversion en conséquence. # programme de conversion Celsius <-> Fahrenheit # obtenir l unité utilisée print "Programme de conversion Celsius <-> Fahrenheit" print "Les unités possibles sont : F pour Fahrenheit ou C pour Celsius" unite = input( Quelle unité allez-vous utiliser? ) # obtenir une température temperature = input( Donnez une température exprimée en degrés +unite+ : ) if (unite == F or unite == f ): # convertir en degrés Celsius celsius = (5*(temperature - 32))/9 print Cela fait, celsius, C elif (unite == C or unite == c ): # convertir en degrés Fahrenheit fahrenheit = ((9*temperature)/5)+32 # afficher le résultat print Cela fait, fahrenheit, F print unite, "est une unité inconnue" Ici, il faut faire attention car la saisie d une chaîne de caractères avec input requiert les quotes (il faut saisir c au clavier pour l unité et pas seulement c). 2.2.2 Année bissextile Écrire un programme qui demande une année, et affiche un message indiquant si elle est bissextile ou non. Rappel : une année est bissextile si c est un multiple de 4 mais pas de 100, ou alors un multiple de 400 2

# programme bissextile # récupérer une année annee = input( Donnez-moi une année : ) # maintenant on teste si elle est bissextile ou pas if ((annee % 4 ==0) and ((annee % 100!=0) or (annee % 400 == 0))): print annee, est une année bissextile print annee, "n est pas une année bissextile" qu on aurait pu également écrire : # programme bissextile # récupérer une année annee = input( Donnez-moi une année : ) # on commence print annee, # maintenant on teste si elle est bissextile ou pas if ((annee % 4 ==0) and ((annee % 100!=0) or (annee % 400 == 0))): print est, print " n est pas", # et dans tous les cas print une année bissextile Dans le deuxième exemple, on remarque les différents cas d exécution, les morceaux de code qui sont toujours exécutés, etc... On remarque aussi la virgule en fin d instruction du print qui évite le retour à la ligne dans l affichage (démo). 2.2.3 Devis déménagement Une petite entreprise de déménagement propose d effectuer des devis rapides. Les règles sont les suivantes : il y a un forfait de base pour les déplacements : déménagement dans un rayon de moins de 10km : 300 euros déménagement dans un rayon de moins de 400km : 600 euros au-delà, un forfait de 1000 euros est appliqué ; plus un forfait kilométrique : gratuit pour les déménagements de moins de 10km 3 euros par kilomètre sinon il y a un barême sur le volume : c est 15 euros par mètre cube pour les déménagement de moins de 15m 3 28 euros par mètre cube pour les déménagements de moins de 30m 3 40 euros par mètre cube pour les déménagements de moins de 50m 3 50 euros par mètre cube pour les déménagements au-delà de 50m 3 Écrire le programme qui calcule un devis. 3

# devis déménagement print Devis rapide avec les déménageurs express! # on demande la distance distance = input("quelle est la distance (en km) entre le départ et l arrivée? # on demande le volume volume = input("quel est le volume prévu? ") # calcul du forfait distance if distance <= 10 : forfaitdistance = 300 elif distance <= 400 : forfaitdistance = 600 forfaitdistance = 1000 # calcul du forfait kilométrique if distance > 10 : km = 3*distance km = 0 # calcul du forfait volumétrique if volume <= 15 : forfaitvolume = 15*volume elif volume <= 30 : forfaitvolume = 28*volume elif volume <= 50 : forfaitvolume = 40*volume forfaitvolume = 50*volume # calcul devis, et affichage résultat print le devis prévisionnel est de, print forfaitdistance+km+forfaitvolume, euros 2.3 Quelques règles de syntaxe supplémentaires les parenthèses autour des conditions ne sont pas obligatoires lorsqu il s agit d expressions simples (pas de and, de or,...) le : n est pas forcément collé à l expression qui le précède il faut faire attention à l indentation : si vous n utilisez pas un éditeur qui indente automatiquement vos programmes Python, vous pouvez choisir d indenter un morceau de code, soit avec des espaces, soit avec des tabulations. Le principe est que deux instructions font partie d un même bloc d instruction s ils ont la même indentation. Attention toutefois à ne pas mélanger espaces et tabulations : on peut obtenir visuellement le même résultat, sans pour autant que les indentations soient les mêmes. 2.4 Les if imbriqués Aucun des exemples ne comportaient de structures conditionnelles imbriquées...mais cela ne pose pas plus de souci qu en Scheme! 4

2.4.1 Le retour des déménageurs express Seconde version # devis déménagement print Devis rapide avec les déménageurs express! # on demande la distance distance = input("quelle est la distance (en km) entre le départ et l arrivée? # on demande le volume volume = input("quel est le volume prévu? ") # calcul du forfait distance # et du forfait kilométrique if distance <= 10 : forfait_distance = 300 km = 0 km = 3*distance if distance <= 400 : forfait_distance = 600 forfait_distance = 1000 # calcul du forfait volumétrique if volume <= 15 : forfait_volume = 15*volume elif volume <= 30 : forfait_volume = 28*volume elif volume <= 50 : forfait_volume = 40*volume forfait_volume = 50*volume # calcul devis, et affichage résultat print le devis prévisionnel est de, print forfait_distance+km+forfait_volume, euros 3 Un premier pas vers la définition de fonctions Python fait partie de la famille des langages procéduraux : comme Pascal, comme C, comme ADA :- ), en Python, on écrit des sous-programmes qui s appellent procédures, ou... fonctions (eh oui, comme en Scheme!). Utiliser des fonctions permet : de décomposer un problème en sous-problèmes de tester et de valider, fonction par fonction, un pogramme de réutiliser du code La syntaxe générale d une fonction en Python est : def mafonction(param1,param2,...): instruction1 instruction2... 5

Si une fonction doit retourner une valeur, l exécution de la fonction doit se terminer par une instruction return. def calculforfaitdistance(dist) : calculforfaitdistance : int -> int fonction de calcul du forfait distance if dist <= 10 : prix = 300 elif dist <= 400 : prix = 600 prix = 1000 return prix def calculforfaitvolume(vol) : calculforfaitvolume : int -> int fonction de calcul du forfait volumétrique if vol <= 15 : prix = 15*vol elif vol <= 30 : prix = 28*vol elif vol <= 50 : prix = 40*vol prix = 50*vol return prix def calculkm(dist) : calculkm : int -> int fonction de calcul des frais de déplacement if distance > 10 : prix = 3*distance prix = 0 return prix # devis déménagement print Devis rapide avec les déménageurs express! # on demande la distance distance = input("quelle est la distance (en km) entre le départ et l arrivée? # on demande le volume volume = input("quel est le volume prévu? ") # calcul du forfait distance forfaitdistance = calculforfaitdistance(distance) # calcul du forfait kilométrique km = calculkm(distance) # calcul du forfait volumétrique 6

forfaitvolume = calculforfaitvolume(volume) # calcul devis, et affichage résultat print le devis prévisionnel est de, print forfaitdistance+km+forfaitvolume, euros Les commentaires entre trois quotes qui sont écrits juste après la ligne d entête permettent de créer une documentation sur la fontion. On prendra l habitude d y écrire nos spécifications de fonctions, comme en Scheme : >>> help(calculkm) Help on function calculkm in module main : calculkm(dist) calculkm : int -> int fonction de calcul des frais de déplacement >>> help(calculforfaitdistance) Help on function calculforfaitdistance in module main : calculforfaitdistance(dist) calculforfaitdistance : int -> int fonction de calcul du forfait distance 7