Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


informatica giuridica hardware e software, Slide di Informatica Giuridica

nozioni principali su software,hardware e open source

Tipologia: Slide

2011/2012

Caricato il 15/06/2012

macchiaba
macchiaba 🇮🇹

1 documento

1 / 32

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
1
Software e Algoritmi
Lezione n. 3
Obiettivi
3.1 Definizione di Software
3.2 Definizione di algoritmo, sue proprietà e
formalismi
3.3 Metodo top-down, e programmazione
strutturata
3.4 Complessità degli algoritmi
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20

Anteprima parziale del testo

Scarica informatica giuridica hardware e software e più Slide in PDF di Informatica Giuridica solo su Docsity!

Software e Algoritmi

Lezione n. 3

Obiettivi

 3.1 Definizione di Software

 3.2 Definizione di algoritmo, sue proprietà e

formalismi

 3.3 Metodo top-down, e programmazione

strutturata

 3.4 Complessità degli algoritmi

Software

parte n. 3.

Software – definizione informatica

 “Istruzioni che eseguite da un computer svolgono una funzione prestabilita con prestazioni prestabilite - (programma di alto livello ed eseguibile)

 strutture dati mediante le quali i programmi trattano adeguatamente le informazioni - (schemi logici e fisici dei dati)

 documenti che descrivono le operazioni e l’uso dei programmi - (documentazione tecnica e manuale utente)” (R.S. Pressman,Principi di Ingegneria del software, McGraw-Hill 2000)

Creazione di un software: dal problema ai risultati (1/2)

problema

ANALISI

algoritmo

FORMALIZZAZIONE

specificazioni

PROGRAMMAZIONE

programma

  1. Comprendere il problema
    1. Comprendere le soluzioni – idea risolutrice
      1. Algoritmo tradotto in un linguaggio di alto livello
      2. Formalizzazione dell’algoritmo

Creazione di un software: dal problema ai risultati (2/2)

programma

TRADUZIONE

eseguibile

ESECUZIONE

risultati

  1. Traduzione in linguaggio macchina
    1. Valutazione dei risultati
  2. Algoritmo tradotto in un linguaggio di alto livello

MANUTENZIONE 7. Manutenere il software

Un esecutore particolare: il calcolatore

 Se per un esecutore umano le fasi di formalizzazione, programmazione, traduzione in azioni (fasi n.3,4,5) avvengono con una elaborazione cognitiva  Per il calcolatore occorrono tre fasi intermedie poiché non è dotato di cognizione autonoma:  Formalizzazione dell’algoritmo secondo un metodo non ambiguo  Programmazione ad alto livello comprensibile al calcolatore  Traduzione in linguaggio comprensibile al calcolatore ossia in linguaggio macchina

I precursori dei calcolatore

 Calcolatore di Rodi o di Andikithira 65 a.C.  Blaise Pascale – pascalina XVII secolo  Gottfried Leibniz  Joseph Jacquard XVIII secolo  Charles Babbage XIX secolo  Alan Turing XX secolo - Colossus  John Von Neumann – macchina programmabile universale - ENIAC

Software: definizione per livelli

Il Software usando il Framework di

Zachman

Linguaggio alto

livello,

linguaggio

macchina,

esecuzione

Livello fisico

Formalizzazione/

documentazione

Livello logico

Livello Algoritmo

concettuale

A=hxb/

var A int var h, b int A= hxb/ print A

1000101 0010011 111100 100011

Software: la definizione

 Software: insieme di programmi scritti in qualche

linguaggio di programmazione eseguibili dal

computer (tutelato con il diritto d’autore anche

se..)

 software ≠ algoritmo

 software ≠ programma

 algoritmo ≠ programma

 software = algoritmo + programmi &

documentazione + file fisici eseguibili + l’azione

di esecuzione

Hardware e firmware: definizioni

 Hardware: parte fisica del computer costituita da parti

elettroniche e meccaniche (tutelato con il brevetto)

 Firmware: insieme di microprogrammi registrati sulle

memorie permanenti dei dispositivi elettronici,

solitamente introdotti dal costruttore e cablati

nell’hardware (tutelato con il brevetto)

Tipologie di software

 software real-time - software dedicato alla sorveglianza, all’analisi e all’elaborazione di eventi esterni (rilevamento di temperature di una piastra di acciaio durante la lavorazione, pilota automatico, sala operatoria)  software gestionale - elaborazione dei dati e dei processi aziendali - 70%-80%  software scientifico - astronomia, calcolo parallelo, etc.  software di Intelligenza Artificiale - sistemi esperti, reti neurali, dimostratori di teoremi, alcuni sono dotati di autonomia, reattività e pro-attività (es. agenti intelligenti)  software embedded - programmi residenti in prodotti industriali (lavatrici, forno, termostati ambientali, etc.)  software per PC - applicativi di office-automation (fogli elettronici, elaboratori di testi, etc.)  software basato su Internet - B2B, B2C, portali, etc. spesso erogato mediante servizi e non prodotti

Categorie di software

 Software Generici  prodotti software standardizzati venduti sul mercato  le specifiche vengono dettate dal mercato e dal produttore stesso  Software Dedicati o ad hoc  progetti ad hoc creati per un determinato cliente  le specifiche vengono dettate dal cliente  Modello di business diverso  Prodotto (generici) vs. Progetto (ad hoc)  Licenza (generici) vs. Contratto ad oggetto informatico (ad hoc)  Metafora del prodotto industriale vs. quello artigianale

Materiali di riferimento e Domande

possibili

 Capitolo 3 del Sartor

 Definizione di software, hardware e firmware

 Tipi di software e tipi di modelli di business

 Relazione fra software, algoritmo e

programma

 Il problem solving e il software

 Le fasi di produzione di un software

 Nuovi modelli di business: open source a

ASP

Algoritmo

parte n. 3.

Origini dell’algoritmo

 Il concetto di algoritmo è antico e non è strettamente legato al calcolatore: l’esecutore può essere diverso

 Sono stati ritrovati algoritmi in tavolette antiche in Mesopotamia risalenti al 1800-1600 a.c.

 Il termine algoritmo è la latinizzazione dal nome di un matematico persiano – Al-Khuwarizmi – vissuto nel nono secolo d.c. ( Algoritmi de numero Indorum – versione latina, trattato sull’algebra dei numeri arabo-indiani)

Esempio – prelevo contanti dal bancomat, macro operazioni

  1. Inserimento della tessera nell’apposito macchinario
  2. Inserimento del codice segreto
  3. Scegli importo 4 Scelta operazione 4.1 Se l’operazione è possibile allora esegui l’operazione Altrimenti 4.2 Visualizza messaggio di errore
  4. Conclusione
  5. Prelievo tessera
  6. Prelievo contanti

Algoritmo - definizione rigorosa

Sequenza ordinata finita di passi, ripetibili e non

ambigui, che se eseguita con determinati dati in

ingresso (input) produce in uscita(output) dei

risultati ovvero la soluzione di una classe di

problemi

dati algoritmo risultati

Soluzione ad una classe di problemi

Proprietà di un algoritmo

 Finitezza - deve portare alla soluzione in un

numero finito di passi

 Generalità - per classi di problemi

 Ripetitività - con gli stessi dati deve fornire gli

stessi risultati

 Determinismo o Non ambiguità – non dipende

dall’esecutore, ossia le azioni sono non ambigue

e se eseguite con gli stessi dati da persone

diverse si ottengono sempre gli stessi risultati

Istruzioni = azioni+dati oggettivi

 Le istruzioni sono composte da due parti:  azione - descrizione delle operazioni  dati - descrizione degli oggetti manipolati dalle operazioni (dati oggettivi)  esempio  Inserisci [azione] la tessera [dato]  digitare [azione] codice segreto [dato]  selezionare [azione] importo [dato]  vi sono istruzioni zerarie, unarie, binarie, ternarie  start  inizializza A  metti A in B  somma A e B in C

Rappresentazione logica degli algoritmi:

due tecniche

 pseudocodifica (o pseudocodice)

 professionale

 verbi di ”esecuzione” (effetto osservabile)  condizioni  iterazioni

 diagramma a blocchi

 utile a scopi dimostrativi

 indica un flusso di istruzioni ovvero la sequenza dei passi da eseguire  basato su simboli grafici  ogni simbolo corrisponde a un costrutto

 le due modalità sono semanticamente equivalenti

Pseudocodifica

 Descrive l’algoritmo con il linguaggio

naturale semplificato al fine di togliere le

ambiguità

 La descrizione mediante la pseudocodifica

si suddivide in due parti:

 dichiarazione delle variabili

 dichiarazione delle azioni

Pseudocodifica - esempio

Inizio

Inizializza MAX a 0

Inizializza N1 a 0

Leggi N

Finché N1 != 999

Se N1 > MAX allora

Assegna N1 a MAX

Leggi N

Stampa MAX

Fine

I diagrammi a blocchi – (3/6)

Istruzioni di inizio e di fine

inizio fine

Rappresenta il flusso (l'ordine) del diagramma

I diagrammi a blocchi – (4/6)

istruzione operativa ( effettiva)

Rappresenta una elaborazione

Esempi:

calcola (^) archivia

I diagrammi a blocchi – (5/6)

istruzioni di controllo

condizione

vero falso

I diagrammi a blocchi – (6/6)

istruzione di input/output

Rappresenta un'operazione di input/output. Esempi:

scrivi leggi