Autore Topic: Spaghetti code  (Letto 1023 volte)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Spaghetti code
« il: 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
« Ultima modifica: 07 Marzo 2020, 22:54:15 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Spaghetti code
« Risposta #1 il: 08 Marzo 2020, 00:44:16 »
Cosa consigliano i maestri?  :)

1) Impegna gli spaghetti in modo diverso:



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




« Ultima modifica: 08 Marzo 2020, 00:46:45 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline cogier

  • Gambero
  • **
  • Post: 57
    • Mostra profilo
Re:Spaghetti code
« Risposta #2 il: 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.

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Spaghetti code
« Risposta #3 il: 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:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Spaghetti code
« Risposta #4 il: 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).



« Ultima modifica: 08 Marzo 2020, 18:06:40 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Spaghetti code
« Risposta #5 il: 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:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Spaghetti code
« Risposta #6 il: 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 e CONTINUE

 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Spaghetti code
« Risposta #7 il: 09 Marzo 2020, 00:48:48 »
Ahora el uso de GOTO es aborrecido también en el lenguaje C.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Spaghetti code
« Risposta #8 il: 09 Marzo 2020, 15:59:53 »
Allego dimostrazione sulla falsariga del tuo pseudo-code.

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Spaghetti code
« Risposta #9 il: 09 Marzo 2020, 16:26:35 »
Allego dimostrazione sulla falsariga del tuo pseudo-code.

 :ciao:
Grazie!
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Spaghetti code
« Risposta #10 il: 09 Marzo 2020, 16:57:53 »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Spaghetti code
« Risposta #11 il: 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
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Spaghetti code
« Risposta #12 il: 09 Marzo 2020, 21:01:41 »
Spaghetti al nero di seppia....sono tanto buoni!
   :ok:
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »