Exploration - Paradigmes de programmation
Bienvenue dans le cours d'introduction sur les paradigmes de programmation
. Ce cours explore les différentes approches et styles de programmation utilisés pour résoudre des problèmes informatiques. Comprendre ces paradigmes est essentiel pour devenir un programmeur polyvalent et efficace.
Un paradigme de programmation est une approche particulière ou un style de programmation qui fournit une structure pour la création de logiciels. Chaque paradigme a ses propres règles, conventions et meilleures pratiques. Les programmeurs choisissent un paradigme en fonction du problème à résoudre.
La programmation impérative se concentre sur la séquence d'instructions qui modifient l'état du programme. Les langages comme C et Python suivent ce paradigme.
La programmation impérative se concentre sur la séquence d'instructions qui modifient l'état du programme. Les langages comme C et Python suivent ce paradigme.
# Exemple en Python de programmation impérative def somme_liste(liste): somme = 0 for element in liste: somme += element return somme print(somme_liste([1, 2, 3, 4, 5])) # Résultat : 15
À l'inverse, la programmation déclarative se concentre sur ce que le programme doit accomplir sans se soucier des détails de mise en œuvre. SQL
est un exemple de langage déclaratif utilisé pour interagir avec les bases de données.
# Exemple en Python
de programmation déclarative avec une requête SQL
import sqlite3
connexion = sqlite3.connect(":memory:")
curseur = connexion.cursor()
# Création d'une table
curseur.execute('''CREATE TABLE utilisateurs (id INT, nom TEXT, age INT)''')
curseur.execute("INSERT INTO utilisateurs VALUES (1, 'Alice', 30)")
curseur.execute("INSERT INTO utilisateurs VALUES (2, 'Bob', 25)")
# Requête déclarative
resultat = curseur.execute("SELECT nom FROM utilisateurs WHERE age > 28").fetchall()
print(resultat) # Résultat : [('Alice',)]
La POO
organise le code autour d'objets qui représentent des entités dans le monde réel. Les langages comme Java et Python supportent ce paradigme.
# Exemple en Python
de programmation orientée objet
class Voiture:
def __init__(self, marque, modele):
self.marque = marque
self.modele = modele
def afficher_details(self):
print(f"{self.marque} {self.modele}")
# Création d'une instance de la classe Voiture
ma_voiture = Voiture("Toyota", "Camry")
ma_voiture.afficher_details() # Résultat : Toyota Camry
La programmation fonctionnelle
traite les calculs comme des évaluations de fonctions mathématiques pures. Haskell
et Lisp
sont des exemples de langages fonctionnels.
# Exemple en Python de programmation fonctionnelle from functools import reduce # Utilisation de fonctions de haut niveau liste = [1, 2, 3, 4, 5] somme = reduce(lambda x, y: x + y, liste) print(somme) # Résultat : 15
La programmation logique repose sur la logique mathématique pour exprimer les relations entre les faits et les règles. Prolog
est un langage logique populaire.
# Exemple enPython
de programmation logique avecPyke
(un moteur d'inférence) from pyke import knowledge_engine engine = knowledge_engine.engine(__file__) # Définition des faits et des règles engine.define_rule(""" forall terme(_), fct(_) -f-> a_terme(_), has_term(_), has_term(_), has_fct(_), has_fct(_), has_arity(_), has_arity(_) """) # Inférence engine.activate('forward_chain') print(engine.get_kb('term')) # Résultat : [a_terme, has_term, has_fct, has_arity]
Le choix d'un paradigme
dépend du problème à résoudre, des préférences du programmeur et des contraintes du projet. Certains langages de programmation prennent en charge plusieurs paradigmes, offrant ainsi une flexibilité accrue.
Ce cours d'introduction explore les bases des paradigmes de programmation. Au fur et à mesure que vous progressez dans votre carrière de développeur, la compréhension de ces paradigmes vous permettra d'adopter une approche plus réfléchie et efficace lors de la résolution de problèmes informatiques.
Écrivez une fonction Python qui utilise la programmation déclarative pour calculer la somme des éléments d'une liste en utilisant la fonction reduce
.
from functools import reduce
def somme_declarative(liste):
return reduce(lambda x, y: x + y, liste)
# Exemple d'utilisation
liste = [1, 2, 3, 4, 5]
print(somme_declarative(liste)) # Résultat : 15
Créez une classe en Python représentant un rectangle, avec des méthodes pour calculer l'aire et le périmètre.
class Rectangle:
def __init__(self, largeur, hauteur):
self.largeur = largeur
self.hauteur = hauteur
def aire(self):
return self.largeur * self.hauteur
def perimetre(self):
return 2 * (self.largeur + self.hauteur)
# Exemple d'utilisation
mon_rectangle = Rectangle(5, 3)
print("Aire :", mon_rectangle.aire()) # Résultat : 15
print("Périmètre :", mon_rectangle.perimetre()) # Résultat : 16
Écrivez une fonction en Python qui filtre les nombres pairs d'une liste en utilisant des fonctions de haut niveau.
def filtrer_pairs(liste):
return list(filter(lambda x: x % 2 == 0, liste))
# Exemple d'utilisation
liste = [1, 2, 3, 4, 5, 6]
print("Nombres pairs :", filtrer_pairs(liste)) # Résultat : [2, 4, 6]
Écrivez un script en Python utilisant SQLite pour créer une table, insérer des données, et faire une requête pour récupérer des enregistrements.
import sqlite3
connexion = sqlite3.connect(":memory:")
curseur = connexion.cursor()
# Création d'une table
curseur.execute('''CREATE TABLE personnes (id INT, nom TEXT, age INT)''')
curseur.execute("INSERT INTO personnes VALUES (1, 'Alice', 30)")
curseur.execute("INSERT INTO personnes VALUES (2, 'Bob', 25)")
# Requête déclarative
resultat = curseur.execute("SELECT nom FROM personnes WHERE age > 28").fetchall()
print(resultat) # Résultat : [('Alice',)]
Écrivez un exemple d'inférence logique en utilisant le module Pyke
pour définir des faits et des règles.
from pyke import knowledge_engine
engine = knowledge_engine.engine(__file__)
# Définition des faits et des règles
engine.define_rule("""
forall
animal(_), mammifere(_)
-f-> a_mammifere(_), a_animal(_)
""")
# Inférence
engine.activate('forward_chain')
print(engine.get_kb('animal')) # Résultat : [a_mammifere, a_animal]
Écrivez une fonction en Python qui trie une liste en utilisant une approche fonctionnelle, sans utiliser de boucles explicites.
def tri_fonctionnel(liste):
if len(liste) == 0:
return []
pivot = liste[0]
return tri_fonctionnel([x for x in liste if x < pivot]) + [pivot] + tri_fonctionnel([x for x in liste if x >= pivot])
# Exemple d'utilisation
liste = [5, 3, 8, 1, 2]
print("Liste triée :", tri_fonctionnel(liste)) # Résultat : [1, 2, 3, 5, 8]
Écrivez une fonction Python qui prend en entrée une chaîne de caractères et renvoie un dictionnaire contenant le nombre d'occurrences de chaque caractère.
def compter_occurrences_caracteres(chaine):
occurrences = {}
for caractere in chaine:
if caractere in occurrences:
occurrences[caractere] += 1
else:
occurrences[caractere] = 1
return occurrences
# Exemple d'utilisation
chaine = "bonjour"
print(compter_occurrences_caracteres(chaine)) # Résultat : {'b': 1, 'o': 2, 'n': 1, 'j': 1, 'u': 1, 'r': 1}
Écrivez une fonction en Python qui convertit une température de Celsius à Fahrenheit en utilisant une classe.
class Temperature:
def __init__(self, celsius):
self.celsius = celsius
def to_fahrenheit(self):
return (self.celsius * 9/5) + 32
# Exemple d'utilisation
temp = Temperature(25)
print("Température en Fahrenheit :", temp.to_fahrenheit()) # Résultat : 77.0
Écrivez un script en Python pour créer une base de données et interroger des utilisateurs en fonction de leur âge.
import sqlite3
connexion = sqlite3.connect(":memory:")
curseur = connexion.cursor()
# Création d'une table
curseur.execute('''CREATE TABLE utilisateurs (id INT, nom TEXT, age INT)''')
curseur.execute("INSERT INTO utilisateurs VALUES (1, 'Alice', 30)")
curseur.execute("INSERT INTO utilisateurs VALUES (2, 'Bob', 25)")
# Requête pour récupérer les utilisateurs âgés de plus de 28 ans
resultat = curseur.execute("SELECT nom FROM utilisateurs WHERE age > 28").fetchall()
print(resultat) # Résultat : [('Alice',)]
Écrivez une fonction qui prend une liste de nombres et retourne une nouvelle liste contenant le carré de chaque nombre, en utilisant une fonction lambda.
def carre_liste(liste):
return list(map(lambda x: x ** 2, liste))
# Exemple d'utilisation
liste = [1, 2, 3, 4, 5]
print("Carrés :", carre_liste(liste)) # Résultat : [1, 4, 9, 16, 25]
Les mathématiques ont souvent la réputation d'être une discipline austère et difficile, mais ...
Read more.Plongez dans l'univers fascinant des suites numériques, où chaque terme révèle des patterns surprenants et des applications pratiques dans les mathématiques et au-delà.
Read more.Découvrez comment les fonctions tissent des liens entre les nombres et les concepts, transformant des idées abstraites en outils puissants pour résoudre des problèmes du quotidien.
Read more.Abonnez-vous maintenant et recevez notre newsletter hebdomadaire avec des matériaux éducatifs, de nouveaux cours, des articles intéressants, des livres populaires et bien plus encore !