Aller au contenu principal
BacInfo
Précédente·Suivante

Ch. 00 · Leçon 1

Résumé du cours : Structures de données, contrôles, sous-programmes et interface graphique

45 minanalyse · pascal · python

Ce que vous saurez faire

  • Récapituler les principales structures de données et leurs opérations
  • Distinguer les structures de contrôle simples, conditionnelles et itératives
  • Définir et appeler des fonctions et procédures en algorithmique et en Python
  • Construire une interface graphique simple avec PyQt5

id: 33-1310-resume-cours-complet slug: 33-1310-resume-cours-complet titre: 'Résumé du cours : Structures de données, contrôles, sous-programmes et interface graphique' chapitre: 0 chapitre_titre: Synthèse générale lecon: 1 niveau: 4eme-sci ordre: 1 prerequis: [] duree_estimee_min: 45 mots_cles:

  • structures de donnees
  • structures de controle
  • sous-programmes
  • fonctions
  • procedures
  • interface graphique
  • pyqt5
  • operateurs langages:
  • analyse
  • pascal
  • python objectifs:
  • Récapituler les principales structures de données et leurs opérations
  • Distinguer les structures de contrôle simples, conditionnelles et itératives
  • Définir et appeler des fonctions et procédures en algorithmique et en Python
  • Construire une interface graphique simple avec PyQt5 status: published source_pdf: 33_1310.pdf source_pages:
  • 1
  • 2
  • 3
  • 4 kind: fiche

Ce document constitue une synthèse générale du programme : structures de données, structures de contrôle, sous-programmes et interface graphique. Il met en parallèle l'écriture algorithmique et l'écriture Python.

1. Les structures de données

1.1 Les objets

Déclaration en algorithmique (T.D.O — Tableau de Déclaration des Objets) :

ObjetsTypes / Natures
mRéel
gConstante = 9.8

1.2 Entier (int)

Type représentant un entier relatif.

1.3 Réel (float)

Type représentant un nombre réel.

Opérations sur les nombres

AlgorithmeRôle
n ← aléa (vi, vf)Retourner un entier aléatoire ∈ [Vi..Vf]
n ← arrondi (x)Arrondir x (entier pair si décimale = 0.5)
n ← racinecarré (x)Retourner √x, x ≥ 0
n ← ent (x)Convertir un réel en entier
n ← abs (x)Valeur absolue de x

Exemples :

n = randint(-1, 2)   # n ∈ {-1, 0, 1, 2}
n = round(2.4)       # n = 2
n = round(-2.6)      # n = -3
n = round(4.5)       # n = 4   (entier pair)
n = round(3.5)       # n = 4   (entier pair)
n = sqrt(16)         # n = 4.0
n = int(4.9)         # n = 4
n = int(-1.95)       # n = -1
n = abs(-4.95)       # n = 4.95

1.4 Booléen (bool)

Variable logique qui peut contenir Faux (False) ou Vrai (True).

1.5 Chaîne (str)

Une chaîne est formée par une succession de caractères. Pour ch = "PC", chaque caractère est indexé de 0 à long(ch)-1, d'où ch[0]='P', ch[1]='C'.

AlgorithmeRôle
ch ← ch1 + ch2 + ch3Concaténer des chaînes
L ← long (ch)Nombre de caractères de ch
n ← pos (ch1, ch2)Première position de ch1 dans ch2
ch ← convch (x)Convertir un nombre en chaîne
n ← valeur (ch)Convertir une chaîne en nombre
ch ← majus (ph)Convertir en majuscules
ph ← sous_chaine (ch, d, f)Extraire ch[d..f-1]
ch ← effacer (ch, d, f)Effacer ch[d..f-1]
test ← estnum (ch)Vérifier si ch est convertible en nombre

Exemples :

ch = "Bac" + " " + "info"          # ch = "Bac info"
L = len("Bac info")                # L = 8
n = "bonbon".find("on")            # n = 1
n = "bonbon".find("N")             # n = -1
ch = str(12.5)                     # ch = "12.5"
n = int("123")                     # n = 123
n = float("12.95")                 # n = 12.95
ch = "Bac 1!".upper()              # ch = "BAC 1!"
ph = "informatique"[2:5]           # ph = "for"
ch = "informatique"[:2] + "informatique"[7:]  # ch = "intique"
test = "123".isdecimal()           # test = True

1.6 Caractère (str)

Un caractère est une touche du clavier : lettre minuscule ou majuscule, chiffre ou symbole. En Python, on utilise le type str.

AlgorithmeRôle
n ← ord (c)Code ASCII du caractère c
c ← chr (n)Caractère dont le code ASCII est n

Exemples :

ord('0')   # 48
ord('A')   # 65
ord('a')   # 97
chr(48)    # '0'
chr(65)    # 'A'
chr(97)    # 'a'

1.7 Tableau (array)

Un tableau permet de ranger plusieurs valeurs de même type, sur une seule ligne et plusieurs colonnes.

Pour N = 4 et T = ["info", "PC", "2.25", "w"], chaque case est indexée de 0 à N-1 : T[0]="info", T[1]="PC", T[2]="2.25", T[3]="w".

T.D.N.T (Nouveaux Types) :

Nouveaux Types
Tab = tableau de 100 chaînes

T.D.O :

ObjetsTypes / Natures
TTab

2. Les opérateurs

2.1 Opérateurs arithmétiques

OpérateurAlgorithmePythonExemple
Multiplication**-3.5 * 2 = -7.0
Division//7 / 2 = 3.5
Division entièreDiv//7 // 2 = 3
Reste (modulo)Mod%7 % 2 = 1
Addition++3.5 + 2 = 5.5
Soustraction--3 - 2 = 1

2.2 Opérateurs logiques

OpérateurAlgorithmePythonExemple
Négationnonnotnot False == True
ConjonctionetandFalse and True == False
DisjonctionouorFalse or True == True

2.3 Opérateurs de comparaison, ensembles et intervalles

OpérateurAlgorithmePythonExemple
Égal===5 == 5True
Différent!=5.7 != 5.7False
Strictement supérieur>>"a" > "A"True
Supérieur ou égal>="s" >= "ali"True
Strictement inférieur<<False < TrueTrue
Inférieur ou égal<="O" <= "A"True
Appartient (ensemble)∈ {V1,V2,V3}in {V1,V2,V3}"A" in {"A","a","*","?"}True
Appartient (intervalle)Vi ≤ x ≤ VfVi <= x <= Vf ou x in range(Vi, Vf+1)7 in range(7)False

3. Les structures de contrôle

3.1 Les structures simples

OpérationDescriptionAlgorithmePython
EntréeSaisir une valeur au clavierlire(n)n = int(input("Donner un entier : "))
AffectationAffecter ou modifier une variablen ← n - 2n = n - 2
SortieAfficher objets, messages, expressionsécrire_nl("La somme de ", a, " et ", b, " est : ", a+b)print("La somme de", a, "et", b, "est :", a+b)
lire(n)

3.2 Les structures conditionnelles

But : choisir un traitement parmi plusieurs.

Forme réduite (1 état)

si conditions = vrai alors
    instruction_1
    ...
    instruction_n
finsi

Forme complète (2 états)

si conditions = vrai alors
    instruction_1
    ...
sinon
    instruction_1
    ...
finsi

Forme généralisée (> 2 états)

si conditions_1 = vrai alors
    traitement_1
sinon si conditions_2 = vrai alors
    traitement_2
sinon si conditions_3 = vrai alors
    traitement_3
...
sinon si conditions_n-1 = vrai alors
    traitement_n-1
sinon
    traitement_n
finsi

Structure à choix multiples

Le sélecteur doit être de type scalaire : entier, caractère ou booléen.

selon selecteur
    valeur1 : traitement_1
    valeur2 :
        traitement_2
    valeur3, valeur4, valeur20 : traitement_3
    valeur7 .. valeur10 : traitement_4
    valeur30 .. valeur40 : traitement_5
    ...
    sinon : traitement_n
finselon

3.3 Les structures répétitives (itératives)

But : répéter un traitement plusieurs fois.

Forme complète (nombre de répétitions connu)

  • Nombre de répétitions = |Vf - Vi| + 1
  • Compteur de type scalaire discret ordonné : entier, caractère ou booléen.
pour i de Vi à Vf [pas = valeur] faire
    instruction_1
    instruction_2
    ...
    instruction_n
finpour

1ʳᵉ forme à condition d'arrêt (tant que / while)

  • Nombre de répétitions inconnu
  • Nombre minimal de répétitions = 0
tant que conditions = vrai faire
    instruction_1
    instruction_2
    ...
    instruction_n
fin tant que

2ᵉ forme à condition d'arrêt (répéter / boucle simulée)

  • Nombre de répétitions inconnu
  • Nombre minimal de répétitions = 1
répéter
    instruction_1
    instruction_2
    ...
    instruction_n
jusqu'à conditions = vrai

4. Les sous-programmes

4.1 Présentation

Une approche modulaire consiste à diviser un programme en plusieurs sous-programmes (modules) de difficultés moindres : chaque module peut être divisé lui aussi en plusieurs modules.

Un module peut être une fonction ou une procédure, et il n'est exécuté que moyennant des appels.

4.2 Les fonctions

Définition :

Fonction nom_fonction (paramètres_formels : types) : type_résultat
Début
    instruction_1
    ...
    instruction_n
    retourner objet_resultat
Fin

Appel :

nom_variable ← nom_fonction(parametres_effectifs)

4.3 Les procédures

Définition :

Procédure nom_procedure (paramètres_formels : types)
Début
    instruction_1
    ...
    instruction_n
Fin

Appel :

nom_procedure(parametres_effectifs)

4.4 Objets globaux et locaux

4.5 Paramètres

  • Formels : figurent au niveau de l'en-tête (dans la définition du module).
  • Effectifs : figurent au niveau de l'appel (dans le programme appelant).

4.6 Les modes de passage en algorithmique

Le programme appelant fournit au sous-programme appelé les valeurs dont il a besoin via les paramètres : les paramètres effectifs donnent leurs valeurs aux paramètres formels.

Mode de passage par valeur

Utilisé avec les fonctions et les procédures : les paramètres effectifs transmis par valeur ne changent pas de valeurs même si les paramètres formels changent après l'exécution du sous-programme.

Mode de passage par adresse (référence)

Utilisé avec les procédures seulement : les paramètres effectifs transmis par référence changent de valeurs si les paramètres formels (précédés par le symbole @) changent après l'exécution du sous-programme.

4.7 Les modes de passage en Python

En Python, on exploite la notion d'objet mutable ou immutable :

  • Objet immutable (ne change pas de valeur) : int, float, bool, str
  • Objet mutable (peut changer de valeur) : array

5. Interface graphique (PyQt5)

5.1 Objets

  • Label : zone d'affichage (chaîne)
  • LineEdit : zone de saisie (chaîne)
  • PushButton : bouton poussoir

5.2 Événement

Cliquer sur un bouton poussoir :

nom_variable_graphique.nom_bouton.clicked.connect(module_action)

5.3 Actions

ActionSyntaxe
Lecturenom_variable_graphique.nom_lineedit.text()
Écriturenom_variable_graphique.nom_label.setText(chaine)
Effacementnom_variable_graphique.nom_element_graphique.clear()

5.4 Formulation générale

from PyQt5.uic import loadUi
from PyQt5.QtWidgets import QApplication   # importer les modules graphiques

app = QApplication([])                     # générer une application graphique
windows = loadUi("nom_fichier_graphique.ui")  # charger le fichier .ui créé avec DesignerQt5
windows.show()                             # visualiser la fenêtre graphique
windows.nom_bouton.clicked.connect(slot)   # appeler un slot après le clic
app.exec()                                 # exécuter l'application

5.5 Exemple : application SOMME

Correspondance des éléments graphiques :

Type_élémentNom
LineEdits1
LineEdits2
Labela
PushButtonb1 (calculer)
PushButtonb2 (effacer)

Code Python complet :

from PyQt5.uic import loadUi
from PyQt5.QtWidgets import QApplication

def somme(n1, n2):
    s = n1 + n2
    return s

def play():
    ch1 = windows.s1.text()
    ch2 = windows.s2.text()
    if not (ch1.isdecimal() and ch2.isdecimal()):
        ch = "Données invalides"
    else:
        ch = str(somme(int(ch1), int(ch2)))
    windows.a.setText(ch)

def reset():
    windows.s1.clear()
    windows.s2.clear()
    windows.a.clear()

app = QApplication([])
windows = loadUi("Interface_somme.ui")
windows.show()
windows.b1.clicked.connect(play)
windows.b2.clicked.connect(reset)
app.exec()
Vérification des acquis

Quiz transverse — Toutes les notions

Mélange de questions sur tout le programme : variables, contrôles, sous-programmes, tableaux. Idéal pour vérifier votre maîtrise globale avant un examen.

Quiz (9 questions)

1

Lequel de ces opérateurs **retourne un booléen** ?

2

Que fait l'instruction `T[i] ← T[i+1]` ?

3

Combien de comparaisons fait au pire le tri par sélection sur n éléments ?

4

Quelle est la **bonne façon** de vérifier qu'une chaîne `ch` n'est pas vide en Python ?

5

Lequel de ces algorithmes nécessite un **tableau trié** pour fonctionner ?

6

Que vaut `PGCD(20, 12)` ?

7

Une **variable globale** déclarée dans le programme principal :

8

Quel **type** retourne `random.randint(1, 6)` en Python ?

9

Dans un tableau `T` en Pascal déclaré `array[1..10] of integer`, à quel indice est le 1er élément ?

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