Anteprima
Vedrai una selezione di 6 pagine su 22
Informatica Pag. 1 Informatica Pag. 2
Anteprima di 6 pagg. su 22.
Scarica il documento per vederlo tutto.
Informatica Pag. 6
Anteprima di 6 pagg. su 22.
Scarica il documento per vederlo tutto.
Informatica Pag. 11
Anteprima di 6 pagg. su 22.
Scarica il documento per vederlo tutto.
Informatica Pag. 16
Anteprima di 6 pagg. su 22.
Scarica il documento per vederlo tutto.
Informatica Pag. 21
1 su 22
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

L’istruzione if è di scelta semplice

Esempio: Se la condizione è vera si esegue il

ramo if, mentre se la condizione è falsa

if (condizione) si esegue il ramo else.

{istruzione}

else {istruzione}

While

Si usa l’istruzione while per eseguire ripetitivamente un ciclo fintanto che la condizione di

partenza è vera. Per cui viene svolta l’azione e poi si ri-verifica se la condizione è vera per

eventualmente ripetere l’azione. Se la condizione è falsa, l’azione non verrà mai svolta.

esempio 1: Ciclo a condizione iniziale

while ( condizione)

{ (azione da ripetere)

}

esempio 2:

do

{ (azione da ripetere) Ciclo a condizione finale

——-

} while ( condizione)

Switch

L’istruzione switch è equivalente a usare una cascata di if ... else.

Sintassi:

switch ( espressione ) {

case a:

/* istruzioni */

break;

case b:

/* istruzioni */

break;

default:

/* istruzioni per tutti gli altri casi */

case

• tramite l’istruzione si indicano i valori con cui effettuare il confronto

break

• tramite l’istruzione si “esce” dallo switch

• default

con l’istruzione (opzionale ma fortemente consigliata) si indicano le istruzioni da fare

quando non si è caduti in nessuno dei casi indicati.

For

L’istruzione for viene utilizzata per codificare cicli a contatore: istruzioni cicliche cioè che devono

essere ripetute un numero definito di volte.

Sintassi:

for(esp1; esp2; esp3)

{ istruzione

——-} del ciclo)

l ciclo inizia con l'esecuzione di esp1 (inizializzazione la quale non verrà più eseguita.

di controllo del ciclo - di permanenza).

Quindi viene esaminata esp2 (condizione Se esp2

risulta vera, viene eseguita istruzione, altrimenti il ciclo non viene percorso neppure una volta.

Successivamente, alla esecuzione delle istruzioni contenute nel ciclo, viene eseguita esp3

(aggiornamento) e di nuovo valutata esp2 che se risulta essere vera dà luogo ad una nuova

esecuzione delle istruzioni contenute nel ciclo. Il processo si ripete finché esp2 risulta essere

falsa.

Esempio:

{

somma = 0;

for(i = 1; i <= 3; i++) {

scanf("%d", &numero);

somma = numero;

}

Il programma per prima cosa assegna il valore 1 alla variabile i (la prima espressione del for), si

controlla se il valore di i è non superiore a 3 (la seconda espressione) e poiché l’espressione

risulta vera verranno eseguite le istruzioni inserite nel ciclo (l’input di numero e l’aggiornamento di

somma). Terminate le istruzioni che compongono il ciclo si esegue l’aggiornamento di i così come

risulta dalla terza espressione contenuta nel for, si ripete il controllo contenuto nella seconda

espressione e si continua come prima finché il valore di i non rende falsa la condizione.

Array (vettori unidimensionali)

Un array è una struttura contenente un certo numero di dati, detti elementi, tutti dello stesso tipo.

Sintassi:

• Int corso[15]

(array chiamato corso di 15 elementi)

• #define N10

Int corso [N]

(array chiamato corso di 10 elementi)

Inizializzazione

Int corso[6] = {2, 3, 4, 5, 6, 7};

Azzerare gli elementi di un array

for (i=0; i<N; i++)

a[i]=0;

Leggere dei dati - scanf

for (i=0; i<N; i++)

scanf (“%d”, &a[i]);

Somma gli elementi di a

for (i=0; i<N; i++)

scanf (“%d”, &a[i]);

sum += a[i];

Matrici (vettori multidimensionali)

Una matrice è un vettore a due dimensioni.

Sintassi:

• Int a[15] [30]

(matrice di 15 righe e 30 colonne)

• #define N10

#define B8

Int a [N] [B]

(matrice di N righe e B colonne)

Per accedere all’elemento m che si trova alla riga i e colonna j, bisogna scrivere: m[i][j];

Leggere dei dati - scanf

for (i=0; i<N; i++)

for (j=0; j<N; j++)

scanf (“%d”, &a[i]);

Stringhe

Una stringa è una sequenza di caratteri. Per una stringa di n caratteri, il compilatore alloca per la

n + 1 byte,

stringa questo byte contiene un carattere extra (carattere null) che segna la fine della

stringa.

Inizializzare una variabile stringa

Char date[8] = 12 luglio;

Funzioni delle stringhe

• strcpy

La copia la stringa1 all’interno della stringa2

a2 è la destinazione, mentre a1 è la sorgente

esempio:

strcpy (a2, a1);

• strlen

La restituisce la lunghezza della stringa s, ovvero il numero di caratteri presenti nella

stringa fino al tappo (escluso)

esempio:

int a;

char s1;

a = strlen (“s1”);

• strcmp

La confronta due stringhe s1 e s2 basandosi su

un ordine lessicografico. La strcmp può fare qualsiasi tipo di

paragone (<; <=; >; >=; ==; =!…)

esempio:

If (strcmp (s1, s2,) <0)

———

Per cercare la fine di una stringa

For (i=0; i!=‘\0; i++)

….

Struct - variabili struttura

La struct è una variabile complessa composta da elementi non omogenei tra di loro.

La struct va dichiarate prima dell’int main

Sintassi:

struct

{ int ora,

char nome,

float secondi

} dato;

In alternativa si può definire un vero e proprio nome

del nuovo tipo. typedef crea il sinonimo di struct dato con

Sintassi ottimizzata: dato, con cui posso dichiarare tutte le variabili.

typedef struct dato

{ int ora,

char nome,

float secondi

} dato;

Puntatore freccia ->

Il puntatore freccia ( ) si può usare solo in presenza di strutture dato. Questo puntatore

strutture.

permette di accedere ai singoli elementi delle

Esempio:

Tyoedef struct dato

{

int a;

char b;

} dato;

int main ( )

{

dato valore;

riempi (valore)

}

void riempi (dato cosa)

{ *nomestruttura.cosa

Il puntare -> sostituisce:

cosa -> a = 5; *dato.a *dato.b

In questo caso sostituisce e

cosa -> b = 7;

}

Si usa l'operatore freccia, invece dell'operatore punto, per accedere a un membro di una

struttura, tramite un puntatore alla struttura stessa.

->

Quindi l’operatore freccia consente l’accesso ad un campo di una struttura attraverso il

puntatore alla variabile struttura.

File

1. Dichiarare il file

Sintassi:

File *fp -> la variabile fp è di tipo file*

2. Aprire un file: è necessario aprire il file, quindi associarlo a una variabile interna al programma

che mette in relazione il gestore con il nome del file. Un file può essere aperto in scrittura (“W”)

o in lettura (“R”).

Sintassi:

if (fp = fopen (“dati.dat”, “W”)); -> aperto il scrittura

{

——

} else

printf(“Errore nell’apertura del file”);

if (fp = fopen (“dati.dat”, “R”)); -> aperto il lettura

{

——

} else

printf(“Errore nell’apertura del file”);

3. Usare il file: fprintf fscanf

la sintassi di printf e scanf cambia in e

4. Chiudere il file: è necessario disassociare la variabile che collega il gestore al nome del file, in

quanto la chiusura del file comporta la definitiva scrittura del file.

Sintassi:

fclose (fp) 0

Il file è stato chiuso, il programma restituisce se il file stato chiuso con successo o

e0f.

altrimenti restituisce

market

fclose pone un quando la lettura del file è terminata. Questo marker prende il

end of file,

nome di che viene posto dalla scanf con la fclose.

Find end of file (feof) trasforma I clicli in “fintanto che”.

esempio:

do

{ ——

——

} while (!feof(fp)) -> continua il ciclo fintanto che non trovi la end of file.

Esempio ottimizzato:

If (!feof(fp)) Il ciclo inizia se e solo se non trova la end

of file (se trova la end of file: fine ciclo).

{—— Il ciclo si ripete fin tanto che non trova la

—— end of file

} while (!feof(fp))

Funzioni e sottoprogrammi

Un sottoprogramma è una funzione che viene attivata dal main solo quando chiamata.

Sintassi:

*tipo restituito* //nome funzione// ( parametri )

{

dichiarazioni;

istruzioni;

}

*Tipo restituito*:

• Void: la procedura non restituisce alcun valore;

• Char: la procedura restituisce una variabile char;

• Int: la procedura restituisce una variabile int;

• Float: la procedura restituisce una variabile float;

• Typedef struct nomevariabile: la procedura restituisce una variabile struct;

//nome funzione//, come ad esempio “foo”, “primi”, “media”..

( parametri ): vengo inseriti tutti i parametri passati In questo caso il main passa alla funzione un

dal main al sottoprogramma necessario array (a[ ]) e la dimensione di tale array (dim)

esempio:

void foo ( int a[ ], int dim )

{

dichiarazioni;

istruzioni;

}

L’istruzione return

L’istruzione return specifica il valore (int, char, float) che una funzione deve restituire al main.

Sintassi:

{

return (a)

}

Chiamate a una funzione con parametri

Sintassi:

int main ()

{

int a, b;

int valore;

/variabili/

/istruzioni/ b)

valore = somma (a,

printf (“%d”, valore);

….

} num1, num2)

Int somma (int int Il main passa alla funzione il valore int a, int b

Nel campo ( parametri ) della funzione

{ int num1, int num2

assumono un nome diverso

int s;

//istruzioni

return (s)

}

Chiamate a una funzione con array

In questo caso il chiamante passa alla funzione, come argomento, un array. La lunghezza

dell’array non può essere specificata.

Sintassi:

int main ()

{

int a [10];

int valore;

/ variabili, istruzioni /

valore = foo (a);

} (int a [ ], int dim)

void foo

{

//istruzioni

}

Esempio (azzerare un array):

void azzera (int a [ ], int dim)

{ La funzione modifica gli elementi di un array

Int i; passato come parametro e la modifica si

ripercuote nel chiamante.

for(i=0; i<dim; i++);

a [i]=0;

}

Chiamate a una funzione con matrice

Se il parametro è costituito da un array, nella dichiarazione del parametro può essere essere

omessa solo la prima dimensione.

int main ( )

{

int a [10][25];

int valore;

/ variabili, istruzioni /

valore = foo (a);

} (int a [ ][25], int dim)

void foo

{

for (i=0; i<N; i++)

for (j=0; j<N; j++)

/ istruzione /

}

Allocazione dinamica

Dettagli
Publisher
A.A. 2017-2018
22 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher silvia__g di informazioni apprese con la frequenza delle lezioni di fondamenti di informatica e programmazione 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 Torino o del prof Benso Alfredo.