Che materia stai cercando?

Appunti di Informatica A

Appunti completi di Informatica A, con risoluzione dei principali esercizi svolti alle esercitazioni basati su appunti personali del publisher presi alle lezioni del prof. Fuggetta dell’università degli Studi del Politecnico di Milano - Polimi. Scarica il file in formato PDF!

Esame di Informatica A docente Prof. A. Fuggetta

Anteprima

ESTRATTO DOCUMENTO

Sottoprogrammi

Un sottoprogramma è un programma già inventato, compilato e testato da altri programmatori, che può

essere riutilizzato nella programmazione. I sottoprogrammi sono essenziali alla programmazione

complessa, per varie ragioni:

21. forniscono istruzioni per risolvere problemi complessi, sintetizzandole in operazioni semplici

preimpostate

22. sono sicuramente privi di errore, in quanto già testati

I sottoprogrammi si suddividono essenzialmente in due categorie: procedure e funzioni.

Procedure

Una procedura è un sottoprogramma che prevede solo input, senza alcun output, ovvero che non ritorna

all’utente alcune risultato.

printf

La procedura printf ha lo scopo di mostrare un valore di una variabile nel programma.

printf(“testo”, variabile);

L’argomento contiene:

23. un testo, racchiuso fra le virgolette

24. una o più variabili da mostrare, scritte dopo la virgola

Placeholder

Nel testo della procedura può comparire un placeholder, ovvero un carattere che ha lo scopo di fare

riferimento ad un certo tipo di variabile. Il segnaposto mostra dove verrà posizionata la variabile nella

stringa del programma.

Esistono vari tipi di placeholder, ognuno assegnato ad un tipo di variabile:

placeholder tipo di variabile funzione compatibile

%c char printf/scanf

%d int printf/scanf

%f double printf

%lf double scanf

/n

Nel testo della procedura può comparire anche il simbolo:

/n

che comunica al calcolatore di andare a capo nel far comparire la successiva stringa di programma.

scanf

La procedura scanf ha lo scopo di assegnare ad una variabile un valore scelto dall’utente, e “comunicato”

attraverso un input di tastiera.

scanf(“testo”, &variabile)

L’argomento contiene:

25. un testo, racchiuso fra le virgolette

26. una o più variabili da assegnare, scritte dopo la virgola e precedute da &

Come nella procedura printf, anche in scanf è possibile utilizzare placeholder e /n. Se vengono utilizzati

placeholder, per evitare errori di interpretazione l’utente dovrà inserire una variabile dello stesso tipo

espresso dal placeholder.

Funzioni

Una funzione è un sottoprogramma che, a partire da uno o più input, è in grado di ritornare un output,

ovvero fornire un risultato all’utente.

Le funzioni possono essere divise in due categorie:

27. parziali, ritornano un risultato corretto solo se alcune precondizioni di input sono verificate.

28. totali, ritornano un risultato corretto per qualsiasi input.

Funzione personalizzata generica

Oltre alle funzioni incluse nelle librerie, di cui si è già trattato, il linguaggio C permette di creare funzioni

personalizzate, che risolvano sottoproblemi e, una volta dichiarate, possano essere utilizzate quante volte

si vuole nel corpo di un programma.

Dichiarazione di funzione

Prima di poter essere utilizzata nel corpo di un programma, la funzione deve essere dichiarata in modo che

il compilatore possa fare riferimento ad essa traducendo il programma. La dichiarazione di una funzione

avviene attraverso la scrittura di un prototipo di funzione. Un prototipo è scritto in questo modo:

tipo_output nome_funzione(tipo_input pf_input)

Nel prototipo vengono dunque esplicitati:

29. il nome della funzione

30. il parametro formale, ovvero la variabile generica di input, ed il suo tipo

31. il tipo di output

Definizione di funzione

Dopo che è stata dichiarata, la funzione deve essere definita affinché il compilatore gli associ una serie di

operazioni. La definizione di una funzione consiste dunque nella definizione delle operazioni che essa deve

svolgere, e avviene in questo modo:

{ dichiarazione_variabili_specifiche

return(operazioni)

}

Essa prevede dunque la dichiarazione di:

32. variabili specifiche della funzione (oltre al parametro formale), non compatibili con quelle del

corpo di main

33. operazioni che la funzione deve svolgere per fornire un output

Richiamo di funzione

Una volta dichiarata e definita, una funzione è “pronta all’uso”, e per essere utilizzata nel programma main

deve essere richiamata. Il richiamo della funzione avviene in questo modo:

nome_funzione(pa_input)

Da notare come nel programma main, nell’argomento della funzione non si inserisce il parametro formale,

ma il parametro attuale, ovvero una variabile definita appartenente a main.

Ciò significa che il sottoprogramma consente un passaggio di parametri per valore, ovvero un passaggio

del valore del parametro attuale al parametro formale (a livello elettronico, il codice del parametro attuale

viene copiato nella parola di memoria del parametro formale), che non può però verificarsi all’inverso.

Output

L’output della funzione sarà l’esecuzione dell’operazione ad essa associata, e la restituzione di un

determinato valore, se la funzione viene assegnata ad una variabile. Dopo l’esecuzione della funzione, il

controllo torna a main e continua dalla stringa successiva.

return

La funzione return trasferisce il controllo dal programma al sistema operativo. Il valore espresso tra

parentesi (0 o 1) è considerato il risultato del funzionamento della funzione, ed indica che il programma è

stato eseguito senza errori.

return (0);

Altri oggetti fondamentali

Puntatore

Il puntatore è un tipo di dato utilizzato nel linguaggio C per fare riferimento ad una particolare variabile,

allocata in una cella di memoria: esso è dunque una variabile che contiene l’indirizzo ad un’altra variabile.

Il puntatore trova la sua utilità quando, utilizzando una funzione, si ha la necessità di gestire più variabili

contemporaneamente, senza creare un sottoprogramma per ogni variabile, risparmiando così numerosa

memoria.

Sintassi

Dichiarazione di puntatore

Per poter essere utilizzato, un puntatore deve prima essere dichiarato. L’istruzione:

tipo_var *punt

punt *,

dichiara come puntatore ad una variabile attraverso l’operatore indiretto e ne specifica il tipo (ad

int).

esempio

Indirizzo di variabile

Il puntatore, una volta dichiarato, si riferisce ad una variabile di un certo tipo dichiarato. L’istruzione:

punt = &var punt var &.

assegna al puntatore l’indirizzo della variabile attraverso l’operatore unario

Assegnazioni

Poste queste basi, il puntatore può essere utilizzato in diversi tipi di assegnazioni.

L’assegnazione:

var = *punt var punt.

assegna alla variabile il contenuto del puntatore

var = punt var punt.

assegna alla variabile l’indirizzo contenuto in

*punt = k punt k.

assegna al contenuto del puntatore il valore

Funzionamento

Esempio di utilizzo *punt x

Questo è quello che accade nella memoria del calcolatore, posto che il puntatore e le variabili ed

y sono allocate in parole di memoria differenti, diciamo rispettivamente: 1000, 100, 200.

x = 1

y = 2 punt = &x x.

L’istruzione fa puntare il puntatore alla variabile

y = *punt y x,

L’istruzione fa assumere alla variabile il valore di ovvero 1.

x = punt x

L’istruzione fa assumere ad il valore del puntatore, ovvero 100 (poiché il puntatore fa

riferimento alla cella di memoria di x, ovvero 100).

*punt = 3 punt x,

L’istruzione fa assumere alla variabile a cui fa indirizzo, ovvero a il valore 3.

Passaggio parametri per indirizzo

A questo punto possiamo affermare che l’utilizzo del puntatore permette un passaggio di parametri non

per valore, come accade nelle funzioni canoniche, ma per indirizzo. Ciò significa che il puntatore è una

variabile che, invece di assumere direttamente il valore di un’altra variabile (come il parametro formale

fa’ con il parametro reale), punta indirettamente ad essa.

Utilità

Il passaggio parametri per indirizzo invece che per valore conferisce al puntatore la proprietà fondamentale

di poter modificare in modo dinamico e indiretto il valore delle variabili, cioè senza coinvolgerle

direttamente all’interno dei sottoprogrammi.

Per questo si utilizza il puntatore e il passaggio parametri quando:

34. un sottoprogramma deve ritornare più di un solo valore.

35. è necessario gestire un errore assegnando un valore ad una variabile unica “errore” senza utilizzare

ulteriori variabili.

Array

L’array, o vettore, è una collezione organizzata di informazioni omogenee.

Esso è molto utile, anzi necessario, per poter trattare molti dati omogenei in modo comune, catalogandoli

ed inserendoli in un unico insieme definito.

Sintassi

Dichiarazione – inizializzazione di array

La dichiarazione di un array avviene in questo modo.

tipo_elem array[num_elem]

Questa istruzione dichiara un array contenente un certo numero di elementi, indicato fra parentesi quadre,

corrispondenti a variabili di un certo tipo, indicato prima del nome dell’array, caratterizzate dal nome

array.

Un array può essere anche inizializzato nella sua dichiarazione: ciò equivale ad elencare uno per uno gli

elementi che fanno parte dell’array, racchiusi tra parentesi graffe.

tipo_elem array[] = {e_1, e_2, …, e_n}

Sottoscrizione all’elemento

La sottoscrizione ad un elemento dell’array avviene in questo modo.

array[num]

num

dove è detto indice.

E’ da notare come il vettore non faccia riferimento a nessuna variabile precisa, ma solo ad una variabile di

una certa posizione a cui corrisponde in memoria una variabile.

0. n

Il primo elemento dell’array equivale alla posizione Ciò significa che, necessariamente, in un array di

elementi ci si potrà riferire solo ad elementi di posizione:


PAGINE

98

PESO

1.74 MB

PUBBLICATO

6 mesi fa


DETTAGLI
Esame: Informatica A
Corso di laurea: Corso di laurea in ingegneria fisica
SSD:
A.A.: 2016-2017

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher mrtambourine91 di informazioni apprese con la frequenza delle lezioni di Informatica A e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano - Polimi o del prof Fuggetta Alfonso.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Corso di laurea in ingegneria fisica

Storia delle telecomunicazioni
Dispensa
Incertezza di misura
Dispensa
Voltmetri digitali e convertitori
Dispensa
Trasmissione in banda passante
Dispensa