Version 19 of HelloWorld

Updated 2015-06-23 16:54:11 by MiHa

if 0 {


Introduction

MiHa 2015-06-13: HelloWorld-programs are supposed to be the most simple, working programs of a given language.

But I want to extend such a HelloWorld-program to a one-page - reference-card,
where all the essential features of the language are shown.
Several short programs would be ok, too.
If possible, while doing something useful (and/or funny).

Tcl by itself (without Tk) is quite simple , so an amount of code to fill about one printed page should be enough.
(The layout may need to be tweaked, e.g. printing front and back, landscape, and in 2-4 columns:)

Basic Tcl Commands to cover:

Advanced features (to include if space permits):

...

More features, to be left out, for a later lesson (too advanced, or too rarely needed for an introduction):

...

Things to be aware of:

  • comments are commands, so quotes and braces inside need to be balanced
  • when to use / not to use "$" with variablenames ( set i 1; puts $i; incr i $i )

Maybe there already are some programs here in the wiki that would qualify for such a refcard-program...

}


Program 1

  # HelloWorld001.tcl - 2015-06-13 - http://wiki.tcl.tk/41268

  # Output a string to terminal:

  puts "Hello, World!"

  ### END ###

Program 2

# HelloWorld002 - 2015-06-23
# http://ideone.com/9KlN4c

# Assign value to variables, and output:

set a "The answer is"
set n 42

puts $a
puts $n

incr n                ;# add 1 to a numeric variable
puts "$a now $n"

# END #

Output 2

The answer is
42
The answer is now 43

Program 3

# HelloWorld003.tcl - MiHa - 2015-06-13
# http://wiki.tcl.tk/41268 / http://ideone.com/xl0IBI

# Query the time (cs as a number, td and hh as a string), 
# output depending on the value of the hour:

set cs [clock seconds]                                    ;# seconds since 1970-01-01
set td [clock format $cs  -format "%Y-%m-%d  %H:%M:%S" ]  ;# timedate
set hh [clock format $cs  -format %H ]                    ;# hours (00-23)

puts "cs=$cs  td='$td'  hh=$hh"

if { $hh < "12" } {
    puts -nonewline "Good morning, "
} else {
    puts -nonewline "Hello, "
}
puts "World!"

# END #

Output 3

cs=1434926575  td='2015-06-21  22:42:55'  hh=22
Hello, World!

Program 4

# HelloWorld004.tcl - MiHa - 2015-06-21
# http://wiki.tcl.tk/41268 / http://ideone.com/Llp8Os

# Query the hour from the clock, 
# output text depending on the value of the hour:

set cs [clock seconds]                          ;# seconds since 1970-01-01
set hh [clock format $cs  -format %H ]          ;# hours (00-23)

puts "cs=$cs  hh=$hh"

if { $hh < "12" } {
    puts -nonewline "Good morning, "
} elseif { $hh > "18" } {
    puts -nonewline "Good evening, "
} else {
    puts -nonewline "Hello, "
}
puts "World!"

# END #

Output 4

cs=973531773  hh=17
Hello, World!

and

cs=1434927642  hh=23
Good evening, World!

Program 5

# HelloWorld005 - 2015-06-23
# http://ideone.com/OJoort

# Comparing strings:

set hh "20"

set tx "Hello"
if { $hh < "12" } { set tx "Good Morning" }
if { $hh > "18" } { set tx "Good Evening" }

puts "It is $hh:00 --> $tx, World !"
#.

Output 5

It is 20:00 --> Good Evening, World !

Program 6

# HelloWorld006 - 2015-06-23
# http://ideone.com/GBiMab

# Comparing strings, proc as function

proc greeting {hh}  {
  set gr "Hello"
  if { $hh <  "12" } { set gr "Good Morning"    }
  if { $hh == "12" } { set gr "Happy Lunchtime" }
  if { $hh  > "18" } { set gr "Good Evening"    }
  return $gr
}

set hh "12"
set tx [greeting $hh]
puts "It is $hh:00 --> $tx, World !"

#.

Output 6

It is 12:00 --> Happy Lunchtime, World !

Program 7

# HelloWorld007.tcl - 2015-06-xx

#.

Output 7

xx

Some ideas:

  • Table of primes
  • Dice-rolling
    • with min/max/average
  • Calculate distance
  • Number of days between dates

...


 **Program x**
# HelloWorld00x.tcl - 2015-06-xx

#.

Output x

xx


Remarks

This is the Alpha-version, there will be bugs, so use with caution
...


See also: