Ciclo For in C++

Giacomo Balla – “sua figlia Elica pensierosa”

Il ciclo for è indispensabile per eseguire più volte la stessa istruzione.

Ad esempio ordinare una lista, continuare a presentare un menù iniziale all’inizio di un programma, continuare ad eseguire la tornitura di un pezzo meccanico finché questo nn abbia raggiunto le dimensioni volute.

Quest’ultimo esempio è tipico delle industrie meccanizzate in cui vari robot hanno il compito di sostituire l’umo nei lavori più usuranti, rischiosi e ripetitivi. Normalmente il software presente in tali robot è scritto in C++ proprio perché consente un basso utilizzo della memoria una sintassi conosciuta e nello stesso tempo molto potente per quanto riguarda le operazioni da eseguire.

La sintassi del comando è la seguente:

for (istruzione_iniziale; prima_espressione; seconda_espressione)

istruzione;

come si nota la sintassi è notevolmente diversa da quella usata precedentemente in Python proprio perchè consente un insieme di operazioni maggiori ed una maggiore elasticità che si apprezzerà nell’implementazione di programmi più elaborati.

Eccone un esempio chiarificatore:

#include <iostream>

using namespace std;

int main (int argc, char *argv[])
{
int i;
for (i=0;i<5;++i)
    cout << “Volta: “<<i<<endl;
cout;
return 0;
}

In questi caso

istruzione_iniziale corrisponde a i=0

prima_espressione corrisponde a i<5

seconda espressione corrsponde a ++i

Si noti un’altra differenza tipica del linguaggio C++ ossia l’usa di ++i, estremamente utile per aumentare di uno il valore della variabile i.

Pubblicato in Senza categoria | Lascia un commento

If in C++

Giacomo Balla

Per prendere confidenza con i linguaggi più evoluti è necessario imparare a leggere anche un manuale di programmazione.

Il compito più arduo è indubbiamente questo perché da questo si può poi passare da un linguaggio ad un altro con maggiore dimestichezza.

Ci si avvicina con gradualità a tale scopo.

La sintassi per il comando IF è la seguente:

if (espressione)

istruzione;

Si noti subito che non ha importanza l’incolonnamento del comando stesso ma solo il giusto ordine tra le parentesi ed il punto e virgola.

In C++ il ruolo del punto e virgole è equivalente a quello di termine istruzione!

Questo semplice programma che calcola l’area di un quadrato utilizza l’istruzione IF.

nclude <iostream>

using namespace std;

int main (int argc, char *argv[])
{
int i;
double g;
cout << “Area del quadrato” << endl;
cout << “Fornire il lato” << endl;
cin >> i;
if (i < 0)
    cout << “Non ha senso calcolare l’area”<<endl;
else
    cout << “area: “<< i*i; 
cout;
return 0;
}

ho evidenziato la sezione di codice in cui si utilizza l’IF.

Si confronti a puro titolo didattico come si scriveva il comando IF nel caso del linguaggio Python.(IF Python).

Come esercizio si provi adesso a calcolare all’interno dell’else anche il lato di un rettangolo congruente al quadrato usando opportunamente le formule inverse.

Pubblicato in Senza categoria | Lascia un commento

Introduzione al C++

Renè Magritte

Il C++ nasce come evoluzione del linguaggio C. E’ un linguaggio compilato che differisce dal linguaggio interpretato com’è Python, ad esempio o HTML. Il linguaggio compilato ha la necessità di avere un software chiamato compilatore che decodifica il linguaggio di programmazione in linee di codice eseguibili.

Terminato il processo di compilazione si crea un programma chiamato eseguibile che non ha bisogno di altri file per la sua esecuzione a meno di opportuni file di configurazione che comunque, se presenti nel PC in cui si esegue varranno per tutti gli altri programmi.

A differenza del programma interpretato presenta i seguenti vantaggi:

– velocità di esecuzione

– poco spazio in termini sia di occupazione di memoria che di memoria in fase di esecuzione.

Il C++ nasce nel 1979 da Bjarne Stroustrup (programmatore danese) che durante la sua tesi di laurea nota la necessità di completare il linguaggio C con altre caratteristiche che ne fanno la peculiarità del C++.

E’ l’evoluzione del C in quanto introduce un concetto poi utilizzato in tutti i linguaggi di programmazione successiva: il concetto di classe.

Il concetto di classe è qualcosa di molto potente e che può essere compreso solo dopo numerose righe di codice ma il concetto è il vantaggio di definire un oggetto e poi utilizzarlo con tutte le sue proprietà in qualunque punto del programma.

La semantica del linguaggio è molto ricca e questo permette di eseguire numerose istruzioni, nel contempo però potrebbe generare vari codici sorgente con compilatori diversi.

Pubblicato in Senza categoria | Lascia un commento

Prova invalsi di matematica anno 2011-2010

Renè Magritte

Renè Magritte

Allego la prova INVALSI di matematica dell’anno 2011 ed anno 2010 per la terza media

PN1011_Matematica

test_invalsi_2010_matematica

Ritengo indispensabile allenarsi per poter affrontare in maniera soddisfacente il relativo test.

Cercare di rinchiudere un qualunque ramo dello scibile all’interno di test è indubbiamente una cosa poco onesta dal punto di vista intellettivo ma cercare di declinare il livello raggiunto è indispensabile per capire se si è in grado di percorre la strada verso il miglioramento.

Termino questo post con un aforisma di Gottfried Wilhelm Leibniz

“E’ nel grande ordine che vi è un piccolo disordine”

Pubblicato in Senza categoria | Lascia un commento

Radicali: la chiave di volta

Jacek Yerka

Quando si pensa ai radicali, spesso e volentieri si creano tanti di quei metodi per poterli sviluppare che sembra quasi un argomento scollegato a quello degli esponenziali.

E’ un errore di fondo che merita un’immediata verifica.

Si pensi a questi classici problemi.

1) Mettere tutto sotto la stessa radice:

7\sqrt{7}

2) Estrarre dalla radice più numeri possibili:

\sqrt{7^{3}}

3)  Unificare in un’unica radice:

\sqrt{\sqrt{7}}

La cosa fondamentale è pensare sempre a questa cosa:

come si è imparato che un numero può essere elevato alla potenza, tale potenza oltre che essere intera può essere razionale (frazione) oppure anche con la virgola ossia può esistere la seguente cosa:

7^{3} oppure 7^{\frac{1}{2}}

e VARRANNO SEMPRE LE STESSE REGOLE IMPARATE PER LE POTENZE OSSIA

a^{n}\cdot a^{m}=a^{n+m}

e

\left ( a^{n} \right )^{m}=a^{n\cdot m}

Il simbolo radice \sqrt{ }, a mio modesto parere, ha creato più confusione che chiarezza in quanto sembra quasi che si sia creato un argomento nuovo rispetto allo studio degli esponenziali: nulla di più sbagliato.

E’ stato Cartesio ad introdurlo per primo, siamo a metà del 1600, prima di lui si indicava con la lettera R la radice.

Si provi quindi ad imparare nuovamente il tutto come si faceva prima di Cartesio e si avrà un immediato giovamento!

\sqrt{7}=7^{\frac{1}{2}}

e generalizzando:

\sqrt[n]{7^{m}}=7^{\frac{m}{n}} ossia il numeratore dell’esponenziale rimane l’esponenziale del radicando, il denominatore è il grado della radice.

Purtroppo in occidente si è voluto imparare la matematica introducendo un simbolismo che va bene solo per la radice quadrata di un numero ipotizzando che l’operazione più comune fosse questa: in realtà in tutta l’analisi superiore tale fatto viene ampiamente sfatato!

Ma in conclusione come si sviluppano i tre problemi citati?

Problema 1:

7\sqrt{7}=7\cdot 7^{\frac{1}{2}}=7^{1+\frac{1}{2}}=7^{\frac{3}{2}}=\sqrt[2]{7^{3}}

Problema 2:

\sqrt{7^{3}}=7^{\frac{3}{2}}=7^{1+\frac{1}{2}}=7^{1}\cdot 7^{\frac{1}{2}}=7\cdot \sqrt{7}

Problema 3

\sqrt{\sqrt{7}}=\left ( 7^{\frac{1}{2}} \right )^{\frac{1}{2}}=7^{\frac{1}{4}}=\sqrt[4]{7}

 

Tutti i problemi innumerevoli che si danno alle superiori non sono altro che l’applicazione dei semplici tre problemi precedenti.

 

Pubblicato in Senza categoria | Lascia un commento

Primo programma in C++

[:it]

Jacek Jerka – Le quattro stagioni

Ecco il listato del primo programma in C++:

#include <iostream>

int main()
{
int i;
double g;
std::cout << “dammi un numero intero” << std::endl;
std::cin >> i;
std::cout << “ecco il numero intero inserito”<<i;
std::cout
return 0;
}

Il programma è all’interno di un blocco separato da parentesi graffe.

Ogni variabile usata deve essere dichiarata con il tipo più opportuno.

Nel caso specifico si nota che si sono definite due variabili una di tipo intero (int) ed una di tipo double (decimale).

Perchè questa pesantezza? Ogni variabile occupa un certo spazio di memoria ecco la relativa tabella:

int     numero intero di 2 o 4 byte

char     numero intero di 1 byte (interpretabile come codice ascii di un carattere)

float     numero in virgola mobile con 6-7 cifre significative (4 byte )

double     numero in virgola mobile con 15-16 cifre significative (8 byte )

bool     valore booleano: true o false (1 byte)

lo stesso programma può essere scritto nella seguente maniera:

#include <iostream>

using namespace std;

int main (int argc, char *argv[])
{
int i;
double g;
cout << “dammi un numero intero” << std::endl;
cin >> i;
cout << “ecco il numero intero inserito “<<i;
cout;
return 0;
}

si noti il comando

using namespace std; che permette di evitare std prima di ogni comando di input o di output.

Per creare il file eseguibile prima si compila e poi si chiede al compilatore di creare l’eseguibile stesso. Per poi eseguirlo effettivamente aprire un terminale da esegui\cmd, andare nella directory in cui si è salvato il file e quindi eseguirlo.[:en]

Jacek Jerka – Le quattro stagioni

Ecco il listato del primo programma in C++:

#include <iostream>

int main()
{
int i;
double g;
std::cout << “dammi un numero intero” << std::endl;
std::cin >> i;
std::cout << “ecco il numero intero inserito”<<i;
std::cout
return 0;
}

Il programma è all’interno di un blocco separato da parentesi graffe.

Ogni variabile usata deve essere dichiarata con il tipo più opportuno.

Nel caso specifico si nota che si sono definite due variabili una di tipo intero (int) ed una di tipo double (decimale).

Perchè questa pesantezza? Ogni variabile occupa un certo spazio di memoria ecco la relativa tabella:

int     numero intero di 2 o 4 byte

char     numero intero di 1 byte (interpretabile come codice ascii di un carattere)

float     numero in virgola mobile con 6-7 cifre significative (4 byte ) double     numero in virgola mobile con 15-16 cifre significative (8 byte ) bool     valore booleano: true o false (1 byte)

lo stesso programma può essere scritto nella seguente maniera:

#include <iostream>

using namespace std;

int main (int argc, char *argv[])
{
int i;
double g;
cout << “dammi un numero intero” << std::endl;
cin >> i;
cout << “ecco il numero intero inserito “<<i;
cout;
return 0;
}

si noti il comando

using namespace std; che permette di evitare std prima di ogni comando di input o di output.

Per creare il file eseguibile prima si compila e poi si chiede al compilatore di creare l’eseguibile stesso. Per poi eseguirlo effettivamente aprire un terminale da esegui\cmd, andare nella directory in cui si è salvato il file e quindi eseguirlo.

 

 

 

 

 [:de]

Jacek Jerka – Le quattro stagioni

Ecco il listato del primo programma in C++:

#include <iostream>

int main()
{
int i;
double g;
std::cout << “dammi un numero intero” << std::endl;
std::cin >> i;
std::cout << “ecco il numero intero inserito”<<i;
std::cout
return 0;
}

Il programma è all’interno di un blocco separato da parentesi graffe.

Ogni variabile usata deve essere dichiarata con il tipo più opportuno.

Nel caso specifico si nota che si sono definite due variabili una di tipo intero (int) ed una di tipo double (decimale).

Perchè questa pesantezza? Ogni variabile occupa un certo spazio di memoria ecco la relativa tabella:

int     numero intero di 2 o 4 byte

char     numero intero di 1 byte (interpretabile come codice ascii di un carattere)

float     numero in virgola mobile con 6-7 cifre significative (4 byte ) double     numero in virgola mobile con 15-16 cifre significative (8 byte ) bool     valore booleano: true o false (1 byte)

lo stesso programma può essere scritto nella seguente maniera:

#include <iostream>

using namespace std;

int main (int argc, char *argv[])
{
int i;
double g;
cout << “dammi un numero intero” << std::endl;
cin >> i;
cout << “ecco il numero intero inserito “<<i;
cout;
return 0;
}

si noti il comando

using namespace std; che permette di evitare std prima di ogni comando di input o di output.

Per creare il file eseguibile prima si compila e poi si chiede al compilatore di creare l’eseguibile stesso. Per poi eseguirlo effettivamente aprire un terminale da esegui\cmd, andare nella directory in cui si è salvato il file e quindi eseguirlo.

 

 

 

 

 [:]

Pubblicato in Senza categoria | Lascia un commento

Verifichiamo le nostre basi

Renè Magritte – Souvenir –

Creare nella cartella scambio una cartella con il proprio nome e cognome. All’interno di essa posizionare i programmi sviluppati salvandoli sempre con la seguente nomenclature: cognome_nome_gruppoX_esY.py dove con X si intende il gruppo ed Y il numero del relativo programma. Ad esempio Rossi_Giocchino_gruppoB_es3.py Ricordarsi di inserire l’opportuna intestazione ad ogni programma. Ricordarsi di dare le giuste autorizzazioni in lettura e scrittura altrimenti  non potrà essere corretto l’elaborato composto.

Gruppo A.

1- Emettere a video il seguente messaggio: “buona giornata da parte di nome cognome” con nome e cognome il proprio.

2- Chiedere a video che un utente inserisca un numero e stamparlo successivamente a video emettendo il seguente messaggio: ” il numero immesso è: x” con x il relativo numero.

3- Chiedere a video un numero e verificare che questo sia maggiore  di 4 se lo è, emettere il messaggio “il numero è maggiore di 4” altrimenti emettere il messaggio “il numero è minore di 4”

4- Emettere a video per 4 volte il messaggio “Ciao ” usando un ciclo while

5- Emetter a video per 7 volte il messaggio “salve” usando un ciclo for

6- calcolare la lunghezza della circonferenza dato il raggio richiesto dall’utente. Effettuare tutte le verifiche del dato immesso.

7- Creare un menù attraverso il quale l’utente possa calcolare il volume di un cubo o di un parallelepipedo o di una piramide. Tale menù deve comparire all’inizio ed alla fine delle operazioni richieste finchè l’utente non sceglie l’opzione zero che significa fine programma. Impostare opportunamente le domande per il calcolo del volume del relativo solido.

Gruppo B.

1- Emettere a video il seguente messaggio: “buongiorno da parte di nome cognome” con nome e cognome il proprio.

2- Chiedere a video che un utente inserisca un numero e stamparlo successivamente a video emettendo il seguente messaggio: ” il numero immesso è: x” con x il relativo numero.

3- Chiedere a video un numero e verificare che questo sia minore di 15 se lo è, emettere il messaggio “il numero è minore di 15” altrimenti emettere il messaggio “il numero è maggiore di 15”

4- Emettere a video per 7 volte il messaggio “Buonasera ” usando un ciclo while

5- Emetter a video per 20 volte il messaggio “Ave” usando un ciclo for

6- calcolare il perimetro di un trapezio isoscele. Effettuare tutte le verifiche dei dati immesso.

7- Creare un menù attraverso il quale l’utente possa calcolare il volume di un cubo o di un parallelepipedo o di una sfera. Tale menù deve comparire all’inizio ed alla fine delle operazioni richieste finchè l’utente non sceglie l’opzione zero che significa fine programma. Impostare opportunamente le domande per il calcolo del volume del relativo solido.

Gruppo C.

1- Emettere a video il seguente messaggio: “buonasera da parte di nome cognome” con nome e cognome il proprio.

2- Chiedere a video che un utente inserisca un numero e stamparlo successivamente a video emettendo il seguente messaggio: ” il numero immesso è: x” con x il relativo numero.

3- Chiedere a video un numero e verificare che questo sia uguale a 20 se lo è, emettere il messaggio “il numero è uguale a 20” altrimenti emettere il messaggio “il numero non è uguale a 20”

4- Emettere a video per 2 volte il messaggio “Good morning ” usando un ciclo while

5- Emetter a video per 20 volte il messaggio “Good night” usando un ciclo for

6- calcolare il perimetro di un triangolo isoscele. Effettuare tutte le verifiche dei dati immesso.

7- Creare un menù attraverso il quale l’utente possa calcolare il volume di un cubo o di un parallelepipedo o di una piramide a base quadrata. Tale menù deve comparire all’inizio ed alla fine delle operazioni richieste finchè l’utente non sceglie l’opzione zero che significa fine programma. Impostare opportunamente le domande per il calcolo del volume del relativo solido.

Pubblicato in Senza categoria | Lascia un commento

Compilatore C++

Renè Magritte – “arte della conversazione”- 1950

Per scaricare l’ambiente di sviluppo per programmare in C++ ed il relativo compilatore consiglio il seguente sito:

http://www.sitoserio.it/cpp/compilatori.htm

da tale sito poi si può scegliere poi il compilatore per il sistema operativo installato.

Si noti che in ambiente linux il compilatore è già presente nella distribuzione che si ha ma comunque si può scegliere un idle diverso a seconda delle proprie esigenze e gusti personali.

Personalmente ho testato ed è funzionante:

devcpp-4.9.9.2_setup

su windows xp a 32 bit.

Se altri hanno testato altre versioni vi prego di segnalarmelo nei commenti, grazie.

 

 

 

 

 

Pubblicato in Senza categoria | Lascia un commento

Indice di programmazione C++

[:it]0. Introduzione al C++

1. Documentazione e download programma

2. primo programma: cin; cout; main

3. Istruzione IF

4. Ciclo FOR

5.

6.

7.

8.

9.

10.

11.

12.

 [:en]0. Introduzione al C++

1. Documentazione e download programma

2. primo programma: cin; cout; main

3. Istruzione IF

4. Ciclo FOR[:de]0. Introduzione al C++

1. Documentazione e download programma

2. primo programma: cin; cout; main

3. Istruzione IF

4. Ciclo FOR[:]

Pubblicato in Senza categoria | Lascia un commento

Ancora sulla ricorsione

Guglielmo Sansoni detto Tato

Sviluppare in un qualunque linguaggio che si conosca i seguenti esercizi sulla ricorsione.

1 – Scrivere un programma che chiede all’utente di inserire un numero. Il programma stamperà a video un quadrato formato da un lato di dimensione pari al numero richiesto.

2- Scrivere un programma che chieda all’utente un numero intero. L’output sarà una lista dei suoi multipli positivi finchè questo non superi il 1000.

3. Scrivere un programma che una volta chiesto all’utente tre numeri interi stampi a video un istogramma orizzontale con le barre dell’istogramma stesso formato dai numeri immessi.

4. Scrivere un programma che una volta richiesta una parola la converta solo le vocali in lettere maiuscole.

5. Elaborare un programma che calcoli il fattoriale. Dovrà richiedere un numero intero in input. Per fattoriale si intende la seguente operazione n!=n(n-1)(n-2)(n-3) finchè il binomio è positivo e diverso da zero

Pubblicato in Senza categoria | Lascia un commento