Gambas-it

Gambas3 => Programmazione => Topic aperto da: kicco - 07 Marzo 2020, 22:49:07

Titolo: Spaghetti code
Inserito da: kicco - 07 Marzo 2020, 22:49:07
 :ciao:
Ho scritto un codice con un pezzo di "Spaghetti code". Ora che è funzionante in tutte le sue parti, stavo cercando di commentarlo correttamente e di migliorare il pezzo "spaghetti code".

 
Codice: [Seleziona]
For i = 0 To......
            For Each .........
                  If ........... Then     
                        If ..........Then
                              If .......... Then
                                    Print "Hello world"
                                    Goto salta
                              Endif
                          Print "pippo"
                        Endif
                     Print "Pluto"
                  Endif
            Next
     salta:
Next

Come si fa a saltare fuori dai cicli e dalle condizioni senza usare GOTO?
Cosa consigliano i maestri?  :)
 :-*
Spaghetti code https://it.wikipedia.org/wiki/Spaghetti_code (https://it.wikipedia.org/wiki/Spaghetti_code)
Titolo: Re:Spaghetti code
Inserito da: vuott - 08 Marzo 2020, 00:44:16
Cosa consigliano i maestri?  :)

1) Impegna gli spaghetti in modo diverso:
(https://www.cucinasud.it/images/2019/08/14/spaghettilumachine_large.jpg)


2) ...impegna il tuo tempo sul Componente gb.map !   >:(




Titolo: Re:Spaghetti code
Inserito da: cogier - 08 Marzo 2020, 13:38:08
Citazione
Come si fa a saltare fuori dai cicli e dalle condizioni senza usare GOTO?

Codice: [Seleziona]
Dim sArray As New String[]
  Dim F As Integer

  For F = 1 To 10
    If F = 5 Then Break
  Next

  Print F
  Print

  Do
    F = Rand(1, 10)
    If sArray.Find(Str(F)) = -1 Then sArray.Add(Str(F))
    If sArray.count = 10 Then Break
  Loop

  Print sArray.Join(", ")

Speriamo che questo vi aiuti.
Titolo: Re:Spaghetti code
Inserito da: kicco - 08 Marzo 2020, 16:10:44
@vuott
Citazione
2) ...impegna il tuo tempo sul Componente gb.map !   
  :-[  Prof, sono in zona rossa e non riesco ad applicarmi perchè la mia rete funziona male e la cugina del portinaio di mia zia Amanda ha il raffreddore. Posso rimediare il prossimo quadrimestre?
 :P

@cogier
Grazie, ci studio su un po'! Sinceramente speravo in qualcosa di più sintetico!  :)
 :ciao:
Titolo: Re:Spaghetti code
Inserito da: vuott - 08 Marzo 2020, 18:04:38

Grazie, ci studio su un po'! Sinceramente speravo in qualcosa di più sintetico!

Non si capisce se tu vuoi - FERMO RESTANDO quel codice che hai scritto con gli "IF" innestati - una soluzione priva del "GOTO", oppure se vuoi un codice alternativo (che riproduca ovviamente i medesimi effetti).



Titolo: Re:Spaghetti code
Inserito da: kicco - 08 Marzo 2020, 19:33:55

Grazie, ci studio su un po'! Sinceramente speravo in qualcosa di più sintetico!

Non si capisce se tu vuoi - FERMO RESTANDO quel codice che hai scritto con gli "IF" innestati - una soluzione priva del "GOTO", oppure se vuoi un codice alternativo (che riproduca ovviamente i medesimi effetti).
Vorrei trovare una soluzione senza GOTO. So che non è elegante l'uso del GOTO!  :-[
Anche se a dire il vero, quella col GOTO funziona bene.
 :ciao:
Titolo: Re:Spaghetti code
Inserito da: Gianluigi - 09 Marzo 2020, 00:26:11

Vorrei trovare una soluzione senza GOTO. So che non è elegante l'uso del GOTO!  :-[
Anche se a dire il vero, quella col GOTO funziona bene.
 :ciao:

Scusa se non mi sono fatto vivo ma sto impazzendo con GitLab  :rolleyes:

E scusami anche se non ho guardato al tuo esempio, ma in generale se nei loop si vuole evitare i GOTO occorre affidarsi a BREAK (http://gambaswiki.org/wiki/lang/break?l=it) e CONTINUE (http://gambaswiki.org/wiki/lang/continue?l=it)

 :ciao: :ciao:
Titolo: Re:Spaghetti code
Inserito da: vuott - 09 Marzo 2020, 00:48:48
Ahora el uso de GOTO es aborrecido también en el lenguaje C.
Titolo: Re:Spaghetti code
Inserito da: Gianluigi - 09 Marzo 2020, 15:59:53
Allego dimostrazione sulla falsariga del tuo pseudo-code.

 :ciao:
Titolo: Re:Spaghetti code
Inserito da: kicco - 09 Marzo 2020, 16:26:35
Allego dimostrazione sulla falsariga del tuo pseudo-code.

 :ciao:
Grazie!
Titolo: Re:Spaghetti code
Inserito da: vuott - 09 Marzo 2020, 16:57:53
https://www.youtube.com/watch?v=Uj2mV7qkH6Y
Titolo: Re:Spaghetti code
Inserito da: kicco - 09 Marzo 2020, 18:09:45
https://www.youtube.com/watch?v=Uj2mV7qkH6Y
Spaghetti al nero di seppia.... Mi sa che lascio il codice così, sono tanto buoni! :P
Titolo: Re:Spaghetti code
Inserito da: vuott - 09 Marzo 2020, 21:01:41
Spaghetti al nero di seppia....sono tanto buoni!
   :ok: