Il 0% ha trovato utile questo documento (0 voti)
28 visualizzazioni40 pagine

Linguaggio C

Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PPTX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
28 visualizzazioni40 pagine

Linguaggio C

Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PPTX, PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 40

Linguaggio C++

A. Lorenzi – M. Govoni
INFORMATICA
APPLICAZIONI SCIENTIFICHE
Atlas

Copyright © Istituto Italiano Edizioni Atlas


Il programma C++

Un programma in C++ per la somma di due numeri

// Somma.cpp: somma di due numeri


#include <iostream>
using namespace std;

int main()
{
int a, b, s;
cin >> a;
cin >> b;
s = a + b;
cout << s;

return 0;
}
Input e output standard

• cin>> indica la lettura dei dati


cin >> a; (input)
cin >> b; • s = a + b specifica che il risultato
s = a + b; deve essere assegnato alla variabile s
• cout<< ordina la visualizzazione del
cout << s ; risultato (output)
Tipi di dati numerici

• I principali tipi standard delle variabili sono:


Costanti e variabili

• Le variabili devono essere dichiarate indicando il


tipo e il nome:
tipo nome;

int anni;
float statura;
• Le costanti vengono dichiarate attraverso la
parola chiave const:
const tipo nome = valore;

const double PIGRECO = 3.14;


const int SCONTO = 20;
Le frasi di commento

• Le frasi di commento iniziano con i delimitatori //

• I commenti possono essere posti all’inizio di una


nuova riga oppure accanto ad un’istruzione:

int eta; // età di una persona


Istruzione di assegnazione

• L’istruzione di assegnazione ha una sintassi del


tipo:
variabile = valore;

• Il valore viene assegnato alla variabile scritta a


sinistra del simbolo =

area = raggio * raggio * 3.14;

nome = "Rossi";
Operatori di assegnamento
Il casting

Il casting è l’azione che consente di trasformare la


rappresentazione di un dato dal suo tipo originale a un
altro.

• L’operatore cast è rappresentato da una coppia di


parentesi tonde che racchiudono il tipo di dato:
(tipo) espressione;

b = (int) a;
Gli operatori di relazione e logici

Simboli per indicare gli operatori di confronto :

I connettivi logici che possono essere utilizzati:


• && indica l’operazione di congiunzione (And)
• || indica l’operazione di disgiunzione (Or)
• ! indica la negazione (Not).
Istruzioni di input e output

• cin >> indica un’operazione sullo standard input

cin >> raggio;

• cout << indica un’operazione sullo standard


output

cout << area;


Fasi del lavoro di programmazione

• Il risultato della fase di codifica si


codifica chiama programma sorgente; i file
hanno l’estensione .cpp.

• consiste nel tradurre il programma


sorgente in un programma
compilazione oggetto, attraverso il compilatore.

• il programma, linker, effettua il


collegamento tra il programma
linking oggetto e le librerie del linguaggio
necessarie per l’esecuzione del
programma.
• viene creato il file eseguibile con
exe l’estensione .exe.
Errori di programmazione
• non sono state rispettate le regole
errore sintattico per la costruzione corretta delle
frasi del linguaggio.
• è stata utilizzata una parola che
errore lessicale non esiste nel dizionario del
linguaggio C++.

• blocca l’avanzamento del processo


errore di run-time di elaborazione.

• riguarda la correttezza
errore logico dell’algoritmo. Per individuarlo si
utilizza il debugger.
Importanza della documentazione

Alcuni accorgimenti per una buona documentazione:


• usare per le variabili nomi significativi;
• esplicitare quali sono i tipi previsti per i dati;
• utilizzare le strutture di controllo;
• organizzare i programmi in modo strutturato;
• inserire frequenti frasi di commento;
• effettuare prove di esecuzione;
• fornire un manuale per l’utente.
La sequenza

La sequenza si rappresenta costruendo un blocco di


istruzioni delimitato da una coppia di parentesi graffe { … }.

#include <iostream>
using namespace std;
int main()
{
int num1, num2, differenza;
cout << "Due numeri: ";
cin >> num1 >> num2;
differenza = num1 - num2;
cout << "Risultato = " << differenza << endl;
return 0;
};
La struttura di alternativa

Per la selezione si usa l’istruzione if che ha la seguente


sintassi:

if (condizione) {
istruzioni-a;
}
else {
istruzioni-b;
}
Strutture annidate di alternativa
• Dopo la condizione o dopo else, può essere
presente un gruppo di istruzioni, contenente a
sua volta altre strutture if interne alla struttura
più esterna.

if (condizione1)
istruzioni-a;
else
if (condizione2)
istruzioni-b;
else
istruzioni-c;
La struttura di ripetizione

La struttura di ripetizione si rappresenta con l’istruzione


do … while

do {
istruzioni;
} while (condizione);
Ripetizione precondizionale

La ripetizione precondizionale si rappresenta con


l’istruzione while.

while (condizione) {
istruzioni;
}
Ripetizione con contatore

La struttura di ripetizione con contatore viene


rappresentata con la struttura for.

for (int i=min; i<=max; i++) {


istruzioni;
}
Struttura di scelta multipla

La struttura di scelta multipla è realizzata dall’istruzione


switch.

switch(variabile) {
case valore1:
istruzioni1;
break;
case valore2:
istruzioni2;
break;
. . . . . .
case valoren:
Istruzionin;
break;
default:
istruzioni;
break;
}
Funzioni

Una funzione è un procedimento che riceve valori come


argomenti in ingresso e restituisce un valore come risultato.

La sintassi generale di una funzione è:

tipo di dato restituito nome funzione (elenco parametri)


{
istruzioni;
return valore restituito;
}
Funzioni

• Se il tipo restituito dalla funzione non è


specificato si assume per default il tipo int.

• Se si vuole invece che la funzione non


restituisca alcun valore, specificare il tipo void.
Funzioni con parametri

L’operazione, con la quale il main (o un’altra funzione chiamante)


invia i valori alla funzione, assegnandoli ai parametri, si chiama
passaggio di parametri.

• le variabili indicate nell’intestazione della funzione


si chiamano parametri formali;

• le variabili che forniscono i valori ai parametri si


chiamano parametri attuali.
Passaggio di parametri

• il passaggio di parametri per valore avviene


indicando nell’intestazione della funzione il tipo e il
nome di ciascun parametro formale.

• per indicare il passaggio di un parametro per


referenza, si deve aggiungere il carattere &
subito dopo la dichiarazione del tipo del
parametro.
Dichiarazione dei prototipi di funzione

Per una migliore organizzazione dei programmi:

• dichiarazione delle funzioni per mezzo dei loro prototipi;


va posta in testa al programma stesso.
Questa dichiarazione si chiama prototipo della funzione.

• definizione (o implementazione) delle funzioni;


viene posta dopo la funzione main.
Risorse globali e locali

In un programma si possono distinguere:

• variabili globali, che vengono dichiarate all’inizio del


programma e che possono essere usate dal
programma principale e da tutte le funzioni;

• variabili locali, che vengono dichiarate all’interno


della funzione che le utilizza e che non sono visibili
alle altre funzioni (main compreso).
Regole di visibilità

Ogni ambiente vede

• le proprie risorse locali

• quelle definite all’esterno e che precedono


l’ambiente stesso.
Funzioni predefinite

Funzioni predefinite (built-in): sono funzioni che possono


essere usate dal programmatore senza dichiarazione. Tali
funzioni sono richiamabili inserendo all’inizio del programma la
direttiva #include.

#include <cmath>

Esempi di funzioni built-in della libreria cmath:


• pow, exp, sqrt, log, log10
• sin, cos, tan
Namespace e librerie di inclusione

namespace (spazio dei nomi) è un raggruppamento di dati e


di funzioni che hanno tra loro un nesso logico

namespace spazioglobale1 {
// esempi di variabili e funzioni globali
int totale;
int Calcolo(int a, int b);
}
Namespace e librerie di inclusione

• Per un impiego permanente di tutte le componenti di


un namespace si deve utilizzare il comando using
namespace.

using namespace spazioglobale1;


.....
cout << totale << endl;
Function overloading

Function overloading consente di definire due funzioni con


lo stesso nome che differiscono tra loro solamente per l’elenco
dei parametri.

float pow (float, float);


long double pow (long double, long double);
Funzioni ricorsive

Con il termine ricorsione (o ricorsività) si indica


la possibilità che una funzione ha di chiamare se
stessa, cioè la chiamata della funzione è
contenuta all’interno della funzione stessa.
Enumerazioni

Le enumerazioni sono una serie di valori interi che vengono


associati a nomi di costanti, dichiarate attraverso la parola
chiave enum.

La sintassi è la seguente:
enum identificatore {lista delle costanti};

enum Lista {C1, C2, C3, C4};

enum SecondoTrimestre {APR=4, MAG=5, GIU=6};


Array

L’array è un insieme di elementi omogenei tra loro. Con una


variabile possiamo indicare solo un dato, con l’array possiamo
indicare tanti dati dello stesso tipo con un solo nome collettivo di
variabile: l’identificatore dell’array. Gli elementi si distinguono uno
dall’altro attraverso l’indice che viene assegnato nell’array, e che
viene posto accanto all’identificatore dell’array.

In matematica con il termine vettore si fa


riferimento agli array a una dimensione.
Array

Un array si definisce con la seguente dichiarazione:

tipo NomeArray[dimensione];

double coeff[10];

Quando un array viene passato come parametro ad una


funzione, in realtà viene passata la locazione (cioè l’indirizzo)
della prima componente dell’array.
Array a due dimensioni

La matrice (o array a due dimensioni) è un insieme di


elementi dello stesso tipo che sono in corrispondenza
biunivoca con un insieme di coppie ordinate di numeri interi,
che rappresentano rispettivamente il numero della riga e il
numero della colonna della matrice.

Viene così definita:


tipo NomeMatrice[N][M];

const int MAX = 20;


int matrice1[MAX][MAX];
Strutture

La struttura serve a contenere dati di tipo diverso. Viene


dichiarata con la parola chiave struct.

struct NomeStruttura {
tipo1 campo1;
tipo2 campo2;
tipo3 campo3;
};
Puntatori

Una variabile di tipo puntatore contiene l’indirizzo di


memoria di un’altra variabile.

è possibile creare un puntatore scrivendo il


carattere * (asterisco o star) accanto al tipo.

int* puntatore;
char* s;
struct data* ricorrenza;
Puntatori
• Per conoscere l’indirizzo di memoria di una variabile
si usa l’operatore &.
int num;
int* pInteri;
pInteri = &num;
• Per accedere alla memoria puntata da un puntatore
si usa l’operatore *.
int a, b;
int* pInteri;
a = 5;
pInteri = &a;
b = *pInteri;
cout << b;

Potrebbero piacerti anche