CI n°3 – Tableaux, listes chaînées, listes – Piles et files

Bienvenue dans ce troisième CI… Très abstrait, que les TPs devraient éclaircir !

Le pdf complet des chapitres 4 et 5 :

Chapitre 4 : Tableaux et listes chaînées, listes de python

cm 2020-04-06 CI3 01cm 2020-04-06 CI3 02cm 2020-04-06 CI3 03cm 2020-04-06 CI3 04cm 2020-04-06 CI3 05

Chapitre 5 : Piles et files et leurs primitives … à implémenter de trois manières

cm 2020-04-06 CI3 06cm 2020-04-06 CI3 07cm 2020-04-06 CI3 08cm 2020-04-06 CI3 09cm 2020-04-06 CI3 10cm 2020-04-06 CI3 11cm 2020-04-06 CI3 12cm 2020-04-06 CI3 13

Un essai vidéo, c’est pas le top, mais on fait ce qu’on peut…

cm 2020-04-06 CI3 14cm 2020-04-06 CI3 15cm 2020-04-06 CI3 16cm 2020-04-06 CI3 17cm 2020-04-06 CI3 18cm 2020-04-06 CI3 19

CI n°2 – se créer ses propres objets

Bonjour ! Et bienvenue dans cette deuxième semaine.

Le support du jour :


ch3-1-tout-est-objetch3-2-creer-son-propre-objetch3-3-1-creer-une-classech3-3-2-pas-compris-instancech3-3-4-c-est-qui-ce-self-1ch3-3-4-c-est-qui-ce-self-2ch3-4-1ch3-4-2ch3-5


Les exemples du cours et l’autre exemple développé en deuxième partie de cours :

class MaPremiereClasse:
        
    def __init__(self):
        print("constructeur de la classe MaPremierClasse")
        self.nombre = 42     # ajout de l’attribut nombre
        self.nom = "John"

# truc = MaPremiereClasse()

class Etudiant :
    """Cette classe permet de stocker des informations sur un.e etudiant.e

    Un.e etudiant.e est ici caracterise.e par :
    −> ses nom et prenom
    −> son age
    −> son numero d’etudiant.e
    −> son cursus """

    def __init__(self, prenom, nom, age, numero, cursus):
        """Constructeur de notre classe """
        self.nom = nom
        self.prenom = prenom
        self.age = age
        self.numero = numero
        self.cursus = cursus

from math import sqrt

class NombreComplexe:
    """Une classe exemple meme s’il existe un type complex"""

    def __init__(self, a, b):
        self.re = a
        self.im = b
        self.module = sqrt(a ** 2 + b ** 2)

class Personne:
    """Quelqu'un sur l'arbre généalogique

    Une personne, son genre, ses enfants, ses parents"""

    def __init__(self, prenom, nom, age, genre,
                 conj = None, enfants = None, parents = None):
        """Constructeur"""
        self.prenom = prenom
        self.nom = nom
        self.age = age
        self.genre = genre
        self.conj = conj
        if enfants is None:
            self.enfants = []
        else :
            self.enfants = enfants
        if parents is None:
            self.parents = []
        else :
            self.parents = parents
        
        
def affiche(p):
    print("\n", p.prenom, p.nom, "a", p.age, "ans")
    if p.conj is not None:
        print("En couple avec", p.conj.prenom, p.conj.nom)
    if len(p.enfants) > 0:
        print("Enfants :", end = '')
        for e in p.enfants:
            print(e.prenom, end = '\t')
        print()
    if len(p.parents) > 0:
        print("Parents :", end = '')
        for e in p.parents:
            print(e.prenom, end = '\t')
        print()

Et le shell correspondant

>>> moi = Personne("Christophe", "Marchant", 46, "masculin")
>>> moi.conj = Personne("Barbara", "Marchant", 37, "féminin")
>>> affiche(moi)

 Christophe Marchant a 46 ans
En couple avec Barbara Marchant
>>> affiche(moi.conj)

 Barbara Marchant a 37 ans
>>> moi.conj.conj
>>> moi.conj.conj = moi
>>> affiche(moi.conj)

 Barbara Marchant a 37 ans
En couple avec Christophe Marchant
>>> papa = Personne("Jean-Pierre", "Marchant", 73, "masculin")
>>> 
>>> maman = Personne("Nicole", "Marchant", 72, "feminin", papa)
>>> papa.conj = maman
>>> moi.parents
[]
>>> moi.parents =[maman, papa]
>>> affiche(moi)

 Christophe Marchant a 46 ans
En couple avec Barbara Marchant
Parents :Nicole	Jean-Pierre	
>>> papa.enfants += [moi]
>>> maman.enfants = papa.enfants
>>> papa.enfants += [Personne("Pierre", "Marchant", 49, "masculin", None, None, [papa, maman])]
>>> maman.enfants
>>> maman.enfants += [Personne("Marie", "Marvalin", 41, "féminin", None, None, [papa, maman])]
>>> affiche(moi)

 Christophe Marchant a 46 ans
En couple avec Barbara Marchant
Parents :Nicole	Jean-Pierre	
>>> affiche(papa)

 Jean-Pierre Marchant a 73 ans
En couple avec Nicole Marchant
Enfants :Christophe	Pierre	Marie	
>>> affiche(moi.conj)

 Barbara Marchant a 37 ans
En couple avec Christophe Marchant
		
>>> def fratrie(p):
	liste = []
	for e in p.parents:
		for k in e.enfants:
			if k not in liste and k is not p :
				liste += [k]
	return liste

>>> fratrie(moi)
[, ]
>>> for buddy in fratrie(moi):
	print(buddy.prenom, buddy.nom)

	
Pierre Marchant
Marie Marvalin

 

 

 

CI n°1 (#1) – Accueil, réviser et bonnes pratiques

Bonjour et bienvenue aux étudiants pour ce cours

« algorithmique et programmation, structures de données »

pour les étudiants de l’unistra en L1S2 de printemps 2020, fac de maths-info, parcours « maths »


Temps de lecture / écoute estimé : 15 minutes

Temps de travail après écoute : au moins 15 minutes


cm 2020-03-23 CI1-01

cm 2020-03-23 CI1-02cm 2020-03-23 CI1-03cm 2020-03-23 CI1-04cm 2020-03-23 CI1-05

Voilà, je vous laisse chercher.

cm 2020-03-23 CI1-06cm 2020-03-23 CI1-07

Ce cours sera complété avec commentaires audio d’ici lundi fin de matinée, ce qui vous laissera le temps d’en prendre connaissance d’ici le salon de discussion programmé à 14h30.

 Les corrections et la suite, ici.

CI n°1 (#2) réviser et bonnes pratiques

Suite du CI n°1 (#1)

L1S2 (maths) – Algo prog – UFR Maths-Info Strasbourg


Temps de lecture / écoute estimé : 30 minutes


🙂 Rassurez-vous ! Ça va bien se passer ! 💡 Si vous êtes assidu.e.s et si vous vous investissez en TP !

  • Le support de cours est disponible sur moodle.

  • Salon de discussion sur ce CI avec l’application discord ce lundi à partir de 14h30. Explications sur moodle.


On suppose que vous ayez « joué le jeu » et essayé de répondre à la consigne donnée précédemment :

On veut implémenter en python un petit programme de résolution des équations du second degré.

En entrée on attend donc a \text{, }b \text{ et } c trois réels avec a \neq 0 et le programme qu’on veut implémenter doit renvoyer l’unique solution ou un tuple de solutions réelles de (E):ax^2+bx+c=0 ou indiquer le cas échéant (dans un premier temps) que (E) n’admet pas de solutions réelles.

cm 2020-03-23 CI1-08

En cliquant sur « lire la suite » en fin de cet article, vous pourrez copier/coller le code que je présente ici dans cette vidéo.

😳 Excusez les hésitations et autres balbutiements ! 🙄

Je ne suis pas un « influenceur » youtube et j’essaie de faire au mieux en cette période compliquée !

cm 2020-03-23 CI1-10

RESTART: /home/.../UFR Maths/2020-L1S2-AlgoProg2-Python'...
Printemps/.../cm 2020-03-23 ex cours delta et racines.py

Ce programme propose de resoudre dans IR ax^2 + bx + c = 0

Saisissez a (non nul) : 1
Saisissez b : 1
Saisissez c : 1
Solution(s) eventuelle(s) :
	 pas de solution reelle !
>>> help(racines)
Help on function racines in module __main__:

racines(a, b, c)
    resolution de l'equation

    attend a, b, c , a non nul
    teste suivant la valeur du discriminant
    s'il y a des racines
    et les renvoie alors

>>> help(discriminant)
Help on function discriminant in module __main__:

discriminant(a, b, c)
    attend trois reels a, b, c, calcule le discriminant et le renvoie

>>>

cm 2020-03-23 CI1-11

❗ ➡ Attention : le soucis de documentation sera évalué lors des TPs et des contrôles.

cm 2020-03-23 CI1-12cm 2020-03-23 CI1-13cm 2020-03-23 CI1-14cm 2020-03-23 CI1-15cm 2020-03-23 CI1-16cm 2020-03-23 CI1-17

🙂 Rassurez-vous ! Ça va bien se passer ! 💡 Si vous êtes assidu.e.s et si vous vous investissez en TP !

  • Le support de cours est disponible sur moodle.
  • Salon de discussion sur ce CI avec l’application discord ce lundi à partir de 14h30. Explications sur moodle.
  • TPs ce jeudi via discord
    • groupes 5a et 5b à 13h30,
    • groupes 6a et 6b à 15h30.
    • Connectez-vous dans le bon salon de discussion, correspondant à votre groupe de TP.

Lire la suite