slides - INFN

Transcript

slides - INFN
La scrittura di un programma
Modellizzazione del programma
Scrittura del codice
Esercizi
Sperimentazioni I
Alberto Garfagnini, Marco Mazzocco
Università degli studi di Padova
25 Ottobre 2012
La scrittura di un programma
Modellizzazione del programma
La scrittura di un programma
Modellizzazione programma
Flowcharts
Pseudocode
Scrittura del codice
Esercizi
Scrittura del codice
Esercizi
La scrittura di un programma
Modellizzazione del programma
Scrittura del codice
Esercizi
The programming process
Il processo di scrittura di un programma si articola nei seguenti punti:
1.
2.
3.
4.
5.
6.
7.
8.
9.
Definire quello che un programma deve fare;
Visualizzare la fase di esecuzione del programma;
Utilizzare tools che permettono creare un modello del programma;
Verificare che il modello sia libero da errori di logica
Scrivere il programma sorgente
Compilare il programma
Correggere eventuali errori riscontrati in fase di compilazione
Linkare il programma e creare l’eseguibile
Eseguire il programma e verificarne il funzionamento con
parametri di test
10. Correggere eventuali errori rilevati in fase di esecuzione.
Se necessario ripetere i punti 4-10.
11. Validare i risultati del programma
È molto importante iniziare sempre con una corretta
pianificazione.
La scrittura di un programma
Modellizzazione del programma
Scrittura del codice
Esercizi
Definire scopo del programma
Example
Scrivere un programma che, dato il raggio, calcoli la lunghezza della
circonferenza e l’area del cerchio.
Purpose Calcolare la lunghezza della circonferenza e l’area del
cerchio.
Input Il raggio del cerchio, r .
Processing Calcola la lunghezza della circonferenza 2π · r e l’area del
cerchio, π · r 2 .
Output Stampa un messaggio con area e lunghezza della
circonferenza.
La scrittura di un programma
Modellizzazione del programma
Scrittura del codice
Esercizi
Visualizzare funzionalità del programma
Prima di scrivere il programma bisogna visualizzare il suo
funzionamento nella propria mente: immaginare quello che
viene mostrato sullo schermo del computer mentre il
programma funziona.
Possibile soluzione:
Inserire il raggio dei cerchio: 1
La lunghezza della circonferenza e’: 6.2832
L’area del cerchio e’: 3.1416
La scrittura di un programma
Modellizzazione del programma
Scrittura del codice
Modellizzazione del programma
Design tools comunemente utilizzati:
1. Diagrammi di gerarchia (hierarchy charts)
2. Diagrammi di flusso (flowcharts)
3. Pseudocodice (pseudocode)
In seguito descriveremo brevemente i diagrammi di flusso e lo
pseudocodice.
Esercizi
La scrittura di un programma
Modellizzazione del programma
Scrittura del codice
Esercizi
Flowchart symbols
START o END del programma
Direzione del flusso logico
INPUT oppure OUTPUT
Operazioni (esempio calcoli aritmetici)
Decision or Branch
La scrittura di un programma
Modellizzazione del programma
Scrittura del codice
Esempio di flowchart
Ecco il flowchart del programma esempio.
START
END
Inserire R
Stampa
AREA
CIRC = 2πR
Stampa
CIRC
AREA = πR · R
Esercizi
La scrittura di un programma
Modellizzazione del programma
Scrittura del codice
Esercizi
Pseudocode
Incrocio tra il linguaggio umano e un linguaggio di programmazione.
Il programmatore si focalizza sugli step logici del programma senza
preoccuparsi della sintassi o dei dettagli della programmazione.
Low Level Pseudocode
High Level Pseodocode
• Prendi il raggio
• Calcola la lunghezza della
circonferenza
• Mostra la lunghezza della
circonferenza
• Calcola l’area del cerchio
• Mostra l’area del cerchio
• Output "Inserisci raggio del cerchio:"
• Input raggio
• Calcola lunghezza circonferenza come
•
•
•
•
•
La scrittura di un programma
2 · π · r e salvala nella variabile
circonferenza
Output "Lunghezza della circonferenza:"
Output il valore della circonferenza
Calcola l’area del cerchio come π · r 2 e
salvala nella variabile area
Output "Area del cerchio:"
Output il valore dell’area
Modellizzazione del programma
Scrittura del codice
La scrittura del codice
Una volta verificato il modello del programma (flowchart o pseudocode) e
corretto, si passa alla scrittura del codice in C++.
#include <iostream>
#include <cmath>
int main( )
{
using namespace std;
cout << "Inserire Raggio: ";
double raggio;
cin >> raggio;
double circ = 2. * M_PI * raggio;
cout << "Circonferenza: " << circ << endl;
double area = M_PI * raggio * raggio;
cout << "Area: " << area << endl;
return 0;
}
Esercizi
La scrittura di un programma
Modellizzazione del programma
Scrittura del codice
Esercizi
Esercizi
Somma di interi
Scrivere un programma che chieda all’utente di inserire due numeri interi,
calcoli la loro somma e differenza e stampi i risultati sullo standard output.
1. Scrivere il diagramma di flusso del programma.
2. Tradurre lo schema in linguaggio C++.
3. Compilare il programma e verificare il suo comportamento.
Area di un rettangolo
Scrivere un programma che calcoli l’area di un rettangolo.
1.
2.
3.
4.
Individuare le fasi necessarie di INPUT e OUTPUT.
Scrivere un algoritmo in pseudocodice che implementa il programma.
Tradurre lo schema in linguaggio C++.
Compilare il programma e verificare il suo comportamento.
La scrittura di un programma
Modellizzazione del programma
Scrittura del codice
Esercizi
Moto di un proiettile
Un cannone spara proiettili con una velocità inziale v◦ = 300 m/s e deve colpire
un bersaglio situato su un monte ad un’altezza h = 103 m rispetto al cannone;
la distanza d’aria tra cannone e bersaglio è l = 5 · 103 m.
Trovare l’angolo di alzo, α.
Le equazioni del moto del proiettile sono:
v◦
y
α
l
x
= v◦ cos αt
(1)
y
1
= v◦ sin αt − gt 2
2
(2)
Ricavando l’equazione della traiettoria e ricordando che
1/ cos2 = 1 + tan2 si ottiene
h
x
2v◦2
2v◦2 y
tan α −
tan α +
+1=0
gx
gx 2
2
(3)
La scrittura di un programma
Modellizzazione del programma
Scrittura del codice
Esercizi
Moto di un proiettile (2)
Le soluzioni sono
tan α =
v◦2
gx
Se il discriminante
∆=
s
±
v◦4
2v◦2 y
−1
−
g2x 2
gx 2
v◦4
2v◦2 y
−
−1
g2x 2
gx 2
(4)
(5)
è positivo, un bersaglio può essere colpito con due diversi tiri, uno diretto
(soluzione con il segno meno, cioè angolo minore) e l’altro indiretto. Se ∆ = 0
esiste un’unica soluzione tan α = v◦2 /(gx). Nel caso ∆ < 0 il bersaglio non può
essere colpito.
Programma 3
Scrivere un programma che data l’altezza del bersaglio e la distanza in linea
d’aria cannone-bersaglio, permetta di calcolare l’angolo α.
Programma 4
Scrivere un programma che calcoli l’altezza massima ymax raggiunta dal
proiettile e la gittata dato l’angolo di alzo del cannone, α.
La scrittura di un programma
Modellizzazione del programma
Scrittura del codice
Esercizi
Esercizi per casa
Scrivere un programma che stampa a video la dimensione di tutti i tipi
semplici del linguaggio C++
Scrivere un programma che chiede all’utilizzatore di inserire due istanti
di tempo (con il formato ore, minuti e secondi) e calcola la differenza di
tempo intercorsa stampandola sullo standard output in unità di ore,
minuti e secondi.