PROGRAMMAZIONE Introduzione

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Introduzione al linguaggio C++
1 Introduzione ai calcolatori Parte II Software di base.
Il Software.
Linguaggi di programmazione
Introduzione al linguaggio C
Code::Blocks Ambiente di sviluppo.
Code::Blocks Ambiente di sviluppo.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
I linguaggi di programmazione
Il Sistema Operativo.
File System Cos’è un File System File e Directory
Elaboratore e Sistemi Operativo
Algoritmi e Programmazione
Massa Laura Mela Enrica
Interfaccia del file system
Programmazione Procedurale in Linguaggio C++
Sistemi operativi. Informatica 1 SCICO - a.a. 2010/11 2 Insieme di programmi per gestire le risorse del calcolatore – Risorse: memoria di massa, tastiera.
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
I file l I File sono l unità base di informazione nellinterazione tra utente e sistema operativo l Un file e costituito da un insieme di byte attinenti.
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Caratteri e stringhe di caratteri
File.
(docente) Fabio Aiolli Web: (docenti laboratorio)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
Le prestazioni (velocità) di un singolo disco sono limitate dalla tecnologia usata, -per aumentare le prestazioni si può pensare di far operare in parallelo.
Struttura dei sistemi operativi (panoramica)
I Thread.
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
Informatica Generale Susanna Pelagatti
Unità Didattica 2 I Linguaggi di Programmazione
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
Strutture di controllo in C -- Flow Chart --
Dichiarazioni e tipi predefiniti nel linguaggio C
SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (alla lettera, ferramenta). La struttura.
I File.
Il Linguaggio C.
Espressioni condizionali
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
Fondamenti di informatica Linguaggio C Main Program: Architettura di un PC Diagrammi di flusso Linguaggio C.
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
Programmazione in Java
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Software e sistema operativo 19-22/5/08 Informatica applicata B Cristina Bosco.
CODIFICA Da flow-chart a C++.
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Il Sistema Operativo (1)
Il Sistema Operativo: il File System
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
Sistema Operativo (Software di base)
Il Sistema Operativo Il Sistema Operativo è costituito dall’insieme dei programmi necessari per far funzionare tutto l’hardware del calcolatore e per nascondere.
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
ISIA Duca degli Abruzzi a.s. 2010/2011 prof. Antonella Schiavon
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

PROGRAMMAZIONE Introduzione PARTE 4 La Macchina Software Fabio Aiolli PROGRAMMAZIONE Introduzione

Macchina Hardware e Macchina Software Agli albori dell'informatica, si programmava in binario, cioe` in linguaggio macchina, "scrivendo" i programmi direttamente nella RAM applicativi sistema operativo macchina hardware Adesso ci sono vari livelli e ogni livello rappresenta il supporto alla programmazione per il livello sovrastante Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Programmi complessi Istruzioni di alto livello Istruzioni (funzionalita’) elementari Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione "traduce" per l'utente in linguaggio macchina macchina software macchina hardware utente Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Software La CPU è in grado di interpretare ed eseguire istruzioni elementari espresse nel proprio Linguaggio Macchina, quali "leggi il dato presente in una locazione di memoria", "somma due valori", "scrivi questo dato in una locazione di memoria“ e poco altro! I ‘mattoncini della LEGO’ ;-) Windows, Word ed Excel sono dei software (‘intere costruzioni della LEGO’) Windows e` un sistema operativo Word ed Excel sono delle applicazioni (o programmi applicativi); esistono le versioni per Windows e per Mac Fabio Aiolli PROGRAMMAZIONE Introduzione

Tutto viene alla fine "eseguito" dalla macchina hardware! La macchina software: facilita l'input/output permette la programmazione in linguaggi ad alto livello, come C/C++/Java rende disponibili programmi applicativi per compiere operazioni molto complicate Tutto viene alla fine "eseguito" dalla macchina hardware! Fabio Aiolli PROGRAMMAZIONE Introduzione

Sistemi Operativi Sistema operativo: insieme di programmi (software di base) che gestiscono l’hardware CPU Memoria RAM Memoria di massa (Hard Disk) Dispositivi di I/O Software applicativo: insieme dei programmi scritti da sviluppatori o dall'utente

Vari SO Fino agli anni 1980 molti SO (dedicati alle varie macchine) Successivamente convergenza su pochi SO anche portabili su architetture diverse: DOS (Microsoft), non esiste piu' Unix (Sun e altri), portabile Linux (open source), portabile Windows (Microsoft) Mac OS (Apple) SO dedicati, per macchine mainframe (es. IBM AS400)

PROGRAMMAZIONE Introduzione SO mono/multitasking I primi SO erano monotasking: ovvero in grado di gestire l’esecuzione di un solo programma per volta Solo alla terminazione di un programma era possibile eseguire un altro programma MS-DOS era monotasking Tutti i SO moderni sono multitasking: Windows, Linux, Unix, MacOSX, BSD, ... Fabio Aiolli PROGRAMMAZIONE Introduzione

Gestione della memoria RAM Una parte della RAM viene riservata per il SO I programmi per poter essere eseguiti devono essere caricati -- almeno in parte -- in RAM assieme ai loro dati. Di questo compito se ne occupa un programma del kernel del SO detto caricatore (loader) Sappiamo che ci possono essere piu' processi concorrenti, cioe' piu' programmi simultaneamente in esecuzione che si contendono la CPU e si suddicidono la RAM La RAM e' una risorsa finita e generalmente "scarsa", quindi vi sono dei limiti al caricamento in RAM dei programmi Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Il gestore della memoria deve essere in grado di suddividere la RAM per assegnarne delle porzioni a ciascun programma I programmi in linguaggio macchina fanno riferimento a degli indirizzi logici o virtuali di memoria e non ad indirizzi assoluti (cioe' fisici) Il caricatore deve quindi rilocare i programmi, cioe' trasformare gli indirizzi logici in indirizzi fisici, cioe' indirizzi delle locazioni di memoria ove il programma viene effettivamente caricato in RAM Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Il gestore della memoria offre al programma la visione di una memoria virtuale, diversa da quella fisica: cio' rende in particolare possibile l'esecuzione di programmi che richiederebbero piu’ della memoria disponibile (tecnica dell’overlay) Fabio Aiolli PROGRAMMAZIONE Introduzione

Gerarchia di Memoria Registri Cache Memoria Principace (RAM) Memoria Secondaria (di massa) Fabio Aiolli PROGRAMMAZIONE Introduzione

Gestore della memoria secondaria Il gestore della memoria di massa e' denominato file system. Si occupa di: Fornire programmi per accedere e gestire i file Rendere trasparente (cioe` nascondere) la struttura fisica della memoria di massa (dell'hard disk) Ottimizzare l’occupazione della memoria di massa (dell'hard disk) Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione File Un file e' l'unità logica di informazione di un file system Fisicamente: e' una sequenza di byte che contiene informazioni tipicamente "omogenee" Es.: programma, testo, immagine, … Tutti i dati del file system sono organizzati in file I file sono memorizzati nelle memorie di massa, tipicamente l'hard disk Per ogni file vengono memorizzate varie ulteriori informazioni identificatore: nomefile.estensione data di creazione e ultima modifica dimensione posizione effettiva dei dati nella memoria di massa diritti di accesso etc Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Estensioni dei file .exe : programma eseguibile .txt : file di testo .doc : file di Microsoft Word .xls : file di Microsoft Excel .jpg, .gif : file di immagini .wav, .mp3 : file di suoni .mpg, .avi : file di filmati .c, .cpp, .java : file di programmi C, C++, Java Fabio Aiolli PROGRAMMAZIONE Introduzione

Organizzazione dei file I file sono organizzati logicamente in modo gerarchico E' una organizzazione logica che non e' in relazione con la loro organizzazione fisica, cioe' la loro posizione fisica nella memoria di massa Directory: e' un insieme di file e altre directory Fabio Aiolli PROGRAMMAZIONE Introduzione

Organizzazione ad albero I dischi fissi possono essere divisi in partizioni Una partizione e' organizzata gerarchicamente come un albero rovesciato (come quello genealogico) Nodi e collegamenti padre-figlio tra nodi Nodo dell'albero: file o directory Nodi divisi per livelli Collegamenti tra nodi di livelli vicini: nodo sopra = padre, nodo sotto = figlio Ogni nodo ha un solo padre Padre più in alto = radice I nodi che sono file non hanno figli Cammino assoluto o relativo (per file) directory Fabio Aiolli PROGRAMMAZIONE Introduzione file

Indirizzo (o percorso) dei file in Windows partizione Z Directory corrente A a Z:\a c Z:\A\c b B C Z:\A\C\D\f f d e D E F f g h Z:\A\C\E\h ..\E\h Fabio Aiolli PROGRAMMAZIONE Introduzione

Indirizzo (o percorso) dei file in Unix/Linux Directory corrente a A /a /A/c b B c C /A/C/D/f ./f f d e D E F f g h /A/C/E/h ../E/h Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Operazioni su file Creazione Apertura Chiusura Cancellazione Copia Rinomina Visualizzazione Scrittura Modifica … Fabio Aiolli PROGRAMMAZIONE Introduzione

Il processo di programmazione PARTE 5 Il processo di programmazione Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Problemi e algoritmi La programmazione e' la disciplina che si occupa della risoluzione di problemi tramite programmi scritti in qualche linguaggio di programmazione Il problema e' una definizione sintetica di cio' che il programma deve realizzare dal punto di vista dell'utente La soluzione fornisce un'idea dell'approccio che deve essere seguito per risolvere il problema, tenendo anche in considerazione quale software gia' esistente potrebbe essere riutilizzato L'algoritmo e' una descrizione precisa e non ambigua di una sequenza di passi da seguire per risolvere un problema. L'algoritmo e' quindi un raffinamento della soluzione. Gli algoritmi possono essere espressi in molti modi Il programma e' una (possibile) descrizione dell'algoritmo espressa usando un particolare linguaggio di programmazione. Si intende che il programma debba essere completo ed eseguibile Per i banali problemi che vedremo, useremo direttamente il linguaggio C per descrivere gli algoritmi. Quindi, per noi, algoritmi=programmi Fabio Aiolli PROGRAMMAZIONE Introduzione

Il processo di programmazione Il processo di programmazione comprende tutte le attivita' necessarie per sviluppare dei programmi in modo che siano memorizzati e preparati per l'esecuzione Per sviluppare programmi su un computer e' necessario un ambiente di sviluppo che almeno comprenda, oltre al sistema operativo, un editor ed un compilatore Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Editor e compilatori Un programma e' un testo che consiste in una sequenza di istruzioni scritte in un particolare linguaggio di programmazione. Tale "testo" viene creato e salvato come un file su disco tramite un editor. Una volta che e' stato scritto e memorizzato, il (testo del) programma viene dato in input al compilatore Il compilatore ha una duplice funzione: Controlla la validita' del programma: segnala gli errori di sintassi. Questi errori devono essere corretti tramite l'editor ed il programma corretto deve quindi essere nuovamente compilato Se il programma non contiene errori, il compilatore traduce il programma in linguaggio macchina Fabio Aiolli PROGRAMMAZIONE Introduzione

Esecuzione dei programmi Il compilatore naturalmente non e' in grado di scoprire gli errori logici o di esecuzione (i ben noti bug) del programma: in tali casi, il programma risulta essere sintatticamente corretto ma non si comporta come ci si aspetta Il programma viene eseguito (o "fatto girare") attraverso un comando al sistema operativo che lo carica in memoria e quindi diventa un processo in esecuzione Gli errori logici possono essere prevenuti seguendo delle buone regole di programmazione Spesso gli errori logici si individuano mandando in esecuzione il programma ed osservandone il comportamento tramite degli insiemi di test affidabili Una volta rilevato e corretto un errore logico, si dovrebbero nuovamente eseguire i test sul suo comportamento, in quanto le presunte "correzioni" potrebbero aver introdotto nuovi errori Il processo di rilevazione e correzione degli errori logici di un programma viene chiamato debugging Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione HelloWorld in C Nome file: helloword.c #include<stdio.h> main() { printf(“Hello World!\n”); } gcc helloword.c -o helloword.exe Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Token I token sono unita’ sintattiche di base del C Parole chiave Identificatori Costanti Costanti stringa Operatori Simboli di interpunzione Fabio Aiolli PROGRAMMAZIONE Introduzione

Parole chiave (Keyword) del C auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione La libreria standard Input e Output <stdio.h> Test dei caratteri <ctype.h> Funzioni su stringhe <string.h> Funzioni Matematiche <math.h> Funzioni Utilita’ <stdlib.h> Funzioni Diagnostiche <assert.h> Liste argiomenti variabile <stdarg.h> Salti non locali <setjmp.h> Segnali <signal.h> Funzioni Date e Ore <time.h> Limiti dei tipi di variabile <limits.h> Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Tipi di Dato Un singolo byte char Numero Intero int Numero Intero corto short Numero Intero lungo long int Numero in virgola mobile (singola precisione) float Numero in virgola mobile (doppia precisione) double Numero in virgola mobile (precisione estesa) long double Interi con segno signed {char/int} Interi senza segno unsigned {char/int} Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Sequenze di Escape \a bell \\ backslash \b backspace \? punto interrogativo \f formfeed \' apice singolo \n a capo \” apice doppio \r ritorno carrello \ooo carattere ottale \t tabulazione orizzontale \xhh carattere esadecimale \v tabulazione verticale Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Dichiarazioni di variabili tipo nome_della_variabile [ = inizializzazione]; Esempi: ● int a; ● int a = 2; ● int a, b; ● float f = 2.345; ● char c = 'X'; ● char messaggio[] = “Questa e' una stringa”; Facendo precedere il tipo dal qualificatore const, si ottiene una “variabile costante”, il cui valore non potrà essere cambiato const double pi = 3,141592653; Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Operatori Operatori ● Aritmetici: +, -, *, /, % ● Relazionali: >, >=, <, <=, ==, != ● Logici: &&, ||, ! ● Incremento e decremento: ++, -- ● bitwise: &, |, ^, <<, >>, ~ ● Assegnazione: =, +=, -=, *=, ecc. ● Condizionale ternario: expr1 ? expr2 : expr Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Conversioni di Tipo Quando un'espressione coinvolge valori di tipo diverso, essi vengono convertiti ad un tipo comune: automaticamente ad un tipo “più grande”, che quindi non fa perdere informazione esplicitamente, mediante un operazione di cast. Obbligatoria se non e' possibile una conversione implicita automatica. Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione If (else) if (condizione) { /* blocco eseguito se la condizione e' vera */ } else { condizione e' falsa */ } Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Operatori Logici Expr1 Expr2 Expr1 && Expr2 Expr1 || Expr2 ! Expr1 Zero 1 Non Zero Fabio Aiolli PROGRAMMAZIONE Introduzione

Valutazione short-circuit La valutazione degli operatori logici && e || avviene in maniera short-circuit, cioè da sinistra verso destra e si interrompe non appena il risultato diventa noto. (a != 0) && (++i < 10) (a!=0) || (++i < 10) Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Switch Case switch (espressione) { case espr-costante1: istruzioni1 case espr-costante2: istruzioni2 case espr-costante3: istruzioni3 case espr-costante4: istruzioni4 ... default: istruzioni_default } Fabio Aiolli PROGRAMMAZIONE Introduzione

Laboratorio I

Comandi principali di Linux (1) Sintassi: [comando] –[opzioni] [argomenti] ls mostra il contenuto di una director l versione lunga a mostra anche i files nascosti che iniziano con “.” t presenta in ordine di modifica (dal piu’ recente al meno recente) man [comando] invoca il manuale con le infomazioni sul comando per scorrere le pagine del manuale freccia in giu’ e in su per uscire dal manuale: q Fabio Aiolli PROGRAMMAZIONE Introduzione

Comandi principali di Linux(2) mkdir x crea una nuova directory con nome x rmdir x elimina la directory x solo se e’ vuota cd x (change directory) mi porta all’interno della directory indicata dal path x esempio cd /d1/d3/ mi porta dentro d3 che e’ una sottodirectory di d1 path puo’ essere relativo da dove mi trovo a dove voglio andare assoluto dalla home a dove devo andare ./ indica la directory corrente (dove mi trovo) ../ indica le directory che contiene la directory corrente cd da solo mi porta sempre alla home emacs nomefile & invoca l’editor emacs aprendo un file chiamato nomefile Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Emacs Permette di scrivere dei testi e fornisce numerose funzionalita’ per la gestione dei testi Salvataggio Ricerca di una parola Rimpiazzamento di una parola Cambiare i font Visualizzazione della sintassi attraverso colori importante per programmare funziona solo se il file ha l’estensione giusta per i programmi in C l’estensione e’ .c Fabio Aiolli PROGRAMMAZIONE Introduzione

Comandi principali di Linux(3) cp x y crea una copia del file x chiamata y mv x y rinomina il file x chiamandolo y pwd (print working directory) stampa il cammino (path) dalla home alla directory in cui ci si trova rm x elimina il file x Alcune scorciatoie della shell tasti con freccie in su e in giu’ per scorrere la storia dei comandi precedentemente inseriti tasto tab per completare automaticamente comandi e nomi da inserire Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Esercizio 1 creare due directory, ad esempio d1 e d2 spostarsi dentro d1 creare il file dataoggi.txt dentro d1 scrivere la data di oggi nel file salvare il file dataoggi.txt copiare dataoggi.txt nella directory d2 Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Esercizio 2 Creare dentro d2 una directory d3 Spostarsi in d3 Aprire con emacs il file mese.txt dentro d3 Scrivere dentro il file il mese corrente Salvare il file Spostare il file mese.txt dentro d2 Eliminare d3 Fabio Aiolli PROGRAMMAZIONE Introduzione

Il compilatore …in breve input: progamma in C output: programma il linguaggio macchina pronto per essere eseguito Fasi del compilatore Analisi lessicale e sintattica: vengono riconosciute le parole chiave ei costrutti fondamentali del linguaggio Analisi semnatica: viene dato un significato alle istruzioni del programma Assembly: viene generato il codice assembler Linking e loading: viene generato il codice in linguaggio macchina, vengono creati i collegamenti necessari e vengono caricati i dati in memoria necessari Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Compilatore per C gcc comando che invoca il compilatore per programmi scritti in C gcc x.c –o y compila x.c e mette l’eseguibile nel file y gcc –E x.c si ferma dopo la fase di preprocessing gcc –S x.c si ferma dopo la fase dell’assemblaggio gcc –c x.c si ferma prima della fase del linking Fabio Aiolli PROGRAMMAZIONE Introduzione

PROGRAMMAZIONE Introduzione Cygwin Emulatore della shell di Linux per Windows Per scaricarlo: www.studenti.math.unipd.it cliccare su “Software di laboratorio” poi su “ Contenuto del CD Software …” con Cygwin potete usare i comandi visti in classe e il compilatore gcc per scrivere I programmi potete usare l’editor che preferite Fabio Aiolli PROGRAMMAZIONE Introduzione