• Non ci sono risultati.

Corso di Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Corso di Fondamenti di Informatica"

Copied!
13
0
0

Testo completo

(1)

Corso di Fondamenti di Informatica

Introduzione alla programmazione in C++

(2)

Claudio De Stefano - Corso di Fondamenti di Informatica

2

Un’introduzione

■ Che cosa è il C++?

■ La programmazione procedurale

■ La programmazione orientata agli oggetti

■ La programmazione generica

■ Dal C al C++

(3)

Che cosa è il C++?

■ C++ è un linguaggio di programmazione general-purpose che supporta:

– la programmazione procedurale (è un C “migliore”) – la programmazione orientata agli oggetti

– la programmazione generica

■ C++ è quindi un linguaggio ibrido, nel senso che supporta più paradigmi di programmazione

Bjarne Stroustrup è il “padre” del C++, che ha cominciato a sviluppare nel 1979

Il linguaggio è stato standardizzato nel 1998

(4)

Claudio De Stefano - Corso di Fondamenti di Informatica

4

La programmazione procedurale

■ Costituisce l’approccio tradizionale alla programmazione

■ Usa come metodologia di riferimento la decomposizione funzionale, con approccio discendente (top-down)

– si scompone la funzionalità principale del sistema da sviluppare in funzionalità più semplici

– si termina la scomposizione quando le funzionalità individuate sono così semplici da permetterne una diretta implementazione come funzioni

– si divide il lavoro d’implementazione, eventualmente tra diversi programmatori, sulla base delle funzionalità individuate

(5)

La programmazione orientata agli oggetti

■ S’individuano le classi di oggetti (entità del mondo reale o concettuale) che caratterizzano il dominio applicativo

– le classi sono poi modellate, progettate e implementate

– ogni classe è descritta da un’interfaccia che specifica il comportamento degli oggetti della classe

■ L’applicazione è costruita con un approccio ascendente (bottom-up), assemblando oggetti e individuando le modalità con cui questi devono collaborare per realizzare le diverse funzionalità dell’applicazione

(6)

Claudio De Stefano - Corso di Fondamenti di Informatica

6

La programmazione generica

■ La programmazione generica consente di definire una funzione o una classe senza specificare il tipo di una o più delle sue entità (parametri, membri)

■ Esempi significativi sono:

– una funzione di ricerca in grado di operare di volta in volta su elementi di un tipo diverso

– una classe che descrive contenitori (lista, insieme, coda, …) in grado di contenere oggetti di tipi qualsiasi

■ Il principale meccanismo per ottenere genericità in C++ è quello dei template, che consentono di descrivere famiglie di funzioni o di classi parametriche

(7)

Per cominciare...

– Il programma “Hello world”

– Un’altra versione di “Hello world”

– Le parole chiave – I tipi fondamentali – Gli operatori (I parte) – Gli operatori (II parte) – Le istruzioni

– Il controllo (le selezioni) – Il controllo (le iterazioni)

– La valutazione di corto circuito delle condizioni

(8)

Claudio De Stefano - Corso di Fondamenti di Informatica

8

Il programma “Hello world”

// File: hello.cpp

#include <iostream>

using namespace std;

int main() {

cout << "Hello world" << endl;

return 0;

}

// introduce un commento che termina con la linea Si aggiunge alla forma /* … */

I programmi che usano

librerie standard dovrebbero includere using

namespace std;

prompt> hello Hello world

main deve restituire un int

Se return 0 manca è generata dal compilatore, che può segnalare un warning Lo 0 indica che tutto è andato bene

end-of-line

Standard output stream Insertion operator (put to)

(9)

Un’altra versione di “Hello world”

// File: hello2.cpp

#include <iostream>

using namespace std;

void Hello();

int main() { Hello();

return 0;

}

prompt> hello Hello world Prototipo della funzione Può essere omesso se si definisce Hello prima di main

Svuota il buffer di output

In alternativa, la sequenza

escape "\n"

(10)

Claudio De Stefano - Corso di Fondamenti di Informatica

10

Le parole chiave

■ Salvo che per alcuni dettagli, un programma C è un programma C++ legale

– ad esempio, le parole riservate del C sono un sottoinsieme di quelle del C++:

Asm default for private struct unsigned

auto delete friend protected switch using

bool do goto public template virtual

break double if register this void

case dynamic_cast inline reinterpret_cast throw volatile

catch else int return true wchar_t

char enum long short try while

class explicit mutable signed typedef

const extern namespace sizeof typeid

const_cast false new static typename

continue float operator static_cast union

(11)

I tipi fondamentali

■ Alcuni dei tipi fondamentali (primitivi) del C++:

■ Nelle assegnazioni e nelle operazioni aritmetiche, i tipi base possono essere mescolati liberamente

– C++ esegue automaticamente tutte le conversioni significative:

bool // boolean, valori possibili sono true e false char // character, per esempio, 'a', 'z', e '9'

int // integer, per esempio, 1, 42, e 1216

float // numero floating-point in singola precisione double // numero floating-point in doppia precisione

void some_function n() { double d = 2.2;

int i = 7; C++ usa un type cecking

(12)

Claudio De Stefano - Corso di Fondamenti di Informatica

12

re Nome Descrizione

:: scope resolution class::member

:: global ::name

() function call expr(expr_list)

() value construction type(expr_list)

[] subscripting pointer[expr]

. member selection object.member

-> member selection pointer–>member

++ post increment lvalue++

–– post decrement lvalue––

reinterpret_cast<type>

dynamic_cast<type>

static_cast<type>

const_cast<type>

sizeof size of object sizeof expr

sizeof size of type sizeof (type)

++ pre increment ++lvalue

–– pre decrement ––lvalue

new create/allocate new type

new[] create array new type[]

delete destroy/deallocate delete pointer

delete[] destroy array delete[] pointer

~ complement ~expr

! logical not !expr

- unary minus -expr

+ unary plus +expr

& address of &lvalue

* dereference *expr

() cast (type conversion) (type) expr

.* member selection object.*pointer-to-member

->* member selection pointer–>*pointer-to-member

Gli operatori

Le precedenze decrescono dalla I alla II parte e dall’alto verso il basso

Gli operatori nello stesso

riquadro hanno la stressa

precedenza

(13)

Simbolo di operatore Nome Descrizione

* multiply expr*expr

/ divide expr/expr

% modulo(reminder) expr%expr

+ add (plus) extr+expr

- subtract (sub) expr-expr

<< shift-left expr<<expr

>> shift right expr>>expr

< less than expr<expr

<= less than or equal expr<=expr

> greater than expr>expr

>= greater than or equal expr>=expr

== equal expr==expr

!= not equal expr!<expr

& bitwise AND expr&expr

^ bitwise exclusive OR expr^expr

| bitwise inclusive OR expr|expr

&& logical AND expr&&expr

|| logical inclusive OR expr||expr

= simple assignment lvalue=expr

*= multiply and assign lvalue*=expr

/= divide and assign lvalue/=expr

%= modulo and assign lvalue%=expr

+= add and assign lvalue+=expr

-= subtract and assign lvalue-=expr

<<= shift left and assign lvalue<<=expr

Gli operatori (II parte)

Gli operatori unari, le assegnazioni e l’espressione

condizionale sono

associativi a destra

Tutti gli altri sono

associativi a sinistra

Riferimenti

Documenti correlati

Si verifichi che sono tra loro tangenti, determinando le coordinate del punto T di tangenza e l’equazione della retta

Gli esercizi 1, 2, 3, 4, 5 sono obbligatori; lo studente deve scegliere tre esercizi tra i rimanenti.. Ogni esercizio

Basta verificare che il prodotto delle derivate `e uguale

Si determini l’equazione della retta t tangente nel suo punto generico P di ascissa x 0 e si verifichi che tale punto coincide con il punto medio del segmento staccato dagli

della retta t tangente al suo grafico nel punto di intersezione con l’asse delle ordinate e si calcoli l’area del triangolo che essa forma con gli assi cartesiani.. Determinare

Determinare l’equazione della retta t tangente al suo grafico nel punto di intersezione con l’asse delle ordinate e si calcoli l’area del triangolo che essa forma con gli

d) Dopo aver verificato che `e possibile applicare il teorema di Rolle alla funzione f (x) sull’intervallo [0, 1], si trovino i punti la cui esistenza `e assicurata dal

Determinare l’equazione della retta bitangente alla curva, ossia della retta che `e tangente alla curva in due punti distinti A e B..