Il linguaggio SQL

George Seraut

Con l’acronimo SQL (Structured Query Language) è un sottolinguaggio nato per accedere, gestire un database.

Esso viene utilizzato:

  • creare o modificare la struttura di un database, ad esempio creare una table (tabella) oppure cancellarla, creare un dataspace (DDL: data definition language)
  • interrogare un database (DQL: data query language)
  • inserire o cancellare record di un database (DML: data manipulation language).

L’SQL nasce nel 1970 con l’articolo “A relational model for large shared data banks” di E.F.Codd. Da quel giorno vari ingegneri ed informatici lo perfezionarono fino ad arrivare ad uno standard necessario affinché tutti i RDBMS lo passano usare.

La cosa sembra banale ma si pensi ad esempio ai semplici carica cellulari, ogni azienda ne ha adottato uno diverso in maniera da tenere legato a sè il cliente, ovviamente contro ogni logica di libero mercato o libera scelta: ma anche questo da parte del gioco.

Nel campo informatico la cosa si è particolarmente sentita proprio perché il numero di utenti esperti è comunque limitato rispetto ad un mercato di operatori di cellulari!

Ho affermato che SQL è un sub linguaggio perchè non contiene i comandi IF, THEN, ELSE, WHILE, FOR.

 

Pubblicato in Senza categoria | Contrassegnato | Lascia un commento

Pittori

Salvador Dalì

In ogni post che ho creato ho inserito un’immagine di un quadro. Vi sono autori quali Janek Yerka, Robert Delaunay, Giacomo Balla, Renè Magritte, Salvador Dalì. Lo scopo è quello di associare un’immagine ad un argomento proprio per identificare anche dal punto di vista visivo il concetto che si tenta di declinare.

Salvador Dalì, “La persistenza della memoria”

Salvador Dalì nasce nel 1904 e mure nel 1989; è un pittore surrealista spagnolo che si forma a Madrid seguendo il cubismo inizialmente per poi definitivamente assestarsi nella ricerca del surreale. Una dimensione onirica in cui trova il suo equilibrio e non sempre l’apprezzamento dei suoi coetanei. L sua opera più conosciuta è “La persistenza della memoria” del 1931 ed attualmente conservato nel museo d’arte moderna di New York.

Giacomo Balla è un artista italiano nasce nel 1871 e muore nel 1958. Inizialmente divisionista come Pellizza da Volpedo o Giovanni Segantini sfocia successivamente nel futurismo ed assieme a Marinetti ne diventa uno dei maggiori esponenti. Nel 1909 quando

Giacomo Balla – 1923 – Pessimismo e Optimismo

Filippo Tommaso Marinetti pubblico il “Manifesto futurista” , egli assieme a Boccioni, Carrà e Russolo ne adirono con convinzione. Ciò che esprime Argan in questo estratto è l’immagine di Balla:

« Balla che sul tema del dinamismo meditava già da alcuni anni (il famoso Cane al guinzaglio è del 1912), va al di là di Boccioni: prescinde quasi totalmente dall’immagine visiva per dare l’immagine psicologica del moto.La sua ricerca è prevalentemente linguistica: mira a stabilire un codice di segni significanti velocità, dinamismo ecc. Sono concetti che interessano intensamente l’uomo moderno: concetti che vogliono essere espressi visivamente perché la percezione è più rapida della parola, e che non possono essere espressi tramite segni che implichino riferimenti alla natura, perché debbono esprimere qualcosa di naturale, di realizzato mediante congegni meccanici. » (G. C. Argan, L’arte moderna, 1970)

 

 

Pubblicato in Senza categoria | Contrassegnato , | Lascia un commento

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