Lo sviluppo del software e i linguaggi di programmazione Corso di sistemi Classe 3
ciclo di sviluppo del software Problema utilizza Utente realizza chiede progetta Programmatore Analista
ciclo di sviluppo del software utente PASCAL applicazione Linker Programmatore Compilatore 01010101 01101110 10011101 00101010 . . . . 00100000 01101110 10011101 00101010 01010101 01101110 10011101 00101010 . . . . 00100000 Program Pippo; var a,b,c : integer; Begin readln(a); readln(b); c:=a+b; writeln(c); End. LINK COMPILAZIONE Programma oggetto Programma sorgente Programma eseguibile
La compilazione Programma sorgente Program Pippo; var a,b,c : integer; Begin readln(a); readln(b); c:=a+b; writeln(c); End. Compilatore 01010101 01101110 10011101 00101010 . . . . 00100000 SENZA ERRORI ERRORI Programma oggetto Correzioni
La compilazione Programma sorgente Program Pippo; var a,b,c : integer; Begin readln(a); reodln(b); c=a+b; writeln(c); End. Compilatore Segnalazione errori readln(b); c:=a+b; ERRORI Correzioni
Linguaggio di programmazione In informatica, un linguaggio di programmazione è un linguaggio formale dotato di una sintassi ben definita. Un linguaggio di programmazione viene utilizzato per scrivere programmi. Program Pippo; var a,b,c : integer; Begin readln(a); readln(b); c:=a+b; writeln(c); End. ALFABETO + = REGOLE GRAMMATICALI + REGOLE SINTATTICHE E SEMANTICHE
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) readln(a) 01001001100 COMPILAZIONE (INTERPRETAZIONE)
Linguaggio di alto e basso livello Istruzione scritta in linguaggio ad alto livello (PASCAL) Leggi un dato dalla tastiera e memorizzalo in una cella di memoria chiamata “a” readln(a) significa 01001001100 01001001100 01001001100 01001001100 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 ESPRESSIONE OPERATORE
READLN(a) Concetti chiave 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. VARIABILE READLN(a)
C := C + 1 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).
C := C + 1 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). C := C + 1
Concetti chiave C := C + 1 Una combinazione di variabili e costanti, unite da operatori; ESPRESSIONE
var a : int; READLN(a); 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 var a : int; READLN(a); istruzione dichiarativa istruzione operativa
1 : n c := c + 1 istruzioni 1 : 1 mov ax,bx add ax,1 ... 0101011100 Un livello intermedio LINGUAGGIO AD ALTO LIVELLO 1 : n c := c + 1 istruzioni LINGUAGGIO ASSEMBLY 1 : 1 mov ax,bx add ax,1 ... LINGUAGGIO MACCHINA 0101011100 0111110100