Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
CAPITOLO 3
2
Es. Scrivere un programma per calcolare l’area di tre figure
TECNICHE DI PROGRAMMAZIONE 1 Descrivere in maniera non ambigua cosa deve fare il programma POCO PRECISO Es. Scrivere un programma per calcolare l’area 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 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.
3
2 TECNICHE DI PROGRAMMAZIONE
Accertarsi che il problema sia risolvibile.
4
Test della frase ALTRO INDECIDIBILE
Indicare se la seguente frase è VERA o FALSA "in queta frase ci sono tre erori" FALSA VERA ALTRO INDECIDIBILE
5
3 TECNICHE DI PROGRAMMAZIONE
Se il problema è risolvibile allora è sempre possibile scrivere un algoritmo per trovare la soluzione.
6
TRINGOLO E CERCHIO E MOSTRALI TRINGOLO E CERCHIO E MOSTRA
TECNICHE DI PROGRAMMAZIONE 4 Metodo successive approssimazioni. 1- Descrivere mediante frasi o diagrammi di flusso il problema. LEGGI I DATI CALCOLO AREA QUADRATO, TRINGOLO E CERCHIO E MOSTRALI SOMMA AREA QUADRATO, TRINGOLO E CERCHIO E MOSTRA
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 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.
10
RIDEFINISCI IL PROBLEMA
si RIPARTI DAL PUNTO 1 no LASCIA PERDERE O RIDEFINISCI IL PROBLEMA E’ RISOLVIBILE? si 2 - PIANIFICA E RAFFINA UNA SEQUENZA DI AZIONI no RIVEDI IL PUNTO 2 SEMBRA CHE IL PROBLEMA SIA RISOLVIBILE ? si 3 - SCRIVI E COMPILA IL CODICE SORGENTE RIVEDI IL PUNTO 3 si CI SONO ERRORI DI SINTASSI ? no 4 - LANCIA IL PROGRAMMA RIVEDI IL PUNTO 4 no I RISULTATI SONO CORRETTI ? si 5 - USA IL PROGRAMMA SONO RICHIESTE ALTRE MODIFICHE ?
11
I PROGRAMMI NON SI SCRIVONO DIRETTAMENTE DA TERMINALE !!!
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 dell’algoritmo.
15
readln(Int1, Int2, Real1, Real2, Carattere)
ESEMPI LETTURA DATI VAR Real1, Real2: real; Int1, Int2 : integer; Carattere: char; 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
E’ possibile definire un tipo per introdurre un indicatore di riferimento invece di usare tipi anonimi, legati cioè a singole variabili. TYPE = ; tipo identificatore TYPE Stringa10 = STRING[10]; VAR Stringa1, Stringa2: Stringa10;
18
Programma per dare il benvenuto agli studenti del corso.
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))
22
Nome Funzione Tipo Argomento Risultato Esempio pred Predecessore dell’argomento Carattere PredCar=pred(‘c’) b succ Suc cessore Succ Car=pred(‘c’) d chr il cui valore numerico è l’argomento Intero Carattere=chr(65) ) A ord V alore numerico c arattere è ValNum = ( ‘A’ ) ) 65
23
American Standard Coded Information Interchange EBCDIC
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
Dec Esad Simb Dec Esad Simb 65 41 A 66 42 B 67 43 C 68 44 D 69 45 E
70 46 F 71 47 G 72 48 H 73 49 I 74 4A J 75 4B K 76 4C L 77 4D M 78 4E N 79 4F O 80 50 P 81 51 Q 82 52 R 83 53 S 84 54 T 85 55 U 86 56 V 87 57 W 88 58 X 89 59 Y 90 5A Z 97 61 a 98 62 b 99 63 c d e f g h i 106 6A j 107 6B k 108 6C l 109 6D m 110 6E n 111 6F o p q r s t u v w x y 122 7A z
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
Esercizio spazio a capo
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.
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
Definizione del problema
Esempio Definizione del problema 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 Euro e spendiamo : Lit in Italia FF 870 in Francia DM 280 in Germania Ci chiediamo quanti Euro restano a fine viaggio.
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 LitEuro FFEuro DDEuro Introduci le spesein Lit, FF, DD e la cifra iniziale in Euro SpeseLit SpeseFF SpeseDD CifraEuro SpeseLit SpeseFF SpeseDD LitEuro FFEuro DDEuro Trasforma le spese in Euro SpeseLitEuro SpeseFFEuro SpeseDDEuro SpeseLitEuro SpeseFFEuro SpeseDDEuro Calcola la spesa totale in Euro SpeseTotEuro CifraEuro SpeseTotEuro Calcola la differenza Resto Viaggio Mostra il risultato
31
I rapporti di cambio tra euro e Lit, FF e DD sono
Scrivere il programma in PASCAL Euro
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.