Che materia stai cercando?

Appunti lezioni 10 21 - seguito della prima parte Appunti scolastici Premium

Appunti di tecnologie informatiche er la comunicazione basati su appunti personali del publisher presi alle lezioni del prof. Zeni dell’università degli Studi di Trento - Unitn, facoltà di lettere e filosofia, Corso di laurea in lingue moderne. Scarica il file in formato PDF!

Esame di Tecnologie informatiche per la comunicazione docente Prof. N. Zeni

Anteprima

ESTRATTO DOCUMENTO

- Malware: Virus (di programma in programma)

Worm (si replicano sulla rete e causano problemi di prestazione – occupano memoria)

Trojan horse (vengono veicolati attraverso programmi comuni)

Ramsonware (virus che criptano i dati in maniera molto veloce, l'utente riceve una mail dal

gestore del ramsonware per avere di ritorno i suoi dati

- Spyware (sniffer) – vengono utilizzati per vedere cosa passa sulla rete, di solito le informazioni che passano

sulla rete non sono codificate e qualcuno può sentire le informazioni

- Phishing (via email) – meccanismi che tentano di carpire dati personali

- Denial of service (sovraccarico) – programmi che a intervalli brevi bombardano di richieste un server web, il

server web non riesce a soddisfare le richieste e si blocca

- Spam (sovraccarico) – disturba l'utente bombardandolo di mail irrilevanti.

Contromisure

- Firewall= anteporre tra il pc e la rete esterna una parete (software o hardware)

- Proxy server= come il firewall, ma memorizza anche tutte le informazioni più utilizzate in locale

- Filtri anti Spam= filtri molto complicati e costosi, devono verificare tutta la posta in entrata e in uscita

- Antivirus software= proteggono da eventuali virus che circolano sulla rete

- CERT= ufficio con delle persone fisiche che gestiscono tutti gli incidenti informatici

- HTTPS= cifratura dei dati che passano sulla rete (S=sicure)

- Doppia chiave di cifratura= chiave pubblica-chiave privata

Tutti i dati vengono cifrati con un codice pubblico e inviati alla banca

La banca ha la chiave privata per decifrare quei dati (solo la banca la possiede)

Questo modo non è esente da eventuali intrusioni, quindi è necessario utilizzare dei certificati rilasciati da una

società. Nel certificato è inserita la chiave pubblica e chi la possiede.

Controversie: Apple ha rilasciato dei certificati e si rifiuta di dare la chiave pubblica agli USA che vorrebbero

controllare i dati. 27.04.17

I motori di ricerca partono da un sito web significativo, poi iniziano ad esplorare tutti i link a cui puntano quei

siti , però è pur sempre un'esplorazione superficiale (punta dell'iceberg)

SURFACE WEB= siti esplorati (minima parte dei siti

disponibili)

DEEP WEB= nuovi siti che vengono creati a livello

globale-siti che vengono creati e distrutti

-siti privati

-siti con contenuti dinamici

-pagine non collegate a nessun altra pagina

-pagine SPA (contengono programmi)

-contenuti multimediali

-contenuti illegali

DARK WEB= siti che non sono raggiungibili attraverso le connessioni tradizionali, servono dei client appositi.

-contenuti protetti per questioni di privacy – connessione anonima attraverso un canale virtuale

-proteggere dissidenti da rappresaglie politiche

-diffondere notizie di carattere riservato

-compiere crimini informatici

-vendita di prodotti illegali su mercati illegali

-condivisione di file (legali e non)

Web 2.0

Software open source → controllo sociale del software

Web 2.0 → utenti che interagiscono e collaborano via social-media

Social bookmarking: catalogazione dei contenuti via social tagging (utilizzati dai motori di ricerca)

Sistemi di raccomandazioni (voti, recensioni), da word of mouth a word of mouse

Problemi:

Trade-off “Fiducia vs privacy” → raccomandazioni anonime non sono fidate, raccomandazioni non anonime=

perdita della privacy

circolazione → ciò che è famoso, lo diventa ancora di più.

Si può controllare i contenuti diffusi sulla rete (Wikipedia consente la collaborazione libera tra gli utenti che

vogliono aggiornare i contenuti), ma si corre il rischio di fenomeni di vandalismo (trolling).

→ controllo “regolamento” dei contenuti sui social: censuratori.

ALGORITMI

Algoritmi= insieme delle discipline che analizzano il trattamento automatico (codifica, elaborazione e

trasmissione) dell'informazione.

Il software consiste in un insieme strutturato di istruzioni, procedure, regole, documentazioni e programmi

espressi in bit di informazione.

Il software è la rappresentazione formale di un algoritmo ed è progettato per essere eseguita da un computer.

I linguaggi di codifica, che possono avere diversi livelli di astrazione, vanno dal linguaggio macchina ai

cosiddetti linguaggi di programmazione di alto livello.

Tramite un elaboratore si possono risolvere problemi di varia natura.

Il problema deve essere formulato in modo opportuno, perché sia possibile utilizzare un elaboratore per la sua

soluzione.

L'analisi e la programmazione ricomprendono l'insieme delle attività preliminari atte a risolvere problemi

utilizzando un elaboratore.

Scopo dell’analisi è definire un algoritmo

Scopo della programmazione è definire un programma

Bisogna individuare un procedimento che permetta di arrivare al risultato partendo dai dati.

Individuare un procedimento che permetta di arrivare al risultato partendo dai dati.

Un algoritmo è un metodo per la soluzione di un problema adatto ad essere implementato sotto forma di

programma

Dati in ingresso Elaborazione Dati in uscita

Risolvere problemi richiede: Diversi problemi= diversi algoritmi

-definizione di un algoritmo Stesso problema= diversi algoritmi

-esecutore

Per definire un algoritmo è necessario:

effettuare un'attenta analisi del problema

• individuare i possibili passi risolutivi

• precisare i dati che si vogliono avere in uscita

• definire dettagliatamente le operazioni che portano alla soluzione del problema

Spesso è conveniente suddividere il problema in piccoli sottoproblemi (divide-et-impera).

Caratteristiche di un algoritmo: procedura generale, finita, non ambigua ed eseguibile che lavora su dati in

ingresso fornendo alcuni dati d'uscita.

1. generale= il metodo deve risolvere una classe di problemi e non solo un singolo problema

2. finita= le istruzioni che la compongono ed il numero di volte che ogni azione deve essere eseguita

devono essere finiti (impossibile creare un algoritmo che identifichi l'insieme dei numeri interi – infinito)

3. non ambigua= ogni istruzione deve essere definita in modo preciso ed univoco, senza alcuna ambiguità

sul significato dell'operazione

4. eseguibile= deve esistere un agente di calcolo in grado di eseguire ogni istruzione in un tempo finito

L'algoritmo deve portare ad una soluzione corretta: perviene alla soluzione del problema dato.

L'algoritmo deve arrivare alla soluzione del problema in maniera efficiente: modo migliore e più veloce possibile.

Si parla di algoritmi deterministici: le istruzioni presenti in un algoritmo devono essere definite senza ambiguità

e deve sempre giungere a medesimi risultati indipendentemente dall'esecutore.

Esistono algoritmi non deterministici: contiene almeno un'istruzione che ammette diversi passi successivi: può

produrre output diversi con gli stessi input, compiendo diversi path di esecuzione.

Processo= sequenza di azioni atte ad eseguire un algoritmo

Procedura risolutiva= algoritmo – specifica come ottenere il risultato finale mediante un elenco di istruzioni

Esecuzione= materiale delle azioni volte a raggiungere un risultato finale, affidato ad un esecutore

Processo Algoritmo Esecuzione

Preparazione di un dolce Ricetta Disporre 250g di farina.....

Rappresentare un algoritmo:

è necessario far riferimento a dei formalismi che non introducono ambiguità

• devono essere universalmente riconosciuti ed interpretati allo stesso modo da un generico esecutore

• permettano di rappresentare in modo efficace un algoritmo

• costituiscano un utile strumento per poi poter essere codificato in linguaggio di programmazione

Un algoritmo può essere rappresentato graficamente(diagramma di flusso – diagramma a blocchi) o una

rappresentazione testuale (notazione lineare)

DIAGRAMMA A BLOCCHI: composto sempre da

-un blocco finale

-n. finito di blocchi di azione e/o di blocchi di scrittura/lettura

-n. finito di blocchi di controllo

-un blocco finale

Sintassi Semantica Descrizione

A=12 Inserisco i dati in input

Dati di Input/Output

B=5 ottengo un risultato in output

definisce il valore attuale di una

Assegnazione variabile, (resta inalterato fino

C=A+B alla successiva assegnazione

Condizione Condizione che deve verificarsi

C>18? Indica l'ordine con cui devono

Controllo di sequenza essere eseguite le istruzioni

Le variabili sono delle scatole in cui vengono inseriti dei valori, sono dei valori che vengono assegnati a queste

scatole. (a livello fisico sono delle celle di memoria che vengono chiamate con dei nomi definiti dall'utente)

03.05.17

L'esecutore di solito non sa cosa include un algoritmo, lo esegue e basta.

Calcolare il valore dell'ipotenusa dati i due cateti

c1=3 inizio

c2=4

i=? Input

c1, c2

2 2

i=√c1 +c

Output

i

fine

Pseudocodice

Es. Il “;” delimita le singole

Stampa: “inserire numero intero”; istruzioni

n=leggi numero intero;

se n/2= 0

stampa: “pari”;

Altrimenti

stampa: “dispari”

Algoritmi in pseudocodice

Sintassi Semantica Pseudocodice

A=12 Dati di Input/Output

B=5 Assegnazione

C=A+B If (voto>18)

Stampa (“Studente promosso con voto”+ voto)

C>18? Condizione else

Stampa (“Integrazione orale richiesta”);

Le condizioni possono essere nidificate If (non piove)

Se non piove: If (caldo)

Se è caldo Stampa: (“vai in piscina”)

allora vai in piscina Else

Altrimenti Stampa (“vai a fare trekking”)

vai a fare trekking Else

Altrimenti Stampa (“guarda un film in tv)

film in TV

Istruzioni che si ripetono

Stampare tutti i numeri da 1 a 1000 → si utilizzano i cicli (loop) cioè un insieme di istruzioni che devono essere

ripetute più volte consecutivamente.

In ogni ciclo ci sono tre elementi:

-inizializzazione: stato iniziale che viene modificato all'interno del ciclo

-test: confronta lo stato corrente con lo stato di terminazione del ciclo

-modifica: modifica lo stato ad ogni ripetizione

Le principali strutture itertive possono essere di tre tipi:

while = esegue una o più istruzioni fino a quando la condizione espressa è soddisfatta. La condizione

viene valutata prima di eseguire il ciclo (se è falsa, non si esegue il ciclo)

while (condizione)

istruzione1... Se la condizione è vera, si esegue il blocco

istruzione2... Se la condizione è falsa, si esce dal ciclo

….

n=1;

while (n<=1000)

Stampa (n);

n=n+1; Incrementazione del ciclo

Il ciclo proseguirà fino a quando 'n' non avrà raggiunto il numero 1001

Vendita di biglietti d'ingresso cinema XY. Posti in sala 250 posti, ogni biglietto 3D costa 10 euro. Calcolare

l'incasso totale inizio Incasso=0;

P=0; (

While (p<250)

incasso=0 incasso=incasso+10;

p=p+1;

p=0 Else Stampa (incasso);

falso

p<250 Stampa: incasso

vero fine

incasso=incasso+10

p=p+1

do while (effettua il controllo alla fine), se la variabile è già fuori ciclo, le istruzioni vengono

comunque eseguite

do n=1;

istruzione1 WHILE= pretest loop

do

while(condizione) DO/WHILE= posttest loop

Stampa (n);

n=n+1;

while (n<=1000)

Di solito il do/while si utilizza quando si aspetta un input dall'utente (casi particolari)

for (while scritto in maniera più concisa, si scrive tutto all'interno del 'for') si utilizza quando si conosce

a priori quanti sono gli elementi su cui devo iterare. Nel ciclo for l'inizializzazione viene valutata solo la prima

volta, poi viene valutata la condizione e si esegue la modifica sul contatore

for (inizializzazione, condizione e modifica)

Stampa i numeri da 1 a 1000

for (i=0; 1<=1000, i++)

Stampa (i);

Ricerca di un valore all'interno di un elenco

Dato un valore ordinato, trovare il valore che soddisfa la ricerca.

Ricerca sequenziale: partire dal primo elemento della lista e confrontarlo con il termine ricercato, proseguire

fintanto si trova il risultato.

Es. Dato un elenco di nomi, trovare il nome Mevio

Si parte dal primo nome nell'elenco fino a quando non si trova il nome ricercato

Antelao Caio Clodomiro Giuseppe Mevio Mirco Tizio

ricerca binaria

Ricerca sequenziale= molto dispendiosa → soluzione= : divide-et-impera

-Parte da subito dividendo l'elenco in 2 parti uguali (metà)

-Il primo elemento della metà è maggiore o minore dell'elemento

cercato?

-Ci si sposta sulla metà che contiene l'elemento

-trovo l'elemento ricercato. 04.05.17

Strutture ricorsive: richiamano se stesse (ricerca binaria) – l'algoritmo viene eseguito un numero n di volte e

viene eseguito in un numero sempre minore, fino a che non esaurisco la possibilità di divisione.

Insieme di istruzioni= Ricerca di un elemento data una lista d'ingresso

RicercaElemento(lista)

1. se lunghezza(lista)==0

RICERCA FINITA, NESSUN ELEMENTO TROVATO

2. Trovo l'elemento centrale della lista (suddivido in 2 parti

3. se l'elemento centrale ==elemento cercato → stampa(elemento centrale) STOP;

4. se elemento minore o maggiore al valore cercato:

5. esegui ricercaElemento(lista A)nella prima parte della sotto lista

6. esegui ricercaElemento(lista B)nella seconda parte della sotto lista

Vantaggi:

eleganza dell'algoritmo

• permettono di scrivere poche linee di codice per risolvere un problema anche molto complesso

Svantaggi:

prestazioni: le chiamate ricorsive ad un medesimo blocco di istruzioni sono lente e dispendiose

• occupano molte risorse di sistema perchè ogni chiamata lascia la precedente in sospeso e le risorse

vengono nuovamente allocate tante volte quante sono le chiamate complessive

→ EFFICIENZA DEGLI ALGORITMI

Valutare l'efficienza di un algoritmo significa capire quanto tempo impiega per arrivare al risultato desiderato e

quanta memoria occupa. Per valutare un algoritmo si valutano il caso peggiore(se ho 30.000 elementi, ci sono

30.000 operazioni), il caso medio(se ho 30.000 elementi, ci sono 15.000 operazioni) e il caso peggiore(poco

tempo). Ricerca binaria:se ho 30.000 elementi, nel caso peggiore ci sono solo 15 operazioni → si utilizza la

formula log (n) per trovare il numero di operazioni.

2

Quando si calcola l'efficienza di un algoritmo, si considera sempre il caso peggiore, si esprime usando la

Θ

notazione (seguito dal valore).

Linguaggi di programmazione

Classificazione storica

I^ generazione: ISTRUZIONE MACCHINA – stored program memorizzato come sequenze di bit

→ vantaggi: efficiente, veloce, potente

→ svantaggi: pesante/noioso, soggetto ad errori, difficile da comprendere/leggere/manipolare

Conversione tra linguaggio mnemonico in istruzioni macchina via ASSEMBLER

II^ generazione: LINGUAGGIO MACCHINA CON NOTAZIONE MNEMONICA

(LINGUAGGI ASSEMBLY) – operazioni denominate con sigle/abbreviazioni (load=lod, move=mov,...)

Mov R5 R6 (muovi da R5 a R6)

→ vantaggi: rapidità di scrittura, leggibilità migliore, efficienza

→ svantaggi: linguaggio dipendente dal tipo di processore (ogni processore, ha il proprio modo di

riscrittura delle operazioni), il programmatore deve focalizzarsi sui dettagli

Problema= programma legato alla macchina

III^ generazione: linguaggi di programmazione con insieme di elementi di programmazione(primitive= simili

alle istruzioni di pseudo-codice) di alto livello e indipendenti dalla CPU. C'è bisogno di un TRANSLATOR

-compilatore → produce un file eseguibile memorizzato come programma eseguibile su disco (.exe)

-interprete → traduce le istruzioni di alto livello direttamente in istruzioni eseguibili. Le istruzioni

vengono tradotte in tempo reale senza essere memorizzate in un file eseguibile (ogni volta che ho bisogno di

quel programma, vengono interpretate) approccio dispendioso a livello di tempo.

IV^ generazione: linguaggi di alto livello – sviluppati contestualmente ai linguaggi di III^ generazione, hanno

le stesse caratteristiche dei precedenti

Paradigmi

1.imperativi (procedurale): una sequenza di comandi che manipolano i dati per produrre il risultato desiderato

Il programmatore descrive l'insieme delle operazioni elementari necessarie per arrivare al risultato

2.dichiarativi: descrizione del problema da risolvere applicando metodi risolutivi già predisposti (librerie)

Il programmatore descrive come risolvere il problema partendo da un numero di elementi già definiti (SQL)

Limiti: le primitive sono già predefinite e sono specifiche per risolvere una determinata classe di problemi

→Tentativo di superamento di questi limiti= programmazione logica

3.funzionale: applica la logica delle funzioni per risolvere i problemi (suddivisione in sottoproblemi)

Il problema è visto come una funzione che accetta dei dati in ingresso e restituisce dei risultati, se il

problema è complesso, si divide il problema in più funzioni.

Discreto successo: eleganti e funzionali

4.ad oggetti: il problema è descritto in termine di oggetti con proprietà e funzioni proprie di ogni oggetto

Il programma da scrivere è visto come un insieme di oggetti su cui effettuare delle manipolazioni per

raggiungere il risultato desiderato

Programma=insieme di istruzioni organizzate

- Dichiarazione: in cui vengono dichiarate le variabili, i tipi di dati da utilizzare, le costanti per

memorizzare i dati del programma

- Esecuzioni: istruzioni di assegnamento, controllo(condizione) e definizione delle funzioni

Istruzioni (=raggruppamento diuna serie di funzioni che mi permettono di esprimere con un solo

nome ciò che calcola quella funzione)

- (Commenti: specificano o aumentano la leggibilità di quelle istruzioni)


PAGINE

16

PESO

320.25 KB

PUBBLICATO

7 mesi fa


DETTAGLI
Corso di laurea: Corso di laurea in lingue moderne
SSD:
Docente: Zeni Nicola
Università: Trento - Unitn
A.A.: 2018-2019

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher carlottabellin1995 di informazioni apprese con la frequenza delle lezioni di Tecnologie informatiche per la comunicazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Trento - Unitn o del prof Zeni Nicola.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Tecnologie informatiche per la comunicazione

Appunti lezioni 1/10
Appunto