Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Sergio Scippacercola » 10.Lo sviluppo del software in azienda


Argomenti

  • Lo sviluppo di software
  • Le procedure
  • Lo sviluppo e l’implementazione di software in ambito aziendale
  • L’analisi e la definizione del problema
  • I linguaggi di programmazione ed i compilatori
  • La programmazione strutturata
  • Esempi di mappe strutturali

Prerequisiti

  • Concetto di elaborazione automatica dei dati
  • Concetto di algoritmo
  • Caratteristiche di una informazione
  • Formato istruzioni in l.m.
  • Codifica delle istruzioni

Il software applicativo

Per Software applicativo si intende l’insieme di tutti i programmi che possiedono i più svariati obiettivi e che risolvono problemi di una stessa classe. Sono per lo più  sviluppati da uno o più utenti o da case specializzate nello sviluppo di software (Software house).  Rientra nel Software applicativo qualsiasi programma progettato e prodotto da parte di un utente. In questa lezione vengono richiamati i passi fondamentali per progettare, realizzare e rendere eseguibile un  programma.
E’ bene sottolineare che il software applicativo è uno “strato” superiore al software di base.

Il software di base è l’insieme di tutti i programmi che fungono da interfaccia tra l’hardware ed il software applicativo.

Per progettare e produrre il software

E’ indispensabile:

  • conoscere i principi della programmazione;
  • le tecniche che sono i metodi per produrre software coerente con i principi;
  • far uso di strumenti tecnici a disposizione, cioè di mezzi espressivi (ad es. diagrammi, linguaggi) usati nella programmazione.

Tecniche

  • Strutturata
  • Ricorsiva
  • Funzionale
  • Logica (conoscenza con regole)
  • Orientata ad oggetti

Rappresentare il mondo reale con combinazioni di strutture dati e procedure che operano sulle strutture.

Nel seguito la lezione è dedicata solo alla programmazione strutturata.
E’ bene sottolineare che non esistono linguaggi e tecniche di programmazione migliori o peggiori ma linguaggi e tecniche che meglio si adattano a risolvere problemi specifici la cui scelta va valutata caso per caso.

Le fasi di produzione del software

Progettazione

Progettazione


Le procedure

Viene definita procedura l’insieme di una o più attività finalizzate al conseguimento di un preciso obiettivo.

Le procedure possono essere classificate in:

  • Procedure di tipo gestionale
  • Procedure di tipo scientifico

La classificazione nasce dalla estrema diversità della natura dei problemi e delle risorse necessarie. Infatti, le procedure gestionali richiedono notevoli risorse di memoria (archivi e/o database) e ridotta elaborazione, viceversa, le procedure di tipo scientifico usano pochi dati e notevoli e complesse elaborazioni.
In ambito aziendale esistono moltissimi dati e moltissimi documenti cartacei. L’azienda in genere, non ha bisogno di complessi algoritmi, ma di grandi archivi magnetici per contenere i  dati e di molti programmi semplici per gestire questi dati: Programmi di registrazione, di modifica, di calcolo, ordinamento  e stampa. Archivi e software gestionale esistono già sul mercato e l’Azienda in genere può acquistarli direttamente dai fornitori.


Esempi

Procedure di tipo gestionale

Procedure di tipo gestionale


Esempi II

Procedure di tipo scientifico

Procedure di tipo scientifico


Fasi per convertire procedure in software

  • Studio di fattibilità
  • Analisi (definizione specifiche utente)
  • Progettazione
  • Sviluppo
  • Installazione
  • Manutenzione
  • Decadimento

Fasi per sviluppare software in ambito aziendale

  • Si inizia con lo studio di fattibilità.
  • Valuta vantaggi, svantaggi, costi e benefici derivanti da un’innovazione di software.

Costo sviluppo sw x procedura A

Costo sviluppo sw x procedura B
Esemplificando lo studio di fattibilità serve a formalizzare e a far valutare quanto viene a costare lo sviluppo dei programmi per le singole procedure A, B, etc. e complessivamente. I costi sono confrontati con i  relativi guadagni derivanti  dall’ introduzione delle procedure automatiche.

Fasi per sviluppare software in ambito aziendale II

L’ analisi della procedura consiste nella definizione delle specifiche utente cioè   gli analisti esaminano l’esistente procedura e tutte le interazioni con le altre procedure. Vengono anche esaminati  quali sono i flussi di dati e gli utenti interessati da questi flussi. Tenendo presente le esigenze aziendali gli analisti propongono, utilizzando strumenti tipici (es. diagramma data-flow) alcune soluzioni “informatiche” per lo sviluppo della procedura automatica. Nella figura è riportata, tra le tre procedure individuate (presenze, stipendi e contabilità) un esemplificato data-flow per la procedura stipendi.

La procedura prevede, prima della elaborazione e stampa dei cedolini di stipendio, l’organizzazione e l’afflusso dei giorni di presenza dei dipendenti e contemporanea consultazione dei dati di contabilità ed amministrativi dei singoli dipendenti di cui si deve elaborare il cedolino.


Fasi per sviluppare sotfware in ambito aziendale III

La fase di progettazione ha inizio dopo l’approvazione di una delle soluzioni proposte in fase di analisi. Bisogna precisare che ogni procedura nuova richiede sostanziosi investimenti in termini economici ed è alto il rischio che si corre qualora la procedura progettata non sia aderente ai requisiti richiesti. Il progetto deve prevedere, infatti, le risorse hardware e software da impegnare, il personale, i costi.
In questa fase, ad esempio, come è schematicamente riportato nella figura, per ogni Progetto è valutato il costo di hw (Hardware) e  sw (software) per le singole procedure (stipendi, magazzino, gestione filiali estere). Viene scartata, ad esempio, la procedura di gestione filiali estere perché troppo onerosa, le altre vengono invece accettate dalla Direzione aziendale.

La fase di progettazione

La fase di progettazione


Fasi per sviluppare sotfware in ambito aziendale IV

Fase di sviluppo (acquisto o sviluppo di hardware e software per ogni singolo progetto)
Terminata la fase di progettazione si passa allo sviluppo cioè all’acquisto o sviluppo di hardware e software. Spesso hardware e software specifico non sono disponibili e quindi è necessario far sviluppare sia hardware che software specifico secondo il progetto (es. particolari terminali e software per i conti correnti postali, terminali e software per le prenotazioni, etc.). L’Azienda che non dispone di programmatori ricorre a società di software (hardware e software house) specializzate sia per l’acquisto di hardware che di software.


Fasi per sviluppare sotfware in ambito aziendale V

Dopo aver completato lo sviluppo dei programmi e l’eventuale costruzione o acquisto di tutte le risorse hardware necessarie si procede all’installazione (o consegna all’ esercizio) o conversione da un sistema al nuovo.

Esistono varie modalità implementative della nuova procedura: immediata, parallela, frazionata, pilota o minimale.

Modalità implementative

  • Con la modalità immediata si disattiva la procedura esistente e si avvia la nuova.
  • La modalità parallela prevede la continuazione della procedura esistente e parallelamente anche la nuova. Quando la nuova viene giudicata efficiente ed affidabile si disattiva la preesistente.
  • La frazionata prevede l’attivazione graduale delle nuove procedure solo se non si riscontrano errori o anomalie in quelle attivate.
  • Infine la modalità minimale o pilota significa che la nuova procedura/sistema viene attivata ed utilizzata solo per un campione di attività dell’azienda e solo se risulta affidabile viene poi estesa a tutte le attività aziendali.

Fasi per sviluppare sotfware in ambito aziendale VI

Segue la lunga fase di manutenzione.

Scopo principale è di verificare l’affidabilità ed efficienza nel tempo, di valutare le prestazioni della procedura/sistema e di introdurre le opportune modifiche sia al software che all’hardware per migliorare le prestazioni della procedura/sistema.

Durante questa fase ci si pone una serie di quesiti in merito alla/e procedura/e automatizzata del tipo:

  • E’ affidabile?
  • È efficiente?
  • Sono buone le prestazioni?
  • Si devono introdurre modifiche?

Fasi per sviluppare sotfware in ambito aziendale VII

Quando la  manutenzione non è più in grado di far vivere il software sviluppato si entra nella fase di decadimento,  e quindi si deve riprogettare la procedura e si ritorna alla prima fase.
Il software aziendale ha così un vero e proprio ciclo di vita.

Il decadimento del software

Il decadimento del software


L’analisi e la definizione del problema

1. Analisi globale e puntuale

Nel seguito della lezione dedicheremo l’attenzione ad alcune delicate fasi dello sviluppo del software. Dopo lo studio di fattibilità le singole attività tradizionali devono essere studiate in dettaglio per ricercare gli elementi utili per la progettazione della procedura automatica e dei relativi algoritmi. Le fasi preliminari che hanno questo obiettivo prendono il nome di analisi e definizione del problema. Tale analisi si può considerare composta a sua volta di un’ analisi globale (macroanalisi) e di un’analisi dettagliata e puntuale definita  microanalisi. L’ analista, durante la macroanalisi, definisce, a grandi linee, le informazioni utili, le risorse necessarie, le modalità ed i tempi di accesso alle informazioni, gli algoritmi sviluppati e da sviluppare, e, principalmente, i risultati da ottenere.
In questa fase l’analista individua con esattezza il flusso delle informazioni che dettaglia con uno strumento grafico detto diagramma di flusso delle informazioni. Nel diagramma di flusso le varie attività previste sono descritte all’interno di simboli convenzionali alcuni sono riportati nella figura. Il diagramma di flusso è una visualizzazione grafica del flusso di tutte le attività (manuali e/o automatiche) come nell’esempio del Censimento rappresentato nella figura a fianco.


L’analisi e la definizione del problema II

2. Diagramma a blocchi o mappa strutturale

Dopo aver completato la macroanalisi del problema, l’analista redige un ulteriore diagramma: il diagramma a blocchi o la mappa (diagramma) strutturale. In tale diagramma l’insieme ordinato delle istruzioni sono considerate in dettaglio. In genere il diagramma a blocchi dovrebbe essere indipendente dal linguaggio di programmazione che sarà adottato, ma, spesso il linguaggio di programmazione che si desidera utilizzare condiziona anche la stesura di tale diagramma. La mappa strutturale dettaglia ed elenca tutte le istruzioni in un linguaggio naturale avendo cura di usare alcune parole di un piccolo vocabolario (ad es. inizio, fine, leggi, scrivi, ripeti, fine-ripeti, se, fine-se, calcola, assegna, etc.).  Sia il diagramma a blocchi che la mappa strutturale descrivono solo ed esclusivamente le attività di elaborazione automatica e contengono precise indicazioni imperative circa le operazioni da eseguire per giungere alla soluzione del problema.


Linguaggi di programmazione

La fase successiva all’analisi del problema  ed alla creazione di una mappa strutturale consiste nello scegliere uno specifico linguaggio informatico e nel “tradurre” ogni istruzione nelle istruzioni del linguaggio.

Il linguaggio prevede:

  • un numero fisso di parole (FOR, LOOP, etc.);
  • una grammatica che indica l’esatta strutturazione dei simboli impiegati;
  • una sintassi che indica come le parole devono essere combinate per formare frasi.

Es.: N=INPUTBOX(” dammi N”))

Codifica – Debugging – Documentazione

La fase di traduzione prende il nome di codifica del programma.
Codificato il programma, lo si inserisce in memoria con dati di prova di cui si conoscono a priori i risultati per poter valutare la correttezza dei risultati secondo l’algoritmo progettato. Questa fase di lavoro con dati di prova prende il nome di test o debugging del programma.
Verificata la correttezza si passa alla fase conclusiva che prende il nome di documentazione della procedura/programma per eventuali futuri aggiustamenti e per memoria dei flussi.

Linguaggio macchina

L’unico linguaggio con cui i circuiti dell’elaboratore interagiscono è denominato linguaggio macchina. Una istruzione in linguaggio macchina deve necessariamente essere una stringa di bit: una parte di questi bit indica l’operazione da eseguire (codice operativo), le altre parti localizzano gli operandi nella memoria principale. Il linguaggio macchina è di basso livello o prima generazione – orientati hardware

  • codice operativo 0100
  • operandi 0101 1010

Nuovi linguaggi: i simbolici

La programmazione in linguaggio macchina è difficoltosa  e lunga: richiede la conoscenza di tutti i codici operativi in binario e la gestione scrupolosa degli indirizzi delle locazioni di memoria. Tale programmazione è ormai superata con l’avvento di “metalinguaggi” o linguaggi simbolici più semplici che sono detti:

  • assemblativi (basso livello)
  • compilativi e interpretativi (medio. Alto, altissimo livello)
  • Tutti orientati al problema

Si dice che il linguaggio macchina ed assemblativo sono di basso livello ed appartengono alla prima generazione dei linguaggi. Infatti i linguaggi possono essere suddivisi in quattro generazioni in base al periodo storico in cui sono stati proposti  e si possono classificare in tre livelli (basso, alto, altissimo) in base alla maggiore e via via minore somiglianza con il linguaggio macchina. I linguaggi compilativi ed interpretativi sono linguaggi orientati al problema e non alla macchina, consentono al programmatore di usare parole e frasi più vicino al linguaggio naturale, sollevando così il programmatore dalla conoscenza approfondita della macchina.

Simbolici >>>> Linguaggio macchina

I linguaggi assemblativi, compilativi ed interpretativi contengono istruzioni che devono, però essere tradotte in linguaggio macchina. Per effettuare tale traduzione  si dispone di tre programmi speciali che fanno parte del software di base:

  1. programma assemblatore (traduce gli assemblatori) (vedi figura a fianco);
  2. programma compilatore (traduce i compilativi);
  3. programma interprete (traduce gli interpretativi).

Il programma scritto in uno dei tre linguaggi precedenti prende il nome di programma sorgente, il programma dopo la traduzione in linguaggio macchina prende il nome di programma oggetto.
Come è rappresentato nelle due figure successive.

Liguaggi assemblativi (specifici per Hardware)

Liguaggi assemblativi (specifici per Hardware)


Simbolici >>>> Linguaggio macchina II

La freccia indica il programma compilatore che traduce le istruzioni in istruzioni in linguaggio macchina il cui insieme forma il linguaggio “oggetto”.

Liguaggi procedurali (Hardware indipendenti)

Liguaggi procedurali (Hardware indipendenti)


Simbolici >>>> Linguaggio macchina III

Effettuata la traduzione in linguaggio macchina il programma è eseguibile e per mandarlo in esecuzione è necessario registrarlo nella memoria principale: a ciò è deputato un altro programma speciale detto caricatore.

Il programma interprete, a differenza degli assemblatori e compilatori, traduce in linguaggio macchina un’istruzione alla volta per cui non viene creato un programma oggetto definitivo e trasportabile e, quindi, ogni volta che si deve eseguirlo bisogna sottoporlo al programma interprete di nuovo. Il processo di interpretazione non crea un codice oggetto per cui per poter rieseguire quel programma è indispensabile disporre dell’interprete sul proprio computer.

Liguaggi procedurali (Hardware indipendenti)

Liguaggi procedurali (Hardware indipendenti)


Simbolici >>>> Linguaggio macchina IV

Si possono usare anche linguaggi (ad es. Visual Basic) che utilizzano un p-code (pseudocodici). Il compilatore, in questo caso (vedi figura a fianco), traduce il codice sorgente nello pseudocodice intermedio che si può conservare. Tale p-code non è linguaggio macchina e quindi, per poterlo eseguire, deve essere tradotto da parte dell’ interprete (vedi figura). Il vantaggio è la portabilità del p-code su ogni elaboratore dotato di un interprete di tale codice. Questi interpreti sono semplici e molto diffusi.

P. Code (Pseudocodici)

P. Code (Pseudocodici)


La programmazione strutturata

La programmazione strutturata prevede che il programma sia organizzato in moduli. Ogni modulo  (o struttura di controllo) è costituito da un ingresso (one-in), una successione  di istruzioni ed una uscita (one-out) da questa struttura (vedi figura a fianco).
Struttura di controllo è un’istruzione o un insieme di istruzioni che controlla la sequenza delle operazioni da applicare  per l’esecuzione di un algoritmo.

Schema

Schema


Vantaggi della programmazione strutturata

  • Semplificare il programma mediante l’uso di strutture di controllo.
  • Rendere più leggibile il programma evitando salti incondizionati.
  • Rende possibile un progetto per raffinamenti successivi (top-down).
  • È facile individuare i moduli corrispondenti alle varie funzionalità.
  • È più facile individuare errori, cause e correzioni.
  • Semplifica la manutenzione dei programmi.

Tre classi di istruzioni strutturate del tipo one/in; one/out

  • Sequenza
  • Selelzione
  • Ciclo

Costrutto “sequenza”

Obiettivo: successione di istruzioni semplici o strutturate

Delimitatore iniziale

istruzione A;

istruzione B;

………….;

istruzione Z;

Delimitatore finale

Costrutti di selezione

Obiettivo: esecuzione condizionale di una specifica istruzione.
Nella figura R indica simbolicamente la condizione ed A indica il modulo da eseguire. Questa struttura controlla in ingresso se una condizione è vera o falsa:  se R è vera viene eseguito il modulo A con le istruzioni contenute, se è falsa il controllo delle istruzioni è ceduto al successivo modulo.
In una mappa strutturale si suggerisce di indicare la struttura alternativa ad una via con: “Se R  allora A”.

La struttura alternativa ad una via indica la via “alternativa” e non sequenziale, che subisce il flusso delle istruzioni.  Nell’ambito delle strutture alternative esistono anche le strutture alternative a due o più vie.


Costrutti di selezione II

Obiettivo: selezione di una specifica istruzione tra due istruzioni in alternativa.

La struttura a due vie (vedi figura a fianco) ha per obiettivo la selezione di una specifica istruzione  tra due istruzioni in alternativa. La struttura, se la condizione R è vera fa eseguire il modulo A di programma, altrimenti, se la condizione è falsa viene eseguito il modulo B. In ogni caso dopo la verifica della condizione e l’esecuzione del modulo A o B il controllo è ceduto al modulo successivo.
In una mappa strutturale si suggerisce di indicare la struttura alternativa a due vie con:  “Se R allora A altrimenti B”.


Costrutti di iterazione

Obiettivo: esecuzione ripetuta di una specifica istruzione (Ciclo a condizione iniziale).

Sono, infine, richiamate altre due strutture di controllo che hanno per obiettivo la ripetizione di un certo numero di istruzioni (ciclo) ma che si differenziano per il controllo della condizione (WHILE e UNTIL).
La struttura WHILE  (vedi figura) ha per obiettivo l’ esecuzione ripetuta di una specifica Istruzione. La struttura  WHILE è anche detta Ciclo a condizione iniziale nel senso che all’inizio della struttura viene subito verificata la condizione e se la condizione R è falsa l’istruzione A non viene eseguita ma viene eseguita la B. Se R è vera l’istruzione A sarà eseguita ripetutamente finché R resta vera, appena diventa falsa il ciclo si arresta. In una mappa strutturale si suggerisce di indicare WHILE con: “Esegui A sempre che R sia vero” .


Costrutti di iterazione II

Obiettivo: esecuzione ripetuta di una specifica istruzione (Ciclo a condizione finale)
Esiste anche un’altra struttura che prende il nome di struttura con ciclo a condizione finale ed è chiamata struttura iterativa UNTIL (vedi figura).
Anche questa struttura ha per obiettivo l’ esecuzione ripetuta di una specifica Istruzione ma, a differenza della WHILE, il modulo A di programma è eseguito almeno una volta a prescindere dalla verità o falsità della condizione R. In una mappa strutturale può essere dichiarata: “Esegui A fino a che si abbia R vero” o “Ripeti A finché R vero”.


Conteggio – cicli

Quando il numero di iterazioni è predefinito, la struttura è detta conteggio-cicli. In una mappa strutturale se la ripetizione di un’istruzione o modulo di istruzioni deve avvenire  un numero n prefissato di volte  la struttura è indicata con: “Ripeti n volte”.


Sviluppo dei programmi e sottoprogrammi

Per quanto concerne lo sviluppo dei programmi è bene evidenziare che l’algoritmo e il relativo programma  può essere frazionato in più moduli qualora sia complesso o vi siano parti ripetitive. In tal caso il programma base che consente il collegamento di tutti i moduli di programma viene chiamato programma principale (main program). Tutti gli altri moduli di programma sono detti sottoprogrammi (subroutine).

I sottoprogrammi hanno l’obiettivo di raggruppare le istruzioni che si intendonorichiamare più volte nell’ambito del programma principale. Ad esempio, se alcune identiche operazioni sono da eseguirsi più volte (la stampa di una intestazione ad ogni cambio foglio), tali operazioni sono raggruppate in un programma che viene attivato ad ogni cambio pagina.
Per eseguire il programma principale scambia i dati con i suoi sottoprogrammi: i dati  da scambiare prendono il nome di parametri o argomenti.
Una serie di sottoprogrammi di utilità vengono forniti direttamente a corredo del computer. Sono sottoprogrammi che calcolano funzioni (seno, coseno, integrale, etc.) e si possono utilizzare nell’ambito del programma principale mediante apposite istruzioni.

Celle di excel

Gli esempi che seguono si riferiscono sempre ad un foglio elettronico (es. EXCEL) dove vengono registrati i dati di ingresso ed i risultati.

Le celle di un foglio elettronico sono individuate da due indici:

  • un indice di riga
  • un indice di colonna

cella(i,j) in VBA cells(i,j)

Mappa strutturale per la soluzione di un sistema di equazioni lineari

Tipo:

{ax+by=c

{dx+ey=f

  • Inizio.
  • Leggi a,b,c,d,e,f.
  • Calcola denominatore=ae-bd.
  • Se denominatore è diverso da 0 allora
    • Calcola h=ce-bf
    • Calcola l=af-cd.
    • Calcola x=h/denominatore.
    • Calcola y=l/denominatore.
  • Stampa x, y.
  • Altrimenti
    • Stampa “Sistema impossibile”
  • Fine se.
  • Fine.

Mappa strutturale per la soluzione di un sistema di equazioni lineari II

  • Inizio.
  • Calcola a2 = (c1*e1-b1*f1)/(a1*e1-b1*d1)
  • Calcola a3 = (a1*f1-c1*d1)/(a1*e1-b1*d1)
  • Fine.

La mappa riportando gli identificatori delle celle diventa:

  • Inizio.
  • Cella(2, 1) = (Cella(1, 3)*Cella(1, 5)-Cella(1, 2)*Cella(1, 6))/( Cella(1, 1)*Cella(1, 5)-Cella(1, 2)* Cella(1, 4))
  • Cella(3, 1) = (Cella(1, 1)*Cella(1, 6)- Cella(1, 3)*Cella(1, 4))/( Cella(1, 1)*Cella(1, 5)-Cella(1, 2)*Cella(1, 4))
  • Fine.

Mappa strutturale per la somma di elementi da A1 (cella(1,1)) fino ad A10 (cella(10,1))

Il risultato va inserito nella cella A11 (cella(11,1)). Viene usata una struttura while.

  • Inizio.
  • i=1
  • s=0
  • Esegui sempre che i _ 10
  • s=s+cella(i,1)
  • i=i+1
  • Fine esegui
  • cella(11,1)=s
  • Fine

Mappa strutturale per la somma di elementi che si trovano sulla diagonale da A1 (cella(1,1)) fino ad L10 (cella(10,10))

Il risultato va inserito nella cella L11. Viene usata una struttura while.

  • Inizio.
  • i=1
  • s=0
  • Esegui sempre che i _ 10
  • s=s+cella(i,i)
  • i=i+1
  • Fine esegui
  • cella(11,11)=s
  • Fine

Mappa strutturale per il calcolo della radice di un’equazione di primo grado ax+b=0 considerando il caso che sia a diverso da zero

Il coefficiente a è nella cella A1 (cella(1,1)), il coefficiente b nella cella B1 ed il risultato, se a è diverso da zero, va memorizzato nella cella C1. Viene usata una struttura a due vie alternative.

  • Inizio.
  • Se cella(1,1)=0 allora
  • Stampa “equazione impossibile”
  • Altrimenti
  • Cella(1,3)= -cella(1,2)/cella(1,1)
  • Fine se.
  • Fine

Mappa strutturale per il calcolo delle radici di un’equazione di secondo grado ax2+bx+c=0 considerando il caso che sia a diverso da zero

Il coefficiente a è nella cella A1 (cella(1,1)), il coefficiente b nella cella B1, il coefficiente c nella cella C1 ed i risultati, se il delta è maggiore o uguale a zero, va stampato. Viene usata una struttura alternativa a due vie.

  • Inizio.
  • a=cella(1,1)
  • b=cella(1,2)
  • c=cella(1,3)
  • d= b^2-4*a*c
  • Se d > 0 allora
    • delta= radice quadrata di d
    • x1=(-b+delta)/2*a
    • x2=(-b-delta)/2*a
    • Stampa x1, x2
  • Altrimenti
    • Stampa “soluzioni complesse”
  • Fine se.
  • Fine
  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93