• Benvenuto in Making Videogames!
  • Condividi la tua passione!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati



Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Title: Pascal, come si può utilizzare?
Modi discussione
#31
allora steve...
Il mio ragionamento è questo:

Se x è maggiore di 0 allora
x diviso 2 resto 0 (mod dovrebbe servire per questo no?)
scrivi ( x è pari)
Altrimenti
scrivi (x è dispari)
Se x è minore di 0 allora
scrivi(non è possibile eseguire l' operazione)


Diciamo che questa è una versione "italianizzata"... per farti capire il mio ragionamento e vedere se è giusto o sbagliato...
 
Reply
#32
Il ragionamento è giustissimo, ma il codice è sbagliato:
tu dici -> Se x diviso 2 ha il resto uguale a 0
però fai -> Se x diviso y ha il resto uguale a 0 (la variabile y non ha nessun valore; di default prende il valore 0, e un numero diviso 0 non si può fare)

Sostituendo y con 2 il programma funziona correttamente.

Questa è la mia soluzione al problema:
Codice PHP:
program pariDispari;
uses crt;
var 
num:integer;

begin
    clrscr
;
    
write('Inserire un numero: ');
    
readln(num);
    if 
num 0 then
        begin
        
if (num mod 2)=0 then
            writeln
('Il numero ',num,' è pari')
        else
            
writeln('Il numero ',num,' è dispari');
        
end
    
else
        
writeln(num,' è inferiore a 0');
    
writeln('Premere invio per chiudere...');
    
readln
end


PS. La "versione italianizzata" è detta pseudocodice (fai capire quello che vuoi fare senza utilizzare nessun linguaggio di programmazione)
 
Reply
#33
ok, perfetto.. inizo un pò a capire il meccanismo di pascal xd... continuo a studiare (non avrei mai pensato di dirlo! D: )

EDIT:
Un altro esercizio è
Scrivere un programma che, inseriti due valori interi da tastiera, dica se sono divisibili sia per 2 che per 3. Suggerimento: usa sempre l'operatore mod e i connettivi logici.

In che senso "inserire 2 valori interi"? ... nom è meglio fare 1 programma per ogni singolo valore? O.o...
 
Reply
#34
AsD, ho visto solo ora l'edit.
Tra fare un programma che, al posto di rilevare due interi, rilevi altri tipi di variabili cambia solo il dimensionamento delle variabili: al posto di var num1,num2:integer; metti var num1,num2:float;
In questo caso viene richiesto l'intero, ma è solo perché è un programma a scopo didattico, altrimenti si sarebbe scelto un altro tipo di variabile a seconda delle necessità.

Mentre ripulivo il desktop ho trovato gli esercizi, visto che è un po' che non ci si sente te li posto tutti (tanto ne mancavano due, e probabilmente li hai già finiti):
Codice:
(* radice quadrata *)
program radiceQuadrata;
uses crt;
var x,rad_x:real;

begin
    clrscr;
    write('Inserire un numero: ');
    readln(x);
    if x>=0 then
        begin
        rad_x:=sqrt(x);
        writeln('La radice quadrata di ',x,' è ',rad_x);
        end
    else
        writeln('La radice quadrata di ,x, è un numero immaginario');
    writeln('Premere invio per chiudere...');
    readln
end.
(* fine *)

(* pari o dispari *)
program pariDispari;
uses crt;
var num:integer;

begin
    clrscr;
    write('Inserire un numero: ');
    readln(num);
    if num > 0 then
        begin
        if (num mod 2)=0 then
            writeln('Il numero ',num,' è pari')
        else
            writeln('Il numero ',num,' è dispari');
        end
    else
        writeln(num' è inferiore a 0');
    writeln('Premere invio per chiudere...');
    readln
end.
(* fine *)

(* divisibili per 2 e 3 *)
program divisibilita2e3;
uses crt;
var num1,num2:integer;

begin
    clrscr;
    write('Inserire numero1: ');
    readln(num1);
    write('Inserire numero2: ');
    readln(num2);
    if (((num1 mod 2)=0) and ((num1 mod 3)=0)) then
        begin
        if (((num2 mod 2)=0) and ((num2 mod 3)=0)) then
            writeln('Sia ',num1,' che ',num2,' sono divisibili per 2 e per 3')
        else
            writeln('Solo ',num1,' è divisibile per 2 e per 3');
        end
    else
        begin
        if (((num2 mod 2)=0) and ((num2 mod 3)=0)) then
            writeln('Solo ',num2,' è divisibile per 2 e per 3')
        else
            writeln('Ne ',num1,' che ',num2,' sono divisibili per 2 e per 3');
        end;
    writeln('Premere invio per chiudere...');
    readln
end.
(* fine *)

(* calcolatrice *)
program calcolatrice;
uses crt;
var num1,num2,risultato:real;
var operazione:integer;

begin
    clrscr;
    write('Inserire numero1: ');
    readln(num1);
    write('Inserire numero2: ');
    readln(num2);
    write('Operazione  1=addizione  2=sottrazione 3=moltiplicazione  4=divisione    : ');
    readln(operazione);
    if operazione=1 then
        risultato:=num1+num2;
    if operazione=2 then
        risultato:=num1-num2;
    if operazione=3 then
        risultato:=num1*num2;
    if operazione=4 then
        begin
        if num2=0 then
            writeln('Impossibile dividere per 0')
        else
        risultato:=num1/num2;
        end;
    writeln('Risultato = ',risultato);
    writeln('Premere invio per chiudere...');
    readln
end.
(* fine *)
 
Reply
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Principiante, se devo utilizzare UDK,Unity3D,CryEngine 3 devo sapere programmare? mark320 8 6,149 07-08-2012, 11:01 AM
Ultimo messaggio: MickeyCrashRayman

Vai al forum:


Browsing: 1 Ospite(i)