Sei sulla pagina 1di 18

IL C++

Come risolvere un problema dato Trovare la soluzione al problema descrivendo i passi che il computer deve compiere per arrivare alla soluzione E'importante capire bene cosa viene chiesto e dunque cosa deve fare l'algoritmo, il primo passo da fare quello di individuare quali sono i dati a disposizione e capire cosa viene richiesto, cio evidenziare i risultati che ci si attende dal programma. A questo punto necessario definire il metodo di risoluzione (l'algoritmo) che permetta di trasformare i dati in input in risultati output

Dichiarazione variabile int i char i float i dichiarazione variabile con valori interi dichiarazione variabile con valori di tipo alfanumerico (ab12c) dichiarazione varibile con valori numerci con la virgola puo assumere valori true o false (0,1)

bool risposta

Vari tipi di dichiarazione di variabili short int i numero intero compreso tra -32768 e +32767

long int popolazione numero intero compreso tra -2147683648 e + 2147683648 double distanza numero decimale in precisione doppia

RICORDA Non esiste un tipo particolare per la dichiarazione di stringhe di caratteri, char s permette di scrivere un unico carattere per scrivere una stringa di caratteri bisogna usare i vettori, char nome [10], oppure incudere la libreria string e usare string.

Operatori

= == != ||

assegnazione uguale diverso or logico

&& and logico < > <= >= minore maggiore minore uguale maggiore uguale

Operatori di stampa e inserimento stampa cout<<".."<<endl; stampera a schermo cio che stato scritto nelle virgolette

se volgliamo stampare valori variabili in cout: cout<<"il dipendente"<<nome<<"ha"<<eta<<"anni e guadagna"<<stipendio<<"euro"<<endl; dove nome eta e stipendio sono variabili con un certo valore

Caratteri speciali cout \n riga a capo \t tabulazione \" doppi apici \\ barra contraria \a segnalazione acustica \? punto interrogativo

inserimento cin>> nome; oppure per inserire contemporaneamente piu valori cin>>nome >>eta >> dipendente;

(#include <iostream> permette operazioni di input output)

Struttura di controllo if if (somma >20){ cout<<"la somma e' maggiore di 20"<<endl; k++; } else { cout<<"la somma e' minore di 20"<<endl; j++; }

Esempio di programma con if che usa l' operatore and Viene chiesto fatto un count e l'utente puo decidere di farlo continuare o meno

#include <iostream> using namespace std; int main () {

int num=0; char risposta; risposta ='s';

while (risposta== 's'){ num++;

cout<<num<<endl; cout<<"vuoi ancora visualizzare il numero progressivo (s/n)?"<<endl; cin>>risposta; if (risposta != 's' && risposta!= 'n'){ // e stato usato l'operatore logico and ovvero &&

cout<<"la lettera inserita e' errata"<<endl; } } system ("pause"); }

La stessa cosa puo essere fatta con l'operatore or "||"

Switch case Un utile costrutto per realizzare strutture condizionali con piu possibilita di scelta. Il valore assunto dalla variabile richiamata nello switch determina quale ramo della struttura deve essere eseguito Esempio voto di un alunno

#include <iostream> using namespace std; int main () { int voto; cout<<"dammi il voto dell alunno massimo da 1 a 10"<<endl; cin>>voto; switch (voto){ case 1: cout<<"il voto dell alunno e'"<<voto<<endl; break; case 2: cout<<"il voto dell alunno e'"<<voto<<endl;

break; case 3: cout<<"il voto dell alunno e'"<<voto<<endl; break; case 4: cout<<"il voto dell alunno e'"<<voto<<endl; break; case 5: cout<<"il voto dell alunno e'"<<voto<<endl; break; case 6: cout<<"il voto dell alunno e'"<<voto<<endl; break; case 7: cout<<"il voto dell alunno e'"<<voto<<endl; break; case 8: cout<<"il voto dell alunno e'"<<voto<<endl; break; case 9: cout<<"il voto dell alunno e'"<<voto<<endl; break; case 10: cout<<"il voto dell alunno e'"<<voto<<endl; break; default : // non viene inserito un numero da uno a 10 non e in nessun campo switch viene richiamato il default

cout<<"il numero inserito non e' valido"<<endl; break; } system ("pause");

La struttura iterativa (while , do while e for) la struttura iterativa permette di eseguire tante volte un insieme di istruzioni. A livello di algoritmo possiamo esprimere la struttura iterativa con due modalit : con il controllo in coda e con il controllo in testa. Per il controllo in coda (do while) , prima sono eseguite le istruzioni che formano il copro dell iterazione e dopo eseguito il controllo per stabilire se ripetere il corpo dell iterazione(ciclo). Dunque la differenza con il ciclo con controllo in testa (while) e che il corpo viene eseguito almeno una volta. Il ciclo for invece si usa quando si conosce il numero di volte che si desidera svolgere un ciclo.

While Un tipico caso di ciclo while e quello che e' stato gia visto prima per l'if con l'and.
#include <iostream> using namespace std; int main () {

int num=0; char risposta; risposta ='s';

while (risposta== 's'){ num++; cout<<num<<endl; cout<<"vuoi ancora visualizzare il numero progressivo (s/n)?"<<endl; cin>>risposta; if (risposta != 's' && risposta!= 'n'){ // e stato usato l'operatore logico and ovvero &&

cout<<"la lettera inserita e' errata"<<endl; } } system ("pause"); }

Si denota che abbiam usato il while perch la condizione di uscita dal ciclo ci data proprio dall utente durante il ciclo , dunque in questi casi non e possibile usare il for perch non conosciamo a priori quando si uscira dal ciclo, l'utente porebbe decidere di uscire dopo 20 volte che ha eseguito il ciclo 30 volte ecc.

Do while In questo programma vogliamo calcolare la media dei voti di uno studente, chiedendo a lui il voto e se vuole continuare ogni volta ad inserire voti. Un tipico esempio di do while dove sappiamo sicuramente che l'utente andra ad eseguire almeno una volta il ciclo altrimenti il programma nn partirebbe nemmeno, dunque mettiamo il do con la parentisi chiudiamo poi la parentesi alla fine del ciclo e di seguito ci scriviamo il while con la condizione, nota che nel do while stato inserito un altro while che non c'entra niente con esso, ma stato creato per un altro controllo.
#include<iostream> using namespace std; int main() { float media=0; float voto=0; int cont=0; float somma=0; char risposta;

do{ cout<<"inserire il voto\n"<<endl; cin>>voto; somma = somma + voto; cont++; cout<<"vuoi inserire altri voti(s/n)/n"<<endl; cin>>risposta;

while (risposta != 's' && risposta !='n'){

cout<<"la lettera inserita e' errata"<<endl; cout<<"inserire di nuovo la risposta"<<endl; cin>>risposta; } }while (risposta !='n'); media =somma/cont; cout<<"media voti="<<media<<endl;

system("pause"); }

Ciclo for

Metodologia top-down Top down (dall alto verso il basso) un termiche che usa un approccio al problema partendo dall alto, cio partendo dalle linee generale senza scendere subito nell dettaglio, al contrario, con una strategia bottom-up si parte dai dettagli che si uniscono in visioni sempre pi grandi che alla fine abbracciano l'intero sistema. In genere l'approccio top-down tipico dei sistemi complessi, mentre il bottom-up di quelli pi semplici, dove impossibile "perdersi" nelle connessioni dei dettagli. Per poter sfruttare la metodologia top down dunque e necessario strutturare il programma racchiudendo in sottoprogrammi le funzionaliti tra loro sufficientemente autonome. Il sottoprogramma in generale viene definito come un insieme di istruzioni simile per struttura ad un programma, questo ha un nome che lo identifica e viene usato tutte le volte che il programma principale (main) o un altro sottoprogramma ne richiede l'esecuzione. i sottoprogrammi possono essere realizzato come procedure (non forniscono nessun risultato in uscita) o come funzioni(forniscono un risultato in uscita). Per il momento occupiamoci di sottoprogrammi che non abbiamo la necessita del passaggio dei parametri, usando le variabili globali. Le variabili globali = sono quelle variabili che hanno validita sia nel programma principale sia nei sottoprogrammi ESEMPIO Adesso proponiamo un esempio dove sfruttiamo sia le procedure sia le funzioni

//stampare il perimetro di un triangolo rettangolo, noti i due lati #include<iostream> #include <math.h> // una libreria che mi serve per la funzione sqrt

using namespace std;

//dichiarazione variabili globali float c1; float c2; float ipot; float perim;

//scrivo cosa dovra fare questa procedura, NOTIAMO CHE QUESTA NON CI RESTITUIRA NESSUN VALORE. void ins_dati(){ cout<<"inserire il primo cateto"<<endl; cin>>c1; cout<<"inserire il secondo cateto"<<endl; cin>>c2; }

//scrivo cosa dovra fare qst funzione float calcolaperim(){ ipot= sqrt(c1*c1 + c2*c2); //sqrt e una funzione che calcola e restituisce la radice quadrata return (c1 + c2 + ipot); //se si tratta di una funzione questa dovra restituirci obbligatoriamente un valore } //che puo essere o una variabile o una costante.

void stampa () { cout<<"perimetro = "<<perim<<endl;

int main () { ins_dati() ; perim = calcolaperim(); // richiamo la funzione calcolaperim, che mi restituira nella variabile perim //il valore che ho dato in perim stampa();

system ("pause"); }

Da notare che vado prima a definire tutte le funzioni e procedure, e poi vado a richiamare il main, che avra il semplice compito di richiamare soltanto le procedure gia definite.

Le strutture dati Una struttura dati un entita usata per organizzare un insieme di dati all' interno della memoria del computer. Una struttura dati puo essere di due tipi, statica (quando il numero dei suoi elementi costante durante l'esecuzione del programma) , si dice invece dinamica quando il numero dei suoi elementi varia durante l'esecuzione. Adesso andiamo a vedere le strutture dati statiche.

Vettore (array) Per vettore (o array monodimensionale) si intende una variabile strutturata , cio formata da piu elementi tutti dello stesso tipo. Ogni elemento del vettore viene identificato attraverso il nome del vettore e un numero (detto indice) che ne indica la posizione dell elemento all interno dell vettore appunto, ad esempio se il vettore si chiama ETA, per indicare il terzo elemento del vettore scriveremo ETA(3). Quando invece si utilizza solo il nome del vettore si intende far riferimento a tutta la struttura, tutto il vettore. Prima di poter usare un vettore necessario dichiararlo, si dovra cio definire la sua dimensione, cio lo spazio massimo che puo occupare in memoria e dunque il numero massimo di elementi utilizzabili, che chiamerermo dimensione fisica dell array. Con N viene di solito indicata la dimensione logica del vettore, cio quanti elementi sono effettivamente presenti, questo un numero generalemnte inferore alla dimensione fisica. Disegno vettore

Un vettore viene definito nel seguente modo tipo nome_vettore [dimesione] ad esempio int vet [4] Qualche cosa in piu dobbiamo dirla per le stringe, come abbiamo gia detto non esiste il tipo string , a meno che non si vada ad includere l'apposita libreria, ma esiste solo il tipo char percio quando si vuole utilizzare un una stringa di caratteri necessario dichiarare una variabile come array di caratteri: char s [20] questo un vettore di 20 caratteri in cui e possibile memorizzare al massimo 19 caratteri perche l'ultima posizione occupata dal carattere speciale '\o' di terminazione stringa. Vediamo l'esempio di un vettore di interi

//scrivere un programma che permetta di assegnare i valori ricevuti in input agli elementi di un vettore //il numero di elementi da caricare verra dato in input.

#include<iostream> using namespace std;

int main(){ int vet[1000]; int i=0,n=0;

// Questo primo while serve solo a controllare che l'utente non scrive un numero piu grande di 1000 //che la dimensione fisica assegnata al vettore.

do{ cout<<"inserire il numero di elementi"<<endl; cin>>n; if (n>1000){

cout<< "il numero inserito e' troppo grande... riscriverlo"<<endl; } } while (n>1000) ;

while (i<n){ cout<< "inserire l'elemento"<<i<<endl; cin>>vet[i]; i++; } system ("pause"); }

Matrice La matrice un particolare tipo di vettore a due dimensione, si tratta in pratica di un vettore in cui ogni elemento a sua volta un vettore. Ogni elemento della matrice individuato da due indici, uno per le righe e uno per le colonne, dunque per l'esempio di prima sar ETA (2,4). disegno matrice

Record e tabella Un vettore come abbiamo detto in grado di contenere solo dati omogenei (tutti dello stesso tipo), a volte per necessario presentari dati di tipo diverso. il record una variabile strutturata composta da dati non omogenei.

Per identificare ogni songolo campo si utilizzera un nome che dovra essere abbinato nell uso al nome del record stesso . Ad esempio se si vogliono rappresentare i dati relativi a una persona necessario avere a disposizione una variabile nome (stringa di 10 caratteri), una variabile indirizzo (stringa di 20 caratteri) una variabile et (intero), ma tutte viste come un unica entita PERSONA, la variabile che conterra il nome di una persona potra quindi essere PERSONA.NOME Un campo di un record puo a sua volta essere un record. disegno record

Il record possiamo immaginarlo come un nuovo tipo di dato che creiamo noi appositamente ad esempio per un vettore dove abbiamo bisogno per rappresentare qualcosa di dati diversi. spiegamo meglio il tutto l'esempio precedente potevamo scriverlo in pseudocodice cosi: PERSONA { ANAGRAFE{ NOME (stringa 10) cognome (stringa 10) } INDIRIZZO { VIA (stringa 20) NUMERO (intero) CITTA ( stringa 20) } ETA (intero)

} In quest esempio stato dichiarato il record PERSONA che composto dai campi ANAGRAFE, INDRIZZO, ETA. il campo ETA detto campo elementare , mentre ANAGRAFE e INDIRIZZO sono a loro volta record formati da NOME e COGNOME il primo e VIA, NUMERO e CITTA il secondo. Si chiama tabella un vettore i cui elementi sono dei record. Ad esempio, l'elenco delle persone iscritte ad un associazione una tabella. Per accedere a un campo di una tabella, necessario definire sia l'indice della tabella stessa (i), sia il nome del campo a cui si interessati (ad esempio PERSONA (i).ANAGRAFE.NOME).

Potrebbero piacerti anche