RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN...

26
RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL

Transcript of RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN...

Page 1: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

RISOLUZIONE DI EQUAZIONI

EQUAZIONI DI I E II GRADO

ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL

Page 2: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

Inizio

a = 0 b = 0x = - b/a

Cancella lo schermo

SINO

Fine

SI

NO

Acquisisce termini

equazione

Stampa versione ed

istruzioni

Stampa equazione impossibile

Stampa equazione

indeterminata

Stampa risultati

visualizza disequazioni

DESCRIZIONE DEL PROGRAMMA

EQUAZIONI DI I GRADO

Fare clic sulla parte di algoritmo per visualizzarne il corrispondente codice

Page 3: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

Nella codifica in liguaggio "Pascal" (LISTATO N 1) utilizziamo stringhe costanti allo scopo di condensare tutta la messagistica nella "testata" del programma: questa metodologia, norma di buona programmazione, consente una più semplice modifca del codice separando la parte testuale relativa all'ingresso/uscita a video da quella più propriamente algoritmica, ove viene "risolto" il problema.

Page 4: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

La prima operazione eseguita dal programma é la cancellazione dello schermo : nel linguaggio Pascal non essendo definita una istruzione specifica, si é pensato di realizzare la cancellazione da programma, al fine di non introdurre in questa fase propedeutica deviazioni dallo standard del linguaggio che possano risultare fuorvianti per l'allievo; la cancellazione dello schermo viene realizzata tramite un ciclo che stampa una serie di righe vuote per tutta la lunghezza dello schermo codificata nella costante SCRLEN.

Page 5: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

Successivamente viene stampato il numero di versione e le istruzioni del programma che si configura per ricevere i dati di ingresso dall'utente. E' possibile introdurre qualsiasi valore reale per i coefficienti dell'equazione, ivi inclusi quelli che rendono impossibile o indeterminata l'equazione.

Il calcolo della soluzione si riassume nell'assegnazione X := -B/A che viene eseguita condizionalmente, se non sono stati introdotti termini nulli nei coefficienti, diversamene viene stampato un messaggio di equazione impossibile o indeterminata.

Page 6: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

L'ultima serie di istruzioni visualizza i risultati dell'equazione e traccia i diagrammi delle disequazioni associate utilizzando i caratteri stampabili a video codificati nelle costanti UNKNOWN e DASHLINE.I risultati numerici vengono visualizzati nella precisione specificata tramite la costante DIGITS. 

Page 7: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

LISTATO N 1PARTE I

PROGRAM EQNE1(INPUT, OUTPUT); CONST 

VERSION1='Risoluzione equazioni e disequazioni di 1o grado';DESCR1='Questo programma risolve equazioni di primo grado';DESCR2='nella forma:';DESCR3=' ax + b = 0';DESCR4='';DESCR5='e le disequazioni:';DESCR6=' ax + b > 0';DESCR7=' ax + b <= 0';QUESTION1='Inserire il coefficiente della x:';QUESTION2='Inserire il valore del termine noto:';ANSWER1='La soluzione della equazione Ë:';ANSWER2='Le soluzioni delle disequazioni sono:';ANSWER3=' intervallo aperto a sx';ANSWER4=' intervallo semi-aperto a dx';SCRLEN = 24; (* Lunghezza dell'area stampabile in righe *)DIGITS = 4; (* Numero di cifre significative da stampare *)(* Simboli vari stampabili a video *)UNKNOWN= 'x';STAR='*';DASHLINE='-----';BLANKLINE=' ';

Page 8: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

LISTATO N 1PARTE II

VAR

 

I: INTEGER; (* Variabile indice usata nei loop *)

A: REAL; (* Coefficiente incognita *)

B: REAL; (* Termine noto *)

X: REAL; (* Soluzione equazione *)

 

BEGIN

(* Prima pulisce lo schermo stampando una serie di linee *)

(* vuote per la dimensione dell'area stampabile.*)

 

FOR I:=1 TO SCRLEN DO

WRITELN;

 

(* Stampa numeri di versione ed istruzioni per l'uso *)

WRITELN(VERSION1);

WRITELN(VERSION2);

WRITELN(DESCR1);

WRITELN(DESCR2);

WRITELN(DESCR3);

WRITELN(DESCR4);

WRITELN(DESCR5);

WRITELN(DESCR6);

WRITELN(DESCR7);

Page 9: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

LISTATO N 1PARTE II

VAR

 

I: INTEGER; (* Variabile indice usata nei loop *)

A: REAL; (* Coefficiente incognita *)

B: REAL; (* Termine noto *)

X: REAL; (* Soluzione equazione *)

 

BEGIN

(* Prima pulisce lo schermo stampando una serie di linee *)

(* vuote per la dimensione dell'area stampabile.*)

 

FOR I:=1 TO SCRLEN DO

WRITELN;

 

(* Stampa numeri di versione ed istruzioni per l'uso *)

WRITELN(VERSION1);

WRITELN(VERSION2);

WRITELN(DESCR1);

WRITELN(DESCR2);

WRITELN(DESCR3);

WRITELN(DESCR4);

WRITELN(DESCR5);

WRITELN(DESCR6);

WRITELN(DESCR7);

Page 10: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

LISTATO N 1PARTE II

VAR

 

I: INTEGER; (* Variabile indice usata nei loop *)

A: REAL; (* Coefficiente incognita *)

B: REAL; (* Termine noto *)

X: REAL; (* Soluzione equazione *)

 

BEGIN

(* Prima pulisce lo schermo stampando una serie di linee *)

(* vuote per la dimensione dell'area stampabile.*)

 

FOR I:=1 TO SCRLEN DO

WRITELN;

 

(* Stampa numeri di versione ed istruzioni per l'uso *)

WRITELN(VERSION1);

WRITELN(VERSION2);

WRITELN(DESCR1);

WRITELN(DESCR2);

WRITELN(DESCR3);

WRITELN(DESCR4);

WRITELN(DESCR5);

WRITELN(DESCR6);

WRITELN(DESCR7);

Page 11: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

LISTATO N 1PARTE III

(* Acquisisce i termini dell'eqne *)

WRITELN;

WRITE(QUESTION1); READ(A);

WRITE(QUESTION2); READ(B);

 

(* Calcola la soluzione dell'equazione *)

X := -B/A;

 

(* Stampa dei risultati *)

 

WRITELN(ANSWER1); (* Risultato equazione *)

WRITE(UNKNOWN,' = -b/a = ',X:DIGITS);

WRITELN;

 

WRITELN(ANSWER2); (* Prima disequazione *)

WRITE(UNKNOWN,' > -b/a = ',X:DIGITS,' <',DASHLINE,UNKNOWN,')');

 

WRITELN(ANSWER3); (* Seconda disequazione *)

WRITE(UNKNOWN,' <= -b/a = ',X:DIGITS,' [',UNKNOWN,DASHLINE,'>');

WRITELN(ANSWER4);

END.

Page 12: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

LISTATO N 1PARTE III

(* Acquisisce i termini dell'eqne *)

WRITELN;

WRITE(QUESTION1); READ(A);

WRITE(QUESTION2); READ(B);

 

(* Calcola la soluzione dell'equazione *)

X := -B/A;

 

(* Stampa dei risultati *)

 

WRITELN(ANSWER1); (* Risultato equazione *)

WRITE(UNKNOWN,' = -b/a = ',X:DIGITS);

WRITELN;

 

WRITELN(ANSWER2); (* Prima disequazione *)

WRITE(UNKNOWN,' > -b/a = ',X:DIGITS,' <',DASHLINE,UNKNOWN,')');

 

WRITELN(ANSWER3); (* Seconda disequazione *)

WRITE(UNKNOWN,' <= -b/a = ',X:DIGITS,' [',UNKNOWN,DASHLINE,'>');

WRITELN(ANSWER4);

END.

Page 13: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

ESEMPI DI ESECUZIONE

ESEMPIO N.1

Risoluzione equazioni e disequazioni di 1o gradoQuesto programma risolve equazioni di primo

gradonella forma: ax + b = 0 e le disequazioni: ax + b > 0 ax + b <= 0 Inserire il coefficiente della x:5Inserire il valore del termine noto:15La soluzione della equazione fi:x = -b/a = -3.0E+000Le soluzioni delle disequazioni sono:x > -b/a = -3.0E+000 <-----x) intervallo aperto

a sxx <= -b/a = -3.0E+000 [x-----> intervallo semi-

aperto a dx

Page 14: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

ESEMPI DI ESECUZIONE

ESEMPIO N.2

Risoluzione equazioni e disequazioni di 1o grado

Questo programma risolve equazioni di primo grado

nella forma:

ax + b = 0

 

e le disequazioni:

ax + b > 0

ax + b <= 0

 

Inserire il coefficiente della x:5

Inserire il valore del termine noto:0

La soluzione della equazione fi:

x = -b/a = -0.0E+000

Le soluzioni delle disequazioni sono:

x > -b/a = -0.0E+000 <-----x) intervallo aperto a sx

x <= -b/a = -0.0E+000 [x-----> intervallo semi-aperto a dx

Page 15: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

ESEMPI DI ESECUZIONE

ESEMPIO N.3

Risoluzione equazioni e disequazioni di 1o grado

Questo programma risolve equazioni di primo grado

nella forma:

ax + b = 0

 

e le disequazioni:

ax + b > 0

ax + b <= 0

 

Inserire il coefficiente della x:1.5

Inserire il valore del termine noto:-6

La soluzione della equazione fi:

x = -b/a = 4.0E+000

Le soluzioni delle disequazioni sono:

x > -b/a = 4.0E+000 <-----x) intervallo aperto a sx

x <= -b/a = 4.0E+000 [x-----> intervallo semi-aperto a dx

Page 16: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

DESCRIZIONE DEL PROGRAMMA

EQUAZIONI DI II GRADO

² > 0² < 0

² = 0

Stampa soluzioni

reali distinte

Stampa soluzioni

complesse coniugate

Stampa soluzioni reali coincidenti

Inizio

Cancella lo schermo

Fine

Acquisisce termini

equazione

Stampa versione ed

istruzioni

Calcola discriminante: ² = b^2 - 4ac

²

L'algoritmo indicato determina le incognite per le equazioni di secondo grado utilizzando la formula risolutiva in forma chiusa basata sull'analisi del discriminante.  

Fare clic sulla parte di algoritmo per visualizzarne il corrispondente codice

Page 17: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

La strutturazione del programma (LISTATO N 2) segue le linee guida già indicate nel caso delle equazioni di primo grado, con una parte iniziale costituita da stringhe costanti, e una stampa di messaggio di chiusura; il calcolo delle soluzioni invece è collocato nel corpo di una struttura selettiva dove si analizza il discriminante dell'equazione in esame, allo scopo di distinguere i vari casi: - soluzioni reali e distinte;- soluzioni reali e coincidenti;- soluzioni complesse coniugate.

Page 18: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

LISTATO N 2PARTE I

PROGRAM EQNE1(INPUT, OUTPUT); CONST 

VERSION1='Risoluzione equazioni e disequazioni di 2o grado';VERSION2='Version 1.0 by Lucia Sglavo as 19/03/2000';DESCR1='Questo programma risolve equazioni di secondo grado';DESCR2='nella forma:';DESCR3=' ax^2 + bx + c = 0';DESCR4='';QUESTION1='Inserire il coefficiente della x^2:';QUESTION2='Inserire il coefficiente della x:';QUESTION3='Inserire il valore del termine noto:';ANSWER1='Il discriminante (b^2 - 4ac) vale:';ANSWER2='Calcolo la soluzione della equazione.';ANSWER3=' DELTA > 0 => due soluzioni reali distinte:';ANSWER4=' DELTA = 0 => due soluzioni reali coincidenti:';ANSWER5=' DELTA < 0 => due soluzioni complesse coniugate:';ANSWER6=' FINE PROGRAMMA.';SCRLEN = 24; (* Lunghezza dell'area stampabile in righe *)DIGITS = 4; (* Numero di cifre significative da stampare *)(* Simboli vari stampabili a video *)UNKNOWN= 'x';STAR='*';DASHLINE='-----';BLANKLINE=' ';

 

Page 19: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

LISTATO N 2PARTE II

VAR

 

I: INTEGER; (* Variabile indice usata nei loop *)

A: REAL; (* Coefficiente quadratico incognita *)

B: REAL; (* Coefficiente lineare incognita *)

C: REAL; (* Termine noto *)

X1,X2: REAL;(* Soluzioni reali dell'equazione *)

C1,C2: REAL;(* Coefficienti immaginari soluzioni *)

DELTA: REAL;(* Discriminante dell'equazione *)

 

BEGIN

(* Prima pulisce lo schermo stampando una serie di linee *)

(* vuote per la dimensione dell'area stampabile.*)

 

FOR I:=1 TO SCRLEN DO

WRITELN;

 

(* Stampa numeri di versione ed istruzioni per l'uso *)

WRITELN(VERSION1);

WRITELN(VERSION2);

WRITELN(DESCR1);

WRITELN(DESCR2);

WRITELN(DESCR3);

WRITELN(DESCR4);

Page 20: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

LISTATO N 2PARTE III

(* Acquisisce i termini dell'eqne *)

WRITELN;

WRITE(QUESTION1); READ(A);

WRITE(QUESTION2); READ(B);

WRITE(QUESTION3); READ(C);

 

(* Calcola il DISCRIMINANTE dell'equazione *)

 

DELTA:= SQR(B) - 4 * A * C;

 

WRITELN(ANSWER1);

WRITELN;

WRITELN(' DELTA = ',DELTA:DIGITS);

WRITELN;

Page 21: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

LISTATO N 2PARTE IV

(* Calcola la soluzione dell'equazione *)

  WRITELN(ANSWER2);WRITELN;

  IF (DELTA > 0) (* Due soluzioni reali *)THEN BEGIN

WRITELN(ANSWER3);

  X1 := (-B + SQRT(DELTA))/(2*A);X2 := (-B - SQRT(DELTA))/(2*A);

  WRITELN;WRITE(UNKNOWN,'1 = ', X1:DIGITS,' ; ');WRITE(UNKNOWN,'2 = ', X2:DIGITS);

ENDELSE IF (DELTA = 0) (* Soluzioni reali coincidenti *)THEN BEGIN

WRITELN(ANSWER4);  X1 := -B/(2*A);  WRITELN;

WRITE(UNKNOWN,'1,2 = ', X1:DIGITS);  END

ELSE (* DELTA < 0 => Due soluzioni complesse coniugate *)BEGIN

WRITELN(ANSWER5);  (* Calcolo parte REALE del risultato *)  X1 := -B/(2*A);  (* Calcolo coefficienti della parte immaginaria

*)

C1 := SQRT(ABS(DELTA))/(2*A);C2 := -SQRT(ABS(DELTA))/(2*A);

  (* Stampa del risultato complesso *)

  WRITELN;WRITE(UNKNOWN,'1 = ', X1:DIGITS,' +

',C1:DIGITS,' i ; ');WRITE(UNKNOWN,'2 = ', X1:DIGITS,' +

',C2:DIGITS,' i . ');END;

 

Page 22: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

LISTATO N 2PARTE V

(* Stampa dei messaggio di chiusura *)

 

WRITELN; WRITELN;

WRITELN(ANSWER6); (* Risultato equazione *)

END.

Page 23: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

ESEMPI DI ESECUZIONE

ESEMPIO N 1CASO1

Risoluzione equazioni e disequazioni di 1o gradoQuesto programma risolve equazioni di secondo gradonella forma: ax^2 + bx + c = 0  Inserire il coefficiente della x^2:Inserire il coefficiente

della x:Inserire il valore del termine noto:Il discriminante (b^2 - 4ac) vale:

  DELTA = 0.0E+000 Calcolo la soluzione della equazione.  DELTA = 0 => due soluzioni reali coincidenti: x1,2 = 1.5E+000  FINE PROGRAMMA.

Sia dato (ax - b)2 = a2x2 - 2 abx + b2 con a = 2 e b = 3:

Page 24: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

ESEMPI DI ESECUZIONEESEMPIO N 2

CASO2

Risoluzione equazioni e disequazioni di 1o gradoQuesto programma risolve equazioni di secondo gradonella forma: ax^2 + bx + c = 0  Inserire il coefficiente della x^2:Inserire il coefficiente della

x:Inserire il valore del termine noto:Il discriminante (b^2 - 4ac) vale:

  DELTA = 1.2E+002 Calcolo la soluzione della equazione.  DELTA > 0 => due soluzioni reali distinte: x1 = 6.0E+000 ; x2 = -5.0E+000  FINE PROGRAMMA.

Sia dato il prodotto di monomi (x - 6) (x + 5) = x2 - x - 30:

Page 25: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

ESEMPI DI ESECUZIONE ESEMPIO N 3CASO 3

Risoluzione equazioni e disequazioni di 1o gradoQuesto programma risolve equazioni di secondo gradonella forma: ax^2 + bx + c = 0  Inserire il coefficiente della x^2:2Inserire il coefficiente della x:5Inserire il valore del termine noto:7Il discriminante (b^2 - 4ac) vale:  DELTA = -3.1E+001 Calcolo la soluzione della equazione.  DELTA < 0 => due soluzioni complesse coniugate: x1 = -1.3E+000 + 1.4E+000 i ; x2 = -1.3E+000 + -1.4E+000 i . FINE PROGRAMMA.

Discriminante negativo.

Page 26: RISOLUZIONE DI EQUAZIONI EQUAZIONI DI I E II GRADO ALGORITMI RISOLUTIVI ED IMPLEMENTAZIONE IN LINGUAGGIO PASCAL.

Proposte di sviluppo

 

- migliorare la diagnostica del programma risolutore delle equazioni di primo grado prevedendo i casi di equazioni impossibile (quando il coefficiente dell'incognita e' nullo) ed indeterminata (quando sono nulli entrambi i coefficienti);

 - migliorare l'input del programma dando la possibilità di

correggere i dati in ingresso durante la fase di introduzione, senza dover rilanciare il programma;

 - migliorare la formattazione dell'output, in particolare per il

programma relativo alle equazioni di secondo grado migliorare la visualizzazione delle soluzioni complesse coniugate;

 - visualizzare, per il programma risolutore delle equazioni di

secondo grado, anche le disequazioni associate con i relativi intervalli di soluzione.