Cartella compressa contenente il progetto NetBeans con gli esempi: Canvas [ZIP]
Autore: Gianfranco Oddenino
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
Classe 1ª I – Esercizio sulla propagazione degli errori
Calcolare con relativo errore il volume di un cilindro di raggio r = (12,05±0,05) mm ed altezza h = (27,15±0,01) mm
A = π r² = π r r
V = A h
π = 3,1415926
A = 456,167 mm²
ΔA = (0+Δr/r+Δr/r) A = 3,786 mm²
V = 12’384,9 mm³ = 12,3849 cm³
ΔV = (3,786/456,167+0,01/27,15) 12’384,9 = 107,4 mm³ = 0,1074 cm³
V = (12,4±0,1) cm³
E% = 0,8 %
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
Potenze di dieci
Un viaggio immaginario dall’infinitamente grande all’infinitamente piccolo scalando una potenza di 10 ogni 10 secondi. Dai confini dell’Universo all’interno degli atomi.
Protetto: Il moto parabolico – Classe 3ª E
Neutrini più veloci della luce: era un problema strumentale
L’anomalia registrata dall’esperimento OPERA nella velocità del fascio di neutrini tra il CERN e il Gran Sasso sarebbe dovuta a problemi strumentali.
Articolo sul sito di Le Scienze:
Neutrini più veloci della luce: era un problema strumentale