RISOLUZIONE DI EQUAZIONI

Slides:



Advertisements
Presentazioni simili
Esercizio Usate il ciclo repeat until (controllo post condizionale) per simulare il prodotto N x M con M somme di N. Esempio: 5 x 3 equivale a fare 5 +5.
Advertisements

Informatica 22/03/2012.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
PROGRAMMARE IN PASCAL (le basi)
EP 10/11 - PBLezione 2-21 Elementi di Programmazione Tipi di Dati Conversioni Istruzioni di controllo del flusso.
EP 11/12 - PBLezione 31 Elementi di Programmazione Tipi di Dati e Conversioni Istruzioni di controllo del flusso.
EQUAZIONI DI 2° GRADO.
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Fondamenti di Informatica
Dall’Algoritmo al Programma
Programmazione Procedurale in Linguaggio C++
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Elementi di Matematica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Ricorsione e Debug.
Il linguaggio Fortran 90: 2. Istruzioni di Controllo
Il linguaggio Fortran 90: 5. Formato di I/O e Files
Introduzione alla programmazione lll
EQUAZIONI CONCATENATE DI ALLIEVI
Organizzazione del corso
Algoritmi su Tipi Semplici
Istruzioni Decisionali
Strutture di controllo in C -- Flow Chart --
Problema Ci sono 5 signore nel parco. Ognuna di loro ha 1 figlio. Ogni bambino ha 10 figurine di calciatori, per un totale quindi di 50 figurine. Questi.
CAPITOLO 7.
CAPITOLO 6.
Equazioni di 2° grado.
ELEMENTI DI PROGRAMMAZIONE
Le equazioni di secondo grado
EQUAZIONI DI SECONDO GRADO
EQUAZIONI DI SECONDO GRADO
Equazione di secondo grado.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
SOLUZIONE GRAFICA DI DISEQUAZIONI DI SECONDO GRADO
DISEQUAZIONI 2° GRADO Classe: 2° liceo classico
Programma di Informatica Classi Prime
Ripasso : Algoritmi.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
JavaScript Generalità Cos'è JavaScript?
Lz. 3 (13/14)Elementi di Programmazione1 Istruzioni (strutture) di controllo 1.
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Dal problema all’ algoritmo
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
1 Parte 2 Fondamenti di programmazione. 2 Definizione intuitiva di algoritmo Elenco finito di istruzioni che specificano una serie di operazioni, eseguendo.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Disequazioni di secondo grado
Informatica e Informatica di Base
Ciclo for nei linguaggi di programmazione. Nei linguaggi di programmazione, il ciclo for è una struttura di controllo iterativa che determina l'esecuzione.
ALGORITMI Dal problema al programma Definizione di algoritmo
Programmazione dei Calcolatori Elettronici
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Matteo Ferroni –
Sistema lineare con foglio polaris office Programma creato ed eseguito con foglio elettronico polaris office Registrato come file.xls e aperto con excel.
Dal PROBLEMA all’ALGORITMO
Transcript della presentazione:

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

DESCRIZIONE DEL PROGRAMMA EQUAZIONI DI I GRADO Fare clic sulla parte di algoritmo per visualizzarne il corrispondente codice

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.

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.

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.

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.  

LISTATO N 1 PARTE I PROGRAM EQNE1(INPUT, OUTPUT); CONST   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=' ';

LISTATO N 1 PARTE 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);

LISTATO N 1 PARTE 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);

LISTATO N 1 PARTE 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);

LISTATO N 1 PARTE 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(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.

LISTATO N 1 PARTE 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(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.

ESEMPI DI ESECUZIONE ESEMPIO N.1 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:15 La soluzione della equazione fi: x = -b/a = -3.0E+000 Le soluzioni delle disequazioni sono: x > -b/a = -3.0E+000 <-----x) intervallo aperto a sx x <= -b/a = -3.0E+000 [x-----> intervallo semi-aperto a dx

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

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

DESCRIZIONE DEL PROGRAMMA EQUAZIONI DI II GRADO 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

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.

LISTATO N 2 PARTE I PROGRAM EQNE1(INPUT, OUTPUT); CONST   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=' ';

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); LISTATO N 2 PARTE II

LISTATO N 2 PARTE 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(' DELTA = ',DELTA:DIGITS);

LISTATO N 2 PARTE 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); END ELSE IF (DELTA = 0) (* Soluzioni reali coincidenti *) WRITELN(ANSWER4);   X1 := -B/(2*A); WRITE(UNKNOWN,'1,2 = ', X1:DIGITS);   END ELSE (* DELTA < 0 => Due soluzioni complesse coniugate *) BEGIN WRITELN(ANSWER5);   (* Calcolo parte REALE del risultato *)   (* Calcolo coefficienti della parte immaginaria *) C1 := SQRT(ABS(DELTA))/(2*A); C2 := -SQRT(ABS(DELTA))/(2*A);   (* Stampa del risultato complesso *) WRITE(UNKNOWN,'1 = ', X1:DIGITS,' + ',C1:DIGITS,' i ; '); WRITE(UNKNOWN,'2 = ', X1:DIGITS,' + ',C2:DIGITS,' i . '); END;   LISTATO N 2 PARTE IV

LISTATO N 2 PARTE V (* Stampa dei messaggio di chiusura *)   WRITELN; WRITELN; WRITELN(ANSWER6); (* Risultato equazione *) END.

Sia dato (ax - b)2 = a2x2 - 2 abx + b2 con a = 2 e b = 3: ESEMPI DI ESECUZIONE ESEMPIO N 1 CASO1 Sia dato (ax - b)2 = a2x2 - 2 abx + b2 con a = 2 e b = 3: Risoluzione equazioni e disequazioni di 1o grado Questo programma risolve equazioni di secondo grado nella 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 il prodotto di monomi (x - 6) (x + 5) = x2 - x - 30: ESEMPI DI ESECUZIONE ESEMPIO N 2 CASO2 Sia dato il prodotto di monomi (x - 6) (x + 5) = x2 - x - 30: Risoluzione equazioni e disequazioni di 1o grado Questo programma risolve equazioni di secondo grado nella 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.

Discriminante negativo. ESEMPIO N 3 CASO 3 ESEMPI DI ESECUZIONE Discriminante negativo. Risoluzione equazioni e disequazioni di 1o grado Questo programma risolve equazioni di secondo grado nella forma: ax^2 + bx + c = 0    Inserire il coefficiente della x^2:2 Inserire il coefficiente della x:5 Inserire il valore del termine noto:7 Il 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.

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.