Løbeseddel 2: Programmering med Tcl

for Database-baseret Web-publicering, forår 2001

af Niels Hallenberg sidst rettet 5. februar, 2001


I denne øvelse introduceres du til programmeringssproget Tcl med det formål at benytte sproget til web-programmering. Til brug ved øvelsen skal du have installeret en Tcl fortolker. Hvis du sidder på IT-C, så finder du Tcl fortolkeren i menuen "Start". Du skal starte programmet "wish".

Inden du starter på øvelsen er det hensigtsmæssigt at du læser noten A Smooth Introduction to Tcl for Web Nerds og prøver at køre eksemplerne i noten. Øvelsen består af fem opgaver.

Ved graduerigen lægges der bl.a. vægt på:

Denne løbeseddel skal være besvaret elektronisk på hug.it-c.dk senest tirsdag d. 20. februar klokken 09.00 og i CourseGrader.

Hvis du mangler træning i løkker og procedurer, så kan du kigge på ekstra opgaverne til denne uge. Opgaverne øver procedurer og løkker.

Opgave A (20 procent) - Multiplikationstabel

Skriv en procedure multabel som givet et tal udskriver en multiplikationstabel for dette tal. Skriv din procedure i en fil multabel.tcl, således at du kan bruge Tcl-kommandoen source til at hente proceduren ind i Tcl-fortolkeren, når denne startes. Det skal altså være muligt at skrive følgende, når Tcl-fortolkeren startes:
% source multabel.tcl
% multabel 3
0 times 3 is 0
1 times 3 is 3
2 times 3 is 6
3 times 3 is 9
4 times 3 is 12
5 times 3 is 15
6 times 3 is 18
7 times 3 is 21
8 times 3 is 24
9 times 3 is 27
Kopier besvarelsen til hug.it.edu som /web/login/www/oevelse2/multabel.tcl - herved bliver filen tilgængelig for de kursusansvarlige til retning. Bemærk at biblioteket /web/login/www/oevelse2/ allerede er blevet oprettet; det er meget vigtigt at besvarelserne på opgavene i øvelse 2 bliver kopieret til dette bibliotek!

Opgave B (20 procent) - Omvendt multiplikationstabel

Tilret løsningen til Opgave A således at multipliktionstabellen udskrives i omvendt rækkefølge:
% source multabel2.tcl
% multabel2 3
9 times 3 is 27
8 times 3 is 24
7 times 3 is 21
6 times 3 is 18
5 times 3 is 15
4 times 3 is 12
3 times 3 is 9
2 times 3 is 6
1 times 3 is 3
0 times 3 is 0
Kopier besvarelsen til hug.it.edu som /web/login/www/oevelse2/multabel2.tcl.

Opgave C (20 procent) - Hjemmeside-generering

I denne opgave skal du skrive en procedure homepage, som kan generere en standard HTML-hjemmeside. Proceduren skal tage to argumenter, et navn og en email adresse. Argumenterne skal indgå i den genererede hjemmeside (du bestemmer selv det præcise layout af siden):
  % source homepage.tcl
  % homepage "Niels Hallenberg" "nh@itu.dk"
  <html>
  ...
  </html>
I ovenstående brug af proceduren homepage er strengene "Niels Hallenberg" og "nh@it.edu" aktuelle argumenter til proceduren.

Du skal indsætte en standard tekst i kroppen af siden, således at siden kunne ligne en standard hjemmeside, f.eks. en standard hjemmeside som man får første gang man modtager et login på IT-C.

Kopier din besvarelse til hug.it.edu som /web/login/www/oevelse2/homepage.tcl.

Hint: Du kan f.eks. overveje at benytte <address> til at "underskrive" siden, således at man kan se hvem man skal kontakte, hvis der er noget som ikke virker. Derudover bør du sikre, at hvis man bogmærker siden, så vil man få et sigende navn som bogmærke. Du bør også sikre, at man kan linke tilbage til din indeks-side.

Opgave D (20 procent) - Multiplikationstabel i HTML

I denne opgave skal du tilrette løsningen til Opgave A således at multipliktionstabellen udskrives som en HTML-tabel med 10 rækker og tre kolonner. Proceduren skal altså nu generere HTML-kode. Hvis uddata fra proceduren indsættes i en HTML-side skal siden se således ud i en browser:

ABA times B
030
133
236
339
4312
5315
6318
7321
8324
9327

Besvarelsen kopieres til hug.it.edu som /web/login/www/oevelse2/multabel3.tcl.

Du skal nu tilrette besvarelsen således at proceduren ikke udskriver tabellen med puts kommandoen, men istedet returnerer tabellen som en lang streng. Kald den nye procedure multabel4. For at løse opgaven er det nødvendigt at bruge append kommandoen til at opsamle resultatet, som tilslut i proceduren skal returneres med kommandoen return. Endelig skal du kopiere denne besvarelse til hug.it.edu som /web/login/www/oevelse2/multabel4.tcl.

Opgave E (20 procent) - Temperaturberegning

I USA måles temperatur typisk i grader Fahrenheit. Givet en temperatur i grader Fahrenheit (tempf) beregnes temperaturen i grader Celcius (tempc) som følger:

tempc = 5.0/9.0 * (tempf - 32.0)

Hvis temperaturen i Fahrenheit er 68 grader er temperatuen i grader Celcius altså 5.0/9.0 * (68.0 - 32.0) = 0.555556 * 36.0 = 20.0.

Skriv en procedure tempf_to_tempc, som tager som argument en temperatur i grader Fahrenheit og returnerer temperaturen i grader Celcius. Skriv proceduren i en fil temperatur.tcl:

  %source temperatur.tcl
  %tempf_to_tempc 68
  20.0
Kopier besvarelsen til hug.it.edu som /web/login/www/oevelse2/temperatur.tcl.

Hint:Du skal anvende kommandoen expr for at beregne temperaturen.


nh@it.edu