Dati in ingresso: tre numeri

Download Report

Transcript Dati in ingresso: tre numeri

I.T.I.S. A. Volta di Lodi
AS 2010-2011
Programmazione
dei
Calcolatori Elettronici
Lezione 1
Prof. Eugenio Chiriaco
[email protected]
Contenuti







Dal problema all’algoritmo
Diagramma a blocchi
Strutture di controllo fondamentali
Esempi di algoritmi
Concetto di Pseudocodifica
Concetto di linguaggio di programmazione
Esercizi
2
Problema e algoritmo
●
Problema
●
●
Il nostro obiettivo è risolvere un
problema
Algoritmo
●
E’ il nostro strumento per risolvere un
problema
3
Problema
●
Per formalizzare un problema
abbiamo bisogno:
●
●
●
Della sua descrizione
Dei dati di ingresso
Dei risultati che lo risolvono
4
Esempio di Problema
●
Risoluzione equazione di secondo
grado:
●
●
Dati in ingresso: tre numeri
(i coefficienti)
Risultati: le due soluzioni se reali,
altrimenti stampa di un messaggio
5
Esempio di Problema
●
Trovare il massimo fra tre numeri:
●
●
Dati in ingresso: tre numeri
Risultati: stampa del numero con il
valore massimo
6
Esempio di Problema
●
Ricerca del numero di un utente in
un elenco telefonico:
●
●
Dati in ingresso: un insieme ordinato di
coppie (nome, num. tel.) ed un nome
da ricercare
Risultati: il numero telefonico
corrispondente all’utente cercato se
presente nell’insieme, altrimenti stampa
di un messaggio
7
Algoritmo
●
●
●
Un algoritmo è una sequenza ordinata e finita
di passi semplici che hanno lo scopo di
portare a termine un compito più complesso
In un modo più formale, un algoritmo è una
sequenza ordinata e finita di istruzioni che a
partire da una serie di dati in ingresso, dopo
un tempo finito, produce una serie di risultati
in uscita.
Il termine algoritmo deriva dal nome del
matematico arabo Muhammad ibn Mūsa 'lKhwārizmī, che pubblicò, tra gli altri, il libro
dal titolo Kitāb al-djabr wa 'l-muqābala dal
quale prende le origini la parola Algebra
8
Algoritmo
Al-Khwarizmi
9
Linguaggi per la descrizione di
algoritmi
●
●
●
●
Linguaggi naturali (italiano, inglese,
spagnolo, ecc…)
Linguaggi visuali (diagramma a
blocchi, ecc…)
Pseudocodice (linguaggio che si
avvicina molto ai linguaggi di
programmazione)
Linguaggio di programmazione
10
Diagramma a blocchi
●
●
Un diagramma a blocchi (flow chart) è
un linguaggio formale di tipo grafico
per rappresentare algoritmi
Esso consente di descrivere le differenti
operazioni sotto forma di uno schema
in cui i differenti passi dell’algoritmo
vengono rappresentati da simboli
grafici detti blocchi elementari che
sono collegati tra loro tramite frecce
che ne indicano la cronologia
11
Diagramma a blocchi
●
I 5 tipi di blocchi elementari che vengono utilizzati per
descrivere i singoli passi di un algoritmo sono:
Blocco iniziale
Blocco finale
Blocco di ingresso/uscita
Blocco di controllo
Blocco azione
12
Strutture di Controllo
Sequenza
Istruzione 1
●
Per rappresentare una
sequenza di istruzioni, ovvero
una serie di operazioni che
devono essere eseguite una
di seguito all’altra in base
all’ordine con il quale sono
state definite
Istruzione 2
Istruzione N
13
Strutture di Controllo
●
Selezione
Per rappresentare
la selezione di due
percorsi diversi al
verificarsi o meno
di una data
condizione
Falso
Istruzione 1
Condizione
(SE)
Vero
Istruzione 2
14
Strutture di Controllo
Ciclo
Per rappresentare la
ripetizione di una stessa
sequenza di istruzioni
Istruzioni
Vero
Condizione
(SE)
Falso
15
inizio
La macchina
funziona?
●
Algoritmo del
distributore di
caramelle
Falso
Rivolgersi al
negozio accanto
Vero
Il cassetto è
vuoto?
Vero
fine
Falso
Inserire le monete
e premere il
pulsante
Ritirare il resto ed
il pacchetto di
caramelle
fine
16
inizio
Solleva il ricevitore
●
Algoritmo della
telefonata
Attendi segnale
Componi cifra
Vero
Ancora cifre?
Falso
Vero
Libero?
Falso
Attendi risposta
Parla
Deponi ricevitore
Fine
17
inizio
●
Algoritmo per
determinare la
somma di due
interi
Leggi
addendo1
Leggi
addendo2
somma = addendo1 + addendo 2
Stampa
somma
fine
18
inizio
Lettura del
primo
estremo A
●
Algoritmo per
determinare se il
valore X è incluso
nell’intervallo con
estremi A e B
Lettura del
secondo
estremo B
Vero
A <= B
Falso
Stampa
“errore
nell’intervallo”
fine
Lettura del
valore X
(X>=A) e (X<=B)
Vero
Falso
Stampa “X
è interno”
Stampa “X
è esterno”
fine
19
inizio
●
Lettura del
numero X
Algoritmo per calcolare
la somma dei primi X
numeri. Es. se X = 5
allora SOMMA =
1+2+3+4+5 =15
SOMMA = 0
K=1
Stampa
SOMMA
Falso
K <= X
Vero
fine
SOMMA = SOMMA + K
K=K+1
20
inizio
Lettura del coefficiente A
Lettura del coefficiente B
●
Algoritmo per
risolvere
l’equazione di
secondo grado
Lettura del coefficiente C
Vero
A == 0
Stampa
“L’equazione non è
di secondo grado”
Falso
D=B2 – 4AC
D<0
fine
Vero
Stampa
“L’equazione non
ha radici reali”
Falso
X1=
X2=
B D
2A
B D
2A
Stampa
X1 e X2
fine
21
inizio
Leggi X
●
Problema: trovare
il massimo tra 3
numeri
●
●
Dati in ingresso: i
numeri X, Y e Z
Risultati: stampa
del massimo tra X,
YeZ
Leggi Y
Leggi Z
Falso
Vero
X>Y
Y >Z
Vero
MAX = Y
X >Z
Falso
Vero
MAX = Z
MAX = X
Falso
MAX = Z
Stampa
MAX
fine
22
Esercizio
•
Scrivere un algoritmo per stampare la successione
dei primi n numeri pari con n dato in input.
•
Scrivere un algoritmo che verifica se un dato
numero è multiplo di 3.
•
Scrivere un algoritmo che verifica se un dato
numero è pari.
•
Scrivere un algoritmo per calcolare la media di n
numeri interi letti da tastiera.
23
Esercizio
•
Scrivere un algoritmo per calcolare il fattoriale di
un numero
•
Scrivere un algoritmo che calcola la somma dei
primi X numeri pari (con X dato in input)
esempio se X=4  somma=2+4+6+8
•
Scrivere un algoritmo per stampare la successione
dei primi n numeri di Fibonacci con n dato in input
esempio se n=9  1,1,2,3,5,8,13,21,34
24
Esercizio
•
Scrivere un algoritmo per calcolare il massimo ed il
minimo di n interi letti da tastiera.
•
Scrivere un algoritmo per il calcolo del coefficiente
binomiale.
25
Esempio di pseudocodice
Problema :Confronto aree di triangoli
INIZIO
Leggi(h1)
Leggi(b1)
A1 = b1*h1 / 2
Leggi(h2)
Leggi(b2)
A2 = b2*h2 / 2
SE A1 > A2
ALLORA Scrivi(“L’area del primo è maggiore dell’area del secondo”)
ALTRIMENTI Scrivi(“L’area del secondo è maggiore o uguale all’area del primo”)
FINE
26
Linguaggi di programmazione
●
●
●
Se si sceglie come esecutore di un algoritmo
un calcolatore elettronico allora il nostro
algoritmo deve essere codificato in un
linguaggio di programmazione che permette
di impartire comandi non ambigui
all’elaboratore (quindi non si possono
utilizzare i linguaggi naturali)
I linguaggi di programmazione sono linguaggi
formali costituiti (come tutti gli altri linguaggi)
da un dizionario dei termini (lessico) e da
rigide regole grammaticali (sintassi)
Per utilizzare un linguaggio di
programmazione bisogna, quindi, conoscere il
suo lessico, la sua sintassi e la sua semantica
(ovvero il significato dei comandi impartiti
all’elaboratore)
27
Linguaggi di programmazione
●
●
●
●
Un programma è quindi la codifica di un
algoritmo in un linguaggio di programmazione
Esistono alcune centinaia di linguaggi di
programmazione (Basic, Fortran, Pascal, C,
C++, Java, C#, …)
Alcuni di questi sono general purpose altri
invece sono più adatti per la risoluzione di
specifiche classi di problemi
I linguaggi vengono anche classificati come
linguaggi di alto livello (più vicini all’uomo o
meno dipendenti dall'architettura del
calcolatore) e di basso livello (più vicini al
calcolatore elettronico)
28
Esempio di programma in
linguaggio Java
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello world!");
}
}
29
Esempio di programma in
linguaggio C
#include <stdlib.h>
int main()
{
printf("Hello World!");
printf("\n");
}
30
Il linguaggio di programmazione
C
●
●
●
●
Fu ideato nei Laboratori Bell della AT&T
nel 1972 da Dennis Ritchie
Il C viene classificato come linguaggio
di alto livello
Il C si basa su poche istruzioni chiave
(lessico ridotto) molto semplici che
vengono eseguite con elevate
performance dal computer
La grammatica del C è “molto libera” e
flessibile permettendo di scrivere
istruzioni complesse e potenti in poche
righe di codice
31
Fasi per lo sviluppo del software
Linguaggio
Di
Programmazione
PROBLEMA
ALGORITMO
SORGENTE
Linguaggio Grafico
TRADUTTORE
FILE Sorgente
Risultato
ESEGUIBILE
Linguaggio
della Macchina
DATI
FILE Eseguibile
32