• Non ci sono risultati.

Elementi di informatica Elementi di informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Elementi di informatica Elementi di informatica"

Copied!
69
0
0

Testo completo

(1)

Elementi di informatica Elementi di informatica

Programmare in C

(2)

Programmare in C

(3)

Conosciamo

Calcolare l’area di un rettangolo Calcolare l’area di un rettangolo

/* Calcolo area rettangolo */

#include <stdio.h>

main() {

int base;

int altezza;

int area;

base = 3;

altezza = 7;

area = base*altezza;

printf("%d", area);

(4)

Calcolare l’area di un rettangolo Calcolare l’area di un rettangolo

/* Calcolo area rettangolo */

#include <stdio.h>

main() {

int base;

int altezza;

int area;

base = 3;

altezza = 7;

area = base*altezza;

(5)

Commenti:

Commenti: /* */ /* */

/* Calcolo area rettangolo */

tutto ciò che appare nella zona racchiusa tra /* */

non viene preso in considerazione dal compilatore può estendersi su più linee

/* Questo programma calcola l'area di un rettangolo */

(6)

Errori tipici Errori tipici

• Dimenticare di terminare un commento con */

• Incominciare un commento con i caratteri */ o

terminarlo con /*

(7)

Commenti:

Commenti: // //

Un altro modo per inserire un commento è farlo

precedere da //, ma in questo caso deve terminare a fine linea, non può andare a capo

OK

// Questo programma calcola // l'area di un rettangolo

NOK

// Questo programma calcola l'area di un rettangolo

(8)

/* Calcolo area rettangolo */

#include <stdio.h>

main() {

int base;

int altezza;

int area;

base = 3;

altezza = 7;

area = base*altezza;

Variabili

Variabili

(9)

Variabili (

Variabili (cont cont.) .)

Un linguaggio di programmazione necessita di contenitori per informazioni

Questi contenitori sono indicati in generale con il nome di variabile, per enfatizzare che il loro

contenuto può variare

variabile = cella di memoria (contenitore) identificata da un nome simbolico

(10)

Una metafora delle variabili Una metafora delle variabili

Dichiaro una variabile:

area

nome simbolico

Le variabili a cui non è stato assegnato un valore iniziale contengono un valore non specificato.

?

(11)

Dichiarazioni di variabili Dichiarazioni di variabili

int base;

int altezza;

int area;

area altezza

memoria

base

Ogni linguaggio di programmazione richiede di

dichiarare in un programma quali variabili verranno usate dicendo il loro nome simbolico ed il loro tipo

(12)

Dichiarazioni di variabili (

Dichiarazioni di variabili (cont cont.) .)

Sintassi:

tipo identificatore;

Semantica:

Una dichiarazione informa il compilatore su:

spazio di memoria;

operazioni

(13)

Osservazione Osservazione

Tutte le variabili devono essere

dichiarate prima di essere usate

(14)

/* Calcolo area rettangolo */

#include <stdio.h>

main() {

int base;

int altezza;

int area;

base = 3;

altezza = 7;

area = base*altezza;

Dichiarare prima di usare Dichiarare prima di usare

dichiaro

uso

(15)

Identificatori Identificatori

Un identificatore è formato da uno o più caratteri Regole da rispettare

1. Primo carattere: lettera o una sottolineatura ( _ ) 2. Caratteri successivi al primo: numeri o lettere o

sottolineature

3. Caratteri di punteggiatura o altri caratteri che hanno significati speciali: non ammessi

4. Maiuscole diverse da minuscole

5. Ogni identificatore deve essere diverso dalle parole riservate utilizzate per il linguaggio C

(16)

Identificatori (

Identificatori ( cont.) cont .)

Validi Non validi

Nome1 1nome

cognome_nome Vero?

_num Num;pippo

Attenzione

(17)

ritornando al nostro programma ritornando al nostro programma

/* Calcolo area rettangolo */

#include <stdio.h>

main() {

int base;

int altezza;

int area;

base = 3;

altezza = 7;

area = base*altezza;

printf("%d", area);

(18)

Istruzione di assegnamento Istruzione di assegnamento

base = 3;

altezza = 7;

area = base*altezza;

area altezza 7

memoria

21

base 3

(19)

Istruzione di assegnamento (

Istruzione di assegnamento (cont cont.) .)

Sintassi:

identificatore = espressione;

espressione può essere semplice come una singola costante o può essere una combinazione di variabili, operatori, …

Semantica:

calcola il valore di un’espressione (lato destro) ed assegnalo ad una variabile (lato sinistro)

L’eventuale valore memorizzato precedentemente nella variabile viene sostituito dal nuovo valore

(20)

Assegnamento: nota Assegnamento: nota

x=x+1;

Questa espressione in algebra non avrebbe senso perché un

valore non può essere uguale a se stesso più uno. In C = non vuol dire uguaglianza ma assegnamento: alla variabile x viene

assegnato il valore già presente nella variabile x incrementato di 1

x 5

x=x+1

x 6

(21)

(a)

Calcola valore dell’espressione (2+3*(5+2)) = 23

Assegna tale valore alla variabile x

Assegnamento: esempio Assegnamento: esempio

(a) x = z + 3 * (y + 2);

(b) x = x+2;

z y 5

memoria

2 3 inizio

x

(b)

Calcola valore dell’espressione (23+2) = 25

Assegna tale valore alla variabile x

z y 5

memoria

2 3 dopo (a)

x 23 25

dopo (b)

(22)

Attenzione Attenzione

Istruzioni di assegnamento errati errati x+2=0;

x+y=7+3;

(23)

ritornando al nostro programma ritornando al nostro programma

/* Calcolo area rettangolo */

#include <stdio.h>

main() {

int base;

int altezza;

int area;

base = 3;

altezza = 7;

area = base*altezza;

printf("%d", area);

(24)

Stampare il valore di area Stampare il valore di area

area altezza 7

memoria

21

base 3

(25)

Stampare il valore di una variabile Stampare il valore di una variabile

printf("%d", area);

area 21

stampa un intero decimale

%d sarà rimpiazzata da una stringa che rappresenta il valore di area

area altezza 7

memoria

21

base 3

(26)

/* Calcolo area rettangolo */

#include <stdio.h>

main() {

int base, altezza, area;

base = 3;

altezza = 7;

area = base*altezza;

printf("%d", area);

}

Nota Nota

/* Calcolo area rettangolo */

#include <stdio.h>

main() {

int base;

int altezza;

int area;

base = 3;

altezza = 7;

area = base*altezza;

printf("%d", area);

equivalenti

(27)

ancora sulle dichiarazioni di ancora sulle dichiarazioni di variabili

variabili

tipo lista di identificatori;

Esempio:

Esempio: int x,y,z;

Nota:

nella lista gli identificatori sono separati da

virgola

(28)

Struttura del programma Struttura del programma

/* Calcolo area rettangolo */

#include <stdio.h>

main() {

int base;

int altezza;

int area;

base = 3;

altezza = 7;

area = base*altezza;

direttive

dichiarazioni

istruzioni

(29)

Stile Stile

/* Calcolo area rettangolo */

#include <stdio.h>

main() {

int base, altezza, area;

base = 3;

altezza = 7;

area = base*altezza;

printf("%d", area);

/* Calcolo area rettangolo */

#include <stdio.h>

main(){int base,altezza,area;

base = 3;altezza = 7;

area = base*altezza;

printf("%d", area);}

Più leggibile Meno leggibile

equivalenti

(30)

Stampa più chiara Stampa più chiara

/* Calcolo area rettangolo */

#include <stdio.h>

main() {

int base, altezza, area;

base = 3;

altezza = 7;

area = base*altezza;

printf("Base: %d\n", base);

printf("Altezza: %d\n", altezza);

printf("Area: %d\n", area);

Base: 3

Altezza: 7 Area: 21

(31)

Buone abitudini Buone abitudini

• Scegliere nomi significativi di variabile aiuterà a rendere il programma auto esplicativo

• I nomi di variabile formati da più parole possono aiutare a rendere il programma più leggibile.

valorefinale ? poco leggibile

valore_finale ? OK

valoreFinale ? OK

• Separare le dichiarazioni e le istruzioni con una riga vuota

(32)

Il primo programma Il primo programma

Programma che stampa sullo schermo la frase

“Ciao, mondo.”

#include <stdio.h>

main() {

printf("Ciao, mondo.\n");

}

Ciao, mondo.

(33)

Analisi del programma:

Analisi del programma: main main

main() {

printf("Ciao, mondo.\n");

}

(34)

Analisi del programma:

Analisi del programma: printf printf

printf("Ciao, mondo.\n");

printf: istruzione per stampare su video

sequenza di caratteri (racchiusa tra " ")

spazio carattere come gli atri

\n carattere di new line (a capo)

(35)

Analisi del programma: inclusione Analisi del programma: inclusione

#include <stdio.h>

consente di aggiungere al programma istruzioni presenti nel file di intestazione (header) stdio.h (standard di input/output)

stdio.h

? contiene le informazioni relative all’istruzione di output usata dal programma

? è stato scritto da altri programmatori e può essere riusato nel nostro programma

(36)

Ciao, mondo.

Programma “Ciao, mondo”

Programma “Ciao, mondo”

La funzione printf può visualizzare Ciao, mondo in molti modi diversi.

#include <stdio.h>

main() {

printf("Ciao, mondo.\n");

}

#include <stdio.h>

main() {

printf("Ciao, ");

#include <stdio.h>

main() {

printf("Ciao, mondo");

(37)

Cosa stampa?

Cosa stampa?

#include <stdio.h>

main() {

printf("Ciao, mondo ");

printf(".\n");

#include <stdio.h>

main() {

printf("Ciao,\nmondo.\n");

}

Ciao, mondo . Ciao,

mondo.

(38)

Cosa stampa il seguente programma?

Cosa stampa il seguente programma?

#include<stdio.h>

main() {

printf("Tre\nmamme");

printf(" con\n tre\n");

printf(" bimbi");

}

Tre

mamme con tre

bimbi

(39)

Cosa stampa il seguente programma?

Cosa stampa il seguente programma?

#include<stdio.h>

main() {

printf("Tre");

printf("mamme");

printf("con\n");

printf("\ntre");

printf(" bimbi");

} Tremammecon

tre bimbi

(40)

This is a C program.

Scrivere una singola istruzione C per visualizzare il messaggio:

This is a C program.

su due righe, dove la prima termina con C

Esercizio Esercizio

#include<stdio.h>

main() {

printf("This is a C\n program.\n");

(41)

e se volessi stampare e se volessi stampare

#include <stdio.h>

main() {

printf("\"Ciao, mondo.\"");

“Ciao, mondo.”

(42)

Attenzione Attenzione

Il C distingue tra lettere maiuscole e lettere minuscole.

Scrivere MAIN() oppure Main() invece di main()

? errore

(43)

Sviluppo di un programma usando

Cygwin

(44)

Un esempio Un esempio

Scrivere “Ciao, mondo.”

#include <stdio.h>

main() {

printf("Ciao, mondo.\n");

}

(45)

Sviluppo di un programma Sviluppo di un programma

Esecuzione

#include <stdio.h>

main() {

printf("Ciao, mondo.\n");

}

Editing

Codice sorgente

………

011000100010010111100

………

Codice eseguibile

Compilazione + Collegamento

(46)

Sviluppo di un programma usando Sviluppo di un programma usando Cygwin

Cygwin

1. Scrittura

2. Traduzione

3. Collegamento

4. Esecuzione

(47)

Scrittura di un programma Scrittura di un programma

Prima fase

Scrittura di un programma su un file detto file sorgente, residente sulla memoria secondaria

Come?

Usando un editor

(48)

Editor Editor

• gestisce i vari caratteri battuti da tastiera e produce un file di caratteri

• consente di effettuare immissione di nuove porzioni di programma

• consente di effettuare correzioni NotaNota

estensione del file deve essere .c

(49)

Quale editor scegliere?

Quale editor scegliere?

VI

Notepad Emacs

Source Edit

(50)

Notepad

Notepad

(51)

Notepad

Notepad (cont ( cont.) .)

Alt + 123: { Alt + 125: }

(52)

Sviluppo di un programma usando Sviluppo di un programma usando Cygwin

Cygwin

1. Scrittura

2. Traduzione

3. Collegamento

4. Esecuzione

(53)

Traduzione di un programma Traduzione di un programma

Seconda fase

Tradurre un programma scritto in C in linguaggio macchina.

Come?

Usando il compilatore

(54)

Compilatore Compilatore

• effettua un’analisi sintattica e segnala eventuali errori

• produce un altro file contenente il codice oggetto:

programma tradotto in binario

(55)

Sviluppo di un programma usando Sviluppo di un programma usando Cygwin

Cygwin

1. Scrittura

2. Traduzione

3. Collegamento

4. Esecuzione

(56)

Collegamento Collegamento Terza fase

Effettuare il collegamento con le librerie

Come?

Usando il collegatore o linker

Produce un altro file detto eseguibile

(57)

Comando usando

Comando usando cygwin cygwin

Digitate il comando:

gcc primo.c -o primo.exe

(58)

più in dettaglio più in dettaglio

gcc primo.c -o primo.exe

Effettua la compilazione ed il collegamento

alternativa gcc primo.c

Il codice eseguibile è adesso nel file a.exe

Se successivamente viene eseguita la compilazione di un altro programma, il nuovo codice rimpiazzerà il primo a.exe, per cui è bene usare l’opzione –o che permette di specificare il nome del file

(59)

Sviluppo di un programma usando Sviluppo di un programma usando Cygwin

Cygwin

1. Scrittura

2. Traduzione

3. Collegamento

4. Esecuzione

(60)

Esecuzione di un programma Esecuzione di un programma

Quarta fase

Una volta che un programma è in forma eseguibile, può essere trasferito dal file in cui risiede (memoria secondaria) in memoria centrale ed essere quindi

eseguito

Come?

Usando il caricatore o loader

(61)

Cygwin Cygwin

./primo.exe

(62)

Esempio completo

Esempio completo

(63)

#include<stdio.h>

main() {

print("Ciao, mondo.\n");

}

Errori riconosciuti dal compilatore Errori riconosciuti dal compilatore

error1.c

Qual è l’errore

(64)

Errori riconosciuti dal compilatore Errori riconosciuti dal compilatore

#include<stdio.h>

main() {

print("Ciao, mondo.\n");

}

error1.c

(65)

#include<stdio.h>

main() {

printf("Ciao, mondo.\n") }

Errori riconosciuti dal compilatore Errori riconosciuti dal compilatore

error2.c

Qual è l’errore

(66)

#include<stdio.h>

main() {

printf("Ciao, mondo.\n") }

Errori riconosciuti dal compilatore Errori riconosciuti dal compilatore

error2.c

manca ;

(67)

Errori riconosciuti dal compilatore Errori riconosciuti dal compilatore

#include<stdio.h>

Main() {

printf("Ciao, mondo.\n");

}

error3.c

(68)

Errori

Errori non non riconosciuti dal compilatore riconosciuti dal compilatore

#include<stdio.h>

main() {

printf("Ciao, mnodo.\n");

}

error4.c

(69)

Conclusioni Conclusioni

Avete scritto ed eseguito il vostro primo programma.

Riferimenti

Documenti correlati

• sistema operativo (es Windows della Microsoft) permette agli utenti di far eseguire programmi applicativi sull'hardware del computer. • programmi applicativi (es Microsoft

• Nelle moderne architetture di processore si usano due aree di memoria molto veloce (più veloce della RAM, con tempo di risposta di circa 20 nanosecondi) dette cache

Esempio: un monitor a colori da 1024 x 768 ha circa 800 mila pixel sullo schermo, quindi alla profondità cromatica di 24 bit (3 byte) sono necessari 2.5 MB di

• Formato di fruizione (o delivery format): tipo del file che riceve l'utente che accede un documento digitale. • E' rilevante non solo per la miglior

• Ogni macchina che deve comunicare su Internet usa uno o più name server , che sono macchine che gestiscono la corrispondenza tra nomi logici e indirizzi IP numerici. – Esempio:

– Ogni browser sa visualizzare direttamente file html e ascii: occorre definire come aprire i documenti in altri formati, aggiungendo plug in specifici.. Sicurezza

Per rendere attiva un’altra finestra si porta il cursore del mouse all’interno dell’area della finestra da attivare e si da un solo clic con il pulsante sinistro del mouse

• Elementi di base dell’architettura di un calcolatore elettronico, dei sistemi di calcolo, delle reti di calcolatori. • Elementi di base dei