Lo sviluppo del software e i linguaggi di programmazione Corso di sistemi Classe 3 ciclo di sviluppo del software Problema Utente realizza progetta Analista Programmatore ciclo di sviluppo del software utente PASCA L applicazione Programmatore Linker Compilatore Program Pippo; var a,b,c : integer; Begin readln(a); readln(b); c:=a+b; writeln(c); End. Programma sorgente 01010101 01101110 10011101 00101010 01010101 01101110 10011101 00101010 COMPILAZIONE . . . . 00100000 Programma oggetto . . . LINK . 00100000 01101110 10011101 00101010 Programma eseguibile Programma sorgente Program Pippo; var a,b,c : integer; Begin readln(a); readln(b); c:=a+b; writeln(c); End. La compilazione Compilatore SENZA ERRORI 01010101 01101110 10011101 00101010 . . . . 00100000 ERRORI Programma oggetto Correzioni Programma sorgente Program Pippo; var a,b,c : integer; Begin readln(a); reodln(b); c=a+b; writeln(c); End. readln(b); Correzioni c:=a+b; La compilazione Compilatore Segnalazione errori ERRORI Linguaggio di programmazione In informatica, un linguaggio di programmazione è un linguaggio formale dotato di una sintassi ben definita. Un linguaggio di programmazione utilizzato per scrivere programmi. ALFABETO REGOLE GRAMMATICALI REGOLE SINTATTICHE E SEMANTICHE viene Program Pippo; var a,b,c : integer; Begin readln(a); readln(b); c:=a+b; writeln(c); End. Linguaggio di alto e basso livello Ogni calcolatore è caratterizzato da un linguaggio di programmazione di basso livello o linguaggio macchina, il cui testo è una sequenza di bit che il processore interpreta, secondo un funzionamento dettato dalla sua struttura fisica, eseguendo una sequenza di azioni. Tuttavia, con il termine linguaggio di programmazione ci si riferisce più frequentemente ai linguaggi di programmazione ad alto livello, che sono più vicini al linguaggio umano scritto (e quindi facilitano il lavoro dei programmatori) e che hanno però la proprietà di poter essere ricondotti, in maniera non ambigua, al linguaggio macchina. Detta riconducibilità costituisce la base per la interpretazione o compilazione del linguaggio stesso. Istruzione scritta in linguaggio ad alto livello Istruzione scritta in linguaggio a basso livello ( l. macchina) COMPILAZIONE (INTERPRETAZIONE) Linguaggio di alto e basso livello Istruzione scritta in linguaggio ad alto livello (PASCAL) significa Leggi un dato dalla tastiera e memorizzalo in una cella di memoria chiamata “a” Istruzioni scritte in linguaggio macchina Caratteristiche dei linguaggi di programmazione ALFABETO Insieme di simboli come A,B,…, Z, a,b,…,z, 0,1,2,…,9, +,,:,/,* ecc. ecc. GRAMMATICA Insieme di regole che permettono di scrivere correttamente parole e frasi. Le parole vengono costruite a partire dai simboli dell’alfabeto, devono essere costruite rispettando le regole della specifica grammatica ed essere presenti nel vocabolario del linguaggio. Es. READLN è una parola accettabile Aµ non è una parola accettabile (il simbolo µ non fa parte dell’alfabeto) SINTATTASSI Insieme di regole che obbligano a costruire frasi sintatticamente corrette. Es. READLN(a); è una frase corretta (a)READLN; non è una frase accettabile Ogni linguaggio possiede un proprio alfabeto, una grammatica e sintassi Concetti chiave VARIABILE ISTRUZIONE COSTANTE OPERATORE ESPRESSIONE Concetti chiave VARIABILE Un dato o un insieme di dati, noti o ignoti, già memorizzati o da memorizzare; ad una variabile corrisponde sempre, da qualche parte, un certo numero (fisso o variabile) di locazioni di memoria che vengono allocate, cioè riservate, per contenere i dati stessi. Molti linguaggi inoltre attribuiscono alle variabili un tipo, con differenti proprietà (stringhe di testo, numeri, liste, atomi ecc.). Utilizzando un linguaggio simbolico ad ogni variabile viene dato un nome. Il valore del dato può essere modificato durante l’elaborazione. Concetti chiave COSTANTE Un dato noto che non cambierà il suo valore durante l’elaborazione . Utilizzando un linguaggio simbolico ad ogni costante viene assegnato un valore (numerico/alfanumerico). Concetti chiave OPERATORE Un operatore è un oggetto (rappresentato da uno o più simboli) che agisce su una coppia di dati (o su un singolo dato), detti operandi, ottenendo un nuovo dato (risultato dell'operazione). Concetti chiave Una combinazione di variabili e costanti, unite da operatori; ESPRESSIONE Concetti chiave Un comando, una azione concreta, oppure una regola descrittiva. Il concetto di istruzione è molto variabile fra classi di linguaggi diverse. A prescindere dal particolare linguaggio però, ogni volta che un'istruzione viene eseguita, lo stato interno del calcolatore cambia. ISTRUZIONE istruzione dichiarativa istruzione operativa Un livello intermedio LINGUAGGIO AD ALTO LIVELLO LINGUAGGIO ASSEMBLY LINGUAGGIO MACCHINA