Informatica Generale - PowerPoint PPT Presentation

About This Presentation
Title:

Informatica Generale

Description:

Informatica Generale Marzia Buscemi buscemi_at_di.unipi.it Ricevimento: Gioved ore 16.00-18.00, Dipartimento di Informatica, stanza 306-PS o per posta elettronica – PowerPoint PPT presentation

Number of Views:80
Avg rating:3.0/5.0
Slides: 35
Provided by: SusannaP2
Category:

less

Transcript and Presenter's Notes

Title: Informatica Generale


1
Informatica Generale
Marzia Buscemi buscemi_at_di.unipi.it Riceviment
o Giovedì ore 16.00-18.00, Dipartimento di
Informatica, stanza 306-PS o per posta
elettronica Pagina web del corso

http//www.di.unipi.it/buscemi/IG07.htm (sommari
o delle lezioni in fondo alla pagina)
2
Nella scorsa lezione abbiamo visto
  • esempi di algoritmi per risolvere problemi
    (numerici e non numerici)
  • come dividere un problema in sotto-problemi e
    quindi trovare un algoritmi componendo
    sotto-algoritmi
  • ... usando generalmente gli array

3
Oggi..
  • Completeremo largomento della scorsa lezione
    trattando unaltra struttura dati i record
  • Vedremo due diversi paradigmi di programmazione
    (imperativa, orientata agli oggetti)
  • Parleremo di ipertesti e vedremo un linguaggio
    ipertestuale (lHTML)

4
Record 1
  • Gli array sono sequenze di valori dello stesso
    tipo
  • interi, reali
  • caratteri (a,b, )
  • sequenze di caratteri (dette stringhe, gatto ,
    oggi piove ! )
  • I record sono aggregati di variabili di tipo
    diverso e permettono di definire nuovi tipi

5
Record 2
  • A cosa possono servire...
  • A rappresentare le schede della biblioteca

stringa
Nome Autore
stringa
Cognome Autore
Titolo
stringa
Scaffale
intero
Posizione
intero
altre informazioni ..
Campi del record
6
Record 3
  • Il tipo record scheda espresso in linguaggio C
  • struct scheda
  • char nome100 //stringa di al più
  • //100 caratteri
  • char cognome100
  • char titolo300
  • int scaffale
  • int posizione

7
Record 4
  • //Come dichiaro che voglio
  • //una variabile di tipo scheda
  • struct scheda nuovo_libro
  • // come assegno valori ai diversi campi
  • nuovo_libro.nome Jorge"
  • nuovo_libro.cognome Amado"
  • nuovo_libro.titolo Dona Flor e i suoi due
    mariti"
  • nuovo_libro.scaffale 8
  • nuovo_libro.posizione 356

8
Record 5
  • Si possono definire array di record
  • questo può servire, ad esempio a definire
    linsieme delle schede di una biblioteca
  • struct scheda archivio100000
  • possiamo quindi formalizzare un semplice
    algoritmo per la ricerca in uno schedario
  • Importante archivio2 è il record con indice 2
    dellarray archivio100000, mentre
    archivio2.titolo è il campo titolo del libro
    che corrisponde al record archivio2.

9
Esempio ricerca in un archivio
  • La biblioteca
  • Libri disposti sugli scaffali
  • La posizione di ogni libro è fissata dalle due
    coordinate (S,P) dove
  • S è il numero dello scaffale dove si trova il
    libro
  • P è la posizione allinterno dello scaffale
  • La biblioteca ha uno schedario con una scheda per
    ogni libro. Ogni scheda contiene, nellordine
  • cognome e nome dellautore
  • titolo del libro
  • numero scaffale (S) e posizione nello scaffale (P)

10
Esempio ricerca in un archivio 2
  • La biblioteca (cont.)
  • Le schede sono ordinate in ordine alfabetico del
    campo autore
  • Problema
  • Vogliamo specificare un algoritmo che spieghi
    allutente della biblioteca come trovare un libro
    cercato supponendo di sapere Autore e Titolo

11
Esempio ricerca in un archivio 3
  • Un primo algoritmo per il prestito
  • 1. Decidi il libro da richiedere
  • 2. Cerca la scheda nello schedario
  • 3. Trascrivi la posizione (S,P)
  • 4. Accedi alla posizione (S,P)
  • 5. Preleva il libro e compila la scheda di
    prestito
  • Le operazioni elementari in questo caso sono
    piuttosto complesse

12
Esempio ricerca in un archivio 4
  • e se non so come si effettua la ricerca nello
    schedario ?
  • Tutte le operazioni specificate devono essere
    elementari per chi esegue lalgoritmo.
  • Se non lo sono è possibile spiegarle a parte per
    mezzo di un sotto-algoritmo

13
Esempio ricerca in un archivio 5
  • Un sotto-algoritmo per cercare nello schedario
  • 1. Apri il classificatore
  • 2. Prendi la prima scheda
  • 3. Confronta il campo autore e titolo con quelli
    cercati
  • 4. Se sono uguali, allora la ricerca è terminata,
    altrimenti prendi la scheda successiva e vai al
    passo 3
  • 5. Se le schede sono esaurite, allora il libro
    cercato non esiste.

14
Input struct scheda archivio
Ricerca scheda (ricerca)
Inizio
Leggi Nome, Cognome e Titolo del libro cercato
Strutture dati struct scheda archivio //
larray di schede
I 0
I lt 100000 ?
Si
No
Fine
Non lho trovata!
archivioI.nome Nome archivioI.cognome
Cognome archivioI.titolo Titolo ?
Output la scheda cercata e un valore (si/no)
che dice se cè
No
I I 1
Fine
Si
Lho trovata!
15
Esercizi proposti
  • Dare il diagramma per il sottoalgoritmo stampa_Na
  • Trovare un algoritmo (e fornire il diagramma di
    flusso) per i seguenti problemi
  • trovare la somma dei primi K numeri (K letto in
    input)
  • trovare la media di una sequenza di numeri
    positivi (la sequenza viene letta dallesterno e
    si interrompe al primo numero negativo letto)
  • trovare il max dei numeri posti sulla diagonale
    di una matrice MM
  • Date in input N schede di un archivio (vedi
    esempio), stampare il titolo e la collocazione di
    tutte le schede che hanno il campo autore
    Umberto Eco.

16
Paradigmi di programmazione
  • Programmazione imperativa (es. Linguaggio C)
  • Programmazione dichiarativa (funzionale, logica
    es. ML, Lisp, Prolog)
  • Programmazione orientata agli oggetti (Java)

17
La programmazione imperativa
  • Obiettivo efficienza nella progettazione e
    scrittura dellalgoritmo
  • Caratteristiche
  • attinenza al modello architetturale di Von
    Neumann
  • è conforme ai principi della programmazione
    strutturata (usa strutture di controllo)
  • ma permette di manipolare i dati facendo
    riferimento alla struttura fisica del calcolatore
    (le istruzioni sono assegnamenti da dare alle
    locazioni di memoria)

18
La programmazione imperativa.Esempio funzione
max in C 1
Inizio
Leggi x e y
d x - y
No
d gt 0 ?
Si
Scrivi max è y
Scrivi max è x
Fine
19
La programmazione imperativa.Esempio funzione
max in C 2
  • main() / calcola max /
  • int x, y, d //def. Delle variabili
  • scanf ("d d, x, y) //lettura x,y
  • d x - y
  • if (d gt 0) //scrittura risultati
  • printf (il max è d, x)
  • else
  • printf (il max è d, y)
  • return //terminazione

questo programma stampa il risultato ma non
restituisce nessun valore in output
20
La programmazione imperativa.Esempio funzione
max_N in C 1
  • main() / calcola max_N /
  • int m, i, a, b
  • i 2
  • scanf ("d d, a, b)
  • m max(a,b)
  • while (i lt N) scanf ("d , a)
  • m max(a,m)
  • printf (il max è d, m)
  • return

21
La programmazione imperativa.Esempio funzione
max_N in C 2
  • int max(int x, int y)
  • / sottoprogramma che calcola max /
  • int d
  • d x - y
  • if (d gt 0) return x
  • else return y
  • notare che questo programma
  • è una variante del programma
  • visto nella penultima slide che
  • prende in input x e y, piuttosto che leggerli da
    tastiera
  • restitusce in output il risultato, piuttosto che
    stamparlo

22
Leggi N
I 2
Inizio
Leggi i primi due numeri x1 e x2 e memorizzali
nelle variabili a e b
m max(a,b)
I lt N ?
Si
No
Scrivi max è m
I I 1
DF per il problema del massimo di N numeri
Fine
Leggi il nuovo numero in a
m max(a,m)
Supponiamo N almeno 2
23
La programmazione imperativa.Esempio funzione
ordina_Na in C
  • main() / calcola max_N /
  • int m, i, t, XN, N, lung
  • leggi_Na (N, X)
  • m X0
  • lung N
  • while (N gt 1) max_Na(X,N,m,i)
  • t XN
  • XN Xi
  • Xi t
  • N N - 1
  • stampa_Na (X,lung)
  • return

24
La programmazione orientata agli oggetti
  • Enfasi semplicità di programmazione e riuso di
    sottoprogrammi esistenti (modularità)
  • Concetti base
  • classe entità astratta caratterizzata da un
    insieme di proprietà che definiscono sia le
    strutture dati della classe (attributi) sia le
    sue funzionalità (metodi)
  • oggetti istanze delle classi descritte da valori
    associati alle diverse proprietà definite per la
    classe
  • Un programma in POO è costituito da oggetti che
    interagiscono tra loro
  • La POO è particolarmente adatta per programmare
    interfacce grafiche

25
La programmazione orientata agli oggetti. Esempio
in Java 1
  • Java è un linguaggio di programmazione OO. Java
    fornisce moltissime classi raccolte in packages.
  • Es. consideriamo la classe java.awt.Rectangle che
    definisce degli oggetti che rappresentano
    rettangoli. Ogni rettangolo (istanza della
    classe) ha quattro variabili, che rappresentano
    la dimensione del rettangolo (height e width) e
    la posizione nel piano del suo vertice superiore
    sinistro (x e y).

26
La programmazione orientata agli oggetti. Esempio
in Java 2

Es. Consideriamo tre rettangoli, ognuno
rappresentato da una scatola avente in alto il
nome della classe, e sotto le variabili.
Rappresentazione grafica dei tre oggetti
27
La programmazione orientata agli oggetti. Esempio
in Java 3
  • Vogliamo scrivere un programma che
  • Crea un rettangolo di coordinate x 5 e y 10 e
    dimensioni height 20 e width 30
  • Stampa lo stato del rettangolo
  • Sposta il rettangolo di 15 unità lungo l'asse x e
    di 25 lungo l'asse y
  • Stampa il nuovo stato del rettangolo.


28
La programmazione orientata agli oggetti. Esempio
in Java 4
  • Consultando la documentazione della classe
    Rectangle vediamo come costruire un rettangolo
    con i valori desiderati per le variabili, e che
    esiste un metodo d'istanza translate. Il
    programma risultante è il seguente
  • import java.awt.Rectangle
  • public class MoveRectangle      
  • public static void main(String args)        
  • Rectangle rect
  • rect  new Rectangle(5, 10, 20, 30)
  • System.out.println(rect)         
  • rect.translate(15, 25)         
  • System.out.println(rect)    

29
La programmazione orientata agli oggetti. Esempio
in Java 5
  • Vediamo questo semplice esempio in dettaglio
  • Dichiariamo di voler usare la classe Rectangle
    del package java.awt
  • import java.awt.Rectangle
  • ...
  • Dichiariamo una variabile rect di tipo Rectangle
    e le assegnamo un nuovo oggetto con i valori
    desiderati per le variabili d'istanza
  • ... public class MoveRectangle 
         public static void main(String args) 
            
  • Rectangle rect       
    rect  new Rectangle(5, 10, 20, 30)
  • ...
  • Stampiamo lo stato del rettangolo
  • ...         
  • System.out.println(rect)
  • ...

nome del programma
tipo dellinput
crea un nuovo oggetto
30
La programmazione orientata agli oggetti. Esempio
in Java 6
  • Invochiamo il metodo d'istanza translate
    sull'oggetto rect per spostarlo della quantità
    voluta
  • ...         
  • rect.translate(15, 25)
  • ...
  • Infine stampiamo lo stato finale
  • ...         
  • System.out.println(rect)   
  • Output java.awt.Rectanglex20,y35,width20,heig
    ht30
  • Importante per invocare un metodo d'istanza su
    di un oggetto si scrive ltoggettogt.ltmetodogt(ltparame
    trigt)

31
Linguaggi Ipertestuali
  • Ipertesto documento la cui consultazione è non
    lineare, cioè le sue parti (paragrafi, capitoli,
    etc.) sono organizzate non semplicemente in
    successione, ma secondo una struttura più
    complessa
  • Ogni parte del documento può contenere dei punti
    di aggancio (link) che rimandano ad altre parti
  • Es. ciascuna pagina Web, lintero World Wide Web
    (le pagine possono risiedere su siti diversi)
  • I documenti ipertestuali contengono sia
    informazione (dati) sia meta-informazione
    (organizzazione dei dati)

32
Linguaggi Ipertestuali HTML 1
  • HTML (Hyper Text Mark-up Language) è un
    linguaggio usato per descrivere ipertesti.
  • Non è un linguaggio di programmazione, ma un
    linguaggio di markup, cioè descrive il contenuto
    (testuale e non) delle pagine Web per mezzo di
    opportuni segnaposto.
  • Elementi
  • sono gli atomi principali di della sintassi di
    documenti HTML (strutture del linguaggio)
  • Ogni elemento è racchiuso da segnalini (tag), uno
    di apertura e uno di chiusura.
  • Es. lthtmlgt
  • ltheadgt
  • lttitlegt Nome del documento lt/titlegt
  • lt/headgt
  • ltbodygt
  • Testo visibile lt/bodygt
  • lt/bodygt
  • lt/htmlgt

33
Linguaggi Ipertestuali HTML (2)
  • Allinterno di ltbodygt lt/bodygt è possibile
    inserire mediante tag
  • intestazioni di varie dimensioni(lth1gt, lth2gt,
    etc.)
  • elementi di testo (paragrafi, linee orizzontali)
  • stili (grassetto, corsivo, etc.)
  • link ad altre pagine e a immagini
  • liste puntate e numerate
  • tabelle
  • ...
  • Manuali e esempi on line su HTML
    http//www.w3schools.com/html/default.asp

34
Scrivere documenti in HTML
  • I documenti in HTML possono essere editati come
    semplici documenti (con estensione .htm o .html)
    o tramite dei programmi
  • Nvu è un editor html molto semplice da usare, che
    permette di creare pagine web senza conoscere il
    linguaggio html, basta saper formattare le pagine
  • NVU è open source e gratutito e si può scaricare
    da
  • http//www.nvu.com
Write a Comment
User Comments (0)
About PowerShow.com