0401_SA3

5
ESTP TP1 Informatique SA3 2013-2014 Python : séquences entières, conditionnelles, boucles 1 Les séquences entières (range ) Exercice 1. Exercices simples à rendre Programmez les réalisations des affichages suivants : Affichez tous les entiers de 1 à 10, séparés par une espace. Affichez à rebours tous les entiers de 10 à 0. Affichez tous les nombres pairs de -4 à 20. Exercice 2. Un peu plus difficiles à rendre Écrivez une fonction retournant la séquence (range ) croissante de tous les multiples de m (entier positif) compris entre a (inclus) et b (inclus). >>> mult(7,21,3) range(9, 22, 3) à rendre Écrivez une fonction affichant la table de Pythagore de la multiplication des nombres de 1 à n comme ci-dessous pour n=10. >>> pyth(10) * 1 2 3 4 5 6 7 8 9 10 1 1 2 3 4 5 6 7 8 9 10 2 2 4 6 8 10 12 14 16 18 20 3 3 6 9 12 15 18 21 24 27 30 4 4 8 12 16 20 24 28 32 36 40 5 5 10 15 20 25 30 35 40 45 50 6 6 12 18 24 30 36 42 48 54 60 7 7 14 21 28 35 42 49 56 63 70 8 8 16 24 32 40 48 56 64 72 80 9 9 18 27 36 45 54 63 72 81 90 10 10 20 30 40 50 60 70 80 90 100 Note : Pour l’alignement, on pourra utiliser la fonction format : format(5,"4d") retourne la chaîne de caractères " 5" (sur 4 positions, justifiée à droite). 2 Conditionnelles 2.1 Salaire (*) à rendre Exercice 3. Écrire une fonction ayant en paramètres le nombre d’heures effectuées par un salarié dans la semaine et son salaire horaire, qui retourne sa paye hebdomadaire. On prendra en compte les heures supplémentaires (au-delà de 35 heures) payées à 150%. Prototype : def salaire_hebdomadaire(nb_heures, salaire_horaire) : –1/5–

Transcript of 0401_SA3

Page 1: 0401_SA3

ESTP TP1 Informatique SA3 2013-2014

Python : séquences entières, conditionnelles, boucles

1 Les séquences entières (range)

Exercice 1. Exercices simples

à rendre Programmez les réalisations des affichages suivants :• Affichez tous les entiers de 1 à 10, séparés par une espace.• Affichez à rebours tous les entiers de 10 à 0.• Affichez tous les nombres pairs de -4 à 20.

Exercice 2. Un peu plus difficiles

à rendre Écrivez une fonction retournant la séquence (range) croissante de tous les multiplesde m (entier positif) compris entre a (inclus) et b (inclus).>>> mult(7,21,3)range(9, 22, 3)

à rendre Écrivez une fonction affichant la table de Pythagore de la multiplication des nombresde 1 à n comme ci-dessous pour n=10.>>> pyth(10)

* 1 2 3 4 5 6 7 8 9 101 1 2 3 4 5 6 7 8 9 102 2 4 6 8 10 12 14 16 18 203 3 6 9 12 15 18 21 24 27 304 4 8 12 16 20 24 28 32 36 405 5 10 15 20 25 30 35 40 45 506 6 12 18 24 30 36 42 48 54 607 7 14 21 28 35 42 49 56 63 708 8 16 24 32 40 48 56 64 72 809 9 18 27 36 45 54 63 72 81 90

10 10 20 30 40 50 60 70 80 90 100

Note : Pour l’alignement, on pourra utiliser la fonction format :format(5,"4d") retourne la chaîne de caractères " 5" (sur 4 positions, justifiée à droite).

2 Conditionnelles

2.1 Salaire (*)

à rendre

Exercice 3. Écrire une fonction ayant en paramètres le nombre d’heures effectuées par un salarié dansla semaine et son salaire horaire, qui retourne sa paye hebdomadaire.

On prendra en compte les heures supplémentaires (au-delà de 35 heures) payées à 150%.Prototype : def salaire_hebdomadaire(nb_heures, salaire_horaire) :

–1/5–

Page 2: 0401_SA3

ESTP TP1 Informatique SA3 2013-2014

2.2 Notes (*)Un professeur note les résultats d’un test portant sur 50 questions en utilisant la table suivante :

bonnes réponses 0-10 11-20 21-30 31-40 41-50note E D C B A

à rendre

Exercice 4. Écrire une fonction qui retourne la note, étant donné un nombre bonnes réponses.Prototype : def note (bonnes_reponses):

2.3 Calendrier (**)Parmi les traitements les plus souvent utilisés en informatique, on touve sans doute ceux agissant sur

des dates (affichage et calcul).Le calendrier en usage en France est le calendrier dit grégorien basé sur les principes suivants :– l’année est divisée en 12 mois numérotés de 1 à 12 ;– les mois 1, 3, 5, 7, 8, 10 et 12 comptent 31 jours ;– les mois 4, 6, 9 et 11 ont comptent 30 jours ;– le mois 2 compte 29 jours si l’année est bissextile, 28 sinon– une année est bissextile si– elle ne se termine pas par 00 et est divisible par 4,– elle se termine par 00 et son quotient par 100 est divisible par 4.

à rendre

Exercice 5. Écrire une fonction ayant en paramètre un entier représentant une année et retournantTrue si l’année est bissextile et False sinon.

Prototype : def bissextile(annee) :

à rendre

Exercice 6. Écrire une fonction ayant en paramètre deux entiers représentant un mois et une année etretournant le nombre de jours du mois de cette année.

Prototype : def nombre_jours_mois(mois, annee) :

à rendre

Exercice 7. Écrire une fonction ayant en paramètres trois entiers représentant un jour, un mois et uneannée et retournant True s’ils représentent une date valide et False sinon.

Le calendrier grégorien ayant été appliqué en France en décembre 1582, on considérera les datesantérieures à 1583 comme invalides.

Prototype : def datevalide(j, m, a) :

–2/5–

Page 3: 0401_SA3

ESTP TP1 Informatique SA3 2013-2014

3 Boucles et récursivité

3.1 PGCD (*)

à rendre

Exercice 8. Écrire une fonction qui retourne le plus grand commun diviseur (pgcd) de deux nombresentiers positifs.

L’algorithme d’Euclide est basé sur le principe suivant :

pgcd(a, b) =

∣∣∣∣ a si b = 0pgcd(b, a mod b) sinon

Prototype : def pgcd(a, b) :

3.2 Factorielle (*)

à rendre

Exercice 9. Écrire une fonction qui retourne la factorielle d’un entier.

n! =

∣∣∣∣ 1 si n = 0n× (n− 1)× (n− 2)× . . .× 2× 1 sinon

Prototype : def factorielle(n) :

3.3 Plus petit diviseur premier (**)

à rendre

Exercice 10. Écrire une fonction qui retourne le plus petit diviseur premier d’un nombre.Prototype : def plus_petit_diviseur_premier (n) :Principe : tester le reste de la division de n par tous les nombres à partir de 2.

3.4 Racine carrée (**)

à rendre

Exercice 11. Écrire une fonction qui calcule la racine carrée d’un nombre réel positif.L’algorithme de Newton est basé sur la convergence de la suite suivante :Principe : la suite définie par ∣∣∣∣∣∣∣

u0 = 1

un+1 =un +

a

un2

converge vers√a.

Prototype : def racine_carre(x) :

–3/5–

Page 4: 0401_SA3

ESTP TP1 Informatique SA3 2013-2014

3.5 Puissance entière itérative (**)

à rendre

Exercice 12. Écrire une fonction qui calcule an avec a réel et n entier positif. Utiliser un algorithmeitératif.

Prototype : def puissance(a, n) :

Note : on s’interdira bien évidemment d’utiliser l’opérateur ** .

3.6 Puissance entière récursive (**)

à rendre

Exercice 13. Écrire une fonction qui calcule an avec a réel et n entier positif.Utiliser un algorithmerécursif.

Le principe en est le suivant :

an =

∣∣∣∣∣∣1 si n = 0(an/2)2 si n est paira · an−1 si n est impair

Comparer les temps d’exécution avec la fonction précédente pour n = 100, 1000, 10000 (pour éviterles dépassements de capacité, prendre une valeur de test pour a proche de 1)

Prototype : def puissance_rapide(a, n) :

Note : on s’interdira bien évidemment d’utiliser l’opérateur ** .

3.7 Développements limités (**)

à rendre

Exercice 14. Écrire les fonctions qui calculent les développements limités à l’ordre n de sin x, cos x, ex

et arctan x.Rappel : ∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣

sinx = x− x3

3!+x5

5!− x7

7!+ . . .

cosx = 1− x2

2!+x4

4!− x6

6!+ . . .

ex = 1 + x+x2

2!+x3

3!+x4

4!+ . . .

arctanx = x− x3

3+x5

5− x7

7+ . . .

Prototype : def dev_lim_sin(x, n) :

Prototype : def dev_lim_cos(x, n) :

Prototype : def dev_lim_exp(x, n) :

Prototype : def dev_lim_atn(x, n) :

–4/5–

Page 5: 0401_SA3

ESTP TP1 Informatique SA3 2013-2014

3.8 Calcul de π (***)

Exercice 15. Trois méthodes pour calculer une valeur approchée de π.

à rendre • Écrire une fonction qui calcule une valeur approchée de π par le calcul du développement limité àl’ordre n de arctan 1(= π

4 ), multiplié par 4. Jusqu’à quelle valeur de n faut-il pousser le calcul pour avoirtrois chiffres significatifs ?

à rendre • Écrire une fonction qui calcule une valeur approchée de π par le calcul des développements limitésà l’ordre n correspondant à la formule de Machin

(π4 = 4arctan 1

5 − arctan 1239

). Jusqu’à quelle valeur de

n faut-il pousser le calcul pour avoir trois chiffres significatifs ?• Dans les années 1970, Salamin trouve une méthode plus rapide basée sur la théorie des intégrales

elliptiques. Dans cet algorithme, la ne valeur approchée de π se calcule par :

πn =4a2n

1− 2n∑i=1

2i (a2i − b2i )avec

∣∣∣∣∣∣∣a0 = 1 b0 =

1√2

an =an−1 + bn−1

2bn =

√an−1bn−1

à rendre Écrire une fonction qui calcule une valeur approchée de π par le la méthode de Salamin. Jusqu’àquelle valeur de n faut-il pousser le calcul pour avoir dix chiffres significatifs ?

Note : le record actuel (17 octobre 2011) de décimales de π est de 10 billions (1013 décimales)http://www.numberworld.org/misc_runs/pi-10t/details.html

–5/5–