Lezione 1: Introduzione al Linguaggio C

Informazioni sul corso

Per favore consultate la homepage del corso per informazioni generali.

Computer

Un computer è un dispositivo elettronico in grado di eseguire autonomamente una serie di operazioni logiche ed elaborazioni prestabilite sui dati in esso inseriti (input) fornendo un responso (output).

La struttura logica del computer attuale può ricondursi alla presenza di almeno quattro elementi fondamentali:

Dal punto di vista hardware il computer inoltre è un sistema elettronico digitale (programmabile) che elabora cioè tutti i dati in formato digitale o numerico ovvero come sequenze di 0 e 1 corrispondenti a due livelli di tensione (alto e basso) corrispondenti a loro volta ai due stati fisici di interruttore aperto e chiuso.

Esempio di CPU

Esempio di CPU

Algoritmi, Programmi, Linguaggi e Dati

Il computer è un semplice esecutore di ordini, o istruzioni, impartite dall'esterno. Dato un problema da risolvere, il computer ha bisogno di un algoritmo, cioe' di un un algoritmo si può definire come un procedimento che consente di ottenere un risultato atteso eseguendo, in un determinato ordine, un insieme di passi semplici. Un programma è l'implementazione di un algoritmo in un linguaggio adatto a essere "compreso" ed eseguito da un computer. Un linguaggio di programmazione è un linguaggio formale, dotato di un lessico, di una sintassi e di una semantica ben definiti, utilizzabile per il controllo del comportamento di un calcolatore.

Esistono vari linguaggi di programmazione. Il linguaggio macchina è basato su un alfabeto binario di 0 e 1. Un simbolo di questo alfabeto viene detto bit. Il processore o CPU è in grado di eseguire i programmi scritti in linguaggio macchina. In altre parole in linguaggio macchina sono definite l'insieme di istruzioni fondamentali che un processore è in grado di compiere (instruction set) in cui i codici di programmi da eseguire devono essere tradotti. Scrivere programmi in tale linguaggio è estremamente sconveniente dato che un'operazione basilare può richiedere molte istruzioni.

I Linguaggi di basso livello, come l'assembly, sono leggermente piu' semplici da usare dato che permettono di scrivere programmi usando codici mnemonici piu' semplici che sequence di 0 e 1, pur rimanendo vicinissimi al linguaggio macchina.

I linguaggi ad alto livello semplificano la programmazione atraendo le caratteristiche fisiche della macchina. Programmi scritti in questi linguaggio non sono direttamente eseguibili, ma vengono tradotti in linguaggio macchina un programma chiamato compilatore. Esempi di linguaggi ad alto livello sono il C, Pascal, Java, Python.

Esempio di programma

Esempio di programma

I dati stessi su cui i nostri programmi lavorano devono essere codificati nel formato binario di 0 e 1. Un esempio di tale codifica e' il codice ASCII che codica i caratteri della lingua inglese usando sequence di sette bits. As esempio, la lettera A e' codificata come 1000001.

Per indicare la quantita' di memoria usata da programmmi e dati, si usa l'unita' di misura del byte che corrisponde a 8 bit. Un byte puo' rappresentare 28 valori tra 0 e 256. Multipli del byte sono il kilobyte KB (210 = 1024 byte), il megabyte MB (210 = 1024 KB) e il gigabyte GB (210 = 1024 MB).

Primo programma in C

Ecco il programma per stampare stringa di testo.

#include <stdio.h>

void main() {
    printf('Ciao');
}

Suggerimenti

Per iniziare a scrivere programmi in C sono sufficienti un text editor e un compilatore C. Con il text editor si scrive il programma (in un file di testo con estensione .c) e poi con il compilatore si traduce il programma scritto nel linguaggio C in un programma scritto in linguaggio macchina detto eseguibile. Infine, l'eseguibile può essere eseguito come una qualsiasi altra applicazione sulla piattaforma (Linux, Windows, Mac OS X, ecc.) che si sta usando. In generale, ogni piattaforma ha un suo linguaggio macchina che è incompatibile con quello di altre piattaforme. Ad esempio, non è possibile eseguire direttamente un programma scritto in linguaggio macchina di Linux su una piattaforma Windows. Il linguaggio C, al pari di altri linguaggi ad alto livello, permette di scrivere programmi che, previa compilazione, possono essere eseguiti su piattaforme diverse. I text editor e i compilatori C che si possono usare dipendono dalla piattaforma, anche se ce ne sono molti che sono disponibili per diverse piattaforme.

Text Editor. Il text editor e' qualsiasi applicazione che permette di scrivere file di testo semplice (plain text) va bene per scrivere programmi in C. Ad esempio i text editor disponibili di default sulle diverse piattaforme: vi sotto Linux/Unix, Notepad (Blocco note) sotto Windows, TextEdit sotto Mac OS X.

Programmer Text Editor. Non appena si iniziano a scrivere programmi di una certa lunghezza, risulta molto utile lavorare con text editor con syntax highlighting (evidenziamento della sintassi). Oltre a mettere in risalto la struttura sintattica del programma, questi text editor, aiutano a mantenere un buon stile di formattazione del codice (principalmente l'indentazione). Queste caratteristiche migliorano notevolmente la leggibilità (per un essere umano) del programma e quindi facilitano sia la scrittura del codice che la ricerca di eventuali errori. Di text editor con syntax highlighting, detti anche source code editor, ne esistono molti, alcuni sono specifici per certe piattaforme altri sono multipiattaforma (cioè, funzionano su varie piattaforme). Un ottimo source code editor, free e multipiattaforma (Linux, Windows, Mac OS X), è JEdit. Per Windows si puo' usare Notepad++, e per Mac OS X TextWrangler

Compilatori. Sotto Linux e Mac OS X è possibile usare, da una finestra di terminale, il compilatore gcc (GNU Compiler Collection) che spesso è fornito di default su tali piattaforme. Si può usare gcc anche sotto Windows tramite MinGW.

IDE. Sempre più spesso il compilatore è integrato in un IDE (Integrated Development Environment). Un IDE fornisce oltre al compilatore anche un source code editor un debugger ed eventualmente altri strumenti che sono d'ausilio nello sviluppo di programmi. Per Linux si puo' usare Anjuta, su Windows Visual C++ 2010 Express e su Mac OS X Xcode.