[:it]C++: ciclo do …while[:]

[:it]

Ivan Slavinsky

La struttura di ripetizione si presenta con la forma do…while

do {
cout < “il mese: “;
cin>>mese;
} while (mese <1 || mese >12}

solo quando il mese digitato è compreso tra 1 e 12 l’esecuzione del programma procede con l’istruzione successiva while

RIPETIZIONE PRECONDIZIONALE

Nel lingiaggio C++ la ripetizione precondizionale, si presenta con l’istruzione while:

while(condizione) {
istruzioni;
}

mentre la condizione si mantiene vera, viene eseguita la sequenza di istruzioni (racchiuse tra le parentesi graffe)

Per esempio se si vuole far entrare da tastiera un elenco di numeri, segnando la fine dell’elenco con il numero 0, si può utilizzare il seguente pezzo di codice:

int numero;

cout << “inserire un numero (0=fine): “;

cin>>numero;

while(numero!=0)
{
..
}
cout<<“Inserire un numero (0=fine): “;
cin>> numero;
}[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Java: inserimento dati da tastiera[:]

[:it]

Ivan Slavinsky

In Java l’immissione di un dato avviene tramite la gestione di una stringa di dati in input.

Nell’esempio che segue il dato immesso viene convertito da stringa di caratteri ad intero.

/**
* semplice esempio per il casting eplicito
* @author Francesco Bragadin
* @version 1.0
*/

import java.io.InputStreamReader;
import java.io.BufferedReader ;
import java.io.IOException;

public class rettangolo {
public static void main(String[] args) {

double base, altezza,area;
/**
* legge da tastiera il tipo di dato
*/
System.out.println(“inseirsci il valore della base del rettangolo”);
base =0;
   BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
     try {
       base = Double.parseDouble(input.readLine());
         }
         catch (Exception e) {
         e.printStackTrace();
        }
System.out.println(“inseirsci il valore dell’altezza del rettangolo”);
altezza=0;
BufferedReader input1 = new BufferedReader(new InputStreamReader(System.in));
try {
altezza = Integer.parseInt(input1.readLine());
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println(“Area risulta”);
area=base*altezza;
System.out.println(area);
}
}

 

 

L’istruzione fondamentale per immettere un dato è quindi:

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

che è una semplice istruzione di inizializzazione dell’oggetto input nella classe BufferReader.

Andando più avanti nella programmazione si nota che il comando

new ha il compito di inizializzare un oggetto con un opportuno valore.

Ad esempio:

Triangolo t= new Triangolo(p1,p2,p3);

la variabile t che è di tipo triangolo viene inizializzata con i tre valori dei vertici del triangolo stesso.

Poi il comando:

base = Double.parseDouble(input.readLine());

la variabile input1.readLine() viene passata alla funzione Double.parseDouble che effettua l’operazione da char a Double (in questo caso).

Il comando:

catch (Exception e) {
         e.printStackTrace();

questo comando invece gestisce gli errori, ad esempio invece che inserire un dato si dà direttamente l’invio, e compare il seguente messaggio:

java.lang.NumberFormatException: empty String
inseirsci il valore dell’altezza del rettangolo
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at rettangolo.main(rettangolo.java:24)

 

 [:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Java: Ereditarietà delle classi[:]

[:it]

Pierre Marcel

Un concetto fondamentale dell’OOD/OOP è quello dell’ereditarietà: utilizzando questo meccanismo è infatti possibile in un linguaggio OO creare nuovi classi a partire da classi già esistenti ereditandone le caratteristiche (attributi o metodi), aggiungendone di nuove o ridefinendone alcune. L’ereditarietà è finalizzata alla creazione di gerarchie di classi e grazie a essa si estende la possibilità di riutilizzare componenti comuni a più classi della stessa gerarchia.

Questi due pgm Java sono all’interno del package geometria e la prima definisce le caratteristiche di un punto mentre l’altro pgm triangolo utilizza gli attributi e i metodi della classe punto.

public class Punto {
             private double x;
             private double y;

public Punto(double x, double y)
{
   setX(x);
   setY(y);
}

public Punto(Punto p) {
        x=p.getX();
        y=p.getY();
}

public void setX(double x) {this.x=x;}
public void setY(double y) {this.y=y;}
public double getX() {return x;}
public double getY() {return y;}

public double distanza(Punto p) {
         double dx=x-p.getX();
        double dy=y-p.getY();
   return Math.sqrt((dx*dx)+(dy*dy));
}

public boolean equals(Punto p) {
return ((x==p.x)&&(y==p.y));
}

public String toString() {return “(“+x+”;”+y+”)”;}

public static void main(String[] args) {
         Punto p1=new Punto(1.,1.);
         System.out.println(“P1=”+p1.toString());
}
}

public class Triangolo {
private Punto a;
private Punto b;
private Punto c;
public Triangolo (Punto a, Punto b, Punto c) {
this.a=a;
this.b=b;
this.c=c;
}
public String toString() {
return “A”+a.toString()+” B”+b.toString()+” C”+c.toString();}
public static void main(String[] args) {
Punto p1= new Punto(1.,1.);
Punto p2=new Punto(3.,5.);
Punto p3=new Punto(5.0,7.9);
System.out.println(“P1=”+p1.toString());
System.out.println(“P2=”+p2.toString());
Triangolo t= new Triangolo(p1,p2,p3);
System.out.println(“Triangolo “+t.toString());

}
}

 

Almeno la classe principale del programma deve avere un metodo main da cui avrà inizio l’esecuzione. Ma una buona pratica di programmazione prevede di dotare ogni singola classe sviluppata di un metodo main che esegua un test dei metodi della classe, indipendentemente dal contesto di utilizzazione finale; senza sostituire la necessaria documentazione della classe, il metodo main costituisce anche un esempio di invocazione dei metodi per gli sviluppatori che devono utilizzare la classe nei programmi.

 [:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Java: primo programma[:]

[:it]Il primo programma Java è inevitabilmente lo stampare il classico messaggio:

Hello word

Ripoterò qui e poi basta, per non generare confusione, il confronto tra il programma scritto in C++ e in Java

C++ Java
# include<iostream>
using namespace std;
int main(){
            cout<<“Hello word”;
                }
public class primoprogramma {

public static void main(String[] args) {
System.out.println(“Hello word”);
}

}

Si nota immediatamente che la sintassi utilizzata da Java potrebbe essere molto più complicata ad un primo approccio.

Vedo di analizzare riga per riga il programma Java.

  • Il nome della classe è il nome dello stesso file con estensione.java
  • un programma Java è costituito da un insieme di classi la cui dichiarazione inizia con la parola riservata class, seguita dal nome della classe, in questo caso primoprogramma.
  • questa classe contiene un solo metodo (funzione o operazione) denominato main.

il metodo iniziale è il metodo main che ha SEMPRE la forma:

public static main (String[] args);

Esso

  • è pubblico (public), ovvero visibile da ogni punto del codice;
  • è statico (static), è invocabile (si può eseguire) indipendentemente dall’esistenza di oggetti istanza della classe
  • non restituisce nulla (void)
  • gli eventuali parametri in input forniti dall’utente sulla riga di comando costituiscono un vettore di stringhe.

Da notare che ogni classe di un programma Java può avere un suo metodo main, in ogni caso l’esecuzione del programma ha inizio con l’invocazione del metodo main di una classe specificata come “classe principale” main class.

Approfondimenti tecnici

La JVM (ambiente di esecuzione dei programmi Java) è logicamente costituita dai seguenti componenti logici:

  • un insieme di istruzioni (bytecode)
  • un insieme di registri;
  • un’area di memoria per l’esecuzione dei metodi (stack);
  • un’area di memoria per l’allocazione degli oggetti (heap) su cui opera lo strumento automatico di istruzione degli oggetti inutilizzati (garbage collector);
  • un’area per la memorizzazione dei metodi.

Le strutture di controllo del flusso di esecuzione sono le stesse del lingaggio C++

  • if-else
  • switch-case
  • do while
  • for

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Java: ambiente di sviluppo[:]

[:it]Uno degli ambienti di sviluppo per Java è sicuramente eclipse

https://www.eclipse.org/downloads/

Una vota installato, bisogna evidenziare una cosa fondamentale dell’ambiente Java ossia che una cosa è il package ed una cosa il programma.

Bisogna allontanarsi dal concetto di compilazione classico che si è utilizzato ad esempio in C++ che crea alla fine un file eseguibile. Nel caso della programmazione Java durante la digitazione l’IDLE Eclipse consente subito di evidenziare problema inoltre i vari pezzi del programma che si chiameranno classe sono posti all’interno di una libreria a package.

Appena si apre il programma si deve creare il package (contenitore) ed ad esso si può dare il nome che si vuole.

A questo punto si deve creare  il primo programma ed una volta dato il nome esso

DOVRA’ ESSERE UGUALE ALLA CLASSE che conterrà le istruzioni del programma.

Ancora un progamma Java è formato da tante classi che stanno all’interno di uno o più package.

Per creare il nuovo programma di deve creare non tanto il nuovo file ma la nuova classe che sarà all’interno del package precedentemente creato. Quindi si va su File/New/Classe e si dà un nome che corrisponderà alla classe.

Al termine l’IDE si presenterà così:

 [:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: crittografia per la sicurezza dei dati: cifrario a sostiuzione/ trasposizione[:]

[:it]

Pierre Marcel

L’e-business ha la necessità che ogni operazione avvenga in maniera sicura. In maniera analoga con l’avvento dei servizi in cloud, non è possibile che i dati che vengono trasmessi nella rete possano essere letti da persone diverse dal destinatario.

Per questo motivo è nata l’esigenza di rendere visibili i dati solo alla persone a cui stati indirizzati: tale processo si chiama crittografia.

Il messaggio che può essere letto da tutti si chiama testo in chiaro. Tramite i metodi di cifratura (codifica) si trasforma il testo in chiaro in un testo cifrato in cui l’informazione viene codificata e resa illeggibile. L’operazione inversa, chiamata decifrazione (decodifica), serve per ricostruire il testo in chiaro a partire dal testo cifrato.

Per cifrare e decifrare un messaggio di utilizzano opportuni algoritmi.

Cifrario a sostituzione

E’ il cifrario più antico e più facile da decodificare pur non conoscendo la chiave. Si racconta che esso venne usato da Giulio Cesare per informare i propri centurioni delle operazioni belliche.

Esso consiste nel sostituire la lettera del messaggio con la lettera posta alla n-esima posizione successiva. La n-esima posizione è chiamata chiave.

Ad esempio:

la seguente tabella evidenzia la posizione delle lettere dell’alfabeto che ci serve poi nella codifica utilizzando la chiave.

0 1 2 3 4 5 6 7 8 9
A B C D E F G H I L
10 11 12 13 14 15 16 17 18 19
M N O P Q R S T U V
20
Z

Uso la chiave 4, la tabella precedente diventa

0 1 2 3 4 5 6 7 8 9
E F G H I L M N O P
10 11 12 13 14 15 16 17 18 19
Q R S T U V Z A B C
20
D

Si noti che per voler implementare in programmazione l’algoritmo della crittografia a sostituzione si indica lo 0 come prima lettera.

L’alfabeto è formato da 21 lettere.

Si usa l’algebra modulare per effettuare la crittografia del messaggio.

Il calcolo che si deve effettuare è sempre il seguente:

(i+k) mod 21 = n

i  posizione della lettera da cifrare

k valore chiave

n posizione della lettera

Se adesso voglio mandare il messaggio:

CIAO usando chiave 4 il messaggio nel trasportato sarà:

GOES

in questo caso sia il mittente che il destinatario devono conoscere la chiave di decodifica.

Cifrario a trasposizione

In crittografia un cifrario a trasposizione è un metodo di cifratura in cui le posizioni occupate dalle unità di testo in chiaro (che in genere sono lettere o gruppi di esse) sono cambiate secondo un determinato schema, così che il testo cifrato costituisca una permutazione del testo in chiaro.

In pratica il messaggio viene spezzato ed incolonnato secondo la lunghezza di una parola chiave. Un esempio è dato dal cifrario a

trasposizione colonnare

Si deve mandare il messaggio: ACQUISTARE TITOLI FAC

Si usa la parola CIAO come chiave:

2 3 1 4
C I A O
A C Q U
I S T A
R E T I
T O L I
F A C  Z

Si invia questo messaggio:

(Si noti che si è inserita una lettera fasulla per riempire esattamente tutti gli spazi)

QTTLCAIRTFCSEOAUAIIZ

ossia si manda il messaggio per colonne che sono ordinate seguendo l’ordine alfabetico delle lettere che compongono la parola chiave.

Per decifrarlo si contano il numero di lettere, in questo caso 19, si divide per il numero delle lettere che compongono la parola chiave, in questo caso 4. E si divide in maniera opportuna il messaggio.

20:4=5 e non si tiene conto del resto.

Divido il messaggio in blocchi di 4

QTTLC AIRTF CSEOA UAIIZ

conoscendo la parola CIAO e sapendo che:

blocco 1  –> lettera A

blocco 2–> lettera C

blocco 3–> lettera I

blocco 4–> lettera O

metto in colonna i singoli bocchi ed ho il messaggio inviato.

Anche in questo caso il mittente ed il destinatario devono conoscere la chiave.

Vi sono altri tipi di cifrari a trasposizione:

  • a staccionata
  • a percorso usata durante la guerra di secessione americana
  • a trasposizione doppia usata durante la prima guerra mondiale dai tedeschi ma violato dai francesi, usato anche durante la seconda guerra mondiale dalla resistenza olandese e francese e dai gruppi di sabotatori inglesi. Furono usati moltissimo prima dell’avvento di un nuovo cifrario chiamato VIC.
  • a trasposizione Myszkowski
  • a trasposizione disturbata
  • a griglia

[:]

P.S. Ecco un esempio molto schematico di realizzazione del cifrario di Cesare implementato in C++:



Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: I servizi finanziari in rete[:]

[:it]

Pierre Marcel

Una banca offre due tipi di servizi:

  • home banking: visione del conto corrente, bonifici on line, lista dei movimenti
  • trading on line: acquisto titoli e vendita titoli

Più in dettaglio, i servizi in rete offrono le seguenti opportunità:
• disporre bonifici su conti della banca stessa o di altre banche;
• richiedere informazioni sul proprio conto corrente (saldo, movimenti, situazione assegni, disponibilità,
condizioni applicate);
• effettuare pagamenti rateali, conferme d’ordine e utenze domestiche (elettricità e gas);
• trasferire su computer tutti i movimenti del proprio conto corrente;
• seguire in ogni momento l’andamento delle principali divise e dei tassi interbancari;
• memorizzare i dati dei bonifici ricorrenti per riutilizzarli successivamente;
• stampare i promemoria di tutte le operazioni effettuate con il servizio di home banking;
• ricercare i codici e i dati di tutte le filiali della banca;
• comprare, vendere e conoscere la quotazione aggiornata di azioni, fondi e obbligazioni;
• essere aggiornato sulla situazione del proprio deposito titoli e verificare i movimenti effettuati;
• effettuare ricerche di titoli obbligazionari con determinate caratteristiche;
• ricercare i codici delle azioni quotate.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: il commercio elettronico[:]

[:it]

Ivan Slavinsky

Con i termini e-commerce (electronic commerce) ed e-business (electronic business), si intendono tutte quelle attività che permettono sia l’acquisto di beni e servizi on line sia la vendita o l’offerta diretta tra aziende di fornitura di beni.

Tale opportunità ha una valenza enorme per quanto riguarda la possibilità di creare uno scambio mondiale di ogni tipo di cosa, da corsi on line, alla vendita di beni di ogni genere.

Si definiscono due tipi di commercio:

B2C Business for Commerce, commercio tra imprese e consumatori–> negozio virtuale (vendita di libri e dischi musicali, software direttamente scaricabili dalla rete e installabili mediante una codice di attivazione, voli aerei e soggiorni, computer, telefoni cellulari e, in generale, prodotti elettronici.) Siti maggiormente conosciuti sono: www.amazon.com, www.ebay.com)

Perché questo tipo di commercio ha avuto una così grande espansione?

• diminuzione dei costi generali;
• riduzione dei tempi del ciclo di vendita (richiesta – vendita – consegna), con conseguente certezza
sui pagamenti e rientro del capitale circolante;
• rapidità di risposta alle esigenze del cliente;
• minima esposizione economica e basso rischio di impresa;
• incremento dei servizi e miglioramento della qualità, anche attraverso un maggiore feedback;
• generazione di nuovi canali di vendita e presenza su nuovi mercati;
• possibilità di costruire profili dei clienti e di analizzare i loro comportamenti;
• analisi statistiche disponibili in tempi brevi.

B2B Business for Business, commercio tra imprese, tra fornitori

Il commercio elettronico tra azienda e azienda (business to business) risponde a due importanti obiettivi:
• la diminuzione dei costi di gestione;
• la diminuzione dei tempi di approvvigionamento.

L’acquisto on line permette un confronto continuo tra i costi di una stessa merce.

Ma non tutto ciò che è oro luccica!

Se un’azienda ha la necessità di acquistare un prodotto presso un altro fornitore, inevitabilmente avrà la necessità di contattare il fornitore stesso per acquisti ingenti, in pratica il sito web fa da vetrina virtuale più che da vero mercato on line.

L’insieme di tecnologie, procedure e operazioni che consentono alle aziende di acquisire beni e servizi tramite le tecnologie delle reti e di Internet viene detto: e-procurement

Sintesi per aprire un sito di e-commerce

  1. Adempimenti fiscali

Il primo passo da compiere se si vuole aprire un negozio virtuale è quello di aprire la Partita Iva. Se prevediamo di non fatturare più di 5.000 Euro l’anno possiamo anche non aprire la posizione fiscale.

2. Comunicazioni dell’indirizzo web all’Agenzia delle Entrate

Una volta compiuto l’iter per l’apertura della posizione fiscale come descritto nel paragrafo precedente, l’imprenditore dovrà comunicare all’Agenzia delle Entrate l’indirizzo dell’attività, che nel caso di un e-commerce sarà l’indirizzo web. È necessario, inoltre, inviare i numeri di telefono, di fax e di posta elettronica. Gli imprenditori che vogliono rivolgersi anche al mercato internazionale e vendere i propri prodotti all’estero, devono inoltre iscriversi alla Banca dati VIES (Vat Information Exchange System).
Sempre in ambito di comunicazioni, chi vuole aprire un negozio online deve sapere che la regola numero uno è la trasparenza. Per questo motivo è buona norma comunicare in maniera chiara nella home page del sito nome e ragione sociale, indirizzo sia fisico che elettronico, Partita Iva e numero di iscrizione al Registro delle Imprese. in questo modo si avrà anche la certezza di comunicare all’esterno una immagine di solidità e sicurezza.

3. Diritto di recesso dei consumatori

Con il proliferare dei siti e-commerce si è reso indispensabile definire regole e norme che tutelino i consumatori che comprano online. È così che è stata introdotta la  direttiva UE 2011/83 sui diritti dei consumatori. Alcuni dei punti importanti di questa direttiva riguardano la possibilità da parte degli acquirenti di esercitare il diritto di recesso della merce comprata entro 14 giorni dalla sua ricezione qualsiasi sia il motivo della restituzione.
Inoltre, è importante anche comunicare e rendere visibile tutta l’informativa sulla privacy circa i dati che l’utente lascia durante la procedura di acquisto, dando la possibilità di poterli cancellare in qualsiasi momento.

4. Normativa su cookies

Da giugno dello scorso anno, infine, il Garante ha definito la normativa sui cookie e sul loro consenso. In pratica ogni e-commerce (e sito internet in generale) deve trasmettere all’utente che vengono memorizzati i dati di navigazione a scopo di profilazione e deve dare la possibilità a tutti di acconsentire o meno. Per assolvere a questo obbligo l’imprenditore deve rendere visibile in ogni pagine del proprio e-commerce:

•    L’intera normativa sui cookie in una pagina dedicata;
•    L’informazione che il sito utilizza i cookie allo scopo di inviare comunicazioni commerciali e pubblicitarie;
•    La possibilità di accettare o meno questa pratica.

 

 

 

 

 

 [:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: le applicazioni aziendali nel cloud computing[:]

[:it]

Ivan Slavinsky

Il cloud computing è un insieme di servizi utilizzabili attraverso la rete internet.

Tutte le aziende che offrono servizi sulla rete, ad esempio il salvataggio dei dati, utilizzazione di software solo in rete vengono denominate CSP (Cloud Service Provider).

Si possono vedere due grandi vantaggi nell’acquisto di servizi on line:

  • scalabilità nell’offerta ad esempio, acquisto di una spazio di memoria inizialmente limitato e poi a seconda delle esigenze aziendali, più o meno grande.
  • assenza di manutenzione del software in quanto esso è demandato all’azienda che offre il servizio

Inoltre la scalabilità dell’offerta consente una gestione ottimale delle risorse hardware. Tutti i servizi e le applicazioni che un’azienda può utilizzare vengono chiamate SaaS (Software as a Service).

Un altro vantaggio è la sicurezza:

  • l’azienda che offre i servizi on line è la stessa che garantisce l’accesso e il mantenimento riservato dei dati. E’ un grande risparmio da parte dell’azienda, quella di non dover investire personale nella gestione del database aziendale, della sicurezza dei dati digitali in quanto tale gestione è totalmente centralizzata nell’azienda che offre il servizio.

Si hanno due tipi di visuale:

  • quella privata, in cui un’azienda chiede dei servizi ed un’intera piattaforma le viene fornita (cloud privata)
  • quella pubblica in cui un provider mette a disposizione di un’intera rete spazi e servizi a varie aziende (cloud pubblica)

I servizi cloud sono generalmente a pagamento con tariffe determinate dall’effettivo utilizzo delle applicazioni, oltre che dal numero di utenti aziendali che accedono alla cloud.

I vantaggi più rilevanti per gli utenti di aziende ed enti sono:
• utilizzo di software e applicazioni senza la necessità di installazione e aggiornamento sui propri computer;
• possibilità di accesso ai servizi da qualsiasi luogo anche attraverso dispositivi mobili;
• maggiori opportunità di lavoro collaborativo e di condivisione delle informazioni all’interno dell’azienda[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: I servizi delle reti Intranet ed Extranet, ASP[:]

[:it]

Stefan Ambs

Intranet è una rete che usa tutti i protocolli usati in internet ma solo per la rete interna di un’azienda (Web, protocolli, TCP/IP, Browser, email).

L’idea di una intranet è quella di avere tanti Web Server, uno per ogni sede aziendale, e mettere a disposizione gli archivi (database) con i dati aziendali; ad esempio il quantitativo di merce in magazzino, i pacchi da smistare, le stesse email aziendali).

Se più sedi vogliono comunicare utilizzano la rete Internet, ma non tutti gli utente internet devono poter accedere ai dati riservati della rete Intranet. Questo concetto di utilizzo dei protocolli pubblici per comunicare ma solo alcuni utenti possono poi accedere sta alla base della rete Extranet.

Le aziende possono usare Extranet per:
• scambio di grandi volumi di documenti elettronici;
• distribuzione di cataloghi di prodotti riservati ai rappresentanti od operatori commerciali;
• erogazione di informazioni utili per i tecnici, autorizzati ed esterni all’azienda, nelle attività di
installazione o manutenzione dei prodotti;
• programmi di addestramento per il personale;
• accesso alle applicazioni fornite da altre aziende;
• collaborazione con altre aziende collegate per lo sviluppo di progetti;
• distribuzione di informazioni di interesse comune con aziende partner.

Non tutti i software possono poi essere sviluppati dalle singole aziende per cui si preferisce acquistare o utilizzare software prodotto da aziende esterne e sui cui server stanno fisicamente i software necessari.

A tal proposito si parla di ASP Application Service Provider.[:]

Pubblicato in Senza categoria | Lascia un commento