VC 20 (GV)
Anwendung des Monats

Familienplanung

In der heutigen Zeit ist Empfängnisverhütung und Geburtenkontrolle wohl etwas ganz Alltägliches. Weniger alltäglich ist allerdings der Einsatz eines Homecomputers zu diesem Zweck. Es ist dennoch ein typisches Beispiel für die statistische Auswertung von Meßergebnissen.

Nach dem Motto »Zurück zur Natur« handeln immer mehr Frauen, die auf die herkömmlichen Verhütungsmittel verzichten wollen oder diese aus gesundheitlichen Gründen nicht nehmen. Eine Pillenpause meiner Freundin brachte mich nun auf die Idee, die folgenden Berechnungen in ein Computerprogramm umzusetzen.

Die Methode der natürlichen Verhütung besteht darin, die fruchtbaren Tage eines Zyklus zu errechnen.

Zwei Ärzte, Knaus (Österreich) und Ogino (Japan) fanden voneinander unabhängig eine Verhütungsmethode heraus, die auf dem weiblichen Zyklus basiert.

Zuerst ist es wichtig, den Termin des Eisprunges zu errechnen, da eine Befruchtung nur kurze Zeit nach dem Eisprung möglich ist (etwa 6 Stunden). Knaus und Ogino fanden heraus, daß ziemlich genau 14 Tage vor der nächsten Periode der Eisprung stattfindet. Bezieht man nun die Lebensdauer der Spermen (48 Stunden) in diese Überlegung ein, so kann man die Tage der Enthaltsamkeit eingrenzen. Zählt man zum Termin des Eisprunges 266 Tage (9 Monate) hinzu, so erhält man den Termin einer eventuellen Geburt.

Konkret heißt das: Datum der ersten erfaßten Regel bis zur letzten erfaßten Regel ergibt den Beobachtungszeitraum. Daraus wird der Mittelwert für die Dauer einer Regel gebildet. Zur letzten Regel wird der Mittelwert addiert. Die Standard-Abweichung ergibt die Schwankung um diesen errechneten Termin. Schwankungsmaximum — 14 Tage = letzter Tag der Pause. Schwankungsminimum — 14 Tage — 2 Tage (Lebensdauer Spermen) = erster Tag der Pause. Mittelwert addiert zur letzten Regel — 14 Tage + 266 Tage = Termin einer eventuellen Geburt. Alle Werte werden in Stunden bezogen auf ein festes Datum umgerechnet.

Autor und Redaktion übernehmen keinerlei Haftung bei eventuellen auftretenden Komplikationen.

(Peter Sprockhoff/ev)

Ein heikles Thema

Die einzige Empfängnisverhütung, die die katholische Kirche duldet, heißt Knaus-Ogino oder realistischer Römisches Roulette. Die Methode beruht auf der Messung des Eisprungs. Näheres erfahren Sie vom Hausarzt. Der VC 20 übernimmt die Statistik, aber keine Haftung.

Immer mehr Frauen, die entweder die Pille oder andere Verhütungsmittel nicht vertragen oder nicht nehmen wollen, greifen zu Kalender und Bleistift und errechnen die »gefährlichen« Tage nach der sogenannten Knaus-Ogino-Methode, die auf dem weiblichen Zyklus basiert

Da es sich um eine statistische Methode handelt, erhöht sich die Sicherheit mit der Anzahl der Messungen. Um das Zahlenmaterial bequem zu verwalten und Rechenfehler mit Folgen weitgehend auszuschalten, bietet sich der Einsatz eines Computers an.

Das Programm ist auf einem VC 20 mit 16-KByte-Erweiterung und Diskettenstation 1541 geschrieben. Es benötigt mit Kommentaren exakt 4614 Byte RAM, kann jedoch durch Fortlassen der REM-Zeilen soweit gekürzt werden, daß es auch auf der Grundversion des VC 20 läuft.

Spezielle POKE-Befehle wurden vermieden, womit das Programm auf allen Commodore-Computern mit minimalen Korrekturen hinsichtlich der Bildschirmaufteilung, lauffähig sein sollte. Die Routinen zum Schreiben und Lesen von sequentiellen Dateien können bei Benutzung einer Datasette sehr leicht geändert werden: 1310 OPEN 2,1,0,F$ 1380 OPEN 2,1,2,F$

Nach dem Starten des Programms meldet es sich zunächst mit einer Kurzanleitung. Anschließend können Daten per Hand eingegeben oder von Diskette gelesen werden. Das Datum muß mit Komma getrennt und die Jahreszahl vierstellig eingegeben werden. Die Uhrzeit ist auf volle Stunden auf- oder abzurunden. Diese Daten werden nämlich für die statistische Aufbereitung der Meßwerte benötigt.

Nach der Eingabe werden die Daten gespeichert. Darauf erfolgt die Ausgabe aller Daten mit der Dauer zwischen der ersten und der n-ten Periode in Tagen sowie der Abweichung in Stunden (Bild 1).

Bild 1. Hardcopy der Werteausgabe

Bei brauchbaren Werten erscheinen jetzt die ersten Ergebnisse, wobei die Werte in Klammern die größte Abweichung nach oben oder unten angeben (Bild 2).

Bild 2. Hardcopy der statistischen Kennwerte

Nach Tastendruck erscheinen schließlich auf dem Bildschirm die wahrscheinlichen Werte der in diesem Zusammenhang interessierenden Ereignisse (Bild 3). Die Empfängniszeit ist in »Pause von … bis« enthalten. »Nächste P.« ist der voraussichtliche Termin der nächsten Periode. Danach kommen die (voraussichtlichen) Termine des nächsten Eisprunges und einer eventuellen Geburt

Bild 3. Hardcopy der Ergebnisausgabe

Mit einer einigermaßen zuverlässigen Berechnung ist erst nach mindestens drei eingegebenen Werten zu rechnen. Wie immer bei statistischen Aussagen, so gilt auch hier: Je mehr zuverlässige Werte vorhanden sind, desto genauer wird die Aussage. Autor und Redaktion übernehmen keinerlei Garantie für das einwandfreie Funktionieren dieser Methode.

(Peter Sprockhoff/ev)
A$ = Abweichung in Std.
D$ = Tag
F$ = Dateiname
M$ = Monat
T$ = Zeit
Y$ = Jahr
A = Feldvariable
B = Fehlerquadrate
D = Tag
H = Stunden
I = Laufvariable
J = Hilfsvariable
K = Laufvariable
M = Monat
N = Hilfsvariable
S = Std. seit 1972
T = Uhrzeit
U = Abweichung
V = Abweichung zu früh
w = Abweichung zu spät
X = Anzahl der Werte
Y = Jahr
Z = Arithmetisches Mittel
AA = Hilfsvariable
Liste der verwendeten Variablen
100 Dimensionierung für 2 Jahre
110- 170 Bedienungsanleitung
180- 200 Eingabe des Namens
220- 280 Überprüfung ob nur 1 Wert vorhanden
290- 370 Eingabe der Daten
380- 450 Maskenaufbau für erste Datenausgabe
460- 540 Berechnung der Periodendauer und Abweichung
550- 600 Ausgabe der Periodendauer und Abweichung
610- 710 Überprüfung ob die Werte geeignet sind
720- 830 Ausgabe der Pause und weiteren Daten
840- 900 Berechnung der Stunden seit 1972
910- 990 Unterroutinen
1000- 1070 Berechnung des absoluten Datums und des Jahres
1080- 1140 Berechnung des Monats
1150- 1240 Berechnung von Tag und Uhrzeit, Umwandlung von Stunden in Tage und Stunden
1250- 1280 Berechnung und Ausdruck von Datum und Hinweis
1290- 1350 File von Diskette lesen
1360- 1610 File auf Diskette schreiben
1430- 1610 Umrechnung der Variablen in String
Der Programmaufbau
10 rem**********************
20 rem** familienplanung  **
30 rem** fuer vc 20       **
40 rem** bearbeitet von   **
50 rem** peter sprockhoff **
60 rem** roonstr. 11      **
70 rem** 4790 paderborn   **
80 rem** 4614 bytes       **
90 rem**********************
100 dima(24):rem werte fuer 2 jahre
110 print"{clr}** familienplanung **"
120 print"{down}{down}alle verwendeten datenmuessen zwischen dem"
130 print"1.1.1973 - 31.12.1999 liegen."
140 print"{down}die reihenfolge der   daten darf nicht unterbrochen werden."
150 print"{down}die jahresangabe muss 4-stellig erfolgen."
160 print"{down}sind daten auf disk ? ":gosub930
170 x=0:fori=1to1000:next:print"{clr}"
180 ifa=1theninput"{down} name: ";f$:gosub1310:goto200
190 ifa<>1theninput"{down}fuer wen sollen die   daten erfasst werden ?{down}";f$:goto270
200 print"{down}sollen weitere daten  hinzugefuegt werden ?":gosub930
210 :
220 rem pruefung ob nur 1 wert
230 :
240 ifa<>1andx<2thenprint"{clr}{down}ein wert ist nicht    ausreichend !":goto270
250 ifa<>1then330
260 ifx=1anda=0then310
270 ifx>=1anda=1thenprint"{clr}"
280 :
290 rem eingabe datum & zeit mit "," getrennt
300 :
310 x=x+1:print"{down}bitte den"x".ten wert eingeben."
320 print"tag,monat,jahr,zeit   ":inputd,m,y,t:gosub860:a(x)=h:goto200
330 gosub980:ifa<>1then350
340 gosub1380
350 print"{clr}{down}berechnung ("x"werte)":v=0:w=0:aa=0
360 z=(a(x)-a(1))/(x-1):b=0
370 :
380 rem maskenaufbau
390 :
400 print"{down}datum   {SHIFT--}uhr-{SHIFT--}dau{SHIFT--}ab-"
410 printtab(8)"{SHIFT--}zeit"tab(13)"{SHIFT--}er"tab(17)"{SHIFT--}weic        {SHIFT--}    {SHIFT--}   {SHIFT--}hung"
420 fori=0to21:printtab(i)"{up}-":next
430 fork=1tox:h=a(k):gosub1030:gosub1470:ifk=1thenprint"{up}":nextk
440 s=a(k)-a(k-1):print"{up}"tab(14)int((s/2.4)/10)
450 :
460 rem berechnung dauer und abweichung
470 :
480 u=s-z:a$=str$(int(u)):print"{up}"tab(18)a$
490 b=b+u*u
500 ifu>wthenw=u
510 ifu<vthenv=u
520 nextk:gosub960:ifa=0then110
530 ifa=1thenaa=1
540 :
550 rem ausgabe der dauer und abweichung
560 :
570 print"{clr}{down}ergebnisse:":print:w=int(0.5+w):v=-int(0.5+abs(v))
580 h=z:gosub1220:print"mittel"d;"tage";t;"std.";"{down}       (+";w;"/";v;")"
590 a=b/(x-1):a=sqr(a):print"{down}streuung"int(10*a+0.5)/10;"std."
600 :
610 rem pruefen ob werte geeignet
620 :
630 b$="sehr gut":ifa>14thenb$="gut"
640 ifa>24thenb$="befriedigend"
650 ifa>44thenb$="mangelhaft"
660 ifa>54thenb$="ungenuegend"
670 print"{down}bemerkung: werte sind "
680 print"     "+b$+".":print
690 print"{down}{down}{down}{down}{down}{down} bitte taste druecken"
700 poke198,0:wait198,1
710 :
720 rem ausgabe der pause und naechste daten
730 :
740 print"{clr}":s=a(x)+z
750 h=s-a-410:b$="pause von   ":gosub1270
760 h=s+a-300:b$="      bis   ":gosub1270
770 h=s:b$="naechste p. ":gosub1270
780 h=s-336:b$="eisprung    ":gosub1270
790 h=s+6048:b$="geburt      ":gosub1270
800 print:gosub970:ifa=1then350
810 ifa=0thenclr:print"{clr}"spc(225)"danke schoen":end
820 end
830 :
840 rem berechnung der stunden seit 1.1.1972 0.00 uhr
850 :
860 y=y-1972:ify<1ory>27thenprint"jahr ist unzulaessig !":stop
870 h=24*(365*y+int(y/4)+d)+t:if(int(y/4)=y/4)andm<3thenh=h-24
880 fori=1tom:readd:next:restore:h=h+24*d:return
890 data0,31,59,90,120,151,181,212,243,273,304,334,365
900 :
910 rem frage mit ja oder nein beantworten
920 :
930 j=1:n=0:input"{down}(j/n)";a$:ifa$="j"thena=1:return
940 ifa$="n"thena=0:return
950 print"{down}mit j oder n antworten":goto930
960 print"{down}sind die werte brauch-bar ?":gosub930:return
970 print"{down}wollen sie die terminenoch mal sehen ?":gosub930:return
980 print"{down}sollen daten abgespei-chert werden ?":gosub930:return
990 :
1000 rem berechnung des absoluten datums aus h (seit 1972)
1010 rem berechnung des jahres
1020 :
1030 y=1972:h=h-8784:ifh<0thenprint"fehler !":stop
1040 y=y+1:ifh<8760then1100
1050 ifint(y/4)<>y/4thenh=h-8760:goto1040
1060 ifh>=8784thenh=h-8784:goto1040
1070 :
1080 rem berechnung des monats
1090 :
1100 m=-1
1110 m=m+1:n=j:readj:ifm>1andint(y/4)=y/4thenj=j+1
1120 ifh>=j*24then1110
1130 restore:h=h-n*24
1140 :
1150 rem berechnung von tag und uhrzeit
1160 :
1170 gosub1220:d=d+1
1180 return
1190 :
1200 rem umwandlung von stunden in tage und stunden
1210 :
1220 ifh>2000orh<0thenprint"{down}stunden ausserhalb desbereichs !":stop
1230 d=int(h/24):t=int(h-24*d):return
1240 :
1250 rem berechnung und ausdruck von datum mit hinweis
1260 :
1270 gosub1030:gosub1460:print:return
1280 :
1290 rem file von diskette lesen
1300 :
1310 open2,8,2,f$+",s,r"
1320 input#2,f$:input#2,x
1330 forj=1tox:input#2,a(j):next
1340 close2:return
1350 :
1360 rem file auf diskette schreiben
1370 :
1380 open2,8,2,"@:"+f$+",s,w"
1390 print#2,f$:print#2,x
1400 forj=1tox:print#2,a(j):next
1410 close2:return
1420 :
1430 rem ausdruck von datum und hinweis
1440 rem umrechnung von d,m,y,t in string
1450 :
1460 printb$;
1470 d$=str$(d):m$=str$(m):y$=str$(y-1900):t$=str$(int(t+0.5)):k$=".":u$=".00"
1480 y$=right$(y$,2)
1490 iflen(t$)=2thent$=right$(t$,1)
1500 iflen(t$)>2thent$=right$(t$,2)
1510 iflen(d$)=3andlen(m$)=2then1550
1520 iflen(d$)=2andlen(m$)=3then1560
1530 iflen(d$)=3andlen(m$)=3then1570
1540 d$=right$(d$,1):m$=right$(m$,1):goto1580
1550 d$=right$(d$,2):m$=right$(m$,1):goto1580
1560 d$=right$(d$,1):m$=right$(m$,2):goto1580
1570 d$=right$(d$,2):m$=right$(m$,2):goto1580
1580 ifaa=1then1600
1590 printd$+k$+m$+k$+y$tab(9)t$+u$:return
1600 printd$+k$+m$+k$+y$
1610 printtab(12)t$+u$;" uhr":return
Listing »Familienplanung«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →