Che materia stai cercando?

Informatica

TESTO DI RIFE RIMENTO: Kim N. King, “Programmazione in C”
PROGRAMMA: sintassi dei linguaggi, struttura di un programma, tipi base, operatori, i costruttori di tipo array, struct, puntatori.
istruzioni: if, while, do .. while, for, switch.
I file: operazioni sui file.
Sottoprogrammi, funzioni e ricorsione: passaggio dei parametri, dati locali, record di attivazione.
Liste... Vedi di più

Esame di fondamenti di informatica e programmazione docente Prof. A. Benso

Anteprima

ESTRATTO DOCUMENTO

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 della memoria

La funzione malloc alloca un blocco memoria ma non lo inizializza.

di

Quando una funzione per l'allocazione della memoria viene invocata, c'è sempre la possibilità che

questa non sia in grado di allocare un blocco di memoria sufficiente. E’ quindi necessario porre

l’istruzione in un if e in caso non dovesse trovare la memoria necessaria disponibile, la funzione

restituirebbe uno zero.

Sintassi: “n” indica la quantità di memoria necessaria, mentre la

If (x = malloc (n*sizeof(int)) funzione sizeof (*variabile*) calcola i byte necessari a quel

{ tipo.

}

else printf (“Errore nell’allocazione della memoria”)

Se la malloc riesce ad allocare la memoria restituisce un puntatore, altrimenti 0.

La funzione casting

L’operatore cast permette di forzare il compilatore a effettuare le conversioni che vogliamo. La

malloc infatti restituisce un puntatore che noi possiamo trasformare in qualsiasi tipo necessario.

Esempio:

if (x=(int*)malloc(70*sizeof(int)));

Liste

Una lista concatenata consiste di una catena di strutture (chiamate nodi), ognuna delle quali

contenente un puntatore al nodo successivo della catena stessa. Per creare una lista concatenata

è necessaria una struttura che rappresenti un singolo nodo della lista stessa.

Sintassi:

typedef struct nodo

{ Dato (info) contenuto nel nodo;

successivo.

Puntatore al nodo

int info;

struct nodo * next;

} nodo;

Quando costruiamo una lista concatenata vogliamo creare i nodi uno alla volta per poi aggiungerli

alla lista. Creare un nodo richiede tre passi:

1. allocare memoria per il nodo;

2. salvare i dati nel nodo;

3. inserire il nodo nella lista;

1

Quando creiamo un nodo è necessario definire anche una variabile temporanea che lo punti fino a

quando non viene inserito nella lista.

E’ poi necessaria malloc per allocare la memoria per il nuovo nodo, salvando il valore restituito

nella variabile temporanea.

Sintassi:

typedef struct nodo

{

int info;

struct nodo * next;

} nodo;

Int main ( )

{

nodo *temp; nodo *temp è la variabile temporanea.

La malloc alloca spazio per la lista.

if (temp=(nodo*)malloc(sizeof(nodo))

{

}

else printf (“Errore nell’allocazione della memoria”)

}

Ora temp punta a un blocco di memoria grande a sufficienza per contenere una struttura nodo.


PAGINE

22

PESO

196.23 KB

PUBBLICATO

8 mesi fa


DESCRIZIONE APPUNTO

TESTO DI RIFE RIMENTO: Kim N. King, “Programmazione in C”
PROGRAMMA: sintassi dei linguaggi, struttura di un programma, tipi base, operatori, i costruttori di tipo array, struct, puntatori.
istruzioni: if, while, do .. while, for, switch.
I file: operazioni sui file.
Sottoprogrammi, funzioni e ricorsione: passaggio dei parametri, dati locali, record di attivazione.
Liste monodirezionali e bidirezionali: creazione lista, cancellazione elemento, cerca elemento.
Tutto con descrizione ed esempi di sintassi.


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria gestionale
SSD:
A.A.: 2018-2019

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 - Polito o del prof Benso Alfredo.

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 gestionale

Analisi 2 - nozioni generali di teoria + formule
Appunto
Basi di dati - Esercizi
Esercitazione
Calcolo Numerico, Scuderi - Teoria con esempi
Appunto
Ricerca Operativa, Ottimizzazione per il problem solving - Esercizi commentati
Esercitazione