sabato 17 ottobre 2009

Studente & Prova Studente (Java)

Studente:
public class Studente{
String nome;
String dataNascita;
String classe;
public Studente (String n, String dn, String c){
nome=n;
dataNascita=dn;
classe=c;
}
public void studia(){
System.out.println("Quanto ho studiato oggi?");
}
public void sonoStanco(){
System.out.printl("Ho studiato troppo, sono stanco");
}
}


Prova Studente:
public class ProvaStudente{
public static void main(String[]args){
Studente studenti=new Studente[10];
Studente s1=new Studente(args[0],args[1],args[2]);
Studente s2=new Studente("Scorteccia","25-01-1992","IVALE");
Studente s3=new Studente("Drago","10-05-1992","IVALE");
Studente s4=new Studente("Millucci","10-08-1992","IVALE");
studenti[0]=s1;
studenti[1]=s2;
studenti[2]=s3;
studenti[3]=s4;
fot(int i=0; i

martedì 6 ottobre 2009

Esercizio n° 2 pagina 58

Descrivere una radiosveglia indicando le sue caratteristiche e i suoi comportamenti:

Caratteristiche:
- Materiale
- Tipo (analogico/digitale)
- Funzione radio


Comportamenti:
- Suona
- Segna ora
- Segna minuti
- Ascolta radio
- Accendi
- Spegni

Esercizio n° 4 pagina 58

Dall' elento che segue, individuare gli oggetti e associare loro gli attributi e i metodi corretti: raggio; poligono; calcolaCirconferenza; numero lati; calcolaPerimetro; calcolaArea; cerchio.

- Cerchio:

public class Cerchio{
String raggio;
public void calcolaCirconferenza(){
System.out.println("Circonferenza=raggio^2*3,14");
}
}

- Poligono:

public class Poligono{
String numero lati;
String lunghezza lato;
public void calcolaPerimetro(){
System.out.println("Perimetro=numero lati*lunghezza lato");
}
public void calcolaArea(){
System.out.println("Area=lunghezza lato^2");
}
}

mercoledì 16 settembre 2009

Blackjack

1. Turni e carte.

Per distinguere i turni dei giocatori usiamo un contatore (cont. turni) che poniamo uguale a uno.
Il contatore ad ogni fine turno verrà aumentato di uno con l' operazione :

cont.turni = cont.turni + 1

Il contatore, finito ogni turno, aumenterà quindi di uno in modo che il computer (con una funzione che richiameremo al momento opportuno) possa capire di chi sia il turno.

cont.turni = 1 --> Turno del giocatore 1
cont.turni = 2 --> Turno del giocatore 2
Etc...

Poniamo come x il numero di giocatori e ad ogni turno se il contatore risulta maggiore di x significa che tutti i giocatori hanno giocato e quindi tocca al banco.
Con un' altra funzione verifichiamo che il contatore turni sia maggiore di x solo di uno (cont.turni = x + 1), in questo caso il turno sarà quello del banco.
Se invece il contatore risulta maggiore di "x + 1" allora anche il banco ha giocato e il contatore deve essere azzerato (o meglio essere riportato ad uno) e comincia un altro giro.
A questo punto con delle array simuliamo le carte di ogni giocatore che riempiremo con una funzione random da uno a undici (undici per il jolly).
Il numero delle array per giocatore dovrà essere 11 in quanto la combinazione che fà 21 con il maggior numero di carte è la seguente:

1+1+1+1+2+2+2+2+3+3+3

Essendoci solo un tot di carte con lo stesso numero in un mazzo dobbiamo far si che lo stesso numero non esca più di quattro volte (16 per il 10 e 2 per il jolly).
Per farlo ci serviranno dei contatori (uno per ogni numero) e a ogni simulazione di pescata poniamo "y = numero uscito" e il contatore del numero y lo aumentiamo di uno per ricordare al computer che quel numero è già uscito una o più volte.
Prima di continuare il computer verificherà con una funzione se quel numero non è uscito oltre i limiti, in caso che il numero sia uscito troppe volte l' operazione di estrazione della carta dovrà essere rieseguita con i debiti controlli fino a non pescare una carta che non sia uscita (e che il suo contatore non abbia raggiunto il limite quindi).


Numero estratto con la funziona casuale = y

contatore y = contatore y + 1

Se y != 10 --> Se y != 11 --> Se contatore y > 4 --> ripetere pescaggio

Se y = 10 --> Se contatore y > 16 --> ripetere pescaggio

Se y = 11 --> Se contatore y > 2 --> ripetere pescaggio

2. Display di gioco

Ad ogni turno facciamo comparire sullo schermo tramite la funzione printf una schermata dove:
- Siano raffigurate le carte che hai in mano (inizialmente due)
- Sia raffigurata la somma dei valori delle tue carte
- Sia esplicitato il tasto da premere se si vuole pescare (avevamo pensato a "Premi 1 per pescare")
- Sia esplicitato il tasto da premere se si vuole passare il turno (avevamo pensato a "Premi 2 passare il turno")
- Sia esplicitato il tasto da premere se si vuole aumentare la puntata (avevamo pensato a "Premi 3 per aumetare la tua puntata")
- Sia esplicitato il tasto da premere se si vuole lasciare il gioco (avevamo pensato a "Premi 4 per lasciare il gioco")

N.B.
Il valore della somma delle carte non sarà ricavato direttamente da un' operazione di somma, ma sarà la rappresentazione del valore di una variabile globale che chiameremo "sommax" (x stà al numero del giocatore, dato che ci servirà sapere la somma delle carte di tutti i giocatori, il banco avrà come numero il massimo dei giocatori + 1).
Il valore di "sommax" verrà calcolato con una funzione e verrà richiamata al momento delle visualizzazione su display e al momento del confronto tra le somme delle carte dei giocatori di cui ci occuperemo dopo.

2.1 Pescare

Per pescare si farà ricorso al processo che è stato spiegato prima ( 1. Turni e carte), nel caso in cui il giocatore superi 21 si trasforma il valore della somma della carte in zero in modo che il confronto con il banco si perda per forza.

2.2 Passare il turno e aumentare la posta in gioco

Premendo il tasto addetto al passaggio del turno si aumenterà il cont.turni di uno facendo giocare il giocatore successivo.
Premendo il tasto addetto all' aumento della posta in gioco comparirà una schermata dove si chiederà al giocatore di inserire la cifra che vuole puntare, a quel momento la si dovrà confrontare con i soldi che possiede e sottrarli.
Se la sottrazione è possibile si ritornerà alla schermata precedente, altrimenti si chiederà di reinserire la cifra da puntare (in caso si voglia annullare l' aumento della posta sarà sufficente reinserire uno che è la puntata minima).
N.B.
La sottrazione dei soldi del giocatore e della puntata verrà fatto solo se il giocatore perderà il confronto con il banco, in caso contrario il giocatore vince il doppio della somma puntata (si riprende i soldi puntati e ne prende altrettanti da banco, ma per semplificare questa operazione ci limitiamo a sottrarre o sommare la somma puntata in caso di perdita o vincita).

2.3 Lasciare il gioco

Premendo il tasto addetto all' abbandono del gioco di aumenterà di uno un contatore che chiameremo "partecipazione".
Ogni volta che toccherà a quel giocatore si controllerà che questo contatore non sia diverso da zero, se tale si aumenterà il cont.turni di uno per far passare direttamente il turno al giocatore successivo.

2.4. Il display di gioco del banco

Dovendo il banco giocare sempre e non potento puntare avrà chiaramente una schermata di gioco diversa nella quale compariranno solo: "Le tue carte", "Somma delle tue carte", "Premi [...] per pescare" e "Premi [...] per passare".

3. Il confronto

Una volta che tutti i giocatori avranno fatto la loro giocata si passerà al confronto delle somme delle carte.
Nel caso in cui qualche giocatore abbia superato 21 con la somma delle carte non parteciperanno al confronto (o meglio si ma per farli perdere per forza verrà azzerato il valore della somme delle loro carte).
Per quanto riguarda i giocatori che non hanno superato 21 verrà fatto il confronto tra le somme delle carte del giocatore del banco e del giocatore:

Se il giocatore supera il banco il giocatore vince.
Se il giocatore non supera il banco quest' ultimo vince.
Se il giocatore e il banco pareggiano vince il banco.

A quel punto si passa all' operazione di somma del valore della puntata ai soldi del vincitore e della sottrazione degli stessi a quelli del perdente.

Per chiudere avevamo pensato che quando tutti i giocatori lasciano compare una schermata che tramite prinft richiama i valori dei soldi che i giocatori hanno accumulato durante la partita preceduti da una frase del tipo "Il giocatore x ha vinto y".

Daniele Pastacci
&
Michele Vasta

martedì 14 aprile 2009

#include
FILE *f1;
FILE *f2;
FILE *f3;
int primo;
int secondo;
void unione(){
f1=fopen("primo.txt","r");
f2=fopen("secondo.txt","r");
f3=fopen("unione.txt","w");
fscanf(f1,"%d",&primo);
while(primo!=999){
fprintf(f3,"%d\n",primo);
fscanf(f1,"%d",&primo);
}
fscanf(f2,"%d",&secondo);
while(secondo!=999){
fprintf(f3,"%d\n",secondo);
fscanf(f2,"%d",&secondo);
}
fclose(f1);
fclose(f2);
fclose(f3);
}
main(){
unione();
}

venerdì 10 aprile 2009

#include
FILE *f1;
FILE *f2;
int num;
int a;
int b;
int i;
int x[7];
void leggiscrivi(){
f1=fopen("esercizio1.txt","r");
f2=fopen("copia1.txt","w");
fscanf(f1,"%d\n",&num);
while(num!=999){
fprintf(f2,"%d\n",num);
fscanf(f1,"%d\n",&num);
}
fclose(f1);
fclose(f2);
}
void compresi(){
f1=fopen("esercizio1.txt","r");
f2=fopen("compresi.txt","w");
fscanf(f1,"%d\n",&num);
printf("Digita due numeri interi\n");
scanf("%d\n",&a);
scanf("%d\n",&b);
while(num!=999){

if((num>a)&&(numb)&&(num<8; i="7;">1; i--){
fprintf(f2,"%d\n",x[i]);
}
fclose(f1);
fclose(f2);
}
main(){
leggiscrivi();
compresi();
inverso();
}

lunedì 9 marzo 2009

Esercizio n.23 pagina 346

#include
int assenze[15];
main(){
printf("Inserisci il numero delle assenze prima nella 1A, poi nella 1B e poi nella 1C\n");
scanf("%d", &assenze[1]);
scanf("&d", &assenze[2]);
scanf("%d", &assenze[3]);
printf("Inserisci il numero della assenze prima nella 2A, poi nella 2B e poi nella 2C\n");
scanf("%d", &assenze[4]);
scanf("&d", &assenze[5]);
scanf("%d", &assenze[6]);
printf("Inserisci il numero delle assenze prima nella 3A, poi nella 3B e poi nella 3C\n");
scanf("%d", &assenze[7]);
scanf("&d", &assenze[8]);
scanf("%d", &assenze[9]);
printf("Inserisci il numero delle assenze prima nella 4A, poi nella 4B e poi nella 4C\n");
scanf("%d", &assenze[10]);
scanf("&d", &assenze[11]);
scanf("%d", &assenze[12]);
printf("Inserisci il numero delle assenze prima nella 5A, poi nella 5B e poi nella 5C\n");
scanf("%d", &assenze[13]);
scanf("&d", &assenze[14]);
scanf("%d", &assenze[15]);
if (assenze[1]>0){
printf("1A\n");
}
if (assenze[2]>0){
printf("1B\n");
}
if (assenze[3]>0){
printf("1C\n");
}
if (assenze[4]>0){
printf("2A\n");
}
if (assenze[5]>0){
printf("2B\n");
}
if (assenze[6]>0){
printf("2C\n");
}
if (assenze[7]>0){
printf("3A\n");
}
if (assenze[8]>0){
printf("3B\n");
}
if (assenze[9]>0){
printf("3C\n");
}
if (assenze[10]>0){
printf("4A\n");
}
if (assenze[11]>0){
printf("4B\n");
}
if (assenze[12]>0){
printf("4C\n");
}
if (assenze[13]>0){
printf("5A\n");
}
if (assenze[14]>0){
printf("5B\n");
}
if (assenze[15]>0){
printf("5C\n");
}
}

Esercizio n. 25 pagina 346

#include
int a;
int b;
int pro;
main(){
printf("Digita il primo numero\n");
scanf("%d", &a);
printf("Digita il secondo numero\n");
scanf("%d", &b);
if (b==0){
printf("a*b=0");
}
else if (b>0){
pro=a*(b-1)+a;
printf("a*b=%d", &pro);
}
}


Come prima il programma funziona ma i risultati sono sballati.

Esercizio n. 24 pagina 246

#include
#include
int cateto1;
int cateto2;
int ipo;
void ipotenusa(){
ipo==sqrt((cateto1*cateto1)+(cateto2*cateto2));
printf("Ipotenusa = %d\n", &ipo);
}
void perimetro(){
int per;
per==(cateto1+cateto2+ipo);
printf("Perimetro del triangolo = %d\n", &per);
}
void area(){
int area;
area==(cateto1*cateto2)/2;
printf("Area del triangolo = %d\n", &area);
}
main(){
printf("Inserisci il valore del primo cateto:\n");
scanf("%d",&cateto1);
printf("Inserisci il valore del secondo cateto:\n");
scanf("%d",&cateto2);
ipotenusa();
perimetro();
area();
}




Il programma funziona ma (non ho capito perchè) i valori che dà sono tutti sballati.

giovedì 12 febbraio 2009

Digita

Dati 10 numeri stamparli nell' ordine di inserimento e poi nell' ordine inverso di inserimento:


#include
int i;
int numeri[10];
void Digita(){
for (i=0;i<10;i++){ i="0;" i="9;">=0; i--){
printf("%d\n",numeri[i]);
}
}
main(){
Digita();
stampa();
stampacontrario();
}

Array

Array:
Un raggruppamento di variabili, a cui si dà un nome unico e ciascun elemento di questo

raggruppamento è identificato da un indice.

Es.
tante celle di memoria chiamate "numeri", per distinguerle usiamo i numeri.
Come distinguerle?

Numeri[1], Numeri[2], Numeri[x]...

Per semplificare il tutto mettiamo come variabile i e poi Numeri[i], poi cambiamo i a seconda della

cella che ci serve.

int numeri[X]
X = numero di celle

lunedì 9 febbraio 2009

Programma utilizzato per trovare il massimo fra più numeri in input compilato utilizzando una funzione:

#include
int massimo(int max){
int numero;
int massimo;
while (numero!=999){
if (numero>massimo){
massimo=numero;
}
printf("Digita un numero intero, 999 per finire");
scanf("%d",&numero);
return numero;
}
main(){
printf("Digita numero intero, 999 per finire");
scanf("%d",&numero);
massimo=numero;
massimo(numero);
}

Programma utilizzato per trovare il minimo fra più numeri in input compilato utilizzando una funzione:

#include
int minimo(int min){
int numero;
int minimo;
while (numero!=999){
if (numero < minimo){
minimo=numero;
}
printf("Digita un numero intero, 999 per finire");
scanf("%d",&numero);
return numero;
}
main(){
printf("Digita numero intero, 999 per finire");
scanf("%d",&numero);
minimo=numero;
minimo(numero);
}

Programnma utilizzato per sommare due numeri in input compilato utilizzando una funzione:

#include
int somma(int a, int b){
int somma;
int primo;
int secondo;
printf("Inserisci un numero, 999 per finire);
scanf("%d",&primo);
while (primo!=999){
printf("Inserisci un altro numero, 999 per finire);
scanf("%d",&secondo);
somma==primo+secondo;
}
return somma;
}
main(){
somma;
}

giovedì 5 febbraio 2009

Intervallo di due numeri

Come trovare tutti i numeri compresi fra due numeri in input:


#include
void intervallo(int a,int b){
int i;
for (i=a; i<=b; i++){
printf("%d\n",i);
}
}
main(){
int fine=0;
int primo;
int secondo;
while (fine==0){
printf("digita estremo inferiore ");
scanf("%d",&primo);
printf("digita estremo superiore ,999 per uscire ");
scanf("%d",&secondo);
fine=secondo;
if (fine!=999)
intervallo(primo,secondo);
}
}


Come trovare tutti i numeri da 1 a 100 esclusi quelli nell' intervallo di due numeri in input:

#include
void intervallo(int a,int b){
int i;
for (i=0; i<=a; i++){
printf("%d\n",i);
}
for (i=b; i<=100; i++){
printf("%d\n",i);
}
}
main(){
int fine=0;
int primo;
int secondo;
while (fine==0){
printf("digita estremo inferiore ");
scanf("%d",&primo);
printf("digita estremo superiore ,999 per uscire ");
scanf("%d",&secondo);
fine=secondo;
if (fine!=999)
intervallo(primo,secondo);
}
}

martedì 20 gennaio 2009

[20.01.2009] Esercizio numero 17 pagine 291

#include
int temperatura massima;
int temperatura minima;
int numero giorni;
int media massime;
int media minima;
int somma massime;
int somma minime;
int contatore;
main(){
printf("Inserisci numero di giorni")
scanf("%d", &numero di giorni);
somma massime=0;
contatore=0;
while(contatore>numero giorni){
contatore=contatore+1;
printf("Inserisci temperature massime del mese");
scanf("%d", &temperatura massima);
somma massime=somma massime+temperatura massima;
}
media massime==somma massime/numero giorni;
contatore=0;
somma minime=0;
while(contatore>numero giorni){
contatore=contatore+1;
printf("Inserisci temperature minime del mese");
scanf("%d", &temperatura minima);
somma minime=somma minime+temperatura minima;
}
media minime==somma minime/numero giorni;
printf("%d ", media massime);
printf("%d\n", media minime);
}
#include
int temperatura massima;
int temperatura minima;
int numero giorni;
int media massime;
int media minima;
int somma massime;
int somma minime;
int contatore;
main(){
printf("Inserisci numero di giorni")
scanf("%d", &numero di giorni);
somma massime=0;
contatore=0;
while(contatore>numero giorni){
contatore=contatore+1;
printf("Inserisci temperature massime del mese");
scanf("%d", &temperatura massima);
somma massime=somma massime+temperatura massima;
}
media massime==somma massime/numero giorni;
contatore=0;
somma minime=0;
while(contatore>numero giorni){
contatore=contatore+1;
printf("Inserisci temperature minime del mese");
scanf("%d", &temperatura minima);
somma minime=somma minime+temperatura minima;
}
media minime==somma minime/numero giorni;
printf("%d ", media massime);
printf("%d\n", media minime);
}

giovedì 8 gennaio 2009

[08.01.09] Coppie di numeri.

La richiesta dell' esercizio di oggi era:
Dato un numero intero e positivo in ingresso, stampare tutte le coppie di numeri interi il cui prodotto vale il numero dato.


Prima di compilare nel blocco note il programma in linguaggio C abbiamo stilato un flowchart che raffigurasse i passaggi da far eseguire al programma (che non ho potuto avere in quanto al momento della compilazione ero alla lavagna essendo stato interrogato).
Successivamente al flowchart siamo passati alla programmazione in C del programma.

Con questo programma abbiamo introdotto il "%d " (da notare lo spazio fra la "d" e la virgoletta) che serve a distanziare in questo caso il valore X e il valore Y e il "%d\n" che serve a mandare a capo durante la visualizzazione delle coppie la coppia successiva.
Ecco una immagine del programma in azione:


mercoledì 7 gennaio 2009

[07.01.09] Esercizio in C: Massimo


Grazie a questo programma sviluppato in classe è possibile ricavare il numero più in alto di una lista di numeri che deve essere precedentemente inserita, per terminare la lista è sufficente scrivere 999.
Questo esercizio è stato fatto precedentemente, sempre in classe, sottoforma di flowchart.