|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 5888 (0x1700) Types: TextFile Names: »XRAY.PAS«
└─⟦ba3b4f658⟧ Bits:30003088 Xray: elevopgave i Pascal, feb 92 └─ ⟦this⟧ »XRAY.PAS«
program RONT; (* jan 1992 *) (*$I xybasis *) (*$I xyfysik *) (*$I xygraf *) (* programmet kan kun compiles til en com-fil, det er for stort. *) const d =201.38; VAR datafil : file of real; dobvink,antal,i,j,k,minv,maxv,hold : integer; impuls,vinkel,deltavinkel,tid,l,xmax,ymax : real; ch,slet : char; z : intarray; x,y : realarray; filnavn : string(.8.); svar : char; filfejl : boolean; BEGIN write(chr(12)); gotoxy(10,5);write('Angiv et navn til datafilen : '); repeat gotoxy(45,5);write(' '); gotoxy(45,5);readln(filnavn); assign(datafil,filnavn+'.DAT'); (*$I-*) reset(datafil);(*$I+*) filfejl:=iores>0; if filfejl then begin gotoxy(10,7); write('Skal en ny fil oprettes (J/N) ? '); repeat read(kbd,svar); until svar in (.'J','j','N','n'.); if svar in (.'J','j'.) then begin (*$I-*) rewrite(datafil);(*$I+*) if iores>0 then writeln('Ikke mere plads på disketten!!') else filfejl:=false; end; end; until not filfejl; write(chr(12)); REPEAT WRITE(CHR(12)); WRITELN(' **** RØNTGENSPEKTRUM ****');WRITELN; writeln(' 0) Slette gamle datafiler.');writeln; WRITELN(' 1) Optage oversigtspektrum (0.50 grader)'); writeln; writeln(' 2) Optage finspektrum (0.25 grader)'); writeln; writeln(' 3) Udskrive data på SKÆRM.'); writeln; writeln(' 4) Udskrive data på PRINTER.'); writeln; writeln(' 5) Tegning af graf på plotter.');writeln; writeln(' 6) Stop.'); writeln; write(' Vælg et tal (0,1,2,3,4,5,6) --> '); repeat read(KBD,ch) until ch in (.'0'..'6' .);writeln(ch); CASE ch OF '0' : begin write(chr(12)); gotoxy(10,10); write('Er det ok at slette gamle data? (J/N)'); repeat read(KBD,slet) until slet in (.'J','j','N','n'.); if slet in (.'J','j'.) then begin rewrite(datafil); close(datafil); end; end; '1','2' : BEGIN if ch='1' then deltavinkel:=0.5 else deltavinkel:=0.25; write(chr(12)); if length(datafil)>2 then begin reset(datafil); read(datafil,tid,deltavinkel); writeln('Datafilen indeholder ',length(datafil)-2,' måletal'); writeln; end else begin write(' Angiv mindste vinkel for måling (helt tal) '); readln(minv); write(' Angiv største vinkel for måling (helt tal) '); readln(maxv); writeln; write(' Angiv tælletiden i sekunder ( helt tal ) ');readln(tid); writeln; rewrite(datafil); write(datafil,tid,deltavinkel); end; tristate; writeln; writeln(' Tryk på en tast hver gang en ny måling skal laves.'); writeln; vinkel:=minv; repeat write(' Vinkel :',vinkel:6:2); read(KBD,ch); impulsclk(z,round(tid)); impuls:=0; for j:=0 to round(tid)-1 do impuls:=impuls+z(.j.); writeln(' Antal impulser :',impuls:8:0); reset(datafil); seek(datafil, length(datafil) ); write(datafil,vinkel,impuls); close(datafil); vinkel:=vinkel+deltavinkel; until vinkel>maxv; tristate; end; '3' : BEGIN reset(datafil);read(datafil,tid,deltavinkel); write( chr(12) ); writeln; writeln; writeln; writeln(CON,' Tælletid :',tid:5,' sekunder.'); writeln(CON); writeln(CON,' Vinkel Bølgelængde Impulser'); writeln(CON,' ================================='); writeln(CON); WHILE NOT EOF(datafil) DO BEGIN READ(datafil,vinkel,impuls); l:=2*d*sin(vinkel*PI/180); writeln(CON,vinkel:11:2,l:12:1,impuls:13:0); END; close(datafil); writeln; writeln('Tast <RETUR> '); readln( ch ); END; '4' : BEGIN reset(datafil);read(datafil,tid,deltavinkel); writeln(LST,' Tælletid ',tid:5:0,' sekunder '); writeln(LST); writeln(LST,' Vinkel Bølgelængde Impulser'); writeln(LST,' ================================='); writeln(LST); WHILE NOT EOF(datafil) DO BEGIN READ(datafil,vinkel,impuls); l:=2*d*sin(vinkel*PI/180); writeln(LST,vinkel:11:2,l:12:1,impuls:13:0); END; close(datafil); END; '6' : (* så stopper vi *) ; '5' : begin reset(datafil);read(datafil,tid,deltavinkel);antal:=0; while not eof(datafil) do begin read(datafil,vinkel,impuls); l:=2*d*sin(vinkel*pi/180); x(.antal.):=l;y(.antal.):=impuls; antal:=antal+1; end; close(datafil); ymax:=0; for i:=0 to antal-1 do if ymax<y(.i.) then ymax:=y(.i.); xmax:=x(.antal-1.); for i:=0 to antal-1 do if xmax<x(.i.) then xmax:=x(.i.); plotstart; tegnkurve(x,y,antal,0,xmax,0,ymax); plotslut; end; END; UNTIL ch = '6'; END. «eof»