• Non ci sono risultati.

Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica"

Copied!
45
0
0

Testo completo

(1)

Fondamenti di

Informatica

Prof. Fenza Giuseppe

Introduzione alla Programmazione

(2)

QUANDO AFFRONTIAMO UN PROBLEMA O ABBIAMO UN’IDEA, SPESSO INTUIAMO LA SOLUZIONE MA NON SIAMO IN GRADO DI FORMULARLA IN MODO OPERATIVO PER METTERLA IN PRATICA.

(3)

Cos’e’ il pensiero computazionale?

• Il concetto è stato introdotto per la prima volta da Seymour Papert nel 1996

“Il processo mentale che sta alla base della formulazione dei problemi e delle soluzioni così che le soluzioni siano rappresentate in una forma che può essere implementata

in maniera efficace da un elaboratore di informazioni sia esso umano o artificiale.” [Dott.ssa Jeanette Wing ]

(4)

Pensiero Computazionale

• Negli ultimi anni, le teorie innovative di Seymour Papert sono state riprese, ampliate e approfondite dal MIT Media Lab di Boston USA che ha sviluppato il programma Scratch.

• Il pensiero computazionale come strumento metodologico perché

- ha ricadute nell’ambito logico-matematico e nella risoluzione dei problemi contribuendo allo sviluppo del pensiero logico

- il saper scrivere e leggere sono già operazioni algoritmiche

- Il saper tradurre idee in codice è espressione di creatività ed incentiva la responsabilizzazione ed il ruolo attivo dell’individuo.

• Imparare a programmare concorre al raggiungimento delle competenze digitali nella sua componente scientifica e tecnologica

• Oggi i ragazzi sanno fare un uso esclusivamente strumentale della tecnologia ma non ne conoscono in modo approfondito le potenzialità e sono soggetti passivi nella fruizione dei dispositivi.

(5)

Pensiero Computazionale

• Decomposition: Breaking down data, processes, or

problems into smaller, manageable parts

• Pattern Recognition: Observing patterns, trends, and

regularities in data

• Abstraction: Identifying the general principles that

generate these patterns

• Algorithm Design: Developing the step by step

instructions for solving this and similar problems

(6)

Stadi di sviluppo di un programma

• La prima fase consiste nella ricerca della soluzione migliore • Successivamente si converte l’idea in una soluzione formale,

ovvero in un testo che descrive la soluzione in modo formale (algoritmo)

• L’algoritmo viene tradotto in una sequenza di istruzioni comprensibili all’esecutore (in questo caso l’elaboratore elettronico): questa sequenza si chiama programma

• Il programma deve essere provato con un insieme significativo di dati per garantire che funzionerà in ogni occasione (qualsiasi

siano i dati di input).

• Infine occorre documentare opportunamente il programma a beneficio di chi lo userà ed eventualmente lo modificherà.

(7)

https://www.youtube.com/watch?v=qbnTZCj0ugI

1 + 2 = 3 3 + 4 = 7 5 + 6 = 11 …

Calcolare il valore che si ottiene sommando tutti gli

interi inclusi nell’intervallo 1-200

1 + 2 + 3 + 4 + 5 + … + 198 + 199 + 200 = ???

Oppure ? 1 + 200 = 201 2 + 199 = 201 3 + 198 = 201 … 100 + 101 = 201 200/2

(8)

Stadi di sviluppo di un programma

• Problema: calcolo del massimo tra due valori A e B

• Soluzione: Il massimo è il più grande tra A e B...

• Soluzione formale:

1. max iniziale = 0

2. se A >B allora max = A; stop 3. altrimenti max = B; stop

Soluzione

Soluzione formale Problema

(9)

Algoritmo

• Algoritmo è una sequenza di operazioni atte a risolvere un dato problema.

• L'esperienza quotidiana suggerisce infiniti esempi di algoritmi: oltre a una ricetta da cucina o alle istruzioni per l'uso di un elettrodomestico ne possiamo individuare moltissimi altri come le indicazioni per un lavoro a maglia, le regole per calcolare la somma o la moltiplicazione di due numeri, le regole per guidare un automobile da casa a unisa, ecc.

• Le operazioni che un algoritmo può prescrivere possono essere di natura assai differente, ma devono possedere, per poter essere considerate tali, delle caratteristiche ben precise.

(10)

Definizione di Algoritmo

1. Input 2. Output

4. Finitezza della sequenza Una definizione più precisa:

3. Istruzioni Definite

Un

algoritmo è una sequenza finita di istruzioni che,

quando eseguite, svolgono un ben determinato

compito.

Gli elementi fondamentali di ogni algoritmo sono:

(11)

Algoritmo – Effetto Osservabile

• Ogni operazione deve produrre, se eseguita, un effetto

osservabile che possa essere descritto.

• Ad esempio, l'esecuzione dell'operazione di “spostare il

tavolo” produce un effetto che può essere descritto

specificando la disposizione dei mobili nella stanza

prima e dopo lo spostamento.

• Invece, “pensare ” o “pensare al numero 5 ” non possono

essere considerate operazioni poiché non è affatto chiaro

come il loro effetto possa essere “osservato” e descritto.

(12)

Algoritmo - Determinismo

• Ogni operazione deve produrre lo stesso effetto

ogni volta che viene eseguita a partire dalle

stesse condizioni iniziali (determinismo).

• Così se X vale 5 e Y vale 10, tutte le volte che

eseguiamo la somma di X e Y con quei valori

iniziali, il risultato dovrà essere sempre 15.

(13)

Algoritmo - Sequenzialità

• L'esecuzione di un algoritmo da parte di un “esecutore” -uomo o macchina - si traduce in una successione di operazioni che vengono effettuate nel tempo evocando un “processo sequenziale ”.

• Per “processo sequenziale” s’intende una serie di eventi che occorrono uno dopo l'altro, ognuno con un inizio e una fine bene identificabile.

(14)

Algoritmo - Sequenzialità

• Talvolta il processo è fisso, cioè è sempre lo stesso ad ogni diversa esecuzione.

• Esempio: algoritmo per calcolare l’importo di una fattura:

- cerca l'aliquota IVA sulla tabella;

- moltiplica l'importo netto per l'aliquota trovata;

- somma il risultato all'importo netto.

• Questo algoritmo è composto da tre istruzioni, che devono essere eseguite in sequenza.

(15)

Algoritmo - Sequenzialità

• Talvolta lo stesso algoritmo può evocare più processi sequenziali differenti, a seconda delle condizioni iniziali.

• Esempio: il precedente algoritmo, quando è richiesto di dover considerare la possibilità che la merce in esame non sia soggetta a IVA, diventa:

– SE la merce da fatturare è soggetta a IVA ALLORA

– Cerca la corretta aliquota IVA sulla tabella e moltiplica l'importo per l'aliquota trovata. Somma il risultato all'importo netto.

– ALTRIMENTI

(16)

Algoritmo - Sequenzialità

• In questo caso, il processo evocato non è fisso, ma

dipende dai dati da elaborare, in particolare dal tipo di merce da fatturare: l'algoritmo descrive un

insieme costituito da due sequenze di esecuzione diverse. • Esistono situazioni, ancora più complesse, in cui il numero

di sequenze d'esecuzione descritte da uno stesso

algoritmo non solo non è noto a priori, ma addirittura può essere infinito.

(17)

Algoritmo - Sequenzialità

• Ad esempio, consideriamo

una telefonata: l'algoritmo per effettuare

1.solleva il ricevitore; 2.componi il numero;

3. SE qualcuno risponde ALLORA i. conduci la conversazione

4. ALTRIMENTI

i. deponi il ricevitore e

(18)

Algoritmo

• L'algoritmo descrive infinite sequenze d'esecuzione, corrispondenti al fatto che la telefonata riesca al 1 , 2 , 3 , ... tentativo.

• Si potrà avere un processo ciclico che potrebbe non avere mai termine se l'interlocutore non risponde mai al telefono!

• Si può dire che un algoritmo è un testo in grado di descrivere un insieme di sequenze di esecuzione.

(19)

Algoritmo

• Supponiamo di voler specificare un algoritmo per effettuare il prodotto di due numeri interi col metodo delle addizioni successive. L'algoritmo potrebbe essere costituito semplicemente dal seguente testo:

- Si sommi il moltiplicando a se stesso un numero di volte uguale al valore del moltiplicatore.

• Specifichiamo con maggiore dettaglio le operazioni richieste evitando i costrutti ambigui. Ad esempio, potremmo scrivere:

- Si sommi il moltiplicando a se stesso, e si decrementi di uno il valore del moltiplicatore.

- Si sommi ancora il moltiplicando al valore ottenuto dalla precedente somma, e si decrementi di nuovo il valore ottenuto dalla precedente sottrazione.

- Si ripeta il procedimento fino a che, per decrementi successivi, non si raggiunga il valore uno.

(20)

Algoritmo

• Per evitare ambiguità, si è stati costretti ad usare le espressioni:

- “valore ottenuto dalla precedente somma” - “valore ottenuto dalla precedente sottrazione”

per specificare, di volta in volta, di quale valore si sta parlando.

volta, al valore desiderato.

• Per distinguere tali valori si ricorre a simboli o

(21)

Algoritmo

• Ad esempio:

1. Si chiami M il valore del moltiplicando ed N il valore del moltiplicatore e sia M1 il risultato (inizialmente zero).

2. Si ripetano le seguenti operazioni fino a che il valore di N non diventi uguale a 0:

i. si sommi il valore del moltiplicando M al valore di M1 e si chiami il risultato ancora M1;

ii. si sottragga 1 dal valore di N, e si chiami il risultato ancora N.

3. Alla fine il valore di M1 è il risultato cercato.

• •

I simboli M, N e M1 sono detti identificatori di variabili

(22)

Formalizzazione della soluzione

• La differenza tra una soluzione informale e una formale sta nel modo di rappresentare un algoritmo:

- Informale: descrizione a parole

- Formale: descrizione in termini di sequenza di operazioni

elementari

• Sono disponibili numerosi strumenti per rappresentare una soluzione in modo formale, i più utilizzati sono:

- diagrammi di flusso (grafico) - pseudo-codice (testo)

(23)

Formalizzazione della soluzione

• Pseudocodice - Vantaggi • Immediato - Svantaggi • Meno astratto

• Interpretazione più complicata

• Diagrammi di flusso

- Vantaggi

• Più intuitivi perchè grafici • Più astratti

- Svantaggi

(24)
(25)
(26)

Iniziamo…

https://studio.code.org/hoc/1

(27)

Per esercitarsi…

https://studio.code.org/s/20-hour/stage/11/puzzle/1

https://studio.code.org/s/starwarsblocks/stage/1/pu

zzle/1

(28)

Diagrammi di flusso (flow-chart)

• Sono strumenti grafici che rappresentano l’evoluzione logica della risoluzione del problema

• Sono composti da:

- blocchi elementari per descrivere azioni e decisioni

(esclusivamente di tipo binario)

- archi orientati per collegare i vari blocchi e per descrivere la

(29)

Diagrammi di flusso (flow-chart)

• I blocchi elementari sono:

- Blocco di Start - Blocco di Stop

- Blocco di azione generica - Blocco di azione di I/O - Blocco di decisione binaria - Blocco di connessione

(30)

START

STOP

(31)

azione

generica

Flow-chart: Blocchi di azione

azione di

I/O

(32)

struttura-1

struttura-2

Sequenza

I O I

struttura

O

(33)
(34)

condizione

V

Flow-chart: Blocco di decisione

(35)

condizione

V

F

If-Then

struttura

O I

(36)

condizione

V

F

If-Then-Else

struttura-1

struttura-2

O I

(37)

condizione

V

struttura

F

While-Do

O I

(38)

Le etichette

• All’interno dei blocchi che costituiscono un flow-chart si indica l’azione che quel blocco rappresenta.

• Come si indica quest’azione?

• Normalmente si tratta di un testo il più sintetico possibile, ricorrendo anche a simboli mutuati altrove

• Ad esempio il simbolo:

A ¬ m

(39)

A >= 0?

stop stop

• Acquisire un valore A e visualizzarne il valore assoluto

start

Leggi un valore A

Stampa A Stampa -A

Esempio di flowchart

(40)

Blocchi elementari

-• Un flowchart è un insieme di blocchi elementari composto da:

Ø un blocco iniziale

Ø un numero finito n (n ³ 1) di

blocchi di azione e/o di blocchi di lettura/scrittura

Ø un numero finito m (m ³ 0) di

blocchi di controllo

(41)

Algobuild

(42)

Algoritmo

• Ad esempio:

1. Si chiami M il valore del moltiplicando ed N il valore del moltiplicatore e sia M1 il risultato (inizialmente zero).

2. Si ripetano le seguenti operazioni fino a che il valore di N non diventi uguale a 0:

i. si sommi il valore del moltiplicando M al valore di M1 e si chiami il risultato ancora M1;

ii. si sottragga 1 dal valore di N, e si chiami il risultato ancora N.

3. Alla fine il valore di M1 è il risultato cercato.

• •

I simboli M, N e M1 sono detti identificatori di variabili

(43)

Algoritmo

1. Si chiami NUM1 il valore del

moltiplicando ed NUM2 il valore del moltiplicatore e sia PROD il risultato (inizialmente zero).

2. Si ripetano le seguenti operazioni fino a che il valore di NUM1 non diventi uguale a 0:

i. si sommi il valore del moltiplicando

NUM2 al valore di PROD e si chiami il risultato ancora PROD;

ii. si sottragga 1 dal valore di NUM1, e si chiami il risultato ancora NUM1.

3. Alla fine il valore di PROD è il risultato cercato.

(44)

Esercizio 3

• Dato il flow chart in

figura, rappresentare il

suo funzionamento

mediante tabella di

traccia, supponendo

NUM1 = 5 e NUM2 = 4.

07/11/19 44

(45)

Soluzione 3

07/11/19 45

Numero Istruzione

NUM1 NUM2 PROD NUM2>0 Output

1 5 4 2 0 3 VERO 4 (0+5) = 5 5 (4-1)= 3 6 VERO 7 (5+5) = 10 8 (3 1) = 2 -9 VERO 10 (10+5) = 15 -11 (2 1) = 1 12 VERO 13 (15+5) = 20 -14 (1 1) = 0 15 FALSO 16 20 0 1 2 3 4 5

Riferimenti

Documenti correlati

Allora esiste una funzione lineare a z per cui ˆz

Se V ≥ 27/30 lo studente è esonerato dalla prova scritta e dalla prova orale di esame, se lo desidera, con voto finale di esame pari alla media aritmetica tra V e voto ottenuto

3) Ora infila la linea dei numeri nei due tagli verticali. Dalla finestra centrale sarà visibile un solo numero.. Il numero precedente e successivo rimarranno coperti e tu

Il presente accordo entra in vigore alla data della firma delle Parti e durerà fino a quando le Informazioni Confidenziali non siano divenute note alla generalità degli operatori

Per trovare un’espressione minimale, si eliminano gli implicanti primi ”superflui”, che pos- sono essere individuati tramite la forma normale disgiuntiva.. Si noti che questi

SUBITO PRIMA = PRECEDENTE SUBITO DOPO = SUCCESSIVO COMPLETA CON I NUMERI MANCANTI:.. SCRIVI IL PRECEDENTE ED

• eseguire un blocco di istruzioni (pu`o essere anche contenere una sola istruzione ma non ci sono vincoli riguardo al numero di istruzioni da es- eguire. Questo ` e il motivo per

[r]