- Project Runeberg -  Modern datateknik / Nr 4 (1967) /
25

[MARC]
Table of Contents / Innehåll | << Previous | Next >>
  Project Runeberg | Catalog | Recent Changes | Donate | Comments? |   

Full resolution (JPEG) - On this page / på denna sida - Lär mer om programspråk - Kreditupplysning från datacentral

scanned image

<< 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.

25

LÄR MER
OM
PROGRAMSPRÅK

UD K 681.3.06

rr« I MODERN DATATEKNIK

1966: 10 gav jag några exempel på
räkning med reella tal, bl. a.
ekvationslös-ning och tabellsökning. Som övning kunde
läsarna beräkna den rot till ekvationen
ex = kx som ligger inom intervallet
0 < x < 1 (k skulle vara 3, 4, . . . 10).
Uppgiften kan lösas på följande sätt:

X = 0.5

DO 2 K = 3,10

AK = K

1 E = EXP(X)

D = (E — AK*X)/(E — AK)

X = X-D

IF (ABS (D) .GE.0.0001 *X)

* GO TO 1

2 WRITE (6,3) K,X

STOP

3 FORMAT (110,Fl 0.5)

END

K omvandlas till flytande tal genom den
första satsen inom DO-slingan. ex beräknas
för sig eftersom funktionen förekommer två
gånger i uttrycket för D. Beräkningen av
ex tar nämligen längre tid än resten av
slingans satser tillsammans, utom givetvis
skrivsatsen. X tilldelas ett begynnelsevärde
endast första gången. I fortsättningen får
slutvärdet efter en iteration vara
begynnelsevärde föi’ nästa.

En annan övningsuppgift gällde binär
sökning i en tabell som är sorterad i stigande
ordning. En subrutin för detta kan se ut
på följande sätt:

FUNGTION LOOKUP (X,N,XS)
DIMENSION X(l)

IF (XS.GE.X (1). AND.XS.LT.X (N))

* GO TO 1

LOOKUP = 0

RETURN

| IA = 1 •

IB = N

2 I = (IA+IB)/2

IF(IB-IA.EQ.l) GO TO 5
IF(XS-X(I)) 3,5,4

3 IB = I

GO TO 2

4 IA = I
GO TO 2

5 LOOKUP = I
RETURN
END

Man erhåller här funktionsvärdet 0 om
sök-argumentet XS ligger utanför tabellens
gränser, annars det indexvärde i som
uppfyller villkoret

Xi < XS < xi+>1

Den första av de båda IF-satserna efter
sats 2 gör att sökningen avbryts senast när
intervallet krympt till en enhet. Den andra
IF-satsen undersöker om man kommit rätt
eller om XS ligger i det undre eller det
övre intervallet.

SUBRUTINER

Programmeringen kan ofta underlättas av
att man delar upp sitt program i mindre
segment. Dessa kan utgöras av subprogram,
som länkas ihop i samband med körningen,
eller faser som kan överlagras i maskinens
minne under körningen.

I FORTRAN kan man skriva subprogram
av två typer, dels funktioner såsom
LOOKUP ovan, dels
SUBROUTINE-subprogram. De senare anropas med satsen
G ALL och skiljer sig från funktionerna
främst genom att de kan ge ett godtyckligt
antal resultat via argumenten i anropet.
Detta innebär helt enkelt att man i sin
CALL-sats talar om var resultaten skall
lagras.

Exempel: Ett subprogram som bestämmer
det största och det minsta talet i en given
tabell.

SUBROUTINE EXTREM

* (X,XMAX,XMIN,N)

DIMENSION X(l)

XMAX = X(l)
XMIN = X(l)
DO 1 I = 2,N

IF(X(I).GT.XMAX)

* XMAX = X(I)

IF(X(I).LT.XMIN)

* XMIN = X(I)

1 GONTINUE

RETURN

END

Övning: Skriv ett subprogram SORT med
anropet CALL SORT(TAB,N) där TAB
är en tabell med N st reella tal. Programmet
skall sortera talen i stigande ordning.

Till skillnad från FUNGTION- och
SUB-ROUTINE-rutiner, som är självständiga
subprogram (dvs. de kompileras för sig),
är de s. k. satsfunktionerna lokala rutiner.
De måste definieras i varje delprogram där
de behövs. En satsfunktion definieras som
namnet antyder med en enda sats, där
högerledet är ett uttryck som skall
beräknas och vänsterledet är namnet på
funktionen, följt av deras parametrar.

Exempel: Om jag i ett program måste
beräkna funktionen (f (x) = x2 — x sinx +1
på åtskilliga ställen, skriver jag
satsfunktionen:

F(X) = X*(X —SIN(X)) + 1.

Denna funktion kan sedan utnyttjas i
programmet på exempelvis följande sätt:

ALFA = F(2.*Z) / F(l. - Z)

Övning: Skriv en satsfunktion som beräknar
den större av rötterna till
andragrads-ekvationen Ax2 + Bx + G = 0.

Man kan även definiera logiska
satsfunktioner genom att typdeklarera
funktions-namnet.

Exempel: Skriv en logisk satsfunktion som
har två logiska argument och värdet sann
endast om ett argument har värdet sann
och det andra falsk.

LOGIGAL EOR, P, Q

EOR(P,Q) = (P.OR.Q). AND.

* .NOT. (P. AND.Q)

Övning: Skriv den logiska funktionen
EKV(P,Q) som är sann om båda
argumenten har samma logiska värde.

*



LÖSNINGSFÖRSLAG till uppgifterna
kan insändas till PROBLEM, MODERN
DATATEKNIK, Sveavägen 53, Stockholm
Va. ■

KREDITUPPLYSNING FRÅN DATACENTRAL

Ett privat dataregister över landets drygt 100 000 dåliga betalare upprättas i år. Varje sådant domstolsärende
tas in.

UDK 347.736

Dåliga betalare skall på ett tidigt stadium
registerföras i datamaskin. Ett företag kan
sedan prenumerera på månatliga uppgifter
om sina kunder för en årskostnad av några
kronor per kund. Det utlovar det
nystarta

de bolaget Automatisk kontokontroll AB
(AKAB), som ingår i en grupp av fem
företag. De övriga är Justitias Inkasso- &
Juridiska Byrå AB, Kapital-Kontroll AB,
Inkassoregister AB och Automation
Cen

ter AB (AG). Företagen samarbetar för
att utveckla rutiner för
kreditupplysnings-och inkassoväsendet. Gruppens produktion
utförs hos AG på en IBM 360/30. ■

MODERN DATATEKNIK 1967:4

<< prev. page << föreg. sida <<     >> nästa sida >> next page >>


Project Runeberg, Tue Jan 21 21:48:59 2025 (aronsson) (download) << Previous Next >>
https://runeberg.org/moddata/1967-4/0025.html

Valid HTML 4.0! All our files are DRM-free