TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO...

31

Transcript of TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO...

Page 1: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.
Page 2: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

TECNICHE DI PROGRAMMAZIONE

Descrivere in maniera non ambigua cosa deve fare il programma

POCO PRECISOEs. Scrivere un programma per calcolare l’area di tre figure geometriche (quadrato, triangolo, cerchio) e fare quindi la

somma delle aree.

PIU’ PRECISOEs. Scrivere un programma per caricare e mostrare il lato del

quadrato, la base e l’altezza del triangolo, il raggio del cerchio, calcolare l’area del quadrato,del triangolo e del cerchio,

mostrare i valori delle aree, fare la loro somma e mostrarle.

1

Page 3: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

TECNICHE DI PROGRAMMAZIONE

2Accertarsi che il problema sia risolvibile.

Page 4: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

Test della frase

Indicare se la seguente frase è VERA o FALSA"in queta frase ci sono tre erori"

VERAFALSA

ALTRO

INDECIDIBILE

Page 5: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

TECNICHE DI PROGRAMMAZIONE

3

Se il problema è risolvibile allora è sempre possibile scrivere un algoritmo per trovare la soluzione.

Page 6: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

TECNICHE DI PROGRAMMAZIONE

4Metodo successive approssimazioni.

1- Descrivere mediante frasi o diagrammi di flusso il problema.

SOMMA AREA QUADRATO,TRINGOLO E CERCHIO E MOSTRA

LEGGI I DATI

CALCOLO AREA QUADRATO,TRINGOLO E CERCHIO E MOSTRALI

Page 7: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

Metodo successive approssimazioni.

2- Raffinare la descrizione usando un linguaggio più simile al linguaggio di programmazione.

Leggi i valori per: LatoQuadrato, BaseTriangolo, AltezzaTriangolo, RaggioCerchioAreaQuadrato LatoQuadrato x LatoQuadratoAreaTriangolo (BaseTriangolo x AltezzaTriangolo)/2AreaCerchio PiGreco x (Raggio)2

mostra AreaQuadrato, AreaTriangolo, AreaCerchio SommaAree AreaQuadrato + AreaTriangolo + AreaCerchio mostra SommaAree

Page 8: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

Metodo successive approssimazioni.

2- Scrivere il programma.PROGRAM Area(input,output);{calcolo aree quadrato, trinagolo, cerchio e sommale}

CONSTPiGreco=3,14;

VARLatoQuadrato, BaseTriangolo, AltezzaTriangolo, RaggioCerchio : integer;AreaQuadrato, AreaTriangolo, AreaCerchio, SommaAree : real;

BEGIN AreaQuadrato:= LaqoQuadrato* LaqoQuadrato; AreaTriangolo:= BaseTriangolo* AltezzaTriangolo/2; AreaCerchio:= PiGreco*sqr(RaggioCerchio); writeln(‘Area Quadrato’, AreaQuadrato :5:2); writeln(‘Area Triangolo’, AreaTriangolo :5:2); writeln(‘Area Cerchio’, AreaCerchio :5:2); writeln(‘Somma Aree ‘, SommaAree :6:2);END.

Page 9: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

TECNICHE DI TEST

TRACE - Si usano dati noti che producono risultati noti. Limite: vale solo per i dati di test.

ASSERTION - Seguire passo passo l’algoritmo e verificare che ogni passo sia logicamente coerente con i precedenti.

Limite: per algoritmi molto complessi è difficile da fare.

ON-LINE - Inserisci scritte di controllo per verificare la correttezza dell’elaborazione.

Limite: vale solo per i dati usati nei test.

MANUTENZIONE - Si usano le scritte di controllo e commento.

Page 10: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

1 - DEFINISCI IL PROBLEMA

E’ RISOLVIBILE?

si

2 - PIANIFICA E RAFFINA UNA SEQUENZA DI AZIONI

si

3 - SCRIVI E COMPILA IL CODICE SORGENTE

noRIVEDI IL PUNTO 2SEMBRA CHE IL PROBLEMA SIA RISOLVIBILE ?

no

4 - LANCIA IL PROGRAMMA

CI SONO ERRORI DI SINTASSI ? RIVEDI IL PUNTO 3si

si

5 - USA IL PROGRAMMA

I RISULTATI SONO CORRETTI ? RIVEDI IL PUNTO 4no

noLASCIA PERDERE O

RIDEFINISCI IL PROBLEMA

SONO RICHIESTE ALTRE MODIFICHE ?si

RIPARTI DAL PUNTO 1

Page 11: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.
Page 12: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

USO DI PSEUDO-CODICE

Uno pseudo-codice è una scrittura informale di un programma o di una sua parte a cui corrispondono eventuali istruzioni in un linguaggio tipo Pascal (codice sorgente o source code).

Esempio 1 - Introduci tre caratteri e stampali in ordine inverso a quello di inserimento.

Pseudo codice.

INPUT: leggi i valori del carattere1, carattere2 e carattere3 e mostrali sul monitor.

OUTPUT: mostra sul monitor il carattere3, il carattere2, il carattere1

Page 13: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

Source code.

PROGRAM InvertiCaratteri(input,output);

Introduci tre caratteri e stampali in ordine inverso a quello di inserimento.

VAR Carattere1, Primo carattere. Carattere2, Secondo carattere. Carattere3: Terzo carattere.

char;BEGIN write(‘Introduci tre caratteri e poi premi Invio : ’; readln(Carattere1, Carattere2, Carattere3); writeln(‘I caratteri in ordine inverso sono: ‘, Carattere3, Carattere2,

Carattere3)END.

Page 14: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

Generalizzando potremmo definire un algoritmo per la lettura dei dati, la loro elaborazione e la presentazione dei risultati.

Algoritmo per leggere, elaborare e mostrare.leggi i valori dei datielabora i datimostra a video i risultatiFine dell’algoritmo.

Page 15: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

VAR Real1, Real2: real; Int1, Int2 : integer;Carattere: char;

ESEMPI LETTURA DATI

readln(Int1, Int2, Real1, Real2, Carattere)

readln(Carattere, Int1, Int2, Real1, Real2)

Page 16: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

LE STRINGHE

Una variabile di tipo stringa rappresenta un gruppo di caratteri messi insieme con un qualche criterio.

Per definire le stringhe si usa la parola riservataSTRING.

STRING [ ]costante intera

VAR Stringa1, Stringa2: STRING[10];

Page 17: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

TYPE Stringa10 = STRING[10];VAR Stringa1, Stringa2: Stringa10;

E’ possibile definire un tipo per introdurre un indicatore di riferimento invece di usare tipi anonimi, legati cioè a singole variabili.

TYPE = ;tipoidentificatore

Page 18: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

EsempioProgramma per dare il benvenuto agli studenti del corso.

Pseudo-codice

Mostra la frase di benvenuto generaleChiedi il nome dello studenteMostra la frase di benvenuto usando il nome dello studente

Page 19: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

PROGRAM BenvenutoAlCorso(input,output);Questo programma dà il benvenuto ad ogni studente del corso di Programmazione CONST NomeDocente = ‘Ernesto Burattini’; MaxLungStringa = 50; massimo numero di caratteri permessi TYPE NomeTipo = STRING[MaxLungStringa]; VAR NomeStud = NomeTipo; BEGIN writeln(‘Buongiorno’, il mio nome e’’, NomeDocente, ‘, ’); writeln(‘Potrei sapere il nome dello studente seduto in prima fila a destra?’); readln(NomeStud); writeln(‘Benvenuto al Corso di Programmazione ‘, NomeStud) END.

Benven

Page 20: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

ALCUNE FUNZIONI STANDARD

Ogni funzione è richiamata facendo riferimento al suo identificatore.

Ogni funzione deve avere un argomento.

( )espressioneidentificatore

funzione

Ipotenusa:=sqrt(sqr(Lato1)+sqr(Lato2))

Page 21: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

Nome Funzione TipoArgomento

TipoRisultato

Esempio

abs Valoreassolutodell’argomento

Numerico Comel’argomento

ValAss=abs(-3) 3

sqr Quadratodell’argomento

Numerico Comel’argomento

Quadr=sqr(5) 25

sqrt Radicequadratadell’argomento

Numerico Reale RadQuad=sqrt(16) ) 4

Page 22: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

Nome Funzione TipoArgomento

TipoRisultato

Esempio

pred Predecessoredell’argomento

Carattere Carattere PredCar=pred(‘c’) b

succ Successore Carattere Carattere SuccCar=pred(‘c’) d

chr Carattere ilcui valorenumerico èl’argomento

Intero Carattere Carattere=chr(65) ) A

ord Valorenumerico ilcui carattere èl’argomento

Carattere Intero ValNum=ord(‘A’) ) 65

dell’argomento

Page 23: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

CODIFICA CARATTERI

ASCIIAmerican Standard CodedInformation Interchange

EBCDICExtended Binary Coded Decimal

Interchange Code

Se vogliamo sapere in binario come è codificato un certo carattereè sufficiente applicare la funzione ord al carattere e quindi fare ilbinario del numero decimale così ottenuto.

ord(‘A’)=65 -------- Binario(65)=01000001

Si noti che se chr(65)=‘A’ allora chr(ord(‘A’))=‘A’

Page 24: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

65 41 A66 42 B67 43 C68 44 D69 45 E70 46 F71 47 G72 48 H73 49 I74 4A J75 4B K76 4C L77 4D M78 4E N79 4F O80 50 P81 51 Q82 52 R83 53 S84 54 T85 55 U86 56 V87 57 W88 58 X89 59 Y90 5A Z

97 61 a98 62 b99 63 c100 64 d101 65 e102 66 f103 67 g104 68 h105 69 i106 6A j107 6B k108 6C l109 6D m110 6E n111 6F o112 70 p113 71 q114 72 r115 73 s116 74 t117 75 u118 76 v119 77 w120 78 x121 79 y122 7A z

Dec Esad Simb Dec Esad Simb

Page 25: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

Poiché nel codice ASCII la differenza tra i codici delle maiuscole e minuscole è costante, cioè:

[ord(‘a’)-ord(‘A’)]= [ord(‘b’)-ord(‘B’)]=….= [ord(‘z’)-ord(‘Z’)]

Allora è possibile scambiare la minuscole con le maiuscole con laseguente istruzione:

Letter := chr(ord(Letter)+ord(‘A’)-ord(‘a));

Page 26: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

Dato un testo, controllare che dopo (. Þ) o dopo (. ¶) il testo successivo inizi con la maiuscola. Se non accade sostituire la minuscola con la corrispondente maiuscola.

spazio a capo

Esercizio

Page 27: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

PROGRAMMAZIONE TOP-DOWN

- Dividere il problema in sotto problemi (quando possibile)

- Rappresentare graficamente la struttura del problema

- Assegnare ad ogni identificatore un nome legato al suo significato. Il nome relativo (di una costante o variabile) non deve cambiare nel corso del programma, non si deve cioè chiamare con due nomi diversi lo stesso oggetto. Il valore delle variabili però, pur se il significato resta lo stesso può cambiare nel corso del programma.

Page 28: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

Dato il rapporto di cambio tra l’Euro e le monete europee, supponiamo di dover fare un viaggio attraverso Italia, Francia e Germania. Abbiamo disponibili 1000 Euro e spendiamo :Lit 650.000 in ItaliaFF 870 in FranciaDM 280 in GermaniaCi chiediamo quanti Euro restano a fine viaggio.

Definizione del problema

Esempio

Page 29: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

PSEUDO CODICE INIZIALE

•Calcolare la spesa in Euro in Italia•Calcolare la spesa in Euro in Francia•Calcolare la spesa in Euro in Germania•Sommare tutte le spese in Euro•Calcolare la differenza tra la spesa in Euro e la cifra iniziale

Page 30: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

RAPPRESENTAZIONE GRAFICA

Introduci valori delcambio Trasforma

le spese inEuro

LitEuroFFEuro DDEuro

Calcola la spesa totale in Euro

Calcola ladifferenza

Mostra ilrisultato

Introduci le spesein

Lit, FF, DD ela cifra iniziale

in Euro

SpeseLitSpeseFFSpeseDDCifraEuro

SpeseLitSpeseFFSpeseDD

LitEuroFFEuro DDEuro

SpeseLitEuroSpeseFFEuroSpeseDDEuro

SpeseLitEuroSpeseFFEuroSpeseDDEuro

SpeseTotEuro

CifraEuroSpeseTotEuro

RestoViaggio

Page 31: TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di.

Scrivere il programma in PASCAL

Lit FF DD1936,27 1,955830258 6,559580191

I rapporti di cambio tra euro e Lit, FF e DD sono

Euro