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

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);
    }

}

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));
    }
}

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

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;
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;
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;
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.