Aller au contenu principal
BacInfo

Ch. 01 · Leçon 1

Les structures de données : types et modules en Python et algorithmique

45 minanalyse · python

Ce que vous saurez faire

  • Identifier les types de données de base en algorithmique et en Python
  • Utiliser les fonctions arithmétiques prédéfinies (Ent, Arrondi, Racine carrée, Aléa)
  • Manipuler les chaînes de caractères avec les fonctions prédéfinies (Long, Pos, Majus, Sous-chaine, etc.)
  • Convertir des types de données (chaîne ↔ numérique, caractère ↔ code ASCII)
  • Résoudre des problèmes algorithmiques utilisant des chaînes et opérations numériques

id: 33-1525-structures-donnees-types-modules slug: 33-1525-structures-donnees-types-modules titre: 'Les structures de données : types et modules en Python et algorithmique' chapitre: 1 chapitre_titre: Les structures de données lecon: 1 niveau: 4eme-sci ordre: 1 prerequis: [] duree_estimee_min: 45 mots_cles:

  • types de donnees
  • modules
  • chaines de caracteres
  • python
  • algorithme
  • fonctions predefinies langages:
  • analyse
  • python objectifs:
  • Identifier les types de données de base en algorithmique et en Python
  • Utiliser les fonctions arithmétiques prédéfinies (Ent, Arrondi, Racine carrée, Aléa)
  • Manipuler les chaînes de caractères avec les fonctions prédéfinies (Long, Pos, Majus, Sous-chaine, etc.)
  • Convertir des types de données (chaîne ↔ numérique, caractère ↔ code ASCII)
  • Résoudre des problèmes algorithmiques utilisant des chaînes et opérations numériques status: published source_pdf: 33_1525.pdf source_pages:
  • 1
  • 2
  • 3
  • 4
  • 5 kind: cours

Les structures de données

Les types de données

En algorithmique comme en Python, toute variable possède un type qui détermine la nature des valeurs qu'elle peut contenir.

Nom en algorithmeNom en PythonExemple (algorithme)
EntierintA ← 10
RéelfloatX ← 5.5
BooléenboolT ← vrai
ChainestrCH ← "bonjour"
Caractère(n'existe pas, on utilise str)C ← "#"

Les modules : fonctions arithmétiques

Le tableau suivant récapitule les principales fonctions arithmétiques disponibles en algorithmique et leur équivalent Python.

Conversion en entier — Ent(x) / int(x)

r ← Ent(19.5)    { r = 19 }

Résultat : entier

Arrondi — Arrondi(a) / round(a)

r ← Arrondi(3.8)    { r = 4 }

Résultat : entier

Racine carrée — Racine carrée(a) / sqrt(a)

r ← Racine carrée(2)   { r ≈ 1.4 }

Résultat : réel

Nombre aléatoire entier — Aléa(vi, vf) / randint(a, b)

r ← Aléa(10, 15)   { ex. r = 14 }

Résultat : entier

Nombre aléatoire réel — uniform(a, b)

from random import *
r = uniform(0, 5)    # ex. r = 4.51 (float)

Les modules : chaînes de caractères

Accès à un caractère — Ch[i]

Ch = 'bonjour'
r = Ch[2]    # r = "n" (3ème caractère en 0-indexed)

Sous-chaîne — Sous-chaine(ch, d, l) / Ch[d:f]

Ch ← "informatique"
r ← Sous-chaine(Ch, 2, 8)
{ r = "format" }

Longueur d'une chaîne — Long(ch) / len(ch)

Ch ← "informatique"
r ← Long(Ch)    { r = 12 }

Résultat : entier

Position d'une sous-chaîne — Pos(ch2, ch1) / Ch1.find(ch2)

L'indexation commence à 0. Retourne −1 si la sous-chaîne n'est pas trouvée.

Ch ← "bonjour"
r ← Pos("o", Ch)    { r = 1 }

Majuscules — Majus(ch) / ch.upper()

Ch ← "salut"
r ← Majus(Ch)    { r = "SALUT" }

Conversion nombre → chaîne — convch(nb) / str(nb)

Nb ← 12.35
r ← convch(Nb)    { r = "12.35" }

Conversion chaîne → nombre — Valeur(ch) / int(ch), float(ch)

Ch ← "2022"
r ← Valeur(Ch)    { r = 2022 }

Ch ← "10.5"
r ← Valeur(Ch)    { r = 10.5 }

Code ASCII — Ord(car) / ord(car) et Chr(x) / chr(x)

r = ord("A")    # r = 65
r = ord("a")    # r = 97

r = chr(65)     # r = "A"
r = chr(48)     # r = "0"

Effacement — Efface(ch, d, f)

Cette fonction n'existe pas directement en Python. L'indice f est exclu.

Ch ← "maison"
r ← Efface(Ch, 1, 4)    { r = "mon" }

Test numérique — Estnum(ch) et ch.isdigit()

  • Estnum(ch) (algorithme) : retourne vrai si la chaîne représente un entier ou un réel.
  • ch.isdigit() (Python) : retourne vrai uniquement pour les entiers.
Ch ← "123"
r ← Estnum(Ch)     { vrai }

S ← "13.25"
r ← Estnum(S)      { vrai }

T ← "12/25A"
r ← Estnum(T)      { faux }

Applications

Exercice 1
Échange d'un chèque en billets et pièces

Un caissier dispose dans sa caisse des billets de 10 dinars, des billets de 5 dinars et des pièces de 1 dinar.

Écrire un algorithme qui permet d'échanger le montant S d'un chèque donné (exprimé en dinars) par le maximum de billets de 10 dinars, puis le reste en billets de 5 dinars et pièces de 1 dinar.

Exemple : pour un chèque de 428 dinars → 42 billets de 10 dinars, 1 billet de 5 dinars et 3 pièces de 1 dinar.

Voir le corrigé

Analyse / décomposition pour S = 428 :

  • 428 DIV 10 = 42 billets de 10
  • (428 MOD 10) = 8 ; 8 DIV 5 = 1 billet de 5
  • (428 MOD 10) MOD 5 = 3 pièces de 1

Algorithme :

Algorithme Caisse
Début
    Écrire("Donner le montant du chèque : "), Lire(S)
    a ← S DIV 10
    b ← (S MOD 10) DIV 5
    c ← (S MOD 10) MOD 5
    Écrire("chèque ", S, " : ", a, " billets de 10 dinars, ",
           b, " billets de 5 dinars et ", c, " pièces de 1 dinar")
Fin

TDO (Tableau de Déclaration des Objets) :

ObjetType / Nature
S, a, b, centiers
Trace d'exécution
0 / 4
InstructionSabc
01···????
02···????
03···????
04···????
Exercice 2
Création d'un code de sécurité

Pour créer un compte sur un site, on demande de saisir :

  • L'adresse e-mail
  • Le nom de la ville
  • Le code postal formé de 4 chiffres

Le site crée un code de sécurité en additionnant :

  1. La somme (millier + unité du code postal) au carré.
  2. Le code ASCII de la dernière lettre de la ville multiplié par la longueur de la ville.
  3. Le code ASCII de la première lettre du serveur de l'adresse mail (lettre située juste après le @).
  4. Un nombre aléatoire composé de 3 chiffres.

Exemple : Mail = "mouna@gmail.fr", code postal = 4071, ville = "sousse" → code de sécurité = 935

Détail du calcul :

  • Code ASCII de 'g' (1ʳᵉ lettre du serveur) = 103
  • (4 + 1) = 5 ; 5² = 25
  • Longueur("sousse") × ord('e') = 6 × 101 = 606
  • Nombre aléatoire supposé = 201
  • Total : 103 + 25 + 606 + 201 = 935

Écrire l'algorithme et le TDO du programme qui saisit l'adresse e-mail, la ville et le code postal, puis crée et affiche le code de sécurité.

Voir le corrigé

Algorithme :

Algorithme Compte
Début
    Écrire("Donner le mail : "), Lire(adr)
    Écrire("Donner le code postal : "), Lire(c)
    Écrire("Donner la ville : "), Lire(v)

    p  ← Pos("@", adr)
    c1 ← Ord(adr[p+1])
    c2 ← (c DIV 1000) + (c MOD 10)
    c2 ← c2 * c2
    c3 ← Long(v) * Ord(v[Long(v) - 1])
    c4 ← Aléa(100, 999)

    code ← c1 + c2 + c3 + c4
    Écrire("Le code de sécurité est : ", code)
Fin

TDO :

ObjetType / Nature
adr, vchaîne
c, p, c1, c2, c3, c4, codeentier

Explications clés :

  • p ← Pos("@", adr) localise l'arobase dans l'adresse mail.
  • adr[p+1] donne le premier caractère du serveur (juste après le @).
  • (c DIV 1000) extrait le chiffre des milliers du code postal ; (c MOD 10) extrait le chiffre des unités.
  • v[Long(v) - 1] désigne le dernier caractère de la ville (les indices commencent à 0).
Vérification des acquis

Quiz : modules Python et chaînes de caractères

Vérifiez votre maîtrise des modules de chaînes en Python et de leur équivalent en algorithmique.

Quiz (5 questions)

1

En Python, le premier caractère d'une chaîne `ch = "bonjour"` est :

2

Que retourne `ch[2:6]` si `ch = "informatique"` ?

3

Quelle est la fonction Python pour convertir une chaîne en majuscules ?

4

Quel module Python utilise-t-on pour `randint(a, b)` ?

5

Que retourne `len(\"bac 2025\")` ?

Bravo d'être arrivé jusqu'ici. Marquez la leçon terminée pour ancrer le progrès.