Software e Linguaggi di programmazione

41
27/05/2017 1 Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria – Corso di Laurea in Ingegneria Medica Software e Linguaggi di programmazione Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Interattività Slide 2 of 75 _ Software

Transcript of Software e Linguaggi di programmazione

Page 1: Software e Linguaggi di programmazione

27/05/2017

1

Università degli Studi di Roma – Tor Vergata

Facoltà di Ingegneria – Corso di Laurea in Ingegneria Medica

Softwaree

Linguaggi di programmazione

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia

Interattività

Slide 2 of 75 _

Software

Page 2: Software e Linguaggi di programmazione

27/05/2017

2

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 3 of 77 _

SOFTWARE

SOFTWARE elemento “morbido”

E’ la componente che consente di sfruttare le risorse fisiche (hardware) disponibili

Sono i programmi che permettono di elaborare le informazioni, controllare le periferiche e produrre i risultati.

Un programma è un algoritmo scritto per poter essere eseguito da un calcolatore

Slide 3 of 75 _

Software

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 4 of 77 _

Classificazione del software

Slide 4 of 75 _

Software di BASEE’ un complesso di programmi collegati tra loro che consente l’utilizzo minimo del sistema e la sua programmazione

Software APPLICATIVOComprende tutti i programmi destinati a risolvere specifici problemi non legati al funzionamento del sistema.

Software

Page 3: Software e Linguaggi di programmazione

27/05/2017

3

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 5 of 77 _

Software di base

Fanno parte del software di baseFIRMWARE (BIOS - Basic Inpot/Output System - ROM residente)

SISTEMA OPERATIVO O.S. o D.O.S.Costituito da un insieme di programmi progettati per svolgere funzioni di gestione, controllo e supervisione sulle operazioni dell’intero sistema

Gestore file - Controllo sulle funzioni I/O

Comandi di processo - Programmi di utilità

Slide 5 of 75 _

Software

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 6 of 77 _

Sviluppo e ciclo di vita del software

Studio di fattibilità– Convenienza ed attuabilità del progetto

Analisi – studio degli algoritmi soluzione informale

Progettazione– descrizione delle procedure - gerarchizzazione

Programmazione– scrittura dei programmi soluzione formale

Test – prove di congruità dei programmi

Revisione – cambiamenti e migliorie

Manutenzione– correzione di errori non evidenziati durante i test

Slide 6 of 75 _

Page 4: Software e Linguaggi di programmazione

27/05/2017

4

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 7 of 77 _

Processo di realizzazione del software

Slide 7 of 75 _

Analisi

Problema

Programmazione

Soluzione informale

Soluzione formale dell’

Algoritmo

Esecuzione

Programma macchina

Formalizzazionediagrammazione

Programma ad alto livello

Traduzione

Sistema informativo:Strumenti di supporto evoluti

Sistema informativo:Ambiente di sviluppo

Esecutoredel linguaggio

macchina (HW)

Esecutoredel linguaggioad alto livello

Linguaggibassomedio

alto livello

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 8 of 77 _

Linguaggi di programmazione

Slide 8 of 75 _

Gli algoritmi ci permettono di inquadrare e risolvere logicamente il problema, è poi necessario formalizzare l’algoritmo con delle sequenze di istruzioni elementari in modo che un opportuno esecutore svolga le operazioni descritte nell’algoritmo.

L’algoritmo deve quindi essere trascritto in un linguaggio comprensibile all’esecutore.

Il calcolatore per come è costruito è capace di eseguire solo le istruzioni elementari in codice binario che costituiscono il suo set di istruzioni, linguaggio macchina composto da sequenze di bit opportunamente organizzate.

Nel tempo sono stati creati più di 2500 diversi linguaggi (problem-oriented).

http://it.wikipedia.org/wiki/Linguaggio_di_programmazione

http://it.wikipedia.org/wiki/Elenco_cronologico_dei_linguaggi_di_programmazione

Page 5: Software e Linguaggi di programmazione

27/05/2017

5

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 9 of 77 _

Linguaggi di programmazione

Slide 9 of 75 _

Esempio di trascrizione in VB del diagramma della lezione

precedenteGestione armadietto farmaci

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 10 of 77 _

Linguaggi di programmazione

La scrittura dell’algoritmo per un esecutore è quindi caratterizzato da

1. una sintassi, regole che specificano come comporre l’istruzione ben formate

2. una semantica, specifica il significato delle operazioni nell’esecuzione dell’istruzione

Linguaggio macchina prima generazione

Linguaggi di basso livello assemblativi seconda generazione

Linguaggi di medio e alto livelloFortran, Cobol, Basic, Pascal, C++, Java, MatLab

Slide 10 of 75

Page 6: Software e Linguaggi di programmazione

27/05/2017

6

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 11 of 77 _

Linguaggi di programmazione

Linguaggi di prima generazioneIl linguaggio macchina usa solo codice binario (01001011) 8BFattoriNegativi:Difficile da utilizzare in quanto utilizza solo numeri binari al più esadecimaliPermette solo l’uso di indirizzi di memoria di tipo numericoDifficile da correggere e/o implementare ogni eliminazione o aggiunta di istruzioni comporta lo slittamento di tanti altri indirizzi che sono da verificare

Positivi:Molto efficienti in quanto il programma può essere ottimizzato sulle potenzialità dell’hardware

Slide 11 of 75 _

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 12 of 77 _

Linguaggi di programmazione

Linguaggi assemblatori o di seconda generazione

Sono l’evoluzione del linguaggio macchina e pur restando legati alla struttura del linguaggio macchina, le istruzioni a differenza del precedente hanno nomi simbolici ed il programmatore può assegnare nomi simbolici alle variabili che vengono gestite e riorganizzate dall’assemblatore stesso.

Slide 12 of 75

Page 7: Software e Linguaggi di programmazione

27/05/2017

7

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 13 of 77 _

Linguaggi ad alto livello

Dato che l’esecutore elettronico ha come sua principale caratteristica quella di eseguire operazioni in tempi estremamente contenuti gli esseri umani hanno pensato di dare alla macchina il compito di tradurre, istruzioni semanticamente più vicine a noi nelle più semplici sequenze di linguaggio macchina.Sono stati così concepiti tre diversi livelli di traduzione:

Traduzione a livello interpretatosi parte dal codice sorgente che viene tradotto in linea (in tempo reale)

Traduzione a livello compilatosi parte dal codice sorgente che viene tradotto nel suo complesso (fase 1) e quindi si può eseguire il codice esecutivo (fase 2)

Traduzione a livello emulativoÈ un tipo di traduttore utilizzato per far girare codice eseguibile prodotto per un dato processore su un processore diverso

Slide 13 of 75

Slide 14 of 77 _

Interprete

Il software interprete legge le istruzioni nel linguaggio ad alto livello le traduce e le manda in esecuzione.FattoriPositivi:se ci sono errori di sintassi questi vengono rilevati al momento dell’esecuzione corretti e si può rieseguire immediatamente il codicesi possono monitorare le variabili ed identificare errori di implementazione dell’algoritmo, correggere in linea e rieseguire

Negativi:Ogni volta che viene eseguito necessita della traduzione che rallenta l’esecuzione e prevede la presenza del dizionario anche se può essere protetta la manipolazione del codice sorgenteSe ci sono parti del software che non vengono testate o non vengono interessate nelle prove non si possono evidenziare errori di sintassi che saranno evidenziati solo più tardi

Slide 14 of 75 Informatica - Ingegneria Medica -2017 - Franco Del Bolgia

Page 8: Software e Linguaggi di programmazione

27/05/2017

8

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 15 of 77 _

Compilatore

Il software compilato legge le istruzioni codice sorgente nel linguaggio ad alto livello le traduce effettuando tutti i possibili controlli di sintassi e congruità delle variabili.

Fattori

Positivi

se ci sono errori di sintassi o congruità sulle variabili questi vengono rilevati tutti al momento della compilazione e possono essere corretti

nella compilazione si possono assemblare più parti anche testate e compilate precedentemente per ottenere l’eseguibile completo.

Negativi

Per la correzione di eventuali errori di trascrizione del codice, questa può essere effettuata solo a posteriori durante le prove dell’eseguibile.

Ogni correzione può essere fatta solo sul codice sorgente e comporta la ricompilazione del sorgente per ottenere un nuovo eseguibile

Slide 15 of 75

Tipologie d'errore

Errori di formali (lessicali e sintattici)Una sequenza di simboli è mal formata e non corrisponde ad una istruzione valida

Producono sempre uno stop

Errori di logicaL'algoritmo esegue un percorso diverso da quello pensato dall'analista

Sono di difficile rilevazione, e vengono individuati solo se si verificano determinate condizioni.

Non produce quasi mai uno stop

Forniscono sempre risultati errati

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 16 of 79 _

Page 9: Software e Linguaggi di programmazione

27/05/2017

9

Tipologie d'errore

Errori in esecuzione (assegnazione, definizione)Sono assegnate informazioni a variabili non compatibili tra loro oppure il risultato ottenuto è fuori del range di validità

(div/0, elementi di matrice non definiti, )

Producono uno stop nel momento in cui viene eseguita l'istruzione.

Non produco stop ma forniscono risultati errati (perdita dei decimali)

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 17 of 79 _

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 18 of 77 _Slide 18 of 75

Linguaggiomacchina

Linguaggioassemblativo

Linguaggi di programmazione Linguaggi

naturali

Linguaggi di basso livello

Hardwaredipendenti

Linguaggi  a medio e alto livello

il legame con hardware  avviene attraverso il compilatore

IngleseItalianoTedesco

Indipendentidall’hardware

Vari paradigmi di programmazioneImperativo‐ ProceduraleOrientato agli oggettiFunzionaleDichiarativo

Interpreti – Compilatori ‐ Emulatori

Interfaccia Uomo ‐ Macchina

HardwareSoftware per l’esecutore

in codice binario

Page 10: Software e Linguaggi di programmazione

27/05/2017

10

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 19 of 77 _

LinguaggiOgni linguaggio ad alto livello consente di esprimere gli algoritmi in programmi eseguibili su un esecutore automatico.

Nel tempo e con il presentarsi di problematiche di vario genere, si sono così sviluppati linguaggi con istruzioni più aderenti allo stile ed alle necessità del problema da risolvere:

I linguaggi possono così essere classificati nelle quattro seguenti categorie:

Paradigma imperativo - proceduraleParadigma orientato agli oggettiParadigma funzionaleParadigma dichiarativo

Slide 19 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 20 of 77 _

Le istruzioni

Un qualsiasi linguaggio deve avere:

Istruzioni di ingresso / uscitapermettono le comunicazioni con il mondo

Istruzioni aritmetico / logichepermettono le elaborazioni sequenziali

Istruzioni di controllopermettono di inserire punti di diramazione

e costruire un albero delle decisioni

Slide 20 of 75

Page 11: Software e Linguaggi di programmazione

27/05/2017

11

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 21 of 77 _

Paradigma imperativo - procedurale

Paradigma Imperativo – procedurale

È attualmente ancora il più diffuso; si basa sull’utilizzo di simboli definibili dal programmatore ed istruzioni elementari vicine alla logica con cui ci esprimiamo o con cui è stato realizzato il diagramma di flusso, nel quale le operazioni sono sequenziate secondo uno schema molto preciso e definito (imperativo)

Dati ed istruzioni sono definiti separatamente

Slide 21 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 22 of 77 _

Paradigma imperativo - procedurale

Slide 22 of 75

Inizio

Fine

wm,,nleggi

NO SIni

y ︶v ︵x, stampadatimemorizza

y ︶v ︵x, w,j, i, m, n,variabilidelleoneDichiarazi

y ︶v ︵x, w,j, i, m, n,variabilidelleneAssegnazio

wsu operazionij ︶v ︵i, su operazioni

j indicesull' operazionii indicesull' operazioni

variabili sulleoperazioni delle esecuzione

Page 12: Software e Linguaggi di programmazione

27/05/2017

12

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 23 of 77 _

Paradigma imperativo - procedurale

Slide 23 of 75

Bloccoistruzioni

NO

SI

....

Condizione

....

main ()

{

………

if (condizione) {

blocco di istruzioni se vero;

}

…….

}

……

if (condizione) then

blocco di istruzioni se vero

end if

…….

Program …

begin

if (condizione)

then

blocco di istruzioni se vero;

end.

…….

Programmazione strutturata

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 24 of 77 _

Paradigma imperativo - procedurale

Slide 24 of 75

Bloccoistruzioni

....

NOSI Condizione

....

Bloccoistruzioni

main ()

{ ………

if (condizione) { istruzioni se vero }

else {istruzioni se falso}

…….

}

……

if (condizione) then

istruzioni se vero

else

istruzioni se falso

end if

…….

Program …

begin

if (condizione)

then

blocco di istruzioni se vero

else

blocco di istruzioni se falso;

end.

…….

Page 13: Software e Linguaggi di programmazione

27/05/2017

13

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 25 of 77 _

Paradigma imperativo - procedurale

Slide 25 of 75

NO

SI

Bloccoistruzioni

....

Condizione

....

main ()

{ ………

while (condizione) {

blocco di istruzioni finché vero;

}

…….

}

……

while condizione

blocco di istruzioni finché vero

wend

…….

……

while condizione do

begin

blocco di istruzioni finché vero

end;

…….

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 26 of 77 _

Paradigma imperativo - procedurale

Slide 26 of 75

……

repeat

blocco di istruzioni

until condizione ;

…….

NO

SI

Bloccoistruzioni

....

Condizione

....

……

For I=1 to 10

blocco di istruzioni

next I

…….

……

For Each object as integer

blocco di istruzioni

next object

…….

……

Do (while o Until) condizione

blocco di istruzioni

Loop

…….

……

Do

blocco di istruzioni

Loop (while o Until) condizione

…….

....

NO

SI

Bloccoistruzioni

Condizione

....

Page 14: Software e Linguaggi di programmazione

27/05/2017

14

Slide 27 of 77 _

Paradigma imperativo - procedurale

Slide 27 of 75 Informatica - Ingegneria Medica -2017 - Franco Del Bolgia

Routine richiamo funzione da oggetto pulsante che acquisisce il valore da cercare

Ricerca delle ricorrenze di un valore su un vettore numerico

Es. Visualizza la frase "Il valore 23 è stato trovato per 7 volte"

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 28 of 77 _

Paradigma imperativo - procedurale

Slide 28 of 75

Ricerca ricorrenze in Java

Page 15: Software e Linguaggi di programmazione

27/05/2017

15

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 29 of 77 _

DatiLe variabili sono i dati che devono essere elaborati e necessitano di spazi in memoria,Questi spazi devono essere definiti sia dal punto di vista delle dimensioni che dal punto di vista dell’usabilità.Scrivere z = z + v(i) è ammissibile solo se z, i e v(i) sono numeri z è un numero realei è un numero interov() è un vettore di numeri reali

oppure se le variabili sono tutti testi allora + può indicare concatena le parole / lettere per ottenere una fraseanche il simbolo & è usato per concatenare stringhe

Slide 29 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 30 of 77 _

DatiCosì come se devo costruire una frase le parole devono essere concatenate opportunamente a formare la frase in questo caso & rappresenta la funzione di concatenazione. Le stringhe vengono rappresentate all’interno di “

la stringa vuota ““testo = “Pippo oggi deve andare “ & destinazione & “ per “ & azione

testo è una stringa formata da due costanti la prima di 23 caratteri e la seconda di 5 caratteri e due variabili di lunghezza variabile

destinazione è una stringa variabile

azione è una stringa variabile

Se destinazione e azione sono vuote il messaggio sarà

“Pippo·oggi·deve·andare··per·“ · simbolo spazio

Slide 30 of 75

Page 16: Software e Linguaggi di programmazione

27/05/2017

16

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 31 of 77 _

Dati

Se destinazione = “al mercato” e

azione = “fare la spesa”

Il messaggio sarà

“Pippo oggi deve andare al mercato per fare la spesa“

Se destinazione = “al cinema” e

azione = “vedere il film appena uscito”

Il messaggio sarà

“Pippo oggi deve andare al cinema per vedere il film appena uscito “

Slide 31 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 32 of 77 _

Definizione delle variabiliLe variabili possono avere varie tipizzazioni statiche (es. VBA)Boolean (booleano)

2 byte (Falso, Vero)

Integer (intero)2 byte (-32,768: 32,767)

Long (intero lungo)4 byte (-2.147.483.648 : 2.147.483.647)

Single (singola precisione)4 byte Floating-Point (numeri reali)

Double (doppia precisione)8 byte Floating-Point (numeri reali)

Date (rappresenta una data)8 bytes FP dal 1/1/1900 al 31/12/9999parte intera giorni dal riferimentoparte decimale, hh.mm.sec, contatore dalla mezzanotte

Slide 32 of 75

Page 17: Software e Linguaggi di programmazione

27/05/2017

17

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 33 of 77 _

Definizione delle variabiliCurrency (valutario, monetario)

8 byte Fixed-point (virgola fissa)

dove è importante l’accuratezza nei calcoli valori

-922.337.203.685.477,5808 a 922.337.203.685.477,5807.

String (testo di lunghezza variabile)

1 byte per carattere e 1 o 2 byte per lunghezza della stringa

String * length (testo di lunghezza fissa)length byte è la lunghezza definita dall’utilizzatore

Object riferimento (indirizzo ad un oggetto di office)

4 byte

Definizione dinamica

Variant (assume la definizione data dal valore attuale)boolean, integer, long, single, double, date, currency, string

Slide 33 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 34 of 77 _

Definizione delle variabiliA seconda del linguaggio si hanno molte differenti alternative (es. Java, C++)

boolean(Vero, Falso) non hanno valore numerico occupa 1 byte

char(contiene caratteri tipo unicode a 2 byte + address)serve per inserire codici ASCII particolari

Numeri interi (variabili statiche)

byte(1 byte, 8 bit - valori da -128 a 127)

short(2 byte, 16 bit - valori da -32768 a 32767)

int(4 byte, 32 bit - valori da -2.147.483.648 a 2.147.483.647)

long (8 byte, 64 bit – valori da -9223372036854775808 a 9223372036854775807)

Slide 34 of 75

Page 18: Software e Linguaggi di programmazione

27/05/2017

18

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 35 of 77 _

Definizione delle variabili

float(4 byte, 32 bit – numeri reali 6 o 7 cifre decimali significativevalori da +/- 140129846432481707*10^- 45 a

+/- 340282346638528860*10^ 38 )

double(8 byte, 64 bit – – numeri reali 15 cifre decimali significativevalori da +/- 494065645841246544 * 10^-324 a

+/- 179769313486231570 * 10^308 )

Definizione dinamicaVar

Variabili di tipo dinamico può assumere tutte le tipologie consentite, che vengono applicate al momento di assegnazione l'errore si evidenzia quando viene applicato l'operatore

Slide 35 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 36 of 77 _

Regole legate alla tipizzazione di variabileQuasi tutti i linguaggi interpreti / compilatori hanno delle limitazioni stringenti nella definizione dei dati costanti o variabiliTipizzazione StaticaDevono essere definite prima del loro utilizzo

Le variabili una volta definite nella loro tipologia

hanno range di variabilità definito del tipohanno valori assegnabili definito dal tipohanno operatori validi e non validi

Tipizzazione Dinamica

Assumono la tipizzazione al momento dell'assegnazione (serve maggior tempo di elaborazione e spazio)

Slide 36 of 75

Page 19: Software e Linguaggi di programmazione

27/05/2017

19

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 37 of 77 _

Regole legate alla tipizzazione di variabile

Le stringhe generalmente sono racchiuse tra singoli apici o doppi apici e possono essere identificate nel nome con il simbolo $ che le precede

'Pippo' "Pippo" $Nome="Pippo"

Valutario @

Data # 10/08/2016 #

La definizione della variabile ne stabilisce il comportamento "00100" è una stringa sulla quale non si possono effettuare operazioni algebriche.

Slide 37 of 75

Struttura di una procedura

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 38 of 79 _

Modulo principale

Menu scelta

Modulo 1 Modulo 2

Modulo Sa

Modulo 3

Uscita

Modulo Sb

Modulo Sc

Modulo Sd

Moduli secondarispecifiche attività

richiamati da vari livelli

Page 20: Software e Linguaggi di programmazione

27/05/2017

20

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 39 of 77 _

Visibilità delle variabili

Localvisibilità limitata alla classe o metodo

Globalvisibilità a livello locale e di modulo

Publicvisibilità a livello totale

Privatevisibilità a livello locale di classe

Slide 39 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 41 of 77 _

Dati strutturati

Dati strutturati o definiti dall’utente per la gestione Database

Slide 41 of 75

struct paziente {

long ID

char nome [Dimensione]

char cognome [Dimensione]

date data_nascita

date data_evento

boolean vac_Antipolio

boolean vac_Antitetanica

boolean vac_Antrabbica

int altezza

int peso

}

Type paziente

ID as long

nome as string * [Dimensione]

cognome as string * [Dimensione]

data_nascita as Date

data_evento as Date

vac_Antipolio as Boolen

vac_Antitetanica as Boolen

vac_Antrabbica as Boolen

altezza as Integer

peso as Integer

End Type

Linguaggio C Basic

Page 21: Software e Linguaggi di programmazione

27/05/2017

21

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 42 of 77 _

Gestione vettoriale dei dati strutturati

Slide 42 of 75

main ()

{ struct paziente P[300];

ID=0;

fine=1

while ( fine<>0)

{ ID=ID+1;

scanf P(ID).nome;

scanf P(ID).cognome;

scanf P(ID). data_nascita;

……….

scanf P(ID).Antirabbica;

scanf P(ID).altezza;

scanf P(ID).peso;

scanf fine;

}

Dim P(300) as paziente

ID=0;

fine=1

while fine<>0

ID=ID+1

input P(ID).nome

input P(ID).cognome

input P(ID). data_nascita

……….

input P(ID).Antirabbica

input P(ID).altezza

input P(ID).peso

input fine

wend

Linguaggio C Basic

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 43 of 77 _

EsempioEsempio: controllare il testo digitato e trasformare in maiuscolo la prima lettera di ogni parola digitata

qualunque siano le modalità con cui sono state digitate le parole queste devono essere verificate e corrette inoltre eliminare la presenza di spazi iniziali e finali e ridurre ad uno gli spazi tra le parole.

i puntini tra le lettere rappresentano il carattere

spazio il simbolo finale rappresenta fine testo.

Slide 43 of 75

Page 22: Software e Linguaggi di programmazione

27/05/2017

22

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 44 of 77 _

Esempio di routine di input e controllo dati1 – Introduzione testo2 - Eliminazione di eventuali spazi all’inizio e alla fine

del testo e spazio digitato più voltericerca dalla posizione 1 chr spazio e se presente elimina fino a chr<>spazioricerca dalla posizione 2 chr spazio e se il chr (i+1) = spazio elimina ricerca nella posizione n chr spazio elimina. Considerare che la L str varia

3 – Converto tutto in minuscoloaggiungo 32 al valore del carattere se 64<Valore<91

4 – Converto il 1° carattere in maiuscolosottraggo 32 al suo valore

5 - Cerco gli spazi presenti e converto la lettera immediatamente successiva in maiuscolociclo dal 2° carattere cerco il valore 64, aggiungo 1 al puntatore, sottraggo 32 al valore del carattere puntato, continuo il ciclo fino alla lunghezza della stringa

6 – Visualizzo il risultato

Slide 44 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 45 of 77 _

Definizione di matrici

matrice(n,m)

dove n numero di righe ed m numero di colonne

matri(10,8) 10 (n) righe ed 8 (m) colonne

Matri(1 to 10, 1 to 8)

Slide 45 of 75

elem(1,1) elem(1,2) elem(1,3) elem(1,4) …… elem(1,8)

elem(2,1) elem(2,2) elem(2,3) elem(2,4) …… elem(2,8)

elem(3,1) elem(3,2) elem(3,3) elem(3,4) …… elem(3,8)

elem(4,1) elem(4,2) elem(4,3) elem(4,4) …… elem(4,8)

elem(5,1) elem(5,2) elem(5,3) elem(5,4) …… elem(5,8)

…… …… …… …… …… ……

…… …… …… …… …… ……

lem(10,1) elem(10,2) elem(10,3) elem(10,4) elem(10,8)

Page 23: Software e Linguaggi di programmazione

27/05/2017

23

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 46 of 77 _

Definizione di matrici

matrice(n,m)

dove n numero di righe ed m numero di colonne

matri(10,8) 10 (n) righe ed 8 (m) colonne

Matri(0 to 9, 0 to 7)

Slide 46 of 75

elem(0,0) elem(0,1) elem(0,2) elem(0,3) …… elem(0,7)

elem(2,0) elem(2,1) elem(2,2) elem(2,3) …… elem(2,7)

elem(3,0) elem(3,1) elem(3,2) elem(3,3) …… elem(3,7)

elem(4,0) elem(4,1) elem(4,2) elem(4,3) …… elem(4,7)

elem(5,0) elem(5,1) elem(5,2) elem(5,3) …… elem(5,7)

…… …… …… …… …… ……

…… …… …… …… …… ……

lem(9,0) elem(9,1) elem(9,2) elem(9,3) elem(9,7)

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 47 of 77 _

Paradigma orientato agli oggetti

Si basa fondamentalmente sulle possibilità grafiche e prevede la presenza di strutture di interazione come nel mondo reale, oggetti come pulsanti, manopole, cursori, etc., metafora del desktop, i quali attivano determinate funzioni.

Le istruzioni sono rappresentate dai metodi ed i dati dalle proprietà

Gli oggetti / dati possono essere strutturati in classi

Slide 47 of 75

Page 24: Software e Linguaggi di programmazione

27/05/2017

24

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 48 of 77 _

Paradigma orientato agli oggetti

Slide 48 of 75

Oggetto pulsante

Oggetto casellatesto

Oggetto casellaetichetta

Oggetto casellatesto multi linea

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 49 of 77 _

Paradigma orientato agli oggetti – proprietà oggetti

Slide 49 of 75

Oggetto pulsante

Oggetto casellatesto

Oggetto casellaetichetta

Oggetto casellatesto multi linea

Page 25: Software e Linguaggi di programmazione

27/05/2017

25

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 50 of 77 _

Attività svolta dagli oggetti

Slide 50 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 51 of 77 _

Dati e Oggetti

Slide 51 of 75

Bicicletta

Mozzo

Ruota posteioreRuota Anteriore

Cerchione

Telaio

Mozzo Cerchione

Class Bicicletta {

String Dati Bicicletta

Telaio telaio;

RuotaA Ruota anteriore

RuotaP Ruota posteriore

}

Class Telaio {

String tipo

Numero di serie

}

Class Dati Bicicletta {

String Marca

String Numero di serie

}

Class RuotaA {

String tipo

Mozzo mozzo

Cerchione cerchine

}

Class RuotaP {

String tipo

Mozzo mozzo

Cerchione cerchine

}

Page 26: Software e Linguaggi di programmazione

27/05/2017

26

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 52 of 77 _

Dati e oggetti

Slide 52 of 75

Bicicletta

Mozzo

Ruota posteioreRuota Anteriore

Cerchione

Telaio

Mozzo Cerchione

Controlla (bicicletta) richiede

Controlla (telaio) prodotto elementare

Controlla (ruota anteriore) richiede

Controlla (mozzo) prodotto elementare

Controlla (cerchione) prodotto elementare

Controlla (ruota posteriore) richiede

Controlla (mozzo) prodotto elementare

Controlla (cerchione) prodotto elementare

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 53 of 77 _

Paradigma funzionale

Paradigma funzionale

Generalmente utilizzati nei simulatori, in questo caso il problema viene inquadrato dal punto di vista della sua risoluzione matematica con blocchi funzionali che effettuano sui dati di ingresso una operazione specifica

I dati e le istruzioni tendono ad essere un tutt’uno.

Un esempio tipico è il linguaggio LISP

Slide 53 of 75

Page 27: Software e Linguaggi di programmazione

27/05/2017

27

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 54 of 77 _

Paradigma funzionale LISP

(print (+ 12 23))Notaz Inv Pol (12 23 +)

(defun max (x y) (if (>=x y) x y))

print 12 + 32

Function max(x,y)If a>=b then

max=aElsemax=b

End ifEnd function

LISPBasic

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 55 of 77 _

Paradigma funzionale

Slide 55 of 75

112)( x

dt

dx

dt

dx

dt

dtu

dt

d

dt

d

dt

d

+

+

-u

2x

1x

22

2

dt

xddt

dx2

dt

dx1

generatore

generatore

grafica

Page 28: Software e Linguaggi di programmazione

27/05/2017

28

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 56 of 77 _

Paradigma funzionale

Slide 56 of 75

112)( x

dt

dxB

dt

dx

dt

dAtu

dt

d

dt

d

dt

d

+

+

-u

2x

1x

22

2

dt

xddt

dx2

dt

dx1'* ieB

''* ieA

generatore

grafica

generatore

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 57 of 77 _

Paradigma dichiarativoQuesto tipo di organizzazione è orientata ai dati e alle loro relazioni

In genere nella soluzione di un problema si stabilisce cosa si vuole ottenere nella prima fase dell’analisi e quindi con la programmazione il come ciò che si vuole possa essere raggiunto.Nella programmazione dichiarativa invece viene descritta nella base di dati l’asserzione che lega degli argomenti e le relazioni che legano le varie asserzioni.Le richieste sono solo il cosa si vuole ed è compito del traduttore cercare il modo con cui risolvere il problema e farlo eseguire al processore.

Slide 57 of 75

Page 29: Software e Linguaggi di programmazione

27/05/2017

29

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 58 of 77 _

Paradigma dichiarativo

Ad esempioplus (a,b,c)

dichiara una somma tra a e b con risultato su c

plus (10,5,c) riempirà c con 15plus (10,b,15) riempirà b con 5 plus (a,5,15) riempirà a con 10

ma dato l’asserto di base c = a + b allora b = c – a oppure a = c – b

Slide 58 of 75

predicato

argomenti

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 59 of 77 _

Paradigma dichiarativo

La realtà può essere considerata come composta daFatto : (asserzione) <predicato> (argomento, argomento, argomento,…)Regola : (clausole) relazioni condizionate fra oggetti

Luca è padre di Giovanni padre (Luca, Giovanni)asserzione Giovanni è figlio di Luca

Marco possiede la moto possiede (Marco, moto)Marco possiede il computer possiede (Marco, computer)

Struttura Dichiarazione dei fatti (database)Definizione delle regole tra i vari predicati Porre domande sui fatti [ ? possiede (Luca,moto) = falso ]

[ ? possiede (Marco,moto) = vero ][ ? possiede (marco,y) y = moto, y = computer ]

Slide 59 of 75

predicato argomenti

Page 30: Software e Linguaggi di programmazione

27/05/2017

30

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 60 of 77 _

Paradigma dichiarativoLe funzioni dichiarative costituiscono la base di dati :padre (padre,figlio) madre(madre,figlio)

Slide 60 of 75

padre (Osvaldo,Pietro)padre (Giulio,Giuseppe)padre (Pietro,Francesca)padre (Pietro,Carlo)padre (Guiscardo,Pietro)padre (Giulio,Aldo)padre (Pietro,Adelaide)padre (Ernesto,Osvaldo)

madre (Monica,Carlotta)madre (Carlotta,Elvira)madre (Monica,Giuseppe)madre (Eva,Milena)madre (Elvira,Carlo)madre (Francesca,Milena)madre (Eva,Giuseppe)

DataBase e relazione

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 61 of 77 _

Paradigma dichiarativo

genitore(X,Y) :- padre(X,Y). genitore(X,Y) :- madre(X,Y).

antenato(X,Y) :- genitore(X,Y). antenato(X,Y) :- genitore(X,Z), antenato(Z,Y).antenato(X,Y) :- genitore(X,Z), antenato(Z,W), antenato(W,Y)

fratello_sorella(X,Y) :-padre(Z,X), padre(Z,Y), madre(W,X), madre(W,Y), X \= Y.

? madre (x,Milena)x=Eva, x=Francesca

? padre (Pietro,y)y=Francesca, y=Carlo, y=Adelaide

Slide 61 of 75

Page 31: Software e Linguaggi di programmazione

27/05/2017

31

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 62 of 77 _

Paradigma dichiarativoLe funzioni dichiarative costituiscono la base di dati :genitore (genitore,figlio)

Slide 62 of 75

padre (Osvaldo,Pietro)padre (Giulio,Giuseppe)padre (Pietro,Francesca)padre (Pietro,Carlo)padre (Guiscardo,Pietro)padre (Giulio,Aldo)padre (Pietro,Adelaide)padre (Ernesto,Osvaldo)

madre (Monica,Carlotta)madre (Carlotta,Elvira)madre (Monica,Giuseppe)madre (Eva,Milena)madre (Elvira,Carlo)madre (Francesca,Milena)madre (Eva,Giuseppe)

? padre (Pietro,y)y=Francescay=Carloy=Adelaide

? madre (x,Milena)x=Evax=Francesca

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 63 of 77 _

Paradigma dichiarativo

? genitore (x,Giuseppe)

x=Giulio, x=Monica, x=Eva

? antenato (x,Carlo)

x=Pietro, x=Osvaldo, x=Ernesto, x= Guiscardo, x=Elvira, x=Carlotta, x=Monica

padre (Pietro,Carlo), padre (Osvaldo,Pietro), padre (Ernesto,Osvaldo)

padre (Guiscardo,Pietro)

madre (Elvira,Carlo), madre (Carlotta,Elvira), madre (Monica,Carlotta)

Slide 63 of 75

Page 32: Software e Linguaggi di programmazione

27/05/2017

32

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 64 of 77 _

Paradigma dichiarativoLe funzioni dichiarative costituiscono la base di dati :genitore (genitore,figlio)

Slide 64 of 75

padre (Osvaldo,Pietro)padre (Giulio,Giuseppe)padre (Pietro,Francesca)padre (Pietro,Carlo)padre (Guiscardo,Pietro)padre (Giulio,Aldo)padre (Pietro,Adelaide)padre (Ernesto,Osvaldo)

madre (Monica,Carlotta)madre (Carlotta,Elvira)madre (Monica,Giuseppe)madre (Eva,Milena)madre (Elvira,Carlo)madre (Francesca,Milena)madre (Eva,Giuseppe)

? genitore (x,Giuseppe)

x=Giulio

x=Monica

x=Eva

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 65 of 77 _

Paradigma dichiarativoLe funzioni dichiarative costituiscono la base di dati :genitore (genitore,figlio)

Slide 65 of 75

padre (Osvaldo,Pietro)padre (Giulio,Giuseppe)padre (Pietro,Francesca)padre (Pietro,Carlo)padre (Guiscardo,Pietro)padre (Giulio,Aldo)padre (Pietro,Adelaide)padre (Ernesto,Osvaldo)

madre (Monica,Carlotta)madre (Carlotta,Elvira)madre (Monica,Giuseppe)madre (Eva,Milena)madre (Elvira,Carlo)madre (Francesca,Milena)madre (Eva,Giuseppe)

? antenato (x,Carlo)x=Pietrox=Elvira

x=Osvaldox= Guiscardox=Carlotta

x=Ernestox=Monica

Page 33: Software e Linguaggi di programmazione

27/05/2017

33

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 66 of 77 _

Linguaggi per la manipolazione dei dati

In molti casi non sono le operazioni matematiche ad essere la principale applicazione ma la gestione di informazioni organizzate in tabelle relazionate tra loro con un gran numero di informazioni nei DBMS(Database Management System)Questa problematica estremamente comune ai grandi archivi ha portato allo sviluppo di linguaggi specifici per la gestione delle tabelle a modello relazionale chiamati SQL (Structured Query Language) che hanno funzioni di:Creazione, inserimento, aggiornamento, cancellazione, ricerca ed estrazione di dati tra loro correlati.

Slide 66 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 67 of 77 _

DBMS

Un database è normalmente formato da più tabelle ed ogni tabella e definita dal suo schema che sono l’insieme dei campi da cui essa è formata e che rappresenta anche la tipologia ed eventuali limitazioni sui dati definiti nei campi.

I dati presenti nei campi sono gli item successivi definiti nello schema.

Slide 67 of 75

Page 34: Software e Linguaggi di programmazione

27/05/2017

34

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 68 of 77 _

DBMS

Tutti gli item dello schema costituiscono il record.Tanti record costituiscono la tabella.Tante tabelle correlate costituiscono un database.

Nei DataBase sono anche inserite le eventuali relazioni tra le tabelle al fine di non dover duplicare dati presenti nelle tabelle di competenza

(caratteristiche degli item della tabella)

Slide 68 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 69 of 77 _

DBMS

Slide 69 of 75

DataBase

Tabella 1

Record 1

Record 2

…………

Record n

Record:

key

Item 1

Item 2

……

Item g

Tabella 2

Record 1

Record 2

…………

Record m

Record:

key

Item 1

Item 2

……

Item f

Tabella 3

Record 1

Record 2

…………

Record h

Record:

key

Item 1

Item 2

……

Item p

Tabella 4

Record 1

Record 2

…………

Record k

Record:

key

Item 1

Item 2

……

Item q

Page 35: Software e Linguaggi di programmazione

27/05/2017

35

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 70 of 77 _

DBMS

Slide 70 of 75

Ospedaliero

DB Medici

Record 1

Record 2

…………

Record m

Record:

Id

Cognome

Nome

Specializzazione

Reparto

DB Infermieri

Record 1

Record 2

…………

Record n

Id

Cognome

Nome

Specializzazione

Reparto

DB Pazienti

Record 1

Record 2

…………

Record p

Id

Cognome

Nome

Dt Nascita

Dt Ricovero

Reparto

Medico

DB Reparti

Record 1

Record 2

…………

Record q

Record:

Id

Nome Reparto

Letti

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 71 of 77 _

DBMS

Slide 71 of 75

Page 36: Software e Linguaggi di programmazione

27/05/2017

36

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 72 of 77 _

DBMS Tabella

Slide 72 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 73 of 77 _

Relazioni tra gli elementi delle tabelle

Slide 73 of 75

Page 37: Software e Linguaggi di programmazione

27/05/2017

37

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 74 of 77 _

DBMS

La funzione principale dei data base è quella di selezionare i dati e fornirli aggregati secondo le richieste dell’utenteSeleziona tutti i pazienti presenti nella tabella DB_Pazienti, ricoverati al primo in Urologia, i cui medici di riferimento sono Lorenzetti o Galli ordina elenco sul cognome

Select Pazienti.Cognome

From DB_Pazienti

Where DB_Pazienti.Rep1=“Urologia”

And (DB_Pazienti.Med_Rif =“Lorenzetti”

Or DB_Pazienti.Med_Sost = “Galli” )

Order by Cognome

Slide 74 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 75 of 77 _

Linguaggi ipertestuali HTML

Hanno avuto un notevole impulso con l’avvento di INTERNET in quanto:Logica di tipo reticolare nella lettura e acquisizione dell’informazioneLa logica lineare con cui sono scritti i testi spesso non è in accordo con quella del lettore.Il lettore mentre legge può avere la necessità, curiosità di chiarire, approfondire parti del discorso , oppure chi ha scritto la pagina può avere la necessità di indirizzare il lettore verso altri sitiHTML (HyperText Markup Language)

URL (Uniform Resource Locators)

Slide 75 of 75

Page 38: Software e Linguaggi di programmazione

27/05/2017

38

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 76 of 77 _

HTML (Hypertext Markup Language)Il formato HTML prevede la presenza di solo testo e comandi (denominati markup o tag) che rappresentano i comandi che il software browser interpreterà per realizzare/assemblare la pagina da visualizzare

Questi comandi sono inseriti con due simboli delimitatori di inizio e fine oppure codice di comando<nome_del_tag> seguiti da testo o comandi più complessi </nome_del_tag>Es.<U> sottolineato </U><I> italico </I><EM> enfatizzato </EM><BR> ritorno a capo<P> ritorno a capo con linea vuota<BODY> corpo del testo </BODY><UL> lista non numerata </UL><LI> elemento di lista </LI><A HREF=“path\...\indirizzo”>Partite 2011-2012</A> anchor point<IMG SRC=“path\...\nome immagine”>

Slide 76 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 77 of 77 _

Linguaggi ipertestuali HTML

Slide 77 of 75

Page 39: Software e Linguaggi di programmazione

27/05/2017

39

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 78 of 77 _

HTML (Hypertext Markup Language)

Utilizzando la logica della definizione si possono costruire degli elenchi

<UL>

<LI> D. Sciuto, G. Buonanno, L. Mari, W. Fornaciari

<EM>Introduzione ai sistemi Informatici</EM>

McGraw-Hill Italia 2008

<LI><U><I>autori

<EM> Informatica </EM>

Editore

</I></U>

</UL>

Slide 78 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 79 of 77 _

XML ( Xtensible Markup Language)<UL>

<LI><LIBRO><AUTORE> D. Sciuto</AUTORE><AUTORE> G. Buonanno </AUTORE><AUTORE> L. Mari </AUTORE><AUTORE> W. Fornaciari </AUTORE><TITOLO> <EM>Introduzione ai sistemi Informatici </EM> </TITOLO> <EDITORE> McGraw-Hill Italia </EDITORE>

</LIBRO></LI><LI><LIBRO>

……………<LIBRO></LI><LI><LIBRO>

……………</LIBRO>></LI>

</UL>

UL Lista non numerata LI Elemento di lista numerata EM enfatizzatoIl simbolo / indica termine funzione

Slide 79 of 75

Page 40: Software e Linguaggi di programmazione

27/05/2017

40

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 80 of 77 _

DTD (Document Type Definition)<!------- Bibliografia ----><BIB>

<LIBRO nome=“info”><AUTORE id = “dony”> D. Sciuto</AUTORE><AUTORE id = “jack”> G. Buonanno </AUTORE><AUTORE id = “luca”> L. Mari </AUTORE><AUTORE id = “mau”> W. Fornaciari </AUTORE><TITOLO> EM>Introduzione ai sistemi Informatici </TITOLO> <EDITORE> McGraw-Hill Italia </EDITORE> <ANNO> 2008

</LIBRO>

<LIBRO nome=“DataBase”>< AUTORE idref = “luca”<TITOLO> Accesso a database via web</TITOLO><EDITORE> Apogeo </EDITORE><ANNO> 2001</ANNO>

</LIBRO>

</BIB>

Slide 80 of 75

Informatica - Ingegneria Medica -2017 - Franco Del Bolgia Slide 81 of 77 _

Esempio di dati per il DB medico scientifico PubMed

Slide 81 of 75

Page 41: Software e Linguaggi di programmazione

27/05/2017

41

Università degli Studi di Roma – Tor Vergata

Facoltà di Ingegneria – Corso di Laurea in Ingegneria Medica

Domande ?