Informatica di base
Francesco Zoino
ITIS A. Volta - Napoli
Algoritmo
• L’insieme dei passi che devono essere svolti per
andare da una situazione iniziale ad una finale.
2
Dal linguaggio naturale al
linguaggio macchina
La comunicazione uomo-macchina avviene attraverso
formalismi che assumono la forma di un linguaggio
3
Linguaggio Naturale:
Vantaggi: ricchezza espressiva
Svantaggi: ambiguità, ridondanza
Linguaggio Macchina:
Vantaggi: legato alla struttura fisica del
calcolatore, potenza, velocità
Svantaggi: lunghezza dei programmi,
difficoltà di scrittura, difficoltà di messa a
punto dei programmi
Come collegarli
4
Programma:
Formulazione di un
algoritmo nei termini
di un linguaggio di
programmazione
Linguaggio di Programmazione:
Linguaggio intermedio fra il
linguaggio macchina e il linguaggio
naturale
Descrive gli algoritmi con una
ricchezza espressiva comparabile
con quella dei linguaggi naturali,
ma non è ambiguo
Descrive gli algoritmi in modo
rigoroso
Traduttori
5
• Il linguaggio macchina è l’unico linguaggio
compreso dalla CPU
• Qualsiasi altro linguaggio di programmazione
ha bisogno di un traduttore (non è possibile
progettare un traduttore per i linguaggi
naturali, per via dell’ambiguità)
• I linguaggi di programmazione sono
comprensibili sia dalla macchina (attraverso
un traduttore) che dall’uomo.
Linguaggio ad alto livello
6
• E’ svincolato dall’architettura della macchina,
nel senso che il programmatore non deve
necessariamente conoscere le caratteristiche
specifiche della CPU.
• E’ più comprensibile al programmatore in
quanto più vicino al linguaggio naturale.
• Per CPU diverse (ad es. Intel invece che
IBM), è necessario predisporre compilatori
diversi.
• Uno stesso Programma sorgente può essere
eseguito su macchine (CPU) diverse, creando
il Programma oggetto con il compilatore
opportuno.
• Consente la scelta di un Linguaggio in base
ad applicazioni specifiche.
C++ tipi di dati
7
In C++ esistono cinque tipi di dati primari:
Le variabili di tipo char sono impiegate per contenere valori in cui sono
sufficienti 8 bit come le lettere del codice ASCII 'A', 'B', 'C'.
Le variabili di tipo int possono contenere numeri che non richiedono
parte frazionaria.
Le variabili di tipo float e di tipo double sono impiegate nel caso in cui
siano necessari numeri con parte frazionaria (cifre dopo la virgola) o
numeri molto grandi. La differenza fra questi due ultimi tipi è unicamente
nella massima e nella minima quantità che possono rappresentare.
Il tipo void è stato introdotto per aumentare le possibilità di controllo sui
tipi.
Esiste anche un altro tipo di dato: il bool (booleano) che può assumere
valore 1 o 0 (vero o falso) occupa soltanto 1 bit e viene spesso associato
a variabili o condizioni logiche.
C++ dichiarazione di
variabili
8
La sintassi generica per dichiarare una variabile è:
tipo listaVariabili;
dove "tipo" deve essere uno dei tipi di dati validi del linguaggio C++
mentre "listaVariabili" consiste in uno o più identificatori di variabili
separati da una virgola.
int i, j, x;
char ch, lettera;
float bilancio, profitto, perdita;
C++ inizializzazione di
variabili
9
È possibile assegnare un valore ad una variabile nel momento stesso
della dichiarazione
tipo nomeVariabile = valoreVariabile;
int i=2;
char ch=‘A’;
C++ dove dichiarare le
variabili
10
Esistono tre punti in cui le variabili possono essere dichiarate.
La prima possibilità è di dichiarare le variabili all'esterno di tutte le
funzioni, compresa la funzione main(). In tal caso le variabili sono dette
globali e sono utilizzabili da qualsiasi parte del programma.
Una seconda possibilità è di dichiarare le variabili all'interno delle
funzioni: tali variabili sono dette locali e possono essere usate solo
all'interno della funzione che le ha dichiarate.
Infine le dichiarazioni delle variabili possono consistere nella
dichiarazione dei parametri formali delle funzioni; un parametro
formale è dunque (implicitamente) una variabile locale alla funzione di
cui costituisce la segnatura.
C++ costanti
11
Le costanti sono dei valori che non possono essere alterati durante
l'esecuzione del programma.
la sintassi tipica è:
const tipo nomeCostante = valoreCostante;
const int i=2;
const char ch=‘A’;
C++ espressioni e
conversione dei dati
12
Le espressioni sono costruite a partire da operatori, costanti e variabili,
seguendo le regole generali dell'algebra.
È possibile forzare un'espressione a essere di un tipo specifico usando il
costrutto di cast che si usa nella forma:
(tipo) espressione;
In cui (tipo) è uno dei tipi di dati del C.
Ad esempio se x è una variabile intera e si vuole che il risultato
dell'espressione x/2 sia considerato di tipo float per mantenere la
componente frazionaria si deve scrivere:
(float) x/2;
C++ operatori
13
Per operatore si intende un simbolo che indica delle manipolazioni
logiche e matematiche sui dati.
Gli operatori appartengono a tre classi
Operatori aritmetici
Operatori relazionali
Operatori logici
C++ operatori aritmetici
14
main(){
int x=10,y=3;
cout<<x/y; //visualizza 3 (quoto)
cout<<x%y; //visualizza 1 (resto)
}
operatore azione
- sottrazione
+ addizione
* moltiplicazione
/ divisione
% resto della divisione tra interi
-- decremento unitario
++ incremento unitario
-= decremento finito
+= incremento finito
C++ incremento e
decremento
15
x++ equivale a x=x+1
x-- equivale a x=x-1
x+=5 equivale a x=x+5
x-=5 equivale a x=x-5
C++ operatori relazionali
e logici
16
operatore azione
> maggiore
>= maggiore o uguale
< minore
<= minore o uguale
== uguale
!= diverso
operatore azione
&& AND
|| OR
! NOT
C++ costrutto if
17
È la struttura di alternativa per la
selezione.
È denominato costrutto if ed ha la
seguente sintassi:
if(condizione){ istruzioni-a;}
else{ istruzioni-b; }
Se la condizione assume valore logico
vero sarà eseguito il blocco di istruzioni-
a (o il blocco di istruzioni corrispondenti
all'if); nel caso la condizione assume
valore logico falso, se è presente il ramo
else verrà eseguito il blocco di
istruzioni corrispondente (istruzioni-b).
Si deve osservare che l'esecuzione di
una delle due parti esclude l'altra.
C++ costrutto if – else if
18
È una struttura costituita da una
serie di if- else if a scala.
Ha la seguente sintassi:
if (condizione-a){ istruzioni-a;}
else if (condizione-b){ istruzioni-b;}
else if (condizione-c){ istruzioni-c;}
…
else { istruzioni-n;}
Se non è presente l'else finale,
qualora non si sia verificata nessuna
delle condizioni, non viene intrapresa
nessuna azione.
C++ espressione
condizionale
19
Nelle espressioni condizionali non si è vincolati ad usare espressioni
operatori relazionali e logici, è richiesto soltanto che la valutazione
dell’espressione condizionale porti soltanto ad un valore uguale a zero
(falso) o diverso da zero (vero).
main(){
int a=3, b=2;
if(b) cout<<a/b;
else cout<<”impossibile”;
}
C++ ciclo for
20
Il ciclo for è un costrutto presente in
tutti i linguaggi di programmazione
procedurale. La sua forma generale
è la seguente:
for(inizializzazione; condizione;
incremento){
istruzioni;
}
L'inizializzazione è, nella sua forma più semplice un istruzione di
assegnamento con la quale il compilatore posiziona il valore
iniziale della variabile di controllo del ciclo.
La condizione è una espressione relazionale usata per valutare la
variabile di controllo al fine di determinare il momento di uscita dal
ciclo; l'esecuzione prosegue fintanto che la condizione è vera,
mentre quando diviene falsa l'esecuzione del programma continua
dall'istruzione successiva al for.
L'incremento definisce il modo in cui la variabile di controllo
cambia il suo valore ad ogni ripetizione del ciclo.
C++ ciclo for - esempi
21
int i;
for(i=1;i<=10;i++) cout<<i;
int x;
for(int i=0;i<10;i++) {
cout<<"inserisci un numero:";
cin>>x;
}
char ch;
for(int i=0;i<10;i++) {
cout<<"inserisci una lettera:";
cin>>ch;
if(ch=='Z') break;
}
C++ ciclo while
22
Un ciclo con ripetizione
precondizionale prevede il controllo
iniziale della condizione; esso si
rappresenta con l'istruzione while :
while(condizione){
istruzioni;
}
Il ciclo viene ripetuto fin tanto che rimane vera la condizione.
Quando la condizione diventa falsa, l'esecuzione del programma
prosegue dalla prima istruzione successiva al ciclo.
C++ ciclo while - esempi
23
int x=9;
while(x<20){
x++;
cout<<" "<<x;
}
int x=50;
while(x<20){
x++;
cout<<" "<<x;
}
C++ ciclo do - while
24
Un ciclo con ripetizione
postcondizionale prevede il controllo
finale della condizione; esso si
rappresenta con l'istruzione while :
do {
istruzioni;
}
while(condizione);
Il ciclo viene ripetuto fin tanto che rimane vera la condizione.
Quando la condizione diventa falsa, l'esecuzione del programma
prosegue dalla prima istruzione successiva al ciclo.
C++ ciclo do - while
esempio
25
int main()
{
float a, b;
char uscita = 'y';
do
{
cout << "ax + b = 0" << endl << "Inserisci a" << endl;
cin >> a;
cout << "Inserisci b" << endl;
cin >> b;
cout << a << "x + " << b << " = 0" << endl << "x = " <<
(-b)/a << endl << "Vuoi risolvere un'altra equazione
(y/n)?" << endl;
cin >> uscita; }
while (uscita == 'y' || uscita == 'Y');
cout << "Arrivederci!";
return 0; }
C++ switch
26
Il valore di una variabile viene confrontato con
una lista di costanti che possono essere di tipo
intero o char, quando si verifica l'uguaglianza
si esegue il blocco di istruzioni corrispondenti.
switch(variabile){
case: costante1:istruzioni-1;break;
case: costante2:istruzioni-2; break;
..
case: costante-n:istruzioni-n; break;
default:istruzioni;
}
1) I test eseguiti nello switch possono verificare solo uguaglianze,
a differenza di quelli eseguiti nell'if-else-if che possono
verificare condizioni di qualsiasi tipo.
2) Non possono esserci due case con lo stesso valore di costante
nello stesso switch. Possono invece avere lo stesso valore due
case collocati in due switch diversi.
C++ switch esempio
27
char ch;
cout<<"1.prelievon";
cout<<"2.lista movimentin";
cout<<"3.saldon";
cin>>ch;
switch(ch){
case '1':prelievo();break;
case '2':lista();break;
case '3':saldo();break;
default:cout<<"nessuna opzione selezionata";
}//end switch ;
C++ array (vettore)
28
Il vettore è un insieme di elementi omogenei tra loro. Con una variabile
possiamo indicare solo un dato, con il vettore possiamo indicare tanti dati
dello stesso tipo con un solo nome collettivo di variabile: l'identificatore del
vettore. Gli elementi si distinguono uno dall'altro attraverso l'indice che viene
assegnato nel vettore, e che viene posto accanto all'identificatore del
vettore.
Un vettore, in generale, è una sequenza finita di elementi
omogenei fra loro (tutti dello stesso tipo) e contigui
(giacenti in memoria uno accanto all'altro). Di solito un
vettore viene rappresentato come una successione di celle.
C++ array (vettore)
29
#define ARRAY_UNO_MAX 10
#define ARRAY_DUE_MAX 20
int array_uno[ARRAY_UNO_MAX];
char array_due[ARRAY_DUE_MAX];
tipo nomeVettore [dimensione];
int a [10];
C++ array - esempi
30
int a[10];
int i;
for(i=0; i < 14; i++)
{
cout << a[i] << endl;
}
#define AMAX 10
int a[AMAX];
int i;
for (i=0; i < AMAX; i++)
{
cout << a[i] << endl;
}
C++ esercizi
31
Scrivere un programma che, inseriti due numeri da tastiera, ne stampi il
maggiore.
Se i due numeri sono uguali se ne stamperà la somma.
C++ esercizi
32
Scrivere un programma che, inseriti due numeri da tastiera, ne stampi il
maggiore.
Se i due numeri sono uguali se ne stamperà la somma.
C++ esercizi
33
Scrivere un programma che, dato il prezzo netto di un prodotto, lo sconti
del 35% se tale prezzo è maggiore di 100 € e aggiunga l’IVA del 20%,
mostrando a video il risultato.
C++ esercizi
34
Scrivere un programma che, dato il prezzo netto di un prodotto, lo sconti
del 35% se tale prezzo è maggiore di 100 € e aggiunga l’IVA del 20%,
mostrando a video il risultato.
C++ esercizi
35
Scrivere un programma che, inseriti due numeri interi, esegua:
A) La loro somma se uno dei due è pari
B) Il loro prodotto se entrambi sono pari
C) Il loro quoziente se nessuno dei due è pari
C++ esercizi
36
Scrivere un programma che, inseriti due numeri interi, esegua:
A) La loro somma se uno dei due è pari
B) Il loro prodotto se entrambi sono pari
C) Il loro quoziente se nessuno dei due è pari
C++ esercizi
37
Scrivere un programma che legge 10 numeri interi inseriti da tastiera e li
somma dopo averli letti tutti e 10 o dopo che è stato inserito il numero 0.
C++ esercizi
38
#include <iostream> //Dichiarazione della libreria "iostream«
using namespace std;
int main(){ //Inizio della funzione principale
int num, somma=0; //Dichiarazione delle variabili
for (int x=1; x<11; x++){ //Inizio del ciclo for che legge i 10 numeri da tastiera
cout<<"Inserire il "<<x<<"° numero: ";
cin>>num; //Legge il numero da tastiera
if (num==0){ //se il numero è 0...
x=10; //...esce dal programma facendo diventare la condizione (x<10) falsa
}
else{ //altrimenti aggiunge il numero alla somma
somma+=num;
}
}
cout<<"La somma dei numeri inseriti è: "<<somma<<"n";
system("pause");
return 0;
}
Scrivere un programma che legge 10 numeri interi inseriti da tastiera e li
somma dopo averli letti tutti e 10 o dopo che è stato inserito il numero 0.
C++ esercizi
39
Scrivere un programma che legge 10 numeri interi da tastiera e
comunica quanti numeri pari sono stati inseriti.
C++ esercizi
40
#include <iostream> //Dichiarazione della libreria "iostream«
using namespace std;
int main(){ //Inizio della funzione principale
int num=0, pari=0; //Dichiarazione delle variabili
for (int x=1; x<10; x++){ //Inizio del ciclo for che legge i 10 numeri da tastiera
cout<<"Inserire il "<<x<<"° numero: ";
cin>>num; //Legge il numero da tastiera
if (num%2==0) pari++; //se il numero è pari incrementa la variabile pari
}
cout<<«Sono stati inseriti "<<pari<<" numeri parin";
system("pause");
return 0;
}
Scrivere un programma che legge 10 numeri interi da tastiera e
comunica quanti numeri pari sono stati inseriti.
C++ esercizi
41
Scrivere un programma che, a scelta dell'utente, calcoli la somma di 10
numeri (fermandosi nel caso che venga inserito il numero 0) oppure il
risultato dell'elevamento di un numero intero per un esponente inserito
da tastiera.
ANALISI:
Il programma inizierà con la presentazione del menu di scelta principale. Dopo aver
letto la scelta effettuata dall'utente, con una struttura di selezione multipla (switch) il
programma effettuerà il problema scelto.
VARIABILI UTILIZZATE:
int scelta: contiene la scelta effettuata dall'utente relativa al problema che vuole
svolgere
char uscita: variabile utilizzata per il controllo dell'uscita dal programma (se è 'y' il
programma termina, se è 'n' il programma continua).
int num: contiene il numero da sommare di volta in volta (programma somma) oppure
la base della potenza (programma potenza).
int esp: contiene l'esponente della potenza (programma potenza)
int ris: contiene il risultato della somma (programma somma) o dell'elevamento a
potenza (programma potenza)
int x: variabile contatore per i cicli for
C++ esercizi
42
Scrivere un programma che calcoli la media dei voti relativi ad un
compito in classe di una classe di n alunni, con n inserito da tastiera.
ANALISI:
Innanzitutto il programma leggerà il numero di alunni che compongono la classe.
Dopodiché con un ciclo for verrà richiesto il voto dell'alunno per un numero di volte pari
a n, e man mano verrà sommato alla variabile somma. Infine verrà calcolata e
comunicata la media.
VARIABILI UTILIZZATE:
float somma: contiene la somma dei voti
float media: contiene la media dei voti
float voto: contiene il voto inserito
int alunni: contiene il numero di alunni che compongono la classe
char continua: variabile che controlla la ripetizione del programma
C++ esercizi
43
Scrivere un programma che, comunicata la propria data di nascita,
indichi il segno zodiacale al quale si appartiene.
ANALISI:
Il programma inizierà a leggere il mese e il giorno di nascita. Dopodiché vengono fatti
dei controlli per stabilire se i parametri inseriti sono accettabili (viene controllato se il
mese inserito è un numero tra l'1 e il 12 e se il giorno rientra nel mese). Dopodiché con
una selezione multipla viene controllato il mese inserito e all'interno di ogni case viene
controllato il giorno con delle selezioni semplici if. Quindi viene comunicato il segno
zodiacale corrispondente.
VARIABILI UTILIZZATE:
int mese: contiene il mese di nascita
int giorno: contiene il giorno di nascita
int maxgiorni: contiene il numero massimo di giorni a seconda del mese inserito
C++ esercizi
44
Scrivere un programma che, inseriti i coefficienti a, b, c delle equazioni di
due rette, dice se le due rette sono parallele, perpendicolari, incidenti o
coincidenti.
ANALISI:
Il programma leggerà i coefficienti a, b, c delle due rette, dopodiché controllerà le
diverse opzioni: Se le due rette hanno i coefficienti b entrambi uguali a 0:
Se c1/a1 = c2/a2 allora le due rette sono coincidenti
Se c1/a1 è diverso da c2/a2 allora le due rette sono parallele
Se il coefficiente b della prima retta è uguale a 0 e quello della seconda retta no:
Se a2/b2 = 0 le rette sono perpendicolari
se a2/b2 non è uguale a 0 allora le rette sono incidenti
Se il coefficiente b della prima retta è diverso da 0 e quello della seconda è uguale a 0:
Se a1/b1 = 0 le rette sono perpendicolari
Se a1/b1 non è uguale a 0 allora le due rette sono incidenti
Se i coefficienti b delle due rette sono entrambi diversi da 0, calcola m (-a/b) e q (c/a) e:
se le rette hanno m e q uguali allora sono coincidenti
se le rette hanno m uguale ma q diverso allora sono parallele
se il coefficiente m di una retta è l'opposto e il reciproco di quello dell'altra le rette
sono perpendicolari
se i coefficienti m non sono né uguali né uno l'opposto e il reciproco dell'altro,
allora le rette sono incidenti
C++ esercizi
45
Scrivere un programma che, inseriti i coefficienti a, b, c delle equazioni di
due rette, dice se le due rette sono parallele, perpendicolari, incidenti o
coincidenti.
VARIABILI UTILIZZATE:
double a1: coefficiente a dell'equazione della prima retta
double b1: coefficiente b dell'equazione della prima retta
double c1: coefficiente c dell'equazione della prima retta
double a2: coefficiente a dell'equazione della seconda retta
double b2: coefficiente b dell'equazione della seconda retta
double c2: coefficiente c dell'equazione della seconda retta
double m1: coefficiente m dell'equazione della prima retta
double m2: coefficiente m dell'equazione della seconda retta
double q1: coefficiente q dell'equazione della prima retta
double q2: coefficiente q dell'equazione della seconda retta
C++ esercizi
46
Scrivere un programma che calcoli la somma di due array inseriti da
tastiera
VARIABILI UTILIZZATE:
int n: dimensione dell'array
int A1[MAX]: primo array da addizionare
int A2[MAX]: secondo array da addizionare
int Asomma[MAX]: array contenente la somma dei due precedenti
COSTANTI UTILIZZATE:
MAX: dimensione massima degli array
ANALISI:
Innanzitutto il programma leggerà la dimensione dei due array, quindi con un ciclo for
caricherà gli elementi da tastiera e li sommerà, mettendo il risultato in un terzo array.
C++ esercizi
47
Scrivere un programma che riceve in input 20 numeri interi e li stampa in
ordine crescente.
VARIABILI UTILIZZATE:
int V[20]: contiene i 20 numeri da ordinare
int box: variabile ausiliaria di supporto per lo scambio degli elementi
ANALISI:
Con un ciclo for il programma richiederà i 20 numeri e li inserirà in un array. Dopodiché
con due cicli for annidati ogni elemento verrà confrontato con tutti gli altri. Se il numero
preso in considerazione dal primo ciclo è minore di quello preso dal secondo, gli
elementi verranno scambiati tra loro utilizzando una variabile ausiliaria di supporto. Al
termine dei due cicli l'array conterrà gli elementi ordinati in ordine crescente e sarà
pronto per essere visualizzato sul monitor utilizzando un altro ciclo for.

Informatica di base

  • 1.
    Informatica di base FrancescoZoino ITIS A. Volta - Napoli
  • 2.
    Algoritmo • L’insieme deipassi che devono essere svolti per andare da una situazione iniziale ad una finale. 2
  • 3.
    Dal linguaggio naturaleal linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio 3 Linguaggio Naturale: Vantaggi: ricchezza espressiva Svantaggi: ambiguità, ridondanza Linguaggio Macchina: Vantaggi: legato alla struttura fisica del calcolatore, potenza, velocità Svantaggi: lunghezza dei programmi, difficoltà di scrittura, difficoltà di messa a punto dei programmi
  • 4.
    Come collegarli 4 Programma: Formulazione diun algoritmo nei termini di un linguaggio di programmazione Linguaggio di Programmazione: Linguaggio intermedio fra il linguaggio macchina e il linguaggio naturale Descrive gli algoritmi con una ricchezza espressiva comparabile con quella dei linguaggi naturali, ma non è ambiguo Descrive gli algoritmi in modo rigoroso
  • 5.
    Traduttori 5 • Il linguaggiomacchina è l’unico linguaggio compreso dalla CPU • Qualsiasi altro linguaggio di programmazione ha bisogno di un traduttore (non è possibile progettare un traduttore per i linguaggi naturali, per via dell’ambiguità) • I linguaggi di programmazione sono comprensibili sia dalla macchina (attraverso un traduttore) che dall’uomo.
  • 6.
    Linguaggio ad altolivello 6 • E’ svincolato dall’architettura della macchina, nel senso che il programmatore non deve necessariamente conoscere le caratteristiche specifiche della CPU. • E’ più comprensibile al programmatore in quanto più vicino al linguaggio naturale. • Per CPU diverse (ad es. Intel invece che IBM), è necessario predisporre compilatori diversi. • Uno stesso Programma sorgente può essere eseguito su macchine (CPU) diverse, creando il Programma oggetto con il compilatore opportuno. • Consente la scelta di un Linguaggio in base ad applicazioni specifiche.
  • 7.
    C++ tipi didati 7 In C++ esistono cinque tipi di dati primari: Le variabili di tipo char sono impiegate per contenere valori in cui sono sufficienti 8 bit come le lettere del codice ASCII 'A', 'B', 'C'. Le variabili di tipo int possono contenere numeri che non richiedono parte frazionaria. Le variabili di tipo float e di tipo double sono impiegate nel caso in cui siano necessari numeri con parte frazionaria (cifre dopo la virgola) o numeri molto grandi. La differenza fra questi due ultimi tipi è unicamente nella massima e nella minima quantità che possono rappresentare. Il tipo void è stato introdotto per aumentare le possibilità di controllo sui tipi. Esiste anche un altro tipo di dato: il bool (booleano) che può assumere valore 1 o 0 (vero o falso) occupa soltanto 1 bit e viene spesso associato a variabili o condizioni logiche.
  • 8.
    C++ dichiarazione di variabili 8 Lasintassi generica per dichiarare una variabile è: tipo listaVariabili; dove "tipo" deve essere uno dei tipi di dati validi del linguaggio C++ mentre "listaVariabili" consiste in uno o più identificatori di variabili separati da una virgola. int i, j, x; char ch, lettera; float bilancio, profitto, perdita;
  • 9.
    C++ inizializzazione di variabili 9 Èpossibile assegnare un valore ad una variabile nel momento stesso della dichiarazione tipo nomeVariabile = valoreVariabile; int i=2; char ch=‘A’;
  • 10.
    C++ dove dichiararele variabili 10 Esistono tre punti in cui le variabili possono essere dichiarate. La prima possibilità è di dichiarare le variabili all'esterno di tutte le funzioni, compresa la funzione main(). In tal caso le variabili sono dette globali e sono utilizzabili da qualsiasi parte del programma. Una seconda possibilità è di dichiarare le variabili all'interno delle funzioni: tali variabili sono dette locali e possono essere usate solo all'interno della funzione che le ha dichiarate. Infine le dichiarazioni delle variabili possono consistere nella dichiarazione dei parametri formali delle funzioni; un parametro formale è dunque (implicitamente) una variabile locale alla funzione di cui costituisce la segnatura.
  • 11.
    C++ costanti 11 Le costantisono dei valori che non possono essere alterati durante l'esecuzione del programma. la sintassi tipica è: const tipo nomeCostante = valoreCostante; const int i=2; const char ch=‘A’;
  • 12.
    C++ espressioni e conversionedei dati 12 Le espressioni sono costruite a partire da operatori, costanti e variabili, seguendo le regole generali dell'algebra. È possibile forzare un'espressione a essere di un tipo specifico usando il costrutto di cast che si usa nella forma: (tipo) espressione; In cui (tipo) è uno dei tipi di dati del C. Ad esempio se x è una variabile intera e si vuole che il risultato dell'espressione x/2 sia considerato di tipo float per mantenere la componente frazionaria si deve scrivere: (float) x/2;
  • 13.
    C++ operatori 13 Per operatoresi intende un simbolo che indica delle manipolazioni logiche e matematiche sui dati. Gli operatori appartengono a tre classi Operatori aritmetici Operatori relazionali Operatori logici
  • 14.
    C++ operatori aritmetici 14 main(){ intx=10,y=3; cout<<x/y; //visualizza 3 (quoto) cout<<x%y; //visualizza 1 (resto) } operatore azione - sottrazione + addizione * moltiplicazione / divisione % resto della divisione tra interi -- decremento unitario ++ incremento unitario -= decremento finito += incremento finito
  • 15.
    C++ incremento e decremento 15 x++equivale a x=x+1 x-- equivale a x=x-1 x+=5 equivale a x=x+5 x-=5 equivale a x=x-5
  • 16.
    C++ operatori relazionali elogici 16 operatore azione > maggiore >= maggiore o uguale < minore <= minore o uguale == uguale != diverso operatore azione && AND || OR ! NOT
  • 17.
    C++ costrutto if 17 Èla struttura di alternativa per la selezione. È denominato costrutto if ed ha la seguente sintassi: if(condizione){ istruzioni-a;} else{ istruzioni-b; } Se la condizione assume valore logico vero sarà eseguito il blocco di istruzioni- a (o il blocco di istruzioni corrispondenti all'if); nel caso la condizione assume valore logico falso, se è presente il ramo else verrà eseguito il blocco di istruzioni corrispondente (istruzioni-b). Si deve osservare che l'esecuzione di una delle due parti esclude l'altra.
  • 18.
    C++ costrutto if– else if 18 È una struttura costituita da una serie di if- else if a scala. Ha la seguente sintassi: if (condizione-a){ istruzioni-a;} else if (condizione-b){ istruzioni-b;} else if (condizione-c){ istruzioni-c;} … else { istruzioni-n;} Se non è presente l'else finale, qualora non si sia verificata nessuna delle condizioni, non viene intrapresa nessuna azione.
  • 19.
    C++ espressione condizionale 19 Nelle espressionicondizionali non si è vincolati ad usare espressioni operatori relazionali e logici, è richiesto soltanto che la valutazione dell’espressione condizionale porti soltanto ad un valore uguale a zero (falso) o diverso da zero (vero). main(){ int a=3, b=2; if(b) cout<<a/b; else cout<<”impossibile”; }
  • 20.
    C++ ciclo for 20 Ilciclo for è un costrutto presente in tutti i linguaggi di programmazione procedurale. La sua forma generale è la seguente: for(inizializzazione; condizione; incremento){ istruzioni; } L'inizializzazione è, nella sua forma più semplice un istruzione di assegnamento con la quale il compilatore posiziona il valore iniziale della variabile di controllo del ciclo. La condizione è una espressione relazionale usata per valutare la variabile di controllo al fine di determinare il momento di uscita dal ciclo; l'esecuzione prosegue fintanto che la condizione è vera, mentre quando diviene falsa l'esecuzione del programma continua dall'istruzione successiva al for. L'incremento definisce il modo in cui la variabile di controllo cambia il suo valore ad ogni ripetizione del ciclo.
  • 21.
    C++ ciclo for- esempi 21 int i; for(i=1;i<=10;i++) cout<<i; int x; for(int i=0;i<10;i++) { cout<<"inserisci un numero:"; cin>>x; } char ch; for(int i=0;i<10;i++) { cout<<"inserisci una lettera:"; cin>>ch; if(ch=='Z') break; }
  • 22.
    C++ ciclo while 22 Unciclo con ripetizione precondizionale prevede il controllo iniziale della condizione; esso si rappresenta con l'istruzione while : while(condizione){ istruzioni; } Il ciclo viene ripetuto fin tanto che rimane vera la condizione. Quando la condizione diventa falsa, l'esecuzione del programma prosegue dalla prima istruzione successiva al ciclo.
  • 23.
    C++ ciclo while- esempi 23 int x=9; while(x<20){ x++; cout<<" "<<x; } int x=50; while(x<20){ x++; cout<<" "<<x; }
  • 24.
    C++ ciclo do- while 24 Un ciclo con ripetizione postcondizionale prevede il controllo finale della condizione; esso si rappresenta con l'istruzione while : do { istruzioni; } while(condizione); Il ciclo viene ripetuto fin tanto che rimane vera la condizione. Quando la condizione diventa falsa, l'esecuzione del programma prosegue dalla prima istruzione successiva al ciclo.
  • 25.
    C++ ciclo do- while esempio 25 int main() { float a, b; char uscita = 'y'; do { cout << "ax + b = 0" << endl << "Inserisci a" << endl; cin >> a; cout << "Inserisci b" << endl; cin >> b; cout << a << "x + " << b << " = 0" << endl << "x = " << (-b)/a << endl << "Vuoi risolvere un'altra equazione (y/n)?" << endl; cin >> uscita; } while (uscita == 'y' || uscita == 'Y'); cout << "Arrivederci!"; return 0; }
  • 26.
    C++ switch 26 Il valoredi una variabile viene confrontato con una lista di costanti che possono essere di tipo intero o char, quando si verifica l'uguaglianza si esegue il blocco di istruzioni corrispondenti. switch(variabile){ case: costante1:istruzioni-1;break; case: costante2:istruzioni-2; break; .. case: costante-n:istruzioni-n; break; default:istruzioni; } 1) I test eseguiti nello switch possono verificare solo uguaglianze, a differenza di quelli eseguiti nell'if-else-if che possono verificare condizioni di qualsiasi tipo. 2) Non possono esserci due case con lo stesso valore di costante nello stesso switch. Possono invece avere lo stesso valore due case collocati in due switch diversi.
  • 27.
    C++ switch esempio 27 charch; cout<<"1.prelievon"; cout<<"2.lista movimentin"; cout<<"3.saldon"; cin>>ch; switch(ch){ case '1':prelievo();break; case '2':lista();break; case '3':saldo();break; default:cout<<"nessuna opzione selezionata"; }//end switch ;
  • 28.
    C++ array (vettore) 28 Ilvettore è un insieme di elementi omogenei tra loro. Con una variabile possiamo indicare solo un dato, con il vettore possiamo indicare tanti dati dello stesso tipo con un solo nome collettivo di variabile: l'identificatore del vettore. Gli elementi si distinguono uno dall'altro attraverso l'indice che viene assegnato nel vettore, e che viene posto accanto all'identificatore del vettore. Un vettore, in generale, è una sequenza finita di elementi omogenei fra loro (tutti dello stesso tipo) e contigui (giacenti in memoria uno accanto all'altro). Di solito un vettore viene rappresentato come una successione di celle.
  • 29.
    C++ array (vettore) 29 #defineARRAY_UNO_MAX 10 #define ARRAY_DUE_MAX 20 int array_uno[ARRAY_UNO_MAX]; char array_due[ARRAY_DUE_MAX]; tipo nomeVettore [dimensione]; int a [10];
  • 30.
    C++ array -esempi 30 int a[10]; int i; for(i=0; i < 14; i++) { cout << a[i] << endl; } #define AMAX 10 int a[AMAX]; int i; for (i=0; i < AMAX; i++) { cout << a[i] << endl; }
  • 31.
    C++ esercizi 31 Scrivere unprogramma che, inseriti due numeri da tastiera, ne stampi il maggiore. Se i due numeri sono uguali se ne stamperà la somma.
  • 32.
    C++ esercizi 32 Scrivere unprogramma che, inseriti due numeri da tastiera, ne stampi il maggiore. Se i due numeri sono uguali se ne stamperà la somma.
  • 33.
    C++ esercizi 33 Scrivere unprogramma che, dato il prezzo netto di un prodotto, lo sconti del 35% se tale prezzo è maggiore di 100 € e aggiunga l’IVA del 20%, mostrando a video il risultato.
  • 34.
    C++ esercizi 34 Scrivere unprogramma che, dato il prezzo netto di un prodotto, lo sconti del 35% se tale prezzo è maggiore di 100 € e aggiunga l’IVA del 20%, mostrando a video il risultato.
  • 35.
    C++ esercizi 35 Scrivere unprogramma che, inseriti due numeri interi, esegua: A) La loro somma se uno dei due è pari B) Il loro prodotto se entrambi sono pari C) Il loro quoziente se nessuno dei due è pari
  • 36.
    C++ esercizi 36 Scrivere unprogramma che, inseriti due numeri interi, esegua: A) La loro somma se uno dei due è pari B) Il loro prodotto se entrambi sono pari C) Il loro quoziente se nessuno dei due è pari
  • 37.
    C++ esercizi 37 Scrivere unprogramma che legge 10 numeri interi inseriti da tastiera e li somma dopo averli letti tutti e 10 o dopo che è stato inserito il numero 0.
  • 38.
    C++ esercizi 38 #include <iostream>//Dichiarazione della libreria "iostream« using namespace std; int main(){ //Inizio della funzione principale int num, somma=0; //Dichiarazione delle variabili for (int x=1; x<11; x++){ //Inizio del ciclo for che legge i 10 numeri da tastiera cout<<"Inserire il "<<x<<"° numero: "; cin>>num; //Legge il numero da tastiera if (num==0){ //se il numero è 0... x=10; //...esce dal programma facendo diventare la condizione (x<10) falsa } else{ //altrimenti aggiunge il numero alla somma somma+=num; } } cout<<"La somma dei numeri inseriti è: "<<somma<<"n"; system("pause"); return 0; } Scrivere un programma che legge 10 numeri interi inseriti da tastiera e li somma dopo averli letti tutti e 10 o dopo che è stato inserito il numero 0.
  • 39.
    C++ esercizi 39 Scrivere unprogramma che legge 10 numeri interi da tastiera e comunica quanti numeri pari sono stati inseriti.
  • 40.
    C++ esercizi 40 #include <iostream>//Dichiarazione della libreria "iostream« using namespace std; int main(){ //Inizio della funzione principale int num=0, pari=0; //Dichiarazione delle variabili for (int x=1; x<10; x++){ //Inizio del ciclo for che legge i 10 numeri da tastiera cout<<"Inserire il "<<x<<"° numero: "; cin>>num; //Legge il numero da tastiera if (num%2==0) pari++; //se il numero è pari incrementa la variabile pari } cout<<«Sono stati inseriti "<<pari<<" numeri parin"; system("pause"); return 0; } Scrivere un programma che legge 10 numeri interi da tastiera e comunica quanti numeri pari sono stati inseriti.
  • 41.
    C++ esercizi 41 Scrivere unprogramma che, a scelta dell'utente, calcoli la somma di 10 numeri (fermandosi nel caso che venga inserito il numero 0) oppure il risultato dell'elevamento di un numero intero per un esponente inserito da tastiera. ANALISI: Il programma inizierà con la presentazione del menu di scelta principale. Dopo aver letto la scelta effettuata dall'utente, con una struttura di selezione multipla (switch) il programma effettuerà il problema scelto. VARIABILI UTILIZZATE: int scelta: contiene la scelta effettuata dall'utente relativa al problema che vuole svolgere char uscita: variabile utilizzata per il controllo dell'uscita dal programma (se è 'y' il programma termina, se è 'n' il programma continua). int num: contiene il numero da sommare di volta in volta (programma somma) oppure la base della potenza (programma potenza). int esp: contiene l'esponente della potenza (programma potenza) int ris: contiene il risultato della somma (programma somma) o dell'elevamento a potenza (programma potenza) int x: variabile contatore per i cicli for
  • 42.
    C++ esercizi 42 Scrivere unprogramma che calcoli la media dei voti relativi ad un compito in classe di una classe di n alunni, con n inserito da tastiera. ANALISI: Innanzitutto il programma leggerà il numero di alunni che compongono la classe. Dopodiché con un ciclo for verrà richiesto il voto dell'alunno per un numero di volte pari a n, e man mano verrà sommato alla variabile somma. Infine verrà calcolata e comunicata la media. VARIABILI UTILIZZATE: float somma: contiene la somma dei voti float media: contiene la media dei voti float voto: contiene il voto inserito int alunni: contiene il numero di alunni che compongono la classe char continua: variabile che controlla la ripetizione del programma
  • 43.
    C++ esercizi 43 Scrivere unprogramma che, comunicata la propria data di nascita, indichi il segno zodiacale al quale si appartiene. ANALISI: Il programma inizierà a leggere il mese e il giorno di nascita. Dopodiché vengono fatti dei controlli per stabilire se i parametri inseriti sono accettabili (viene controllato se il mese inserito è un numero tra l'1 e il 12 e se il giorno rientra nel mese). Dopodiché con una selezione multipla viene controllato il mese inserito e all'interno di ogni case viene controllato il giorno con delle selezioni semplici if. Quindi viene comunicato il segno zodiacale corrispondente. VARIABILI UTILIZZATE: int mese: contiene il mese di nascita int giorno: contiene il giorno di nascita int maxgiorni: contiene il numero massimo di giorni a seconda del mese inserito
  • 44.
    C++ esercizi 44 Scrivere unprogramma che, inseriti i coefficienti a, b, c delle equazioni di due rette, dice se le due rette sono parallele, perpendicolari, incidenti o coincidenti. ANALISI: Il programma leggerà i coefficienti a, b, c delle due rette, dopodiché controllerà le diverse opzioni: Se le due rette hanno i coefficienti b entrambi uguali a 0: Se c1/a1 = c2/a2 allora le due rette sono coincidenti Se c1/a1 è diverso da c2/a2 allora le due rette sono parallele Se il coefficiente b della prima retta è uguale a 0 e quello della seconda retta no: Se a2/b2 = 0 le rette sono perpendicolari se a2/b2 non è uguale a 0 allora le rette sono incidenti Se il coefficiente b della prima retta è diverso da 0 e quello della seconda è uguale a 0: Se a1/b1 = 0 le rette sono perpendicolari Se a1/b1 non è uguale a 0 allora le due rette sono incidenti Se i coefficienti b delle due rette sono entrambi diversi da 0, calcola m (-a/b) e q (c/a) e: se le rette hanno m e q uguali allora sono coincidenti se le rette hanno m uguale ma q diverso allora sono parallele se il coefficiente m di una retta è l'opposto e il reciproco di quello dell'altra le rette sono perpendicolari se i coefficienti m non sono né uguali né uno l'opposto e il reciproco dell'altro, allora le rette sono incidenti
  • 45.
    C++ esercizi 45 Scrivere unprogramma che, inseriti i coefficienti a, b, c delle equazioni di due rette, dice se le due rette sono parallele, perpendicolari, incidenti o coincidenti. VARIABILI UTILIZZATE: double a1: coefficiente a dell'equazione della prima retta double b1: coefficiente b dell'equazione della prima retta double c1: coefficiente c dell'equazione della prima retta double a2: coefficiente a dell'equazione della seconda retta double b2: coefficiente b dell'equazione della seconda retta double c2: coefficiente c dell'equazione della seconda retta double m1: coefficiente m dell'equazione della prima retta double m2: coefficiente m dell'equazione della seconda retta double q1: coefficiente q dell'equazione della prima retta double q2: coefficiente q dell'equazione della seconda retta
  • 46.
    C++ esercizi 46 Scrivere unprogramma che calcoli la somma di due array inseriti da tastiera VARIABILI UTILIZZATE: int n: dimensione dell'array int A1[MAX]: primo array da addizionare int A2[MAX]: secondo array da addizionare int Asomma[MAX]: array contenente la somma dei due precedenti COSTANTI UTILIZZATE: MAX: dimensione massima degli array ANALISI: Innanzitutto il programma leggerà la dimensione dei due array, quindi con un ciclo for caricherà gli elementi da tastiera e li sommerà, mettendo il risultato in un terzo array.
  • 47.
    C++ esercizi 47 Scrivere unprogramma che riceve in input 20 numeri interi e li stampa in ordine crescente. VARIABILI UTILIZZATE: int V[20]: contiene i 20 numeri da ordinare int box: variabile ausiliaria di supporto per lo scambio degli elementi ANALISI: Con un ciclo for il programma richiederà i 20 numeri e li inserirà in un array. Dopodiché con due cicli for annidati ogni elemento verrà confrontato con tutti gli altri. Se il numero preso in considerazione dal primo ciclo è minore di quello preso dal secondo, gli elementi verranno scambiati tra loro utilizzando una variabile ausiliaria di supporto. Al termine dei due cicli l'array conterrà gli elementi ordinati in ordine crescente e sarà pronto per essere visualizzato sul monitor utilizzando un altro ciclo for.