Initiation à la programmation impérative et algorithmique

Documents pareils
STAGE IREM 0- Premiers pas en Python

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)

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

Découverte de Python

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

L informatique en BCPST

Calcul Formel et Numérique, Partie I

Algorithmique et Programmation, IMA

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


Initiation à la programmation en Python

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

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

Cours d algorithmique pour la classe de 2nde

INF 321 : mémento de la syntaxe de Java

Premiers pas avec Mathematica

Présentation du langage et premières fonctions

Calcul Formel et Numérique, Partie I

Cours 7 : Utilisation de modules sous python

Licence Sciences et Technologies Examen janvier 2010

TP 1. Prise en main du langage Python

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

Corrigé des TD 1 à 5

I. Introduction aux fonctions : les fonctions standards

Aide - mémoire gnuplot 4.0

Maple: premiers calculs et premières applications

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

Python - introduction à la programmation et calcul scientifique

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

Cours d Algorithmique et de Langage C v 3.0

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

Logiciel. Table de matières I Environnement requis...2

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

Organigramme / Algorigramme Dossier élève 1 SI

1 Lecture de fichiers

Algorithmique et programmation : les bases (VBA) Corrigé

L ALGORITHMIQUE. Algorithme

Nathalie Barbary SANSTABOO. Excel expert. Fonctions, simulations, Groupe Eyrolles, 2011, ISBN :

Introduction au langage C

Langage Java. Classe de première SI

1 Recherche en table par balayage

Les chaînes de caractères

Cours d Informatique

Représentation d un entier en base b

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

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

Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011

Les travaux doivent être remis sous forme papier.

Algorithmes et mathématiques. 1. Premiers pas avec Python. Exo Hello world!

Conventions d écriture et outils de mise au point

Initiation à l algorithmique

Mathématiques I Section Architecture, EPFL

Chapitre 2 Devine mon nombre!

Initiation à la Programmation en Logique avec SISCtus Prolog

Programmation avec Xcas ou Python

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

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

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Continuité et dérivabilité d une fonction

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

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

Dérivation : cours. Dérivation dans R

Premiers Pas en Programmation Objet : les Classes et les Objets

Algorithme. Table des matières

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

Solutions du chapitre 4

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

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

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

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

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

V- Manipulations de nombres en binaire

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

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

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

Introduction à MATLAB R

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

C2AI 9 rue de Catalogne Décines cedex Tél. : Fax :

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 TYPES DE DONNÉES DU LANGAGE PASCAL

Les classes en Python

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

Utiliser des fonctions complexes

Exo7. Limites de fonctions. 1 Théorie. 2 Calculs

1. Structure d'un programme FORTRAN 95

Cours 1 : La compilation

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

Cours Informatique Master STEP

ACTIVITÉ DE PROGRAMMATION

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

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

Chapitre 6. Fonction réelle d une variable réelle

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

Présentation du PL/SQL

Limites finies en un point

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

TRIGONOMETRIE Algorithme : mesure principale

Chapitre V. Les classes : Object, Vector, etc.

Transcription:

Initiation à la programmation impérative et algorithmique Cours 5 Entrées/Sor=es et Fonc=ons Largement inspiré des cours : Vercouter, Del Mondo & Delestre, Hérault, Mainguenaud (INSA de Rouen)

De la programma=on impéra=ve Blocs d instruc=ons séquen=elles variables sélec,ons instruc=on 1 instruc=on 2 instruc=on 3 si condi=on a vérifiée: instruc=on condi=onnelle a1 instruc=on condi=onnelle a2 instruc=on 4.. boucles types de données fichiers fonc,ons entrées/sor,es à la programma=on fonc=onnelle Fonc=on f(paramètres d entrée): instruc=on f1 instruc=on f2 retourne valeur de sor6e récursivité Programme principal: instruc=on 1 si condi=on a vérifiée: appel de la fonc=on f(paramètres d entrée)

Exemple de pseudo-code Données à entrer Declaration : effectif, taux, gain : Reel ; an, anmax : Entier effectif 100 anmax 20 taux 0.05 an 0 gain 0 tant que an < anmax faire gain gain + effectif * taux effectif effectif * (1+taux) an an + 1 fintantque afficher La population a gagne, gain, individus. Données à sor=r Pour écrire un algorithme générique visant à résoudre un problème, il est nécessaire de considérer plusieurs sources et destinations de données.

Entrées et sorties Informatique = Traitement de l information! Les traitements sont réalisés par les instructions du programme! Les données fournies en entrée de l instruction subissent un traitement! Un traitement produit des informations qui sont les sorties de l instruction Indépendance vis-à-vis de l IHM! L instruction lire est associée à un périphérique d entrée spécifique : le clavier! L instruction ecrire est associée à un périphérique de sortie spécifique : l écran

Exemple de pseudo-code Pourquoi concevoir des algorithmes les plus génériques possibles? => Pour optimiser leur transférabilité & modularité, et ainsi pouvoir les réutiliser d un problème à l autre Declaration : an : Entier Entree : effectif, taux : Reel ; anmax : Entier Sortie : gain : Reel an 0 gain 0 tant que an < anmax faire gain gain + effectif * taux effectif effectif * (1+taux) an an + 1 fintantque

Programmation structurée A B A code répété C Appel de la fonction C Définition de la fonction B B D D

Programmation structurée Structure d un programme Un programme est composé de sous-programmes L exécution débute par le sous-programme principal L exécution se déroule par des appels successifs de sousprogrammes Les sous-programmes interagissent par le passage de données en entrée et en sortie

Les fonctions Les fonctions sont des sous-programmes admettant des paramètres d entrée et retournant un seul résultat (comme les fonctions mathématiques y = f(x, )). - les paramètres d entrée sont en nombre fixe - le type de valeur retournée par une fonction est unique - la valeur de retour est spécifiée par l instruction retourner Les fonctions peuvent aussi modifier l état du programme sans retourner de valeur. La modification peut concerner plusieurs variables. Généralement, le nom d une fonction est soit un substantif (par ex. minimum), soit une question (par ex. isempty), soit un verbe (ex. move).

Déclaration de fonction Fonction renvoyant une valeur fonction nom_fonction (parametres_entree) : type_valeur_retournee Declaration variables_locales debut instructions_de_la_fonction retourner valeur fin Fonction ne renvoyant pas de valeur fonction nom_fonction (parametres_entree) : None Declaration variables_locales debut instructions_de_la_fonction fin

Exemple de fonction (1) fonction minimum2 (a, b : Entier) : Entier Declaration res : Entier debut si a b alors res b sinon res a finsi retourner res fin

Exemple de fonction (2) Declaration : an : Entier Entree : effectif, taux : Reel anmax : Entier Sortie : gain : Reel an 0 gain 0 tant que an < anmax faire gain gain + effectif * taux effectif effectif * (1+taux) an an + 1 fintantque fonction gaindepopulation (effectif, taux: Reel ; anmax: Entier) : Reel Declaration an : Entier ; gain : Reel debut an 0 gain 0 tant que an < anmax faire gain gain + effectif * taux effectif effectif * (1+taux) an an + 1 fintantque retourner gain fin

Appel de fonction L exécution d une fonction A se fait par un appel dans un sous-programme B. L appel s effectue par une instruction en utilisant le nom de la fonction A Lors de l appel, une valeur est affectée à chaque paramètre d entrée de A A la fin de A, l exécution reprend après l appel de A dans le sousprogramme B La valeur retournée peut être utilisée dans B pour une affectation, un calcul

Exemple d appel Dans un programme principal : Declaration : unentier, min : Entier debut lire(unentier) min minimum2(unentier, 0) ecrire( Le minimum avec 0 est :, min) fin Dans une fonction : fonction minimum3 (a,b,c : Entier) : Entier debut retourner minimum2(a,minimum2(b,c)) fin

Paramètres et signature Les paramètres Pour qu un sous programme B appelle un sous-programme A, il faut : Que les informations données à A, lors de la définition de son algorithme, soient identifiées/nommées pour pouvoir être utilisées : paramètres formels (paramètres) Que B donne des instructions à A lors de l appel : paramètres effectifs (arguments) La signature Une fonction est désignée de manière unique dans un programme par sa signature, composée de : Son nom Ses paramètres formels d entrée Son type de retour

Exercice 1/4 Cycle cellulaire Ecrire : Une fonction qui renvoie l étape du cycle dans laquelle est une cellule à un âge donné, exprimé en heures Une fonction qui détermine si un âge est valide pour une cellule (12h) 1 2 (18h) 4 3 (22h) Un programme principal qui demande la saisie d un âge pour une cellule et affiche le stade cellulaire dans lequel elle se trouve (0h)

Exercice 2/4 Ø Fonction qui renvoie l étape du cycle dans laquelle est une cellule à un âge donné fonction stadecellulaire(age : Entier) : Chaîne de caractères Declaration etape : Chaîne de caractères debut si (age 12) alors etape G1 sinon si (age 18) alors etape S sinon si (age 22) alors etape G2 sinon etape M finsi finsi finsi retourner etape fin

Exercice 3/4 Ø Fonction qui détermine si un âge est valide pour une cellule fonction estunagevalide(age : Entier) : Booleen debut retourner (age > 0 ) et (age 24) fin

Exercice 4/4 Ø Programme principal Declaration: age : Entier debut lire(age) si estunagevalide(age) alors ecrire( Cette cellule est dans le stade cellulaire, stadecellulaire(age)) finsi fin Comment faire pour généraliser l algorithme à différents types cellulaires?

Les fonctions en Python En python, une fonction est définie à l aide du mot clé def, suivi du nom de la fonction, puis de la liste de ses paramètres formels. Le corps de la fonction doit être indenté. def nom_fonction (paramètres_d_entree): instructions_de_la_fonction_reperees_par_l_indentation Généralement, les premières lignes de la fonction sont dédiées à des commentaires de documentation de la fonction, appelés Docstring.

Les fonctions en Python En Python, les fonctions retournent toujours unevaleur, soit explicite, soit implicite. Pour retourner une valeur explicite, la dernière instruction qui est exécutée dans le corps de la fonction doit être return valeur. Si aucune valeur de retour n est spécifiée, la valeur prédéfinie None lui sera substituée.

Exemple de fonction en Python def prem (x): n = 2 while n < x: d = 2 while d < n: if n % d == 0: print n, =, d, *, n/d break else: d = d + 1 if d == n: print(n, est premier ) n = n + 1 Déclaration de la fonction 1 er niveau d indentation: corps de la fonction 2 ème niveau d indentation: boucle 3 ème niveau d indentation: boucle 4 ème niveau d indentation: sélection simple 3 ème niveau d indentation: sortie du bloc if 4 ème niveau d indentation: sélection alternative 2 ème niveau d indentation: sortie de la boucle 3 ème niveau d indentation: sélection simple 2 ème niveau d indentation: sortie du bloc if

Portée des variables en Python (1) def carre(x): y = x * x a = 15 carre(a) print( Le carré de, a, est égal à, y,. ) => Erreur : y n est pas défini! def carre(x): y = x * x return(y) a = 15 b=carre(a) Print( Le carré de, a, est égal à, b,. ) => Le carré de 15 est égal à 225.

Portée des variables en Python (2) Lors de son exécution, une fonction génère une table de symboles qui sera utilisée pour ses variables locales. A chaque fois qu un nom de variable apparaît à gauche d un signe d affectation, une variable locale est créée. Une variable déclarée dans une fonction n est pas visible depuis les autres sous-programmes. Toute référence à une variable apparaissant à droite d un signe d affectation déclenche une recherche de la variable selon l ordre de priorité Local- Global-Integrated (LGI), soit (1) dans la table locale, (2) dans la table globale, (3) dans la table des noms intégrés. Ainsi, on peut faire référence à une variable globale dans une fonction, mais on ne peut pas lui affecter une valeur. Pour outrepasser cette interdiction, on utilise le mot clé global dans le corps de la fonction.

Portée des variables en Python (3) def carre(x): global y y = x * x a = 15 carre(a) Print( Le carré de, a, est égal à, y,. ) => Le carré de 15 est égal à 225. def carre(x): y = x * x return(y) a = 15 b=carre(a) Print( Le carré de, a, est égal à, b,. ) => Le carré de 15 est égal à 225.

Portée des variables en Python (4) def hello(prenom): print("bonjour", prenom) hello("patricia") print(x) Bonjour Patricia Erreur : x n est pas défini! x = 10 def hello(prenom): print("bonjour", prenom) print(x) hello("patricia") print(x) Bonjour Patricia 10 10 x = 10 def hello(prenom): print("bonjour", prenom) hello("patricia") print(x) Bonjour Patricia 10 x = 10 def hello(prenom): x = 42 print("bonjour", prenom) print(x) hello("patricia") print(x) Bonjour Patricia 42 10

Paramètres par défaut La liste d appel d une fonction peut contenir un nombre variable d arguments. Il est possible d affecter une valeur par défaut à certains paramètres d entrée, de sorte de le nombre de paramètres effectifs (arguments) donnés lors de l appel de la fonction sera inférieur au nombre de paramètres formels (paramètres) qui apparaissent dans sa définition. def afficheab(a= 10,b= salut ): print( a :, a, ; b :, b) afficheab() afficheab( bonjour, monsieur ) afficheab( je te dis ) => a : 10 ; b : salut => a : bonjour ; b : monsieur => a : je te dis ; b : salut

Paramètres par défaut! La valeur par défaut est évaluée une fois et une seule lors de la définition de la fonction val = 10 def afficheab(a=val,b= salut ): print( a :, a, ; b :, b) afficheab() val = 20 afficheab() => a : 10 ; b : salut => a : 10 ; b : salut

Paramètres par défaut! La valeur par défaut est évaluée une fois et une seule lors de la définition de la fonction Dans le cas d un objet modifiable, les changements qui lui ont été faits sont conservés. val = 10 def afficheab(a=val,b=[]): print( a :, a, ; b :, b) a = Maintenant a vaut 20 b.append( salut ) afficheab() afficheab() => a : 10 ; b : [] => a : 10 ; b : salut

Appel par mot clé Il est aussi possible de faire référence à une liste d appel de fonction par mot clé, c est-à-dire en utilisant le nom des paramètres formels de la fonction val = 10 def afficheabc(c,a=val,b=[]): print( a :, a, ; b :, b, ; c :, c) afficheabc(a= hello you,1974) afficheab( bouh ) => a : hello you ; b : [] ; c : 1974 => a : 10 ; b : [] ; c : bouh Dans ce type d appel, l ordre des arguments est sans importance.

Appel par mot clé! Il est cependant impératif que, dans la définition de la fonction, les paramètres qui reçoivent une valeur par défaut apparaissent après ceux qui n en reçoivent pas. val = 10 def afficheabc(a=val,c,b=[]): print( a :, a, ; b :, b, ; c :, c) afficheabc(a= hello you,1974) => Erreur : un argument sans valeur par défaut suit un argument avec valeur par défaut

Quelques fonctions standards Importer un module de fonctions Importer le contenu d un module import math b = math.sqrt(a) Importer une partie d un module from math import sqrt Importer tout un module fom math import * (tous les identifiants du module sont chargés) Lister le contenu d un module La fonction standard dir() permet de lister le contenu d un module. dir(math) [' doc ', ' file ', ' name ', 'acos', 'asin', 'atan, 'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs, 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10, 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan, 'tanh'] La fonction help() est la fonction d aide en ligne de python help(math)

Quelques fonctions standards Fonctions mathématiques abs(x) renvoie la valeur ABSolue d un entier ou d un réel math.cos(x) renvoie le COSinus de l argument exprimé en radians math.exp(x) renvoie la valeur de e élevée à la puissance de l argument math.log(x[,base]) renvoie le LOGarithme népérien de l argument avec deux arguments, on peut préciser la base souhaitée math.pow(x,y) renvoie l argument x à la puissance y round(x[,ndigits]) arrondit l argument x à ndigits chiffre après la virgule Si ndigits est omis, l arrondi se fait à l entier le plus proche sin(x) renvoie le SINus de l argument exprimé en radians sqrt(x) renvoie la racine carrée de l argument math.trunc(x) renvoie la partie entière d un nombre réel x

Quelques fonctions standards Fonctions pour les caractères chr(i) renvoie un caractère à partir de son code ASCII ord(c) renvoie un entier représentant le code ASCII d un caractère Fonctions pour les caractères et chaînes de caractères len(s) renvoie la longueur de la chaîne de caractères S str.lower(s) renvoie une copie de S, avec les majuscules en minuscules str.upper(s) renvoie une copie de S, avec les minuscules en majuscules Fonctions pour les entrées/sorties input([prompt]) affiche l argument à l écran, renvoie ce qui est au clavier print([object,...] ) affiche object(s) à l écran, avec retour à la ligne open(file[, mode='r ) ouvre le fichier file en mode lecture ( r ), écriture ( w )

Fonctions anonyme et fermeture Au moyen du mot clé lambda, il est possible de définir des fonctions anonymes. x = lambda a,b : a+b z = x(3,5) print(z) => 8 Une fonction s exécute toujours dans le contexte dans lequel elle a été définie. def ferm (val): def fonc(nb): return val + nb return fonc x = ferm(100) y = ferm(200) print( appel de x :, x(50)) print( appel de y :, y(50)) => appel de x : 150 => appel de y : 250

Fonction callback Une fonction callback est une fonction particulière qui, une fois définie, sera utilisée en argument d une autre fonction. def mettre_au_carre(x): return x ** 2 def appliquer_fonction(fonc, valeur): return fonc(valeur) print appliquer_fonction(mettre_au_carre, 3) => 9 En pratique, rien ne permet de différencier les fonctions callback des autres en Python.

Conclusion La prise en compte de différentes sources et destinations de données permet de généraliser un algorithme visant à résoudre un problème. Un programme est conposé de sous programmes, autrement dit des fonctions. Les fonctions admettent des paramètres d entrée (arguments) et retournent une seule valeur ou bien modifient l état du programme (sans retour de valeur). La bibliothèque python comporte de nombreux modules, où sont définies un certain nombre de fonctions.