Italian community of Lazarus and Free Pascal

Presentazioni => Presentazioni nuovi utenti => Topic aperto da: Linux63 - Gennaio 28, 2019, 11:50:58 pm

Titolo: Saluti+Verifica Codice Pascal
Inserito da: Linux63 - Gennaio 28, 2019, 11:50:58 pm
Salutoni a tutto il forum,
sono appassionato di elettronica, informatica, e programmazione che purtroppo ho dovuto abbandonare per un periodo. Spero che questa sia l’occasione giusta per ingranare di nuovo la marcia col Pascal.
Scusatemi se chiedo da subito il vostro aiuto, che ne dite di una verifica del codice di seguito riportato per capire quali possano essere gli errori?
Ho dato in pasto il codice a Lazarus ma restituisce errori (evidentemente la sintassi non è corretta).
Ecco il codice, dovrebbe contare il numero di post positivi, negativi e neutri da un database esterno:

program PostCount;
var i,n,PostNo,PostPos,PostNeg,PostNeu:integer;
begin
     PostNo:= 0
     PostPos:= 0
     PostNeg:= 0
     PostNeu:=0
     for i:= 0 to n-1 do
     begin
     PostNo:= PostNo++
     if PostMood[PostNo] = "pos" then PostPos := PostPos++
     if PostMood[PostNo] = "neg" then PostPos := PostNeg++
     if PostMood[PostNo] = "neu" then PostPos := PostNeu++
     PostNo := 0
     end;
    Writeln(PostPos," ", PostNeg, " ", PostNeu, " ")
    readln;
end.
Scusate per la lunghezza del mio primo post, un grazie anticipato e un grosso saluto, a presto. ;)
Titolo: Re:Saluti+Verifica Codice Pascal
Inserito da: xinyiman - Gennaio 29, 2019, 08:18:26 am
Ciao e benvenuto nel forum. Per prima cosa le linee finiscono con il ; come ti faccio vedere io qui sotto:

Codice: [Seleziona]
program PostCount;
var i,n,PostNo,PostPos,PostNeg,PostNeu:integer;
begin
     PostNo:= 0;
     PostPos:= 0;
     PostNeg:= 0;
     PostNeu:=0;
     for i:= 0 to n-1 do
     begin
     PostNo:= PostNo++;
     if PostMood[PostNo] = "pos" then PostPos := PostPos++;
     if PostMood[PostNo] = "neg" then PostPos := PostNeg++;
     if PostMood[PostNo] = "neu" then PostPos := PostNeu++;
     PostNo := 0;
     end;
    Writeln(PostPos," ", PostNeg, " ", PostNeu, " ");
    readln;
end.

Secondo la variabile n su cui tu hai  innescato il ciclo for non è stata inizializzata quindi non entrerà mai nel ciclo. Terzo l'array di stringhe chiamato PostMood non è stato dichiarato. E per finire questo programma non si collega a nessun database, i dati li tira fuori dall'array di stringhe PostMood che però  non viene valorizzato. Insomma come logica non può funzionare.
Titolo: Re:Saluti+Verifica Codice Pascal
Inserito da: Stilgar - Gennaio 29, 2019, 07:13:22 pm
Benvenuto :) PS:xinyiman  e chi ha detto che lo vuole collegare ad un DB?  ;D ;D ;D ;D ;D
Titolo: Re:Saluti+Verifica Codice Pascal
Inserito da: nomorelogic - Gennaio 29, 2019, 08:13:47 pm
benvenuto Linux63
c'erano parecchie cose da sistemare  ;)
forse un esempio è più utile

Codice: [Seleziona]
program project1;
var i,n,
    // PostNo,  <- inutile, usa la i del for
    PostPos,PostNeg,PostNeu:integer;
    // dichiarazione array
    PostMood: array[0..9] of string;
begin
    // popola array
    PostMood[0] := 'pos';
    PostMood[1] := 'neu';
    PostMood[2] := 'neg';
    PostMood[3] := 'pos';
    PostMood[4] := 'pos';
    PostMood[5] := 'neu';
    PostMood[6] := 'pos';
    PostMood[7] := 'neg';
    PostMood[8] := 'neu';
    PostMood[9] := 'neu';
    n:=Length(PostMood);

    // sorgente originale
    // PostNo:= 0;
    PostPos:= 0;
    PostNeg:= 0;
    PostNeu:=0;
    for i:= 0 to n-1 do
    begin
      if PostMood[i] = 'pos' then PostPos := PostPos + 1;
      if PostMood[i] = 'neg' then PostNeg += 1;
      if PostMood[i] = 'neu' then inc(PostNeu);
    end;
    Writeln('PostPos':10, 'PostNeg':10, 'PostNeu':10);
    Writeln(PostPos  :10, PostNeg  :10, PostNeu  :10);
    Writeln('Premi un tasto');
    readln;
end.
Titolo: Re:Saluti+Verifica Codice Pascal
Inserito da: Linux63 - Gennaio 29, 2019, 10:41:19 pm
Salve a tutti e bentrovati, siete grandi. Un enorme Grazie per la considerazione e pronta risposta alla mia richiesta e per il dettaglio nella spiegazione degli errori.
Scusate se nella richiesta avevo erroneamente indicato il riferimento ad un database esterno, mi era scappato pensando ad un altro lavoro in corso!!! :(.  Stilgar giustamente lo ha fatto notare.
I dettagli di xiniman e l'esempio esemplare di nomorelogic hanno reso i passaggi abbastanza chiari.
numerologic, però ho provato a dare in pasto a Lazarus il tuo esempio, ma in esecuzione si blocca sulla riga 32 dopo l'end;in corrispondenza di Writeln('PostPos':10, 'PostNeg':10, 'PostNeu':10); (riporto in allegato il messaggio di errore).
Ho ricontrollato ma potrei essermi perso qualcosa per strada!!! >:(
Hai avuto modo di testarlo anche tu su Lazarus?
Grazie ancora, a presto

Titolo: Re:Saluti+Verifica Codice Pascal
Inserito da: Stilgar - Gennaio 29, 2019, 10:47:04 pm
Ciao.Il programma postato da Nomore, sotto Windows, gira egregiamente.Ora mi viene il dubbio.Che tipo di progetto hai chiesto di creare a Lazarus?Controlla che sia impostato un progetto console e non visuale. Altrimenti i writeln e readln non hanno un file di testo (la console viene vista come tale) e si rompe inesorabilmente :)il 103 mi puzza da file non aperto :)
Stilgar
Titolo: Re:Saluti+Verifica Codice Pascal
Inserito da: Stilgar - Gennaio 29, 2019, 10:50:23 pm
Allego la configurazione da controllare.
Titolo: Re:Saluti+Verifica Codice Pascal
Inserito da: nomorelogic - Gennaio 30, 2019, 08:33:32 am
il 103 mi puzza da file non aperto :)

se non ricordo male -WG (che abilita GUI) impedisce l'apertura dello standard output

Edit:
quindi come da immagine di Stilgar non deve avere il check
Titolo: Re:Saluti+Verifica Codice Pascal
Inserito da: Linux63 - Gennaio 30, 2019, 11:24:39 pm
Ciao maestri, siete grandi e fortemente collaborativi.
La configurazione del nuovo progetto difatti non era impostata come progetto console, mentre le opzioni progetto erano correttamente settate come da voi suggerite (GUI senza check etc..).
In allegato le immagini delle opzioni di configurazione progetto, e finalmente l’atteso output da console.  :)
Grazie 1000 per tutto, direi che il topic si possa ritenere chiuso, che ne dite?
Titolo: Re:Saluti+Verifica Codice Pascal
Inserito da: xinyiman - Gennaio 30, 2019, 11:34:49 pm
Vai nostro giovane padawan, che la forza sia con te  :)
Titolo: Re:Saluti+Verifica Codice Pascal
Inserito da: Linux63 - Gennaio 31, 2019, 12:40:49 am
Mi inchino alla sapienza del maestro e chiudo il topic. :)