#1 Le 29/09/2012, à 23:12
- carafife
Equivalent fonction "goto" en basic
Bonsoir à tous,
Je pianote un chouïa sur la console depuis quelques temps et essaye d'approfondir mes connaissances en lisant divers sources sur le shell et les scripts. Je commence à en faire des petits pour commencer. A l'époque glorieuse (milieu du 19e siècle... ) ou je m'amusais un peu en BASIC, il y avait une commande qui s'appelait GOTO et qui permettait de se rendre directement à une ligne distincte ex: GOTO 110 renvoyait le programme à la ligne 110. J'ai beau chercher mais je ne trouve pas d'équivalent dans le shell Idem pour les GOSUB/RETURN qui permettaient d'appeler une sous routine et de revenir au même endroit après son exécution. Existe t-il des équivalents à ces commandes dans le shell selon vous ?
Merci d'avance pour vos lumières
Ubuntu 16.04.2 LTS | 4.8.0-52-generic
Portable: ASUS Intel core I7 8 Gb de Ram
Son: Card Intel Device 9d71 driver: snd_hda_intel avec SonicMaster (non reconnu) | Graphic: Nvidia GEForce 940Mx
Mes tutos logiciels photo: https://www.youtube.com/channel/UCXqw9E … Tbl5qH5jDA | Flickr: https://www.flickr.com/photos/carafife/
Hors ligne
#2 Le 29/09/2012, à 23:35
- Kooothor
Re : Equivalent fonction "goto" en basic
Salut
Existe t-il des équivalents à ces commandes dans le shell selon vous ?
Non.
Par contre voici ce qui existe :
https://www.gnu.org/software/bash/manua … d-Commands
@+
~ktr
Hors ligne
#3 Le 29/09/2012, à 23:48
- carafife
Re : Equivalent fonction "goto" en basic
Merci Kooothor pour ta réponse rapide!
Vraiment dommage car ces types de commandes étaient d'un pratique! Bon je survivrais car je suppose que des langages plus évolués comme "python" qui attise ma curiosité doit posséder ce genre de commandes. Dans le cas contraire, il faudra organiser le retour du BASIC!... Bon j'en fais un peu trop là
Ubuntu 16.04.2 LTS | 4.8.0-52-generic
Portable: ASUS Intel core I7 8 Gb de Ram
Son: Card Intel Device 9d71 driver: snd_hda_intel avec SonicMaster (non reconnu) | Graphic: Nvidia GEForce 940Mx
Mes tutos logiciels photo: https://www.youtube.com/channel/UCXqw9E … Tbl5qH5jDA | Flickr: https://www.flickr.com/photos/carafife/
Hors ligne
#4 Le 29/09/2012, à 23:51
- carafife
Re : Equivalent fonction "goto" en basic
Merci Kooothor pour ta réponse rapide!
Vraiment dommage car ces types de commandes étaient d'un pratique! Bon je survivrais car je suppose que des langages plus évolués comme "python" qui attise ma curiosité doit posséder ce genre de commandes. Dans le cas contraire, il faudra organiser le retour du BASIC!... Bon j'en fais un peu trop là
Ubuntu 16.04.2 LTS | 4.8.0-52-generic
Portable: ASUS Intel core I7 8 Gb de Ram
Son: Card Intel Device 9d71 driver: snd_hda_intel avec SonicMaster (non reconnu) | Graphic: Nvidia GEForce 940Mx
Mes tutos logiciels photo: https://www.youtube.com/channel/UCXqw9E … Tbl5qH5jDA | Flickr: https://www.flickr.com/photos/carafife/
Hors ligne
#5 Le 29/09/2012, à 23:59
- ssdg
Re : Equivalent fonction "goto" en basic
Quand j'ai appris tout seul à programmer, j'utilisait GOTO en permanance. (mes premiers programmes étaient en qBasic).
Quand on m'a appris à programmer, je n'ai plus compris quel en était l'intérêt.
En fait, GOTO est une instruction qui n'a un sens que lorsque le langage ne supporte pas les boucles, les if et les fonctions.
Si tu veux "sauter" une partie du code suite à une condition, en fait, c'est que le code que tu saute est conditionnel=> IF
Si tu veux "sauter" une partie du code pour aller à un code qui exécute une fonction quelconque, c'est une routine => défini une méthode.
Si tu veux "sauter" une partie du code (vers le haut) sur une condition, c'est une boucle=> while, do-while ou for, c'est à toi de voir.
Je fais du Java depuis qu'on m'a appris. Je crois qu'il y a un "goto" dans le langage ("crois" parce-que je ne l'ai jamais rencontré ni en ai eu besoin) J'ai fait un paquet de trucs douteux (parceque je n'ai pas trouvé mieux ou parceque je n'avais pas toutes les "billes" pour faire mieux) mais je n'ai jamais eu besoin du goto.
s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.
Hors ligne
#6 Le 30/09/2012, à 08:06
- pingouinux
Re : Equivalent fonction "goto" en basic
Bonjour,
Autant que je me souvienne, le GOSUB était assez lourdingue à utiliser. Il fallait remplir avant l'appel les variables qui allaient être utilisées dans le sous-programme, et la (ou les) valeur(s) de retour passai(en)t aussi par l'intermédiaire de variable(s).
En shell, c'est plus simple. Voici un exemple :
$ carre() ( x=$1; echo $((x*x)) )
$ carre 3
9
Hors ligne
#7 Le 30/09/2012, à 12:06
- Braun
Re : Equivalent fonction "goto" en basic
Bonjour,
Et oui, "le GOSUB était assez lourdingue à utiliser." et le GOTO à proscrire.
Deux raisons pour lesquelles j'ai toujours proclamé que l'initiation au Basic était néfaste pour des auditeurs mineurs et non suffisamment avertis.
Ceci dit un usage futé de ces branchement permettait de piéger facilement un tout petit programme Basic:
Dans une bonne boucle, à la ligne adresse_1 tu places un GOSUB adresse_2 et tu termines ta subroutine non pas par un RETURN mais par un GOTO adresse_3, ligne suivant la ligne adresse_1.
Normalement le bidule tourne bien un certain temps jusqu'au message de dépassement de la capacité mémoire...
Hors ligne
#8 Le 30/09/2012, à 13:24
- Bousky
Re : Equivalent fonction "goto" en basic
Goto, c'est mal !
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne
#9 Le 30/09/2012, à 16:08
- carafife
Re : Equivalent fonction "goto" en basic
Bon ok je me tait ....
Ubuntu 16.04.2 LTS | 4.8.0-52-generic
Portable: ASUS Intel core I7 8 Gb de Ram
Son: Card Intel Device 9d71 driver: snd_hda_intel avec SonicMaster (non reconnu) | Graphic: Nvidia GEForce 940Mx
Mes tutos logiciels photo: https://www.youtube.com/channel/UCXqw9E … Tbl5qH5jDA | Flickr: https://www.flickr.com/photos/carafife/
Hors ligne
#10 Le 30/09/2012, à 17:30
- Claude33
Re : Equivalent fonction "goto" en basic
Bonjour,
Il existe le petit frère de "Visual Basic" sous Ubuntu, il s'appelle "Gambas". Il s'installe par la logithèque Ubuntu.
Bon courage
Hors ligne
#11 Le 30/09/2012, à 19:52
- Bousky
Re : Equivalent fonction "goto" en basic
Là on parle du BASIC, ça n'a absolument rien à voir avec VB.
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne
#12 Le 01/10/2012, à 08:13
- carafife
Re : Equivalent fonction "goto" en basic
Oui en effet le basic est different de visual;) Je confirme, et vous l'aurez bien compris, ne pas être un expert en prog. Cependant, je me souviens avoir créé un petit programme de jeu du pendu à deux joueurs qui chacun leur tour appelaient une sous routine par gosub qui permettait de jouer un coup. Je n'ai pas encore trouvé le moyen de la faire pour l'instant avec le bash... Je continue la lecture ;-)
Ubuntu 16.04.2 LTS | 4.8.0-52-generic
Portable: ASUS Intel core I7 8 Gb de Ram
Son: Card Intel Device 9d71 driver: snd_hda_intel avec SonicMaster (non reconnu) | Graphic: Nvidia GEForce 940Mx
Mes tutos logiciels photo: https://www.youtube.com/channel/UCXqw9E … Tbl5qH5jDA | Flickr: https://www.flickr.com/photos/carafife/
Hors ligne
#13 Le 01/10/2012, à 17:07
- Bousky
Re : Equivalent fonction "goto" en basic
L'équivalent des gosub/return dans un langage dit structuré, c'est les fonctions. Petit exemple :
# définition :
function test {
echo "test : $1 - $2"
}
# appel :
test "argument 1" "argument 2"
# résultat :
test : argument 1 - argument 2
# pour mettre le résultat dans une variable (ou le passer en argument à une autre commande) plutôt que de l'afficher :
variable=$(test argument1 argumen2)
Dernière modification par Bousky (Le 01/10/2012, à 17:08)
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne