Algorithmique
  1. Expliquer les instructions du programme ci-dessous :

  2. a = 12.5 b = 8.5 m = (a+b)/2 if m > 10: print("Tu es fort !") else: print("Tu peux mieux faire !")
  3. Modifier la valeur initiale de la variable b pour que le programme affiche « Tu peux mieux faire ! ».
Modifier la valeur initiale de la variable x pour que le programme afiche « Bingo ! »

x = 100 if 3*x == 132: print("Bingo !") else: print("Défaite...") Modifier la valeur initiale de la variable x pour que le programme afiche « Bingo ! »

x = 10 if 3*x-7 > -0.1 and 3*x-7 < 0.1: print("Bingo !") else: print("Défaite...") Le programme suivant permet de déterminer la moyenne de trois nombres a, b et c. Il contient une erreur. Proposer une modification pour que l'algorithme soit opérationnel.

def moyenne(a,b,c): m = (a+b+c)/2.0 return m print( moyenne(10,12,8) ) Le programme suivant permet de déterminer la somme de tous les entiers de 1 jusqu'à 10. Il contient une erreur. Proposer une modification pour que l'algorithme soit opérationnel.

s = 0 for i in range(0,10): s = s+i print(s) Le programme suivant permet de déterminer la moyenne d'une liste de nombres. Il contient une erreur. Proposer une modification pour que l'algorithme soit opérationnel.

def moyenne(L): n = len(L) s = 0.0 for i in range(1,n): s = s+L[i] return s/n liste = [5,15] print( moyenne(liste) ) Le programme suivant modélise un exemple de dérive génétique : à partir de la fréquence initiale f d'un allèle dans une population de taille constante p on donne la fréquence de cet allèle après n générations.
Expliquer chaque instruction de ce programme.

from random import * def derive(f,p,n): freq = f for i in range(1,n+1): a = 0.0 for j in range(0,p): if random() < freq: a = a+1 freq = a/p return freq print( derive(0.5,100,10) )

Un exemple avec un graphique pour visualiser l'évolution allélique.
Les paramètres de fréquence f, taille de la population p et nombre de générations n, sont modifiables aux lignes 35, 36 et 37.

Xmin = -1 Xmax = 10.1 Ymin = -0.1 Ymax = 1.1 function derive(f,p,n){ F = []; freq = f; for(i = 0; i < n; i++){ a = 0 for(var j = 0; j < p; j++){ if(Math.random() < freq){ a = a+1; } } freq = a/p F.push(freq) } return F } function traceEvol(F, coul){ n = F.length; pas = 10/n; couleur = coul for(var i = 0; i < n-1; i++){ segment([pas*i,F[i]],[pas*(i+1),F[i+1]]) } } couleur = noir; AxeX = true AxeY = true f = 0.5 p = 100 n = 200 traceEvol(derive(f,p,n),"rgb(255,0,0)"); traceEvol(derive(f,p,n),"rgb(0,255,0)"); traceEvol(derive(f,p,n),"rgb(0,0,255)");