I ordbehandlingsprogrammet Microsoft Word, kan man drabbas av virus. Detta
program, samt Microsoft Outlook är de två vanligaste källorna
till virussmitta som finns idag. Anledningen är att båda programmen
kan programmeras, i dessa fall med Visual BASIC. BASIC, vilket står för
Beginners Allpurpose Intruction Code är ett av mikrodatorhistoriens tidigaste
programmeringsspråk. Idag är det så populärt inte därför
att språket till skillnad från Pascal, C eller JavScript är
bättre för nybörjare, utan snarare för att det är ett
språk som företaget Microsoft historiskt är nära sammanlänkat
med. Det var ju själva Bill Gates som var med om att utveckla den första
BASIC-versionen för IBM PC i datorernas barndom.
Samtidigt som det kan anändas som ett fristående programmeringsspråk,
så har Microsoft även byggt det som komplement i de flesta av sina
datorprogram. Detta är på både gott och ont. Ett komplett programmeringsspråk
gör det ganska enkelt att skapa virus, vilka sedan sprids på samma
gång som dokument sprids.
Ett av de första programmen som drabbades av virus var just Word. Det är
nämligen mycket enkelt att skapa ett dokument, som samtidigt innehåller
ett litet virus och när någon läser dokumentet, så passar
viruset på att smitta alla andra dokument i datorn, eller liknande elakheter.
Men programmeringsmöjligheterna i Word är inte bara av ondo. Jag tycker
alltid det är intressant att kika på ett program "under skalet"
och Word har genomgått stora förändringar när det gäller
just makroprogrammeringsmöjligheterna. I början innebar makros endast
en enkel möjlighet att få datorn att minnas tangenttryckningar och
sedan enkelt spela upp dessa. Därefter kan man välja från en
dialogruta vilket makro man vill spela upp och på det sättet rationalisera
sitt arbete.
Men med ett programmeringsspråk kan man göra så mycket mer.
För skolundervisning kan man enkelt använda Word för att skapa
övningar. Låt oss säga att barnen i klassen behöver träna
på multiplikationstabellen. Föräldern hemma kan självklart
skriva ihop övningen, men det är naturligtvis bekvämare att låta
datorn göra detta automagiskt.
Man kan börja med att spela in ett makro, och därefter förändra
detta med Visual Basic Editor. En annan metod är att i Word direkt välja
Verktyg->Makron->Visual Basic Editor och därefter välja "Insert->Module"
för att kunna börja programmera.
Följande enkla program skapar 30 uppgifter för att träna multiplikationstabellen,
vilka skrivs in i aktuellt, öppet dokument.
Sub multiplikation()
For i = 1 To 30
a = Str(Round(Rnd() * 10))
b = Str(Round(Rnd() * 10))
Selection.TypeText Str(i) + ". "
Selection.TypeText a + " * " + b + " = ______"
Selection.TypeParagraph
Next i
End Sub
Hela programmet utnyttjar bara något tiotal funktioner. Sub är egentligen
förkortning för "subrutin" och innebär bara att man
därefter ger makrot ett namn ("multiplikation"). Därmed
kan man kalla på makrot från makrodialogrutan (Verktyg->Makro->Makron...).
Paranteserna "()" innebär att inga parametrar, alltså inga
speciella inställningar behövs när man ska använda makrot.
Det är ju tomt mellan paranteserna.
Raden "For i=1 To 30" innebär att den delen som står mellan
"For" och "Next" ska upprepas. Det är en lagringsplats,
variabel som döpts till "i" som kommer att styra detta och den
ska börja upprepa när den är ett och sluta när den är
30. Alltså kommer 30 uppgifter att skapas.
Raden med "a=str(Round(Rand()*10)) innebär helt enkelt att ett funktion
för att skapa sluptal, Rnd() utnyttjas och skapar slumptal mellan 0 och
1. Rnd är en förkortning från engelskans Randomize, vilket betyder
just slumpa. Då inga parametrar (information mellan efterföljande
paranteser används) skapas olika värden varje gång och värdena
är mellan 0 och 1. Eftersom detta decimalvärde är för knepigt
för eleverna, så multiplicerar vi det med 10 (genom att skriva "*10"
efteråt). Med funktionen "Round(" avrundar vi innehållet
inom efterföljande paranteser till närmaste heltal. Programmeringsspråket
BASIC är lite petigt, när det gäller skillnaden mellan text och
värden, så för att kunna använda heltalet måste det
omvandlas till en textsträng. Det är just vad funktionen "Str("
gör med hela resultatet av slumptalet, multiplicerandet och avrundandet).
Därefter lagras hela innehållet i något vi kallar a (den ena
faktorerna). Likamedtecknet i BASIC betyder vanligen "tilldela". Alltså
tilldelas "a" resultatet av beräkningen, som text. På precis
samma sätt tilldelar vi "b" ett tal.
Sedan kommer den raden som skriver allt till det öppna dokumentet. Det
är en rad som är speciell för just Word. I traditionell BASIC
används funktionen "Print", men i Word BASIC kan man mer exakt
ange vart innehållet i förhållande till det öppna dokumentet
ska hamna. Alltså ersätter "Selection.TypeText" eventuellt
vald text med först numret på uppgiften och sedan en punkt (för
att göra resultatet lite snyggt). Raden därefter skriver ut de två
framslumpade talen, med en tjusig stjärna emellan och avslutar raden med
ett streck. Understrykningsteckent är ett av de mest användbara tecknen
på en dator. Istället för att rita linjer eller hämta krängliga
bilder, så kan man i alla program utnyttja "Shift-Minus" på
ett svenskt tangentbort för att få ett obrutet streck i nederkant
av bokstäver. Och i detta fall passar det ju utmärkt, eftersom slutresultatet
ska skrivas ut och delas ut till eleverna eller kanske till sonen som behöver
träna extra hemma.
Raden "Selection.TypeParagraph" ser bara till att varje rad avslutas
med en vagnretur. De övriga raderna i programmet är avslutningsfraser.
Raden som börjar med "For", ska alltid ska ha en "Next"-motsvarighet.
På samma sätt är det med "Sub". Genom att köra
programmet, så kan man alltså snabbt skapa en automatisk multiplikationsövning,
som framförallt är olika varje gång.
Andra funktioner som finns i BASIC och kan vara användbara är att
visa upp alla dokument som man har i en mapp. Genom att utnyttja följande
lilla program kan man snabbt få en lista över alla dokument som finns
i en aktuell mapp, för att sedan kanske sortera och skriva ut denna på
vanligt sätt.
Sub bibliotek()
MyName = Dir("*.doc", 31)
Do While MyName <> "" ' Start the loop.
Selection.TypeText MyName
Selection.TypeParagraph
MyName = Dir
Loop
End Sub
Det finns en mängd andra möjligheter att använda Word Basic.
En skojig variant är exempelvis ett litet program som automatiskt skapar
klassiska labyrinter. Roligt att använda om man har barn hemma. Hämta
det gärna från min lilla webplats www.prifre.com.
Med ett leende
2002-01-24/Peter Freund