astronomia con pascal
esci turboastro.htm
altezza del sole in funzione di latitudini e declinazioni variabili
program altezza7;
(* altezza del sole in funzione di latitudine e declinazione *)
(* su disco 65 dispensa 49 \tu55\altezza7.mar *)
uses crt,graph;
var passo,totale,sosta:integer;
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('indicare passo per variazione della latitudine..');
writeln('deve essere divisore esatto di 90...:1..10..15..30..');
readln(passo);
totale:=trunc(90/passo);
writeln('indica valore per sosta tra vari disegni..1000...5000
');
readln(sosta);
totale:=2*totale+1;
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 conta,n,altezza,lat,dec,x,y,x1:integer;
stringa:string;
begin
x:=300;
y:=200;
n:=0;
setcolor(5);
testo(10,360,'si visualizza la latitudine corrispondente per
ogni');
testo(10,370,'variazione della declinazione nel corso annuale');
testo(10,380,'e la altezza del sole rispetto alla linea
orizzontale');
testo(10,390,'NOTARE LE LATITUDINI ALLE QUALI IL SOLE RAGGIUNGE
90 GRADI');
testo(10,400,'per determinati valori della declinazione:lat -23 0
23 ');
testo(10,420,'e quelle alle quali non sorge o non tramonta per
determinati');
testo(10,430,'valori della declinazione:lat 66...90..66
nord/sud');
TESTO(20,50,'variazione declinazione da -23 ,0,+23,0,-23 ');
testo(20,60,'secondo il corso annuale del moto apparente del sole
');
testo(20,80,'LATITUDINE VARIA DA -90 a 90 con passo da indicare
');
settextstyle(0,1,1);
testo(610,100,'altezza sole');
lat:=-90;
for conta:=1 to totale do
begin
settextstyle(0,0,1);
line(200,y-45,500,y-45);
testo(10,y-45,'altezza=45 gradi');
line(200,y,500,y);
testo(10,y,'altezza=0 gradi');
line(200,y-90,500,y-90);
testo(10,y-90,'altezza=90 gradi');
str(lat,stringa);
setcolor(2);
testo(10,90,'altezza massima del sole=90');
testo(10,220,'altezza del sole negativa:sotto orizzonte');
testo(290,90,'-23.0.23.0.-23');
testo(10,230,'latitudine='+stringa);
for dec:=-23 to 23 do (* declinazione crescente *)
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);
setcolor(5);
line(x+n,y,x+n,y-altezza);
end;
x1:=346;
n:=0;
begin
for dec:=23 downto -23 do
begin
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);
line(x1+n,y,x1+n,y-altezza);
n:=n+1;
end;
delay(sosta);
if (lat=90) then delay(5000);
(* tra due disegni *)
setfillstyle(1,1);
bar(1,100,600,250);
n:=0;
lat:=lat+passo;
x:=300;
end;
end;
pausa;
end;
begin (* programma principale *)
clrscr;
simula;
grafica(1);
alto;
clrscr;
end.