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 per tutti, Sintesi del corso di Informatica

lezioni informatica per tutti basi

Tipologia: Sintesi del corso

2018/2019

Caricato il 09/09/2019

nome-nome
nome-nome 🇮🇹

4.5

(11)

2 documenti

1 / 34

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
1
Fondamenti di Informatica 1
Presentazione del Corso
SETTIMANA 1
2
Informazioni importanti
Sono ammessi a seguire questo corso
Gli studenti iscritti al primo anno delle lauree area Ing.
Dell’Informazione
il cui numero di matricola termina con le cifre 4 o 5
Gli studenti iscritti al secondo o terzo anno
il cui numero di matricola termina con le cifre 4 o 5
che ne facciano richiesta mediante iscrizione tramite le
bacheche elettroniche
NON sono ammessi a seguire questo corso
Tutti gli studenti che non soddisfano i requisiti
precedenti
3
Informazioni importanti
Chi non possiede ancora un numero di matricola ed
è iscritto a Ing. dell’Inf. e Telecomunicazioni
È provvisoriamente ammesso a seguire questo corso
Confluirà nel corso di appartenenza non appena avrà
un numero di matricola
Chi possiede un numero di matricola la cui
penultima cifra è 0,1,2 ed è iscritto ad Ingegneria
Informatica
Deve seguire il corso del Prof. Dalpasso (canale A, in
teledidattica)
4
Docente
Federico Avanzini
DEI - Dip. di Ingegneria dell’Informazione
Via Gradenigo 6/A (Padova), edificio principale (DEI/G),
quarto piano, ufficio 405a
Ricevimento studenti
solo su appuntamento
Il metodo più efficace di interazione diretta con il docente
è la posta elettronica
Telefono: 049 827 7942
Attenzione
I recapiti cambieranno presto
Sono in fase di trasloco...
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22

Anteprima parziale del testo

Scarica Informatica per tutti e più Sintesi del corso in PDF di Informatica solo su Docsity!

1

Fondamenti di Informatica 1

Presentazione del Corso

SETTIMANA 1

2

Informazioni importanti

Sono ammessi a seguire questo corso

Gli studenti iscritti al primo anno delle lauree area Ing.

Dell’Informazione

  • il cui numero di matricola termina con le cifre 4 o 5

Gli studenti iscritti al secondo o terzo anno

  • il cui numero di matricola termina con le cifre 4 o 5
  • che ne facciano richiesta mediante iscrizione tramite le

bacheche elettroniche

NON sono ammessi a seguire questo corso

Tutti gli studenti che non soddisfano i requisiti

precedenti

Informazioni importanti

Chi non possiede ancora un numero di matricola ed

è iscritto a Ing. dell’Inf. e Telecomunicazioni

È provvisoriamente ammesso a seguire questo corso

Confluirà nel corso di appartenenza non appena avrà

un numero di matricola

Chi possiede un numero di matricola la cui

penultima cifra è 0,1,2 ed è iscritto ad Ingegneria

Informatica

Deve seguire il corso del Prof. Dalpasso (canale A, in

teledidattica)

Docente

Federico Avanzini

 DEI Dip. di Ingegneria dell’Informazione

Via Gradenigo 6/A ( Padova ), edificio principale (DEI/G),

quarto piano, ufficio 405a

 Ricevimento studenti

solo su appuntamento

 Il metodo più efficace di interazione diretta con il docente

è la posta elettronica

[email protected]

 Telefono: 049 827 7942

Attenzione

I recapiti cambieranno presto

Sono in fase di trasloco...

5

Sito Web del Corso

Tutte le informazioni relative al Corso si

trovano nel sito

http://www.dei.unipd.it/~avanzini/fi

Sul sito si troverà anche, settimana per

settimana, tutto il materiale didattico

copia di tutte le presentazioni

esercitazioni proposte per il laboratorio

prove di auto valutazione

6

Altri Siti

Tutte le informazioni relative alla Aula Didattica

Taliercio si trovano nel sito

http://www.adt.unipd.it/

Informazioni ufficiali da parte del docente (appelli,

iscrizioni, avvisi urgenti, ecc.) si trovano sulle

Bacheche elettroniche

http://sis.dei.unipd.it

Altre informazioni si trovano nel sito della

Facoltà di Ingegneria

http://www.ing.unipd.it/

Frequenza alle lezioni

Il regolamento didattico dice che la frequenza

alle lezioni è obbligatoria

Lascia però libero ogni docente di decidere

cosa fare con gli studenti che non frequentano

  • Si può anche impedire loro di fare l’esame

Per questo corso, il docente ha deciso che

non vengono presi provvedimenti nei

confronti degli studenti che non frequentano

La frequenza alle lezioni e alle esercitazioni in

laboratorio è VIVAMENTE CONSIGLIATA

Da un’analisi statistica, chi non frequenta fa

molta più fatica a superare l’esame

Obiettivi del Corso

 Il Corso ha l’obiettivo di

presentare le basi teoriche dell’informatica

proporre un approccio ingegneristico e progettuale

alla programmazione

fornire una visione professionale alla risoluzione dei

problemi

utilizzare concretamente le caratteristiche di

programmazione del linguaggio Java

13

Quanto bisogna studiare?

 Un credito = 25 ore di lavoro

 totale corso FI1 = 25 × 9 = 225 ore di lavoro

 in aula + laboratorio = 12 × 9 = 108 ore

 esempio: studio finale prima dell’esame = 27 ore

studio settimanale = 10 ore

 Lo studio settimanale comprende anche pratica al

calcolatore (OLTRE al laboratorio)

circa 5 ore di studio e 5 ore di pratica

14

Modalità d’esame

Sono previsti cinque appelli durante l'anno

accademico

Due appelli a dicembre/gennaio

Un appello a luglio

Due appelli a settembre

L’esame consiste in tre prove da sostenere nello

stesso appello

prova scritta, prova pratica, prova orale

Ulteriori dettagli sugli esami e le date delle prove si

possono consultare sul sito del corso

15

Statistiche sugli esami 2005/

Promossi all'esame/iscritti all'esame

Appello 1

  • aa2005 06: 45/114 =^ 39%
  • aa2006 07: 52/110 = 49%

Appello 2

  • aa2005 06: 24/65 = 37%
  • aa2006 07: 23/64 = 37%

Appello 3

  • aa2005 06:1/12 = 8%
  • aa2006 07: 3/19 = 15%

Appello 4

  • aa2005 06: 4/13 = 31%
  • aa2006 07: 2/11 = 18%

Appello 5

  • aa2005 06: 5/16 = 31%
  • aa2006 07: 9/19 = 49%

Promossi/iscritti al corso

  • aa2005 06: 79/160 = 50%
  • aa2006 07: 89/165 = 54%

16

Qualche consiglio (1)

A chi non ha mai avuto a che fare con computer,

programmazione, ecc.

Questo corso non ha prerequisiti , chiunque lo può

seguire con profitto

È fondamentale prendere subito confidenza con i ferri

del mestiere

  • Installare ed usare da subito l'ambiente di

programmazione java

  • Svolgere con regolarità gli esercizi proposti nei

laboratori

17

Qualche consiglio (2)

A chi ha già una solida esperienza di programmazione

Questo corso non ha lo scopo di formare dei

programmatori professionisti

  • Studieremo anche: ricorsione, algoritmi di ricerca ed

ordinamento, analisi della complessità di un algoritmo, tipi

di dati astratti

Attenzione quindi a non considerarvi promossi in

partenza!

18

Qualche consiglio (3)

A chi non è iscritto al corso di laurea in Ingegneria

Informatica

Non considerate questo corso come estraneo al vostro

indirizzo di studio

  • I contenuti del corso vi serviranno (si spera)
    • Nel prosieguo del vostro corso di studi
    • Per la vostra tesi di laurea
    • Nel mondo del lavoro

... Inoltre chi non supera l'esame di Fondamenti di

Informatica 1 non si laurea!

Presentazione del

Laboratorio Didattico

Avviso: primo laboratorio

Il primo laboratorio si terrà martedì 9 ottobre

Lezione a cura del dott. Roberto Valli su concetti

introduttivi. I contenuti della lezione sono disponibili sul

sito web dell’aula Taliercio

http://www.adt.unipd.it

Primi semplici esercizi da svolgere. Il contenuto

dell'esercitazione è disponibile sul sito del corso

http://www.dei.unipd.it/~avanzini/fi

Concetti introduttivi

(Capitolo 1)

26

Accenni ad argomenti

che verranno

approfonditi in seguito

Regole di sintassi Java

Note di cronaca

Legenda di alcuni simboli grafici

Errori frequenti

Consigli per la produttività

Suggerimenti per la qualità

Argomenti avanzati

Le prime domande

Cos'è l'informatica?

Cos’è un computer?

Cos’è un programma?

Cos’è la programmazione?

Cos’è un algoritmo?

Un po' di storia: lo sviluppo tecnologico

'600: dispositivi meccanici per effettuare in modo

automatico computazioni (Pascal, Leibniz)

'800: primi dispositivi meccanici “a programma”: telai

Jacquard, pianole, le macchine di Babbage

1896: Hollerith fonda la “Tabulating Machine Company”

(poi IBM) che produce sistemi meccanografici a schede

1930: prime macchine elettromeccaniche di grandi

dimensioni (Zuse in Germania, Mark 1 ad Harvard)

1946: ENIAC, elaboratore a valvole termoioniche e a

programma filato

1950: prime macchine a programma memorizzato (von

Neumann: ENIAC, IAS Princeton)

29

Un po' di storia: le macchine di Babbage

Babbage (1791 1871) crea i primi computer meccanici

Erano dei mostri meccanici

Erano concettualmente molto simili ai computer moderni

La macchina analitica (analytical engine)

È programmabile tramite

schede perforate

Usa un linguaggio di

programmazione

equivalente a quelli attuali

... non è mai stata realizzata

30

Un po' di storia: l'ENIAC

L’ENIAC (Electronic Numerical Integrator And Computer)

fu il primo computer elettronico, realizzato

all’università di Pennsylvania nel 1946

Occupava una grande stanza ed era costituito da

molti armadi con circa 18000 valvole (analoghe

ai transistor), parecchie delle quali si bruciavano

ogni giorno e dovevano essere sostituite

Veniva programmato collegando cavi su

appositi pannelli, simili a quelli dei centralini

telefonici, ed andava nuovamente programmato

in tal modo per ogni specifico problema

Un po' di storia: l'ENIAC Un po' di storia: l'ENIAC

 Il progetto fu finanziato dalla Marina statunitense per il

calcolo di tavole balistiche da usare per la stima della

traiettoria di un proiettile in funzione della resistenza del

vento, della velocità iniziale e delle condizioni

atmosferiche

 Questo problema richiedeva la soluzione numerica di

equazioni differenziali ( numerical integrator )

 Questi calcoli venivano precedentemente svolti da esseri

umani, detti computer , letteralmente “calcolatori”

(manuali...)

 Più tardi l’ENIAC venne usato per catalogare i dati del

servizio demografico statunitense

37

Turing, Church e la teoria della complessità

Tra le proposizioni decidibili – o funzioni

calcolabili – o problemi risolubili – alcune

sono più “facili” di altre

Esistono diverse classi di complessità,

corrispondenti al tempo necessario per

risolvere i problemi

Alcuni problemi non sono risolubili in pratica,

perchè possono essere risolti solo in tempi

immensi (miliardi di anni)

Alonzo Church

(1903 1995)

38

Chomsky e i linguaggi formali

Nel '900 linguisti e matematici cercano di

formulare un approccio strutturale allo

studio del linguaggio

Linguaggi formali: definiti da insiemi di

produzioni grammaticali che li generano

Noam Chomsky

(1928)

Chomsky identifica quattro tipi di linguaggi formali,

caratterizzati da diverse grammatiche

Universali, sensibili al contesto, liberi da contesto, regolari

Servono a classificare linguaggi informatici e automi

Shannon e la teoria dell'informazione

Pone basi teoriche per la progettazione di

circuiti digitali (reti logiche)

Costituiti da bit (binary digit), variabili che

assumono solamente i valori 0 e 1

Fonda la teoria dell'informazione

Problema di ricostruire in maniera

affidabile informazioni trasmesse da un

mittente e affette da rumore

Teoria alla base della costruzione di reti di

calcolatori

Claude Shannon

(1916 2001)

Cos’è un computer?

Cos'è un programma?

Cos’è la programmazione?

41

Cos’è un computer

 Un computer è una macchina che

memorizza dati (numeri, parole, immagini, suoni...)

interagisce con dispositivi (schermo, tastiera, mouse...)

esegue programmi

Ogni programma svolge una diversa funzione,

anche complessa

 impaginare testi o giocare a scacchi

 I programmi sono sequenze di istruzioni che il

computer esegue e di decisioni che il computer

prende per svolgere una certa attività

42

Cos’è un computer?

L’ elevatissimo numero di tali istruzioni presenti in un

programma e la loro esecuzione ad altissima

velocità garantisce l’illusione di una interazione fluida

che viene percepita dall’utente

Il computer, in conclusione, è una macchina

estremamente versatile e flessibile , caratteristiche

che gli sono conferite dai molteplici programmi che vi

possono essere eseguiti, ciascuno dei quali consente

di svolgere una determinata attività

Cos’è un programma?

 Nonostante i programmi siano molto sofisticati e svolgano

funzioni molto complesse, le istruzioni di cui sono

composti sono molto elementari, ad esempio

 estrarre un numero da una posizione della memoria

 sommare due numeri

 inviare la lettera A alla stampante

 accendere un punto rosso in una data posizione dello

schermo

 se un dato è negativo, proseguire il programma da una certa

istruzione anziché dalla successiva ( decisione )

Cos’è la programmazione?

Un programma descrive al computer, in estremo

dettaglio, la sequenza di passi necessari per svolgere

un particolare compito

L’attività di progettare e

realizzare un programma è

detta programmazione

In questo corso

imparerete a

programmare un

computer!

49

Cos’è un algoritmo?

 Si dice algoritmo la descrizione di un metodo di soluzione di

un problema che

sia eseguibile

sia priva di ambiguità

arrivi ad una conclusione in un tempo finito

Un computer può risolvere soltanto quei problemi

per i quali sia noto un algoritmo

50

Un esempio di algoritmo

Problema : Avendo depositato ventimila euro in un conto bancario

che produce il 5% di interessi all’anno, capitalizzati annualmente,

quanti anni occorrono affinché il saldo del conto arrivi al doppio della

cifra iniziale?

Algoritmo :

1.Anno attuale è 0 e saldo attuale è 20000€

2.Ripetere i successivi passi 3 e 4 finché il saldo

è minore di 40000€, poi passare al punto 5

3.Aggiungere 1 al valore dell’anno attuale

4.Il nuovo saldo attuale è il valore del saldo

attuale moltiplicato per 1.05 (aggiungiamo il 5%)

5.Il risultato è il valore dell’anno attuale

Un esempio di algoritmo

Il metodo di soluzione proposto

è non ambiguo , perché fornisce precise istruzioni

su cosa bisogna fare ad ogni passaggio e su quale

deve essere il passaggio successivo

è eseguibile , perché ciascun passaggio può

essere eseguito concretamente (se, ad esempio, il

metodo di soluzione dicesse che il tasso di

interesse da usare al punto 4 è variabile in

dipendenza da fattori economici futuri, il metodo

non sarebbe eseguibile…)

arriva a conclusione in un tempo finito , perché

ad ogni passo il saldo aumenta di almeno mille

euro, quindi al massimo in 20 passi arriva al

termine

A cosa servono gli algoritmi?

L’identificazione di un algoritmo è un requisito

indispensabile per risolvere un problema con il

computer

La scrittura di un programma per risolvere un

problema con il computer consiste, in genere,

nella traduzione di un algoritmo in un qualche

linguaggio di programmazione

Prima di scrivere un programma,

è necessario individuare un

algoritmo!

Architettura di un computer:

il modello di von Neumann

54

L’architettura di un computer

 Per capire i meccanismi di base della programmazione è

necessario conoscere gli elementi hardware che

costituiscono un computer

Prendiamo in esame il

Personal Computer

( PC ), ma anche i

computer più potenti

hanno un’ architettura

molto simile

Il modello di John von Neumann

Primo documento che descrive una

macchina elettronica nella cui memoria

vengono registrati dati e programma:

John von Neumann, First draft of a

report on the EDVAC, Moore

School of Electrical Engineering,

University of Pennsylvania, June

L’architettura dei moderni processori è

molto simile a quella descritta nel

documento, sono quindi dette Macchine

di von Neumann

John von Neumann

(1903 1957)

CPU

Il modello di John von Neumann

Bus

Memoria

principale

Memoria

secondaria

Dispositivi

di Input e

di Output

L’architettura di von Neumann è composta da quattro

blocchi comunicanti tra loro per mezzo di un bus , un

canale di scambio di informazioni

61

Ciclo di funzionamento della CPU

Ogni ciclo di funzionamento è composto da tre fasi

accesso : lettura dell’istruzione da eseguire e sua

memorizzazione nel registro istruzione

decodifica : decodifica dell’istruzione da eseguire

esecuzione : esecuzione dell’istruzione

Si parla di ciclo fetch decode execute

La posizione dell’istruzione a cui si accede durante la

fase di fetch è contenuta nel contatore di

programma (program counter, PC)

viene incrementato di un’unità ad ogni ciclo, in modo da

eseguire istruzioni in sequenza

62

La memoria del computer

La memoria serve ad immagazzinare dati e

programmi all’interno del computer

È suddivisa in celle o locazioni di memoria, ognuna

delle quali ha un indirizzo

Ogni cella contiene un numero predefinito di bit

un bit è un dato elementare che può assumere due

valori, convenzionalmente chiamati zero e uno

un insieme di otto bit si chiama byte ed è l’unità di

misura della memoria (es. 512 MByte)

Ci sono due tipi di memoria

primaria e secondaria

La memoria primaria

La memoria primaria è veloce ma costosa

È costituita da chip di memoria realizzati con la

stessa tecnologia (al silicio) utilizzata per la CPU

memoria di sola lettura ( ROM , Read Only Memory)

memoria ad accesso casuale

( RAM , Random Access Memory)

  • dovrebbe chiamarsi memoria di lettura e scrittura ,

perché in realtà anche la ROM è ad accesso casuale,

mentre ciò che le distingue è la possibilità di scrivervi

  • accesso casuale^ significa che^ il tempo per accedere

ad un dato non dipende dalla sua posizione nella

memoria

La memoria ROM

La memoria di sola lettura, ROM

conserva i dati ed i programmi in essa memorizzati

anche quando il computer viene spento

  • è una memoria non volatile

contiene i programmi necessari all’avvio del computer,

programmi che devono essere sempre disponibili

  • nei PC, tali programmi prendono il nome di

BIOS ( B asic I nput/ O utput S ystem)

65

La memoria RAM

La memoria ad accesso casuale, RAM

è una memoria che consente la lettura e la scrittura

dei dati e dei programmi in essa contenuti

contiene dati in fase di modifica e programmi che non

devono essere sempre disponibili

perde i dati quando si spegne il computer (è

un supporto volatile )

66

La memoria secondaria

La memoria secondaria (o di massa) è di

solito un disco rigido (o disco fisso, hard disk) ed è

un supporto non volatile e meno costoso della

memoria primaria (circa cento volte)

programmi e dati risiedono sul disco rigido e vengono

caricati nella RAM quando necessario, per poi tornarvi

aggiornati se e quando necessario

Un disco rigido è formato da piatti rotanti rivestiti di

materiale magnetico, con testine di lettura/scrittura

Processo simile a quello dei nastri audio o video

La memoria secondaria

Sono (erano...) molto diffusi anche altri tipi di memoria

secondaria a tecnologia magnetica

floppy disk ( dischetto flessibile), di capacità limitata

ma con il vantaggio di poter essere agevolmente

rimosso dal sistema e trasferito ad un altro sistema

(dispositivo di memoria esterno )

tape ( nastri per dati), di capacità elevatissima, molto

economici, ma molto lenti, perché l’accesso ai dati è

sequenziale anziché casuale (bisogna avvolgere o

svolgere un nastro invece che spostare la testina di

lettura sulla superficie di un disco)

La memoria secondaria

Sono molto diffusi anche altri tipi di memoria

secondaria a tecnologia ottica

CD ROM (Compact Disc Read Only Memory), viene

letto da un dispositivo laser, esattamente come un

CD audio; ha una elevata capacità ed è molto

economico e affidabile; è un supporto di sola lettura,

utilizzato per distribuire programmi e informazioni

CD R (Compact Disc Recordable), utilizza una

tecnologia simile al CD ROM ma può essere scritto

dall’utente (una sola volta; più volte se CD RW)

DVD , sta rapidamente sostituendo il CD ROM

nell’ambito di memoria a tecnologia ottica, ha

capacità molto più elevata

È tutto chiaro? …

1.Dove viene memorizzato un programma che non

sia attualmente in esecuzione?

2.Quale parte del computer esegue le operazioni

aritmetiche, come addizioni e moltiplicazioni?

Programmazione in

codice macchina

Le istruzioni macchina

Le istruzioni elementari eseguite da un computer

(cioè dalla sua CPU) si chiamano

istruzioni macchina

L’insieme di istruzioni macchina ( instruction set )

è specifico di una particolare CPU: quello di un

Pentium™ è diverso da quello di uno SPARC™

Una particolare CPU è la cosiddetta macchina

virtuale Java (JVM, Java Virtual Machine)

la JVM non è una vera CPU… ma per il

momento possiamo considerarla tale…

Le istruzioni macchina

 Esempio di alcune istruzioni macchina:

carica in un registro il valore contenuto nella

posizione di memoria 40

carica in un altro registro il valore 100

se il primo valore è maggiore del secondo,

prosegui con l’istruzione contenuta nella posizione

di memoria 240, altrimenti con l’istruzione che

segue quella attuale

 La codifica delle istruzioni macchina avviene sotto forma

di configurazioni di bit conservate in memoria

(che possono essere interpretate come numeri interi)

 Le precedenti istruzioni per la JVM diventano

77

Le istruzioni macchina

In tutte le CPU, le istruzioni macchina si possono

suddividere nelle seguenti categorie

(i nomi delle istruzioni sono solo degli esempi)

trasferimento dati , tra i registri e la memoria

principale

  • LOAD (verso un registro), STORE (verso la memoria)

operazioni aritmetiche e logiche , eseguite dalla

ALU

  • aritmetiche: ADD, SUB, MUL, DIV
  • logiche: AND, OR, NOT

salti , per alterare il flusso di esecuzione sequenziale

(viene modificato il Program Counter)

  • incondizionato (JUMP): salta in ogni caso
  • condizionato: salta solo se un certo valore è zero (JZ) o

se è maggiore di zero (JGZ)

78

Le istruzioni macchina

Per eseguire un programma in un computer è

necessario scrivere all’interno della memoria

primaria le configurazioni di bit

corrispondenti alle istruzioni macchina del

programma

Per fare ciò è necessario conoscere tutti i codici

numerici delle istruzioni macchina

Questa operazione lunga e noiosa (che veniva

eseguita agli albori dell’informatica) è stata presto

automatizzata da un programma in esecuzione

sul computer stesso, detto assemblatore

( assembler )

Programmazione

con assembler

L’assemblatore

Utilizzando l’assemblatore, il programmatore scrive il

programma mediante dei nomi abbreviati ( codici

mnemonici ) per le istruzioni macchina, molto più

facili da ricordare

esempio precedente per la JVM

L’uso di nomi abbreviati è assai più agevole, ed il

programma assemblatore si occupa poi di tradurre il

programma in configurazioni di bit

Tali linguaggi con codici mnemonici si dicono

linguaggi assembly (uno diverso per ogni CPU)

iload 40

bipush 100

if_icmpgt 240