Linguaggio C. Fondamenti. Struttura di un programma.



Documenti analoghi
Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C Compilazione, linking e preprocessor

LINGUAGGI DI PROGRAMMAZIONE

Variabili e tipi di dato

Alcune regole di base per scrivere un programma in linguaggio C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Introduzione alla programmazione in C


Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Funzioni in C. Violetta Lonati

Linguaggi di Programmazione

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Le variabili. Olga Scotti

Inizializzazione, Assegnamento e Distruzione di Classi

Fondamenti di Informatica Ingegneria Clinica Lezione 19/10/2009. Prof. Raffaele Nicolussi

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

GESTIONE INFORMATICA DEI DATI AZIENDALI

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

INFORMATICA 1 L. Mezzalira

Compilatore risorse display grafico LCD serie IEC-line

FONDAMENTI di INFORMATICA L. Mezzalira

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Tipi di dato-prima parte

Laboratorio Matematico Informatico 2

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Arduino: Programmazione

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Allocazione dinamica della memoria - riepilogo

Alfabeto ed elementi lessicali del linguaggio C

Linguaggi e Paradigmi di Programmazione

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Gestione dei File in C

Le stringhe. Le stringhe

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Concetto di Funzione e Procedura METODI in Java

Codifica: dal diagramma a blocchi al linguaggio C++

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Linguaggi di programmazione

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

Introduzione al Linguaggio C

Funzioni. Il modello console. Interfaccia in modalità console

Lezione 10: Librerie e compilazione separata

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Introduzione al linguaggio C Gli array

Programmare in Java. Olga Scotti

Introduzione. Informatica B. Daniele Loiacono

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

VARIABILI LOCALI E GLOBALI (ESTERNE)

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

Linguaggi di Programmazione

ToolChain: Come Generare Applicazioni in Linguaggio Macchina

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Corso di Informatica Applicata. Lezione 5. Università degli studi di Cassino

Calcolatori Elettronici A a.a. 2008/2009

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

IL SOFTWARE SECONDO LA NORMA UNI EN ISO :2008 (IIA PARTE) 1

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Il calcolatore - Applicazioni

Linguaggio C - Stringhe

Progettaz. e sviluppo Data Base

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Dispensa YACC: generalità

Corso di Informatica

Mon Ami 3000 Provvigioni agenti Calcolo delle provvigioni per agente / sub-agente

Il comando Make: : uno strumento per la compilazione ed esecuzione di software applicativo. A. Murli - Cacolo Scientifico a.a.

MANUALE UTENTE Fiscali Free

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

Header. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Fasi di creazione di un programma

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

Gestione Risorse Umane Web

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15

Programmazione in Java Parte I: Fondamenti

Piano di gestione della qualità

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

Introduzione al Foglio Elettronico

Dispensa di Informatica I.1

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Transcript:

Linguaggio C Fondamenti. Struttura di un programma. 1

La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione di Sistemi Operativi. Il capostipite del C è il BCPL (Basic Combined ProgrammingLanguage, 1966), con il quale furono scritti alcuni OS (Operating System). Il successore del BCPL fu il Linguaggio B (1970), ma non ebbe molta fortuna. Successivamente fu introdotto il "C" (1971), ed ebbe subito molto successo. Dal 1973 UNIX OS, quasi totalmente scritto in C. 2

La storia del Linguaggio C Il C diviene il linguaggio prescelto per la scrittura del Software di base (OS), prima la scelta doveva ricadere sull Assembler (per motivi di efficienza). Indipendente dall hardware (portabile). Standardizzazione: Inizialmente furono definite molte piccole varianti del C, incompatibili tra loro; ANSI (American National Standards Institute) si è occupato della sua standardizzazione nel 1989 (ISO C89), e del suo aggiornamento nel 1999 (ISO C99). 3

Caratteristiche del C Linguaggio a medio/alto livello. Alcune istruzioni sono direttamente traducibili in Linguaggio macchina (es: autoincremento e autodecremento). Variabili tipizzate, con notevoli possibilità di conversione mediante il type casting, che permette di forzare una variabile a cambiare tipo; la correttezza di tipi viene verificata in fase di compilazione: questo è reso possibile dal fatto che le variabili vanno dichiarate. Abbina ad un medio-alto livello di astrazione, un buon controllo delle operazioni a basso livello (es: gestione dell indirizzamento di memoria). 4

Fasi di traduzione ed esecuzione di un programma C Fasi di compilazione: Preprocessing: il preprocessore è un modulo che si occupa di includere altri file (es: librerie standard) e sostituisce simboli speciali che seguono particolari direttive (es: costanti simboliche); Compilazione: traduzione del programma in codice oggetto (linguaggio macchina (*.obj)); Linking: risoluzione dei riferimenti a funzioni e variabili definite altrove (es. in librerie standard o definite dall utente), producendo un immagine eseguibile (progr.exe); Esecuzione: Loading: caricamento in memoria del codice eseguibile; Esecuzione delle istruzioni; 5

Primo programma in C #include <stdio.h> /*# = Preprocessore C precede le direttive che il compilatore valuta prima di iniziare la traduzione effettiva del programma (in questo caso l inclusione della libreria delle funzioni standard di I/O (stdio.h)) */ void main(void) /* Funzione principale, l esecuzione di un programma C consiste nell esecuzione del main */ { printf( Hello world\n ); /* Visualizza sullo standard output (monitor) la frase fra \n è un carattere di controllo che rappresenta un a capo. Ogni istruzione deve terminare con ;. */ } 6

Esecuzione Ogni programma comincia la sua esecuzione con la funzione main. I commenti sono inseriti tra i caratteri /* e */ (oppure // per commentare un intera riga) e vengono ignorati in fase di compilazione. In void main (void), la sintassi indica che il programma non ha argomenti di ingresso e che non restituisce alcun valore in uscita. Il corpo del programma deve essere racchiuso tra { e }. 7

Istruzioni e Librerie Il set di istruzioni del C è molto limitato: le primitive più comunemente utilizzate (es. I/O, matematiche) sono contenute nelle librerie standard del C sotto forma di funzioni. Se si utilizzano delle funzioni contenute in una certa libreria, questa deve essere inclusa mediante la direttiva #include del Preprocessore. Es: la funzione di output printf() è contenuta nella libreria standard stdio.h; Per usare la funzione deve essere presente la direttiva di inclusione: #include <stdio.h> 8

Preprocessore Il preprocessore è un modulo software che fa parte del compilatore C. # è il simbolo con cui iniziano i comandi del preprocessore. Tali comandi non sono terminati da ; Attraverso il preprocessore si esprimono direttive al compilatore. Principali direttive: Inclusione di librerie; Definizione delle costanti simboliche e delle macro; Compilazione condizionale del codice. 9

Preprocessore: #include La direttiva #include consente di includere la copia di un file specificato. Esistono due forme: #include <nome_file> viene utilizzata per includere file di intestazione (header file) di una libreria standard, che sono memorizzati in directory standard (dipendenti dall implementazione del compilatore); #include nome_file cerca il file nella directory corrente, altrimenti in directory standard (perciò è utilizzata per includere header file definiti dal programmatore). 10

Preprocessore: #define La direttiva #define è utilizzata per definire costanti simboliche e macro. Il formato è: #define [identificatore] [testo_di_sostituzione] All interno del file in cui è presente, tutte le successive occorrenze dell identificatore saranno automaticamente sostituite dal testo_di_sostituzione, prima della compilazione. 11

Preprocessore: #define (per definizione di costanti simboliche) #define PI 3.14159 sostituirà tutte le occorrenze della costante simbolica PI con quella numerica 3.14159 12

Preprocessore: #define (per definizione di macro) Le macro possono essere definite con o senza argomenti. Una macro senza argomenti viene elaborata come una costante simbolica. In una macro con argomenti, essi saranno rimpiazzati all interno del testo di sostituzione e solo in seguito sarà espansa la macro: ovvero, il testo di sostituzione rimpiazzerà la lista degli identificatori e degli argomenti all interno del programma. Esempio: #define AREA_CERCHIO(x) ( PI * (x) * (x) ) ogni volta che nel programma appare AREA_CERCHIO(r) il valore di r sarà usato al posto di x, la costante PI sarà rimpiazzata dal suo valore (definito precedentemente) e la macro verrà espansa all interno del programma. 13

Preprocessore: #define (per definizione di macro) Esempio 1: area = AREA_CERCHIO(4) sarà espanso in area = ( 3.14159 * (4) * (4) ); Esempio 2: area = AREA_CERCHIO(c+2) sarà espanso in area = ( 3.14159 * (c+2) * (c+2) ); Vantaggi nell uso delle macro: risparmio nella definizione di una funzione; miglioramento nella leggibilità del programma. 14

Preprocessore: Compilazione condizionale Consente al programmatore di controllare la compilazione del codice del programma. Le direttive condizionali del preprocessore vengono valutate come espressioni costanti intere. Esempio: #define DEBUG #ifdef DEBUG printf( Variabile x = %d\n, x ); #endif L istruzione printf viene compilata (ed eseguita) solo nel caso in cui la variabile DEBUG sia definita in fase di compilazione. 15

Variabili In C ogni variabile è caratterizzata dai seguenti aspetti: Tipo; Classe di memoria. Assegnare un tipo ad una variabile significa assegnarle il dominio dal quale assume i valori e le operazioni che possono essere applicate su di essa; La classe di memoria determina la durata della vita (ciclo di vita) e l ambito di visibilità (scope) delle variabili. 16

Tipi di dati elementari in C Tipi di base char: carattere della codifica ASCII (1 byte in CP 2 ) int: intero con segno (attualmente 4 bytes in CP 2 ) float: virgola mobile, singola precisione (4 bytes) double: virgola mobile, doppia precisione (8 bytes) void: indica che il dominio della variabile è l insieme vuoto Modificatori (il cui effetto può dipendere dall architettura): unsigned: unsigned short int, unsigned int, unsigned char short: short int (generalmente 2 bytes). long: long int, long double (generalmente 4 e 12 bytes). 17

Dichiarazione di Variabili [tipo_var] var0, var1, ; E' possibile inizializzare una variabile al momento della dichiarazione: Esempi: int i, j, k=1; float x=2.6, y; char a; 18

Dichiarazione di Costanti La definizione di identificatori per le costanti, oltre che con il comando di preprocessore #define, può avvenire usando il qualificatore const: const tipo nome_costante = valore; Esempio: const double e = 2.71828182845905; 19