Introduzione al linguaggio Java per chi ha esperienza di C++. Non si parla di OOP, solo di linguaggio.
Codice sorgente dell'esercizio finale qui: https://pastebin.com/R4yZGQcy
Questi sono i miei appunti di informatica sviluppati durante i lockdown. Di fatto costituiscono il libro di testo dei miei corsi. La grafica 竪 ispirata a D&D 5e nella speranza di accattivarmi l'interesse dei ragazzi.
Questa parte 竪 adatta ai ragazzi di 1-2属 liceo SSA e di 2属-3属 ITIS (in particolare ad indirizzo informatico)
20090124 Ricette per Eliminare gli IF @JavaDay3 Roma-IT [ITA]Francesco Cirillo
油
This is one of the most fun days for me. I am very fond of Javaday. I enjoyed sharing many of my experiences as mentor working with the teams during the course of the year. I repeated the same speech to numerous teams from which I got my material :-).
Questi sono i miei appunti di informatica sviluppati durante i lockdown. Di fatto costituiscono il libro di testo dei miei corsi. La grafica 竪 ispirata a D&D 5e nella speranza di accattivarmi l'interesse dei ragazzi.
Questa parte 竪 adatta ai ragazzi di 1-2属 liceo SSA e di 2属-3属 ITIS (in particolare ad indirizzo informatico)
50 minuti per svelare la tigre, il cavallo e sapere che esiste il delfino.
La nuova versione di Java implementa caratteristiche che da tempo erano attese
nello standard del linguaggio: Metadata, Generic Types, AutoBoxing e
Unboxing dei tipi primitivi, Static import, gestione dinamica dei Loop e delle
Enumeration.
Per Java 6: gestione di SystemTray e motori di scripting.
Vediamo di cosa si tratta e di come poter utilizzare queste nuove feature all'interno dei nostri programmi
Qt Lezione3: un visualizzatore di immaginiPaolo Sereno
油
Questa lezione sul toolkit Qt permette di scrivere una semplice applicazione di visualizzazione immagini, i formati sono quelli pi湛 comunemente usati: JPG, BMP, PNG etc.
With Visual Studio 2017, we have a new C # language update. After a brief review of Update 6.0, we'll see what's new. The themes of Update 7 are: Working with Data, Improved Perfomances, and Code Simplification.
Ho incontrato django 8 mesi fa e mi ha riconciliato con la programmazione web che francamente detestavo. Ne ho apprezzato il disegno e la chiarezza.
Qui presento una libreria -- jungle -- ed alcune applicazioni costruite attorno a django sostituendo il sistema di templating originario con 'mako', un sistema di templating recente di Michael Bayer autore fra l'altro di sqlalchemy.
Il sistema di templating di django 竪 forse uno degli elementi pi湛 criticati e pi湛 difesi dagli sviluppatori di django. L'idea di base 竪 che deve restare facilmente utilizzabile da una utenza (il grafico web) che ha normalmente poca dimestichezza con la programmazione motivo per cui i tradizionali elementi di programmazione sono ridotti o mancanti.
L'esperienza mia 竪 che in molte realt invece chi scrive le pagine 竪 il programmatore stesso o persona che pu嘆 imparare con uguale sforzo i rudimenti per potere usare dei sistemi di templating che permettono alcuni costrutti python.
A questo punto si aprono molte possibilit decisamente efficaci. I template risultano molto pi湛 leggibili senza perdere in chiarezza. Particolarmente efficace 竪 l'uso di layout simbolici per la creazione di form e tabelle.
La relazione vuole presentare il lavoro fatto in Thunder Systems srl negli ultimi 8 mesi e disponibile con licenza GNU tramite lo studio di alcune piccole applicazioni costruite con questa libreria fra cui un sistema di ticketing ed un sistema di gestione orari dipendenti/cartellino/badge.
Programmazione a oggetti tramite la macchina del caff辿 (pt. 2)Marcello Missiroli
油
Una introduzione semplice e (spero) intuitiva al mondo della programmazione a oggetti usando come riferimento una macchina del caff辿 (tipo Nespresso)
際際滷s 2 di 3
Test Bank Starting Out with Java: Early Objects, 5/E Tony Gaddisdenulekikki
油
Test Bank Starting Out with Java: Early Objects, 5/E Tony Gaddis
Test Bank Starting Out with Java: Early Objects, 5/E Tony Gaddis
Test Bank Starting Out with Java: Early Objects, 5/E Tony Gaddis
Una primissima introduzione al TDD per chi 竪 a digiuno di test in generale e di TDD in particolare. Usa Java/Junit, ma 竪 facimente adattabile ad altri linguaggi. 40-60 minuti.
50 minuti per svelare la tigre, il cavallo e sapere che esiste il delfino.
La nuova versione di Java implementa caratteristiche che da tempo erano attese
nello standard del linguaggio: Metadata, Generic Types, AutoBoxing e
Unboxing dei tipi primitivi, Static import, gestione dinamica dei Loop e delle
Enumeration.
Per Java 6: gestione di SystemTray e motori di scripting.
Vediamo di cosa si tratta e di come poter utilizzare queste nuove feature all'interno dei nostri programmi
Qt Lezione3: un visualizzatore di immaginiPaolo Sereno
油
Questa lezione sul toolkit Qt permette di scrivere una semplice applicazione di visualizzazione immagini, i formati sono quelli pi湛 comunemente usati: JPG, BMP, PNG etc.
With Visual Studio 2017, we have a new C # language update. After a brief review of Update 6.0, we'll see what's new. The themes of Update 7 are: Working with Data, Improved Perfomances, and Code Simplification.
Ho incontrato django 8 mesi fa e mi ha riconciliato con la programmazione web che francamente detestavo. Ne ho apprezzato il disegno e la chiarezza.
Qui presento una libreria -- jungle -- ed alcune applicazioni costruite attorno a django sostituendo il sistema di templating originario con 'mako', un sistema di templating recente di Michael Bayer autore fra l'altro di sqlalchemy.
Il sistema di templating di django 竪 forse uno degli elementi pi湛 criticati e pi湛 difesi dagli sviluppatori di django. L'idea di base 竪 che deve restare facilmente utilizzabile da una utenza (il grafico web) che ha normalmente poca dimestichezza con la programmazione motivo per cui i tradizionali elementi di programmazione sono ridotti o mancanti.
L'esperienza mia 竪 che in molte realt invece chi scrive le pagine 竪 il programmatore stesso o persona che pu嘆 imparare con uguale sforzo i rudimenti per potere usare dei sistemi di templating che permettono alcuni costrutti python.
A questo punto si aprono molte possibilit decisamente efficaci. I template risultano molto pi湛 leggibili senza perdere in chiarezza. Particolarmente efficace 竪 l'uso di layout simbolici per la creazione di form e tabelle.
La relazione vuole presentare il lavoro fatto in Thunder Systems srl negli ultimi 8 mesi e disponibile con licenza GNU tramite lo studio di alcune piccole applicazioni costruite con questa libreria fra cui un sistema di ticketing ed un sistema di gestione orari dipendenti/cartellino/badge.
Programmazione a oggetti tramite la macchina del caff辿 (pt. 2)Marcello Missiroli
油
Una introduzione semplice e (spero) intuitiva al mondo della programmazione a oggetti usando come riferimento una macchina del caff辿 (tipo Nespresso)
際際滷s 2 di 3
Test Bank Starting Out with Java: Early Objects, 5/E Tony Gaddisdenulekikki
油
Test Bank Starting Out with Java: Early Objects, 5/E Tony Gaddis
Test Bank Starting Out with Java: Early Objects, 5/E Tony Gaddis
Test Bank Starting Out with Java: Early Objects, 5/E Tony Gaddis
Una primissima introduzione al TDD per chi 竪 a digiuno di test in generale e di TDD in particolare. Usa Java/Junit, ma 竪 facimente adattabile ad altri linguaggi. 40-60 minuti.
Queste slide dal titolo provocatorio cercano di dare l'idea che la stupidit e la pigrizia possono avere un effetto positivo nela programmazione per la ricerca di soluzioni semplici. Nello specifico caso parliamo di funzioni in C
際際滷s presentate all'incontro Didamatica 2016 a Udine. Si parla dei vantaggi didattici di una introduzione precoce dei principi Agili nella didattica informatica quotidiana (un mio pallino).
際際滷s di una breve conferenza che ho tenuto a scuola. Ritengo che lo stereotipo del programmatore brutto, scontrorso e antisociale sia in declino, ma perch辿 ci嘆 si realizzi davvero occorre affinare nuove abilit, le abilit sociali. Sia Online che Offline
Basato in parte sul lavoro seguente
http://www.slideshare.net/mastorey/msr-2012-keynote-storey-slideshare
Dopo molti anni mi sono ritrovato a insegnare Informatica in una terza. Questo 竪 una breve slide che ho fatto per spiegare il ciclo for
C'竪 un errore nelle slides 7---9. ho scritto erroneamente una "," al posto del ";".
Introduzione al Controllo di versione (in generale) e al funzionamento di Git (in particolare). Upgrade di un'altra presentazione simile nelle basi ma incentrata su SVN.
Introduzione al sistema binario adatto a ragazzi delle scuole superiori (liceo scientico o ITIS)
Traduzione delle slides omonime presenti qu su slideshare di german margrit
1. www.googleslidesppt.com _ 30+ Ready Made Google 際際滷s & PowerPoint Presentation for Free
Dal C/C++ a Java (in 3*30 minuti)
Se sapete gi programmare...non riscopriamo l'acqua calda!
Parte 3
Marcello Missiroli (prof.missiroli@gmail.com)
2. Di
che
si
tratta?
01
02
03
04
Ipotesi
Voi conoscete gi un linguaggio di
programmazione (C e/o C++)
Tesi
Non occorre rispiegare tutto daccapo:
applicheremo un insegnamento differenziale
Metodologia
Trasformeremo un programma che ben
conoscete (in C/C++) in un programma Java
Verifica
Poi toccher a voi convertire un programma!
3. Rubrica
Grande classico, nel quale si introducono
struct e array.
Partiremo da un codice gentilmente offerto
dall'universit di Bologna (竪 C e non C++, ma
poco cambia ai nostri fini).
Partiamo con lo scheletro di un programma
Java funzionante (eliminando quindi gi
include e namespace).
5. Passo 1
package rubrica;
public class Rubrica {
#define N 4
struct studente{
char Nome[20];
char Cognome[20];
int Voto;};
void leggi(int n, struct studente Vet[]);
float media(int n, struct studente Vet[]);
public static void main(String[] args) {
int i; struct studente V[N];
leggi(N,V);
for(i=0;i<N;i++){
printf("%sn",V[i].Nome);
printf("%sn", V[i].Cognome); }
printf("nVoto medio: %fn",media(N,V));
}
}
Conversioni note e dichiarazioni di variabili
6. Passo 1
package rubrica;
public class Rubrica {
public static final int N = 4;
struct studente{
char Nome[20];
char Cognome[20];
int Voto;};
void leggi(int n, struct studente Vet[]);
float media(int n, struct studente Vet[]);
public static void main(String[] args) {
int i; struct studente V[N];
leggi(N,V);
for(i=0;i<N;i++){
System.out.print(V[i].Nome+" ");
System.out.println(V[i].Cognome);}
System.out.println("Voto medio:
"+media(N,V));}
}
Conversioni note e dichiarazioni di variabili
Non esiste equivalente per il define. Per le
costanti si usano variabili modificate da final
Le struct non esistono,
esistono gli OGGETTI,
determinanti dalle classi.
Un oggetto richiede un
file a parte.
Occupiamoci di questo
7. Passo 2
package rubrica;
public class Studente {
char Nome[20];
char Cognome[20];
int Voto;};
}
Un oggetto equivalente alla struct
8. Passo 2
package rubrica;
public class Studente {
String nome;
String cognome;
int voto;
}
Un oggetto equivalente alla struct
Qualche convenzione sui nomi:
Package: iniziano con minuscola
Classi: iniziano con Maiuscola
Variabili: iniziano con minuscola,
tranne le final, in MAIUSCOLO
Si usa il CamelCase.
9. Passo 2
package rubrica;
public class Rubrica {
public static final int N = 4;
struct studente{
char Nome[20];
char Cognome[20];
int Voto;};
void leggi(int n, struct studente Vet[]);
float media(int n, struct studente Vet[]);
public static void main(String[] args) {
int i; struct studente V[N];
leggi(N,V);
for(i=0;i<N;i++){
System.out.print(V[i].Nome+" ");
System.out.println(V[i].Cognome);}
System.out.println("Voto medio:
"+media(N,V));}
}
Torniamo al file originale e adattiamo.
10. Passo 2
package rubrica;
public class Rubrica {
public static final int N = 4;
void leggi(int n, struct studente Vet[]);
float media(int n, struct studente Vet[]);
public static void main(String[] args) {
int i;
Studente v[];
v=new Studente[N];
leggi(N,V);
for(i=0;i<N;i++){
System.out.print(V[i].Nome+" ");
System.out.println(V[i].Cognome);}
System.out.println("Voto medio:
"+media(N,V));}
}
Torniamo al file originale e adattiamo.
11. Passo 2
package rubrica;
public class Rubrica {
public static final int N = 4;
void leggi(int n, struct studente Vet[]);
float media(int n, struct studente Vet[]);
public static void main(String[] args) {
int i;
Studente v[];
v=new Studente[N];
leggi(N,V);
for(i=0;i<N;i++){
System.out.print(V[i].Nome+" ");
System.out.println(V[i].Cognome);}
System.out.println("Voto medio:
"+media(N,V));}
}
Torniamo al file originale e adattiamo.Studente non deve essere
Importato perch辿 parte dello stesso
progetto e package
Per usare un array occorrono due istruzioni
Dichiarazione (come 竪 fatta)
Istanziazione (quanti elementi)
Corollario: tutti gli array
in java sono dinamici
12. Passo 3
void leggi(int n, struct studente Vet[]){
int i,j;
for(i=0;i<n;i++){
printf("Inserisci Nome, Cognome e
Voto");
scanf("%s",Vet[i].Nome);
scanf("%s",Vet[i].Cognome);
scanf("%d",&Vet[i].Voto);
}
}
float media(int n, struct studente Vet[]){
int i;
float m=0.0;
for(i=0;i<n;i++)
m=m+Vet[i].Voto;
return m/n;
}
Tocchi finali: le due funzioni/metodi.
13. Passo 3
static void leggi(int n, Studente vet[]){
int i,j; Scanner in = new
Scanner(System.in);
for(i=0;i<n;i++){
System.out.println("Inserisci Nome,
Cognome e Voto");
//ATTENZIONE QUI!
vet[i].nome=in.nextLine();
vet[i].cognome=in.nextLine();
vet[i].voto=in.nextInt();
}
}
static float media(int n,Studente vet[]){
int i;
float m=0.0f;
for(i=0;i<n;i++)
m=m+vet[i].voto;
return m/n;}
Tocchi finali: adattiamo parametri...
14. Passo 3
static void leggi(int n, Studente vet[]){
int i,j; Scanner in = new
Scanner(System.in);
for(i=0;i<n;i++){
System.out.println("Inserisci Nome,
Cognome e Voto");
vet[i]=new Studente();
vet[i].nome=in.nextLine();
vet[i].cognome=in.nextLine();
vet[i].voto=in.nextInt();
}
}
static float media(int n,Studente vet[]){
int i;
float m=0.0f;
for(i=0;i<n;i++)
m=m+vet[i].voto;
return m/n;}
Tocchi finali: adattiamo parametri...
MOLTO IMPORTANTE:
In Java, un array di oggetti non riserva
alcuno spazio di memorizzazione!
Peranto, ogni oggetto va inizializzato
prima di esere usato.
15. Passo 3
static void leggi(int n, Studente vet[]){
int i,j; Scanner in = new
Scanner(System.in);
for(i=0;i<n;i++){
System.out.println("Inserisci Nome,
Cognome e Voto");
vet[i]=new Studente();
vet[i].nome=in.nextLine();
vet[i].cognome=in.nextLine();
vet[i].voto=in.nextInt();
}
}
static float media(int n,Studente vet[]){
int i;
float m=0.0f;
for(i=0;i<n;i++)
m=m+vet[i].voto;
return m/n;
Tocchi finali: e l'I/O
16. Agenda Style
Riassunto
l Esistono classi, e struct
l Costanti definite tramite
const o #define.
l Array statici (dinamici con
difficolt)
l
C/C++
l Non esistono struct, solo
classi di oggetti.
l Array dinamici (non esistono
statici). Se si tratta di
oggetti, larray non
inizializza lo spazio dei
singoli oggetti (riferimenti)
l Non esistono #define
Java
18. Avete
le
basi!
Conoscenze del
C/C++
Conoscenze
minimali di Java
Algoritmica
Esercizi
Java 竪 un
linguaggio
complesso, che
richiede una
buona conoscenza
del paradigna di
programmazione a
oggetti! Buon
lavoro!
E solo linizio...
Thats all folks
Ora si parte sul serio
20. Agenda Style
Compito
CONVERTITE O SCRIVETE UN
PROGRAMMA CHE LEGGE UNA
STRINGA DI CARATTERI E NE
STAMPA LA SUA CODIFICA IN
LINGUAGGIO MORSE
C++
?
Java