[:it]Esercizi sull’ IF[:]

[:it]

Stefan Ambs

  1. scrivere in ordine crescente due numeri;
  2. se di un prodotto vengono acquistati 3 pezzi, si deve pagare l’importo pari a 2 pezzi. Per le quantità inferiori a 3 il prezzo resta invariato. Si ipotizza che il prodotto non venga acquistato in quantità maggiori di 3;
  3. su una somma di denaro si vuole applicare un’imposta progressiva secondo lo schema:
    1. da 0 a 5000€ imposta del 5%;
    2. sopra i 5000€ e fino ai 15.000€, imposta del 7%;
    3. oltre i 15.000€: imposta dell’8%;
  4. per la vendita di un prodotto si deve applicare uno sconto progressivo in base al numero dei pezzi ordinati secondo la tabella: (chiedere il prezzo del prodotto e il numero di pezzi acquistati)
Pezzi Sconto
fino a 3 5%
fino a 5 10%
fino a 10 20%
più di 10 30%

[:]

Pubblicato in Senza categoria | 2 commenti

[:it]C++: scelta multipla[:]

[:it]

Stefan Ambs

Se in C++ si ha la necessità di scrivere un codice di questo tipo:

#include<iostream>
using namespace std;
int main(){
      int n;
      cout<<“Dammi un numero intero per cortesia”;
     cin>>n;
        if (n==1)
             cout<<“numero 1”;
        else if (n==2)
             cout<<“numero 2”;
return 0;
}

Questa struttura si chiama ad IF nidificati.

 

diventa assolutamente una scrittura onerosa e poco ottimizzante in tempi di esecuzione.

Allora è stata creata una struttura a scelta multipla la cui sintassi è la seguente:

switch(variabile){
case valore1:
       istruzione;
      break;
case valoren:
     istruzione;
     break;
default:
     istruzione;
     break;
}

Lo stesso programma precedente può essere scritto come:

#include<iostream>
using namespace std;
int main(){
int n;
cout<<“Dammi un numero intero per cortesia”;
cin>>n;
switch(n){
case 1:
cout<<“numero 1”;
break;
case 2:
cout<<“numero 2”;
break;
default:
cout<<“non hai scrittp 2 o 1”;
break;
}
return 0;
}[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Python: operatori di relazione e logici[:]

[:it]Gli operatori di confronto  sono

== confronto se a è uguale a 5 allora …
> maggiore se 3 è maggiore di 7 allora…
< minore se 3 è minore di 7 allora…
<= minore uguale se 3 è minore o uguale a 7 allora…
>= maggiore uguale se 3 è maggiore o uguale a 7 allora…
!= diverso se 3 è diverso da 7 allora…

I connettivi logici sono

and and se a è uguale a 3 e b uguale a 7 allora…
or or se b è uguale 3 oppure è uguale a 7
! not se b non è 3

Gli operatori logici sono fondamentali ad esempio negli IF

se devo ad esempio implementare una condizione solo se entrambe sono soddisfatte allora uso l’and.

Se x<10 e x>6 allora sei sufficiente si deve scrivere in questa maniera:

 

n=16
if (n<10) or (n>6):
print(“Sei sufficiente”)

IMPORTANTE

Si è usato l’OR in quanto un valore non può essere entrambi ma può essere o minore di 10 o maggiore di sei![:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: operatori di relazione e logici[:]

[:it]Gli operatori di confronto  sono

== confronto se a è uguale a 5 allora …
> maggiore se 3 è maggiore di 7 allora…
< minore se 3 è minore di 7 allora…
<= minore uguale se 3 è minore o uguale a 7 allora…
>= maggiore uguale se 3 è maggiore o uguale a 7 allora…
!= diverso se 3 è diverso da 7 allora…

I connettivi logici sono

&& and se a è uguale a 3 e b uguale a 7 allora…
|| or se b è uguale 3 oppure è uguale a 7
! not se b non è 3

Gli operatori logici sono fondamentali ad esempio negli IF

se devo ad esempio implementare una condizione solo se entrambe sono soddisfatte allora uso l’and.

Se x<10 e x>6 allora sei sufficiente si deve scrivere in questa maniera:

#include<iostream>
using namespace std;

int main()
{
int n;
n=7;
if ((n<10) || (n>6))
   cout<<“Sei sufficiente”;

return 0;
}

 

IMPORTANTE

Si è usato l’OR in quanto un valore non può essere entrambi ma può essere o minore di 10 o maggiore di sei![:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Operatori logici, AND, OR, XOR[:]

[:it]

Stefan Ambs

Nella logica si introducono degli operatori che sono utilizzati sia in analisi matematica che nella programmazione.

Operatore AND può essere assimilato ad una moltiplicazione mentre l’OR ad una somma.

AND

La tabella della verità dell’AND è la seguente:

A B A \wedge B
V V V
V F F
F V F
F F F

oppure anche in questa maniera:

A B A \wedge B
1 1 1
1 0 0
0 1 0
0 0 0

Come si legge?

Se A è vero ed anche B allora A and B è vero

Se A è falso e B è vero allora A and B è falso

Se A è vero e B è falso allora A and B è falso

Se entrambi sono falsi allora A and B è falso.

Se lo si pensa nei termini di una moltiplicazione si ha:

1 * 1 =1

1*0=0

0*1=0

0*0=0

OR

La tabella della verità dell’OR è la seguente:

A B A \vee B
V V V
V F V
F V V
F F F

oppure anche in questa maniera:

A B A \vee B
1 1 1
1 0 1
0 1 1
0 0 0

Come si legge?

Se A è vero ed anche B allora A or B è vero

Se A è falso e B è vero allora A or B è vero

Se A è vero e B è falso allora A or B è vero

Se entrambi sono falsi allora A or B è falso.

Se lo si pensa nei termini di una somma si ha:

1 + 1 =1 (lo si pensi in binario)

1+0=0

0+1=0

0+0=0

La differenza tra OR e AND?

Vado al cinema solo se vengono Paolo e Mario (AND)

Vado al cinema se viene Paolo o Mario (OR)

XOR

Un altro operatore che si usa è l’operatore XOR nell’ambito dell’elettronica ma anche nell’ambito della crittografia.

Si utilizza la seguente tabella della verità:

A B A\oplus B
1 0 1
0 1 1
0 0 0
1 1 0

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Java: conversione dati immessi da tastiera[:]

[:it]

Nawroski

Java ha una gestione più complessa rispetto al C++ nella gestione dell’immissione dei dati da tastiera.

Inoltre tutti i dati vengono sempre gestiti inizialmente come stringhe e quindi successivamente convertiti nel dato più opportuno del programma.

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 la lunghezza del vettore
*/
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);
}
}

 

Questo programma ha numerosi punti di approfondimento:

altezza = Integer.parseInt(input1.readLine());

Esso converte una stringa in un intero.

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

converte una stringa in double

Altri tipi di casting sono:

lungo l = Long.parseLong ( Stringname )

short s = Short.parseShort ( Stringname )

byte b = Byte.parseByte ( Stringname )

float f = Float.parseFloat ( Stringname ) 

se un utente immette un tipo di dato sbagliato si usa il codice:

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

come da esempio precedente.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Java[:]

[:it]Java è un linguaggio di programmazione orientata agli oggetti sviluppato sotto la guida di James Gosling in Sun Microsystem (in seguito acquisita da Oracle Corporation).

La sintassi di base del linguaggio (strutture di controllo, espressioni, …) è volutamente simile a quella del linguaggio C/C++ allo scopo di favorire il passaggio a Java dei programmatori che lo utilizzavano in precedenza.

E’ un acronimo il suo nome?

JAVA = Just Another Vacuum Acronym

oppure perché i creatori si trovavano in un caffè dove discutevano del progetto e la qualità del caffè che bevevano era Java omonimo dell’isola? Poco male.

La sua diffusione nasce nel 1995 grazie all’espansione su scala mondiale della rete internet e della necessità di programmare in ambiente web.

I punti di forza sono:

  • orientato agli oggetti: Java è un linguaggio object oriented e in quanto tale permette di sviluppare software che modella la realtà mediante entità (oggetti) dotate di specifiche d’uso e di funzionamento definite (classi); in ogni caso Java non è un linguaggio object-oriented “puro”; per esempio i valori dei dati primitivi, come i numeri interi, non sono oggetti.
  • portabilità: il motto dei progettisti Java è stato “Write once, run everywhere”: l’idea di questo approccio è legata alla tecnologia JVM (Java Virtual Machine) o JRE (Java Runtime Enviroment). Il compilatore Java, infatti, non produce codice eseguibile per una specifica piattaforma hardware/software, ma il cosiddetto bytecode, che viene interpretato dalla JVM. Ogn piattaforma hardware/software ha una propria JVM specific, per cui il bytecode può essere indifferentemente eseguito su ciascuna piattaforma perché per ognuna di esse è la macchina virtuale a farsi carico della su esecuzione.
  • disponibilità di strumenti e librerie per la programmazione
  • sicurezza nell’esecuzione del codice: la JVM è limita l’esecuzione del sorgente all’interno del suo ambiente.

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]DVB-T2 con codec HEVC[:]

[:it]

Kandindky

Il DVB-T2 è acronimo di Digital Video Broadcasting – Terrestrial.
Il sistema prevede la trasmissione di un flusso audio/video digitale della famiglia MPEG-2, che é un metodo di compressione dei dati video.

MPEG-2  (Moving Pictures Experts Group) è un sistema di codifica di sorgente che permette delle immagini televisive ad alta qualità con un bitrate tra i 4 e i 9 Mbps.

Lo standard MPEG-2 utilizza tecniche di compressione basate sulla riduzione della ridondanza spaziale e temporale della sequenza video.

La ridondanza spaziale è ridotta tramite tecniche come la Trasformata discreta del coseno (Discrete Cosine Transform, DCT), quella temporale è ridotta tramite motocompensazione: tale metodologia prende il nome di tecnica ibrida a trasformata.

Il Codec HEVC (High Efficiency Video Coding) è una codifica di compressione del canale.

Il DVB-T2 é un miglioramento di questa tecnologia e sarà destinata a fornire la miglior ricezione possibile a ricevitori stazionari (fissi) e portatili (cioè unità trasportabili, ma non completamente mobili) usando gli apparati d’antenna attuali.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Subnettizazzione di un indirizzo IP[:]

[:it]L’indirizzo IP viene diviso in:
– Indirizzo rete Internet (IP);
– Indirizzo rete fisica;
– Indirizzo host.

• L’ampiezza dei campi di netid e hostid può essere divisa in modo dinamico mediante la procedura di
netmask.
• La netmask è composta :
– bit uguale a 1 : in corrispondenza dei campi di netid e subnet;
– bit uguale a 0 : in corrispondenza dei campi di hostid.
• La netmask è rappresentata in binario o in decimale.
– Esempio : la netmask 11111111 11111111 11111111 00000000 corrisponde all’indirizzo 255.255.255.0 ed indica che il campo dell’host coincide con l’ultimo byte

Le subnet mask servono per comunicare tra gli host della stessa rete senza l’utilizzo di un router

In pratica un host per comunicare con un atro host della stessa rete effettua l’operazione di messa in AND o anding processing con la sua subnet mask.

• Dato un un indirizzo IP , per estrarre l’indirizzo della rete e del subnet si effettua un’operazione AND bit a bit tra l’indirizzo IP e la netmask.

• Esempio:

Consideriamo l’indirizzo IP 128.10.2.2

  • lo si converte in binario: 100000000 00001010 00000010 00000010
  • utilizza la netmask 255.255.250.0 e la si converte in 11111111 11111111 1111101000000000
  • si effettua l’operazione AND tra le due sequenze ottenendo la sequenza binaria 10000000 00001010 00000010 00000000 e quindi l’indirizzo 128.10.2.0.

Per cui l’indirizzo IP 128.10.2.2 appartiene alla rete 128.10.2.0 e può comunicare con tutti gli host di tale rete.

Esistono due principali notazioni attraverso le quali è possibile indicare un indirizzo IP:

– Indicando espressamente la subnet mask:
49.22.5.3 con subnet 255.0.0.0 – Classe A;
172.16.20.5 con subnet 255.255.0.0 – Classe B;
192.168.15.4 cin subnet 255.255.255.0 – Classe C;
– Indicando i bit a 1 che compongono la subnet mask:
49.22.5.3/8 – Classe A; ossia 255.0.0.0 in quanto 255 in binario è 11111111.0.0.0 cioè 8 bit ad uno
172.16.20.5/16 – Classe B;   ossia 255.255.0.0 in quanto ho 11111111 11111111 0 0 ossia 16 bit a 1 nella subnet
192.168.15.4/24 – Classe C; ossia 255.255.255.0 ossia 1111111 1111111 1111111 ossia 24 bit posti ad uno.

 

Se effettuando un ping ho come risultato 172.16.5.76/12 significa che nella subnet ho 12 bit ad uno ossia

11111111 11110000 ossia in decimale 255.240.0.0.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Indirizzi privati e sottoreti IP[:]

[:it]• Gli indirizzi IP privati devono essere scelti in modo da non creare
confusione con gli indirizzi IP pubblici, per questo essi sono stati
standardizzati ( RFC 1597 e RFC 1918).
• Si possono utilizzare le seguenti classi di indirizzi privati:

Classe A (una sola rete) : rete 10.x.x.x
Classe B (16 reti adiacenti): reti 172.16.x.x … 172.31.x.x
Classe C (256 reti adiacenti) : reti 192.168.0.x … 192.168.255.x

SOTTORETI ip

• Per ridurre il numero degli indirizzi di rete necessari per il funzionamento di Internet, si può utilizzare la tecnica di subnet addressing o subnetting, che consente di condividere lo stesso indirizzo di rete IP a più reti fisiche.

Esempio:
• Il router R utilizza la stessa rete in classe B 128.10.0.0 per le due reti fisiche.
• Tutti i router vedono un’unica rete 128.10.0.0
• Il terzo byte dell’indirizzo ( generalmente riservato a hostid) viene utilizzato da R per distinguere le
due reti.
• Per instradare il pacchetto R esamina i primi tre byte dell’indirizzo.

 

[:]

Pubblicato in Senza categoria | Lascia un commento