RETROGICIEL
LA PUISSANCE ELECTRIQUE
RETROGICIEL
LA PUISSANCE ELECTRIQUE
⇩. Présentation
En courant continu, il est possible de calculer la valeur les 4 principales caractéristiques : tension, intensité, résistance et puissance, d'un circuit en ne connaissant que 2 de ces valeurs, en se utilisant ces 2 formules P = U*I et U = R*I.
⇩. Consignes
Le programme doit :
afficher une consigne pour les valeurs non disponibles ;
demander la tension du circuit ;
demander l'intensité du circuit ;
demander la résistance du circuit ;
demander la puissance du circuit ;
affecter 0 à toutes les valeurs inconnues ;
s'assurer qu'il connait au moins 2 mesures ;
calculer les mesures manquantes en fonction de celles qu'il connait ;
afficher les valeurs des 4 caractéristiques.
D'abord, faite-le fonctionner. Ensuite, faite-le beau. Enfin, faite-le performant.
Amusez-vous bien !
Télécharger RETROGICIEL - La puissance electrique.
Cette présentation nécessite que Python 3 soit installé sur votre machine.
Après avoir téléchargé le fichier La puissance electrique.7z, décompressez-le dans le répertoire de votre choix.
Ouvrez le répertoire qui vient d'être créé.
Lancez le fichier Retrogiciel.py.
Cliquez sur l'onglet RUN et testez le programme.
Créez votre propre script dans un des langages proposés ou un autre de votre choix.
Le répertoire contient aussi :
- Python.py, l'exemple en PYTHON sans tkinter ;
- Tkinter.py, l'exemple en PYTHON avec tkinter ;
- Qb84.bas, l'exemple en QBASIC avec qb64 ;
- Bbc.bas, l'exemple en BBC BASIC avec bbc sdl.
# --- Origine Nerd ---
# --- RETROGICIEL - PYTHON ---
# --- La puissance électrique ---
# -*- coding: utf-8 -*-
# --- INITIALISATION DES VARIABLES GLOBALES ---
DCT_Circuit = { "tension" : [ 0 , "volts" ] , "intensité" : [ 0 , "ampères" ] , "résistance" : [ 0 , "ohms" ] , "puissance" : [ 0 , "watts" ] }
# --- DÉFINITION DES FONCTIONS POUR PROGRAMME ADAPTE ---
# --- Rechercher et calculer les valeurs manquantes ---
def FNC_Calculer ( ) :
# --- Simplification des noms de variables (meilleur visibilité des calculs) ---
ku = DCT_Circuit [ "tension" ] [ 0 ]
ki = DCT_Circuit [ "intensité" ] [ 0 ]
kr = DCT_Circuit [ "résistance" ] [ 0 ]
kp = DCT_Circuit [ "puissance" ] [ 0 ]
# --- Calcul de la tension si absente ---
if ku == 0 :
if kp != 0 and ki != 0 : ku = float ( kp ) / float ( ki )
elif ki != 0 and kr != 0 : ku = float ( ki ) * float ( kr )
else : ku = float ( kr ) * ( ( float ( kp ) / float ( kr ) ) ** .5 )
# --- Calcul de l'intensité si absente ---
if ki == 0 :
ki = float ( ku ) / float ( kr ) if kr != 0 else float ( kp ) / float ( ku )
# --- Calcul de la résistance si absente ---
if kr == 0 : kr = float ( ku ) / float ( ki )
# --- Calcul de la puissance si absente ---
if kp == 0 : kp = float ( ku ) * float ( ki )
# --- Affichage des valeurs du circuit ---
print ( )
print ( f"Tension .....: { ku } Volt(s)." )
print ( f"Intensité ...: { ki } Ampere(s)." )
print ( f"Résistance ..: { kr } Ohm(s)." )
print ( f"Puissance ...: { kp } Watt(s)." )
# --- DEBUT DU PROGRAMME ---
# --- PRESENTATION ---
print ( "LA PUISSANCE ELECTRIQUE." )
print ( "Si vous ne connaissez pas la valeur d'une donnée, laissez le champs vide" )
# --- BOUCLE PRINCIPALE ---
while True :
# --- Saisies des données et controles de leur validité ---
print ( )
kvides = 0
for kcle , kvaleur in DCT_Circuit.items ( ) :
ksaisie = input ( f"{ kcle } du circuit en { kvaleur [ 1 ] } ... " )
try : kvaleur [ 0 ] = float ( ksaisie )
except : kvaleur [ 0 ] = 0
if kvaleur [ 0 ] == 0 : kvides += 1
# --- Teste s'il y a assez de données connues pour calculer les manquentes ---
if kvides > 2 : print ( "\nIl n'y a pas assez de données pour effectuer les calculs.\n" )
else : FNC_Calculer ( )
# --- Choix du bouclage du programme ---
kchoix = input ( "Voulez-vous calculer un autre circuit (O ou N) ?" )
if kchoix.upper ( ) == "N" : break
# --- FIN DU PROGRAMME ---
print ( "Au revoir" )
# --- Programme : JFB ---
# --- Juin 2024 ---
# --- Fin ---
Pour mieux comprendre l'exemple en PYTHON sans tkinter.
# --- Origine Nerd ---
# --- RETROGICIEL - TKINTER ---
# --- La puissance électrique ---
# -*- coding: utf-8 -*-
# --- IMPORTATION DES MODULES ---
# --- Modules de la bibliothèque standard ---
import tkinter
# --- DÉFINITION DES FONCTIONS POUR PROGRAMME ADAPTE ---
# --- Rechercher et calculer les valeurs manquantes ---
def FNC_Calculer ( ) :
# --- Assure la compatibilité des données pour le traitement ---
kvides = 0
LAB_Message [ "text" ] = ""
for kchamp in ( ENT_Tension , ENT_Intensite , ENT_Resistance , ENT_Puissance ) :
try : kvaleur = float ( kchamp.get ( ) )
except : kchamp.delete ( 0 , "end" )
if kchamp.get ( ) == "" : kvides += 1
if kvides > 2 :
LAB_Message [ "text" ] = "Il n'y a pas assez de données\npour effectuer les calculs."
return
# --- Simplification des noms de variables (meilleur visibilité des calculs) ---
ku = ENT_Tension.get ( )
ki = ENT_Intensite.get ( )
kr = ENT_Resistance.get ( )
kp = ENT_Puissance.get ( )
# --- Calcul de la tension si absente ---
if ku == "" :
if kp != "" and ki != "" : ku = float ( kp ) / float ( ki )
elif ki != "" and kr != "" : ku = float ( ki ) * float ( kr )
else : ku = float ( kr ) * ( ( float ( kp ) / float ( kr ) ) ** .5 )
ENT_Tension.insert ( "end" , f"{ku:.1f}" )
# --- Calcul de l'intensité si absente ---
if ki == "" :
ki = float ( ku ) / float ( kr ) if kr != "" else float ( kp ) / float ( ku )
ENT_Intensite.insert ( "end" , f"{ki:.1f}" )
# --- Calcul de la résistance si absente ---
if kr == "" :
kr = float ( ku ) / float ( ki )
ENT_Resistance.insert ( "end" , f"{kr:.1f}" )
# --- Calcul de la puissance si absente ---
if kp == "" :
kp = float ( ku ) * float ( ki )
ENT_Puissance.insert ( "end" , f"{kp:.1f}" )
# --- CREATION DE L'INTERFACE GRAPHIQUE ---
# --- Création de la fenêtre principale ---
TKI_Principal = tkinter.Tk ( )
TKI_Principal.title ( "RETROGICIEL - La puissance électrique" )
# --- Création des controles nommées ---
ENT_Tension = tkinter.Entry ( TKI_Principal , width = 5 )
ENT_Intensite = tkinter.Entry ( TKI_Principal , width = 5 )
ENT_Resistance = tkinter.Entry ( TKI_Principal , width = 5 )
ENT_Puissance = tkinter.Entry ( TKI_Principal , width = 5 )
LAB_Message = tkinter.Label ( TKI_Principal , height = 3 )
# --- Mise en place des controles (anonymes et nommés) dans la fenêtre principale ---
tkinter.Label ( TKI_Principal , text = "LA PUISSANCE ELECTRIQUE" ).grid ( row = 0 , column = 0 , columnspan = 3 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "\nSi vous ne connaissez pas la valeur\nd'une donnée laissez le champs vide.\n" ).grid ( row = 1 , column = 0 , columnspan = 3 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "U =" ).grid ( row = 2 , column = 0 , sticky = "e" )
ENT_Tension.grid ( row = 2 , column = 1 , sticky = "w" )
tkinter.Label ( TKI_Principal , text = "valeur de la tension en volts." ).grid ( row = 2 , column = 2 , sticky = "w" )
tkinter.Label ( TKI_Principal , text = "I =" ).grid ( row = 3 , column = 0 , sticky = "e" )
ENT_Intensite.grid ( row = 3 , column = 1 , sticky = "w" )
tkinter.Label ( TKI_Principal , text = "valeur de l'intensité en ampères." ).grid ( row = 3 , column = 2 , sticky = "w" )
tkinter.Label ( TKI_Principal , text = "R =" ).grid ( row = 4 , column = 0 , sticky = "e" )
ENT_Resistance.grid ( row = 4 , column = 1 , sticky = "w" )
tkinter.Label ( TKI_Principal , text = "valeur de la résistance en ohms." ).grid ( row = 4 , column = 2 , sticky = "w" )
tkinter.Label ( TKI_Principal , text = "P =" ).grid ( row = 5 , column = 0 , sticky = "e" )
ENT_Puissance.grid ( row = 5 , column = 1 , sticky = "w" )
tkinter.Label ( TKI_Principal , text = "valeur de la puissance en watts." ).grid ( row = 5 , column = 2 , sticky = "w" )
tkinter.Button ( TKI_Principal , text = "Calculer" , command = FNC_Calculer ).grid ( row = 6 , column = 0 , columnspan = 2 , sticky = "nesw" )
tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy ).grid ( row = 6 , column = 2 , sticky = "nesw" )
LAB_Message.grid ( row = 7 , column = 0 , columnspan = 3 , sticky = "nesw" )
# --- DEBUT DU PROGRAMME ---
TKI_Principal.mainloop ( )
# --- Programme : JFB ---
# --- Juin 2024 ---
# --- Fin ---
Pour mieux comprendre l'exemple en PYTHON avec tkinter.
' --- Origine Nerd propose pour ---
' --- RETROGICIEL - QB64 ---
' --- La puissance electrique ---
' --- DEBUT DU PROGRAMME ---
PRINT "LA PUISSANCE ELECTRIQUE."
' --- BOUCLE PRINCIPALE ---
DO
' --- Saisie des valeurs du circuit electrique ---
PRINT "Si vous ne connaissez pas la valeur d'une donnée, tapez simplement sur entrée."
PRINT ""
INPUT "Veuillez saisir la tension (U) en Volts ... ", ktension
INPUT "Veuillez saisir l'intensite (I) en Amperes ... ", kintensite
INPUT "Veuillez saisir la resistance (R) en Ohms ... ", kresistance
INPUT "Veuillez saisir la puissance (P) en Watts ... ", kpuissance
' --- Teste si au moins deux valeurs sont connues ---
IF FNC_Connues(ktension, kintensite, kresistance, kpuissance) < 2 THEN
PRINT ""
PRINT "Il n'a pas assez de valeurs connues pour continuer"
' --- Deux valeurs sont connues ---
ELSE
' --- Calcul de la tension, si inconnue ---
IF ktension = 0 THEN
IF kpuissance <> 0 AND kintensite <> 0 THEN
ktension = kpuissance / kintensite
ELSEIF kintensite <> 0 AND kresistance <> 0 THEN
ktension = kintensite * kresistance
ELSEIF kpuissance <> 0 AND kresistance <> 0 THEN
ktension = kresistance * SQR(kpuissance / kresistance)
END IF
END IF
' --- Calcul de l'intensite, si inconnue ---
IF kintensite = 0 THEN
IF kresistance <> 0 THEN
kintensite = ktension / kresistance
ELSE
kintensite = kpuissance / ktension
END IF
END IF
' --- Calcul de la resistance, si inconnue ---
IF kresistance = 0 THEN kresistance = ktension / kintensite
' --- Calcul de la puissance, si inconnue ---
IF kpuissance = 0 THEN kpuissance = ktension * kintensite
' --- Affcihage des valeurs, après calcul des valeurs manquantes ---
PRINT ""
PRINT "Tension .....:"; ktension; "Volt(s)."
PRINT "Intensite ...:"; kintensite; "Ampere(s)."
PRINT "Resistance ..:"; kresistance; "Ohm(s)."
PRINT "Puissance ...:"; kpuissance; "Watt(s)."
END IF
' --- Bouclage du programme ---
PRINT ""
INPUT "Voulez-vous recommencer [ O ou N ] "; kchoix$
LOOP UNTIL UCASE$(kchoix$) = "N"
' --- FIN DU PROGRAMME ---
PRINT "Au revoir."
END
' --- DEFINITION DES FONCTIONS PERSONNALISEES ---
' --- Calcul et retourne le nombre de valeurs connues ---
FUNCTION FNC_Connues (Qt, Qi, Qr, Qp)
kconnues = 0
IF Qt <> 0 THEN kconnues = kconnues + 1
IF Qi <> 0 THEN kconnues = kconnues + 1
IF Qr <> 0 THEN kconnues = kconnues + 1
IF Qp <> 0 THEN kconnues = kconnues + 1
FNC_Connues = kconnues
END FUNCTION
' --- Programme : JFB ---
' --- Juin 2024 ---
' --- Fin ---
Pour mieux comprendre l'exemple en QB64.
REM --- Origine Nerd propose pour ---
REM --- RETROGICIEL - BBC BASIC ---
REM --- La puissance electrique ---
REM --- DEBUT DU PROGRAMME ---
PRINT "LA PUISSANCE ELECTRIQUE."
REM --- BOUCLE PRINCIPALE ---
REPEAT
REM --- Saisie des valeurs ---
PRINT "Si vous ne connaissez pas la valeur d'une donn�e, tapez simplement sur entr�e."
PRINT ""
INPUT "Veuillez saisir la tension (U) en Volts ... ", ktension
INPUT "Veuillez saisir l'intensite (I) en Amperes ... ", kintensite
INPUT "Veuillez saisir la resistance (R) en Ohms ... ", kresistance
INPUT "Veuillez saisir la puissance (P) en Watts ... ", kpuissance
REM --- Teste s'il y a assez de valeurs connues ---
PROC_Connues
IF kconnues < 2 THEN
PRINT ""
PRINT "Il n'a pas assez de valeurs connues pour continuer"
REM --- Il y a assez de valeurs connues ---
ELSE
REM --- Calcul de la tention, si absente ---
IF ktension = 0 THEN PROC_Tension
REM --- Calcul de l'intensite, si absente ---
IF kintensite = 0 THEN PROC_Intensite
REM --- Calcul de la resistance, si absente ---
IF kresistance = 0 THEN kresistance = ktension / kintensite
REM --- Calcul de la puissance, si absente ---
IF kpuissance = 0 THEN kpuissance = ktension * kintensite
ENDIF
REM --- Affichage des valeurs après calcul des valeurs manquantes ---
IF kconnues > 1 THEN
PRINT "Tension .....: "; STR$(ktension); " Volt(s)."
PRINT "Intensite ...: "; STR$(kintensite); " Ampere(s)."
PRINT "Resistance ..: "; STR$(kresistance); " Ohm(s)."
PRINT "Puissance ...: "; STR$(kpuissance); " Watt(s)."
ENDIF
REM --- Bouclage du programme ---
INPUT "Voulez-vous recommencer [ O ou N ] "; kchoix$
UNTIL kchoix$ = "N" OR kchoix$ = "n"
REM --- FIN DU PROGRAMME ---
PRINT "Au revoir."
END
REM --- DEFINITION DES FONCTIONS PERSONNALISEES ---
REM --- Recherhce si au moins deux valeurs sont connues ---
DEF PROC_Connues
kconnues = 0
IF ktension <> 0 THEN kconnues = kconnues + 1
IF kintensite <> 0 THEN kconnues = kconnues + 1
IF kresistance <> 0 THEN kconnues = kconnues + 1
IF kpuissance <> 0 THEN kconnues = kconnues + 1
ENDPROC
REM --- Calcul de la tension si manquante ---
DEF PROC_Tension
IF kpuissance <> 0 AND kintensite <> 0 THEN ktension = kpuissance / kintensite
IF ktension = 0 AND kintensite <> 0 AND kresistance <> 0 THEN ktension = kintensite * kresistance
IF ktension = 0 THEN ktension = kresistance * SQR(kpuissance / kresistance)
ENDPROC
REM --- Calcul de l'intensite si manquante ---
DEF PROC_Intensite
IF kresistance <> 0 THEN kintensite = ktension / kresistance ELSE kintensite = kpuissance / ktension
ENDPROC
REM --- Programme : JFB ---
REM --- Juin 2024 ---
REM --- Fin ---
Pour mieux comprendre l'exemple en BBC BASIC.