Python – Colab

Per analizzare dei dati statistici attraverso Python uso la piattaforma Colab.

In parole povere, Google Colab (abbreviato di “Colaboratory”) è una piattaforma gratuita basata sul cloud che ti permette di scrivere ed eseguire codice Python direttamente dal tuo browser.

Immaginalo come il “Google Docs” della programmazione: non devi installare nulla sul tuo computer, puoi condividere i tuoi progetti con un link e più persone possono lavorarci contemporaneamente.

Primo esempio:

Analisi di una tabella excel per analizzare le medie, le assenze

Creare in excel il seguente file con nome registro_voti:

NomeClasseVoto InformaticaAssenze
Rossi Luca3A RIM73
Bianchi Sara3A RIM55
Verdi Marco3A RIM81
Neri Giulia3B RIM64
Gallo Anna3B RIM90
Fontana Paolo3B RIM46

Ti diamo il benvenuto in Colab – Colab

Facciamo il login con la nostra utenza Gmail in alto a destra ed avremo questo messaggio:

Si clicca su Nuovo notebook

Sulla linea comandi:

from google.colab import files
uploaded = files.upload()

si carica il file precedentemente creato

Digitare il segente codice:

df = pd.read_excel(“registro_voti.xlsx”)

df

Ogni volta che digitiamo un codice usare nella riga comandi:

+ codice

Adesso vediamo un esempio di analisi del file dato al programma:

df[“Voto Informatica”].mean()

mi restituisce la media.

insufficienti = df[df[“Voto Informatica”] < 6]
insufficienti

Mi fornirà a video il seguente risultato:

Ecco cosa normalmente si richiede ad uno studente di questo indirizzo:

1. Dati di Vendita e Ricavi (Sales Analytics)

È il punto di partenza. Si analizza cosa, quanto e a chi si vende.

  • Volume di vendita: Quantità di prodotti venduti in un arco temporale.
  • Fatturato (Revenue): Il valore monetario totale delle vendite.
  • Analisi per area geografica: Fondamentale per il marketing internazionale (RIMA) per capire in quali Paesi il prodotto funziona meglio.
  • Trend temporali: Capire la stagionalità (es. vendiamo più panettoni a dicembre o a Ferragosto?).

2. Dati sui Clienti (Customer Insights)

Chi sono le persone che comprano?

  • Segmentazione: Età, genere, interessi, posizione geografica.
  • Frequenza di acquisto: Il cliente è “fedele” o ha comprato una volta sola?
  • Churn Rate (Tasso di abbandono): Quanti clienti smettono di usare il servizio dopo il primo mese?

3. Dati di Marketing (Marketing Performance)

Servono a capire se i soldi spesi in pubblicità stanno fruttando.

  • CAC (Costo di Acquisizione Cliente): Quanto ci costa, in media, convincere una persona a diventare cliente?
  • ROI (Ritorno sull’Investimento): Se spendo 100€ in ads su Instagram, quanti euro mi tornano indietro in vendite?
  • Click-Through Rate (CTR): Quante persone cliccano effettivamente sui nostri annunci?

4. Dati Logistici e di Magazzino (Inventory & Supply Chain)

Essenziale per non restare senza merce o, al contrario, non averne troppa a marcire in deposito.

  • Giacenze di magazzino: Quanti pezzi abbiamo pronti alla vendita?
  • Lead Time: Quanto tempo passa dall’ordine al fornitore all’arrivo della merce?
Pubblicato in Senza categoria | Lascia un commento

Access – conclusione

Surrealism with a woman holding a mirror and covering her face in the field with a transparent background behind the mirror

Completamento percorso sui database ed access

You must specify a text.
You must specify a date.
Pubblicato in Senza categoria | Commenti disabilitati su Access – conclusione

Python Prima parte

Introduzione a Python

You must specify a text.
You must specify a date.

Pubblicato in Senza categoria | Lascia un commento

Test word media difficoltà

Inner Paint series. Colorful female portrait on the subject of art, energy, creativity and emotion.

Word intermedio senza la stampa unione, altre opzioni presenti

You must specify a text.
You must specify a date.

Pubblicato in Senza categoria | Lascia un commento

Test – Excel finale

Conclusivo prima di un esame di certificazione

You must specify a text.
You must specify a date.
Pubblicato in Senza categoria | Lascia un commento

Esercizio sui tag form

.

🧩 Parte 1 – Struttura e intestazione

  1. Inserisci un <title> personalizzato: “Modulo iscrizione corso RIM”.
  2. Crea un <header> con il nome della scuola e un breve slogan.
  3. Aggiungi un <h1> con il titolo del modulo e un’emoji decorativa.
  4. Inserisci un paragrafo introduttivo che spieghi lo scopo del form.
  5. Aggiungi un’immagine decorativa o il logo della scuola in cima.

🧾 Parte 2 – Dati anagrafici

  1. Crea un <fieldset> con <legend> “Dati personali”.
  2. Inserisci i campi: nome, cognome, email, telefono.
  3. Imposta l’attributo required sui campi obbligatori.
  4. Aggiungi placeholder esplicativi per ogni campo.
  5. Crea un campo date per la data di nascita.
  6. Inserisci un campo number per indicare l’età.
  7. Crea un menu <select> per la “Regione di provenienza” (almeno 5 regioni).
  8. Aggiungi un campo url per indicare un eventuale sito personale.
  9. Inserisci un campo email con controllo di formato.

🗂 Parte 3 – Scelte e preferenze

  1. Crea un gruppo di radio button per il “Genere” (Maschio, Femmina, Altro).
  2. Aggiungi un gruppo di checkbox per gli “Interessi” (es. economia, marketing, lingue, informatica).
  3. Crea un campo color per far scegliere il colore preferito.
  4. Inserisci un campo range per valutare il livello di conoscenza informatica (0–10).
  5. Crea un campo search per cercare corsi disponibili.
  6. Aggiungi un <datalist> collegato con almeno 5 opzioni di corsi.
  7. Crea un campo select per indicare il “Corso scelto” con almeno 3 opzioni.
  8. Crea un secondo <select multiple> per “Lingue conosciute” (es. Italiano, Inglese, Spagnolo, Francese).
  9. Aggiungi un <textarea> per “Motivazioni dell’iscrizione” (almeno 4 righe).

💾 Parte 4 – File e dati tecnici

  1. Inserisci un campo file per caricare un documento d’identità.
  2. Limita i tipi accettati con accept=".pdf,.jpg,.png".
  3. Aggiungi un campo hidden con un codice utente fisso.
  4. Inserisci un campo number per “Anni di esperienza scolastica”.
  5. Crea un campo month per indicare il “Mese di inizio corso”.
  6. Aggiungi un campo week per indicare la “Settimana di frequenza”.
  7. Inserisci un campo time per indicare l’orario preferito delle lezioni.
  8. Aggiungi un campo datetime-local per la data e ora di iscrizione.
  9. Inserisci un campo tel per un secondo recapito telefonico.
  10. Crea un campo url per un eventuale profilo LinkedIn.

📤 Parte 5 – Pulsanti e chiusura

  1. Inserisci un pulsante di tipo submit con etichetta “Invia iscrizione”.
  2. Aggiungi un pulsante di tipo reset con etichetta “Cancella dati”.
  3. Inserisci un pulsante di tipo button con testo “Verifica dati” (senza JavaScript).
  4. Crea un <fieldset> separato con titolo “Conferma finale”.
  5. Inserisci una checkbox con testo “Confermo di aver letto l’informativa privacy”.
  6. Aggiungi un campo output (vuoto) per eventuali risultati calcolati.
  7. Inserisci un <footer> con il nome dell’autore e la data di creazione del file.

👉 Consegna:
Salva il file come modulo_iscrizione.html e assicurati che tutti i campi e gli attributi funzionino correttamente nel browser.
Valore complessivo: 40 punti (1 punto per ogni richiesta).


Pubblicato in Senza categoria | Lascia un commento

Test su uno specifico esercizio base di excel

Basandosi sul documento excel che si allega si risponda alle relative domande

Raccoltaesercizisemplici (3) (1) (1) (2) (1)

You must specify a text.
You must specify a date.
Pubblicato in Senza categoria | Lascia un commento

Flutter – pulsante

Codice Dart su Flutter per la visualizzazione di un pulsante:

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Esempio Pulsante',
      home: const ContatorePage(),
    );
  }
}

class ContatorePage extends StatefulWidget {
  const ContatorePage({super.key});

  @override
  State<ContatorePage> createState() => _ContatorePageState();
}

class _ContatorePageState extends State<ContatorePage> {
  int _contatore = 0;

  void _incrementa() {
    setState(() {
      _contatore++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Pulsante con risultato a schermo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'Hai premuto il pulsante $_contatore volte',
              style: const TextStyle(fontSize: 20),
            ),
            const SizedBox(height: 20),
            ElevatedButton(
              onPressed: _incrementa,
              child: const Text("Premi qui"),
            ),
          ],
        ),
      ),
    );
  }
}

L’esito è il seguente:

Pubblicato in Senza categoria | Lascia un commento

Dart – Classi

Il concetto di classe è quello tradizionale con il concetto di metodi ed oggetti.

Il metodo è associato al concetto di funzione, l’oggetto è collegato con il concetto di variabile.

Ecco un esempio:

class Persona {
  // Attributi (variabili di istanza)
  String nome;
  int eta;

  // Costruttore
  Persona(this.nome, this.eta);

  // Metodo della classe
  void saluta() {
    print("Ciao, mi chiamo $nome e ho $eta anni.");
  }
}

void main() {
  // Creazione di un oggetto di tipo Persona
  Persona p = Persona("Francesco", 35);

  // Chiamata al metodo dell'oggetto
  p.saluta();  // Output: Ciao, mi chiamo Francesco e ho 35 anni.
}

Ecco un esempio con metodo ed attributo:

class Auto {
  // Attributo
  String marca;

  // Costruttore
  Auto(this.marca);

  // Metodo
  void accendiMotore() {
    print("L'auto $marca è accesa!");
  }
}

void main() {
  // Creazione di un oggetto della classe Auto
  var miaAuto = Auto("Fiat");

  // Uso dell’attributo
  print("La mia auto è una ${miaAuto.marca}");

  // Chiamata del metodo
  miaAuto.accendiMotore();
}

Prima di passare al concetto di ereditarietà voglio evidenziare che se il concetto di costruttore esiste, non esiste il concetto di distruttore.

Vi è il concetto di garbage collection ossia della liberazione della memoria attraverso un processo aleatorio.

Ecco una tabella per confrontare linguaggi, tempo di sviluppo, Performance e gestione della memoria.

ProgrammaSviluppoPerformanceMemoria
Dartmolto rapidosufficiente meno intuitivo per calcolo intensivoGC
KotlinbuonobuonaGC
JavabuonobuonaGC
C#buonabuonaGC
Rustcomplessomolto buonaOwnership

La mia riflessione porta ad affermare che, per favorire la velocità di sviluppo, non si pone più l’attenzione verso l’uso della memoria che viene alla fine usata dai singoli dispositivi mobili.

Esempio di ereditarietà fondamentale poi per apprendere le estensioni delle classi in Flutter:

// Classe base
class Persona {
  String nome;
  int eta;

  Persona(this.nome, this.eta);

  void saluta() {
    print("Ciao, mi chiamo $nome e ho $eta anni.");
  }
}

// Classe derivata che estende Persona
class Studente extends Persona {
  String corsoDiStudi;

  // Costruttore della classe derivata che chiama il costruttore base
  Studente(String nome, int eta, this.corsoDiStudi) : super(nome, eta);

  // Metodo aggiuntivo
  void studia() {
    print("$nome sta studiando $corsoDiStudi.");
  }

Pubblicato in Senza categoria | Lascia un commento

Dart – Costrutti base

Il vero e proprio percorso comincia da qui dopo aver visto la potenzialità del framework Flutter.
Comincio con le definizioni classiche.
Ambiente di sviluppo: dartpad.dev

I Esempio – stampa a video “Hello Word”

void main() {
  
    print("Hello word");

}

Si nota subito che se si sbaglia a digitare il codice subito interviene l’interprete on line, non serve compilare!

Non si deve includere alcuna libreria per scrivere in output.

II esempio – costrutto if then else

void main() {
  int numero = 5;

  if (numero > 0) {
    print("Il numero è positivo");
  } else {
    print("Il numero è zero o negativo");
  }
}

non esiste la parola then come in altri linguaggi

III esempio – costrutto while

void main() {
  int numero = 1;
  while (numero <= 5) {
    print('Numero: $numero');
    numero++;
  }
  print('Fine ciclo');
}

IV esempio costrutto for

void main() {
  // Ciclo for che conta da 1 a 5
  for (int i = 1; <= 5; i++) {
    print('Numero: $i');
  }
}

V esempio gestione vettore e matrici molto simile a Python

void main() {
  // Creazione di un "vettore" (lista) di interi
  List<int> numeri = [10, 20, 30, 40];
  // Aggiungere un elemento
  numeri.add(50);
  // Accedere a un elemento (indice parte da 0)
  print(numeri[0]); // 10
  // Modificare un elemento
  numeri[1] = 25;
  // Ciclo for per stampare tutti gli elementi
  for (int n in numeri) {
    print(n);
  }
  // Lunghezza del vettore
  print("Lunghezza: ${numeri.length}");
}
void main() {
  // Definisco una matrice 3x3
  List<List<int>> matrice = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
  ];
  // Accedere a un elemento: riga 1, colonna 2 (indice da 0)
  print(matrice[1][2]); // 6
  // Modificare un elemento
  matrice[0][0] = 10;
  // Stampare tutta la matrice
  for (var riga in matrice) {
    print(riga);
  }
}

VI esempio casting

Di fatto come in Java ma anche in Python ogni input è considerato string, successivamente con l’operazione di casting si arriva a definire il tipo di dato:

// Definizione della funzione
void saluta(String nome) {
  print('Ciao, $nome!');
}
void main() {
  // Chiamata della funzione
  saluta('Francesco');
}
void main() {
  String numeroStringa = "123";
  int numeroIntero = int.parse(numeroStringa);
  print(numeroIntero); // 123
  print(numeroIntero.runtimeType); // int
}
void main() {
  // Numero decimale (con la virgola)
  double numeroDecimale = 3.14159;
  print('Numero decimale: $numeroDecimale');
  // Numero esponenziale (notazione scientifica)
  double numeroEsponenziale = 1.23e4;  // equivalente a 1.23 * 10^4 = 12300
  print('Numero esponenziale: $numeroEsponenziale');
  // Altro esempio di $esponenziale negativo
  double piccoloNumero = 5.67e-3;  // 5.67 * 10^-3 = 0.00567
  print('Piccolo numero: piccoloNumero');
}

Come ultimo passo si noti il concetto di funzione.

// Definizione della funzione
void saluta(String nome) {
  print('Ciao, $nome!');
}
void main() {
  // Chiamata della funzione
  saluta('Francesco');
}

Per chi è abituato a programmi compilati si nota che la definizione di funzione si ha prima del main() se si usa la piattaforma on line.

Ecco un altro esempio di funzione da cui poi definisco i vari tipi di funzione:

int somma(int a,int b)    {
  int c;
  c= a + b;
  return (c);
}
void main() {
  int x = 3;
  int y = 4;
  int z = somma(x,y);
  print("La somma risulta $z");
}

si possono definire anche le funzioni dopo il main() quando si usa dart all’interno del Visual Studio Code esattamente come le funzioni prototipo in C++.

L’uso di $z solo quando vi è una stringa al cui si mette la variabile con il numero.

I tipi di dato in dart sono i seguenti:

int, double, num che contiene dia gli int che i double, string e bool

Tipi complessi:

list, set, map.

Esempi di variabile globale:

// Variabile globale
int counter = 0;

void increment() {
  counter++;
}

void main() {
  print(counter); // 0
  increment();
  print(counter); // 1
}
Pubblicato in Senza categoria | Lascia un commento