Numérique et Sciences Informatiques1ère

Syntaxe vs sémantique
Exercices corrigés

Maîtrisez la différence entre syntaxe et sémantique en programmation : erreurs, analyse, correction et bonnes pratiques grâce à ces 5 exercices détaillés.

Concepts & Exercices
Syntaxe → Analyse → Sémantique → Exécution
Processus de compilation
Syntaxe
Structure grammaticale du code
Sémantique
Sens et signification du code
Analyse
Vérification de la validité
📋
Exercice 1
Identifier les erreurs de syntaxe
Exercice 2
Repérer les erreurs sémantiques
Exercice 3
Corriger les erreurs mixtes
Exercice 4
Analyser la sémantique d'un programme
Exercice 5
Comparer syntaxe et sémantique
Corrigé : Exercices 1 à 3
1 Erreurs de syntaxe
Définition :

Syntaxe : Ensemble des règles grammaticales qui définissent la structure correcte d'un programme dans un langage donné.

Méthode d'identification :
  1. Compiler le programme avec un compilateur
  2. Observer les messages d'erreur de syntaxe
  3. Localiser les erreurs dans le code
  4. Appliquer les corrections nécessaires
// Exemple d'erreur de syntaxe en Python def calcul_moyenne(notes: total = 0 for note in notes total += note return total / len(notes) // Erreurs de syntaxe : // 1. Parenthèse manquante : def calcul_moyenne(notes: // 2. Deux-points manquant : for note in notes
Erreur de syntaxe Description Correction
parenthèse manquante def calcul_moyenne(notes: def calcul_moyenne(notes):
deux-points manquant for note in notes for note in notes:
Étape 1 : Identification de la structure

La syntaxe définit la grammaire du langage (parenthèses, indentations, etc.)

Étape 2 : Détection des erreurs

Les erreurs de syntaxe sont détectées avant l'exécution du programme

Étape 3 : Correction

Le programme ne s'exécutera pas tant que toutes les erreurs de syntaxe ne seront pas corrigées

Réponse finale :

Code corrigé : def calcul_moyenne(notes): ...

Règles appliquées :

Erreurs de syntaxe : Détectées par l'analyseur syntaxique

Arrêt de compilation : Le programme ne compile pas tant que les erreurs existent

Messages clairs : Les compilateurs fournissent des messages d'erreur précis

2 Erreurs sémantiques
Définition :

Sémantique : Signification et sens des instructions d'un programme, liés à la logique et à la cohérence des opérations.

// Exemple d'erreur sémantique en Python def division_sans_zero(a, b): resultat = a / b # Erreur sémantique : division par zéro possible return resultat def calcul_superieur(): x = 10 y = 5 if x > y: print("x est supérieur à y") else: print("x est inférieur à y") # Erreur logique : message incorrect
Erreur sémantique Description Conséquence
Division par zéro a / b sans vérification Erreur à l'exécution
Message incorrect "x est inférieur" au lieu de "x est égal" Sortie trompeuse
Étape 1 : Analyse de la logique

La sémantique concerne la signification des instructions, pas leur structure

Étape 2 : Identification des erreurs

Les erreurs sémantiques ne sont pas détectées à la compilation mais peuvent causer des bugs

Étape 3 : Correction

Il faut corriger la logique du programme, pas seulement la syntaxe

Réponse finale :

Erreurs sémantiques détectées et corrigées pour assurer la logique du programme

Règles appliquées :

Erreurs logiques : Le programme compile mais ne fonctionne pas comme prévu

Détection difficile : Nécessite des tests approfondis et une analyse logique

Validation : Comparaison des résultats attendus avec les résultats obtenus

3 Erreurs mixtes
Définition :

Erreurs mixtes : Combinaison d'erreurs de syntaxe et sémantiques dans un même programme.

// Programme avec erreurs de syntaxe et sémantiques def calcul_facture(prix_ht, taux_tva): tva = prix_ht * taux_tva total = prix_ht + tva if total > 100 rabais = 0.1 # Erreur sémantique : rabais fixe total_final = total * (1 - rabais) else: total_final = total return total_final # Erreur de syntaxe : indentation incorrecte // Erreurs : // 1. Syntaxe : if total > 100 manque les deux-points // 2. Sémantique : rabais fixe au lieu d'être proportionnel // 3. Syntaxe : indentation incorrecte pour le return
Étape 1 : Correction syntaxique

Ajouter les deux-points à la structure conditionnelle

Étape 2 : Correction sémantique

Remplacer le rabais fixe par un rabais proportionnel

Étape 3 : Correction d'indentation

Rétablir l'indentation correcte pour le return

Réponse finale :

Programme corrigé avec syntaxe correcte et logique sémantique appropriée

Règles appliquées :

Correction progressive : Syntaxe d'abord, puis sémantique

Tests complets : Vérifier la logique avec des cas d'utilisation variés

Documentation : Commenter le code pour clarifier la sémantique

Corrigé : Exercices 4 à 5
4 Analyse sémantique
Définition :

Analyse sémantique : Processus qui vérifie la cohérence sémantique d'un programme après l'analyse syntaxique.

// Programme à analyser sémantiquement def gestion_stock(stock_initial, entrees, sorties): stock = stock_initial + entrees - sorties if stock < 0: print("Alerte : stock négatif !") stock = 0 # Correction du stock négatif return stock # Appel de la fonction resultat = gestion_stock(100, 50, 120) print(f"Stock final : {resultat}") // Analyse sémantique : // 1. Variables correctement déclarées // 2. Types compatibles entre eux // 3. Logique cohérente : gestion des stocks négatifs // 4. Signification : le programme gère correctement les stocks
Aspect sémantique Vérification Résultat
Compatibilité de types Variables numériques ✓ Correct
Logique du programme Gestion des stocks négatifs ✓ Correct
Cohérence des opérations Addition/soustraction correctes ✓ Correct
Étape 1 : Vérification des types

Les variables sont toutes de type numérique (compatibles)

Étape 2 : Analyse de la logique

Le programme gère correctement les cas de stocks négatifs

Étape 3 : Validation de la sémantique

Le programme a un sens logique et cohérent

Réponse finale :

Le programme est syntaxiquement correct et sémantiquement cohérent

Règles appliquées :

Vérification des types : Assurer la compatibilité des opérations

Logique du programme : Valider la cohérence des instructions

Signification : Le programme doit accomplir sa fonction prévue

5 Comparaison syntaxe/sémantique
Définition :

Comparaison : Distinction entre la structure grammaticale (syntaxe) et le sens (sémantique) d'un programme.

Syntaxe Sémantique
Structure grammaticale Signification des instructions
Erreurs détectées à la compilation Erreurs logiques ou de comportement
Contraintes formelles Contraintes de sens
Indentation, parenthèses, etc. Logique, algorithmique, résultats
// Exemple illustratif # Syntaxe correcte, sémantique incorrecte def calcul_aire_rectangle(longueur, largeur): aire = longueur + largeur # Erreur sémantique : addition au lieu de multiplication return aire # Syntaxe incorrecte def calcul_aire_carre(cote) aire = cote * cote return aire # Erreur de syntaxe : deux-points manquant # Syntaxe correcte, sémantique correcte def calcul_aire_rectangle_corrige(longueur, largeur): aire = longueur * largeur # Multiplication correcte return aire
Étape 1 : Distinction des concepts

La syntaxe concerne la forme, la sémantique concerne le fond

Étape 2 : Identification des erreurs

Erreurs de syntaxe : bloquent la compilation

Erreurs sémantiques : permettent la compilation mais produisent des résultats incorrects

Étape 3 : Correction

Corriger d'abord la syntaxe, puis valider la sémantique

Réponse finale :

Compréhension complète de la différence entre syntaxe et sémantique

Règles appliquées :

Syntaxe en premier : Un programme mal formé ne peut pas être exécuté

Sémantique ensuite : Un programme correctement formé peut être logiquement incorrect

Importance des deux : Un programme doit être à la fois syntaxiquement correct et sémantiquement cohérent

Cours bien détaillé
Syntaxe → Analyse → Sémantique → Exécution
Processus de validation
🎯
Syntaxe : Ensemble des règles grammaticales qui définissent la structure correcte du code.
📏
Sémantique : Signification et logique des instructions, liées au comportement du programme.
📐
Erreurs de syntaxe : Détectées avant l'exécution, empêchent la compilation.
📝
Erreurs sémantiques : Permettent la compilation mais produisent des résultats incorrects.
💡
Conseil : Corriger les erreurs de syntaxe avant de s'attaquer aux erreurs sémantiques
🔍
Attention : Les erreurs sémantiques sont plus difficiles à détecter que les erreurs de syntaxe
Astuce : Utiliser des tests unitaires pour valider la sémantique du code
📋
Méthode : Analyser le code en plusieurs passes : syntaxique, sémantique, logique
Vérification : Toujours comparer les résultats obtenus avec les résultats attendus
Processus d'analyse :
  • Analyse lexicale : Découpage en tokens
  • Analyse syntaxique : Vérification de la structure grammaticale
  • Analyse sémantique : Vérification de la cohérence logique
  • Génération de code : Production du code exécutable
Différences clés :
  • La syntaxe concerne la forme, la sémantique concerne le sens
  • Les erreurs de syntaxe sont détectées par le compilateur, les erreurs sémantiques par l'analyse logique
  • La syntaxe est universelle pour un langage, la sémantique peut varier selon le contexte
  • Un programme syntaxiquement correct peut être sémantiquement incorrect
Syntaxe
Forme du programme
Sémantique
Sens du programme
Analyse
Validation du programme
Syntaxe vs sémantique Introduction aux langages de programmation