astronomia con pascal

esci turboastro.htm

altezza del sole in funzione di latitudini e declinazioni variabili

program altezza5;
(* altezza del sole in funzione di latitudine e declinazione *)
(* su disco 65 dispensa 49 \tu55\altezza5.mar *)

uses crt,graph;

procedure simula;
begin
writeln('si determina la altezza del sole,indicando il valore in gradi');
writeln('in funzione della latitudine e della declinazione indicabili ');
writeln('entro campo determinato');
writeln('latitudine costante e declinazione variabile');
writeln;
writeln('grafico altezza variabile con latitudine e declinazione');
writeln;
writeln('valori per latitudine :interi da -90 a 0 a 90 ');
writeln('valori per declinazione:interi da -23 a 23 ');
writeln;
writeln('PER declinazione:PRIMA VALORE MINORE,poi quello MAGGIORE ');
writeln('premi return,prego');
readln;
clrscr;
end;

procedure grafica(f:integer);
var sc,tp:integer;
stringa:string;
begin
sc:=0;
tp:=0;
stringa:='c:\scheda';
initgraph(sc,tp,stringa);
setbkcolor(f);
end;

procedure pausa;
var ch:char;
begin
setcolor(2);
outtextxy(400,450,'premi return,prego');
ch:=readkey;
setcolor(1);
outtextxy(400,450,'premi return,prego');
end;

procedure testo(x,y:integer;nome:string);
begin
outtextxy(x,y,nome);
end;

procedure alto;
var n,altezza,lat,dec1,dec2,dec,x,y,x1,y1:integer;
sd,sl,sh,sx:string;

begin
x:=300;
y:=200;
y1:=100;
x1:=10;
n:=0;
sx:='/';
testo(100,10,'SCRIVI: latitudine costante -90..0..90..=');read(lat);
testo(100,20,'SCRIVI: declinazione iniziale. -23..0..23..=');read(dec1);
testo(100,30,'SCRIVI: declinazione finale ... 23..0..-23.=');read(dec2);
IF (dec2<=dec1) THEN TESTO(10,400,'dec2 > dec1:RIPROVA PREGO:');
IF (dec2<=dec1) THEN READ(dec2);
setcolor(5);
TESTO(x,50,'variazione secondo declinazione crescente');
settextstyle(0,1,1);
testo(600,100,'altezza sole');
settextstyle(0,0,1);
line(10,y,600,y);
line(10,y-90,600,y-90);
for dec:=dec1 to dec2 do
begin
n:=n+1;
setcolor(14);
altezza:=90-LaT+dec;
if (lat>0) and (lat<dec) then altezza:=180-(90-lat+dec);
if (lat<0) and (lat>dec) then altezza:=180-(90+lat-dec);
if (lat<0) and (lat<dec) then altezza:=90+lat-dec;
if (lat=0) then altezza:=90 - abs(dec);
str(dec,sd);
str(lat,sl);
str(altezza,sh);
testo(x1,y1,sl+sx+sd+sx+sh);
y1:=y1+10;
if (n/30= int(n/30)) then x1:=x1+95;
if (n/30= int(n/30)) then y1:=100;
setcolor(5);
line(x+dec,y,x+dec,y-altezza);
end;
end;

begin (* programma principale *)
clrscr;
simula;
grafica(1);
alto;
pausa;
clrscr;
end.