Codifica degli algoritmi in un linguaggio di alto livello

Slides:



Advertisements
Presentazioni simili
Algoritmi e Programmazione
Advertisements

Fondamenti di Informatica CDL in Ingegneria Meccanica - A.A CDL in Ingegneria Meccanica - A.A Tipi di dati Ing. Simona Colucci.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Tipi di dati Ing. Simona Colucci.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
7. Strutture di controllo Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
Un semplice programma C /* Programma che stampa un saluto */ #include main() { printf(“Hello World!\n”); }
INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.
Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Programmazione strutturata.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
6. Codifica degli algoritmi in un linguaggio di alto livello
© 2007 SEI-Società Editrice Internazionale, Apogeo
LA PROGRAMMAZIONE: Algoritmi e programmi
DAL DIAGRAMMA AL CODICE
11. Lettura e Scrittura di file in Matlab
Java: concetti e costrutti base
La rappresentazione delle informazioni
Introduzione al linguaggio C
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Dal problema al processo risolutivo
Process synchronization
7. Strutture di controllo Ing. Simona Colucci
Script Marco D. Santambrogio –
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
7. Strutture di controllo
Excel 1 - Introduzione.
Strutture di controllo
L’AMBIENTE CODE BLOCKS E L’IO
Programmazione strutturata
Forme per rappresentare l’algoritmo:
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Informatica per l’Ingegneria
Rappresentazione dei Numeri
Introduzione a JavaScript
Classe III A A.s – 2012 Programma di Informatica
Programmare.
Linguaggio C++ Selezione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strutture di Controllo
Secondo Programma in C.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Ricorsione 16/01/2019 package.
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Definizione di linguaggio di programmazione
I fogli elettronici Microsoft Excel.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
La struttura dei primi programma in C
Excel 3 - le funzioni.
Processi decisionali e funzioni di controllo
Programmazione e Laboratorio di Programmazione
Fondamenti di Informatica
Lezione Terza Primi passi di programmazione
Informatica CdL Scienze e Tecniche Psicologiche a.a
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
La programmazione strutturata
Algoritmi.
Programmazione e Laboratorio di Programmazione
Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri.
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Codifica degli algoritmi in un linguaggio di alto livello Informatica per l’Ingegneria

Informatica per l’Ingegneria Indice Obiettivi della programmazione in linguaggi di alto livello Istruzioni principali Tipi di dato Trasformazione da codice sorgente a codice eseguibile Informatica per l’Ingegneria

Obiettivi della programmazione in linguaggi di alto livello Colmare il gap tra i due requisiti fondamentali di un linguaggio per la descrizione di algoritmi: Precisione ed assenza di ambiguità interpretativa per l’esecuzione di operazioni (requisito richiesto dalla  macchina) Sintesi per la facilità di comprensione del programmatore (requisito richiesto dall’uomo) Informatica per l’Ingegneria

Programmazione in linguaggi di alto livello Vantaggi: Possibilità di riferirsi agli elementi del programma (celle di memoria, istruzioni, valori costanti) con identificatori (nomi simbolici) Es.    a  cella di memoria 1001001100 Possibilità di esprimere le istruzioni e il controllo della sequenza della loro esecuzione in modo vicino al linguaggio naturale Es. (a+b)*(c+d)   LOAD A ADD B STORE TEMP LOAD C ADD D MULT TEMP Informatica per l’Ingegneria

Astrazione di un elaboratore Informatica per l’Ingegneria Componenti: CPU Memoria centrale: divisa in celle elementari, contenenti un dato (valore numerico o carattere), di un numero di bit variabile Bus Astrazione delle interfacce con le periferiche: Input:  unica unità di ingresso diviso in celle elementari, contenenti un dato (valore numerico o carattere), di un numero di bit variabile Output:  unica unità di uscita Informatica per l’Ingegneria

Elementi -e terminologia- essenziali Stringa: successione finita di caratteri, supposti immagazzinati in celle consecutive Variabili: celle di memoria, il cui contenuto può cambiare durante l’esecuzione del programma Identificatori simbolici: successione di lettere e cifre(o il simbolo”_”), con al primo posto una lettera N.B. il Matlab è CASE SENSITIVE Identificatori predefiniti e riservati: associati a priori ad elementi del linguaggio e non utilizzabili per le variabili Parole chiave: altre parole del linguaggio predefinite e riservate Informatica per l’Ingegneria

Le principali istruzioni in Matlab Istruzioni di sequenza: Istruzioni di assegnamento Esempi: x = 23; w = 'a'; y = z; r3 = (alfa*43–xgg)*(delta–32*ijj); x = x+1; Istruzioni di ingresso e uscita x= input(‘Inserire un valore’) disp (A) disp(‘Fine del programma!’) Informatica per l’Ingegneria

Istruzioni di ingresso e uscita in Matlab Comando Descrizione disp (A) Visualizza il contenuto di A disp (‘testo’) Visualizza la stringa tra apici format Controlla il formato di visualizzazione x= input(‘testo’) Visualizza la stringa tra apici, attende l’immissione di un valore e lo memorizza in x x= input(‘testo’, ‘s’) Visualizza la stringa tra apici, attende l’immissione di un valore e lo memorizza come stringa in x k=menu(‘titolo’, ‘opzione1’, ‘opzione2’,…) Visualizza un menu dal titolo ‘titolo’, con le opzioni ‘opzione1’, ‘opzione2’,… Informatica per l’Ingegneria

Istruzioni di ingresso e uscita in Matlab Formato di uscita a video personalizzato tramite le funzioni: fprintf (‘stringa formato’, variabili) ‘stringa formato’: stringa che contiene i caratteri che si vogliono visualizzare e, nelle posizioni in cui si vuole venga inserito il valore, deve essere indicato uno dei codici in tabella str = sprintf (‘stringa formato', variabili) indirizza su una stringa di testo di nome str le variabili indicate, con il formato definito per visualizzare: disp(str) Controllo dei formati tramite codici di formato Codice di Formato Significato %s Stringa %c Carattere %d o  %i Intero con segno %u Intero senza segno, base 10 %f Numero a virgola fissa \n Carattere di ritorno a capo \t Carattere di tabulazione Informatica per l’Ingegneria

Le principali istruzioni Le istruzioni composte Comprendono selezione ed iterazione visti nel capitolo 5 producono effetti diversi a seconda del verificarsi o meno di condizioni sul valore delle   variabili Condizione(espressione booleana):  espressione su variabili booleane il cui valore può essere vero o falso Costruita tramite: Operatori di relazione (in Matlab: ==; ~=; <;>;<=;>=) Operatori logici (in Matlab: ~;|;&) Es. di condizioni :     x == 0    alfa > beta & x ~= 3    ~ ((a + b)*3 > x | a < c) Informatica per l’Ingegneria

Istruzioni composte: selezione ed iterazione 2. Istruzioni di Selezione if x == 0 z = 5 else y = z + w*y end 3. Istruzioni di Iterazione (ciclo o loop) while x >= 0 x = x – 1 Informatica per l’Ingegneria

Informatica per l’Ingegneria Tipi di dati astratti Tipo di dato : tipo di informazione, di natura eterogenea(interi, reali, caratteri, array, fatture, conti correnti, pagine web, …) Definizione generale di tipo di dato: Insieme di valori e di operazioni ad esso applicabili Tipo astratto: conta la visione esterna, non la rappresentazione interna, ovvero il punto di vista di chi usa il tipo, non di chi lo realizza Immaginiamo di dover trattare direttamente come stringhe di bit la divina commedia, una pagina web, … Inoltre potremo talvolta usare diverse rappresentazioni concrete per la stessa astrazione Informatica per l’Ingegneria

Informatica per l’Ingegneria Dichiarazioni di tipo Nei linguaggi fortemente tipizzati è necessario associare un tipo a tutte le variabili, al momento della dichiarazione; ciò comporta che: Per ogni variabile è possibile determinare l’insieme dei valori ammissibili e delle operazioni ad essa applicabili Per ogni variabile è calcolabile a priori la quantità di memoria necessaria: la memoria per l’esecuzione di tutto il programma può essere calcolata in fase di compilazione (eccezione: allocazione dinamica) E’ possibile rilevare errori nell’uso delle variabili durante la compilazione del programma: espressioni o assegnamenti coinvolgenti variabili eterogenee Informatica per l’Ingegneria

Tipi di dato: classificazioni Informatica per l’Ingegneria In base alla complessità delle informazioni rappresentate: Tipi semplici (interi, caratteri, reali, …): rappresentano informazione logicamente indivisibile Tipi strutturati (array, …): rappresentano informazione logicamente scomponibile In base all’ utilizzabilità nel linguaggio: Tipi predefiniti nel linguaggio(built in): interi, caratteri, … Tipi definiti dall’utente per soddisfare le infinite e imprevedibili esigenze(user defined): fattura, data,… N:B. tale classificazione dipende dal linguaggio: in Matlab variabili come età, conto_corrente non sono predefiniti(devono essere costruiti dal programmatore); in altri linguaggi “special purpose” potrebbero esserlo (e.g. data nei fogli elettronici) Informatica per l’Ingegneria

Informatica per l’Ingegneria Tipi di Dato in Matlab Matlab non prevede la dichiarazione delle variabili Per ogni variabile NON è possibile determinare l’insieme dei valori ammissibili e delle operazioni ad essa applicabili, se non in fase di esecuzione Per ogni variabile NON è calcolabile a priori la quantità di memoria necessaria: la memoria per l’esecuzione di tutto il programma NON può essere calcolata in fase di compilazione (eccezione: allocazione dinamica) NON è possibile rilevare errori nell’uso delle variabili durante la compilazione del programma: espressioni o assegnamenti coinvolgenti variabili eterogenee Modalità operativa: MATLAB calcola o salva i valori in memoria sempre come se le variabili fossero numeri reali in doppia precisione Informatica per l’Ingegneria

Informatica per l’Ingegneria Il comando format Il comando format regola solamente come i numeri sono visualizzati o stampati, non come MATLAB li calcola o li salva in memoria Comando Descrizione format short (default) 4 cifre decimali format long 16 cifre decimali format short e 4 cifre decimali + l’esponente format long e 15 cifre decimali+ l’esponente format bank 2 cifre decimali format + Positivo, negativo o 0 format rat approssimazione razionale format compact elimina le righe vuote format loose elimina l’effetto di compact Informatica per l’Ingegneria

Informatica per l’Ingegneria Esercizi Progettare tramite flow chart strutturato e codificare in Matlab un programma che acquisisca un valore intero. Il programma dovrà controllare che tale valore sia >300 e consentire in caso contrario di acquisire nuovamente un valore per il numero di volte necessario affinché lo diventi Progettare tramite flow-chart strutturato e codificare in Matlab un programma che consenta di calcolare la media dei voti di uno studente universitario, acquisendo il numero complessivo di esami e assicurandosi (con un processo analogo a quello descritto nell’esercizio 1) che i valori di voto immessi siano >=18. Informatica per l’Ingegneria

Informatica per l’Ingegneria Esercizi Progettare tramite flow-chart strutturato un programma per la valutazione di un triangolo. Il programma, dopo aver acquisito 3 valori interi, dovrà verificare se questi possono essere i lati di un triangolo e, in caso affermativo, stabilire il tipo di triangolo Informatica per l’Ingegneria

Strutture di controllo Informatica per l’Ingegneria

Informatica per l’Ingegneria Indice Istruzioni di selezione Sostituibili dal costrutto elseif, switch Istruzioni cicliche (di iterazione) Sostituibili dal costrutto for Informatica per l’Ingegneria

Programmazione strutturata TEOREMA DI BOHM-JACOPINI: tutti i programmi possono essere scritti con l’utilizzo delle sole strutture di controllo: sequenza, selezione e iterazione (senza l’uso del salto goto) Le strutture di controllo consentite sono quelle di selezione(if-else) e iterazione (while) Informatica per l’Ingegneria

Istruzioni di selezione: Il costrutto elseif istruzione di selezione a più vie (se l’else include ulteriori condizioni) Sintassi : if condizione 1 istruzione1 elseif condizione2 istruzione2 else istruzione3 end Regole: l’else si può omettere in assenza di un blocco in corrispondenza di istruzione3 falso vero Condizione1 falso vero Condizione2 istruzione1 istruzione3 istruzione2 Informatica per l’Ingegneria

Costrutto elseif: esempio if j<i fprintf('-'); elseif j==i fprintf('*'); else fprintf('+'); end falso j < i vero falso j =i vero - + * Informatica per l’Ingegneria

Istruzioni di selezione: il costrutto switch (1) istruzione di selezione a più vie auto esclusive (se l’else non è uno solo) consente la scelta di un’istruzione tra altre sulla base del valore di una particolare espressione di input (scalare o stringa) Sintassi: switch input case valore1 istruzioni1 case valore2 istruzioni2 ……. otherwise istruzioniN end Regole: clausola otherwise facoltativa ogni valore di case su una riga distinta del programma In caso di espressione di input scalare simula il costrutto if input ==valore1 istruzioni1 elseif input ==valore2 istruzioni2 else istruzioniN end vero falso input ==valore1 input ==valore2 falso vero istruzioni1 istruzioniN istruzioni2 Informatica per l’Ingegneria

Costrutto switch: esempio Immettere una scelta valore=input(‘Immettere una scelta’) switch valore case 1 disp(‘Caso1’) case 2 disp(‘Caso2’) case 3 disp(‘Caso3’) end valore falso vero valore ==1 vero falso valore==2 Caso 1 falso valore==3 vero Caso 2 Caso 3 Informatica per l’Ingegneria

Istruzioni cicliche: il ciclo for Nei cicli a conteggio (numero di passaggi noti in anticipo) invece di: VariabileDiCiclo = ValoreIniziale while VariabileDiConteggio <= ValoreFinale [Sequenza di istruzioni da ripetere] VariabileDiConteggio = VariabileDiConteggio + Incremento end Usare: for VariabileDiCiclo = ValoreIniziale:Incremento:ValoreFinale [Sequenza di istruzioni da ripetere] Informatica per l’Ingegneria

Informatica per l’Ingegneria Ciclo for: regole Considerazioni su VariabileDiCiclo= ValoreIniziale : Incremento : ValoreFinale Incremento può essere negativo vale +1 in caso di omissione se positivo, il ciclo viene interrotto quando VariabileDiCiclo >ValoreFinale se negativo, il ciclo viene interrotto quando VariabileDiCiclo<ValoreFinale Informatica per l’Ingegneria

Informatica per l’Ingegneria Ciclo for : esempio 1 si può omettere s=0 for i=0:1:10 n=input(‘Inserire un numero’) s=s+n end s  0 i  0 falso i < 10 vero n s  s + n i  i + 1 Informatica per l’Ingegneria

Le istruzioni break e continue break interrompe l’esecuzione di un ciclo Esempio for k = 1:10 x=50-k^2 if x<0 break end y=sqrt(x) continue provoca l’interruzione della corrente iterazione del ciclo e il passaggio all’iterazione successiva   x=input(‘Inserire un intero’) continue Il break, utilizzato in un costrutto if, mappa un salto condizionato: meglio codificare con while k = 1 while k<10 & x>=0 x=50-k^2 if x>=0 y=sqrt(x) end k=k+1 Il continue può essere evitato modellando meglio le condizioni for k = 1:10 x=input(‘Inserire un intero’) if x>=0 y=sqrt(x) end Informatica per l’Ingegneria

Informatica per l’Ingegneria Esercizi Scrivere un programma che consenta la scelta tra le seguenti opzioni: Calcolo del massimo e del minimo di una sequenza di N numeri, con N letto da tastiera Calcolo della media di una sequenza di N numeri, con N letto da tastiera Calcolo di una potenza, data la base e l’esponente, entrambi letti da tastiera Scrivere un programma che consenta la scelta tra le opzioni dell’esercizio 1 in maniera ripetuta (finchè l’utente non desidera terminare il programma) Informatica per l’Ingegneria