"""
Fichier compagnon de : cours.tex
NSI - Première - Séquence 1

Reprend tous les extraits de code du cours, dans l'ordre du document,
pour être exécutés directement sans recopie manuelle depuis le PDF.

Repère : chaque bloc est précédé d'un commentaire indiquant la section
et la boîte (Exemple / Remarque / Syntaxe) correspondantes dans le PDF.

Certains blocs sont de simples patrons de syntaxe (non exécutables tels
quels, variables non définies) : ils sont laissés en commentaire.
Certains blocs attendent une saisie clavier (input()) : c'est signalé.
"""

# =====================================================================
# SECTION : Un programme : une séquence d'instructions
# =====================================================================

# --- Exemple : L'ordre des instructions a de l'importance (ordre correct) ---
print("Bonjour")
print("Comment vas-tu ?")


# --- Même exemple, ordre inversé ---
print("Comment vas-tu ?")
print("Bonjour")


# =====================================================================
# SECTION : Les variables informatiques
# =====================================================================

# --- Exemple : Affectation d'une variable ---
age = 16
prenom = "Alice"
print(age)
print(prenom)


# --- Remarque : Affectation et égalité ---
# (nécessite que `compteur` existe déjà, ex : compteur = 0 avant cette ligne)
compteur = 0
compteur = compteur + 1
print(compteur)


# =====================================================================
# SECTION : Les types de base
# =====================================================================

# --- Exemple : Identifier des types ---
a = 12
b = 3.5
c = "NSI"
d = True

print(type(a))   # <class 'int'>
print(type(b))   # <class 'float'>
print(type(c))   # <class 'str'>
print(type(d))   # <class 'bool'>


# --- Remarque : Conversion de type ---
# Attend une saisie clavier (input).
age_str = input("Quel est ton âge ? ")
age = int(age_str)
print(age + 1)


# =====================================================================
# SECTION : Les structures conditionnelles
# =====================================================================

# --- Syntaxe : Le if ---
# Patron de syntaxe : NON exécutable tel quel (condition_1/condition_2
# non définies). Laissé en commentaire pour référence.
#
# if condition_1:
#     ...  # instructions si condition_1 est vraie
# elif condition_2:
#     ...  # instructions si condition_1 est fausse ET condition_2 est vraie
# else:
#     ...  # instructions si aucune condition n'est vraie


# --- Exemple : Majorité ---
# Attend une saisie clavier (input).
age = int(input("Quel âge as-tu ? "))

if age >= 18:
    print("Tu es majeur.")
else:
    print("Tu es mineur.")


# =====================================================================
# SECTION : La boucle bornée : for
# =====================================================================

# --- Syntaxe : Le for avec range ---
# Patron de syntaxe : NON exécutable tel quel (n non définie).
#
# for i in range(n):
#     ...  # instructions répétées, utilisant éventuellement i


# --- Exemple : Répéter et parcourir ---

# Répéter 5 fois un affichage
for i in range(5):
    print("Bonjour")

# Parcourir les caractères d'une chaîne
for lettre in "NSI":
    print(lettre)


# =====================================================================
# SECTION : La boucle non bornée : while
# =====================================================================

# --- Syntaxe : Le while ---
# Patron de syntaxe : NON exécutable tel quel (condition non définie).
#
# while condition:
#     ...  # instructions répétées tant que condition est vraie


# --- Exemple : Compter jusqu'à un seuil ---
i = 1                 # initialisation
while i < 7:          # condition d'arrêt
    print(i)
    i = i + 2          # mise à jour


# --- Exemple : Boucle non bornée par nature ---
# Attend une saisie clavier en boucle jusqu'au bon mot de passe.
# Mot de passe attendu : python2026
mot_de_passe = ""
while mot_de_passe != "python2026":
    mot_de_passe = input("Mot de passe : ")
print("Accès autorisé.")
