Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
teaching:progappchim:presentation_principes [2017/01/30 17:37] – villersd | teaching:progappchim:presentation_principes [2023/02/21 14:56] (Version actuelle) – villersd | ||
---|---|---|---|
Ligne 32: | Ligne 32: | ||
<WRAP group> | <WRAP group> | ||
<WRAP half column> | <WRAP half column> | ||
- | <diagram> | + | <flowchartjs default> |
- | | AAA | |AAA{border-color:black; | + | |
- | | |!@4| | AB |AB{border-color: | + | |
- | | BBB | | | | | | | | | | |BBB{border-color:black; | + | |
- | | |!@4| | BC |BC{border-color: | + | |
- | | CCC | | | | | | | | | | |CCC{border-color:black; | + | |
- | </diagram> | + | |
+ | box1-> | ||
+ | </flowchartjs> | ||
</ | </ | ||
<WRAP half column> | <WRAP half column> | ||
Ligne 50: | Ligne 52: | ||
<WRAP group> | <WRAP group> | ||
<WRAP half column> | <WRAP half column> | ||
- | <diagram> | + | <flowchartjs default> |
- | | AAA | |AAA{border-color:black; | + | |
- | | |!@4| | AB |AB{border-color: | + | |
- | | BBB | | | | | | | | | | |BBB{border-color:black; | + | |
- | </diagram> | + | |
+ | box1->box2 | ||
+ | </flowchartjs> | ||
</ | </ | ||
<WRAP half column> | <WRAP half column> | ||
Ligne 69: | Ligne 73: | ||
<WRAP group> | <WRAP group> | ||
<WRAP half column> | <WRAP half column> | ||
- | <diagram> | + | <flowchartjs default> |
- | | AAA | |AAA{border-color:black; | + | |
- | | |!@4| | AB |AB{border-color: | + | |
- | | BBB | | | | | | | | | | |BBB{border-color:black; | + | |
- | | |!@4| | BC |BC{border-color: | + | |
- | | CCC | | | | | | | | | | |CCC{border-color:black; | + | |
- | </diagram> | + | |
+ | box1-> | ||
+ | </flowchartjs> | ||
</ | </ | ||
<WRAP half column> | <WRAP half column> | ||
Ligne 156: | Ligne 162: | ||
>>> | >>> | ||
</ | </ | ||
- | * Commandes : copyrigth, credits, license(), quit, help, help(),... | + | * Commandes : copyright, credits, license(), quit, help, help(),... |
==== Notion de variable ==== | ==== Notion de variable ==== | ||
Ligne 165: | Ligne 171: | ||
>>> | >>> | ||
>>> | >>> | ||
- | >>> | + | >>> |
>>> | >>> | ||
>>> | >>> | ||
Ligne 172: | Ligne 178: | ||
101555.51000000001 1.0022749568221072 | 101555.51000000001 1.0022749568221072 | ||
>>> | >>> | ||
+ | </ | ||
==== Un peu de calcul ==== | ==== Un peu de calcul ==== | ||
On peut effectuer quelques calculs sur des entiers : | On peut effectuer quelques calculs sur des entiers : | ||
+ | < | ||
>>> | >>> | ||
7042728 | 7042728 | ||
Ligne 184: | Ligne 190: | ||
669 | 669 | ||
>>> | >>> | ||
- | 5670847980L | + | 5670847980 |
>>> | >>> | ||
56088 | 56088 | ||
Ligne 191: | Ligne 197: | ||
* On peut travailler avec des très très très grands nombres... | * On peut travailler avec des très très très grands nombres... | ||
- | ==== Divisons | + | ==== Division et division entière |
< | < | ||
- | >>> | + | >>> |
2.3333333333333335 | 2.3333333333333335 | ||
- | >>> | + | >>> |
2 | 2 | ||
>>> | >>> | ||
</ | </ | ||
+ | * En python, chaque " | ||
+ | * type(a) | ||
+ | * id(a) | ||
+ | * type(b) | ||
+ | * id(b) | ||
+ | |||
+ | ==== De nombreuses autres possibilités avec les nombres... ==== | ||
+ | < | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | 8.31447334956 | ||
+ | >>> | ||
+ | 1.4142135623730951 | ||
+ | >>> | ||
+ | (29-29j) | ||
+ | >>> | ||
+ | 2.7182804690957272 | ||
+ | >>> | ||
+ | </ | ||
+ | * Les expressions numériques s’évaluent en respectant les régles habituelles de priorités : parenthèses, | ||
+ | * On peut aussi travailler facilement avec des tableaux contenant des milliers de données ! | ||
+ | |||
+ | ==== Un peu de logique : le type booléen ! ==== | ||
+ | < | ||
+ | >>> | ||
+ | True | ||
+ | >>> | ||
+ | False | ||
+ | >>> | ||
+ | (True, False) | ||
+ | >>> | ||
+ | True | ||
+ | >>> | ||
+ | False | ||
+ | >>> | ||
+ | <class ' | ||
+ | </ | ||
+ | * Les tests, comparaisons et leurs combinaisons logiques sont utiles pour réaliser des opérations de manière conditionnelle. Pour la logique booléenne : cf. [[wp> | ||
+ | |||
+ | ==== Les chaînes de caractères ==== | ||
+ | * appelées aussi “string” | ||
+ | * mots, phrases, ou texte long | ||
+ | * délimitées par ’ (apostrophe) ou " (guillemet) | ||
+ | * la casse est significative | ||
+ | * caractères accentués, spéciaux et chiffres permis (caractères [[wp> | ||
+ | * CONSEIL : éviter les accents dans les noms des variables | ||
+ | * peuvent comprendre des retours à la ligne (Enter) si délimitées par ””” | ||
+ | |||
+ | ==== Les chaînes de caractères ==== | ||
+ | < | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | True False | ||
+ | >>> | ||
+ | >>> | ||
+ | pâté123# | ||
+ | >>> | ||
+ | >>> | ||
+ | deux | ||
+ | ... | ||
+ | dix""" | ||
+ | >>> | ||
+ | un | ||
+ | deux | ||
+ | ... | ||
+ | dix | ||
+ | >>> | ||
+ | </ | ||
+ | |||
+ | ==== Opérations sur les chaînes ==== | ||
+ | < | ||
+ | >>> | ||
+ | >>> | ||
+ | ' 15 septembre 2009' | ||
+ | >>> | ||
+ | 6 | ||
+ | >>> | ||
+ | [' | ||
+ | >>> | ||
+ | 'MONS, LE 15 SEPTEMBRE 2009' | ||
+ | >>> | ||
+ | ' | ||
+ | >>> | ||
+ | </ | ||
+ | |||
+ | ==== Créer son premier programme ==== | ||
+ | * Utiliser Idle3 comme éditeur (ou tout autre éditeur) | ||
+ | * Sauvegarder | ||
+ | * Exécuter | ||
+ | * Fermer | ||
+ | * Rouvrir Idle3 et le programme | ||
+ | * Exécuter | ||
+ | |||
+ | <code python> | ||
+ | # | ||
+ | # -*- coding: utf-8 -*- | ||
+ | """ | ||
+ | pour afficher une chaîne de caractères | ||
+ | """ | ||
+ | chaine = ' | ||
+ | print(chaine) | ||
+ | </ | ||
+ | |||
+ | ===== Un peu plus loin dans Python ===== | ||
+ | |||
+ | ==== Types de haut niveau ==== | ||
+ | Au delà des types de base (integer, float, string,...) on peut avoir des types sophistiqués (containers) | ||
+ | * listes | ||
+ | * dictionnaires | ||
+ | * tuples | ||
+ | * sets | ||
+ | * ... | ||
+ | |||
+ | ==== Listes ==== | ||
+ | * collections/ | ||
+ | * peuvent être homogènes ou hétérogènes (types identiques ou mélangés) | ||
+ | * on peut les compléter ou enlever des éléments dynamiquement | ||
+ | * indicées (numérotées) à partir de 0 | ||
+ | * utilisables comme tableaux multidimensionnels | ||
+ | * nombreuses manipulations possibles (opérations, | ||
+ | |||
+ | ==== Listes (bis) ==== | ||
+ | <code python> | ||
+ | >>> | ||
+ | >>> | ||
+ | [31, 16, ' | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | [31, 16, ' | ||
+ | >>> | ||
+ | 9 | ||
+ | >>> | ||
+ | (1+3j) | ||
+ | >>> | ||
+ | [2, ' | ||
+ | >>> | ||
+ | ' | ||
+ | >>> | ||
+ | [' | ||
+ | </ | ||
+ | |||
+ | ==== Listes (ter) ==== | ||
+ | <code python> | ||
+ | >>> | ||
+ | ' | ||
+ | >>> | ||
+ | ' | ||
+ | >>> | ||
+ | [31, 16, ' | ||
+ | >>> | ||
+ | ' | ||
+ | >>> | ||
+ | 121 | ||
+ | >>> | ||
+ | >>> | ||
+ | [2, ' | ||
+ | >>> | ||
+ | >>> | ||
+ | [31, 16, ' | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Dictionnaires ==== | ||
+ | * collections/ | ||
+ | * Chaque clé doit être unique (n' | ||
+ | * Les valeurs peuvent être un objet de n’importe quel type (de base ou autres) | ||
+ | * Clés et valeurs sont séparées par le caractère ":" | ||
+ | * Les paires clés :valeurs sont séparées par des virgules et le tout encadré par une paire d’accolades {} forme le dictionnaire. | ||
+ | |||
+ | ==== Dictionnaires (bis) ==== | ||
+ | <code python> | ||
+ | >>> | ||
+ | >>> | ||
+ | dict_keys([' | ||
+ | >>> | ||
+ | {' | ||
+ | >>> | ||
+ | 11 | ||
+ | >>> | ||
+ | False | ||
+ | >>> | ||
+ | >>> | ||
+ | [(' | ||
+ | >>> | ||
+ | </ | ||
+ | |||
+ | ==== Tuples ==== | ||
+ | * Les tuples sont comme les listes, MAIS : | ||
+ | * entourés de parenthèses au lieu de crochets | ||
+ | * les éléments sont non-modifiables après la création | ||
+ | * pas de méthodes sur les tuples (rechercher, | ||
+ | * les tuples sont plus rapides d’accès que les listes | ||
+ | * ils peuvent être utilisés comme clés de dictionnaires | ||
+ | * il est possible de convertir un tuple en liste et vice-versa | ||
+ | |||
+ | ==== Ensemble (set) ==== | ||
+ | * collection non ordonnée d' | ||
+ | * L' | ||
+ | |||
+ | ==== Structure conditionnelle ==== | ||
+ | Instruction d’exécution conditionnelle if...elif...else (si...sinon-si...autrement) | ||
+ | * Commence par **if expression** : | ||
+ | * Si l’expression est vraie, le bloc d’instructions qui suit est exécuté | ||
+ | * Si c’est faux, **elif expression** : permet d’enchaîner une seconde condition | ||
+ | * Si aucune condition n’est vérifiée, **else** : permet de déterminer les instructions à effectuer | ||
+ | |||
+ | ==== Structure conditionnelle (exemple) ==== | ||
+ | <code python> | ||
+ | a = int(input(' | ||
+ | if a >= 18: | ||
+ | print(" | ||
+ | elif a >= 16: | ||
+ | print(" | ||
+ | elif a >= 14: | ||
+ | print(" | ||
+ | elif a >= 12: | ||
+ | print(" | ||
+ | elif a >= 10: | ||
+ | print(" | ||
+ | else: | ||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | ==== Structures de répétition while et for ==== | ||
+ | |||
+ | === While === | ||
+ | * Commence par **while expression :** | ||
+ | * Si l’expression est vraie, le bloc d’instructions qui suit est exécuté | ||
+ | * L’expression est à nouveau évaluée | ||
+ | * Lorsque l’expression est (devient) fausse, le bloc n’est plus exécuté | ||
+ | * **break** permet de quitter prématurément la structure de répétition | ||
+ | |||
+ | === for === | ||
+ | * Commence par for element in sequence : | ||
+ | * Le bloc d’instructions qui suit est exécuté autant de fois qu’il y a d’éléments dans la séquence | ||
+ | * Else : permet d’exécuter un autre bloc après avoir considéré tous les éléments | ||
+ | * **break** permet de quitter prématurément la structure de répétition | ||
+ | |||
+ | === Exemples while et for === | ||
+ | |||
+ | <code python> | ||
+ | print(' | ||
+ | c=0 | ||
+ | while c< 4: | ||
+ | print(c) | ||
+ | c=c+1 | ||
+ | print(' | ||
+ | |||
+ | print(' | ||
+ | a=range(11) | ||
+ | print(a) | ||
+ | for n in a: | ||
+ | print(n*7) | ||
+ | </ | ||
+ | |||
+ | ==== Indentations des structures ==== | ||
+ | L’indentation est intégrée à Python | ||
+ | * Les retraits permettent de reconnaître et exécuter des structures dans des structures | ||
+ | * Efficace, léger et très favorable à une écriture compacte et lisible des programmes | ||
+ | * Tabulations (en fait remplacées par 4 espaces !) | ||
+ | * Importance de la configuration correcte de l’éditeur (utilisation d' | ||
+ | * Si l’indentation n’est pas respectée précisément : erreur | ||
+ | |||
+ | ==== Exemples d’indentation ==== | ||
+ | <code python> | ||
+ | print(' | ||
+ | a=range(11) | ||
+ | for i in a: | ||
+ | for j in a: | ||
+ | print(i*j, end = ' ') | ||
+ | print(' | ||
+ | </ | ||
+ | |||
+ | ==== Fonctions en Python ==== | ||
+ | * Permettent d’étendre le langage | ||
+ | * Résolvent un problème délimité | ||
+ | * Font appel elles-mêmes à d’autres fonctions | ||
+ | * Dépendent de variables (arguments, paramètres) | ||
+ | * Appelables autant de fois que souhaité, avec des arguments quelconques | ||
+ | * Renvoient (ou non) un résultat utilisable dans une expression | ||
+ | * Utilisent des noms de variables à portée locale | ||
+ | * Définies par le programmeur, | ||
+ | * Spécifiées ou définies avant l’utilisation | ||
+ | |||
+ | ==== Exemple de fonction ==== | ||
+ | <code python> | ||
+ | def f1(x): | ||
+ | return x**2. | ||
+ | |||
+ | def f3(w): | ||
+ | print(" | ||
+ | return a * w**3. | ||
+ | |||
+ | def f2(x): | ||
+ | a = 1.111111 | ||
+ | print(" | ||
+ | return x**1.5 *f3(x) | ||
+ | |||
+ | a = 2. | ||
+ | u = 9. | ||
+ | print(" | ||
+ | print(" | ||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | ==== Exemple de fonction (2) ==== | ||
+ | <code python> | ||
+ | def fractions(nummol): | ||
+ | sum=0. | ||
+ | for num in nummol: | ||
+ | sum+=num | ||
+ | fract=[] | ||
+ | for num in nummol: | ||
+ | fract.append(num/ | ||
+ | return fract | ||
+ | |||
+ | li=input(" | ||
+ | print(li, | ||
+ | n = [float(c) for c in li.split(',' | ||
+ | print(n, | ||
+ | print(fractions(n)) | ||
+ | </ | ||
+ | |||
+ | ==== Utilisation de librairies de fonctions standard ==== | ||
+ | <code python> | ||
+ | >>> | ||
+ | >>> | ||
+ | 3.141592653589793 | ||
+ | >>> | ||
+ | 1.0 | ||
+ | >>> | ||
+ | {' | ||
+ | ... | ||
+ | >>> | ||
+ | 'This module is always available. | ||
+ | >>> | ||
+ | ' | ||
+ | </ | ||
+ | On peut modifier les noms des fonctions et la façon de les stipuler (espaces de noms) par la directive import | ||
+ | |||
+ | ==== Modules, objets, classes, librairies ==== | ||
+ | Python est un langage très moderne → structures très avancées | ||
+ | * Classes (programmation objet), regroupant variables, données et fonctions | ||
+ | * Module : ensemble de code repris dans un seul fichier | ||
+ | * Paquet ou Librairie : ensemble de modules avec une arborescence en répertoires | ||
+ | |||
+ | La programmation avancée en Python comprend aussi : | ||
+ | * la gestion des erreurs | ||
+ | * des procédures de tests | ||
+ | * la génération de documentation sous différentes formes | ||
+ | * la possibilité d' | ||
+ | * ... | ||
+ | |||
+ | ==== Notion d’algorithme ==== | ||
+ | Algorithme : description des opérations à effectuer pour résoudre un problème | ||
+ | * Indépendant des ordinateurs | ||
+ | * Logique et systématique | ||
+ | * Langage courant structuré | ||
+ | * Transposable pour différents langages de programmation | ||
+ | * Détermine le temps d’exécution et la mémoire nécessaire en terme de proportionnalité à la taille du problème | ||
+ | Exemple : la multiplication matricielle nécessite de l’ordre de N< | ||
+ | |||
+ | Référence : [[http:// | ||
+ | |||
+ | ===== Pour terminer ===== | ||
+ | Exemples d' | ||
+ | |||
+ | ==== Simple, avec le module standard Turtle ==== | ||
+ | <code python> | ||
+ | from turtle import * | ||
+ | |||
+ | reset() | ||
+ | i=0 | ||
+ | while i<120: | ||
+ | forward(i) | ||
+ | left(90) | ||
+ | i=i+2 | ||
+ | input(' | ||
+ | </ | ||
+ | |||
+ | ==== Coloré, avec le module standard Turtle ==== | ||
+ | <code python> | ||
+ | from turtle import * | ||
+ | |||
+ | reset() | ||
+ | x=-100 | ||
+ | y=-100 | ||
+ | i=0 | ||
+ | while i < 10: | ||
+ | j=0 | ||
+ | while j <10: | ||
+ | up() | ||
+ | goto(x+i*20, | ||
+ | down() | ||
+ | begin_fill() | ||
+ | n=0 | ||
+ | while n <4 : | ||
+ | forward(16) | ||
+ | left(90) | ||
+ | n=n+1 | ||
+ | color((i*0.1, | ||
+ | end_fill() | ||
+ | color(0, | ||
+ | j=j+1 | ||
+ | i=i+1 | ||
+ | |||
+ | input(' | ||
+ | </ | ||
+ | |||
+ | ==== Simple, avec l’interface graphique Tkinter ==== | ||
+ | <code python> | ||
+ | from tkinter import * | ||
+ | |||
+ | fen01 = Tk() | ||
+ | fen01.title(" | ||
+ | chaine1 = Label (fen01, text = " | ||
+ | chaine2 = Label (fen01, text = " | ||
+ | chaine1.grid(row =0) | ||
+ | chaine2.grid(row =1) | ||
+ | entr1= Entry(fen01) | ||
+ | entr2= Entry(fen01) | ||
+ | entr1.grid(row =0, column =1) | ||
+ | entr2.grid(row =1, column =1) | ||
+ | bou1=Button(fen01, | ||
+ | bou1.grid(row=2, | ||
+ | |||
+ | fen01.mainloop() | ||
+ | |||
+ | m1 = float(entr1.get()) | ||
+ | m2 = float(entr2.get()) | ||
+ | fen01.destroy() | ||
+ | |||
+ | print(' | ||
+ | </ | ||
+ | |||
+ | ==== Tkinter : animation ==== | ||
+ | <code python anima_auto_rebond.py> | ||
+ | #! / | ||
+ | # -*- coding: utf-8 -*- | ||
+ | |||
+ | # Petit exercice utilisant la librairie graphique Tkinter | ||
+ | |||
+ | from tkinter import * | ||
+ | |||
+ | # définition des gestionnaires | ||
+ | # d' | ||
+ | |||
+ | def move(): | ||
+ | " | ||
+ | global x1, y1, vx, vy, dt, flag | ||
+ | x1, y1 = x1 +vx*dt, y1 + vy*dt | ||
+ | if x1 < 0 or x1 > 220: | ||
+ | vx=-vx | ||
+ | if y1 < 0 or y1 > 220: | ||
+ | vy = -vy | ||
+ | can1.coords(oval1, | ||
+ | if flag > | ||
+ | fen1.after(2, | ||
+ | |||
+ | def stop_it(): | ||
+ | "arret de l' | ||
+ | global flag | ||
+ | flag =0 | ||
+ | |||
+ | def start_it(): | ||
+ | " | ||
+ | global flag | ||
+ | if flag ==0: # pour éviter que le bouton ne puisse lancer plusieurs boucles | ||
+ | flag =1 | ||
+ | | ||
+ | |||
+ | #========== Programme principal ============= | ||
+ | |||
+ | # les variables suivantes seront utilisées de manière globale : | ||
+ | x1, y1 = 40, 115 # coordonnées initiales | ||
+ | vx, vy = 10, 5 # vitesse du déplacement | ||
+ | dt=0.1 | ||
+ | flag =0 # commutateur | ||
+ | |||
+ | # Création du widget principal (" | ||
+ | fen1 = Tk() | ||
+ | fen1.title(" | ||
+ | # création des widgets " | ||
+ | can1 = Canvas(fen1, | ||
+ | can1.pack(side=LEFT, | ||
+ | oval1 = can1.create_oval(x1, | ||
+ | bou1 = Button(fen1, | ||
+ | bou1.pack(side=BOTTOM) | ||
+ | bou2 = Button(fen1, | ||
+ | bou2.pack() | ||
+ | bou3 = Button(fen1, | ||
+ | bou3.pack() | ||
+ | # démarrage du réceptionnaire d' | ||
+ | fen1.mainloop() | ||
+ | </ | ||
+ | |||
+ | ==== tkinter : tkDemo, demonstration of Tk widgets ==== | ||
+ | |||
+ | FIXME : ? tkdemo était proposé pour la branche 2 de Python. Rechercher pour la version python 3 ? | ||
+ | |||
+ | Voir par exemple [[https:// | ||
+ | |||
+ | |||
+ | ==== Graphiques simples avec matplotlib ==== | ||
+ | <code python> | ||
+ | # cosinusoïde amortie | ||
+ | from pylab import * | ||
+ | |||
+ | def my_func(t): | ||
+ | s1 = cos(2*pi*t) | ||
+ | e1 = exp(-t) | ||
+ | return s1*e1 | ||
+ | |||
+ | tvals = arange(0., 5., 0.05) | ||
+ | # | ||
+ | #show() | ||
+ | |||
+ | plot(tvals, my_func(tvals), | ||
+ | show() | ||
+ | </ | ||
+ | |||
+ | ==== Calculs numériques (FFT) et graphiques plus élaborés ==== | ||
+ | |||
+ | [[teaching: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ==== Graphiques et illustrations plus complexes ==== | ||
+ | |||
+ | [[teaching: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== pH d’un acide en fonction d’un ajout de base et d’une dilution ==== | ||
+ | [[teaching: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== Calculs sur des molécules ==== | ||
+ | < | ||
+ | mol wt = 32.04186 - Numb atoms = 6 - Numb bonds = | ||
+ | 12.0107 6 C x= 0.956 y= -0.086 z= -0.056 | ||
+ | 15.9994 8 O x= 0.488 y= -1.374 z= 0.299 | ||
+ | 1.00794 1 H x= 0.587 y= 0.64 z= 0.672 | ||
+ | 1.00794 1 H x= 0.584 y= 0.177 z= -1.05 | ||
+ | 1.00794 1 H x= 2.049 y= -0.08 z= -0.052 | ||
+ | 1.00794 1 H x= 0.831 y= -1.996 z= -0.365 | ||
+ | partial charges = (0.28, -0.68, 0.0, 0.0, 0.0, 0.4) | ||
+ | total charge = 0 | ||
+ | </ | ||
+ | |||
+ | Ces données ont été générées à partir de la chaîne smile ’CO’ du méthanol en utilisant des librairies Python existantes et les programmes de chimie OpenBabel | ||
+ | |||
+ | ===== Objectifs du cours ===== | ||
+ | ==== Développer des capacités à programmer ==== | ||
+ | L’apprentissage des rudiments de la programmation vous permettra : | ||
+ | * d’utiliser des petits programmes existants en les modifiant légèrement (niveau élémentaire) | ||
+ | * d’écrire un programme pour solutionner un problème scientifique, | ||
+ | * d’élaborer un programme original pour solutionner un problème scientifique (niveau supérieur) | ||
+ | * Utiliser des techniques de programmation avancées pour solutionner un problème original (niveau excellent) | ||
+ | |||
+ | Quelque soit le niveau de la programmation, | ||
+ | |||
+ | ==== Apprendre par la pratique ==== | ||
+ | La pratique est la clé de l’apprentissage de tout langage ! Pour atteindre les objectifs, vous procéderez par étape : | ||
+ | * Reproduire quelques programmes très simples pour se familiariser avec le cycle édition-exécution | ||
+ | * Apprendre les bases en suivant le canevas proposé, un manuel/ | ||
+ | * Manipuler les outils d’aide, documenter et commenter Apprendre à rechercher et corriger les erreurs | ||
+ | * Rechercher des exemples simples d’applications (scientifiques, | ||
+ | * Programmer des problèmes inédits, simples | ||
+ | * Utiliser des sources de codes et documentations diverses : livres, forums, sites web | ||
+ | * Se donner un projet à réaliser, d’envergure adaptée à ses capacités, et le réaliser | ||
+ | |||
+ | ==== Aide en ligne, sites, manuels, fichiers, forums,... ==== | ||
+ | * Aide sur en ligne à partir de Idle, sous windows (touche F1) | ||
+ | * sur python.org | ||
+ | * sur les sites officiels de librairies utilisées | ||
+ | * ... | ||
+ | |||
+ | ==== Références ==== | ||
+ | * Des documents du cours, des exemples et des applications, | ||
+ | * Des références générales sur Python sont regroupées à la page : [[floss :python]] | ||