• Non ci sono risultati.

Linguaggi simbolici Linguaggi simbolici

N/A
N/A
Protected

Academic year: 2021

Condividi "Linguaggi simbolici Linguaggi simbolici"

Copied!
21
0
0

Testo completo

(1)

Programmazione procedurale Programmazione procedurale

Linguaggio di Riferimento: C

1

(2)

Linguaggio macchina Linguaggio macchina

™ Il linguaggio macchina costituisce la forma

espressiva atta a descrivere programmi e ad essere direttamente interpretata dall’unità di controllo

™ La programmazione in linguaggio macchina richiederebbe:

)la conoscenza dell’architettura del calcolatore )la pianificazione dell’impiego della memoriala pianificazione dell impiego della memoria )la definizione di un numero notevole di

istruzioni elementari istruzioni elementari

™ molte cause di errori e difficoltà di controllarli

2

(3)

Linguaggi simbolici Linguaggi simbolici

™ I linguaggi simbolici consentono di esprimere il g gg p programma secondo regole ancora formali, ma con istruzioni più sintetiche e vicine alla logica del p g

pensiero umano

™ L’impiego dei linguaggi simbolici è possibile grazie

™ L impiego dei linguaggi simbolici è possibile grazie alla disponibilità del software di base

3

(4)

Software di base f

™ editor (produzione del programma origine);

™ compilatore (produzione del programma oggetto, mediante la traduzione del programma origine da linguaggio simbolico a linguaggio macchina)

)... in alternativa si può usare un interprete ...

™ collegatore (produzione del programma eseguibile mediante il collegamento del programma oggetto ed a te co ega e to de p og a a oggetto con componenti di librerie)

™ caricatore (caricamento del programma eseguibile

™ caricatore (caricamento del programma eseguibile in memoria al fine della sua esecuzione)

4

(5)

Dal programma sorgente al ibil

programma eseguibile

Editor prog.c Compiler

prog.o Linker

prog

lib.o

h fil /lib

5

other files/library

(6)

Struttura dei Programmi

/* File: hello.c

Apertura e chiusura di un commento ---

Q esto programma is ali a il messaggio di un commento

Questo programma visualizza il messaggio

"Hello, world." sullo schermo. */

#include <stdio.h> inclusione di libreria main()

{ {

printf("Hello, world.\n");

programma principale

} 6

(7)

Librerie

Una libreria contiene componenti scritte da altri - Una libreria contiene componenti scritte da altri

programmatori che possono essere riusate nel t

nostro programma

- le informazioni sulle componenti disponibili nellaf p p libreria sono fornite in un header file (con

estensione ‘ h’) da includere nel programma estensione .h ) da includere nel programma (#include <stdio.h>)

l’ i h i di h d fil ì

- l’estensione .h indica un header file, così come l’estensione .c indica un file contenente un

C programma C

- la libreria descritta dall’header file stdio.h è

predefinita 7

(8)

Il main program p g

- Un programma è formato da uno o più blocchi chiamati funzioni

- Una funzione è formata da una intestazione e - Una funzione è formata da una intestazione e

da un corpo contenente una o più istruzioni

- in un programma esiste una sola funzione main

i () intestazione

main() {

intestazione

inizio del corpo printf("Hello, world.\n");

} fine del corpo

istruzione

8

} fine del corpo

(9)

Istruzione di uscita z

- Nella libreria stdio.h l’uscita standard viene

l i i ll h

normalmente inviata sullo schermo

printf("Hello world \n") ; funzione printf( Hello, world.\n ) ; funzione

predefinita

di output d

di output formattato (costruisce

Stringa di controllo (argomento della

terminatore di istruzione

(costruisce ed invia in uscita una

( g

funzione) uscita una

stringa di caratteri)

9

caratteri)

(10)

Dati di uscita

- Nell’esempio precedente la stringa di controllo

è di i ( i )

è una sequenza di caratteri (stringa) costante:

Hello world \n

carattere

Hello, world.\n

- In C una stringa di caratteri

di ritorno a capo

In C una stringa di caratteri viene racchiusa tra doppi apici

p

(newline)

- Sullo schermo comparirà il messaggio:

H ll ld

Hello, world.

10

(11)

Istruzioni di I/O Istruzioni di I/O

- In C non sono definite istruzioni o operatori In C non sono definite istruzioni o operatori specifici volti a realizzare le classiche

operazioni di ingresso/uscita operazioni di ingresso/uscita

- queste funzioni sono delegate ad apposite librerie esterne predefinite

- di cui bisogna includere l’header file nel - ... di cui bisogna includere l header file nel

programma

stdio h il C - stdio.h per il C

11

(12)

Variabili e tipi Variabili e tipi

™ Una variabile è una entità che può assumere un valore

l ll’i t di i i di l i ( i )

qualunque all’interno di un insieme di valori (tipo)

™ I tipi possono essere predefiniti dal linguaggio di p p p f g gg

programmazione (tipi primitivi) o definibili attraverso appositi costrutti messi a disposizione dal linguaggio pp p g gg (tipi di utente)

™ I tipi possono essere semplici (l'informazione è

™ I tipi possono essere semplici (l informazione è

definita come un oggetto non decomponibile in altri oggetti) o strutturati (l'informazione è definita come oggetti) o strutturati (l informazione è definita come un oggetto decomponibile in altri oggetti)

12

(13)

Dichiarazioni di Variabili

™ Le informazioni usate in un programma (e quindi p g ( q anche le variabili) vanno definite nel tipo e

nell’attributo (nome), prima di essere usate

™ I linguaggi mettono a disposizione apposite frasi per dichiarare le variabili usate nel programma

™ Queste frasi sono in generale costituite da una parola chiave (per il tipo) e dalla lista dei nomi (identificatori) delle variabili:

) int n1 n2 total ; terminatore

d ll f int n1, n2, total ;

tipo intero

id tifi t i di i bili

della frase

13

p identificatori di variabili

(14)

Identificatori e Keywords

Un programma C è scritto utilizzando:

™ Keywords: parole proprie del linguaggio di C (ad es

™ Keywords: parole proprie del linguaggio di C (ad es.

Istruzioni o tipi predefiniti)

™ Id tifi t i l d fi it d ll’ t t ( i bili

™ Identificatori: parole definite dall’utente (es. variabili, costanti, tipi definiti dall’utente)

)non possono coincidere con alcuna keyword ...

main()() {

int n1, n2, total;

Keywords Identificatori

Oltre a keywords e identificatori si usano anche simboli

14 speciali (ad esempio parentesi, simboli di interpunzione)

(15)

Identificatori in C

™ Gli identificatori di qualsiasi oggetto in un programma possono consistere di un numero qualsiasi di caratteri

p q

alfanumerici minuscoli o maiuscoli incluso il carattere

“ ” (underscore). _ ( )

™ Il primo carattere deve necessariamente essere una lettera oppure il carattere underscore.

lettera oppure il carattere underscore.

™ Il compilatore fa differenza tra lettere minuscole e maiuscole

maiuscole

Esempi validi:

dd 2 dd F l k f d

sp_addr sp2_addr F_lock_user _found Esempi non validi:

15

20_secolo -pippo

(16)

C Preprocessore C

™ Una estensione al linguaggio che fornisce le ti ibilità

seguenti possibilità:

)inclusione di file

)definizione di costanti

™ Inoltre:

)definizione di macro sostituzioni )compilazione condizionalep

™ Noi useremo solo le prime due

16

™ Noi useremo solo le prime due …

(17)

Preprocessore C Preprocessore C

™ I comandi del preprocessore iniziano con # nella prima colonna del file sorgente e non richiedono il

“;” alla fine della linea.

™ Un compilatore C esegue la compilazione di un programma in due passi successivi.

p g p

)Nel primo passo usa il preprocessore per sostituire ogni occorrenza testuale definita sostituire ogni occorrenza testuale definita attraverso la direttiva # con il corrispondente testo da inserire (file costanti macro)

testo da inserire (file, costanti, macro)

)La compilazione vera e propria avviene nel secondo passo

17

secondo passo

(18)

Preprocessore C: Inclusione di file Preprocessore C: Inclusione di file

™ Il comando di inclusione #include permette di

i i l h i l di i di

inserire nel sorgente che contiene la direttiva di inclusione, il file specificato, a partire dal punto in

i è l di i

cui è presente la direttiva.

#include “const.h”

#include <stdio.h>

™ Nel primo caso il file da includere verrà ricercato p

nella directory corrente, nel secondo verrà cercato in quella di default.

q

™ E’ convenzione che i file da includere abbiano estensione .h (header file).

18

( )

(19)

Preprocessore C: Macro

™

L’uso della direttiva #define consente anche di definire delle macro

di definire delle macro.

)Una macro è una porzione di codice molto breve che è possibile rappresentare attraverso un nome; il

possibile rappresentare attraverso un nome; il preprocessore provvederà ad espandere il

corrispondente codice in linea.p

™ Una macro può accettare degli argomenti, nel senso che il testo da sostituire dipenderà dai parametri

che il testo da sostituire dipenderà dai parametri utilizzati all’atto del suo utilizzo. Il preprocessore espanderà il corrispondente codice in linea avendo espanderà il corrispondente codice in linea avendo cura di rimpiazzare ogni occorrenza del parametro formale con il corrispondente argomento reale

19

formale con il corrispondente argomento reale.

(20)

Preprocessore C: Costanti p

™ Attraverso la direttiva #define del preprocessore è possibile definire delle costanti:

possibile definire delle costanti:

#define nome testo da sostituire

™ Esempi

™ Esempi

#define MAXLEN 100

#define YES 1

#define NO 0

#define ERROR “File non trovato\n”

i di l i ( l

™ E’ uso comune indicare per le costanti (e per le macro in genere) le lettere maiuscole.

L’ di t ti f i l l ibilità

™ L’uso di costanti e macro favoriscono la leggibilità del programma e consentono un facile riuso del

codice

20

codice

(21)

Dal programma sorgente al ibil

programma eseguibile

Editor prog.c Compiler

prog.o Linker

prog

lib.o h fil /lib

VAI A INTRO COMPLATORI ->

21

other files/library

Riferimenti

Documenti correlati

Per comprendere meglio il pensiero di Scoto su questo tema, viene offerta in un primo momento una ricostruzione storica dell’evoluzione delle diverse dottrine sulla relazione (cap.

Osteonecrosis of the jaw in patients with multiple myeloma treated with bisphosphonates: evidence of increased risk after treatment with zoledronic acid. Badros A, Weikel d,

5 e 6a-b sono apparsi, al momento dell’apertura dei saggi, caratterizzati dalla presenza di un riempimento di pozzolana grigia, messa a protezione delle strutture e dei

Nieto, R, Miranda, A, Garcia, M.A, Aguilera, J.F 2002, ‘The effect of dietary protein content and feeding level on the rate of protein deposition and energy utilization in

Anche nel quadrante meridionale della piazza questa situazione, posta in luce dalle nostre indagini, appare confermata dalla natura e dalla potenza degli strati di accumulo, formati

A distanza di 20 giorni, 25 pazienti del gruppo A riferivano un netto miglioramento della sintomatolo- gia rispetto al gruppo controllo, soprattutto del pruri- to; il gruppo

∆ Charge transfer resistance values (circles) were measured for probe- modified sensors exposed to a 10 ␮L drop of the amplified target solution (1:5 dilution in 0.5 mol/L

D’altro canto, l’idea che il modo di agire e di entrare in relazione con gli altri sia prodotto proprio dal riferimento a un sistema di saperi rende pos- sibile rintracciare