La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di."— Transcript della presentazione:

1

2 TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di tre figure geometriche (quadrato, triangolo, cerchio) e fare quindi la somma delle aree. PIU PRECISO Es. Scrivere un programma per caricare e mostrare il lato del quadrato, la base e laltezza del triangolo, il raggio del cerchio, calcolare larea del quadrato,del triangolo e del cerchio, mostrare i valori delle aree, fare la loro somma e mostrarle. 1

3 TECNICHE DI PROGRAMMAZIONE 2 Accertarsi che il problema sia risolvibile.

4 Test della frase Indicare se la seguente frase è VERA o FALSA "in queta frase ci sono tre erori" VERAFALSA ALTRO INDECIDIBILE

5 TECNICHE DI PROGRAMMAZIONE 3 Se il problema è risolvibile allora è sempre possibile scrivere un algoritmo per trovare la soluzione.

6 TECNICHE DI PROGRAMMAZIONE 4 Metodo 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

7 Metodo successive approssimazioni. 2- Raffinare la descrizione usando un linguaggio più simile al linguaggio di programmazione. Leggi i valori per: LatoQuadrato, BaseTriangolo, AltezzaTriangolo, RaggioCerchio AreaQuadrato LatoQuadrato x LatoQuadrato AreaTriangolo (BaseTriangolo x AltezzaTriangolo)/2 AreaCerchio PiGreco x (Raggio) 2 mostra AreaQuadrato, AreaTriangolo, AreaCerchio SommaAree AreaQuadrato + AreaTriangolo + AreaCerchio mostra SommaAree

8 Metodo successive approssimazioni. 2- Scrivere il programma. PROGRAM Area(input,output); {calcolo aree quadrato, trinagolo, cerchio e sommale} CONST PiGreco=3,14; VAR LatoQuadrato, 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.

9 TECNICHE DI TEST TRACE - Si usano dati noti che producono risultati noti. Limite: vale solo per i dati di test. ASSERTION - Seguire passo passo lalgoritmo 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 dellelaborazione. Limite: vale solo per i dati usati nei test. MANUTENZIONE - Si usano le scritte di controllo e commento.

10 1 - DEFINISCI IL PROBLEMA E RISOLVIBILE? si 2 - PIANIFICA E RAFFINA UNA SEQUENZA DI AZIONI si 3 - SCRIVI E COMPILA IL CODICE SORGENTE no RIVEDI IL PUNTO 2 SEMBRA CHE IL PROBLEMA SIA RISOLVIBILE ? no 4 - LANCIA IL PROGRAMMA CI SONO ERRORI DI SINTASSI ? RIVEDI IL PUNTO 3 si 5 - USA IL PROGRAMMA I RISULTATI SONO CORRETTI ? RIVEDI IL PUNTO 4 no LASCIA PERDERE O RIDEFINISCI IL PROBLEMA SONO RICHIESTE ALTRE MODIFICHE ? si RIPARTI DAL PUNTO 1

11

12 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

13 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.

14 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 dati elabora i dati mostra a video i risultati Fine dellalgoritmo.

15 VAR Real1, Real2: real; Int1, Int2 : integer; Carattere: char; ESEMPI LETTURA DATI readln(Int1, Int2, Real1, Real2, Carattere) readln(Carattere, Int1, Int2, Real1, Real2)

16 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 riservata STRING. STRING [ ] costante intera VAR Stringa1, Stringa2: STRING[10];

17 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

18 Esempio Programma per dare il benvenuto agli studenti del corso. Pseudo-codice Mostra la frase di benvenuto generale Chiedi il nome dello studente Mostra la frase di benvenuto usando il nome dello studente

19 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

20 ALCUNE FUNZIONI STANDARD Ogni funzione è richiamata facendo riferimento al suo identificatore. Ogni funzione deve avere un argomento. ( ) espressione identificatore funzione Ipotenusa:=sqrt(sqr(Lato1)+sqr(Lato2))

21

22 NomeFunzioneTipo Argomento Tipo Risultato Esempio predPredecessore dellargomento Carattere PredCar=pred(c) b succSuccessoreCarattere SuccCar=pred(c) d chrCarattereil cuivalore numerico è largomento InteroCarattere Carattere=chr(65) ) A ordValore numericoil cuicarattere è largomento CarattereIntero ValNum=ord(A) 65 dellargomento

23 CODIFICA CARATTERI ASCII American Standard Coded Information Interchange EBCDIC Extended 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 il binario del numero decimale così ottenuto. ord(A)= Binario(65)= Si noti che se chr(65)=A allora chr(ord(A))=A

24 6541A 6642B 6743C 6844D 6945E 7046F 7147G 7248H 7349I 744AJ 754BK 764CL 774DM 784EN 794FO 8050P 8151Q 8252R 8353S 8454T 8555U 8656V 8757W 8858X 8959Y 905AZ 9761a 9862b 9963c 10064d 10165e 10266f 10367g 10468h 10569i 1066Aj 1076Bk 1086Cl 1096Dm 1106En 1116Fo 11270p 11371q 11472r 11573s 11674t 11775u 11876v 11977w 12078x 12179y 1227Az Dec EsadSimb

25 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 la seguente istruzione: Letter := chr(ord(Letter)+ord(A)-ord(a));

26 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

27 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.

28 Dato il rapporto di cambio tra lEuro e le monete europee, supponiamo di dover fare un viaggio attraverso Italia, Francia e Germania. Abbiamo disponibili 1000 Euro e spendiamo : Lit in Italia FF 870 in Francia DM 280 in Germania Ci chiediamo quanti Euro restano a fine viaggio. Definizione del problema Esempio

29 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

30 RAPPRESENTAZIONE GRAFICA Introduci valori del cambio Trasforma le spese in Euro LitEuro FFEuro DDEuro Calcola la spesa totale in Euro Calcola la differenza Mostra il risultato Introduci le spesein Lit, FF, DD e la cifra iniziale in Euro SpeseLit SpeseFF SpeseDD CifraEuro SpeseLit SpeseFF SpeseDD LitEuro FFEuro DDEuro SpeseLitEuro SpeseFFEuro SpeseDDEuro SpeseLitEuro SpeseFFEuro SpeseDDEuro SpeseTotEuro CifraEuro SpeseTotEuro Resto Viaggio

31 Scrivere il programma in PASCAL I rapporti di cambio tra euro e Lit, FF e DD sono Euro


Scaricare ppt "TECNICHE DI PROGRAMMAZIONE Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare larea di."

Presentazioni simili


Annunci Google