Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Ora, io sono molto arrugginito per quanto riguarda il Pascal, ma... non mi pare corretto quel repeat/until. Nel senso che potrebbe anche ciclare all'infinito.

    L'unica condizione di uscita è che la variabile contatore assuma valore 10... ma essa viene incrementata SE E SOLO SE la variabile colore (il cui valore è casuale) vale YELLOW (che non so quanto valga... credo 14, se non erro). Ora: chi ti garantisce che verrà mai estratto il valore YELLOW? E, soprattutto, chi ti garantisce che verrà estratto 10 volte quel valore?

    C'è da dire che, sempre se non ricordo male, il generatore di numeri casuali va inizializzato mediante chiamata alla procedura Randomize (ma non ne sono sicuro).

    PS: consiglio di indentare meglio... tutte le istruzioni dentro il repeat/until dovrebbero essere indentate; l'istruzione del ramo then dovrebbe essere indentata... altrimenti si fa davvero fatica a seguire il codice (ho smesso di programmare in BASIC con numeri di linea senza indentazione almeno 18 anni fa).

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2014
    residenza
    Mantova
    Messaggi
    66
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Ora, io sono molto arrugginito per quanto riguarda il Pascal, ma... non mi pare corretto quel repeat/until. Nel senso che potrebbe anche ciclare all'infinito.

    L'unica condizione di uscita è che la variabile contatore assuma valore 10... ma essa viene incrementata SE E SOLO SE la variabile colore (il cui valore è casuale) vale YELLOW (che non so quanto valga... credo 14, se non erro). Ora: chi ti garantisce che verrà mai estratto il valore YELLOW? E, soprattutto, chi ti garantisce che verrà estratto 10 volte quel valore?
    Beh sicuramente quando si stampano a video dei colori random, prima o poi ci si arriva per forza a dieci gialli. Infatto il programma funziona correttamente, il problema è che una volta eseguito il programma torna sulla pagina del cosice con il massaggio di errore....

    C'è da dire che, sempre se non ricordo male, il generatore di numeri casuali va inizializzato mediante chiamata alla procedura Randomize (ma non ne sono sicuro).
    Si in effetti è vero, ma funziona anche senza.
    Per quel poco che ne so, l'unica differenza è che se non si inserisce il comando randomize tutte le volte che faccio partire il programma verrà eseguito nella stessa identica maniera della volta precedente, anche quella successiva e così via.
    PS: consiglio di indentare meglio... tutte le istruzioni dentro il repeat/until dovrebbero essere indentate; l'istruzione del ramo then dovrebbe essere indentata... altrimenti si fa davvero fatica a seguire il codice (ho smesso di programmare in BASIC con numeri di linea senza indentazione almeno 18 anni fa).

    Ciao.
    Grazie del consiglio.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quote Originariamente inviata da Mark Lenders Visualizza il messaggio
    Beh sicuramente quando si stampano a video dei colori random, prima o poi ci si arriva per forza a dieci gialli.
    Non darlo per scontato... una sequenza di numeri casuali perfettamente accettabile potrebbe anche non produrre alcun "14". E' raro, molto raro, ma è perfettamente lecito che ciò accada... quindi il tuo programma non terminerebbe.

    Ad ogni modo, ho installato al volo il compilatore FreePascal e ho dato in pasto il tuo programma... avviato, si è fermato, ha atteso che io premessi INVIO e ha terminato senza alcun problema.

    Probabilmente c'è qualcos'altro o sulla tua macchina, o sul tuo IDE, o da qualche altra parte.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.