• Non ci sono risultati.

Introduzione all’elaborazione automatica delle informazioni

N/A
N/A
Protected

Academic year: 2021

Condividi "Introduzione all’elaborazione automatica delle informazioni"

Copied!
3
0
0

Testo completo

(1)

Corso di Fondamenti di Informatica

Corso di Laurea in Ingegneria Elettronica

Prof. Diego Calvanese

Anno Accedemico 2001/2002

1 – Introduzione all’elaborazione automatica delle informazioni – 1.0

Introduzione all’elaborazione automatica delle informazioni

c

Diego Calvanese Fondamenti di Informatica — Corso di Laurea in Ingegneria Elettronica — A.A. 2001/2002 1.0 – 0

1 – Introduzione all’elaborazione automatica delle informazioni Algoritmi e programmi – 1.1

Algoritmi e programmi

Problemi da risolvere usando elaboratori possono essere di natura molto varia.

Esempi

1. Dati due numeri, trovare il maggiore.

2. Dato un elenco di nomi e numeri di telefono (rubrica o elenco telefonico) e un nome, trovare il numero di telefono corrispondente.

3. Data la struttura di una rete stradale e le informazioni sui flussi dei veicoli, determinare il percorso pi `u veloce daAaB.

4. Scrivere tutti i numeri pari che non sono la somma di due numeri primi (Congettura di Goldbach).

5. Decidere per ogni programmaCe per ogni dato in ingresso, se il programmaC termina quando viene eseguito su quel dato.

Caratteristica comune ai problemi

informazioni in ingresso =⇒ informazioni in uscita

c

Diego Calvanese Fondamenti di Informatica — Corso di Laurea in Ingegneria Elettronica — A.A. 2001/2002 1.1 – 1

(2)

1 – Introduzione all’elaborazione automatica delle informazioni Algoritmi e programmi – 1.1

Osservazioni sulla formulazione dei problemi:

• descrizione non fornisce un metodo risolutivo (si pensi all’esempio 3)

• descrizione del problema `e talvoltaambiguaoimprecisa(ad esempio, 2 con Mario Rossi che compare pi `u volte)

• per alcuni probleminon `e noto un metodo risolutivo(ad esempio 4)

• esistono problemi per i quali `e stato dimostrato chenon pu `o esistere un metodo risolutivo(ad esempio 5)

Noi consideriamo solo problemi per i quali `e noto esistere un metodo risolutivo.

c

Diego Calvanese Fondamenti di Informatica — Corso di Laurea in Ingegneria Elettronica — A.A. 2001/2002 1.1 – 2

1 – Introduzione all’elaborazione automatica delle informazioni Algoritmi e programmi – 1.1

Per delegare ad un calcolatore la soluzione di un problema `e necessario:

1. Individuare unalgoritmoche risolve il problema, ovvero un insieme di passi che, eseguiti in ordine, permettono di calcolare i risultati a partire dalle informazioni a disposizione.

Propriet `a di un algoritmo:

non-ambiguit `a: le istruzioni devono essere univocamente interpretabili dall’esecutore

eseguibilit `a: ogni istruzione deve poter essere eseguita (in tempo finito) con le risorse a disposizione

finitezza: l’esecuzione dell’algoritmo deve terminare in tempo finito per ogni insieme di dati in ingresso

2. Rappresentare in un linguaggio di programmazione (LDP) 2. l’algoritmo

2. le informazioni a disposizione 2. le informazioni utilizzate dall’algoritmo 2. le informazioni fornite al termine

=⇒

2. programma 2. dati in ingresso 2. dati ausiliari 2. dati in uscita

c

Diego Calvanese Fondamenti di Informatica — Corso di Laurea in Ingegneria Elettronica — A.A. 2001/2002 1.1 – 3

1 – Introduzione all’elaborazione automatica delle informazioni Algoritmi e programmi – 1.1

Riassumendo:

problema =⇒ algoritmo =⇒ programma

Individuare un algoritmo per un dato problema pu `o essere molto complesso:

=⇒ Conviene operare perlivelli di astrazione:

• si parte da una versione molto generale

siraffinanovia via le varie parti dell’algoritmo fino ad ottenere una descrizione dettagliata che pu `o essere direttamente codificata in un LDP

=⇒ metodo dei raffinamenti successivi

c

Diego Calvanese Fondamenti di Informatica — Corso di Laurea in Ingegneria Elettronica — A.A. 2001/2002 1.1 – 4

(3)

1 – Introduzione all’elaborazione automatica delle informazioni Algoritmi e programmi – 1.1

Pseudocodiceper la specifica di algoritmi

si usanofrasi in linguaggio naturaleche esprimono operazioni o condizioni

• operazioni vengono eseguite in sequenza, tranne che per le . . .

strutture di controllodell’esecuzione delle operazioni (specificate usando parole chiave)

if condizione then operazione 1 else operazione 2

while condizione do operazione

for ogni valore compreso tra . . . e . . . do operazione

do operazione while condizione

Lo pseudocodice si presta bene al metodo dei raffinamenti successivi: unraffinamento consiste nel sostituire un’operazione con

• una sequenza di operazioni, oppure

• una struttura di controllo

c

Diego Calvanese Fondamenti di Informatica — Corso di Laurea in Ingegneria Elettronica — A.A. 2001/2002 1.1 – 5

1 – Introduzione all’elaborazione automatica delle informazioni Algoritmi e programmi – 1.1

Esempio:Calcolo del massimo comun divisore di due interi positivimedn. Algoritmo

1. calcola l’insiemeIdei divisori dim 2. calcola l’insiemeJdei divisori din

3. calcola l’insiemeKintersezione diIeJ(divisori comuni) 4. restituisci il valore massimo tra quelli inK

Raffinamento del passo 1

1.1 inizializzaIall’insieme vuoto

1.2 for ogni numeroicompreso tra2edm do ifi `e divisore dim

then aggiungiiadI

Esercizio:scrivere un algoritmo per il calcolo del MCD che si basi sulla seguente propriet `a

MCD(m, n) =

m, sem= n

MCD(m − n, n), sem > n MCD(m, n − m), sem < n

c

Diego Calvanese Fondamenti di Informatica — Corso di Laurea in Ingegneria Elettronica — A.A. 2001/2002 1.1 – 6

1 – Introduzione all’elaborazione automatica delle informazioni Algoritmi e programmi – 1.1

Programmi:rappresentano algoritmi in un linguaggio di programmazione Esempio:Programma che

1. legge due numeri da tastiera 2. ne calcola il MCD e

3. lo stampa

/* File: mcd2.c */

#include <stdio.h>

int main(void) { int m, n;

printf("Immetti due interi positivi: ");

scanf("%d%d", &m, &n);

printf("Il massimo comun divisore di %d e %d e‘ ", m, n);

while (m != n) if (m > n)

m = m - n;

else

n = n - m;

printf("%d\n", m);

return 0;

}

c

Diego Calvanese Fondamenti di Informatica — Corso di Laurea in Ingegneria Elettronica — A.A. 2001/2002 1.1 – 7

Riferimenti

Documenti correlati

● Fare riferimento alla pagina del corso per sapere di volta in volta quale è il proprio turno.. Per evitare i disagi che si sono verificati negli anni precedenti non saranno

Diego Calvanese Fondamenti di Informatica — Corso di Laurea in Ingegneria Elettronica — A.A.. 2001/2002 3.2

Corso di Laurea in Ingegneria Elettrica, Elettronica ed Informatica. Tutor:

• Ricordatevi di scrivere su tale foglio risposte tutte le informazioni richieste ed in particolare il vostro nome e cognome (i fogli senza nome e cognome saranno cestinati e

• Per ogni affermazione VERO/FALSO NON correttamente individuata viene assegnato un punteggio negativo pari a -0.25 punti7. Supera la prova chi totalizza un punteggio pari ad almeno

• Per ogni affermazione VERO/FALSO NON correttamente individuata viene assegnato un punteggio negativo pari a -0.25 punti7. Supera la prova chi totalizza un punteggio pari ad almeno

(b) Se nell’applicazione della Fase II del metodo del simplesso al problema dato ogni soluzione di base ammissibile `e non degenere, allora in un numero finito di passi si

In questo modo la retta reale coincide con l’asse delle ascisse mentre i punti nell’asse delle ordinate rappresentano i numeri puramente immaginari ossia quelli a parte reale nulla