Ekstraopgaver til Løbeseddel 3: løkker og procedurer

for Databasestøttet Webpublicering

af Martin Elsman og Niels Hallenberg sidst rettet 15. februar, 2002


Dette ekstrasæt til løbeseddel 3 indeholder opgaver i henholdsvis while- og for- løkker i Tcl. Opgaverne er oprindeligt lavet af Peter Sestoft til kurset Grundlæggende Programmering (Java) ved IT-C.

Udover løkker øver opgaverne også procedurer.

Opgaverne bygger på hinanden, ofte med kun ganske små ændringer fra den ene opgave til den næste. Det kan altså betale sig at løse dem fra en ende af.

Skriv hver opgave i en fil, den første fil navngivet pyra0.tcl, og indlæs dem i Tcl-fortolkeren med kommandoen source.

Der udleveres ikke vejledende løsninger til disse opgaver, men du kan rådføre dig hos din hjælpelærer, hvis du er i tvivl om hvorledes nogle af opgaverne løses.


Opgave pyra0 - for-løkker

Lav et Tcl-program pyra0.tcl som udskriver en trappe af stjerner (med tegnet "*") på skærmen:
*
***
*****
*******
*********
Der skal være fem linier, med henholdsvis 1, 3, 5, 7 og 9 stjerner på.

Opgave pyra1 - for-løkker

Lav et Tcl-program pyra1, som udskriver en pyramide af stjerner på skærmen:
    *
   ***
  *****
 *******
*********
Der skal være fem linier, med henholdsvis 1, 3, 5, 7 og 9 stjerner på.

Opgave pyra2 - procedurer uden parametre

Lav et Tcl-program pyra2 der har en procedure pyramide(), som udskriver en pyramide af stjerner på skærmen som ovenfor, dvs. med 5 linier. Indlæs procedureren i Tcl-fortolkeren og kald derefter proceduren.

Opgave pyra3 - procedurer med parametre

Lav et Tcl-program pyra3, der har en procedure pyramide { n }, som udskriver en pyramide af stjerner, hvor antallet af linier bestemmes af parameteren n. Indlæs procedureren i Tcl-fortolkeren og kald den med forskellige argumenter, f.eks.\ pyramide 7 og pyramide 5 og pyramide 3.

Opgave pyra4 - while- eller for-løkker

Hvis du har lavet procedureren pyramide i opgave pyra3 med for-løkker, så lav samme procedure her med while-løkker. Hvis du har anvendt while-løkker i opgave pyra3, så lav samme procedure her med for-løkker.

Opgave pyra5 - tegn

Lav et Tcl-program pyra5 med en procedure pyramide {c n}, der udskriver en pyramide, men bruger tegnet c i stedet for stjerne. Kaldes procedureren med pyramide "$" 4 skal der altså udskrives:
   $
  $$$
 $$$$$
$$$$$$$

Opgave pyra6 - indeksering i tegnstrenge

Lav et Tcl-program pyra6 med en metode pyramide tekst n der udskriver en pyramide, idet den bruger tegnene fra tegnstrengen tekst fra en ende af, i stedet for at bruge det samme tegn c hver gang. Kaldes metoden med pyramide "pyramidetegninger" 4 skal der altså udskrives:
   p
  yra
 midet
egninge
Vink: I metoden kan man bruge en variabel som tælles op med 1 for hvert tegn der udskrives. Denne variabel bruges til at indeksere i tegnstrengen tekst med kommandoen string index $string_var $idx sådan at først udskrives det første tegn fra tekst, så det andet, så det tredje, osv. Koden string index "Hej" 1 returnerer tegnet "e".

Opgave pyra7 - smart indeksering i tegnstrenge

Hvad sker der hvis man forsøger at udføre pyramide "pyramidetegninger", 6 i foregående program?

Lav et Tcl-program pyra7 med en procedure pyramide tekst n der udskriver en pyramide, idet den bruger tegnene fra tegnstrengen tekst fra en ende af, og begynder forfra i tekst hvis den når til slutningen af tekst. Kaldes procedureren med pyramide "pyramidetegninger" 6 skal der altså udskrives:

     p
    yra
   midet
  egninge
 rpyramide
tegningerpy

mael@it.edu, nh@it.edu