Ajouts et corrections diverses avant rentrée
This commit is contained in:
parent
878b016119
commit
b9456a4295
28 changed files with 652 additions and 559 deletions
|
|
@ -7,6 +7,14 @@ transition: coverflow
|
|||
footer: ''
|
||||
math: katex
|
||||
---
|
||||
|
||||
<style>
|
||||
section {
|
||||
font-size: 32px;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
# Représentation des entiers naturels
|
||||
---
|
||||
|
||||
|
|
@ -220,7 +228,7 @@ Exercice: Convertir en binaire
|
|||
|
||||
Exemple avec le nombre $53_{|10}$ qui s'écrit $110101_{|2}$ en binaire :
|
||||
|
||||

|
||||

|
||||
|
||||
---
|
||||
<style scoped>
|
||||
|
|
@ -309,3 +317,165 @@ Exercice : Convertir en binaire
|
|||
- 0110 1110
|
||||
- 0011 1100 1111
|
||||
-->
|
||||
|
||||
---
|
||||
|
||||
### Conversion décimal vers hexadécimal
|
||||
|
||||
Deux méthodes possibles:
|
||||
- On convertit en binaire puis en hexadécimal
|
||||
- On utilise la méthode des divisions successives, mais en divisant par 16
|
||||
|
||||
---
|
||||
|
||||
Exemple avec $47_{|10}$.
|
||||
|
||||
|32|16|8|4|2|1|
|
||||
|--|--|-|-|-|-|
|
||||
| 1| 0|1|1|1|1|
|
||||
|
||||
$${\overbrace{0010}^{2_{|16}}\overbrace{1111}^{\mathrm{F}_{|16}}}_{|2} = \mathrm{2F}_{|16}$$
|
||||
|
||||
---
|
||||
|
||||
Exemple avec $47_{|10}$.
|
||||
|
||||

|
||||
|
||||
On obtient donc $47_{|10} = \mathrm{2F}_{|16}$
|
||||
|
||||
---
|
||||
|
||||
# Opérateurs booléens
|
||||
|
||||
---
|
||||
<style scoped>
|
||||
section {
|
||||
font-size: 28px;
|
||||
}
|
||||
</style>
|
||||
- Algèbre de Boole ou calcul booléen :
|
||||
- opérations logiques sur des bits
|
||||
- Utile pour :
|
||||
- En programmation pour valider des conditions
|
||||
- En embarqué ou en réseau pour faire des calculs sur des nombres binaires
|
||||
|
||||
---
|
||||
|
||||
## Opérateur ET
|
||||
|
||||
---
|
||||
<style scoped>
|
||||
section {
|
||||
font-size: 28px;
|
||||
}
|
||||
</style>
|
||||
|
||||
!!! success À retenir
|
||||
L'opérateur ET ne renvoie 1 que si les deux arguments sont à 1. Sinon il renvoie 0.
|
||||
|
||||
**Si A ET B valent 1**
|
||||
|
||||
|A|B|A ET B|
|
||||
|-|-|:-:|
|
||||
|0|0|0|
|
||||
|1|0|0|
|
||||
|0|1|0|
|
||||
|1|1|1|
|
||||
|
||||
En python :
|
||||
- `and` lorsqu'on travaille avec des booléens
|
||||
- `&` lorsqu'on veut travailler en bit à bit
|
||||
!!!
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Opérateur OU
|
||||
|
||||
---
|
||||
<style scoped>
|
||||
section {
|
||||
font-size: 28px;
|
||||
}
|
||||
</style>
|
||||
!!! success À retenir
|
||||
L'opérateur OU renvoie 1 si au moins l'un des deux arguments est à 1. Sinon il renvoie 0.
|
||||
|
||||
**Si A vaut 1 ou si B vaut 1 ou si les deux valent 1**
|
||||
|
||||
|A|B|A OU B|
|
||||
|-|-|:-:|
|
||||
|0|0|0|
|
||||
|1|0|1|
|
||||
|0|1|1|
|
||||
|1|1|1|
|
||||
|
||||
En python:
|
||||
- `or` lorsqu'on travaille avec des booléens
|
||||
- `|` lorsqu'on veut travailler en bit à bit.
|
||||
!!!
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Opérateur NON
|
||||
|
||||
---
|
||||
|
||||
<style scoped>
|
||||
section {
|
||||
font-size: 28px;
|
||||
}
|
||||
</style>
|
||||
!!! success À retenir
|
||||
L'opérateur NON inverse la valeur du bit auquel il est appliqué.
|
||||
|
||||
|A|NON A|
|
||||
|-|:-:|
|
||||
|0|1|
|
||||
|1|0|
|
||||
|
||||
En python:
|
||||
- `not` lorsqu'on travaille avec des booléens
|
||||
- `~` pour l'inversion bit à bit.
|
||||
!!!
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Opérateur OU EXCLUSIF
|
||||
|
||||
---
|
||||
<style scoped>
|
||||
section {
|
||||
font-size: 28px;
|
||||
}
|
||||
</style>
|
||||
!!! success À retenir
|
||||
OU EXCLUSIF renvoie 1 si seulement l'un des deux arguments est à 1. Sinon il renvoie 0.
|
||||
|
||||
**Si A seulement vaut 1 ou si B seulement vaut 1**
|
||||
|
||||
|A|B|A XOR B|
|
||||
|-|-|:-:|
|
||||
|0|0|0|
|
||||
|1|0|1|
|
||||
|0|1|1|
|
||||
|1|1|0|
|
||||
|
||||
En python, il n'existe pas. Il est en pratique rarement utilisé.
|
||||
!!!
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
|
@ -1,302 +0,0 @@
|
|||
---
|
||||
marp: true
|
||||
theme: catppuccin
|
||||
paginate: true
|
||||
size: 4:3
|
||||
transition: coverflow
|
||||
footer: ''
|
||||
math: katex
|
||||
---
|
||||
<style>
|
||||
section {
|
||||
font-size: 28px;
|
||||
}
|
||||
</style>
|
||||
|
||||
# TD - Représentation des nombres et Python
|
||||
---
|
||||
## Représentation des nombres
|
||||
---
|
||||
|
||||
1. Convertissez les nombres suivants en décimal
|
||||
- $\mathrm{5B0F}_{|16}$
|
||||
* $23 311_{|10}$
|
||||
- `0x1001`
|
||||
* $4097_{|10}$
|
||||
- $10011010_{|2}$
|
||||
* $154_{|10}$
|
||||
- `1001b`
|
||||
* $9_{|10}$
|
||||
|
||||
---
|
||||
|
||||
2. Convertissez les nombres suivants en binaire
|
||||
- $251_{|10}$ (utilisez les deux méthodes)
|
||||
* 1111 1011b
|
||||
- $3887_{|10}$ (utilisez les deux méthodes)
|
||||
* 1111 0010 1111b
|
||||
- $\mathrm{532}_{|16}$
|
||||
* 0101 0011 0010b
|
||||
- $\mathrm{5B0F}_{|16}$
|
||||
* 0101 1011 0000 1111b
|
||||
|
||||
---
|
||||
|
||||
3. Convertissez les nombres suivants en hexadécimal
|
||||
- $10011010_{|2}$
|
||||
* 0x9A
|
||||
- $100110101_{|2}$
|
||||
* 0x135
|
||||
- $111 1001 1100 1011 1101 0001_{|2}$
|
||||
* 0x79CBD1
|
||||
|
||||
---
|
||||
|
||||
4. Combien de nombres un octet permet-il de représenter ? Justifier.
|
||||
* 2⁸ = 256 -> 256 nombres
|
||||
|
||||
---
|
||||
5.
|
||||
1. En admettant qu'un nombre entier naturel soit codé sur 32 bits, quelle est la valeur maximale que peut avoir un entier naturel ?
|
||||
* 2³² = 4 294 967 296
|
||||
* Donc valeur max = 4 294 967 295 (Il ne faut pas oublier le zéro)
|
||||
2. À votre avis, dans un système informatique, que se passe-t-il si on augmente de 1 la valeur maximale d'un entier ?
|
||||
* Il repasse à zéro : on appelle ça un débordement (overflow en anglais). C'est une source de bugs courante. C'est pour cela qu'il faut être attentif à la valeur maximale qu'un nombre peut avoir dans vos programmes.
|
||||
|
||||
---
|
||||
|
||||
6. Mon ordinateur m'indique qu'un fichier fait 13 560 788 octets. Combien cela représente-t-il environ (1 chiffre après la virgule)
|
||||
- en kio
|
||||
* 13 560 788 / 2¹⁰ = 13243,0 kio
|
||||
- en Mio
|
||||
* 13 560 788 / 2²⁰ = 12,9 Mio
|
||||
- en ko
|
||||
* 13 560,8 ko
|
||||
- en Mo
|
||||
* 13,6 Mo
|
||||
|
||||
---
|
||||
|
||||
7. Quelle est la capacité d'un disque dur de 1To
|
||||
- en Go
|
||||
* 1000 Go
|
||||
- en Mo
|
||||
* 1 000 000 Mo
|
||||
- en Gio
|
||||
* 10¹² / 2³⁰ = 932,3 Gio
|
||||
- en Mio
|
||||
* 953 674,3 Mio
|
||||
|
||||
---
|
||||
## Python
|
||||
---
|
||||
|
||||
1. Écrire un programme qui demande à l’utilisateurice d’entrer le nom et l’âge.
|
||||
Il affichera ensuite la phrase :
|
||||
`"Bonjour <nom>, vous aurez 30 ans en <année>"`
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
nom = input("Entrer votre nom : ")
|
||||
age = int(input("Entrer votre age : "))
|
||||
|
||||
print(f"Bonjour {nom}, vous aurez 30 ans en {30 - age + 2025}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
2. Écrire un programme qui demande à l’utilisatrice d’entrer la largeur et la longueur d’un rectangle. Le programme calcule et affiche la surface et le périmètre.
|
||||
*Utilisez des variables de type `float`*
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
largeur = float(input("Largeur (m) : "))
|
||||
longueur = float(input("Longueur (m) : "))
|
||||
|
||||
surface = largeur * longueur
|
||||
perimetre = 2*(largeur + longueur)
|
||||
|
||||
print(f"Surface : {surface} m²")
|
||||
print(f"Périmètre : {perimetre} m")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
3. Écrire un programme qui demande à l'utilisatrice d'entrer un rayon et une hauteur de cône. Le programme calculera le volume du cône. Pour rappel, la formule de calcul du volume d'un cône est : $V = \frac{1}{3}.\pi.r^2.h$
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
from math import pi
|
||||
|
||||
rayon = float(input("Rayon du cône (m) :"))
|
||||
hauteur = float(input("Hauteur du cône (m) :"))
|
||||
|
||||
volume = (pi * hauteur * rayon ** 2) / 3.0
|
||||
print("Volume du cône =", volume, "m3")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
4. Écrire un programme qui demande à l'utilisateur de saisir 3 notes et d'en faire la moyenne. *Utilisez des variables de type `float`*
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
note_1 = float(input("1ere note : "))
|
||||
note_2 = float(input("2e note : "))
|
||||
note_3 = float(input("3e note : "))
|
||||
|
||||
moyenne = (note_1 + note_2 + note_3)/3
|
||||
|
||||
print(f"Moyenne : {moyenne}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
5. Écrire un programme qui demande à l'utilisatrice de saisir deux nombres. Le programme comparera les deux nombres de façon à afficher une comparaison avec les symboles `<, > ou =`, comme dans l'exemple :
|
||||
|
||||
```
|
||||
1er nombre : 14
|
||||
2nd nombre : 12
|
||||
14 > 12
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
nombre_1 = float(input("1er nombre : "))
|
||||
nombre_2 = float(input("2nd nombre : "))
|
||||
|
||||
if nombre_1 > nombre_2 :
|
||||
print(f"{nombre_1} > {nombre_2}")
|
||||
elif nombre_1 < nombre_2 :
|
||||
print(f"{nombre_1} < {nombre_2}")
|
||||
else:
|
||||
print(f"{nombre_1} = {nombre_2}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
6. Écrire un programme indiquant si un nombre saisi par l'utilisateur est pair ou impair
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
nombre = int(input("Nombre : "))
|
||||
|
||||
if nombre % 2:
|
||||
print(f"{nombre} est impair")
|
||||
else:
|
||||
print(f"{nombre} est pair")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
7. Écrire un programme qui demande à l'utilisatrice d'entrer un nombre. Le programme affichera les 10 nombres suivants **sur une seule ligne**. *Utilisez une boucle `for`*
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
nombre = int(input("Entrez un nombre : "))
|
||||
|
||||
for i in range (1, 11):
|
||||
print(nombre + i, end=" ")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
8. Faire le même exercice mais avec une boucle `while` cette fois.
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
nombre = int(input("Entrez un nombre : "))
|
||||
|
||||
nombre_affiche = nombre
|
||||
while nombre_affiche != nombre + 10:
|
||||
nombre_affiche += 1
|
||||
print(nombre_affiche, end=" ")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
9. Écrire un script python permettant de convertir en base 10 (décimal) un nombre écrit en binaire sous forme d'une chaîne de caractères. Vous demanderez à l'utilisateur ou l'utilisatrice le nombre à convertir, et vous afficherez le résultat.
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
base = 2
|
||||
|
||||
nombre_binaire = input("Saisissez le nombre à convertir")
|
||||
nombre_decimal = 0
|
||||
|
||||
puissance = len(nombre_binaire) - 1
|
||||
for a in nombre_binaire:
|
||||
nombre_decimal += int(a) * base ** puissance
|
||||
puissance -= 1
|
||||
|
||||
print(f"{nombre_binaire}b = {nombre_decimal}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
10. Écrire un programme permettant d'afficher les 15 premiers termes de la suite de Fibonacci. Pour rappel, la suite de Fibonacci est une suite de nombres dont chaque nombre est la somme des deux précédents. Elle commence par 0 et 1.
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
n0 = 0
|
||||
n1 = 1
|
||||
|
||||
print(n0, n1, end=" ")
|
||||
|
||||
for i in range(0, 13):
|
||||
n2 = n0 + n1
|
||||
n0 = n1
|
||||
n1 = n2
|
||||
|
||||
print(n2, end=" ")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
11. Écrire un programme qui permet d'afficher le résultat de l'opération factorielle d'un nombre. Pour rappel, factorielle de $n$ s'écrit $n!$ et vaut le produit de tous les nombres entiers de 1 à n.
|
||||
|
||||
Par exemple : $5! = 1\times2\times3\times4\times5 = 120$
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
nombre = int(input("Nombre : "))
|
||||
|
||||
resultat = 1
|
||||
for i in range(1, nombre + 1):
|
||||
resultat = resultat * i
|
||||
|
||||
print(f"{nombre}! = {resultat}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
12. Écrire un script python permettant de convertir en binaire un nombre entier écrit en base 10. Vous demanderez à l'utilisateur ou l'utilisatrice le nombre à convertir, et vous afficherez le résultat.
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
nombre_decimal = input("Saisissez le nombre à convertir : ")
|
||||
nombre_binaire = ""
|
||||
|
||||
quotient = int(nombre_decimal)
|
||||
resultat = ""
|
||||
|
||||
while quotient != 0:
|
||||
reste = quotient % 2
|
||||
quotient = quotient // 2
|
||||
|
||||
resultat = str(reste) + resultat
|
||||
|
||||
print(resultat)
|
||||
```
|
||||
|
|
@ -1,168 +0,0 @@
|
|||
---
|
||||
marp: true
|
||||
theme: catppuccin
|
||||
paginate: true
|
||||
size: 4:3
|
||||
transition: coverflow
|
||||
footer: ''
|
||||
math: katex
|
||||
---
|
||||
<style>
|
||||
section {
|
||||
font-size: 28px;
|
||||
}
|
||||
</style>
|
||||
|
||||
---
|
||||
|
||||
# TD2 - Fonctions
|
||||
|
||||
---
|
||||
|
||||
1. Donner une fonction qui renvoie `True` si un nombre est pair et `False` sinon.
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
# Solution naïve :
|
||||
def est_pair(nb):
|
||||
if nb % 2 == 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
# Meilleure façon de faire
|
||||
def est_pair(nb):
|
||||
return nb % 2 == 0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
1. Donner une fonction qui compte et affiche le nombre de voyelles d'une chaîne de caractères. Les voyelles sont `a e i o u y`. Attention aux majuscules. La méthode `lower` permet de mettre une chaîne de caractères en minuscules (lowercase). On l'appelle comme suit : `chaine.lower()`
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def nombre_voyelles(chaine):
|
||||
nb_voyelles = 0
|
||||
for lettre in chaine.lower():
|
||||
if lettre in "aeiouy":
|
||||
nb_voyelles += 1
|
||||
print(f"Il y a {nb_voyelles} voyelles dans {chaine}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
1. Donner une fonction qui renvoie l'aire d'un cercle à partir de son rayon. Pour rappel, l'aire d'un cercle est définie par la formule suivante : $\pi*R^2$ où $R$ est le rayon du cercle
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
import math
|
||||
|
||||
def aire(rayon):
|
||||
return math.pi * rayon ** 2
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
1. Donner une fonction qui renvoie le maximum parmi les trois nombres passés en paramètre
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def maximum(a, b, c):
|
||||
if a >= b and a >= c:
|
||||
return a
|
||||
elif b >= a and b >= c:
|
||||
return b
|
||||
else:
|
||||
return c
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
1. Donner une fonction qui prendra comme paramètre une chaîne de caractères. Il faudra renvoyer cette chaîne de caractères en remplaçant tous les espaces par des étoiles `*`
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def remplace(chaine):
|
||||
nouvelle_chaine = ""
|
||||
for caractere in chaine:
|
||||
if caractere == " ":
|
||||
nouvelle_chaine += "*"
|
||||
else:
|
||||
nouvelle_chaine += caractere
|
||||
return nouvelle_chaine
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
1. Modifier la fonction précédente de façon à pouvoir passer en paramètre le caractère qu'on veut modifier et celui par lequel on veut le remplacer. Si on ne passe pas les paramètres, la fonction devra continuer de remplacer les espaces par des étoiles.
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def remplace(chaine, a_remplacer=" ", remplacement="*"):
|
||||
nouvelle_chaine = ""
|
||||
for caractere in chaine:
|
||||
if caractere == a_remplacer:
|
||||
nouvelle_chaine += remplacement
|
||||
else:
|
||||
nouvelle_chaine += caractere
|
||||
return nouvelle_chaine
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
1. Un gardien de phare va aux toilettes cinq fois par jour. Or les WC sont au rez-de-chaussée. Écrire une procédure (fonction qui ne renvoie rien) qui reçoit deux paramètres : la hauteur d'une marche et le nombre de marches. Cette fonction devra afficher le nombre de mètres en hauteur parcourus chaque semaine par le gardien. La phrase affichée sera de la forme : `Pour x marches de y centimètres il parcourt z mètres par semaine`
|
||||
|
||||
Attention :
|
||||
- Une semaine comporte 7 jours (pas de repos pour les gardiens de phare...)
|
||||
- Une fois en bas le gardien doit remonter
|
||||
- Les hauteurs de marches sont en centimètres, mais le résultat est à exprimer en mètres
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def hauteur_totale(hauteur_marche, nb_marches):
|
||||
hauteur = hauteur_marche * nb_marches * 2 * 7 * 5 / 100
|
||||
print(f"Pour {nb_marches} marches de {hauteur_marche} centimètres, il parcourt {hauteur} mètres par semaine")
|
||||
```
|
||||
|
||||
---
|
||||
## Exercices avancés
|
||||
|
||||
---
|
||||
|
||||
Donner une fonction permettant de calculer la factorielle d'un nombre (entier supérieur à 1) en utilisant une boucle. Pour rappel, factorielle de $n$ s'écrit $n!$ et vaut le produit de tous les nombres entiers de 1 à n.
|
||||
Par exemple : $5! = 1\times2\times3\times4\times5 = 120$
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def factorielle(n):
|
||||
resultat = 1
|
||||
for i in range (1, n+1):
|
||||
resultat = resultat * i
|
||||
return resultat
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
b. Donner une fonction permettant de calculer la factorielle d'un nombre en utilisant une fonction récursive. Une fonction récursive est une fonction qui s'appelle elle-même.
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def factorielle(n):
|
||||
if n != 1:
|
||||
return n * factorielle(n-1)
|
||||
return 1
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue