[:it]Python: indentazione[:]

[:it]

ivan slavinsky

Dopo aver introdotto l’IF e successivamente il FOR, per indentazione si intende la necessità di incolonnare in maniera corretta tutto ciò che è compreso nell’IF o nella ricorsone (For o while).

In pratica in Python tutto ciò che è posto sulla stessa colonna viene interpretato come all’interno di un unico blocco di comandi.

Ad esempio:

IF (a>b)
        print(“prima riga”)
         print (“seconda riga”)
print(“terza riga)

 

In questo brevissimo pezzo di codice, si nota come a video vengono scritte la prima e la seconda riga solo se a>b e comunque scrive anche l’ultima.

 

Questo pezzo di codice invece cosa fa?

IF (a>b)
        print(“prima riga”)
         print (“seconda riga”)
         print(“terza riga)

scrive le tre righe solo se a>b.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: Esercizi sulla ripetizione[:]

[:it]

Ivan Slavinsky

1. costruire un programma che accetta da tastiera dei numeri finchè viene inserito il valore 0; man mano li visualizza.

2. costruire un programma che accetta da tastiera dei caratteri e li conti. L’inserimento si interrompe quando il numero dei caratteri inseriti diventa 10;

3. dato un elenco di nomi con le rispettive città, conta quanti sono quelli di Milano;

4. dato un elenco di prodotti con i rispettivi prezzi, conta quanti sono quelli che hanno il prezzo superiore a 100€.

5. Dato un elenco di prodotti con descrizione e prezzo, calcolare l’incremento del prezzo secondo una percentuale fornita da tastiera. Comunicare per ciascun prodotto la descrizione ed il prezzo incrementato.

6. Calcolare il consumo medio di carburante di un elenco di veicoli utilizzando come dati di input i valori dei Km percorsi e dei litri di carburante per ciascun veicolo.

7. Riscrivere il seguente frammento di codice usando l’istruzione for

a=1;
while (a<=10) {
cout<<a<<endl;
a++;
}

8. Riscrivere il seguente frammento di codice utilizzando l’istruzione for

a=1
while(a<=10) a++
cout<<a<<endl;

9. costruire un programma che accetta da tastiera un elenco di N pezzi e li sommi. Alla fine fornisce il totale dei pezzi inseriti.

10. Dato un elenco di 20 studenti della prima classe della scuola superiore, con voto finale della scuola media, calcolare il valore medio dei voti.

11. Dati N studenti partecipanti ad una gara sportiva di velocità (nome studente, categoria, tempo) visualizzare il tempo dello studente vincitore (tempo minimo) tra gli studenti della categoria allievi.

12. Dati N modelli di cilomotori e motoclicli (nome del modello, cilindrata, prezzo), visualizzare il prezzo massimo tra i modelli di cilindrata superiore a 50 cc.[:]

Pubblicato in Senza categoria | Lascia un commento

[: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

TPSIT: crittografia per la sicurezza dei dati: cifrario a sostituzione/ trasposizione

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