RETROGICIEL
CONVERSION THERMIQUE
RETROGICIEL
CONVERSION THERMIQUE
⇩. Présentation
Plusieurs pays anglo-saxons ont conservé le système de mesure impérial et il faut parfois convertir les données qu'ils nous envoient pour mieux en appréhender la portée.
Mais pour la température, le challenge est double : l'unité la plus souvent employée est le °Celsius alors que le système impérial utilise les °Fahrenheit, mais l'unité officielle est le °Kevin.
Formules de conversion :
°F = ( °C x 1,8 ) + 32
°C = ( °F - 32 ) / 1,8
°K = °C + 273,15
⇩. Consignes
Le programme doit :
demander s'il doit convertir des degrés Celsius vers Fahrenheit ou l'inverse ;
demander la valeur de la température à convertir ;
effectue la conversion demandée si la saisie est valide ;
afficher le résultat, en rappelant la valeur et l'unité de départ ;
convertir la valeur de départ en Kelvins ;
afficher le résultat en kelvins.
D'abord, faite-le fonctionner. Ensuite, faite-le beau. Enfin, faite-le performant.
Amusez-vous bien !
Télécharger RETROGICIEL - Conversion thermique.
Cette présentation nécessite que Python 3 soit installé sur votre machine.
Après avoir téléchargé le fichier Conversion thermique.7z, décompressez-le dans le répertoire de votre choix.
Ouvrez le répertoire Le poids ideal 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 ---
# --- Conversion thermique ---
# -*- coding: utf-8 -*-
# --- PRESENTATION ---
print ( "CONVERSIONS DE TEMPERATURES" )
# --- BOUCLE PRINCIPALE ---
while True :
# --- Saisies des données par l'utilisateurs ---
print ( )
print ( "A. Convertir des degrés Fahrenheits en degrés Celsius." )
print ( "B. Convertir des Celsius Fahrenheits en degrés Fahrenheit." )
kunite = input ( "votre choix ( A ou B ) ? " )
kinitial = "Celsius" if kunite.upper ( ) == "B" else "Fahrenheits"
kvaleur = input ( f"Valeur des degrés { kinitial } ? " )
kvalide = True
# --- Controle de la validité de la valeur de la température ---
try :
kvaleur = float ( kvaleur )
except :
print ( "\nERREUR DE SAISIES.\nVeuillez saisir une température valide.\n" )
kvalide = False
# --- Calcule et affichage de la conversion de température ---
if kvalide :
kconvertis = ( ( kvaleur * 1.8 ) + 32 ) if kinitial == "Celsius" else ( ( kvaleur - 32 ) / 1.8 )
knouveau = "Celcius" if kinitial == "Fahrenheits" else "Fahrenheits"
kkelvin = ( kvaleur + 273.15 ) if kinitial == "Celsius" else ( ( ( kvaleur - 32 ) / 1.8 ) + 273.15 )
print ( f"\n{ kvaleur } degré(s) { kinitial } correspondent à : " )
print ( f"- {kconvertis:.2f} degré(s) { knouveau } ;" )
print ( f"- {kkelvin:.2f} degré(s) Kelvins." )
# --- Choix du bouclage du programme ---
kchoix = input ( "Voulez-vous convertir une autre température (O ou N) ?" )
if kchoix.upper ( ) == "N" : break
# --- FIN DU PROGRAMME ---
print ( "Au revoir" )
# --- Programme : JFB ---
# --- Avril 2024 ---
# --- Fin ---
Pour mieux comprendre l'exemple en PYTHON sans tkinter.
# --- Origine Nerd ---
# --- RETROGICIEL - TKINTER ---
# --- Conversion thermique ---
# -*- coding: utf-8 -*-
# --- IMPORTATION DES MODULES ---
# --- Modules de la bibliothèque standard ---
import tkinter
# --- DÉFINITION DES FONCTIONS PERSONNALISEES ---
# --- Choix du sens de la conversion ---
def FNC_Sens ( ) :
if LAB_Saisie [ "text" ] == "Celsius" :
LAB_Saisie [ "text" ] = "Fahrenheit"
LAB_Conversion [ "text" ] = "Celsius"
else :
LAB_Saisie [ "text" ] = "Celsius"
LAB_Conversion [ "text" ] = "Fahrenheit"
FNC_Calculer ( )
# --- Calcul de la convertion ---
def FNC_Calculer ( ) :
try :
ksaisie = float ( ENT_Saisie.get ( ) )
if LAB_Saisie [ "text" ] == "Celsius" :
LAB_Resultat [ "text" ] = f"{ ( ksaisie * 1.8 ) + 32:.2f}"
LAB_Kelvin [ "text" ] = f"{ ksaisie + 273.15:.2f}"
else :
LAB_Resultat [ "text" ] = f"{ ( ksaisie - 32 ) / 1.8:.2f}"
LAB_Kelvin [ "text" ] = f"{ ( ( ksaisie - 32 ) / 1.8 ) + 273.15:.2f}"
except :
LAB_Resultat [ "text" ] = "ERREUR"
LAB_Kelvin [ "text" ] = "ERREUR"
# --- CREATION DE L'INTERFACE GRAPHIQUE ---
# --- Création de la fenêtre principale ---
TKI_Principal = tkinter.Tk ( )
TKI_Principal.title ( "RETROGICIEL - Conversion thermique" )
# --- Création des controles nommées ---
ENT_Saisie = tkinter.Entry ( TKI_Principal , width = 6 )
LAB_Saisie = tkinter.Label ( TKI_Principal , text = "Celsius" )
LAB_Conversion = tkinter.Label ( TKI_Principal , text = "Fahrenheit" )
LAB_Resultat = tkinter.Label ( TKI_Principal , text = "..." , bg = "lightyellow" , fg = "red" , relief = "solid" )
LAB_Kelvin = tkinter.Label ( TKI_Principal , text = "..." , bg = "lightyellow" , fg = "red" , relief = "solid" )
# --- Mise en place des controles (anonymes et nommés) dans la fenêtre principale ---
tkinter.Label ( TKI_Principal , text = "CONVERSION THERMIQUE" ).grid ( row = 0 , column = 0 , columnspan = 4 , sticky = "nesw" )
tkinter.Button ( TKI_Principal , text = "\u2B81" , command = FNC_Sens ).grid ( row = 1 , column = 0 , rowspan = 2 , sticky = "nesw" )
LAB_Saisie.grid ( row = 1 , column = 1 , sticky = "e" )
ENT_Saisie.grid ( row = 1 , column = 2 , sticky = "nesw" )
tkinter.Button ( TKI_Principal , text = "\u2BA7" , command = FNC_Calculer ).grid ( row = 1 , column = 3 , rowspan = 2 , sticky = "nesw" )
LAB_Conversion.grid ( row = 2 , column = 1 , sticky = "e" )
LAB_Resultat.grid ( row = 2 , column = 2 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "Kelvin" ).grid ( row = 3 , column = 1 , sticky = "e" )
LAB_Kelvin.grid ( row = 3 , column = 2 , sticky = "nesw" )
tkinter.Button ( TKI_Principal , text = "\u279C" , command = TKI_Principal.destroy ).grid ( row = 3 , column = 3 , sticky = "nesw" )
# --- DEBUT DU PROGRAMME ---
TKI_Principal.mainloop ( )
# --- Programme : JFB ---
# --- Avril 2024 ---
# --- Fin ---
Pour mieux comprendre l'exemple en PYTHON avec tkinter.
' --- Origine Nerd propose pour ---
' --- RETROGICIEL - QB64 ---
' --- Conversion thermique ---
' --- DEBUT DU PROGRAMME ---
PRINT "CONVERSION THERMIQUE."
' --- BOUCLE PRINCIPALE ---
DO
' --- Saisie du choix de la conversion ---
PRINT "A. Convertir des degres Celsius en degres Fahrenheit."
PRINT "B. Convertir des degres Fahrenheit en degres Celsius."
INPUT "Votre choix [A ou B] ? ", kchoix$
IF UCASE$(kchoix$) = "A" THEN kunite$ = "Celsius" ELSE kunite$ = "Fahrenheit"
' --- Saisie de la valeur à convertir ---
PRINT "Entrez la valeur des degres "; kunite$; "... ";
INPUT kvaleur
' --- Calcul en fonction des données saisies ---
IF kunite$ = "Celsius" THEN
kcelsius = kvaleur
kfahrenheit = (kcelsius * 1.8) + 32
PRINT kvaleur; "C valent"; kfahrenheit; "F";
ELSE
kfahrenheit = kvaleur
kcelsius = (kfahrenheit - 32) / 1.8
PRINT kvaleur; "F valent"; kcelsius; "C";
END IF
' --- Conversion en kelvins ---
PRINT "soit"; kcelsius + 273.15; "K"
' --- Bouclage du programme ---
INPUT "Voulez-vous recommencer [ O ou N ] ? "; kchoix$
LOOP UNTIL UCASE$(kchoix$) = "N"
' --- FIN DU PROGRAMME ---
PRINT "Au revoir."
END
' --- Programme : JFB ---
' --- Avril 2024 ---
' --- Fin ---
Pour mieux comprendre l'exemple en QB64.
REM --- Origine Nerd propose pour ---
REM --- RETROGICIEL - BBC BASIC ---
REM --- Conversion thermique ---
REM --- DEBUT DU PROGRAMME ---
PRINT "CONVERSION THERMIQUE."
REM --- BOUCLE PRINCIPALE ---
REPEAT
REM --- Saisie du choix de la conversion ---
PRINT "A. Convertir des degres Celsius en degres Fahrenheit."
PRINT "B. Convertir des degres Fahrenheit en degres Celsius."
INPUT "Votre choix [A ou B] ? ", kchoix$
IF kchoix$ = "A" OR kchoix$ = "a" THEN kunite$ = "Celsius" ELSE kunite$ = "Fahrenheit"
REM --- Saisie de la valeur à convertir ---
PRINT "Entrez la valeur des degres "; kunite$; "... ";
INPUT kvaleur
REM --- Cacule en fonctions des saisies de l'utilisateur ---
IF kunite$ = "Celsius" THEN
kcelsius = kvaleur
kfahrenheit = (kcelsius * 1.8) + 32
PRINT STR$(kvaleur); "C valent "; kfahrenheit; "F";
ELSE
kfahrenheit = kvaleur
kcelsius = (kfahrenheit - 32) / 1.8
PRINT STR$(kvaleur); "F valent "; kcelsius; "C";
ENDIF
REM --- Conversions en kelvins ---
PRINT " soit "; kcelsius + 273.15; "K."
REM --- choix du bouclage du programme pas l'utilisateur ---
INPUT "Voulez-vous recommencer [ O ou N ] ? "; kchoix$
UNTIL kchoix$ = "N" OR kchoix$ = "n"
REM --- FIN DU PROGRAMME ---
PRINT "Au revoir."
END
REM --- Programme : JFB ---
REM --- Avril 2024 ---
REM --- Fin ---
Pour mieux comprendre l'exemple en BBC BASIC.