• No results found

Software t.b.v. een beeldschermexperiment naar de invloed van partikels op declaratieve vraagzinnen

N/A
N/A
Protected

Academic year: 2021

Share "Software t.b.v. een beeldschermexperiment naar de invloed van partikels op declaratieve vraagzinnen"

Copied!
36
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Software t.b.v. een beeldschermexperiment naar de invloed

van partikels op declaratieve vraagzinnen

Citation for published version (APA):

Keulers, M. L. B. (1988). Software t.b.v. een beeldschermexperiment naar de invloed van partikels op declaratieve vraagzinnen. (IPO-Rapport; Vol. 634). Instituut voor Perceptie Onderzoek (IPO).

Document status and date: Gepubliceerd: 24/02/1988

Document Version:

Uitgevers PDF, ook bekend als Version of Record

Please check the document version of this publication:

• A submitted manuscript is the version of the article upon submission and before peer-review. There can be important differences between the submitted version and the official published version of record. People interested in the research are advised to contact the author for the final version of the publication, or visit the DOI to the publisher's website.

• The final author version and the galley proof are versions of the publication after peer review.

• The final published version features the final layout of the paper including the volume, issue and page numbers.

Link to publication

General rights

Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain

• You may freely distribute the URL identifying the publication in the public portal.

If the publication is distributed under the terms of Article 25fa of the Dutch Copyright Act, indicated by the “Taverne” license above, please follow below link for the End User Agreement:

www.tue.nl/taverne

Take down policy

If you believe that this document breaches copyright please contact us at:

openaccess@tue.nl

(2)

Instituut voor Perceptie 0nderzoek Postbus 513, 5600 MB Eindhoven

Rapport no. 634

Software t.b.v. een beeldscherm-experiment naar de invloed van

partikels op declaratieve vraagzinnen Marc Keulers

(3)

Inhoud

1 INLEIDING 2

2 GLOBALE BESCHRIJVING VAN HET PROGRAMMA 4 3 KORTE BESCHRIJVING VAN DE PROCEDURES 6

4 GEBRUIKERSHANDLEIDING ZINNEN 10

(4)

Hoofdstuk

1

INLEIDING

Op het IPO wordt onderzoek verricht naar natuurlijke taal mens-machine dialogen. In een dialoog bezit een uiting (zin) een communicatieve functie. Dit kan zijn een vraag, een antwoord, etc. Het huidige onderzoek heeft zich toegespitst op het herkennen van vragen welke het syntactische kenmerk van een declaratief bezitten. Uit het onderzoek van Beun (1986} kwam naar voren dat partikels (woordjes zoals dus, toch, ook etc) wellicht van invloed zijn op de keuze van een proefpersoon of hij/zij een declaratieve zin als vraag ervaart, ja of nee. Dit onderzoek was auditief. Orn lingu'istische invloeden te kunnen onderscheiden van auditieve invloeden is besloten een soortgelijk onderzoek visueel (op beeldscherm) te doen. De stageopdracht was tweedelig. Het eerste deel bestond uit het herschrijven van een compu-terprogramma en het tweede deel bestond uit het uitvoeren van een expe-riment (Keulers, 1988). In dit verslag (het eerste deel} wordt uitgelegd hoe een PASCAL programma werkt dat zinnen op een beeldscherm afbeeldt.

Het bestaande programma voor woordrepresentatie was afkomstig van C.D.J.M. van der Pol en werd eerder gebruikt bij experimenten op het IPO. Van <lit programma bestaat geen handleiding. Aan het nieuwe programma werden enkele randvoorwaarden gesteld. Het programma moest automa-tisch gegevens opslaan van het experiment zoals gebruikte zin, antwoord

(ja

of nee) en benodigde responsietijd. Deze gegevens moesten later statistisch gebruikt kunnen worden. Verder moest aan de proefpersoon gedurende de sessie meegedeeld worden hoever hij/zij was. Bovendien moest tijdens een sessie het programma onderbroken kunnen worden met mogelijkheid tot herstel.

(5)

De beschrijving van het programma is opgedeeld in drie blokken. In hoofdstuk 2 vindt men een globale beschrijving van het programma. Hier-in wordt uitgelegd hoe het programma reageert op Hier-input van de proefleider. Hoofdstuk 3 beschrijft kort hoe de procedures werken die het programma gebruikt. In hoofdstuk 4 wordt beschreven hoe men om moet gaan met het programma. Verder worden er aanbevelingen gedaan om fouten te voorkomen en voor eventuele uitbreiding van de programmatuur. In de bijlage tenslotte is een listing van het programma te vinden.

(6)

Hoofdstuk 2

GLOBALE BESCHRIJVING

VAN HET PROGRAMMA

In <lit hoofdstuk wordt beschreven hoe het programma werkt. Naast het punts-gewijs doorlopen van het programma wordt er ook beschreven wat de proeflei-der moet doen en wat het programma doet. De globale beschrijving van het programma is terug te vinden als commentaar bij de listing van het totale programma.

Het programma ziet er als volgt uit:

a) bepaling van de invoerfile (datafile) b) invoer van de datafile

c) invoer van de naam van de proefpersoon of stopcommando

IF invoer=stop THEN GOTO h

d) registratie van de experimentgegevens (sessie) e) uitvoer van de experimentgegevens

f) verandering van de invoerfile (datafile)

IF verandering=nee THEN GOTO a ELSE GOTO c

h) einde programma

In het programma wordt de loops naar a en c bij f anders uitgevoerd. De statements a tot en met c worden na f uitgevoerd als a' tot en met c'. Het programma springt niet terug maar gaat of naar a' of naar c'.

(7)

ad a) De proefleider maakt een keuze uit een van twee aangeboden datafiles. De aangeboden datafiles zijn of TEXTANEEN.DAT en

TEXTANTWEE.DAT of TEXTVREEN.DAT en TEXTVRTWEE.DAT. Dit hangt af van de gebruikte versie van het programma. Men kan kiezen uit ZINNENVR.PAS en ZINNENAN.PAS. De keuze hangt samen

met de vraag die men de proefpersonen gaat stellen (zie hoofdstuk 4). ad b) Alie zinnen die voor het experiment nodig zijn worden ingelezen. ad c) De proefleider typt de naam in van de proefpersoon of besluit met het

experiment te stoppen.

ad d) De proefpersoon begint met de sessie en geeft bij elke zin een antwoord. Het programma houdt bij hoe lang de proefpersoon over een antwoord heeft gedaan.

ad e) Het programma maakt een uitvoerfile waar de naam van de proefpersoon in staat en de gebruikte datafile. Verder worden de zinnen vermeld

met daarvoor het antwoord en de benodigde tijd.

ad f) De proefleider moet aangeven of dezelf de datafile nog een keer gebruikt gaat worden of dat een andere ingelezen moet worden. De proeflei-der heeft bij nog een keer gebruiken van dezelfde datafile het voordeel dat deze niet opnieuw ingelezen hoeft te worden. Dit be-spaart tijd. Het inlezen van een datafile duurt ongeveer 10 minuten.

(8)

Hoofdstuk 3

KORTE BESCHRIJVING

VAN DE PROCEDURES

De in het programma gebruikte procedures worden in dit hoofdstuk be-schreven. Naast een korte omschrijving hoe de procedure werkt, worden, indien aanwezig, de gebruikte globale parameters beschreven.

Het gebruik van drie array's voor de verwerking van de zinnen {zie bijvoorbeeld procedure FILEIN) is een gevolg van het feit dat de PASCAL programmatuur bij de Apple-Macintosh personal computer niet toestond twee-dimensionale array's met een lengte groter dan 100 te gebruiken.

procedure INITALL

De procedure INITALL initialiseert en aktiveert het beeldscherm, de cursor en de input. Na de initialisatie zijn deze te

besturen door andere procedures of funkties.

procedure INITTEXT

(9)

procedure PRINTSTRING (Input: tekst : strl00; x, y, txfont, txsize : integer; txface : style)

De procedure PRINTSTRING beeld een string van karakters af op het beeldscherm volgens de bijgeleverde parameters.

globale parameters: - tekst (strlO0) - x (integer) - y (integer) - txfont (integer) - txsize (integer) - txface (styleitem)

de string van af te beelden karakters. de horizontale startpositie.

de vertikale startpositie. font (bepaald lettertype). lettergrootte.

letterstijl.

procedure FILEIN (Input: infile : string. Output: var sens0l, sens02, sens03 : zinbank; var deel0l, deel02, deel03 : telbank; var nrzinnen ; integer)

De procedure FILEIN leest zinnen in uit een datafile en maakt ze klaar voor verwerking.

globale parameters: - infile - sens0l - sens02 - sens03 - deel0l - deel02 - deel03 - nrzinnen (string) (zinbank) (zinbank) (zinbank) (telbank) (telbank) (telbank) (integer)

de in te lezen datafile met zinnen. de zinnen 1 t/m 100.

de zinnen 101 t/m 200. de zinnen 201 t/m 300.

de lengte van de zinnen 1 t/m 100. de lengte van de zinnen 101 t/m 200. de lengte van de zinnen 201 t/m 300. het aantal ingelezen zinnen.

procedure DIVTEXT (Input: sens0l, sens02, sens03 : zinbank; deel0l, deel02, deel03 : telbank; i : integer)

De procedure DIVTEXT maakt van een zin die te lang is om op beeldscherm te representeren een aantal (ten hoogste 3) deelzinnen die elk wel op beeldscherm te representeren zijn. De lengte van de

oorspronkelijke zin moet kleiner zijn dan 80 karakters, inclusief spa ties. De zin wordt afgebroken op een spa tie nooit op een karakter. globale parameters:

(10)

- zinlen - i - sens0l - sens02 - sens03 - deel0l - deel02 - deel03 (constante) (integer) (zinbank) (zinbank) (zinbank) (telbank) (telbank) (telbank)

de maximale lengte van de zin. nummer van de zin.

de zinnen 1 t/m 100. de zinnen 101 t/m 200. de zinnen 201 t/m 300.

de lengte van de zinnen 1 t/m 100. de lengte van de zinnen 101 t/m 200. de lengte van de zinnen 201 t/m 300.

procedure VERWERK (Input: sens0l, sens02, sens03 : zinbank; resul0l, resul02, resul03 : letbank; time0l, time02, time03 : telbank; nrzinnen : integer;

esc : char)

De procedure VERWERK slaat de experiment-gegevens (respons en reactietijd) op. Tevens geeft de procedure een geluidsignaal indien er 50,150 en 250 van de 300 zinnen geweest zijn. Het is verder mogelijk het programma te onderbreken op een willekeurige plaats.

globale variabelen: - sens0l - sens02 - sens03 - resul0l - resul02 - resul03 - time0l - time02 - time03 - nrzmnen - esc (zinbank) (zinbank) (zinbank) (let bank) (let bank) (let bank) (telbank) (telbank) (telbank) (integer) (char) de zinnen 1 t/m 100. de zinnen 101 t/m 200. de zinnen 201 t/m 300.

de resultaten van de zinnen 1 t/m 100. de resultaten van de zinnen 101 t/m 200. de resultaten van de zinnen 201 t/m 300. de benodigde tijd voor zinnen 1 t/m 100. de benodigde tijd voor zinnen 101 t/m 200. de benodigde tijd voor zinnen 201 t/m 300. het aantal ingelezen zinnen.

geeft aan of het programma onderbroken moet worden (char="f').

procedure FILEOUT (Input: sens0l, sens02, sens03 : zinbank; resul0l, resul02, resul03 : letbank; time0l, time02, time03 : telbank; invoer, naam : strlO0; nrzinnen : integer)

(11)

experimentgegevens en zinnen ook de gegevens aangaande de proefpersoon en de gebruikte datafile bevat.

globale parameters: - sens0l - sens02 - sens03 - resul0l - resul02 - resul03 - time0l - time02 - time03 - naam - mvoer - nrzinnen (zinbank) (zinbank) (zinbank) (let bank) (let bank) (let bank) (telbank) (telbank) (telbank) (string) (string) (integer) de zinnen 1 t/m 100. de zinnen 101 t/m 200. de zinnen 201 t/m 300.

de resultaten van de zinnen 1 t/m 100. de resultaten van de zinnen 101 t/m 200. de resultaten van de zinnen 201 t/m 300. de benodigde tijd voor zinnen 1 t/m 100. de benodigde tijd voor zinnen 101 t/m 200. de benodigde tijd voor zinnen 201 t/m 300. naam van de proefpersoon.

gebruikte versie van de datafile. het aantal ingelezen zinnen.

(12)

Hoofdstuk

4

GEBRUIKERSHANDLEIDING

ZINNEN

Dit hoofdstuk beschrijft de manier waarop een gebruiker (proefleider) kan omgaan met het programma. Verder wordt er beschreven wat hij/zij moet doen om fouten te voorkomen en worden er tips gegeven om snel te werken. Men treft twee 3.5 inch floppy's aan met daarop twee programma's, namelijk ZINNENAN.PAS en ZINNENVR.PAS. ZINNENVR.PAS gaat uit van de vraag "Is de aangeboden zin een vraag'?". ZINNENAN.PAS gaat uit van de vraag "Is de aangeboden zin een antwoord'?". Het verschil tussen de twee programma's is dat bij ZINNENVR.PAS alleen met de datafiles TEXTVREEN.DAT en TEXTVRTWEE.DAT en bij ZINNENAN.PAS met de datafiles TEXTANEEN.DAT en TEXTANTWEE.DAT gewerkt kan wor-den. Dit verschil komt tot uiting in kleine verschillen in het programma (zie bijlage). Dat er twee programma's gemaakt zijn is vanwege het feit dat men zo eenvoudig een antwoordfile met als vraag "Is de aangeboden zin een vraag'?" kan onderscheiden van een antwoordfile met als vraag "Is de aangeboden zin een antwoord'?". Ze staan namelijk op twee verschillende floppy's. Verder levert de tweesplitsing het voordeel op dat men tijdens een sessie reeds de antwoorden van de vorige sessie kan kopieeren en printen.

De programma's starten allebei vanzelf op, zodat men door het in-brengen van de floppy in een Apple-Macintosh computer het experiment kan starten. Eenmaal opgestart wordt aan de proefleider gevraagd welke datafile hij/zij gebruiken wil. De proefleider heeft hierbij de keus uit twee datafiles. Voor de floppy met ZINNENAN.PAS zijn dat de datafiles

(13)

TEXTANEEN.DAT en TEXTANTWEE.DAT en voor ZINNENVR.PAS de datafiles TEXTVREEN.DAT en TEXTVRTWEE.DAT. Het is de be-doeling de datafile zo in te voeren als ze op beeldscherm gevraagd wordt. Gebeurt dat niet dan komt dezelfde vraag nog eens. Vervolgens wordt om geduld gevraagd ( bij 300 zinnen ongeveer 10 minuten, de inleestijd van de zinnen). Hierna kan men de naam van de proefpersoon intypen of het programma stoppen door 'stop' in te typen. Is dit gebeurt dan start de computer automatisch met het op beeldscherm afbeelden van zinnen.

De proefpersoon heeft de beschikking over een kastje met daarop een rode en een groene druktoets. Indien de proefpersoon een vraag beves-tigend wil beantwoorden moet hij/zij op de groene knop drukken, indien niet bevestigend op de rode. Het kastje vervangt de muis van de computer en men client de connector, net zo als de muis, aan de achterkant van de computer in de contra-connector (voor de muis) te steken. Door een druk op de groene toets simuleert het kastje een enkele klik van de muis, een druk op de rode toets simuleert een dubbele klik van de muis. Een druk op de groene toets komt overeen met ja en een druk op de rode toets met nee als antwoord van de proefpersoon. Na een druk op een van beide toetsen wordt automatisch een nieuwe zin op het beeldscherm afgebeeld.

Na een sessie wordt er gevraagd of er nog eens gebruik wordt gemaakt van dezelfde invoerfile (datafile). Men kan overstappen op een andere datafile, hetgeen weer ongeveer 10 minuten inleestijd vergt. Vervolgens kan men de naam van de proefpersoon intypen of door middel van 'stop' het programma stoppen.

Het is belangrijk op te merken dat bij het gebruik van beide datafiles voor een en dezelfde persoon (of voor twee verschillende personen met dezelfde naam) men onderscheid moet maken tussen de ingetypte namen anders wordt de eerste uitvoerfile vernietigd.

Orn het programma te onderbreken moet men de letter 'q' intoetsen. Dit kan gedurende de hele sessie. Men krijgt een mededeling op beeldscherm te zien waarna men kan kiezen om te stoppen 'exit' of om door te gaan 'verder' of een ander combinatie van letters. Indien men stopt dan wordt er geen uitvoerfile van die sessie gemaakt en zijn alle gegevens vernietigd. Wil men doorgaan dan begint het programma weer met het tonen van de laatst op het beeldscherm verschenen zin.

Als men het programma stopt komt men in het normale Apple-Macin-tosch besturingsprogramma. Door de floppy uit de machine te halen is het

(14)

systeem weer startklaar. Men kan het programma ook opstarten door de machine even aan en uit te schakelen. Dit is echter niet aan te bevelen aangezien in zo'n geval de floppy beschadigd kan worden. Is men klaar dan moet men de uitvoerfiles van de floppy copieren op een andere floppy daar anders teveel ruimte op de floppy in beslag genomen wordt.

Voor het draaien van een sessie heeft men slechts een computer met floppy-station nodig. Een harddisk is niet nodig. Wil men echter het pro-gramma uitbreiden dan is het noodzakelijk dat men op harddisk overstapt. Het huidige programma is dermate groot dat de systeemgrenzen van de Apple-Macintosh computer nagenoeg bereikt zijn. De totale beschikbare ruimte is 60 blocks. Hiervan wordt 27 blocks in beslag genomen door een van de datafiles en 27 blocks door het programma ZINNEN. Er blijft dus nog 6 blocks over, hetgeen zeer weinig is. Daarom is bij het op de floppy gebruikte pascalprogramma geen tekst aanwezig.

(15)

Hoofdstuk 5

LITERATUUR

Beun, R.J. (1986) Declarative Question Acts: Two experiments on iden-tification. IPO manuscript no. 557.

Keulers, M. (1988) Een experiment t.b.v. een onderzoek naar de invloed van partikels op declaratieve vraagzinnen. To appear.

(16)

BIJLAGE

Listing van de programma's ZINNENAN.PAS en ZINNENVR.PAS Van ZINNENVR.P AS is alleen het programma en zijn niet de declaraties en procedures afgedrukt. Dit omdat ZINNENVR.PAS alleen van ZINN EN AN .PAS verschilt in het te geven antwoord op de vraag welke datafile er gebruikt gaat worden ( zie listing).

(17)

program ZINNEN; {versie zinnenan.pas} uses

{**************************************************************************}

{ Quickdrawl en Quickdraw2 zijn hulp programma's van Mac Intosch die het { mogelijk maken iets op scherm te tekenen.

{**************************************************************************}

Quickdrawl, Quickdraw2;

{**************************************************************************}

const space == ' , • I ster

=

'*'; everyevent

=

-1; amsterdam = 48; fipo

=

28; grootte

=

48; grote18

=

18; grote24

=

24; grote28

=

28; grote36

=

36; zinlen = 38; mDownmask = 2; keyDownmask

=

8; mousedown

=

1; mouseup

=

2; dubbelclick

=

60; TextFace

=

$A888; BitAnd

=

$A858; q

=

113; charCodeMask

=

$000000FF;

{stopkarakteristiek voor het inlezen van een zin} {font} {font} {

{

{lettergrootte

{maximale regellengte op beeldscherm}

(18)

type

strl00

=

string[l00];

str080

=

string[80]; {lengte van de zin} zinbank = array [1. .100] of str080;

telbank

=

array[l. .l00J of integer; letbank

=

array [1. .100] of char;

styleitem

=

(bold, italic, normal); style= set of styleitem;

{letterstijl}

{**************************************************************************}

var

sens03, sens0l, sens02 : zinbank; textscreen, target : Rect;

WindowPtr, ScreenPtr, saveport screenport : grafport;

txsize, txfont, i, p, nrzinnen txface : styleitem;

GrafPtr; integer;

naam, tekst, name, infile, invoer, keuze: strl00; resul0l, resul02, resul03 : array[l •. l00J of char;

deel, deelOl, deel02, deel03 : array[l .. l00J of integer; time0l, time02, time03 : array[l .. 100] of real;

count : longint; esc, inv: char;

{**************************************************************************}

{ DE PROCEDURES

{**************************************************************************}

procedure initall;

{**************************************************************************)

De procedure INITALL initialiseert en aktiveert het beeldscherm, de { cursor en de input eventqueu. Na de initialisatie zijn deze te besturen { door andere procedures of funkties.

(19)

begin getport(saveport); InitGraf(@thePort); flushevents(everyevent, 0); initcursor; hidecursor; screenptr := @screenport; openport(screenptr);

{initialiseren van een grafische mode} (eventqueu leeg maken}

hideall; eraserect(screenptrh.portrect); end;

{**************************************************************************}

procedure inittext;

(**************************************************************************}

{ De procedure INITTEXT definieert het scherm van de monitor

{**************************************************************************}

begin with textscreen do begin top := 38; left := 0; bottom:= 342; right := 512; end; settextrect(textscreen); Showtext; end; {bovenste lijn} { linkerkantli jn} { onderste li jn} {rechterkantlijn}

{scherm wordt zichtbaar}

{**************************************************************************}

procedure printstring (tekst x, y, txfont, txsize txface

strl00; integer; style);

(20)

De procedure PRINTSTRING beeld een string van karakters af op het { beeldscherm volgens de bijgeleverde parameters

{*****************~********************************************************}

begin

if txface

<>

[normal] then InLineP(textface, txface) else InLineP(textface, []); textfont(txfont); textsize(txsize); moveto (x, y) ; drawstring(tekst); end; (startpositie tekst}

{**************************************************************************}

procedure filein ( infile var sensOl, sens02, sens03 var deelOl, deel02, deel03 var nrzinnen string; zinbank; telbank; integer) ;

{**************************************************************************}

De procedure FILEIN leest zinnen uit een datafile in en maakt ze klaar { voor verwerking.

{**************************************************************************}

var zinfile : text; ready boolean; kar: char; 1, i, j

.

.

integer;

zintestOl packed array[l .. 80] zintest02 packed array[l .. 80] zintest03 packed array[l .. 80] begin

of char; of char; of char;

(zin volledig ingelezen (true)}

(hulparry's} {

{ filein printstring('Even geduld a.u.b.', 35, 175, amsterdam, grootte, [italic]);

(21)

i := 1;

while not eof(zinfile) do begin for j

:=

1 to 80 do begin zintestOl[j] := space; zintest02[j] := space; zintest03[j] := space; end;

{nurraner van de zin}

{leegmaken van de hulparray's}

j := 1; {karakter van de i-de zin}

ready:= false;

while (not ready) and (not eof(zinfile)) do {lees de i-de zin in} begin

read(zinfile, kar); if kar

<>

ster then

begin if i < 101 then zintestOl[j]

:=

kar; if ((i

>

100) zintest02 [ j] if ( (i

>

200) zintest03 [j] end else ready := true; j := j + l; end; if i < 101 then begin and (i

<

:= kar; and (i

<

:= kar;

sensOl [i] := zintestOl; deelOl [i] := j;

end;

201))

301))

if ((i > 100) and (i < 201)) then begin 1

:=

i - 100; sens02 [l] := zintest02; deel02 [l] := j; then then

het vullen van de hulparry's

{zin is ingelezen} {volgend karakter}

wegschrijven van de i-de zin in een tweedimensionaal array

(22)

begin 1 := i - 200; sens03[1] :=.zintest03; dee103 [1) := j; end; i := i + 1; end; {volgende zin} i := i - 1; nrzinnen := i; close(zinfile);

{het aantal verwerkte zinnen}

end; { filein J

{**************************************************************************}

procedure Divtext (sensOl, sens02, sens03 zinbank; deelOl, dee102, dee103 telbank; i integer);

{**************************************************************************}

De procedure DIVTEXT maakt van een zin die te lang is om op beeldscherm te representeren een aantal (ten hoogste 3) deelzinnen die elk wel op beeldscherm te representeren zijn. De lengte van de eigenlijke zin meet kleiner zijn dan 80 karakters, inclusief spaties. De zin wordt

afgebroken op een spatie, nooit op een karakter.

{**************************************************************************}

var

z, t, f, 1, m, k, p: integer;

hulpOl, hulp02, hulp03, help : packed array[l .• 80) of char; sens : array[l .. 100) of str080; hulparry's} begin if i < 101 then begin p := i; deel[p] := deelOl[p]; sens [p) := sensOl [p); end;

(23)

p := i - 100;

deel [p] := deel02 [p]; sens[p] := sens02[p]; end;

daarvan.

if ((i > 200) and (i < 301)) then begin

p

:=

i - 200;

deel[p] := deel03[p]; sens[p] := sens03[p]; end;

if deel[p] > zinlen then begin

z := 0; t := zinlen; help:= sens[p];

while help[t) <> space do t := t - 1; k := 1; while k <> t do begin hulpOl[k] := help[k]; k := k + 1; end; k := t; m := t; 1 := t + zinlen; if deel[pJ > 1 then begin t := l; z := 1;

while help[t] <> space do t := t - 1; m := 1; while k <> t do begin hulp02[m]

:=

help[k]; m := m

+

l;

{bepaling of de zin langer is dan toegestaan)

{het zoeken naar het afkappunt tin de zin)

{inlezen van het eerste gedeelte} {van de i-de zin

{bepaling of de zin nog een keer {afgekapt meet worden. Ja (z=l)

{bepaling tweede afkappunt}

(24)

end; f := l; while k < deel[p] do begin hulp03[f] := help[k]; k := k

+

l; f := f

+

l; end; if (z = 0) then begin printstring(hulp0l, 20, printstring(hulp03, 20, end else begin printstring(hulp0l, 20, printstring(hulp02, 20, printstring(hulp03, 20, end; end else 150, fipo, 200, fipo, 150, fipo, 200, fipo, 250, fipo,

inlezen van het tweede of derde gedeelte van de i-de zin (derde z=l) grote24, grote24, grote24, grote24, grote24, {afbeelden op beeldscherm} [bold]); [bold]); [bold]); [bold]); [bold]);

printstring (sens [pJ, 20, 150, fipo, grote24, [bold]); end;

{**************************************************************************}

procedure Verwerk sens0l, sens02, sens03 zinbank; resul0l, resul02, resul03 letbank; time0l, time02, time03 telbank; nrzinnen integer;

esc char);

{**************************************************************************}

{ De procedure VERWERK slaat de experimentgegevens (antwoord en tijd) op. } { Tevens geeft de procedure een geluidsignaal indien er 50, 150 en 250 van} { de 300 zinnen geweest zijn. Het is verder mogelijk het prograrrana te

(25)

var

i : integer;

myevent : eventRecord; teller, charcode, count let, ver: char;

begin i := l; ver := 't';

longint;

while getnextevent(mDOwnmask, myevent) do

while ((i <> nrzinnen) and (esc = 't')) do begin

eraserect(screenptr~.portrect); teller:= tickcount;

while ((tickcount - teller) < 30) do begin

{ verwerk)

{leegmaken van het buffer)

{leegt gedurende een halve if getnextevent(mdownmask, myevent) then {seconde constant het

buf-flushevents(everyevent, 0); end;

(fer, indien nodig.

Divtext(sens0l, sens02, sens03, deel0l, deel02, deel03, i); {beeld een} {zin af teller:= tickcount;

while ((tickcount - teller) < 30) do

begin (leegt gedurende een halve

if getnextevent(mdownmask, myevent) then (seconde constant het buf-flushevents(everyevent, 0); end; if i

=

50 then sysbeep(lS); if i

=

150 then begin sysbeep(lS); sysbeep(15); end; if i

=

250 then begin sysbeep(15);

{fer, indien nodig.

{een keer "beep"}

(twee keer "beep")

(26)

end;

let := 'o'; ver := 't';

count := tickcount; {tijd begint te lopen} flushEvents(everyevent, 0);

while ((let= 'o') and (esc

=

't') and (ver

=

't')) do begin

if getnextevent(keyDownmask, myEvent) then {toets ingedrukt ?} begin

charCode := LinLineF(Bitand, myEvent.message, charCodeMask); if (charCode

=

q) then

begin {onderbreek het programma}

eraserect(screenptrA.portrect);

printstring('U heeft het programma onderbroken op een ', 20, 100, fipo, grote24, [italic]);

printstring('onbehoorlijke wijze ! U heeft hiermee de', 20, 150, fipo, grote24, (italic]);

printstring('data van de proefpersoon vernietigd fipo, grote24, [italic]);

Typ', 20, 200,

printstring('"exit" om te stoppen, typ "verder" om ver-', 20, 250, fipo, grote24, (italic]);

printstring('der te gaan zonder ongelukken !!!

!',

20, 300, fipo, grote24, [italic]);

moveto (20, 50); readln (name) ;

if name= 'exit' then begin

eraserect(screenptrA.portrect); esc := 'f';

ver := 'f'; end;

if name<> 'exit' then begin eraserect(screenptrA.portrect); esc := 't'; ver := 'f'; end; end;

{stop het programma}

(27)

flushevents(everyevent, 0); if ver

=

't' then

begin

flushevents(everyevent, 0);

if getnextevent(mDownrnask, myEvent) then begin

teller := tickcount;

{er is geantwoord}

while ((tickcount - teller) < dubbelclick) do

;

flushevents(everyevent, 0);

if getnextevent(mDownMask, myEvent) then let := 'n' else let := 'j' end; end; end; if ver

=

't' then

{het antwoord is nee}

{het antwoord is ja}

begin {wegschrijven van de experimentgegevens}

if i < 101 then begin

resul0l [i] := let;

time0l[i] := ((tickcount - count) / 6); end;

if ((i > 100) and (i < 201)) then begin

p := i - 100; resul02[p] := let;

time02[p]

:=

((tickcount - count) / 6); end;

if ((i > 200) and (i < 301)) then begin

p

:=

i - 200; resul03[p] := let;

time03[p] := ((tickcount - count) / 6); end;

(28)

end; { verwerk} {*****************~********************************************************}

procedure fileout sens0l, sens02, sens03 zinbank; resul0l, resul02, resul03 letbank; time0l, tirne02, tirne03 telbank; invoer, naam strl00;

nrzinnen integer);

{**************************************************************************} De procedure FILEOUT rnaakt een outputfile die naast de

experimentgegevens en zinnen ook de gegevens aangaande de proefpersoon en de gebruikte datafile bevat.

{**************************************************************************} var uitfile : text; i : integer; begin eraserect(screenptrA.portrect);

printstring('Hartelijk dank voor het meedoen aan dit', 20, 100, fipo, grote18, [italic]);

printstring('experirnent ! Wij hopen dat u voor een', 20, 150, fipo, grotel8, [italic]);

printstring('ander experiment ook nog eens beschikbaar', 20, 200, fipo, grotel8, [italic]);

printstring('zult zijn ! Dank u .', 20, 250, fipo, grote18, [italic]); rewrite(uitfile, naam);

writeln(uitfile, invoer); writeln(uitfile, naam);

{naarn van de proefpersoon} {datafile} writeln(uitfile, 'Tijden in tienden van sekonden');

writeln (uitfile, ' ');

writeln(uitfile, '*** nr. j/n tijd Zinnen *** , ) ; i := l;

while i <> nrzinnen do

begin {wegschrijven avn de experirnentgegevens naar de uitvoerfile} if i < 101 then

(29)

writeln(uitfile, i, end;

, ,

,

resulOl[i], timeOl[i], sensOl[i]);

if ((i > 100) and (i

<

201)) then begin

p

:=

i - 100;

writeln(uitfile, i, end;

,

,

,

resul02[p], time02[p], sens02[p]);

if ((i > 200) and (i < 301)) then begin

p

:=

i - 200;

writeln(uitfile, i, end;

,

,

,

resul03[p], time03[p], sens03[p]);

i := i

+

1; end; close (uitfile); end; {volgende zin} {**************************************************************************} { HET PROGRAMMA {**************************************************************************} begin initall; inittext; eraserect(screenptrA.portrect); eraserect(textscreen); inv :

=

'f' ; zinnen {scherm leeg}

printstring('Welke invoerfile wilt u gebruiken ?', 30, 200, fipo, grote18, [italic]);

printstring('Textaneen.dat of textantwee.dat? Typ in grote18, [italic]);

while (inv

=

'f') do begin

readln(invoer); infile

:=

invoer;

if invoer

=

'textaneen.dat' then inv := 't';

=

I ,

I 30, 230, fipo,

(30)

end; {bepaling van de invoerfile} {*****************~********************************************************} eraserect(screenptrA.portrect); hideall; esc := 't'; {scherm leeg}

filein(infile, sens0l, sens02, sens03, deel0l, deel02, deel03, nrzinnen); {invoer van de datafile} {**************************************************************************}

inittext;

eraserect(screenptrA.portrect); eraserect(textscreen);

{scherm leeg}

printstring('Hoe heet de proefpersoon ?', 30, 20, fipo, grotel8, [italic]); printstring('Indien u wilt stoppen met het experiment', 30, 280, fipo,

grote18, [bold));

printstring('typ dan STOP om het te stoppen ', 30, 300, fipo, grote18, [bold]); readln(naam); {invoer van de naam van de proefpersoon of stopcorranando} {**************************************************************************}

EraseRect(screenptrA.portrect); hideall;

while ((naam <> 'stop') and (esc

=

't')) do begin

{scherm leeg}

Verwerk(sens0l, sens02, sens03, resul0l, resul02, resul03, time0l, time02, time03, nrzinnen, esc); {registratie van de

experi-{mentgegevens

{**************************************************************************} if esc

=

't' then

begin

flushevents(everyevent, 0);

fileout(sens0l, sens02, sens03, resul0l, resul02, resul03, time0l, time02, time03, invoer, naam, nrzinnen); {uitvoer van de

experiment-{gegevens {**************************************************************************} inittext; eraserect(screenptrA.portrect); eraserect(textscreen); inv := 'f'; {scherm leeg}

(31)

Printstring('Typ dan ja of nee in while (inv

=

'f') do

begin

readln(keuze);

if keuze

=

'ja' then inv := 't';

if keuze

=

'nee' then inv := 't';

end;

'

'

.

'

30, 300, fipo, grote18, [bold]); {wacht op antwoord}

{verandering van datafile} {**************************************************************************}

if keuze <> 'ja' then begin

eraserect(screenptr~.portrect); eraserect(textscreen);

inv := 'f';

{scherm leeg}

printstring('Welke invoerfile wilt u gebruiken ?', 30, 200, fipo, grote18, [italic]);

printstring('Textaneen.dat of textantwee.dat? Typ in grote18, [italic]);

'

'

.

'

30, 230, fipo, while (inv

=

'f') do begin readln(invoer); infile := invoer;

if invoer

=

'textaneen.dat' then inv := 't';

if invoer

=

'textantwee.dat' then inv := 't';

end;

{wacht op antwoord}

{bepaling van de nieuwe datafile} {**************************************************************************}

eraserect(screenptr~.portrect);

hideall;

{scherm leeg}

filein(infile, sens0l, sens02, sens03, deel0l, deel02, deel03,

nrzinnen); {invoer van de nieuwe datafile}

{**************************************************************************} end;

inittext;

(32)

printstring('Indien u wilt stoppen met het experiment', 30, 280, fipo, grote18, [bold]);

printstring('typ dan STOP om het te stoppen', 30, 300, fipo, grote18, [bold]);

readln(naam); {invoer van de naam van de proefpersoon of stopcomrnando}

{**************************************************************************)

EraseRect(screenptrA.portrect); hideall;

end;

{scherm leeg}

end; {bij stopcomrnando (invoer=stop) naar eind programrna anders terug} {naar de while lus en er volgt weer een sessie

{**************************************************************************}

eraserect(screenptrA.portrect); eraserect(textscreen);

count

:=

tickcount;

{scherm leeg}

printstring('Hartelijk dank voor het meedoen aan dit', 20, 100, fipo, grote18, [italic]);

printstring('experiment ! Wij hopen dat u voor een', 20, 150, fipo, grote18, [italic]);

printstring('ander experiment ook nog eens beschikbaar', 20, 200, fipo, grote18, [italic));

printstring('zult zijn ! Dank u .', 20, 250, fipo, grote18, [italic)); while (tickcount - count< 250) do {lus van ongeveer 4 seconden} eraserect(screenptrA.portrect);

closeport(screenptr); setport(saveport); end.

{scherm leeg}

{einde programrna zinnen}

(33)

program ZINNEN; {versie zinnenvr.pas}

{**************************************************************************}

[ HET PROGRAMMA

{**************************************************************************}

begin initall; inittext; eraserect(screenptrA.portrect); eraserect(textscreen); inv := 'f'; {scherm leeg}

printstring('Welke invoerfile wilt u gebruiken

?',

30, 200, fipo, grote18, [italic]);

printstring('Texvrneen.dat of textvrtwee.dat? Typ in!', 30, 230, fipo, grote18, [italic});

while (inv

=

'f') do begin

readln (invoer) ; infile

:=

invoer;

if invoer = 'textvreen.dat' then inv := 't';

if invoer

=

'textvrtwee.dat' then inv := 't';

{wacht op invoer}

end; {bepaling van de invoerfile}

{**************************************************************************}

eraserect(screenptrA.portrect); hideall;

esc:='t';

{scherm leeg}

filein(infile, sens0l, sens02, sens03, deel0l, deel02, deel03, nrzinnen); {invoer van de datafile}

{**************************************************************************}

inittext;

(34)

printstring('Indien u wilt stoppen met het experiment', 30, 280, fipo, grote18, [bold]);

printstring('typ dan STOP am het te stoppen ', 30, 300, fipo, grote18, [bold]); readln(naam); {invoer van de naam van de proefpersoon of stopcomrnando) {**************************************************************************}

EraseRect(screenptrA.portrect); hideall;

while ((naam

<>

'stop') and (esc

=

't')) do begin

{scherm leeg)

Verwerk(sens0l, sens02, sens03, resul0l, resul02, resul03, tirne0l, time02, time03, nrzinnen, esc); {registratie van de

experi-{mentgegevens

{**************************************************************************} if esc

=

't' then

begin

flushevents(everyevent, 0);

fileout(sens0l, sens02, sens03, resul0l, resul02, resul03, time0l, time02, time03, invoer, naarn, nrzinnen); {uitvoer van de

experiment-{gegevens {**************************************************************************} inittext; eraserect(screenptrA.portrect); eraserect(textscreen); inv := 'f'; {scherm leeg}

Printstring('Wilt u dezelfde invoerfile gebruiken ?', 30, 200, fipo, grote18, [italic]);

Printstring('Typ dan ja of nee in!', 30, 300, fipo, grote18, [bold]); while (inv

=

'f') do {wacht op antwoord}

begin

readln(keuze);

if keuze

=

'ja' then inv := 't';

if keuze

=

'nee' then inv := 't';

end; {verandering van datafile}

{**************************************************************************} if keuze

<>

'ja' then

(35)

eraserect(textscreen); inv

:=

'f';

printstring('Welke invoerfile wilt u gebruiken ?', 30, 200, fipo, grote18, [italic]);

printstring('Textvreen.dat of textvrtwee.dat? Typ in!', 30, 230, fipo, grote18, [italic]);

while (inv

=

'f') do begin

readln(invoer); infile := invoer;

if invoer

=

'textvreen.dat' then inv

:=

't';

if invoer

=

'textvrtwee.dat' then inv := 't';

end;

{wacht op antwoord}

{bepaling van de nieuwe datafile} {**************************************************************************}

eraserect(screenptrA.portrect); hideall;

{scherm leeg} filein(infile, sens0l, sens02, sens03, deel0l, deel02, deel03,

nrzinnen); {invoer van de nieuwe datafile} {**************************************************************************} end; inittext; eraserect(screenptrA.portrect); eraserect(textscreen); {scherm leeg} printstring('Hoe heet de proefpersoon?', 30, 20, fipo, grote18, [italic]); printstring('Indien u wilt stoppen met het experiment', 30, 280, fipo,

grote18, [bold]);

printstring('typ dan STOP om het te stoppen', 30, 300, fipo, grote18, [bold]);

readln(naam); {invoer van de naam van de proefpersoon of stopcommando} {**************************************************************************}

EraseRect(screenptrA.portrect);

hideall;

end;

{scherm leeg}

end; {bij stopcommando (invoer=stop) naar eind programma anders terug} {naar de while lus en er volgt weer een sessie }

(36)

eraserect(textscreen); count := tickcount;

printstring('Hartelijk dank voor het meedoen aan dit', 20, 100, fipo, grote18, [italic]);

printstring('experiment ! Wij hopen dat u voor een', 20, 150, fipo, grote18, [italic]);

printstring('ander experiment ook nog eens beschikbaar', 20, 200, fipo, grote18, [italic]);

printstring('zult zijn ! Dank u .', 20, 250, fipo, grote18, [italic]); while (tickcount - count< 250) do {lus van ongeveer 4 seconden}

eraserect(screenptrA.portrect); {scherm leeg}

closeport(screenptr); setport(saveport);

end. {einde prograrnma}

Referenties

GERELATEERDE DOCUMENTEN

Het onderzoek door het Verwey-Jonker Instituut naar de gewenste psychoso- ciale dienstverlening aan mensen met een lichamelijke beperking en aan hun directe leefomgeving is

Als de ondernemer niet zelf de eigenaar is, een huur-, lease-, of andere overeenkomst overleggen waaruit de positie van de ondernemer ten aanzien van de inventaris aangetoond

Als de ondernemer niet zelf de eigenaar is, een huur-, lease-, of andere overeenkomst overleggen waaruit de positie van de ondernemer ten aanzien van de inventaris aangetoond

Indien de school zelf niet de ondersteuning kan bieden of er geen plek is binnen de groep waarin de leerlingen geplaatst zou moeten worden dan is de school verplicht om binnen

Als deze bijzondere persoonsgegevens, mede voor u, belangrijk zijn voor de zaak kunnen wij deze gebruiken, maar enkel alleen voor de behandeling van die zaak waarin deze zijn

: Zo ja, datum dat de voormalige eigen woning is verlaten (voor zover nog niet bij ons bekend) en opgave van rente en dergelijke zoals van de eigen woning.. ❑ Is de

Jullie gaan alleen natuurlijk niet naar diegene toe en toestemming vragen voor het verwerken van persoonsgegevens.. Diegene kan dan wel ruiken dat die dagvaarding

Beide ouders van het kitten/de kat zijn, voordat er een dekking heeft plaats gevonden, getest op Hypertrofische Cardiomyopathie (HCM) en Polycystic Kidney Disease (PKD)