unità didattica 6 Le procedure e le funzioni create dall utente

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "unità didattica 6 Le procedure e le funzioni create dall utente"

Transcript

1 unità didattica 6 Le procedure e le funzioni create dall utente 1. Introduzione Si è più volte sottolineato quanto sia importante, nel realizzare i programmi di elaborazione dati, la semplicità strutturale dell algoritmo risolutivo che ispira il codice presente nel programma. seguimi Se un programma ha una struttura semplice è facile da leggere e agevole da comprendere. Si tratta di una caratteristica che rende molto produttiva l attività di aggiornamento del programma nel corso del tempo. Viceversa, programmi realizzati mediante algoritmi complicati, lunghi e poco chiari non consentono facilmente nei tempi futuri il cambiamento immediato delle funzioni svolte. Come abbiamo già avuto modo di sottolineare in precedenza, a queste esigenze di semplicità, leggibilità e chiarezza risponde efficacemente la metodologia di programmazione Top-Down (dall alto verso il basso), consistente nella scomposizione di un problema in sottoproblemi, i cd. moduli o fasi, più semplici da analizzare e da risolvere. Ad esempio, nel caso in cui si voglia calcolare la media aritmetica di ciascuna riga e colonna di una matrice da memorizzare in memoria centrale, con il risultato finale di visualizzare la matrice di partenza e le medie individuate, si potrebbe pensare di scomporre (o raffinare) il problema nel suo insieme in tre fasi: caricamento iniziale della matrice in memoria centrale; calcolo delle medie; visualizzazione dei risultati. La fig. 1 mostra la rappresentazione grafica del procedimento seguito. Nella figura distinguiamo una logica di controllo generale in base alla quale, dopo l inizio dell esecuzione del programma (programma principale) viene dapprima «passato» il controllo al modulo CARICA, che eseguirà le funzioni tipiche della memorizzazione di un array bidimensionale. UD6 Le procedure e le funzioni create dall utente 33

2 INIZIO CARICA MEDIE VISUALIZZA FINE Fig. 1 Programma principale di elaborazione di una matrice Alla fine del suo compito il modulo (o sottoprogramma) CARICA ritornerà il controllo al programma principale che a sua volta ripasserà il controllo al sottoprogramma MEDIE che ancora a sua volta alla fine ritornerà il controllo al programma principale e così via. La figura presente nel flow-chart: SOTTOPROGRAMMA A indica il comando dell esecuzione, da parte di un modulo (detto modulo chiamante), di un modulo gerarchicamente inferiore (sottoprogramma) il cui nome è presente all interno della figura stessa. È chiaro che l algoritmo delineato in fig. 1 non è completo; mancano, infatti, le operazioni di dettaglio di ciascun sottoprogramma (CARICA, MEDIE e VISUALIZZA). Separatamente, poi (se non esistono già), occorrerà realizzare i sottoprogrammi. In fig. 2 sono disegnati i flow-chart relativi al programma di cui all esempio. INIZIO CARICA LEGGI N, M I = 1, N J = 1, M INIZIO MEDIE SOM = 0 I = 1, N J = 1, M INIZIO VISUALIZZA VISUALIZZA V(J) J = 1, N LEGGI MAT (I, J) SOM = SOM + MAT (I, J) FINE VISUALIZZA V(I) = SOM/M FINE CARICA FINE MEDIE Fig. 2 Sottoprogrammi relativi alla fig Modulo on line Uno strumento per programmare: cenni al linguaggio Pascal

3 Il procedimento appena descritto si itera se un sottoprogramma si riferisce ad un problema che merita di essere ulteriormente scomposto. In questo caso il sottoprogramma sarà diviso in diversi sottoprogrammi, gerarchicamente subordinati, che saranno dettagliati in un momento successivo. Si forma la struttura ad albero che spiega anche il nome, Top-Down, della metodologia adottata. Nella fig. 2 è mostrato chiaramente come la struttura del programma, nel suo insieme, si scompone in tre livelli, ottenuti focalizzando la propria analisi progettuale «dall alto verso il basso». Prima si scompone il problema principale in tre moduli e poi, allorché nell analisi del secondo modulo si rileva una certa complessità, si «scende più in basso» a dettagliare un ulteriore sottoproblema. La figura ottenuta viene anche detta skeleton del programma. seguimi Il risultato raggiunto offre, tra gli altri, il vantaggio di dividere il lavoro di programmazione tra diverse risorse umane: un programmatore potrebbe realizzare il primo sottoprogramma, un altro programmatore realizzare il secondo sottoprogramma ecc. Il Pascal consente di realizzare un progetto di programmazione ottenuto secondo la metodologia Top- Down. Ogni volta che si incontra nell algoritmo un passaggio di controllo ad un sottoprogramma, si può far uso di una funzione o di una procedura, definita dall utente. Abbiamo visto in precedenza che la differenza tra una funzione ed una procedura in Pascal consiste nel fatto che la prima restituisce alla fine un valore in base ad elaborazioni matematiche o su stringhe, mentre la procedura dà semplicemente luogo ad operazioni ed elaborazioni, senza necessariamente restituire in output un valore. In base al sottoprogramma progettato, pertanto, se si vuole codificare in Pascal l algoritmo ideato, si utilizzeranno procedure o funzioni definite dall utente. 2. Le procedure definite dall utente Per utilizzare una procedura definita dall utente occorre prevedere due azioni: definizione della procedura; richiamo dell esecuzione della procedura. Per definire una procedura, occorre usare la parola chiave PROCEDURE, seguita dal nome attribuito alla procedura e dal segno di punto e virgola (;). Ad esempio, se vogliamo definire una procedura che calcola la media, potremmo scrivere la linea: PROCEDURE media ; Talvolta occorre passare dei parametri ad una procedura, ciò capita quando la procedura esegue dei calcoli su grandezze che, di volta in volta, possono cambiare il loro contenuto e non su variabili fisse. In questi casi si parla di parametri di ingresso. In altri casi, oltre ai parametri di ingresso, possono essere presenti parametri in uscita, ovvero risultati ottenuti dall esecuzione della procedura che non sono memorizzati in variabili fissate, ma in variabili che, di volta in volta, sono indicate dall istruzione che richiama la procedura. Quando una procedura contiene dei parametri di ingresso e/o di uscita, tali parametri sono racchiusi tra le parentesi che seguono il nome della procedura. Inoltre, ciascun parametro deve essere anche seguito dai due punti e dal suo tipo. Ad esempio, se la procedura media prevede la presenza dei parametri mat, n e m (ad esempio individuanti una certa matrice mat composta di n righe e di m colonne), sui quali evidentemente saranno compiute delle elaborazioni, si dovrà scrivere: PROCEDURE media (mat: matrice; n,m : INTEGER); dove matrice è il tipo (definito nel modulo chiamante) relativo ad una matrice bidimensionale, come ad esempio: TYPE MATRICE = array[1..10, 1..10] ; UD6 Le procedure e le funzioni create dall utente 35

4 A prescindere dall esistenza o meno dei parametri di ingresso-uscita, successivamente alla linea di nome della procedura, occorre dettagliare le azioni effettuate dalla procedura, seguendo le stesse regole che valgono per un programma Pascal: si può far uso della sezione di dichiarazione dei tipi (TYPE) e delle variabili (), si scriveranno delle linee ed END laddove necessario e così via. Una procedura, però, a differenza del programma principale, deve terminare con una linea END senza porre il punto alla fine, ma solo il carattere «;». Quando all interno del programma principale si vuole fare eseguire una determinata procedura, è sufficiente scrivere una linea costituita soltanto dal nome della procedura desiderata. Ad esempio, dopo aver definito la procedura calcola, se la si vuole eseguire nel programma principale, basta semplicemente scrivere: calcola ; Si tenga presente che il richiamo (call) di una procedura che prevede il passaggio di parametri deve però essere effettuata passando i parametri: ciò avviene ponendo le variabili che prenderanno il posto dei parametri tra parentesi. Ad esempio, dopo aver definito la procedura media definita con i parametri mat, n e m, si scriverà: media (a, 10, 5); per comandare la materiale esecuzione della procedura media sulla matrice di nome a che ha 10 righe e 5 colonne. Nella fig. 3 riportiamo la codifica di un programma che, dopo aver provveduto alla memorizzazione in memoria centrale (attraverso la tastiera) di due matrici bidimensionali rispettivamente di dimensioni (5 x 10) e (3 x 7), ne determina per ciascuna la media aritmetica per riga, eventualmente visualizzando le medie. Risulta a questo punto necessario avanzare alcune osservazioni riguardo l uso di procedure create dall utente, prendendo spunto dall esempio contenuto in fig. 3. PROGRAM elab_mat; USES WINCRT; TYPE matrice=array[1..50,1..50] OF INTEGER; a: matrice; b: matrice; PROCEDURE media(n,m: INTEGER; mat:matrice; r:char); {PROCEDURA DI CALCOLO DELLE MEDIE PER RIGHE DI UNA MATRICE BIDIMENSIONALE n: RIGHE DELLA MATRICE m: COLONNE DELLA MATRICE mat: MATRICE r: SE = S ALLORA LE MEDIE SONO ANCHE VISUALIZZATE } som,i,j: INTEGER; med: REAL; som:=0; FOR j:=1 TO m DO som:=som+mat[i,j]; med:=som/m; WRITELN( LA MEDIA DELLA RIGA,i, E,med); IF r= S THEN 36 Modulo on line Uno strumento per programmare: cenni al linguaggio Pascal

5 WRITELN( ); WRITELN( DIGITA UN TASTO PER CONTINUARE ); REPEAT UNTIL KEYPRESSED; PROCEDURE carica_media(n,m: INTEGER; mat:matrice; s:char); {PROCEDURA DI CARICAMENTO DI UNA MATRICE BIDIMENSIONALE CON CALCOLO DELLA MEDIA n: RIGHE DELLA MATRICE m: COLONNE DELLA MATRICE mat: MATRICE s: SE = S ALLORA LE MEDIE SONO ANCHE VISUALIZZATE } i,j: INTEGER; med: REAL; WRITELN( CARICAMENTO DELLA RIGA,i); WRITELN( ); FOR j:=1 TO m DO WRITE( DIGITA L ELEMENTO DI COLONNA,J); READLN(mat[i,j]); media(n,m,mat,s); {PROGRAMMA PRINCIPALE} { } carica_media(5,10,a, S ); carica_media(3,7,b, N ); { } END. Fig. 3 Uso di procedure con passaggio di parametri Innanzitutto, è importante che la dichiarazione della procedura preceda il segmento di programma che ne richiede l esecuzione. Ciò significa che in presenza di una struttura di programma del tipo (v. pagina seguente) UD6 Le procedure e le funzioni create dall utente 37

6 Istruzione 1 Istruzione 2 ** PROCEDURA cento ** Istruzione 110 Istruzione 120 ** PROCEDURA mille ** Istruzione 1001 Istruzione 1002 Istruzione 130 ** PROCEDURA duemila ** Istruzione 2001 Istruzione 2002 Istruzione 2003 Istruzione 140 Istruzione 3 Istruzione 4 **PROCEDURA duecento ** Istruzione 210 Istruzione 220 Istruzione 230 Istruzione 5 bisogna fare attenzione all ordine secondo il quale si descrivono, e si dichiarano, le diverse procedure cento, duecento, mille e duemila. La regola generale che bisogna seguire è che la procedura chiamata sia definita precedentemente rispetto alla procedura chiamante. Pertanto, nel nostro esempio, occorre fare così: PROCEDURE mille ( ) PROCEDURE duemila ( ) PROCEDURE duecento ( ) PROCEDURE cento ( ) PROGRAMMA PRINCIPALE fai attenzione È irrilevante scrivere prima mille o duemila, così come non è essenziale far precedere duecento a cento. Quel che è importante, invece è che mille e duemila precedano cento. 38 Modulo on line Uno strumento per programmare: cenni al linguaggio Pascal

7 3. Il passaggio di parametri per valore Nell esempio di cui alla fig. 3, si è fatto uso di due procedure con passaggio di parametri, di nomi carica_media e media. La prima procedura, di nome carica_media, si prefigge l obiettivo di memorizzare un insieme di valori numerici interi in una matrice bidimensionale, nonché di richiamare un ulteriore procedura annidata per calcolare la media (procedura media). Questa procedura è generalizzata, nel senso che riesce a memorizzare qualsiasi matrice bidimensionale, purché inferiore a 51 righe e 51 colonne. Questo è molto importante perché qualsiasi sia la matrice bidimensionale da caricare, si può sfruttare l esistenza della procedura carica_media, semplicemente richiamandola. Chiaramente, per il caso specifico richiesto, cioè a seconda del numero di righe e di colonne desiderate, bisogna passare al sottoprogramma i parametri richiesti, ovvero nel nostro esempio, rispettivamente il numero di righe, il numero di colonne ed il nome della matrice da caricare. Perciò, con l istruzione presente nel programma principale: carica_media (5, 10, a, s ) si intende caricare la matrice a costituita da 5 righe e da 10 colonne. Una particolarità dell esempio di codifica in esame riguarda il fatto che, dato che tra i parametri passati c è una variabile di tipo strutturato (ovvero la matrice), non è possibile dichiarare il suo tipo come ARRAY, ma è necessario definire un nuovo tipo introdotto dal programmatore (nella terza e nella quarta linea del codice): TYPE Matrice : ARRAY [1.. 50, 1 50]; Questa istruzione è poi sfruttata sia nel programma principale che nel sottoprogramma. fai attenzione La matrice è stata dichiarata intenzionalmente grande (50 righe x 50 colonne), in quanto così facendo si allargano i limiti di applicazione del programma anche ai casi di dati notevolmente numerosi. In verità, nel programma principale le effettive dimensioni delle due matrici da elaborare sono come abbiamo già sottolineato (5 x 10) per la prima matrice e (3 x 7) per la seconda matrice. Perciò, sfruttando la stessa istruzione di call: carica_media (.) si possono caricare ambedue le matrici. È chiaro che n e m sono parametri di ingresso alla procedura carica_media, mentre mat è un parametro di elaborazione interno alla procedura. Analogamente, la procedura media, che determina le medie per righe di una certa matrice, possiede parametri di ingresso n, m e mat che rappresentano rispettivamente le righe, le colonne e la matrice da elaborare. In più, esiste il parametro di ingresso r che orienta la procedura media a visualizzare o meno ciascuna media calcolata: se r contiene il carattere S, allora il sottoprogramma media, oltre a determinare le varie medie, le visualizzerà anche. Le procedure che prevedono i parametri di ingresso-uscita viste sin qui sfruttano il cosiddetto passaggio parametri per valore. Infatti, le variabili definite all interno della procedura che costituiscono i parametri hanno una validità solo locale. In altre parole, sono create dinamicamente: quando viene eseguita la procedura, le variabili locali (n, m e mat nel nostro esempio) assumono il valore che viene passato nel richiamo procedurale. Quando la procedura termina le variabili locali (e quindi anche quelle che fungevano da parametri) non hanno più consistenza. Riferendoci al programma scelto come esempio, se si comandasse all interno del programma principale, mediante un istruzione di scrittura (come la WRITE) di emettere il contenuto della matrice a, non si otterrebbero i dati costituenti la matrice immessa tramite la procedura carica_media. Il che significa che, attraverso questo passaggio di parametri, alla fine dell esecuzione della procedura i parametri non ritornano con i risultati calcolati nella procedura. Ciò implica che i nomi delle variabili non hanno alcuna importanza all infuori della procedura. UD6 Le procedure e le funzioni create dall utente 39

8 seguimi Se si usasse una variabile all interno del programma principale (variabile globale) con lo stesso nome di una variabile locale, si tratterebbe di due cose distinte: al di fuori della procedura, la variabile locale non influenzerebbe in alcun modo il contenuto della variabile globale. Comunque è sempre sconsigliato utilizzare una variabile globale con lo stesso nome di una variabile locale. Perciò, i parametri possono essere classificati in parametri formali e parametri effettivi: i primi sono i parametri citati nella dichiarazione di una procedura. Come abbiamo visto, si tratta di variabili dinamiche in quanto a contenuto. I parametri effettivi sono, invece, quelle variabili che all interno del programma principale hanno una loro validità ed i cui valori sono trasferiti nei parametri formali di una procedura. Nell esempio del programma di cui alla fig. 3 i parametri effettivi della procedura carica_media sono; 5, 10, a e s mentre n, m mat e v sono i parametri formali. Ricordiamo in ultima analisi che le variabili appartenenti al blocco chiamante, cioè i parametri effettivi, non sono modificate. 4. Il passaggio di parametri per variabile Esiste anche un altro modo di trasmettere dei parametri ad una procedura: si tratta del passaggio per variabile (o per indirizzo) in base al quale anche i parametri effettivi subiscono eventuali modifiche ad opera dell esecuzione di una procedura. Se si utilizza il passaggio per variabile, la procedura può condizionare variabili esterne o trasmesse ad essa. Nel Pascal, il passaggio dei parametri per variabile viene esplicitato anteponendo la parola al parametro nella dichiarazione della procedura, come ad esempio nel seguente statement: PROCEDURE somma(n: INTEGER; i: INTEGER); In questo caso nella procedura somma esistono due parametri: il primo si chiama n ed è un parametro passato per valore, mentre il secondo si chiama i e costituisce un parametro passato per variabile in quanto è preceduto dalla parola. Come esempio di passaggio di parametri per variabile, presentiamo il seguente programma che si pone l obiettivo di raddoppiare un valore inserito tramite tastiera un certo numero di volte, visualizzando alla fine il risultato. PROGRAM raddoppio; USES WINCRT; num,i,valore: INTEGER; PROCEDURE somma(n:integer ; i: INTEGER); {PROCEDURA DI RADDOPPIO DI UN CERTO NUMERO PER N VOLTE n: NUMERO DI RADDOPPI DA EFFETTUARE i: RISULTATO DINAMICO DEL RADDOPPIO} j:integer; FOR j:=1 TO n DO i:=i*2; {PROGRAMMA PRINCIPALE} { } 40 Modulo on line Uno strumento per programmare: cenni al linguaggio Pascal

9 WRITELN( DIGITA UN VALORE DA RADDOPPIARE DI VOLTA IN VOLTA ); READLN(valore); WRITELN( DIGITA IL NUMERO DI VOLTE CHE VUOI RADDOPPIARE ); READLN(num); i:=valore; somma(num,i); WRITELN( IL RADDOPPIO DI,valore, PER,num, VOLTE FA:,i); REPEAT UNTIL KEYPRESSED; { } END. 5. Le funzioni create dall utente Ad ogni funzione è assegnato un tipo ben preciso come il tipo intero, reale, booleano ecc. Come avviene anche per le procedure, per utilizzare una funzione definita dall utente, occorre procedere a due azioni distinte: definizione della funzione; richiamo della funzione. Per definire una funzione occorre usare la parola FUNCTION seguita dal nome assegnato alla funzione e dai parametri che vanno indicati, così come per le procedure, tra le parentesi tonde. Il tipo posseduto dalla funzione deve infine terminare la definizione. Ad esempio, la funzione relativa al calcolo dell area di un rettangolo sarà definita così: FUNCTION area(base, altezza: REAL): REAL; Un altro esempio potrebbe riguardare una funzione che deve verificare se tre numeri possano corrispondere alle misure dei tre lati di un triangolo, così dichiarabile: FUNCTION triangolo(l1, l2, l3: REAL): BOOLEAN; Il passaggio dei parametri alla funzione può avvenire anche in questo caso per valore o per variabile. È ovvio che prima della fine del blocco eseguibile della funzione, il nome usato per la funzione deve ricevere un valore compatibile con il tipo in precedenza indicato. Per richiamare una funzione si dovrà semplicemente citarne il nome e dichiararne i parametri. Ad esempio, l istruzione presente nel corpo del programma principale: IF area(b,h) > 100 THEN WRITE( AREA > 100 ) ELSE WRITE( AREA <= 100 ); contiene una chiamata di funzione che è: area(b,h). In questo caso precedentemente a tale istruzione deve essere stata dichiarata la funzione, così come segue: FUNCTION area(base, altezza: REAL): REAL); area := base * altezza ; Viceversa, la funzione triangolo precedentemente descritta va completata in questo modo: FUNCTION triangolo(l1, l2, l3 : REAL): BOOLEAN); IF (l1<(l2+l3)) AND (l2<(l1+l3)) AND (l3<(l1+l2)) THEN triangolo:=true ELSE triangolo:= FALSE ; Allora, nel corpo del programma chiamante, per sapere se tre valori memorizzati in v1, v2 e v3 possano costituire i lati di un triangolo, basta interrogare la funzione triangolo, come ad esempio: WRITELN( Digita tre valori ); READLN (v1, v2, v3); IF triangolo(v1, v2, v3) THEN WRITELN( Sono lati di un triangolo ) ELSE WRITELN( non sono lati di un triangolo ); UD6 Le procedure e le funzioni create dall utente 41

10 6. Esempi Come applicazione dei concetti sin qui esposti, seguono cinque esempi di codifiche in Pascal. Esempio 1 Il programma che segue ha lo scopo di permettere all utente di inserire tre numeri reali e di verificare se essi corrispondano o meno ai lati di un triangolo. Ricordiamo che in un triangolo occorre che qualsiasi lato sia minore della somma degli altri lati. PROGRAM triangoli; USES WINCRT; a,b,c: REAL; {PROGRAMMA PRINCIPALE} WRITELN( ************************************************************* ); WRITELN( * TRE VALORI RAPPRESENTANO TRE LATI DI UN TRIANGOLO?* ); WRITELN( ************************************************************* ); WRITE( Digita i tre valori da verificare: ); READLN(a,b,c); IF (a < (b + c)) AND (b < (a + c)) AND (c < (a + b)) THEN WRITELN( I valori,a:3:1,,b:3:1, e,c:3:1, sono lati di un triangolo ) ELSE WRITELN( I valori,a:3:1,,b:3:1, e,c:3:1, non sono lati di un triangolo ) END. Esempio 2 Il programma che segue ha lo scopo di permettere all utente di inserire N numeri reali allo scopo di visualizzare per ciascuno di essi, a fianco, il quadrato e la radice quadrata. La cardinalità dei valori da inserire (N) è indicata dallo stesso utente. PROGRAM qua_rad; USES WINCRT; n,i: INTEGER; num: REAL; {PROGRAMMA PRINCIPALE} WRITELN( ********************************** ); WRITELN( * QUADRATI E RADICI QUADRATE * ); WRITELN( ********************************** ); WRITE( Quanti valori vuoi elaborare? ); READLN(n); WRITE( Inizia l elaborazione. ); WRITE( Digita un valore ); READLN(num); WRITELN( Quadrato:,SQR(num):6:0, Radice:,SQRT(num):6:2); END. 42 Modulo on line Uno strumento per programmare: cenni al linguaggio Pascal

11 Esempio 3 Il programma che segue permette all utente di digitare N numeri reali da memorizzare in un vettore in memoria centrale per il quale si desidera poi calcolare la media aritmetica, il massimo ed il minimo e visualizzare i risultati. Il programma che segue sfrutta l esecuzione di procedure tramite passaggio di parametri per valore. PROGRAM ela_vet; USES WINCRT; TYPE vettore=array[1..50] OF INTEGER; v: vettore; n: INTEGER; PROCEDURE min_max(n: INTEGER; vet:vettore); {PROCEDURA DI CALCOLO DEL MINIMO E MASSIMO DI UN VETTORE n: ELEMENTI DEL VETTORE vet: VETTORE } i: INTEGER; min,max: REAL; min:=vet[1]; max:=vet[1]; FOR i:=2 TO n DO IF vet[i] > max THEN max:=vet[i]; IF vet[i] < min THEN min:=vet[i]; WRITELN( Il minimo è,min); WRITELN( Il massimo è,max); PROCEDURE media(n: INTEGER; vet:vettore); {PROCEDURA DI CALCOLO DELLA MEDIA DI UN VETTORE n: ELEMENTI DEL VETTORE vet: VETTORE } som,i: INTEGER; med: REAL; som:=0; som:=som + vet[i]; med:=som/n; WRITELN( LA MEDIA DEGLI ELEMENTI E,med); UD6 Le procedure e le funzioni create dall utente 43

12 PROCEDURE carica(n: INTEGER; vet:vettore); {PROCEDURA DI CARICAMENTO DI UN VETTORE n: ELEMENTI VETTORE vet: vettore } i: INTEGER; WRITELN( Digita l elemento,i); READLN(vet[i]); media(n,vet); min_max(n,vet); {PROGRAMMA PRINCIPALE} WRITELN( Digita il numero di elementi del vettore ); READLN(n); CARICA(n,v); END. Esempio 4 Con il programma di seguito mostrato si vuole consentire all utente di inserire trenta nomi propri di persona da memorizzare in un vettore in memoria centrale e di determinare la presenza fra essi di un certo nome scelto ed indicato dall utente. Viene infine visualizzato se e quante volte il nome indicato è presente. Il programma fa uso di varie istruzioni di richiamo (call) dell esecuzione di procedure attraverso passaggio di parametri per variabile. PROGRAM ela_nom; { QUESTO PROGRAMMA SFRUTTA LE CHIAMATE DI PROCEDURA TRAMITE PARAMETRI PER IABILI } USES WINCRT; TYPE vettore=array[1..50] OF STRING[15]; stringa=string[15]; v: vettore; n,volte: INTEGER; vnom:stringa; PROCEDURE ricerca( n: INTEGER; vet:vettore; vnom:stringa; num: INTEGER); {PROCEDURA DI RICERCA DI UN NOME NEL VETTORE n: ELEMENTI DEL VETTORE 44 Modulo on line Uno strumento per programmare: cenni al linguaggio Pascal

13 i: INTEGER; vet: VETTORE vnom: NOME DA RICERCARE } num:=0; IF vet[i]=vnom THEN num:=num+1; PROCEDURE CARICA( N: INTEGER; VET:VETTORE); {PROCEDURA DI CARICAMENTO DI UN VETTORE n: ELEMENTI VETTORE vet: VETTORE } i: INTEGER; WRITELN( Digita l elemento,i); READLN(vet[i]); {PROGRAMMA PRINCIPALE} volte:=0; WRITELN( Digita il nome da cercare nel vettore ); READLN(vnom); WRITELN( Digita il numero di elementi del vettore ); READLN(n); carica(n,v); ricerca(n,v,vnom,volte); IF volte>0 THEN WRITELN( Il nome è presente,volte, volte ) ELSE WRITELN( Il nome non è presente ); END. Esempio 5 Il programma che segue intende permettere la digitazione da parte dell utente di N numeri naturali da memorizzare in un vettore in memoria centrale. Successivamente il programma calcola il fattoriale di ogni componente del vettore e visualizza i risultati. Le chiamate procedurali del programma utilizzano il criterio del passaggio parametri per variabile. UD6 Le procedure e le funzioni create dall utente 45

14 PROGRAM fattor; { QUESTO PROGRAMMA SFRUTTA LE CHIAMATE DI PROCEDURA TRAMITE PARAMETRI PER IABILI } USES WINCRT; TYPE vettore=array[1..50] OF INTEGER; v,vfatt: vettore; n,j: INTEGER; PROCEDURE cal_fatt( n: INTEGER; vet:vettore; vetfat:vettore ); {PROCEDURA DI CALCOLO FATTORIALI ELEMENTI DEL VETTORE n: ELEMENTI DEL VETTORE vet: VETTORE vetfat: VETTORE DEI FATTORIALI } i,k: INTEGER; { INIZIALIZZAZIONE VETTORE DEI FATTORIALI } vetfat[i]:=1; { CALCOLO DEL FATTORIALE } FOR k:=1 TO vet[i] DO vetfat[i]:=vetfat[i]*k; 46 Modulo on line Uno strumento per programmare: cenni al linguaggio Pascal

15 PROCEDURE CARICA( n: INTEGER; vet:vettore); {PROCEDURA DI CARICAMENTO DI UN VETTORE n: ELEMENTI VETTORE vet: VETTORE } i: INTEGER; WRITELN( Digita l elemento,i); READLN(vet[i]); {PROGRAMMA PRINCIPALE} END. WRITELN( Digita il numero di elementi del vettore ); READLN(n); carica(n,v); cal_fatt(n,v,vfatt); FOR j:=1 TO n DO WRITELN( Il fattoriale di,v[j], è,vfatt[j]); UD6 Le procedure e le funzioni create dall utente 47

unità didattica 3 Le strutture condizionali e le strutture iterative

unità didattica 3 Le strutture condizionali e le strutture iterative unità didattica 3 Le strutture condizionali e le strutture iterative 1. La struttura condizionale Il Pascal prevede la codifica della struttura condizionale (indicata anche con il nome di struttura dell

Dettagli

unità didattica 2 Le prime istruzioni notevoli in Pascal

unità didattica 2 Le prime istruzioni notevoli in Pascal unità didattica 2 Le prime istruzioni notevoli in Pascal 1. L operazione di assegnazione Quando si desidera che una certa variabile contenga un determinato valore costante, o un risultato di operazioni

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

Come ragiona il computer. Problemi e algoritmi

Come ragiona il computer. Problemi e algoritmi Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Per risolvere il problema

Dettagli

UD 3.2b: Programmazione in Pascal (1)

UD 3.2b: Programmazione in Pascal (1) UD 3.2b: Programmazione in Pascal (1) Il Linguaggio di Programmazione Pascal Esistono molti linguaggi di programmazione. Per motivi didattici utilizzeremo una versione ridotta di un linguaggio di programmazione

Dettagli

modulo on line Uno strumento per programmare: cenni al linguaggio Pascal

modulo on line Uno strumento per programmare: cenni al linguaggio Pascal modulo on line Uno strumento per programmare: cenni al linguaggio Pascal ud1 Introduzione al Pascal ud2 Le prime istruzioni notevoli in Pascal ud3 Le strutture condizionali e le strutture iterative ud4

Dettagli

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica Array in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio C: le funzioni. Introduzione e sintassi ISIS "Guido Tassinari" di Pozzuoli Indirizzo Informatico - Articolazione Informatica Informatica Prof. A.S. 2012/2013 Linguaggio C: le funzioni. Introduzione e sintassi 21/10/2012 Introduzione Spesso alcuni

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio C: le funzioni. Introduzione e sintassi Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Introduzione e sintassi La presente dispensa

Dettagli

Rappresentazione generale del problema e fasi di progettazione

Rappresentazione generale del problema e fasi di progettazione D-003-2015-10-18 MATERIA DATA OGGETTO Informatica 18/10/2015 Progettazione degli algoritmi: strategia top-down Rappresentazione generale del problema e fasi di progettazione In generale, la risoluzione

Dettagli

Corso di Informatica di Base

Corso di Informatica di Base Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere

Dettagli

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO Rappresentazione degli algoritmi Problema Algoritmo Algoritmo descritto con una qualche notazione Programma Defne del procedimento

Dettagli

PROBLEMI ALGORITMI E PROGRAMMAZIONE

PROBLEMI ALGORITMI E PROGRAMMAZIONE PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL

Dettagli

Dalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo

Dalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Dettagli

Funzioni. function [<risultati>] = nome_funzione ([ par.formali ])

Funzioni. function [<risultati>] = nome_funzione ([ par.formali ]) MATLAB Le funzioni Funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, calcola un valore come risultato, esattamente come avviene anche per una

Dettagli

IL PRIMO PROGRAMMA IN C

IL PRIMO PROGRAMMA IN C IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

Dettagli

Rappresentazione con i diagrammi di flusso (Flow - chart)

Rappresentazione con i diagrammi di flusso (Flow - chart) Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Esercitazione 3. Espressioni booleane I comandi if-else e while

Esercitazione 3. Espressioni booleane I comandi if-else e while Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if

Dettagli

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio

Dettagli

Caratteristiche di un linguaggio ad alto livello

Caratteristiche di un linguaggio ad alto livello Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono

Dettagli

Modulo 1 Concetti di base della Tecnologia dell Informazione

Modulo 1 Concetti di base della Tecnologia dell Informazione Modulo 1 Concetti di base della Tecnologia dell Informazione 1.0.1.1 1.0.1.2 1.0.1.3 Algoritmi Definizione di algoritmo e sua rappresentazione grafica Per algoritmo si intende un procedimento, che permette

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

LESSICO E SINTASSI DEL PASCAL

LESSICO E SINTASSI DEL PASCAL LESSICO E SINTASSI DEL PASCAL Il linguaggio di programmazione Pascal è potente e semplice nello stesso tempo; ciò ne giustifica la scelta, inoltre i nuovi compilatori del linguaggio pascal permettono di

Dettagli

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dall'Algoritmo al Programma

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dall'Algoritmo al Programma Istituto Tecnico Statale Commerciale Dante Alighieri Cerignola (FG) Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS Dall'Algoritmo al Programma Pr.: 002 Ver.:1.0 Autore: prof. Michele Salvemini

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

Variabili e Istruzioni

Variabili e Istruzioni Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome

Dettagli

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Programmi Un elaboratore riceve dei dati in ingresso, li elabora secondo una sequenza predefinita di operazioni e infine restituisce il risultato sotto forma

Dettagli

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER 1 STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER Un computer e una macchina che riceve in ingresso delle informazioni, le elabora secondo un determinato procedimento e produce dei risultati che vengono

Dettagli

Introduzione alla programmazione Esercizi risolti

Introduzione alla programmazione Esercizi risolti Esercizi risolti 1 Esercizio Si determini se il diagramma di flusso rappresentato in Figura 1 è strutturato. A B C D F E Figura 1: Diagramma di flusso strutturato? Soluzione Per determinare se il diagramma

Dettagli

UTILIZZIAMO GLI OPERATORI MATEMATICI E COMMENTIAMO IL CODICE

UTILIZZIAMO GLI OPERATORI MATEMATICI E COMMENTIAMO IL CODICE Utilizziamo gli operatori matematici e commentiamo il codice Unità 4 UNITÀ DIDATTICA 4 UTILIZZIAMO GLI OPERATORI MATEMATICI E COMMENTIAMO IL CODICE IN QUESTA UNITÀ IMPAREREMO... come utilizzare gli operatori

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

L Allocazione Dinamica della Memoria

L Allocazione Dinamica della Memoria L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento

Dettagli

Esempio di Patto Formativo per la classe terza

Esempio di Patto Formativo per la classe terza Esempio di Patto Formativo per la classe terza COMPETENZE TRASVERSALI rispettare le consegne e la puntualità nell esecuzione dei compiti assegnati lavorare costruttivamente in gruppo e individualmente

Dettagli

Linguaggi di alto livello, compilatori e interpreti

Linguaggi di alto livello, compilatori e interpreti Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E03 Esempi di algoritmi e programmi A. Miola Novembre 2011 1 Contenuti q Progettazione di algoritmi q Problemi di ingresso - uscita

Dettagli

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito

Dettagli

Algoritmi e soluzione di problemi

Algoritmi e soluzione di problemi Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)

Dettagli

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna: Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione

Dettagli

Variabile, costante ed espressione

Variabile, costante ed espressione Variabile, costante ed espressione All interno di un programma un informazione può essere organizzata in vari modi: Variabile Costante Espressione Le variabili a loro volta possono essere: scalari vettori

Dettagli

ELEMENTI DI PROGRAMMAZIONE E TURBO PASCAL

ELEMENTI DI PROGRAMMAZIONE E TURBO PASCAL Liceo Scientifico e Classico S. Trinchese ELEMENTI DI PROGRAMMAZIONE E TURBO PASCAL seminario per la classe IV BS Prof Antonio Cazzato Perché programmare? La programmazione ha una notevole valenza didattica

Dettagli

Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli. Formule iterative

Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli. Formule iterative Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli Formule iterative L algoritmo che, comunemente, viene presentato a scuola per l estrazione della radice quadrata è alquanto laborioso e di scarsa

Dettagli

Un tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente:

Un tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente: Pag 29 4) La ricorsione 4.1 Funzioni matematiche ricorsive Partiamo da un concetto ben noto, quello delle funzioni matematiche ricorsive. Una funzione matematica è detta ricorsiva quando la sua definizione

Dettagli

Dall algoritmo al programma

Dall algoritmo al programma Dall algoritmo al programma Il concetto di algoritmo Un algoritmo è una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione

Dettagli

Strategie di programmazione

Strategie di programmazione Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie

Dettagli

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth.

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth. PASCAL standard Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth. Nb: primi linguaggi furono: Fortran, Algol, Ada, Cobol (cfr testo)

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E03 Esempi di algoritmi e programmi A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di algoritmi e

Dettagli

VARIABILI E COSTANTI

VARIABILI E COSTANTI VARIABILI E COSTANTI - Variabili e costanti - 1 PROBLEMA: Calcolo dell area di un triangolo di base b e altezza h. area = b ------------ h 2 ESEMPIO: b = 2,4 h = 1,5 area = 2,4 -------------------- 1,5

Dettagli

Almerico Murli - Le variabili strutturate (array) VARIABILI STRUTTURATE (ARRAY)

Almerico Murli - Le variabili strutturate (array) VARIABILI STRUTTURATE (ARRAY) VARIABILI STRUTTURATE (ARRAY) 1 successione (di numeri reali): i ℵ a R i vettore (di numeri reali): i I a i R con I ℵ sottoinsieme finito ogni componente del vettore e univocamente determinata dall indice

Dettagli

Cenni sull utilizzo dei fogli elettronici

Cenni sull utilizzo dei fogli elettronici Cenni sull utilizzo dei fogli elettronici I fogli elettronici ciascun foglio elettronico si presenta come un enorme matrice di dimensioni 65.536 righe per 256 colonne l unità fondamentale della matrice

Dettagli

= < < < < < Matematica 1

= < < < < < Matematica  1 NUMERI NATURALI N I numeri naturali sono: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,... L insieme dei numeri naturali è indicato con la lettera. Si ha cioè: N= 0,1,2,3,4,5,6,7,.... L insieme dei naturali privato

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Individuazione di sottoproblemi

Individuazione di sottoproblemi Individuazione di sottoproblemi Quando il problema è complesso conviene partire con una individuazione di sottoproblemi Scriviamo un algoritmo contenente azioni o condizioni complesse per l esecutore che

Dettagli

11.4 Chiusura transitiva

11.4 Chiusura transitiva 6 11.4 Chiusura transitiva Il problema che consideriamo in questa sezione riguarda il calcolo della chiusura transitiva di un grafo. Dato un grafo orientato G = hv,ei, si vuole determinare il grafo orientato)

Dettagli

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Dettagli

Procedura. Procedure e funzioni. Esempio di procedura in C. Procedure in C. Esempio con prototipo. Esecuzione del codice

Procedura. Procedure e funzioni. Esempio di procedura in C. Procedure in C. Esempio con prototipo. Esecuzione del codice Procedure e funzioni In linguaggio C Procedura Una procedura può essere rappresentata come una macchina in grado di eseguire un certo compito quando attivata. In un primo tempo la macchina deve essere

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione Laurea in Bioinformatica Docente: Carlo Drioli Web: www.scienze.univr.it/fol/main?ent=oi&id=39990 Programmazione: Dati Strutture di controllo Algoritmi Materiale tratto dai

Dettagli

PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE TERZA

PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE TERZA PROGRAMMAZIONE DISCIPLINARE PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE TERZA 1. Competenze: le specifiche competenze di base disciplinari previste dalla

Dettagli

Dati aggregati. Violetta Lonati

Dati aggregati. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture

Dettagli

Progettazione di algoritmi: componenti di base e metodologie di sviluppo. Variabili e costanti. Variabili e costanti A = 2. Algoritmo PASCAL-LIKE

Progettazione di algoritmi: componenti di base e metodologie di sviluppo. Variabili e costanti. Variabili e costanti A = 2. Algoritmo PASCAL-LIKE Progettazione di algoritmi: componenti di base e metodologie di sviluppo Variabili e costanti Variabili e costanti PROBLEMA: calcolo dell area A di un triangolo di base b ed altezza h b h A =.4.5 b =.4,

Dettagli

Sviluppare un programma in FORTRAN

Sviluppare un programma in FORTRAN Sviluppare un programma in FORTRAN Scrivere il file sorgente Editor di testo (emacs, vi, notepad, etc) Compilare Compilatore (ifort, gfortran, etc) Eseguire il programma Riga di comando, doppio click,

Dettagli

Variabili strutturate

Variabili strutturate Esempio Ordinamento crescente di numeri: 25 7 I passo: 25 7 25 7 7 25 7 25 Variabili strutturate in due scambi 25 è stato portato al suo posto Gli array II passo: 7 25 7 25 7 25 in uno scambio 7 è stato

Dettagli

Laboratorio con DERIVE

Laboratorio con DERIVE Laboratorio con Algebra 1 Capitolo 1, p. 2 Capitolo 2, p. 3 Capitolo 3, p. 5 Capitolo 4, p. 6 Capitolo 5, p. 7 Capitolo 6, p. 9 Capitolo 7, p. 10 Capitolo 8, p. 11 Capitolo 9, p. 12 Capitolo 10, p. 13

Dettagli

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015 APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.VI.2015 VINCENZO MARRA Indice Esercizio 1 1 Definizione dei tipi P e T, e calcolo dell area.

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione alla programmazione

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione alla programmazione UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Introduzione alla programmazione Riferimenti Emanuele Goldoni Laboratorio Reti (MN) Tel. 0376-286234 E-mail: emanuele.goldoni@unipv.it Slide sul sito

Dettagli

Capitolo 4: Tabelle. y(x) = x 3 ì 2x. Capitolo 4: Tabelle 67. Nota: le tabelle non sono disponibili nel modo di rappresentazione grafica 3D.

Capitolo 4: Tabelle. y(x) = x 3 ì 2x. Capitolo 4: Tabelle 67. Nota: le tabelle non sono disponibili nel modo di rappresentazione grafica 3D. Capitolo 4: Tabelle 4 Definizione di tabelle...68 Panoramica della procedura per generare una tabella...69 Impostazione dei parametri di tabella...70 Visualizzazione di una tabella in modo automatico...72

Dettagli

Formalismi per la descrizione di algoritmi

Formalismi per la descrizione di algoritmi Formalismi per la descrizione di algoritmi Per descrivere in passi di un algoritmo bisogna essere precisi e non ambigui Il linguaggio naturale degli esseri umani si presta a interpret non univoche Si usano

Dettagli

CURRICOLO DI MATEMATICA CLASSE PRIMA

CURRICOLO DI MATEMATICA CLASSE PRIMA CURRICOLO DI MATEMATICA CLASSE PRIMA INDICATORI OBIETTIVI SPECIFICI CONTENUTI NUMERI Eseguire le quattro operazioni con i numeri interi. Elevare a potenza numeri naturali e interi. Comprendere il significato

Dettagli

1 Esercizi di Matlab. L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi.

1 Esercizi di Matlab. L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi. Esercizi di Matlab L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi. Esempio Consideriamo la matrice A formata da n = righe e m = colonne M = 5 6 7 8. 9 0

Dettagli

Programmazione. 1 Introduzione. Tutto per la gloria di Dio.

Programmazione. 1 Introduzione. Tutto per la gloria di Dio. Programmazione Tutto per la gloria di Dio. 1 Introduzione Un programma è un piano di azione che deve essere eseguito da un esecutore, di solito uno strumento automatico, la maggior parte delle volte un

Dettagli

ISTITUTO COMPRENSIVO BASSA ANAUNIA DENNO PIANO DI STUDIO DI MATEMATICA CLASSE SECONDA. Competenza 1

ISTITUTO COMPRENSIVO BASSA ANAUNIA DENNO PIANO DI STUDIO DI MATEMATICA CLASSE SECONDA. Competenza 1 ISTITUTO COMPRENSIVO BASSA ANAUNIA DENNO PIANO DI STUDIO DI MATEMATICA CLASSE SECONDA Alle fine della CLASSE SECONDA l alunno è in grado di Competenza 1 Competenza 1 Componenti della competenza Abilità

Dettagli

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione Corso di Fondamenti di Informatica Linguaggi di Programmazione Anno Accademico Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di

Dettagli

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema Algoritmo 2 Procedimento di risoluzione di un problema La programmazione Ver. 2.4 Permette di ottenere un risultato eseguendo una sequenza finita di operazioni elementari Esempi: Una ricetta di cucina

Dettagli

PROGRAMMAZIONE STRUTTURATA

PROGRAMMAZIONE STRUTTURATA PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:

Dettagli

Fortran per Ingegneri

Fortran per Ingegneri Fortran per Ingegneri Lezione 4 A.A. 2014/2015 Marco Redolfi marco.redolfi@unitn.it Simone Zen simone.zen@unitn.it Formati e Formattazione Finora abbiamo letto valori da tastiera e scritto sullo schermo

Dettagli

COMPETENZE al termine della scuola secondaria di 1 grado (dalle Indicazioni Nazionali)

COMPETENZE al termine della scuola secondaria di 1 grado (dalle Indicazioni Nazionali) COMPETENZE al termine della scuola secondaria di 1 grado (dalle Indicazioni Nazionali) Utilizzare con sicurezza le tecniche e le procedure nel calcolo aritmetico e algebrico, scritto e mentale, anche con

Dettagli

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi Lezione 8 Introduzione agli algoritmi Lezione tratta dal libro: D. Sciuto, G. Buonanno, W. Fornaciari, L. Mari Introduzione ai sistemi informatici Seconda Edizione, McGraw-Hill Capitolo 2: La formalizzazione

Dettagli

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare

Dettagli

Introduzione al Foglio Elettronico

Introduzione al Foglio Elettronico Microsoft Excel Introduzione al Foglio Elettronico Il Foglio Elettronico Si presenta come una grande tabella le cui righe e colonne si intersecano in celle Le celle possono contenere differenti dati Numeri

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

Sotto programmi - Funzioni in C

Sotto programmi - Funzioni in C Sotto programmi - Funzioni in C R. Gallo Settembre 2009 Sommario Le funzioni C/C++ sono l'implementazione in codice C/C++ di uno strumento presente in tutti i linguaggi di programmazione: i sottoprogrammi

Dettagli

SCUOLA PRIMARIA MATEMATICA (Classe 1ª)

SCUOLA PRIMARIA MATEMATICA (Classe 1ª) SCUOLA PRIMARIA MATEMATICA (Classe 1ª) Operare con i numeri nel calcolo scritto e mentale Leggere e scrivere numeri naturali in cifre e lettere. Contare in senso progressivo e regressivo. Raggruppare,

Dettagli

Linguaggio C++ 8. Matrici

Linguaggio C++ 8. Matrici 2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) Linguaggio C++ 8 Matrici Linguaggio C++ 8 1 Array a più dimensioni. Sintassi generale : tipo nome [dimensione 1][dimensione

Dettagli

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?

Dettagli

Programmazione di INFORMATICA e Laboratorio

Programmazione di INFORMATICA e Laboratorio ISIUO ECNICO SAALE settore ECNOLOGICO ad indirizzo: Elettronica ed Elettrotecnica - Informatica e elecomunicazioni Meccanica, Meccatronica ed Energia "VIORIO EMANUELE III" Via Duca della Verdura, 48-90143

Dettagli

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive

Dettagli

Esercitazione. Excel: le macro. C.1 Registrazione di macro

Esercitazione. Excel: le macro. C.1 Registrazione di macro Esercitazione Excel: le macro C.1 Registrazione di macro Se una serie di operazioni viene eseguita frequentemente, è possibile creare una macro che esegua automaticamente tali operazioni quando viene richiamata.

Dettagli

SCUOLA SECONDARIA DI PRIMO GRADO PROGETTAZIONE DI UNITA' DI APPRENDIMENTO DI MATEMATICA PER UNA CLASSE PRIMA

SCUOLA SECONDARIA DI PRIMO GRADO PROGETTAZIONE DI UNITA' DI APPRENDIMENTO DI MATEMATICA PER UNA CLASSE PRIMA SCUOLA SECONDARIA DI PRIMO GRADO PROGETTAZIONE DI UNITA' DI APPRENDIMENTO DI MATEMATICA PER UNA CLASSE PRIMA Tenendo presente le indicazioni del P., le Indicazioni nazionali per i Piani di Studio Personalizzati

Dettagli

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI Giacomo Piscitelli pag. 1/10 Dall Algoritmo al Programma Metodo risolutivo problema algoritmo Linguaggio programma Individuazione di un metodo risolutivo

Dettagli

A lezione sono stati presentati i seguenti passi per risolvere un problema:

A lezione sono stati presentati i seguenti passi per risolvere un problema: Calcolo delle radici di un polinomio Problema: Dati i coefficienti a,b,c di un polinomio di 2 grado della forma: ax^2 + bx + c = 0, calcolare le radici. A lezione sono stati presentati i seguenti passi

Dettagli

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica! Espressioni Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica! Valutazione automatica di expr aritmetiche = obiettivo primario dei primi LP

Dettagli

MATLAB (II parte) Commenti. Input/Output (I/O) Istruzioni di Input/Output (I/O)

MATLAB (II parte) Commenti. Input/Output (I/O) Istruzioni di Input/Output (I/O) Commenti (II parte) Sequenze di caratteri precedute da % Es. % Questo è un commento Vengono ignorati nell'esecuzione di un programma ma servono a chiarire il significato del programma Possono essere inseriti

Dettagli

La codifica digitale

La codifica digitale La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore

Dettagli

Fortran in pillole : prima parte

Fortran in pillole : prima parte Fortran in pillole : prima parte Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi Numerici per l Ingegneria Introduzione al Fortran Un libro consigliato

Dettagli

Introduzione all algebra

Introduzione all algebra Introduzione all algebra E. Modica http://dida.orizzontescuola.it Didattica OrizzonteScuola Espressioni letterali come modelli nei problemi Espressioni come modello di calcolo Esempio di decodifica Premessa

Dettagli

A = Quindi > b=a(:) b =

A = Quindi > b=a(:) b = Una breve digressione. Se si vuole uscire da Matlab, occorre digitare ( come già riferito)il comando >> quit Se si vogliono utilizzare le variabili create per una successiva sessione di lavoro, prima di

Dettagli