Corso di Informatica di Base

Похожие документы
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Rappresentazione con i diagrammi di flusso (Flow - chart)

Formalismi per la descrizione di algoritmi

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Laboratorio di Programmazione

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Diagrammi di flusso. Un metodo per rappresentare graficamente gli algoritmi. sotto programma. Input/ Output. Start. predicato Elaborazione Stop

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Sviluppo di programmi

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

Capitolo 3 L elaborazione e la strutturazione dell informazione

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

2. Algoritmi e Programmi

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Lezione 1. Problemi Algoritmi Programmi

Algoritmi e soluzione di problemi

Concetti Introduttivi. Il Computer

CONCETTI FONDAMENTALI

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Sistemi Web per il turismo - lezione 3 -

LA METAFORA DELL UFFICIO

Teoria dell Informazione

Il concetto di calcolatore e di algoritmo

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

Cosa è l Informatica?

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Diagrammi a blocchi 1

Dispensa di Informatica II.1

Sviluppo di programmi. E ora, finalmente. Si comincia! 1. Analizzare il problema. 2. Progettare una soluzione (1) E necessario capire:

1 Esercizi in pseudocodice

LABORATORIO DI INFORMATICA

Lezione 5. La macchina universale

Come ragiona il computer. Problemi e algoritmi

Algoritmi e Linguaggi

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Algoritmi e Diagrammi di flusso

Informatica Generale Andrea Corradini I linguaggi di programmazione

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Algoritmi. Pagina 1 di 5

ALGORITMI. Obiettivo: risolvere problemi mediante l uso di un elaboratore elettronico. Elaboratore elettronico

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

Elaborazione dell informazione

Informatica. Come si risolve un problema?

Strutture di Controllo

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Algoritmi e diagrammi di flusso

LA METAFORA DELL UFFICIO

Descrizione di un algoritmo

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Diagrammi a blocchi 1

Programmazione. Informatica. Risoluzione dei Problemi

Corso di Informatica Modulo T1 1 - Il concetto di problema

Cosa si intende con stato

Problema: calcolare il massimo tra K numeri

Strutture dati e loro organizzazione. Gabriella Trucco

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Modulo 1 Concetti di base della Tecnologia dell Informazione

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER

Fondamenti VBA. Che cos è VBA

Introduzione alla programmazione Esercizi risolti

Programmazione C Massimo Callisto De Donato

Dall algoritmo al programma

Algoritmi e Programmi

Algoritmi e basi del C Struttura di un programma

UD 3.2b: Programmazione in Pascal (1)

PROBLEMI E ALGORITMI VESPIA CATERINA LICEO CLASSICO AGLI ANGELI

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

APPUNTI PER IL CORSO DI ALFABETIZZAZIONE INFORMATICA

PROGRAMMAZIONE: Le strutture di controllo

Il calcolatore. Architettura di un calcolatore (Hardware)

Introduzione al funzionamento di un calcolatore elettronico

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione alla programmazione

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Транскрипт:

Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore

Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere eseguite da un elaboratore elettronico Programmatore: colui che individua la sequenza di ordini per risolvere un problema (c è differenza tra programmatore e Informatico?!?) Informatica: Informazione + Automazione Si riferisce ai processi e alle tecnologie che rendono possibile l immagazzinamento e l elaborazione dell informazione mediante macchine

Modello Semplificato(grezzo) Dati in Ingresso Dati in Uscita Operazioni sui dati

Abbiamo detto che L Informatica è la Scienza della Rappresentazione e dell Elaborazione dell Informazione Secondo la ACM (Association for Computing Machinery) L Informatica è lo Studio sistematico degli algoritmi che descrivono e trasformano l Informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione.

Risoluzione di un problema: Esecuzione Automatica Problema L uomo descrive l algoritmo che la macchina deve seguire per risolvere il problema (ad esempio con i Diagrammi di flusso) Algoritmo Programma Linguaggio Macchina La descrizione viene tradotta in Linguaggio di alto livello (ad esempio il linguaggio C) Il programma di alto livello viene tradotto in linguaggio Macchina, ovvero codice binario (ad esempio dal compilatore) Input Macchina Output

Cosa è un algoritmo? Dato un problema, un algoritmo è una procedura, cioè una sequenza di passi, che può essere eseguita automaticamente da una macchina in modo da risolvere il problema dato. Non tutti i problemi sono risolvibili. Un problema risolvibile con un algoritmo si dice computabile

Esempio di Algoritmo La torta al cioccolato 1. Abbiamo gli ingredienti (uova, farina, latte, ecc..) con le giuste quantità 2. Seguiamo la ricetta 3. Serviamo la torta

Esempio L Algoritmo della Somma 1. Sposta una pallina da sinistra a destra della prima riga e una da destra a sinistra nella terza riga 2. Ripeti 1. fino ad esaurire la prima riga 3. Sposta una pallina da sinistra a destra della seconda riga e una da destra a sinistra nella terza riga 4. Ripeti 3. fino ad esaurire la seconda riga. Il risultato è il numero di palline a sinistra sulla terza riga

Risoluzione di un problema Algoritmo Input Esecutore Output Generalmente la risoluzione di un problema consiste nel prendere alcuni dati iniziali (input) relativi al problema e nel fornire un risultato (output) che risolve quest ultimo

Esecutore Infatti Problema Risolutore Algoritmo la risoluzione automatica prevede una notevole componente umana!!! Processo di Esecuzione

Definizione di algoritmo (Formale) Un algoritmo è una sequenza ordinata e finita di passi (azioni o istruzioni) che producono un ben determinato risultato in un tempo finito

Caratteristiche di un algoritmo 1. Azioni eseguibili e non ambigue 1. Non sono ammessi un pò e a piacere, che non sono termini adatti ad una macchina 2. Deterministico 1. Fatto un passo, il successivo è uno ed uno solo, ben determinato. Alternative sono possibili, ma la scelta deve essere unica 3. Numero finito di passi 4. Terminazione 1. L esecuzione prima o poi deve finire e produrre un risultato in tempo finito 2. Osservazione: la 3 non implica la 4

Esempio di non terminazione Stampare tutti i numeri successivi ad N 1. Si consideri il numero N 2. Scrivere il numero successivo ad N 3. Ripetere il passo precedente Trova il più grande numero primo Non esiste un programma che riesce a dare una risposta in tempo finito (Numero finito di passi)

Codifica dell Algoritmo Affinchè una macchina riesca a comprendere ed eseguire i passi specificati da un algoritmo, quest ultimo deve essere prima codificato in un opportuno programma scritto in un linguaggio ad alto livello (che verrà successivamente compilato/interpretato) Algoritmo Traduzione Programma

Descrizione di un algoritmo Si descrive un algoritmo cercando di sintetizzare il più possibile la sua sequenza di passi. La descrizione avviene mediante: Pseudo-Codice, oppure Diagramma di flusso

Diagramma di Flusso I diagrammi di flusso permettono di descrivere in modo grafico le azioni che costituiscono un algoritmo e il loro flusso di esecuzione. Ogni azione elementare è rappresentata da un blocco. Esistono diversi tipi di blocchi Prenderemo in esame solo 4 tipi di blocchi

Istruzioni di inizio e fine Inizio Fine In degree: 0 Out degree: 1 In degree: 1 Out degree: 0

Operazioni di input e output Leggi Dato Scrivi Dato In degree: 1 Out degree: 1 In degree: 1 Out degree: 1

Istruzioni imperative Azioni oppure operazioni In degree: arbitrario Out degree: 1 Calcola: 10+2

Connettori I singoli diagrammi devono essere uniti tramite i connettori. L esecuzione delle istruzioni deve essere fatta sequenzialmente, ovvero seguendo i connettori. Quando si scrive l algoritmo bisogna fare molta attenzione alla direzione del flusso di esecuzione.

Istruzione di Assegnamento Una variabile numerica è una entità caratterizzata da Un nome, e Un valore (contenuto) Può cambiare nel tempo Una costante numerica è una entità caratterizzata da Un nome, e Un valore (contenuto) Non può cambiare nel tempo

Istruzione di Assegnamento Un espressione è una combinazione di operatori aritmetici, costanti e variabili che può essere calcolata generando un singolo valore numerico ES: X, X+1 X+(Y*3) Istruzione di assegnamento: Variabile Espressione ES: Z 3 Z X+3

Somma di due numeri Inizio Leggi X Leggi Y Z X+Y Leggo il valore di x e y Calcolo la somma e la pongo in Z Stampo il valore contenuto in z Scrivi Z Fine

Scambio di 2 variabili Inizio Leggi X Leggi Y Aux Y X Aux Scrivi X Scrivi Y Fine Leggo il valore di x e y Copio il valore di y i una variabile d apoggio Copio x in y (sovrascrivo y) Copio aux in x Stampo il valore di x e y Y X

Flusso di esecuzione Si possono avere casi in cui nel flusso di esecuzione si deve scegliere tra diverse direzioni La direzione da scegliere è subordinata al verificarsi di una condizione La condizione può assumere due stati: Vero, Falso In questi casi si parla di istruzione condizionale

Istruzioni condizionali In degree: arbitrario Out degree: 2 Condizione Vero Falso I connettori Out Sono etichettati

Massimo tra 2 numeri Inizio Leggi X Leggi Y Vero X>Y Falso Scrivi X Scrivi Y Fine

Strutture di controllo If-then-else Si No Do-While While No Si Si No

Somma Iterativa Inizio Leggi X X=0 No Z Z+1 X X-1 Si Y=0 No Z Z+1 Y Y-1 Leggi Y Z 0 Scrivi Z Fine

Gli Array Gli array o vettori sono una struttura dati Gli elementi di una array sono tutti dello stesso tipo (es. numeri) La dimensione della struttura è definita a priori A[1..10] indica un array chiamato A composto da 10 elementi. A[1], A[2],., A[10].

Gli Array L elemento generico lo posso indicare con A[i] con 1 i 10 i indica quindi la posizione A[i] il contenuto A[1] A[i] A[10]

Riempire un Array End No Start i=1 i 10 Si Leggi A[i] i++ i=1 indica la posizione di partenza i 10 indica la posizione finale i++ indica di incrementare la posizione di una unità Per 1 i 10 leggi A[i]

Stampare un Array Si End Start i=1 No i 10 Scrivi A[i] i++ i=1 indica la posizione di partenza i 10 indica la posizione finale i++ indica di incrementare la posizione di una unità Per 1 i 10 leggi A[i]

Stampare gli elementi di posto pari Si End Start i=2 i 10 Scrivi A[i] i=i+2 i=2 indica la posizione di partenza (la prima posizione pari) i 10 indica la posizione finale La posizione dovrà essere incrementata di 2 unità Per 1 i 10 scrivi A[i]

Stampare la 2 a metà di un Array End Start i=6 No i 10 Si Scrivi A[i] i++ i=6 indica la posizione di partenza i 10 indica la posizione finale i++ indica di incrementare la posizione di una unità Per 1 i 10 leggi A[i]

Calcolare la media di un Array M=S/10 Scrivi M End No Start i=1 S=0 i 10 S=S+A[i] i++ Si i=1 indica la posizione di partenza S=0 inizializzo la somma i 10 indica la posizione finale i++ indica di incrementare la posizione di una unità Per ogni ciclo sommo A[i] alla somma S Terminato il ciclo calcolo e stampo la media

Trovare il max di un Array Scrivi Max End No Start Max= A[1] i=2 i 10 A[i]> Max Si Max=A[i] i++ Si No Assumpo che il max è quello contenuto nella prima posizione i=2 indica la posizione di partenza i 10 indica la posizione finale i++ indica di incrementare la posizione di una unità Per ogni ciclo sommo A[i] Terminato il ciclo calcolo e stampo la media

Array bidimensionale o Matrice Sino ad ora abbiamo trattato array o vettori monodimensionali Potremmo lavorare con array bidimensionali Dove abbiamo righe e colonne L elemento generico lo indicheremo con A[i,j] con 1 i max colonne e con 1 j max righe Gli array bidimensionali vengono anche chiamati matrici Le immagini sono delle matrici (una per ciascun piano RGB)

A[1,1] A[1,2] A[1,3] A[1,maxC] A[2,1] A[2,2] A[i,j] A[maxR,1] A[maxR, maxc]