Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    residenza
    Mantova
    Messaggi
    66

    [Pascal] Come fermare esecuzione programma al termine

    Apro una nuova discussione come mi è stato consigliato e riscrivo il mio problema che ho con Pascal:

    Per piacere, mi servirebbe un consiglio.
    Ho fatto partire un programma con Pascal il quale si avvia correttamente, ma una volta finita la sua esecuzione invece di aspettare che io schiacci invio, torna subito al codice sorgente con una finestra che mi dice "exited with exitcode=201".
    Qualcuno sa aiutarmi?

    Questo è il codice:

    codice:
    program prova;
    
    uses crt;
    
    
    var
            contatore, colonna, riga, colore: integer;
    
    
    begin
            clrscr;
    
    
            contatore:=0;
    
    
            repeat
            colonna:= random (81);
            riga:= random (26);
            gotoxy(colonna, riga);
            colore:=random (16);
            if colore=YELLOW then
            contatore:=contatore +1;
            textcolor(colore);
    
            write('█');
            delay(100);
            until contatore=10;
    
    
            readln
    
    
    end.


  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,305
    @Mark Lenders: il titolo della discussione deve dare un'idea del contenuto della stessa. Se scrivi "Problema con Pascal" non dai nessuna informazione, se non quella del inguaggio coinvolto (che è comunque obbligatorio indicare). Ho corretto io il titolo della discussione.


    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2014
    residenza
    Mantova
    Messaggi
    66
    È vero! C'è scritto anche nel regolamento, ma mi era sfuggito.
    Grazie.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,305
    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

  5. #5
    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.

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,305
    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2014
    residenza
    Mantova
    Messaggi
    66
    Grazie, molto gentile!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.