import java.awt.Color;
import java.awt.Graphics;
public class JCirconferenza extends JOxy {
private double a, b, c;
public JCirconferenza() {
setA(0.0);
setB(0.0);
setC(-1.0);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
double xC = -getA()/ 2.0;
double yC = -getB()/ 2.0;
double r = Math.sqrt(xC * xC + yC * yC - getC());
g.setColor(Color.BLUE);
g.drawOval(xg(xC - r), yg(yC + r), (int) Math.round(2.0 * r * getScalaX()), (int) Math.round(2.0 * r * getScalaY()));
}
public double getA() {
return a;
}
public final void setA(double a) {
this.a = a;
repaint();
}
public double getB() {
return b;
}
public final void setB(double b) {
this.b = b;
repaint();
}
public double getC() {
return c;
}
public final void setC(double c) {
this.c = c;
repaint();
}
}
Categoria: Informatica
JParabola
import java.awt.Graphics;
public class JParabola extends JOxy {
private double a, b, c;
public JParabola() {
setA(1.0);
setB(0.0);
setC(0.0);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
int w = getWidth() - 1;
double x0 = 0.0, y0 = 0.0;
for (int i = 0; i < w; i++) {
double x = xr(i);
double y = getA() * x * x + getB() * x + getC();
if (i == 0) {
x0 = x;
y0 = y;
} else {
g.drawLine(xg(x0), yg(y0), xg(x), yg(y));
x0 = x;
y0 = y;
}
}
}
public double getA() {
return a;
}
public final void setA(double a) {
this.a = a;
repaint();
}
public double getB() {
return b;
}
public final void setB(double b) {
this.b = b;
repaint();
}
public double getC() {
return c;
}
public final void setC(double c) {
this.c = c;
repaint();
}
}
Logo Peano
public class JLogo extends JComponent {
public JLogo() {
setPreferredSize(new Dimension(80, 100));
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(new Color(0, 200, 255));
g2.setStroke(new BasicStroke(10.0f));
int[] x = {10, 30, 30, 10, 10, 30, 30, 50, 50, 70, 70, 50, 50, 70};
int[] y = {70, 70, 50, 50, 10, 10, 30, 30, 10, 10, 50, 50, 70, 70};
g2.drawPolyline(x, y, x.length);
g2.setFont(new Font("Arial", Font.BOLD, 24));
g2.setColor(Color.RED);
g2.drawString("Peano", 5, 95);
}
}
Grafica in Java
Cartella compressa contenente il progetto NetBeans con gli esempi: Canvas [ZIP]
OperatoriSuiBit.java
public class OperatoriSuiBit {
public static String bin(int i) {
return Integer.toBinaryString(i)+"b";
}
public static void main(String[] args) {
int a, b, c;
System.out.println("Operatori logici");
a = 10; System.out.println("a = "+a+" = "+bin(a));
b = 12; System.out.println("b = "+b+" = "+bin(b));
c = a & b; System.out.println("c = a & b = "+c+" = "+bin(c));
c = a | b; System.out.println("c = a | b = "+c+" = "+bin(c));
c = ~a; System.out.println("c = ~a = "+c+" = "+bin(c));
System.out.println();
System.out.println("Operatori di spostamento");
a = 20; System.out.println("a = "+a+" = "+bin(a));
c = a << 2; System.out.println("c = a << 2 = "+c+" = "+bin(c));
c = a >> 2; System.out.println("c = a >> 2 = "+c+" = "+bin(c));
c = a >>> 2; System.out.println("c = a >>> 2 = "+c+" = "+bin(c));
b = -20; System.out.println("b = "+b+" = "+bin(b));
c = b << 2; System.out.println("c = b << 2 = "+c+" = "+bin(c));
c = b >> 2; System.out.println("c = b >> 2 = "+c+" = "+bin(c));
c = b >>> 2; System.out.println("c = b >>> 2 = "+c+" = "+bin(c));
}
}
Materiale didattico per la 3ª E – CSS
Ordinamento per selezione
program OrdinamentoPerSelezione;
{$APPTYPE CONSOLE}
var
a: array[1..100] of Integer;
n: Integer;
procedure Legge;
var
i: Integer;
begin
for i:=1 to n do
begin
Write('a[', i, ']? '); ReadLn(a[i]);
end;
end;
procedure Scrive;
var
i: Integer;
begin
for i:=1 to n do
WriteLn('a[', i, ']= ', a[i]);
end;
procedure Scambia(var x, y: Integer);
var t: Integer;
begin
t:=x; x:=y; y:=t;
end;
procedure Ordina;
var
i, j: Integer;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
Scambia(a[i], a[j]);
end;
begin
Write('Quanti elementi? '); ReadLn(n);
Legge;
Ordina;
WriteLn('Array ordinato');
Scrive;
ReadLn;
end.
Temperature – Esempio di programma con gli array
const nMax = 100; var frmTemperature: TfrmTemperature; citta: array[1..nMax] of String; temp: array[1..nMax] of Double; nCitta: Integer;
procedure TfrmTemperature.btnCaricaClick(Sender: TObject);
var
i: Integer;
begin
for i:=1 to nMax do
begin
citta[i]:=InputBox('Città',
'Inserisci il nome (stringa vuota per finire): ', '');
if citta[i]='' then
begin
nCitta:=i-1;
Exit;
end;
temp[i]:=StrToFLoat(InputBox('Temperature',
'Inserisci la temperatura di '+citta[i]+': ', ''));
end;
end;
procedure TfrmTemperature.btnVisualizzaClick(Sender: TObject);
var
i: Integer;
s: String;
begin
s:='Elenco delle città inserite e delle temperature'+#13;
for i:=1 to nCitta do
s:=s+citta[i]+' '+FloatToStr(temp[i])+' °C'+#13;
ShowMessage(s);
end;
procedure TfrmTemperature.btnCittaMinClick(Sender: TObject);
var
i: Integer;
min: Double;
s: String;
begin
min:=100;
// ricerca prima la temperatura minima
for i:=1 to nCitta do
if temp[i]<min then
min:=temp[i];
// ricerca poi tutte le città che hanno la temperatura minima
s:='Città con la temperatura minima: '+FloatToStr(min)+' °C'+#13;
for i:=1 to nCitta do
if temp[i]=min then
s:=s+citta[i]+#13;
ShowMessage(s);
end;
Algoritmi di ordinamento
- Ordinamento per selezione: V-ORD-SE.PAS
procedure Ordina;
var
i, j: Integer;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
Scambia(a[i], a[j]);
end;
- Ordinamento a bolla: V-ORD-BO.PAS
procedure Ordina;
var
i, j: Integer;
begin
for i:=n-1 downto 1 do
for j:=1 to i do
if a[j]>a[j+1] then
Scambia(a[j], a[j+1]);
end;
- Ordinamento per inserzione: V-ORD-IN.PAS
procedure Ordina;
var
i, j, t: Integer;
begin
for i:=2 to n do
begin
t:=a[i];
j:=i;
while (a[j-1]>t) and (j>1) do
begin
a[j]:=a[j-1];
Dec(j);
end;
a[j]:=t;
end;
end;
- Ordinamento veloce (quick sort): V-ORD-VE.PAS
procedure Ordina(inf, sup: Integer);
var
i, j, p: Integer;
begin
i:=inf; j:=sup;
p:=a[(inf+sup) div 2];
repeat
while a[i]<p do Inc(i);
while a[j]>p do Dec(j);
if i<=j then
begin
Scambia(a[i], a[j]);
Inc(i); Dec(j);
end;
until i>j;
if inf<j then Ordina(inf, j);
if i<sup then Ordina(i, sup);
end;
- File da includere i tutti programmi precedenti: V-ORD-XX.PAS
Corso di Delphi
A partire da giovedì 6 ottobre 2011 dalle 14:30 alle 16:30 per 3 giovedì consecutivi avrà inizio il corso sulla programmazione in Delphi tenuto dal prof. Gianfranco Oddenino. Programma:
06/10/2011 – L’ambiente di sviluppo, gli oggetti visuali di Windows, l’interazione con l’utente.
13/10/2011 – La grafica in Windows, le animazioni.
20/10/2011 – La programmazione ad oggetti: costruzione di nuovi oggetti e loro utilizzo.


