algorithmique et programmation - unité de recherche...

21
Algorithmique et programmation Master 1 Humanités numériques Jérôme Darmont Année 2019-2020 http://eric.univ-lyon2.fr/jdarmont/

Upload: others

Post on 07-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

Algorithmique et programmation Master 1 Humanités numériques

Jérôme Darmont Année 2019-2020

http://eric.univ-lyon2.fr/jdarmont/

Page 2: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 1 sur 20

Définitions

Algorithme

Un algorithme est une suite finie et non ambiguë d’opérations ou d'instructions permettant de résoudre un problème ou d'obtenir un résultat.1

Un algorithme peut prendre des données en entrée et fournit au moins un résultat en sortie.2

Un algorithme est souvent exprimé avec une notation indépendante de tout langage de programmation.3

Programme

Un programme est la traduction d’un algorithme en un langage interprétable par un ordinateur.4

1 Wikipedia. https://fr.wikipedia.org/wiki/Algorithme 2 Donald E. Knuth. The Art of Computer Programming, Vol. 1. 3e edition, 1997. Addison-Wesley. 3 Robert Strandh, Irène Durand. Initiation à l’informatique. 2003. http://dept-info.labri.fr/ENSEIGNEMENT/INITINFO/initinfo/supports/book/ 4 Robert Cordeau. Introduction à Python 3. http://www.maths-et-tiques.fr/telech/Python3v1-1.pdf

Page 3: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 2 sur 20

Méthodologie

Page 4: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 3 sur 20

Outils

Langage algorithmique textuel

Le langage algorithmique en français proposé dans ce support et relativement standard, si tant est qu’il existe un standard en la matière. Il est volontairement

indépendant et différent des autres langages abordés dans cet enseignement (plus rigoureux).

Blockly

Blockly5 est un langage graphique open-source de Google qui vise à démocratiser le développement informatique en limitant les possibilités d’erreurs de

syntaxe grâce à l’agencement de blocs de code par glisser-déposer. Il est inspiré de Scratch6, un langage similaire développé par le MIT. Il permet de générer

automatiquement du code, notamment dans les langages JavaScript, PHP et Python. Il est considéré ici comme un langage algorithmique en anglais.

Python

Python7 est un langage de programmation sous licence libre promu par la Python Software Foundation. Il fonctionne sur la plupart des systèmes d’exploitation

et fait partie des langages les plus utilisés pour apprendre la programmation. Il inclut l’environnement de développement IDLE8, qui vise à faciliter la

programmation en Python. Les programmes Python sont placés dans des fichiers d’extension « .py ».

5 https://developers.google.com/blockly/ 6 https://scratch.mit.edu 7 https://www.python.org 8 http://tarball69.developpez.com/articles/python/idle-presentation-rapide/

Page 5: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 4 sur 20

Tableau d’équivalence entre les langages

Concept Algorithmique textuelle Algorithmique graphique (Blockly) Langage Python Commentaire {Il faut commenter son code !} # Il faut commenter son code !

Déclaration de variables

Var âge : Entier Var salaire : Réel Var nom : Chaîne Var v_f : Booléen

Pas d’équivalent !

Déclaration de constantes

Const N ← 10

Const PI ← 3,1416

Const MONNAIE ← "Euro"

Affectation de variables

âge ← 44

salaire ← 1466,62

nom ← "Jérôme"

v_f ← Vrai {Contraire : Faux}

age = 44 salaire = 1466.62 nom = "Jérôme" ou nom = 'Jérôme' v_f = True # Contraire : False a = b = 20 x, y = 30, 40

Type d’une variable

type(age) # int type(salaire) # float type(nom) # str type(v_f) # bool

Calculs

âge ← 44 + 1

âge ← âge + 1

salaire ← salaire x 1,05

quotient ← a ÷ b

nom ← nom | " Darmont"

age = 44 + 1 age = age + 1 ou age += 1 salaire = salaire * 1.05 quotient = a / b nom = nom + " Darmont"

Opérateurs arithmétiques

+ - x ÷ ^ div mod + - x ÷ ^ + - * / ** // %

Page 6: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 5 sur 20

Concept Algorithmique textuelle Algorithmique graphique (Blockly) Langage Python

Entrées / sorties

Lire(nom) Lire(âge) Lire("Salaire :", salaire) Écrire("Hello world!") Écrire(âge) Écrire("Âge ", âge, "Salaire ", salaire)

nom = input() age = int(input()) salaire = float(input("Salaire : ")) print("Hello world!") print(age) print("Âge", age, "Salaire", salaire)

Page 7: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 6 sur 20

Concept Algorithmique textuelle Algorithmique graphique (Blockly) Langage Python

Tests

Si nom = "Jérôme" alors Écrire("Bravo") Fin si Si âge < 18 alors Écrire("Mineur") Sinon Écrire("Majeur") Fin si Si salaire < 1466,62 alors Écrire("Pauvre") Sinon si salaire ≤ 3000 alors Écrire("Moyen") Sinon Écrire("Riche") Fin si Si âge < 18 alors Si salaire > 0 alors

salarie_mineur ← True Else

Salarie_mineur ← False Fin si Fin si Si age ≥ 25 et salaire = 0 alors Écrire("Droit au RSA") Fin si

if nom == "Jérôme": print("Bravo") if age < 18: print("Majeur") else: print("Mineur") if salaire < 1466.62: print("Pauvre") elif salaire <= 3000: print("Moyen") else: print("Riche") if age < 18: if salaire > 0: salarie_mineur = True else: salarie_mineur = False if age >=25 and salaire == 0: print("Droit au RSA")

Opérateurs de comparaison

= ≠ < ≤ > ≥ = ≠ < ≤ > ≥ == != < <= > >=

Opérateurs logiques

et ou non and or and or not

Page 8: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 7 sur 20

Concept Algorithmique textuelle Algorithmique graphique (Blockly) Langage Python

Boucles pour Pour i de 1 à 10 faire Écrire(7 x i) Fin pour

for i in range(1, 11): print(7 * i)

Boucles tant que

i ← 1 Tant que i ≤ 10 faire Écrire(7 x i)

i ← i + 1 Fin tant que

i = 1 while i <= 10: print(7 * i) i += 1

Boucles répéter jusqu’à

i ← 1 Répéter Écrire(7 x i)

i ← i + 1 Jusqu’à i > 10

(Fonctionne comme un while)

i = 1 while True: # Boucle infinie print(7 * i) i += 1 if i > 10: break # Très inélégant

Boucles imbriquées

Pour i de 1 à 5 faire Pour j de 1 à 5 faire Écrire(i x j) Fin pour Fin pour

for i in range(1, 6): for j in range(1, 6): print(i * j)

Page 9: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 8 sur 20

Concept Algorithmique textuelle Algorithmique graphique (Blockly) Langage Python

Procédures

Procédure table7() Var i : Entier Début Pour i de 1 à 10 faire Écrire(7 x i) Fin pour Fin Procédure table(n : Entier) Var i : Entier Début Pour i de 1 à 10 faire Écrire(n x i) Fin pour Fin Procédure tablegen( n : Entier, m : Entier) Var i : Entier Début Pour i de 1 à m faire Écrire(n x i) Fin pour Fin {Appel des procédures} table7() table(3)

max ← 15 tablegen(3, max)

def table7(): for i in range(1, 11): print(7 * i) def table(n): for i in range(1, 11): print(n * i) def tablegen(n, m): for i in range(1, m + 1): print(n * i) # Appel des procédures table7() table(3) max = 15 tablegen(3, max)

Page 10: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 9 sur 20

Concept Algorithmique textuelle Algorithmique graphique (Blockly) Langage Python

Fonctions

Fonction tva(prixHT : Réel) : Réel

Const TAUX ← 0,2 Début Retourner prixHT x (1 + TAUX) Fin {Appel de la fonction}

prixTTC ← tva(10,5)

def tva(prixHT): TAUX = 0.2 return prixHT * (1 + TAUX) def tva2(prixHT): TAUXPLEIN = 0.2 TAUXRED = 0.055 return prixHT * (1 + TAUXPLEIN), prixHT * (1 + TAUXRED) # Appel des fonctions prixTTC = tva(10.5) prixTTCplein, prixTTCred = tva2(10.5)

Traitement des chaînes de caractères

lettre3 ← nom[3]

extrait ← SousChaîne(nom, 3, 5)

extrait ← SousChaîne(nom, 1, 5)

longueur ← Longueur(nom)

nom_maj ← Majuscules(nom)

txt ← " A bra ca da bra "

txt ← SupprimerEspaces(txt)

pos ← ChercherPosition(txt, "bra")

txt ← Remplacer(txt, "bra", "BRA")

lettre3 = nom[2] # 1re position = 0 extrait = nom[2 : 5] # Arrêt avant 5 extrait = nom[: 5] # Depuis le début longueur = len(nom) # Fonction nom_maj = nom.upper() # Méthode txt = " A bra ca da bra " txt = txt.strip() pos = txt.find("bra") txt = txt.replace("bra", "BRA")

Page 11: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 10 sur 20

Concept Algorithmique textuelle Algorithmique graphique (Blockly) Langage Python

Listes

{Déclaration} Var lst : Liste d’entiers

lst ← ( ) {Liste vide}

lst ← (1, 5, 7) Écrire(lst(2))

lst( ) ← 9 {Ajout en fin} Ajouter(lst, 2, 4) {Ajout 2e position}

lst(2) ← 3 {Modification} Suppr(lst, 3) {Suppression 3e pos.}

taille ← Longueur(lst) Trier(lst)

pos ← ChercherPosition(lst, 3)

mots ← Découper(txt, " ") {Parcours de liste} Pour nombre dans lst faire Écrire(nombre) Fin pour

lst = [ ] # Liste vide lst = [1, 5, 7] print(lst[1]) lst2 = [1, 3.14, "ok", [ ]] # Multitype ! lst.append(9) # Ajout en fin lst.insert(1, 4) # Ajout en 2e position lst[1] = 3 # Modification lst.pop(2) # Suppression 3e pos. taille = len(lst) lst.sort() pos = lst.index(3) mots = txt.split(" ") # Parcours de liste for nombre in lst: print(nombre)

Page 12: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 11 sur 20

Concept Algorithmique textuelle Algorithmique graphique (Blockly) Langage Python

Fichiers

{Déclarations} Var f : Fichier Var lignes : Liste de Chaînes Var l : Chaîne {Création de fichier}

lignes ← ("Angèle", "Bernard", "Cherifa", "Doug")

f ← Ouvrir("fichier.txt", "écriture") Pour l dans lignes faire Écrire(f, l) Fin pour Fermer(f) {Ajout dans un fichier}

lignes ← ("Ekaterina", "Fali")

f ← Ouvrir("fichier.txt", "ajout") Pour l dans lignes faire Écrire(f, l) Fin pour Fermer(f) {Lecture d’un fichier}

f ← Ouvrir("fichier.txt", "lecture") Lire(f, l) Tant que non FinDeFichier(f) faire

lignes( ) ← l Lire(f, l) Fin tant que Fermer(f)

# Choix du répertoire de travail import os os.chdir("D:/Jérôme") # Création de fichier lignes = ["Bernard\n", "Cherifa\n", "Doug\n"] f = open("fichier.txt", "w") # (w)rite f.write("Angèle\n") # Ecriture unique # (\n = passage à la ligne) f.writelines(lignes) # Ecriture multiple f.close() # Ajout dans un fichier lignes = ["Ekaterina\n", "Fali\n"] f = open("fichier.txt", "a") # (a)ppend f.writelines(lignes) f.close() # Lecture d'un fichier f = open("fichier.txt", "r") # (r)ead lignes = f.readlines() # lignes est une liste de chaînes f.close()

Page 13: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 12 sur 20

Structure d’un algorithme

Algorithme Nom_algorithme {Déclaration constantes} {Déclaration variables} Début {Instructions} Fin

{Exemple} Algorithme Lire_Écrire Var message : Chaîne Début Lire(message) Écrire(message) Fin

Page 14: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 13 sur 20

Tables de vérité

Opérateurs élémentaires

Soient deux variables booléennes (prenant les valeurs Vrai ou Faux) C1 et C2.

Quel est le résultat des tests « Si non C1 », « Si C1 et C2 », « Si C1 ou C2 » ?

C1 C2 non C1 C1 et C2 C1 ou C2

Vrai Vrai Faux Vrai Vrai

Vrai Faux Faux Faux Vrai

Faux Vrai Vrai Faux Vrai

Faux Faux Vrai Faux Faux

Exemple de condition complexe

Soit la variable booléenne C3 ← (C1 et (non C2)) ou ((non C1) et C2), quelles sont les valeurs possibles de C3 en fonction de celles de C1 et C2 ?

C1 C2 non C2 C1 et (non C2) non C1 (non C1) et C2 C3

Vrai Vrai Faux Faux Faux Faux Faux

Vrai Faux Vrai Vrai Faux Faux Vrai

Faux Vrai Faux Faux Vrai Vrai Vrai

Faux Faux Vrai Faux Vrai Faux Faux

Page 15: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 14 sur 20

Modules Python

Définition

Un module (ou bibliothèque) est un fichier Python (extension .py) qui contient des fonctions pouvant être employées depuis plusieurs programmes.

Python inclut de plusieurs bibliothèques standards. De nombreuses bibliothèques externes sont également disponibles9.

Utilisation de modules dans un programme (exemples)

1. Importer le(s) module(s) : import os # Module « os »

import os, math # Modules « os » et « math »

2. Utiliser les fonctions d’un module : os.chdir("D:/Jérôme") # Fonction « chdir » du module « os »

racine_carree = math.sqrt(4) # Fonction « sqrt » du module « math »

1. Importer une/des fonction(s) d’un module : from os import chdir # Fonction « chdir » du module « os »

from math import * # Toutes les fonctions du module « math »

2. Utiliser les fonctions : chdir("D:/Jérôme") # Plus besoin de préfixer la fonction par le nom du module

racine_carree = sqrt(4)

Mode d’emploi des modules et fonctions

help("os") # Fournit la liste et la description de toutes les fonctions d’un module (ici, le module « os »)

help("os.chdir") # Fournit la description d’une fonction d’un module (ici, la fonction « chdir » du module « os »)

9 https://fr.wikibooks.org/wiki/Programmation_Python/Biblioth%C3%A8ques_pour_Python

Page 16: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 15 sur 20

Interface graphique tkinter (Tool kit interface)

Une interface tkinter est constituée d’une fenêtre dans laquelle on place des widgets :

• étiquettes textuelles,

• zones de saisie,

• boutons de commandes,

• canevas pour dessins,

• photos ou images.

Code Python Résultat

from tkinter import * # Importation du module tkinter

# Fenêtre fenetre = Tk() # Création de la fenêtre fenetre.title("Formulaire test") # Titre de la fenêtre fenetre.mainloop() # Affichage de la fenêtre

# Etiquette textuelle (code à insérer avant fenetre.mainloop()) etiq_nom = Label(fenetre, text = "Saisir votre nom :") # Création de l’étiquette etiq_nom["fg"] = "black" # Couleur du texte etiq_nom["bg"] = "white" # Couleur de l’arrière-plan de l’étiquette etiq_nom.pack() # Affichage de l’étiquette

# Zone de saisie (code à insérer avant fenetre.mainloop()) nom = Entry(fenetre) # Création de la zone de saisie nom.pack() # Affichage de la zone de saisie

# Bouton de commande (code à insérer avant fenetre.mainloop()) bouton = Button(fenetre, text = "Valider", command = afficher_nom) # Création du bouton de commande bouton.pack() # Affichage du bouton de commande

Page 17: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 16 sur 20

Code Python Résultat

# Fonction permettant de traiter la commande du bouton "Valider" (à insérer avant fenetre = Tk()) def afficher_nom(): fenetre_resultat = Tk() # Définition d’une nouvelle fenêtre fenetre_resultat.title("Votre nom") affichage = Label(fenetre_resultat) # Définition d’une étiquette pour l’affichage du nom saisi affichage["text"] = nom.get() # Lecture du contenu du widget "nom" affichage.pack() # Affichage du nom # Bouton qui ferme fenetre_resultat bouton_quitter = Button(fenetre_resultat, text = "Quitter", command = fenetre_resultat.destroy) bouton_quitter.pack()

# Canevas (code à insérer avant fenetre.mainloop()) # Création du canevas avec ses dimensions et sa couleur de fond dessin = Canvas(fenetre, width = 200, height = 200, bg = "cyan") dessin.pack() # Affichage du cannevas dessin.create_rectangle(0, 0, 200, 200) # Dessin d'un rectangle (coordonnées (0, 0) en haut à gauche) dessin.create_line(0, 0, 200, 200) # Dessin des diagonales dessin.create_line(0, 200, 200, 0) dessin.create_oval(75, 75, 125, 125, fill = "yellow") # Disque de couleur jaune inscrit dans un carré

Page 18: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 17 sur 20

Code Python Résultat

# Image (code à insérer avant fenetre.mainloop()) logoPython = PhotoImage(file = "pythonmini.png") # Création de l'image etiq_image = Label(fenetre, image = logoPython) # Association de l'image à une étiquette etiq_image.pack() # Affichage de l'étiquette

Page 19: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 18 sur 20

# Code complet from tkinter import * # Importation du module tkinter # Fonction permettant de traiter la commande du bouton "Valider" def afficher_nom(): fenetre_resultat = Tk() # Définition d’une nouvelle fenêtre fenetre_resultat.title("Votre nom") affichage = Label(fenetre_resultat) # Définition d’une étiquette pour l’affichage du nom saisi affichage["text"] = nom.get() # Lecture du contenu du widget "nom" affichage.pack() # Affichage du nom # Bouton qui ferme fenetre_resultat bouton_quitter = Button(fenetre_resultat, text = "Quitter", command = fenetre_resultat.destroy) bouton_quitter.pack() # Fenêtre fenetre = Tk() # Création de la fenêtre fenetre.title("Formulaire test") # Titre de la fenêtre # Etiquette textuelle etiq_nom = Label(fenetre, text = "Saisir votre nom :") # Création de l’étiquette etiq_nom["fg"] = "black" # Couleur du texte etiq_nom["bg"] = "white" # Couleur de l’arrière-plan de l’étiquette etiq_nom.pack() # Affichage de l’étiquette # Zone de saisie nom = Entry(fenetre) # Création de la zone de saisie nom.pack() # Affichage de la zone de saisie # Bouton de commande bouton = Button(fenetre, text = "Valider", command = afficher_nom) # Création du bouton de commande bouton.pack() # Affichage du bouton de commande

Page 20: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 19 sur 20

Code Python Résultat

# Canevas avec ses dimensions et sa couleur de fond dessin = Canvas(fenetre, width = 200, height = 200, bg = "cyan") dessin.pack() # Affichage du cannevas dessin.create_rectangle(0, 0, 200, 200) # Dessin d'un rectangle (coordonnées (0, 0) en haut à gauche) dessin.create_line(0, 0, 200, 200) # Dessin des diagonales dessin.create_line(0, 200, 200, 0) dessin.create_oval(75, 75, 125, 125, fill = "yellow") # Disque de couleur jaune inscrit dans un carré # Image logoPython = PhotoImage(file = "pythonmini.png") # Création de l'image etiq_image = Label(fenetre, image = logoPython) # Association de l'image à une étiquette etiq_image.pack() # Affichage de l'étiquette fenetre.mainloop() # Affichage de la fenêtre

Page 21: Algorithmique et programmation - Unité de Recherche 3083eric.univ-lyon2.fr/jdarmont/docs/m1hn-algo-prog-doc.pdfUn algorithme peut prendre des données en entrée et fournit au moins

M1 HN – Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ Page 20 sur 20

Webographie

Algorithmique

Christophe Darmangeat. Algorithmique et programmation pour non-matheux. Université Paris 7, 2013.

http://pise.info/algo/

Bouazza El Benani, Awatef Sayah. Cours d’informatique – Partie 1. Université Mohammed V Rabat, 2008.

https://web.archive.org/web/20180920202742/http://www.fsr.ac.ma/cours/informatique/elbenani/Partie1.pdf

Python

Vincent Le Goff. Apprenez à programmer en Python. OpenClassrooms, 2016.

https://openclassrooms.com/courses/apprenez-a-programmer-en-python

Robert Cordeau. Introduction à Python 3. Université Paris Sud.

http://www.maths-et-tiques.fr/telech/Python3v1-1.pdf

Wikilivres. Programmation Python. 2016.

https://fr.wikibooks.org/wiki/Programmation_Python

Pierre-Antoine Champin. Bonnes pratiques de programmation. Université Claude Bernard Lyon 1, 2015.

http://liris.cnrs.fr/pierre-antoine.champin/enseignement/algo/cours/algo/bonnes_pratiques.html

Raphaël Seban. IDLE – présentation rapide. L’environnement de développement standard Python. Developpez.com, 2014.

http://tarball69.developpez.com/articles/python/idle-presentation-rapide/

Étienne Florent. ISN : Documentation de tkinter. 2013.

http://tkinter.fdex.eu