Full resolution (JPEG) - On this page / på denna sida - Sidor ...
<< prev. page << föreg. sida << >> nästa sida >> next page >>
Below is the raw OCR text
from the above scanned image.
Do you see an error? Proofread the page now!
Här nedan syns maskintolkade texten från faksimilbilden ovan.
Ser du något fel? Korrekturläs sidan nu!
This page has never been proofread. / Denna sida har aldrig korrekturlästs.
39
ALGOL
-INMATNING
OCH
UTMATNING
LÄR MER
OM
PROGRAMSPRÅK
Universitetslektor Åke Björck
beskriver här ett ambitiöst
standardi-seringsförslag avseende in- och
utmatning i ALGOL.
I den ursprungliga definitionen av ALGOL
underläts avsiktligt att föreskriva
konventioner för in- och utmatning. Detta har
medfört dålig kompatibilitet mellan
(äldre) ALGOL-kompilatorer på detta
område. Sedan mars 1965 föreligger emellertid
ett internationellt standardiseringsförslag
utarbetat i huvudsak inom ACM
(Association for ComputingMachinery), vilket har
fått ett gott mottagande. Något beslut om
standardisering har dock ännu ej fattats,
varför smärre ändringar kan komma
ifråga. Förslaget, som helt håller sig inom
ALGOL, utgörs av en familj praktiskt
taget maskinoberoende procedurer.
TALFORMAT
För att ge en åskådlig bild av storheters
utseende på yttre medium används
format. De olika format, som skall användas,
sammansätts till s k formatsträngar, som
dirigerar in- och utmatningen. De
enklaste procedurerna för sådan formatstyrd
in-och utmatning är
inputn(nr,formatsträng,xl,.. .,xn)
outputn(nr,formatsträng,xl,.. ,,xn),
där n skall vara ett heltal, 0 — n — 9, som
anger det antal storheter som skall
in-eller utmatas.
Följande exempel visar en utmatning av
två tal:
output2(3,’ | + ZZ.DD/, — .5D10
+ 2D\x,y);
Första parametern anger att
utmatningen skall ske på yttre enhet med
kodbeteckning 3. Den andra parametern är en
for-matsträng, uppbyggd av de två
formatnotiserna + ZZ.DD/ och ~.5D10 + 2D. Här
betecknar D en decimal siffra och Z en
siffra, som ersätts med blankt tecken, då
den är en insignifikant nolla. De två
sista parametrarna utgör de värden, som skall
matas ut. Dessa paras vid utmatningen
ihop från vänster till höger med
formatnotiserna i formatsträngen.
Nedan följer några exempel på olika
talformats verkan vid utmatning.
Format Resultat för talet
- 13.296 1007.999
+ ZZZDDD -013 +1008
3Z3D.2D 013.30 1008.00
-3DB3D.D -000 013.3 001 008.0
— .5D10+D — .1329610 + 2 ,lOO8Olo + 4
FORMATKODER
Allmänt sammansätts en formatsträng av
en följd symboler tolkade efter en viss
kod. Betydelsen av de viktigaste
formatkoderna är:
Symbol
B
D
Z
+
10
I
t
Betydelse
Blankt tecken
Decimal siffra
Nollundertryckt siffra
Förtecken + eller —
Förtecken blank eller —
Decimalpunkt
Exponentdelsindikatorer
Variabel replikator
Ny rad
Ny sida
Enstaka tecken kan upprepas genom att
en replikator (heltal eller X) placeras
framför. På samma sätt kan ett format
inneslutet inom parentes upprepas.
Repli-katorn X innebär att antalet
upprepningar fixeras vid körningen, och kan endast
användas i samband med procedurerna
inlist och outlist (se nedan).
STANDARDFORMAT
Om format ej specificeras (dvs tom
formatsträng) sker utmatning i ett
maskinberoende standardformat t ex + D.9D10 + 3D
för tal av typ real och 15ZD för tal av
typ integer.
Inmatning behandlas i görligaste mån
som omvändningen till utmatning.
Inmatning i standardformat innebär dock att tal
stansade enligt konventionerna i ALGOL
läses. Som avgränsare mellan tal räknas
därvid:
1) alla tecken som ej kan ingå i tal
2) k eller fler mellanslag (k bestäms
t ex genom styrkort)
3) slut på rad (eller motsvarande)
Exempel: Inmatning av en följd tal till
vektorn a utnyttjande standardformat.
for i: = 1 step 1 until n do input (2/’,a[iJ)
ÖVRIGA FORMAT
Förutom talformat och standardformat
finns ytterligare fem grundformat,
nämligen strängformat, alfaformat, icke-format,
Booleskt format samt rubrikformat. Vi
ger här endast ett exempel på
användningen av rubrikformat.
outputO(3,7’EXECUTION’ f ’)
Rubrikformat motsvaras alltså ej av
någon ALGOL-storhet och kan användas
för utmatning av rubriker, tabellhuvuden
etc.
INLIST OCH OUTLIST
Möjligheter till en kraftfullare kontroll av
layout fås genom att använda de generella
procedurerna outlist(nr,layout,list) och
inlist(nr,layout,list). Parametrarna layout
och list är här procedurer, som
specificerar format och en lista av storheter. I
samband med proceduren layout ges möjlighet
till att kontrollera marginaler, att
föreskriva rad- och sidslutsprocedurer samt att
vid inmatning föreskriva åtgärder vid slut
på data.
Det är ej möjligt att här närmare
redogöra för dessa faciliteter. Några av dem
illustreras dock i ett avslutande exempel.
Följande program skriver ut de 20 första
raderna av Pascals triangel i formen
1
1 1
1 2 1
13 3 1
Utmatningen börjar på ny sida med
titelutskriften PASCALS TRIANGEL samt
utföres med dubbelt radavstånd.
begin integer n,k;
integer array a[l:20];
procedure lines;
format2(’XB,X(6Z),//’,54-3*n,n);
procedure list(tryck);
for k: = 1 step 1 until n do tryck(a[k]);
output0(3/ J ’PASCALS
TRIANGEL’//’);
for n: = 1 step 1 until 20 do
begin a[n]: = 1;
for k: = n — 1 step — 1 until 2 do
a[k]: = a[k — 1] + a[k];
outlist(3,lines,list)
end
end;
Observera användningen av
X-replika-torer i proceduren lines. Värdet av dessa
anges av de två sista parametrarna (54—
3*n) resp n.
MER ATT LÄSA:
ISO Draft Proposal on the Algorithmic
Language ALGOL. ISO/TC 97/SC 5
(Secr-24).
Tomas Ohlin. Knuth’s förslag till
in/ut-matning i ALGOL. Studentlitteratur. Lund
1967.
MODERN DATATEKNIK 1967:11
<< prev. page << föreg. sida << >> nästa sida >> next page >>