Obiettivi del corso

Obiettivo del corso e' quello di imparare ad implementare idee nel linguaggio di programmazione C ed a capire cosa succede nel nostro elaboratore quando eseguite un programma. Il corso contiene molti esempi. E' importante che ogni esempio venga non solo letto e capito, ma soprattutto provato, modificato, anche riutilizzato.



Le lezioni di questo sito sono cosi' articolate:


Inciampo Prima di iniziare il corso si consiglia assolutamente di leggere queste informazioni.



OBIETTIVO DELLA LEZIONE
Capire cosa e' un programma, come possa diventare eseguibile su un processore attraverso la compilazione, quali sono gli strumenti per iniziare a scrivere programmi ed a eseguirli e e dove trovarli in rete.


.:. LUCIDI DELLA LEZIONE .:.

Note

Cosa e' un programma

Approfondiamo la struttura di un programma C

Cosa serve per programmare: Compilatori ed Ambienti di sviluFppo

Abbiamo visto cosa serve un compilatore. Ma come si utilizza? Il modo più semplice è attraverso un "Ambiente di sviluppo", cioè un software che ci permette di editare il file, di produrre l'eseguibile premendo un tasto e di controllarne l'esecuzione nel caso ci siano comportamenti anomali ("debug" del codice).

In alternativa possiamo utilizzare direttamente il compilatore da riga di comando. Come?

Il precompilatore (come commento/accenno)



Lab

Raccomandazioni e prassi

Esercizio 1
Usando NOTEPAD, creare il file halloword.c copiando il programma sotto riportato e compilarlo con DEV-C
# include <stdio.h>

int main()
{
    printf("Hello World!");
}
Esercizio 2
Compilare il file halloword.c con il compilatore gcc da riga di comando. Esplorare le varie opzioni di compilazione chiamando l'help.
  • Per prima cosa apriamo un command prompt;
  • VERIFICHIAMO di essere nella cartella dove abbiamo messo il file da compilare!
  • Aggiungiamo al PATH la cartella dove è installato il GCC, per esempio in C:\Dev-Cpp\bin
    con set PATH=%PATH%;C:\Dev-Cpp\bin
  • Invochiamo il compilatore come spiegato a lezione.

Se non diversamente specificato, da adesso in poi, useremo sempre in aula TUTTI DEV-C. A casa, prova sempre ad usare altri compilatori e a compilare da riga di comando.

Esercizio 3
Usando l'interfaccia grafica di DEV-C, creare il file sesso.c copiando il programma sotto riportato , compilarlo con DEV-C
#include <stdio.h>

int main()
{
    char sex;
    int eta;

    printf("Inserire il proprio sesso:\n M sta per maschio:\n F sta per femmina:\n");
    scanf("%c", &sex);

    printf("Inserire l'eta\n");
    scanf("%d", &eta);

    if((sex=='M') || (sex=='m')) printf("Sei un maschio e hai %d anni", eta);
    else printf("Sei una femmina e hai %d anni",eta);

    printf("\n\nPremi un tasto per uscire");
    fflush(stdin);
    getchar();   // trucco per far rimanere aperta la finestra di testo
}
Esercizio 4
Inziamo a vedere come si manifestano gli errori di sintassi in C.
Dal programma dell'esercizio precedente togliere getchar(); compilare, cosa cambia?
Togliere il punto e virgola a int eta; cosa accade? Dove si manifesta l'errore? Perche'?
Togliere una graffa in varie posizione del costrutto if. cosa accade? Dove si manifesta l'errore? Perche'?
Modificare (sex=='m') in (sex='m') cosa cambia?
Esercizio 5
Svolgere l'esercizio seguendo le indicazioni di seguito riportate.
Leggi attentamente il programma:
#include <stdio.h>
int main()
{
    char sex;
    int eta;

    printf("Inserire il proprio sesso:\n M sta per maschio:\n F sta per  femmina:\n");
    scanf("%c", &sex);

    printf("Inserire l'eta\n");
    scanf("%d", &eta);

    if((sex=='M') || (sex=='m')) printf("Sei un maschio e hai %d anni", eta);
    else printf("Sei una femmina e hai %d anni",eta);

    printf("\n\nPremi un tasto per uscire");
    fflush(stdin);
    getchar();   // trucco per far rimanere aperta la finestra di testo
    return 0;
}
Ora prova a rispondere ai quesiti di seguito elencati.
  1. E' presente una direttiva per il pre-complilatore?
  2. Perché è presente una parte di codice chiamata main?
  3. Dove vengono definite le variabili e quante sono?
  4. Dove inizia e finisce la parte esecutiva?


Controlla le tue risposte con questa soluzione:
#include <stdio.h> // direttiva

int main() // tutti i programmi C devono contenere una parte che si chiama main
{
    char sex; // dichiarazione prima var.
    int eta; // dichiarazione seconda var.

  // inizio parte esecutiva
    printf("Inserire il proprio sesso:\n M sta per maschio:\n F sta per femmina:\n");
    scanf("%c", &sex);

    printf("Inserire l'eta\n");
    scanf("%d", &eta);

    if((sex=='M') || (sex=='m')) printf("Sei un maschio e hai %d anni", eta);
    else printf("Sei una femmina e hai %d anni",eta);

    printf("\n\nPremi un tasto per uscire");
    fflush(stdin);
    getchar();   // trucco per far rimanere aperta la finestra di testo
    return 0;
  // fine parte esecutiva
}

Esercizio 6
Prova a rispondere alle seguenti domande.
Se non trovi le risposte o non sei sicuro, rivedi la lezione.
--------------------------------------------------------------------------------
1. Un programma scritto in Fortran, C o Java è:


- un file di testo
- una sequenza di istruzioni in linguaggio macchina
- un insieme di 0 e 1
- una sequenza di numeri binari che il processore può interpretare

--------------------------------------------------------------------------------

2. Il C è un linguaggio di quale livello?

--------------------------------------------------------------------------------

3. Esiste un linguaggio di programmazione migliore degli altri?

--------------------------------------------------------------------------------

4. Cosa è un programma eseguibile?

--------------------------------------------------------------------------------

5. Cosa è il codice assembly?

--------------------------------------------------------------------------------

6. Una istruzione in C corrisponde sempre ad una istruzione assembly?

--------------------------------------------------------------------------------

7. La definizione di una etichetta può essere posta:

- ovunque, tanto è una sostituzione che avviene a livello di pre-compilazione, 
  ma e' prassi inserirla sopra il main del programma
- solo sopra il main del programma

--------------------------------------------------------------------------------



Esercizio 7 (facoltativo)
Compilare il file halloword.c creato nell'esercizio 1 con Microsoft .NET
Compilare il file halloword.c creato nell'esercizio 1 con Microsoft Visual Studio .NET. La procedura e' in questo caso piu' laboriosa perche' dobbiamo necessariamente definire un progetto. Quindi:
  • Per prima cosa apriamo MSVS .NET;
  • Dal menu' file, selezioniamo nuovo progetto. Scegliamo un progetto "Visual C++" (anche se noi inseriremo solo un file C), per win32. IMPORTANTE: nel menu' successivo, tra le opzioni avanzate, ricordarsi di selezionare che volete una applicazione di CONSOLE che sia VUOTA (il file lo aggiungeremo manualmente al prossimo punto).
  • A questo punto dal menu file, aggiungiamo al progetto il nostro file halloword.c
  • Possiamo compilare il progetto ed eseguirlo.




Informazioni sul sito