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

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

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.

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.

Neutrini più veloci della luce

Measurement of the neutrino velocity with the OPERA detector in the CNGS beam
(Submitted on 22 Sep 2011)
The OPERA neutrino experiment at the underground Gran Sasso Laboratory has measured the velocity of neutrinos from the CERN CNGS beam over a baseline of about 730 km with much higher accuracy than previous studies conducted with accelerator neutrinos. The measurement is based on high-statistics data taken by OPERA in the years 2009, 2010 and 2011. Dedicated upgrades of the CNGS timing system and of the OPERA detector, as well as a high precision geodesy campaign for the measurement of the neutrino baseline, allowed reaching comparable systematic and statistical accuracies. An early arrival time of CNGS muon neutrinos with respect to the one computed assuming the speed of light in vacuum of (60.7 ± 6.9 (stat.) ± 7.4 (sys.)) ns was measured. This anomaly corresponds to a relative difference of the muon neutrino velocity with respect to the speed of light (v-c)/c = (2.48 ± 0.28 (stat.) ± 0.30 (sys.)) × 10-5.

Misurazione con il rivelatore OPERA della velocità dei neutrini nel fascio dell’esperimento CNGS
(Inviato il 22 settembre 2011)
L’esperimento sui neutrini OPERA presso il laboratorio sotterraneo del Gran Sasso ha misurato la velocità dei neutrini del fascio dell’esperimento CNGS del CERN su una distanza di circa 730 km con una precisione molto più elevata rispetto agli studi precedenti condotti sui neutrini dell’acceleratore. La misurazione si basa su una quantità statisticamente rilevante di dati ottenuti da OPERA negli anni 2009, 2010 e 2011. Aggiornamenti specifici del sistema di cronometraggio dell’esperimento CNGS e del rivelatore OPERA, così come una campagna di geodesia di alta precisione per la misurazione della distanza percorsa dai neutrini, hanno permesso di raggiungere precisioni sistematiche e statistiche confrontabili. È stato misurato un anticipo sul tempo di arrivo dei neutrini muonici dell’esperimento CNGS rispetto a quello calcolato con la velocità della luce nel vuoto di (60,7 ± 6,9 (errore statistico) ± 7.4 (errore sistematico)) ns. Questa anomalia corrisponde ad una differenza relativa della velocità dei neutrini muonici rispetto alla velocità della luce (v-c)/c = (2,48 ± 0,28 (errore statistico) ± 0,30 (errore sistematico)) × 10-5.

Articolo originale: http://arxiv.org/abs/1109.4897