Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
J Flottants : 3.14159, 2.014e10, a+b, a*b , a/b , a**b (exponentiation), max(a,b), abs(a)
Remarque : Pour chaque nombre ‡ottant (en précision usuelle, dite double-précision), 52 bits sont utilisés pour stocker
la mantisse, 1 bit pour le signe et 11 bits pour la puissance, donc au total 64 bits (c’est-à-dire 8 octets).
J Entiers : a//b et a%b renvoient le quotient et le reste de a par b. Par exemple, n%2 == 0 ssi n est pair.
Si x est un ‡ottant, int(x) renvoie la partie entière de x (à distinguer de floor(x) qui renvoie un ‡ottant).
Il faut 1 octet (8 bits) pour stocker un entier compris compris entre 0 et 255 = 28 1. Ainsi, une image 2D en 3 couleurs
(rgb) de taille 1000 1000 où l’intensité des couleurs est comprise entre 0 et 255 demande 3 MégaOctets.
Remarque : En Python, toutes les valeurs en tant que booléens valent True sauf la constante False, la constante None,
la constante 0, la liste vide [ ], le tuple vide (). Exemple : while L équivaut à while L != []
J Intervalles entiers : range(a,b,h) représente les entiers x = a + kh, avec k entier tel que x 2 [a; b[:
Listes
La structure de données la plus utilisée en Python est la liste. Les listes en Python sont des tableaux dynamiques.
J Obtention d’un élément : a[i] renvoie l’élément d’indice i dans la liste, pour 0 i n 1:
Modi…er la valeur d’un élément : a[i] = a[i] + 1. Ces opérations se font en temps constant (en moyenne).
J Concaténation de deux listes : a + b, qui crée une nouvelle liste en O(n) opérations, où n longueur de a
Opérations orientées-objets sur les listes ! utilisation dans les procédures pour modi…er une liste
J Tuples : Le cas classique est celui des couples : (a,b) noté aussi a,b. De même les triplets (a,b,c), etc.
Les tuples ne sont pas mutables : On accède aux éléments comme pour les listes, mais on ne peut pas les modi…er.
L’a¤ectation directe par éléments est possible dans les tuples : (x,y,z) = (1,2,3)
Ainsi, pour échanger les valeurs de deux variables, il su¢ t donc de considérer : (x,y) = (y,x).
Modules ( = bibliothèques)
Variante conseillée : from math import * . Ensuite, on utilise alors log directement au lieu de math.log.
Fonctions classiques : sqrt, sin, exp, log, abs, pi, floor et ceil (à valeurs ‡ottantes).
J Modules courants :
Instructions de programmation
J A¤ectation des variables : L’a¤ectation se fait par le symbole = sous la forme variable = valeur
Exemple important : L’échange de variables. La suite d’instructions z=x ; x=y; y=z permet d’échanger les valeurs
respectives de x et y:
En Python, pour les variables on peut opérer directement sur le couple (x; y) avec x,y = y,x
J Instruction conditionnelle IF
Remarque : L’instruction break au sein de la boucle provoque la sortie immédiate de la boucle. Elle est peu utilisée dans
les fonctions/procédures puique l’instruction return permet de sortir directement du corps de la fonction.
Types d’objets itérables : les intervalles range(1:4), les listes [1,2,3], chaînes de caractères , tuples,
Important : Listes dé…nies par extension à l’aide d’un itération : [ f(i) for i in range(0,n)]
Fonctions et procédures
J Syntaxe :
def nom(arguments) :
corps_de_la_fonction
La valeur de retour d’une fonction est obtenue par l’instruction : return ... dans le corps de la fonction.
Remarque : L’instruction return remplace souvent des break dans les boucles for (au sein de fonctions)
J En absence de return, la fonction renvoie la valeur None. C’est le cas généralement des procédures.
J Arguments par défaut : Une fonction peut être dé…nie avec davantage d’arguments qu’elle n’est utilisée. Dans ce cas,
les arguments supplémentaires doivent avoir une valeur par défaut. Exemple : def essai(x=1) ...
Tableaux (array)
Remarque : Sur les tableaux, les opérations s’e¤ectuent terme à terme (notamment l’addition +).
Ne pas confondre dot(M,M) avec M**2 (qui consiste à mettre au carré tous les coe¢ cients de M ).
Conversions et copies
J Les fonctions int, float, str, list, array permettent de modifer le type d’un objet.
Exemple : a = int(3.2) renvoie la partie entière de 3.2 , c’est-à-dire l’entier 3.
Exemple : a = int(input"entrer un entier") ; en entrant la chaîne "2", on dé…nit l’entier a = 2:
Exemple : a = float(2) équivaut à a = 2.0 ; s = str(2) équivaut à s = "2"
Exemple : Pour dé…nir le tableau [0; 51 ; 52 ; 35 ; 45 ; 1], on peut utiliser l’une des instructions suivantes :
J Les commandes list et array permettent aussi de faire une copie (physique) des listes et tableaux :
Représentations graphiques
La fonction de base est la fonction plot : Si x et y sont deux listes ou deux tableaux de même longueur n, l’instruction
plot(x,y) crée le graphe constitué de la ligne polygonale reliant les points (xk ; yk )0 k<n :
Exemple : On souhaite représenter dans [0; 1] [0; 3] le graphe de la fonction y = exp(x) sur [0; 1] par une ligne polygonale
composée de 100 segments correspondant à une subdivision régulière de [0; 1] en 100 intervalles.
Remarque : Par défaut, plot(x,y) équivaut à plot(x,y,"b-"), ce qui signi…e que les lignes sont représentées en bleu et
que les points de la ligne polygonale ne sont pas marqués.
Informatique : Algorithmique
1) Complexité
- En temps : Les opérations élémentaires sur les éléments des listes ou vecteurs se font en temps constant.
Remarque : La réutilisation d’une même variable permet souvent de limiter l’espace mémoire. Par exemple, pour calculer
Xn dé…nie par X0 et Xk+1 = f (Xk ), une seule case variable X est nécessaire (ou deux si on ne peut pas calculer
directement Xk+1 à partir de Xk sans utiliser une variable auxiliaire : on calcule à l’aide d’une variable auxiliaire Y la
nouvelle valeur de X à partir de l’ancienne, puis on e¤ectue l’a¤ectation X = Y ).
Remarque : On évalue parfois le nombre de bits utilisés (ou d’octets : 1 octet = 8 bits).
Mémoire vive (RAM), mémoire morte (ROM), exemple : 16 Go = 16 109 octets.
2) Structures de données
- Listes (list) : structures dynamiques : L[len(L)-1] += 1 ; L.insert(i,x)
Notamment structure de piles : L.append(x) ; L.pop()
3) Preuves de programmes
On explicite une grandeur entière naturelle qui décroît strictement (principe de Fermat : il n’existe pas dans N de suite
in…nie d’entiers strictement décroissante).
- Correction : On donne des invariants de boucles : on indique les valeurs des variables lors de la i-ième irération.
4) Méthodes de programmation
- Programmation dynamique : stocker de l’information pour éviter d’e¤ectuer plusieurs fois les mêmes calculs.
- Utilisation de structures triées (selon un ordre judicieux) en traitement préliminaire pour optimiser la complexité.
5) Algorithmes de tris
- Tri en O(n2 ) : par sélection (on cherche le plus petit élément, puis le deuxième plus petit, etc), par insertions (on met
chaque élément à sa place …nale).
- Tri rapides par dichotomie en O(n log n) : tri fusion (pire cas en O(n log n)) ; tri par pivot (O(n log n) en moyenne si le
pivot est aléatoire, pire cas en O(n2 ) ; tri par insertions dichotomiques (en utilisant la structure dynamique des listes).
Remarque : Si les éléments à trier ne véri…ent pas de propriété particulière, le tri optimal est en O(n log n):
5) Dichotomie
Remarque : Compte tenu des algorithmes proposés, la complexité c(n) est une fonction croissante de n.
- Exemple : Recherche d’un élément x dans une liste triée : En comparant x avec le médian (une opération), on se ramène
à la recherche de x dans des deux moitiés de liste. Notons c(n) le nombre de tests pour une liste de longueur n.
n
On a c(n) c( 2 ) + 1, d’où c(n) = O(log n):