RETROGICIEL
C'EST LE PIED
RETROGICIEL
C'EST LE PIED
⇩. Présentation
Les pays anglo-saxons utilisent, populairement, les unités de longueur dites naturelles, qui en plus ne sont pas divisé décimalement, contrairement au reste du monde qui s'est depuis longtemps rallié au système métrique, plus performant. De ce fait, il est parfois utile de pouvoir convertir rapidement des longueurs d'un système à l'autre, pour une meilleure compréhension entre interlocuteurs.
Système naturel des longueurs, ou système impérial.
1 pouce = 0,0254 ( = 2,54 cm = 25,4 mm )
1 pied = 12 pouces ( = 0,3048 m = 30,48 cm )
1 yard = 3 pieds = 36 pouces ( = 0,9144 m )
1 mile = 1760 yards = 5280 pieds ( = 1609,344 m )
⇩. Consignes
Le programme doit :
- demander à l'utilisateur le type d'unités qu'il souhaite convertir ;
- selon le choix de l'utilisateur :
demander le nombre de miles, de yards, de pieds et de pouces ou ;
demander le nombre de km, de m, de cm et de mm ;
- controler si les saisies sont valides, sinon terminer le traitement ;
- calculer les conversions ;
- afficher le résultat sous au moins deux formes pratiques.
D'abord, faite-le fonctionner. Ensuite, faite-le beau. Enfin, faite-le performant.
Amusez-vous bien !
Télécharger RETROGICIEL - C'est le pied.
Cette présentation nécessite que Python 3 soit installé sur votre machine.
Après avoir téléchargé le fichier C'est le pied.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 ---
# --- C'est le pied ---
# -*- coding: utf-8 -*-
# --- DÉFINITION DES FONCTIONS PERSONNALISEES ---
# --- Convertir vers le système impérial ---
def FNC_Imperial ( ) :
# --- Saisie des longueurs métriques et controle de leur validité ---
try :
kkm = int ( input ( "Nombre de kilomètre(s) ? " ) )
kmetre = int ( input ( "Nombre de mètre(s) ? " ) )
kcm = int ( input ( "Nombre de centimètre(s) ? " ) )
kmm = int ( input ( "Nombre de millimètre(s) ? " ) )
except :
print( "\nERREUR DE SAISIES.\nVeuillez saisir uniquement de valeurs numériques.\n")
return
# --- Convertion des longueurs métriques en pouces ---
kpouce = kkm * 39370.1
kpouce += kmetre * 39.3701
kpouce += kcm * 0.3937
kpouce += kmm * 0.0394
kpouce = int ( kpouce )
print ( f"{ kkm } km, { kmetre } m, { kcm } cm et { kmm } mm" )
print ( f"{ kpouce } pouce(s) c'est-à-dire" )
# --- convertion des pouces en unités natureles ---
kmile = kpouce // 63360
kpouce = kpouce - ( kmile * 63360 )
kyard = kpouce // 36
kpouce = kpouce - ( kyard * 36 )
kpied = kpouce // 12
kpouce = kpouce - ( kpied * 12 )
print ( f"{ kmile } mile(s), { kyard } yard(s), { kpied } pied(s), et { kpouce } pouce(s)." )
# --- Convertir vers le système métrique ---
def FNC_Metrique ( ) :
# --- Saisie des longueurs impérial et controle de leur validité ---
try :
kmile = int ( input ( "Nombre de miles ? " ) )
kyard = int ( input ( "Nombre de yards ? " ) )
kfoot = int ( input ( "Nombre de pieds ? " ) )
kinch = int ( input ( "Nombre de pouces ? " ) )
except :
print( "\nERREUR DE SAISIES.\nVeuillez saisir uniquement de valeurs numériques.\n")
return
# --- convertion des longueurs impérial en millimètres ---
kmm = kmile * 1609340
kmm += kyard * 914.4
kmm += kfoot * 304.8
kmm += kinch * 25.4
kmm = int ( kmm )
print ( f"{ kmile } mile(s), { kyard } yard(s), { kfoot } pied(s) et { kinch } pouce(s)" )
print ( f"{ (kmm/1000):.3f} mètre(s) c'est-à-dire" )
# --- convertion des millimetres en unités métriques ---
kkm = kmm // 1000000
kmm = kmm - ( kkm * 1000000 )
kmetre = kmm // 1000
kmm = kmm - ( kmetre * 1000 )
kcm = kmm // 10
kmm = kmm - ( kcm * 10 )
print ( f"{ kkm } km, { kmetre } mètre(s), { kcm } cm, et { kmm } mm." )
# --- DEBUT DU PROGRAMME ---
# --- PRESENTATION ---
print ( "C'EST LE PIED." )
print ( "PROGRAMME DE CONVERTION DE LONGUEURS IMPERIALES" )
print ( "EN LONGUEURS METRIQUE OU INVERSEMENT." )
# --- BOUCLE PRINCIPALE ---
while True :
# --- Choix de la conversion ---
print ( )
print ( "A. Convertir des longueurs naturelles vers le système métrique." )
print ( "B. Convertir des longueurs métriques vers le système impérial." )
ksysteme = input ( "Votre choix ( A ou B ) ? " )
FNC_Imperial ( ) if ksysteme.upper ( ) == "B" else FNC_Metrique ( )
# --- Choix du bouclage du programme ---
kchoix = input ( "\nVoulez-vous convertir une autre distance (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 ---
# ---C'est le pied ---
# -*- coding: utf-8 -*-
# --- IMPORTATION DES MODULES ---
# --- Modules de la bibliothèque standard ---
import tkinter
# --- DÉFINITION DES FONCTIONS POUR PROGRAMME ADAPTE ---
# --- Convertir vers le système impérial ---
def FNC_Imperial ( ) :
LAB_Unite [ "text" ] = ""
ENT_Mile.delete ( 0 , "end" )
ENT_Yard.delete ( 0 , "end" )
ENT_Foot.delete ( 0 , "end" )
ENT_Inch.delete ( 0 , "end" )
try :
kpouces = float ( ENT_Km.get ( ) ) * 39370.1
kpouces += float ( ENT_Metre.get ( ) ) * 39.3701
kpouces += float ( ENT_Cm.get ( ) ) * 0.3937
kpouces += float ( ENT_Mm.get ( ) ) * 0.0394
kpouces = int ( kpouces )
LAB_Unite [ "text" ] = f"{ kpouces } in"
except :
LAB_Unite [ "text" ] = "ERREUR !"
return
kmiles = kpouces // 63360
kpouces = kpouces - ( kmiles * 63360 )
kyards = kpouces // 36
kpouces = kpouces - ( kyards * 36 )
kpieds = kpouces // 12
kpouces = kpouces - ( kpieds * 12 )
ENT_Mile.insert ( 0 , kmiles )
ENT_Yard.insert ( 0 , kyards )
ENT_Foot.insert ( 0 , kpieds )
ENT_Inch.insert ( 0 , kpouces )
# --- Convertir vers le système métrique ---
def FNC_Metrique ( ) :
LAB_Unite [ "text" ] = ""
ENT_Km.delete ( 0 , "end" )
ENT_Metre.delete ( 0 , "end" )
ENT_Cm.delete ( 0 , "end" )
ENT_Mm.delete ( 0 , "end" )
try :
kmm = float ( ENT_Mile.get ( ) ) * 1609340
kmm += float ( ENT_Yard.get ( ) ) * 914.4
kmm += float ( ENT_Foot.get ( ) ) * 304.8
kmm += float ( ENT_Inch.get ( ) ) * 25.4
kmm = int ( kmm )
LAB_Unite [ "text" ] = f"{ (kmm/1000):.3f} m"
except :
LAB_Unite [ "text" ] = "ERREUR !"
return
kkm = kmm // 1000000
kmm = kmm - ( kkm * 1000000 )
kmetres = kmm // 1000
kmm = kmm - ( kmetres * 1000 )
kcm = kmm // 10
kmm = kmm - ( kcm * 10 )
ENT_Km.insert ( 0 , kkm )
ENT_Metre.insert ( 0 , kmetres )
ENT_Cm.insert ( 0 , kcm )
ENT_Mm.insert ( 0 , kmm )
# --- CREATION DE L'INTERFACE GRAPHIQUE ---
# --- Création de la fenêtre principale ---
TKI_Principal = tkinter.Tk ( )
TKI_Principal.title ( "RETROGICIEL - C'est le pied" )
# --- Création des controles nommées ---
ENT_Mile = tkinter.Entry ( TKI_Principal , width = 5 )
ENT_Yard = tkinter.Entry ( TKI_Principal , width = 5 )
ENT_Foot = tkinter.Entry ( TKI_Principal , width = 5 ) # --- pieds en francais
ENT_Inch = tkinter.Entry ( TKI_Principal , width = 5 ) # --- pouces en francais
ENT_Km = tkinter.Entry ( TKI_Principal , width = 5 )
ENT_Metre = tkinter.Entry ( TKI_Principal , width = 5 )
ENT_Cm = tkinter.Entry ( TKI_Principal , width = 5 )
ENT_Mm = tkinter.Entry ( TKI_Principal , width = 5 )
LAB_Unite = tkinter.Label ( TKI_Principal , font = ( None , 20 ) )
# --- Mise en place des controles (anonymes et nommés) dans la fenêtre principale ---
tkinter.Label ( TKI_Principal , text = "C'EST LE PIED !" ).grid ( row = 0 , column = 0 , columnspan = 6 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "Mile" ).grid ( row = 1 , column = 1 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "Yard" ).grid ( row = 1 , column = 2 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "Pied" ).grid ( row = 1 , column = 3 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "Pouce" ).grid ( row = 1 , column = 4 , sticky = "nesw" )
tkinter.Button ( TKI_Principal , text = "\u21A1" , font = ( None , 24 ) , command = FNC_Metrique ).grid ( row = 2 , column = 0 , rowspan = 3 , sticky = "nesw" )
ENT_Mile.grid ( row = 2 , column = 1 , sticky = "nesw" )
ENT_Yard.grid ( row = 2 , column = 2 , sticky = "nesw" )
ENT_Foot.grid ( row = 2 , column = 3 , sticky = "nesw" )
ENT_Inch.grid ( row = 2 , column = 4 , sticky = "nesw" )
tkinter.Button ( TKI_Principal , text = "\u219F" , font = ( None , 24 ) , command = FNC_Imperial ).grid ( row = 2 , column = 5 , rowspan = 3 , sticky = "nesw" )
LAB_Unite.grid ( row = 3 , column = 1 , columnspan = 4 , sticky = "nesw" )
ENT_Km.grid ( row = 4 , column = 1 , sticky = "nesw" )
ENT_Metre.grid ( row = 4 , column = 2 , sticky = "nesw" )
ENT_Cm.grid ( row = 4 , column = 3 , sticky = "nesw" )
ENT_Mm.grid ( row = 4 , column = 4 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "Km" ).grid ( row = 6 , column = 1 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "Metre" ).grid ( row = 6 , column = 2 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "cm" ).grid ( row = 6 , column = 3 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "mm" ).grid ( row = 6 , column = 4 , sticky = "nesw" )
tkinter.Button ( TKI_Principal , text = "\u23FB" , command = TKI_Principal.destroy ).grid ( row = 6 , column = 5 , 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 ---
' --- C'est le pied ---
' --- PRESENTATION ---
PRINT "C'EST LE PIED"
' --- BOUCLE PRINCIPALE ---
DO
' --- Choix de la conversion ---
PRINT "A. Du systeme imperial vers le systeme metrique."
PRINT "B. Du systeme metrique vers le systeme imperial."
INPUT "Entrez votre choix (A ou B) ... ", kchoix$
IF UCASE$(kchoix$) = "B" THEN GOSUB BLS_Metrique ELSE GOSUB BLS_Imperial
' --- Bouclage du programme ---
INPUT "Voulez-vous recommencer [ O ou N ] "; kchoix$
LOOP UNTIL UCASE$(kchoix$) = "N"
' --- FIN DU PROGRAMME ---
PRINT "Au revoir."
END
' --- DEFINITION DES FONCTIONS PERSONNALISEES ---
' --- Du système naturel vers le système métrique ---
BLS_Imperial:
INPUT "Nombre de mile(s) ... ", kmiles
INPUT "Nombre de yard(s) ... ", kyards
INPUT "Nombre de pied(s) ... ", kpieds
INPUT "Nombre de pouce(s) ... ", kpouces
klongueur = (kmiles * 5280) + (kyards * 3) + kpieds + (kpouces * (1 / 12))
kconvertion = klongueur * 0.3048 ' --- conversion des pieds en metres ---
PRINT ""
PRINT kmiles; "mile(s),"; kyards; "yard(s),"; kpieds; "pied(s) et"; kpouces; "pouce(s),"
PRINT " valent"; kconvertion; "metre(s) soit ";
PRINT INT(kconvertion / 1000); "km,";
PRINT INT(kconvertion MOD 1000); "m et";
PRINT INT((kconvertion - (INT(kconvertion))) * 1000); "mm."
RETURN
' --- Du système métrique vers le système naturel ---
BLS_Metrique:
INPUT "Nombre de kilometre(s)... ", kkm
INPUT "Nombre de metre(s)... ", kmetres
INPUT "Nombre de centimetre(s)... ", kcm
INPUT "Nombre de millimetre(s)... ", kmm
klongueur = (kkm * 100000) + (kmetres * 100) + kcm + (kmm / 10)
kpieds = INT(klongueur / 30.48) ' --- conversion des cm en pieds ---
kpouces = INT((klongueur - (kpieds * 30.48)) / 2.54)
kyards = INT(kpieds / 3)
kmiles = INT(kpieds / 5280)
PRINT ""
PRINT kkm; "km,"; kmetres; "m,"; kcm; "cm et"; kmm; "mm"
PRINT " valent"; kpieds; "pied(s) et"; kpouces; "pouce(s) soit"
PRINT kyards; "yard(s)"; kpieds - (kyards * 3); "pied(s) et"
PRINT kpouces; "pouce(s) ou encore"
PRINT kmiles; "mile(s),"; kyards - (kmiles * 1760); "yard(s)";
PRINT kpieds - (kyards * 3); , "pied(s) et"; kpouces, "pouce(s)."
RETURN
' --- Programme : JFB ---
' --- Avril 2024 ---
' --- Fin ---
Pour mieux comprendre l'exemple en QB64.
REM --- Origine Nerd propose pour ---
REM --- RETROGICIEL - BBC BASIC ---
REM --- C'est le pied ---
REM --- DEBUT DU PROGRAMME ---
PRINT "C'EST LE PIED"
REM --- BOUCLE PRINCIPALE ---
REPEAT
REM --- Choix de la conversion ---
PRINT ""
PRINT "A. Du systeme imperial vers le systeme metrique."
PRINT "B. Du systeme metrique vers le systeme imperial."
INPUT "Entrez votre choix (A ou B) ... ", kchoix$
IF kchoix$ = "B" OR kchoix$ = "b" THEN PROC_Metrique ELSE PROC_Imperial
REM --- Bouclage du programme ---
PRINT ""
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 --- Convertion du systeme naturel vers le systeme metrique ---
DEF PROC_Imperial
INPUT "Nombre de mile(s) ... ", kmiles
INPUT "Nombre de yard(s) ... ", kyards
INPUT "Nombre de pied(s) ... ", kpieds
INPUT "Nombre de pouce(s) ... ", kpouces
klongueur = (kmiles * 5280) + (kyards * 3) + kpieds + (kpouces * (1 / 12))
kconvertion = klongueur * 0.3048 REM --- conversion des pieds en metres ---
PRINT ""
PRINT STR$(kmiles); " mile(s), "; STR$(kyards); " yard(s), "; STR$(kpieds); " pied(s) et "; STR$(kpouces); " pouce(s),"
PRINT "valent "; STR$(kconvertion); " metre(s) soit ";
PRINT STR$(INT(kconvertion / 1000)); " km, ";
PRINT STR$(INT(kconvertion MOD 1000)); " m et ";
PRINT STR$(INT((kconvertion - (INT(kconvertion))) * 1000)); " mm."
ENDPROC
REM --- Cconverion du systeme metrique vers le systeme naturel ---
DEF PROC_Metrique:
INPUT "Nombre de kilometre(s)... ", kkm
INPUT "Nombre de metre(s)... ", kmetres
INPUT "Nombre de centimetre(s)... ", kcm
INPUT "Nombre de millimetre(s)... ", kmm
klongueur = (kkm * 100000) + (kmetres * 100) + kcm + (kmm / 10)
kpieds = INT(klongueur / 30.48) REM --- conversion des cm en pieds ---
kpouces = INT((klongueur - (kpieds * 30.48)) / 2.54)
kyards = INT(kpieds / 3)
kmiles = INT(kpieds / 5280)
PRINT ""
PRINT STR$(kkm); " km, "; STR$(kmetres); " m, "; STR$(kcm); " cm et "; STR$(kmm); " mm"
PRINT "valent "; STR$(kpieds); " pied(s) et "; STR$(kpouces); " pouce(s) soit"
PRINT STR$(kyards); " yard(s) "; STR$(kpieds - (kyards * 3)); " pied(s) et ";
PRINT STR$(kpouces); " pouce(s) ou encore"
PRINT STR$(kmiles); " mile(s), "; STR$(kyards - (kmiles * 1760)); " yard(s) ";
PRINT STR$(kpieds - (kyards * 3)); " pied(s) et "; STR$(kpouces); " pouce(s)."
ENDPROC
REM --- Programme : JFB ---
REM --- Avril 2024 ---
REM --- Fin ---
Pour mieux comprendre l'exemple en BBC BASIC.