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

Foglio di calcolo

Renè Magritte

Con foglio di calcolo intendo:

  • exel
  • libreoffice Calc

Tali due programmi nascono per elaborare campi valorizzati con valori numerici per favorire l’elaborazione di formule o calcoli statistici o anche semplici calcoli numerici.

Ogni icona presente sulla barra del menù effettua delle opportune operazioni sui campi che da questo momento in poi verranno chiamate celle; le stesse operazioni possono essere fatte mediante i comandi presenti sulla barra dei menù.

Scorrendo con il mouse all’interno delle celle si nota immediatamente come il riferimento ad esse si ha mediante la coppia lettera-numero.

Per inserire un numero o una parola è sufficiente, dopo aver puntato su un’opportuna cella digitarla e comparirà anche nella riga di digitazione.

Fondamentale:

Per inserire una formula che fa riferimento ad altre due valori presenti in altre due celle si deve inserire prima il simbolo di =

Pubblicato in Senza categoria | Lascia un commento

Esercizio sulla ricorsione

Renè Magritte

Questo esercizio serve per rafforzare il concetto di ricorsione.

Per capire il suo funzionamento e cosa fa si ordinino opportunamente le linee di codice incolonnandole nella maniera opportuna:

print x

else:

x= 1.0*(x+a/x)/2

print “differenza: “,diff

i=n

n=n+1

x=1

diff=x2-x

while i<n:

x2=1

app=input(“approssimazione: “)

x1=0

if diff<app and diff>0:

n=1

x2=x1

x1=x

i=0

a  = input(“inserisci il radicando “)

i=i+1

 

 

 

Pubblicato in Senza categoria | Lascia un commento