Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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... lol) 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 sad 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 wink


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

carafife a écrit :

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! wink
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à big_smile


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! wink
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à big_smile


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 ....
wink


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 wink

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