Programmation exo

Retrouver tous les sujets résolus.
Répondre
Marie

Programmation exo

Message par Marie » ven. 20 nov. 2020 01:37

Bonjour mon prof m'a donné un DM à faire en informatique, une sorte de projet..

Je suis nulle en Python donc j'aurais besoin d'aide.

Voici le projet mis sur un site qu'utilise notre prof pour partager des docs :
https://www.cjoint.com/data/JKuaByq1sDf ... ceinfo.pdf

Pourriez vous m'aider déjà pour savoir par quoi commencer svp ? Je suis complètement perdue...

Merci ce serait super cool de m'aider !
sos-math(21)
Messages : 8226
Enregistré le : lun. 30 août 2010 11:15

Re: Programmation exo

Message par sos-math(21) » ven. 20 nov. 2020 07:30

Bonjour,
avant de penser au problème informatique, il s'agit de réfléchir au problème mathématique.
Tu peux commencer par résoudre le premier problème de l'aide proposée en traitant l'intersection d'une droite et d'un segment horizontal.
Une droite quelconque a une équation générale de la forme \(ax+by+c=0\) (cela inclut les droites verticales, ce qui n'est pas le cas de la forme donnée par ton professeur \(y=tx+r\)).
Un segment horizontal est donné par ses coordonnées extrêmes \((x_1,;\,y_1)\) et \((x_2\,;\,y_1)\), avec \(y_1\) correspondant à l'ordonnée commune, le segment étant alors porté par la droite d'équation \(y=y_1\).
Il te reste à calculer l'éventuel point d'intersection de ces deux lignes, ce qui revient à remplacer \(y\) par \(y_1\) dans l'équation de la droite de départ (si c'est possible !)
On obtient une valeur de \(x\) (ou pas !) et si elle existe, on vérifie qu'elle est située entre \(x_1\) et \(x_2\) ou pas.
Comme tu le vois, cela fait pas mal de conditions qu'il faudra traduire par des instructions conditionnelles.
Tu peux commencer par faire cela.
Bonne continuation
Invité

Re: Programmation exo

Message par Invité » sam. 21 nov. 2020 01:31

Bonjour et merci ! car j'ai mieux compris le problème mathématique maintenant.

En fait cet exercice est à faire en binôme, et mon amie avec laquelle je fais ce travail m'a envoyé ce qu'elle compte faire.

C'est ici : https://py3.codeskulptor.org/index.html ... xBxqH_2.py

Je suis effarée, déboussolée par ce qu'elle m'a envoyé : qu'est-ce que cela signifie donc ?
Comment a-t-elle pu écrire ces 200 lignes de Python en première ??!! Je crois qu'elle a de la famille qui travaille dans l'informatique, ça peut aider...

Que pensez-vous de ce qu'elle a fait ?

Je vous propose de ne pas toucher au lien ci-dessus, je vous ai préparé un lien spécial que vous pouvez modifier :
https://py3.codeskulptor.org/#user305_Dw7kg5hCT2_0.py

Comme ça, vous pouvez écrire tous vos commentaires sur le lien ci-dessus.
C'est beaucoup plus pratique pour moi que dans le message svp !

Merci, très bon we et bon samedi à vous
Invité

Re: Programmation exo

Message par Invité » sam. 21 nov. 2020 01:35

j'ai oublié de préciser qqchose dans mon message : n'oubliez pas de cliquer sur "Save" quand vous avez terminé vos commentaires, ça crée alors un nouveau lien, et il faudra alors que vous me le donniez pour que je l'aie.

Merci !
SoS-Math(25)
Messages : 1717
Enregistré le : mer. 2 nov. 2011 09:39

Re: Programmation exo

Message par SoS-Math(25) » sam. 21 nov. 2020 10:25

Bonjour Marie,

Il y a beaucoup de choses dans le programme de ton amie. Il faut peut-être décortiquer un peu.

Voici un extrait que tu peux tester en ligne :

https://trinket.io/python/22d3245667

La dernière permet simplement d'afficher le résultat de la première fonction c'est à dire les coordonnées du point d'intersection entre un segment (côté gauche ou droit du billard) et une droite y = ax +b avec a et b donnés.

Je te laisse essayer de comprendre cela d'abord en testant d'abord avec des valeurs dans la dernière ligne.

Dans ton énoncé, il faut renvoyer None et pas False s'il n'y a pas de point d'intersection (léger changement).

Code : Tout sélectionner

#!/bin/python3

def detect_horizontale(x1,x2,y0,origine,coef_dir):
    """
    Fonction qui detecte si il y a croisement entre un segment horizontal représenté par 2 pts de coordonées
    (x1,y0) et (x2,y0) et une droite affine caractérisé par son origine et son coefficient directeur
    :param x1: réel, abscisse du point (x1,y0)
    :param x2: réel, abscisse du point (x2,y0)
    :param y0: réel, hauteur du segment horizontal
    :param origine: réel, ordonnée à l'origine de la droite dont on cherche l'intersection avec l'horizontale
    :param coef_dir: réel, coefficient directeur de la droite dont on cherche l'intersection avec l'horizontale
    :return: bolléen ou tuple, False si pas d'intersection ou si la droite est horizontale,
            sinon (cas de l' intersection) renvoie les coordonées de l'intersection
    """
    if coef_dir == 0: # protection en cas d'une droite horizontale
       return False

    if x1 > x2 : #permet de permuter x1 et x2 pour que le segment soit toujours défini de la gauche vers la droite
        (x1,x2) = (x2,x1)

    x_interse = (y0-origine)/coef_dir

    if  x_interse < x1 or x_interse > x2 : # si pas d'intersection ie si passe à gauche ou à droite
        return None

    else: # tout les cas d'intersection
        return x_interse, y0


#On affiche les coordonnées du point d'intersection entre le côté droit du billard et une droite y = 4x-20 par exemple :
 
print(detect_horizontale(0, 200, 150, -20, 4))
Bon courage,
Invité

Re: Programmation exo

Message par Invité » sam. 21 nov. 2020 14:02

Merci d'avoir répondu

Je crois qu'il manque un mot dans ce que vous avez écrit :
"La dernière ??? permet.....".

Ou alors c'est moi qui ne sais pas lire ?

Ce matin je me suis penché de nouveau sur le très long programme qu'elle m'a envoyé, j'y comprends vraiment rien. Elle a essayé de m'expliquer mais c'est pas trop mieux ...

Du coup est-ce que vous pourriez m'expliquer :
1. ce que calcul chaque fonction dans le programme envoyé ?
2. Pourquoi faire ces questions dans cet ordre particulier ?

Merci sincèrement
SoS-Math(25)
Messages : 1717
Enregistré le : mer. 2 nov. 2011 09:39

Re: Programmation exo

Message par SoS-Math(25) » sam. 21 nov. 2020 17:30

La dernière "ligne"...
Invité a écrit :
sam. 21 nov. 2020 14:02

Du coup est-ce que vous pourriez m'expliquer :
1. ce que calcul chaque fonction dans le programme envoyé ?
2. Pourquoi faire ces questions dans cet ordre particulier ?
As-tu testé le programme que je t'ai envoyé ? Justement, il s'agit de la deuxième fonction du programme de ton amie pour que tu puisses te concentrer dessus : (Tu peux cliquer sur le bouton "Run" : La flèche...)

https://trinket.io/python/22d3245667

Teste avec différentes valeurs et essaye de comprendre ce qu'elle fait et ce qu'elle renvoie.

L'ordre des fonctions n'a pas une grande importance tant qu'elles sont au début de ton programme (c'est surtout pour le lire plus facilement).

Bon courage
Invité

Re: Programmation exo

Message par Invité » dim. 22 nov. 2020 00:04

bonsoir alors j'ai relu attentivement le message de sos 21 de vendredi.

Est ce que la fonction que vous avez mise ici https://trinket.io/python/635a3339c9 correspond au programme que décrit sos 21 ?
Pour moi, il y répond tout à fait !

est ce correct ?

par contre que faire une fois que j'ai compris ce que fait ce programme https://trinket.io/python/635a3339c9 ?
Comment le relier à d'autres programmes ?

J'ai encore beaucoup de mal à comprendre la logique globale du projet....

merci et bon dimanche !
SoS-Math(25)
Messages : 1717
Enregistré le : mer. 2 nov. 2011 09:39

Re: Programmation exo

Message par SoS-Math(25) » dim. 22 nov. 2020 11:19

Bonjour,

https://trinket.io/python/22d3245667

La fonction précédente donne donc le point d'intersection entre une droite et un segment horizontal en effet (Donc le nom de la fonction en convient pas, il aurait fallu mettre detect_horizontale, je vais le corriger).

Pour t'entrainer, tu peux modifier cette fonction afin qu'elle renvoie les coordonnées d'un point d'intersection entre une droite y = ax+b et un segment vertical :

-- Changer son nom detect_verticale
-- Changer le nom de certains paramètres
...

Bon courage
Répondre