Basics of Icon

Priskribo de la ĉi-paĝa enhavo

Konverto de malnovaj BASIC-programoj al Icon por lerni la fundamentojn de ĉi-tiu lingvo.

Etikedoj:

3D Plot

# 3D Plot
#
# Original version in BASIC:
#   Creative Computing (Morristown, New Jersey, USA), ca. 1980.
#
# This version in Icon:
#   Copyright (c) 2023, Marcos Cruz (programandala.net)
#   SPDX-License-Identifier: Fair
#
# Written in 2023-03-03/21.
#
# Last modified 20231103T2341+0100.

link iscreen # clear()

$define dot   "*"
$define space " "
$define width 56

procedure print_credits()
    clear()
    write("3D Plot\n")
    write("Original version in BASIC:")
    write("    Creative computing (Morristown, New Jersey, USA), ca. 1980.\n")
    write("This version in Icon:")
    write("    Copyright (c) 2023, Marcos Cruz (programandala.net)")
    write("    SPDX-License-Identifier: Fair\n")
    write("Press Enter to start the program.")
    read()
end

procedure a(z)
    return 30 * exp(-z * z / 100)
end

procedure draw()
    clear()
    x := -30
    while x <= 30 do {
         line := repl(space,width)
         l := 0
         y1 := 5 * integer(sqrt(900 - x * x) / 5)
         y := y1
         while y >= -y1 do {
            z := integer(25 + a(sqrt(x * x + y * y)) - .7 * y)
            if z > l then {
                l := z
                line[z + 1] := dot
            }
            y -:= 5
        }
        write(line)
        x +:= 1.50
    }
end

procedure main()
    print_credits()
    draw()
end

Bunny

# Bunny
#
# Original version in BASIC:
#   Creative Computing (Morristown, New Jersey, USA), 1978.
#
# This version in Icon:
#   Copyright (c) 2023, Marcos Cruz (programandala.net)
#   SPDX-License-Identifier: Fair
#
# Written in 2023-09.
#
# Last modified 20231103T2341+0100.

link iscreen # clear()

# Print the credits and wait for a keypress.
procedure print_credits()
    write("Bunny\n")
    write("Original version in BASIC:")
    write("    Creative Computing (Morristown, New Jersey, USA), 1978.\n")
    write("This version in Icon:")
    write("    Copyright (c) 2023, Marcos Cruz (programandala.net)")
    write("    SPDX-License-Identifier: Fair\n")
    write("Press Enter to start the program.")
    read()
end

$define width 53
$define EOL -1 # end of line identifier

global data
global data_index

procedure next_datum()
    data_index +:= 1
    return data[data_index]
end

# Draw the graphic out of `data` and `letter`.
procedure draw()

    letter  := ["B", "U", "N", "N", "Y"]

    data := [
        1, 2, EOL, 0, 2, 45, 50, EOL, 0, 5, 43, 52, EOL, 0, 7, 41, 52, EOL,
        1, 9, 37, 50, EOL, 2, 11, 36, 50, EOL, 3, 13, 34, 49, EOL, 4, 14,
        32, 48, EOL, 5, 15, 31, 47, EOL, 6, 16, 30, 45, EOL, 7, 17, 29, 44,
        EOL, 8, 19, 28, 43, EOL, 9, 20, 27, 41, EOL, 10, 21, 26, 40, EOL,
        11, 22, 25, 38, EOL, 12, 22, 24, 36, EOL, 13, 34, EOL, 14, 33, EOL,
        15, 31, EOL, 17, 29, EOL, 18, 27, EOL, 19, 26, EOL, 16, 28, EOL,
        13, 30, EOL, 11, 31, EOL, 10, 32, EOL, 8, 33, EOL, 7, 34, EOL, 6,
        13, 16, 34, EOL, 5, 12, 16, 35, EOL, 4, 12, 16, 35, EOL, 3, 12, 15,
        35, EOL, 2, 35, EOL, 1, 35, EOL, 2, 34, EOL, 3, 34, EOL, 4, 33,
        EOL, 6, 33, EOL, 10, 32, 34, 34, EOL, 14, 17, 19, 25, 28, 31, 35,
        35, EOL, 15, 19, 23, 30, 36, 36, EOL, 14, 18, 21, 21, 24, 30, 37, 37,
        EOL, 13, 18, 23, 29, 33, 38, EOL, 12, 29, 31, 33, EOL, 11, 13, 17,
        17, 19, 19, 22, 22, 24, 31, EOL, 10, 11, 17, 18, 22, 22, 24, 24, 29,
        29, EOL, 22, 23, 26, 29, EOL, 27, 29, EOL, 28, 29, EOL ]

    line_buffer := list(width, " ")

    data_index := 0

    while data_index <= *data do {
        first_column := next_datum()
        if first_column == EOL then {
            every column := 1 to width do
                writes(line_buffer[column])
            write()
            line_buffer := list(width, " ")
        } else {
            last_column := next_datum()
            every column := first_column to last_column do
                line_buffer[column + 1] := letter[column % *letter + 1]
            }
        }

end

procedure main()
    clear()
    print_credits()
    clear()
    draw()
end

Diamond

# Diamond
#
# Original version in BASIC:
#   Example included in Vintage BASIC 1.0.3.
#   http://www.vintage-basic.net
#
# This version in Icon:
#   Copyright (c) 2023, Marcos Cruz (programandala.net)
#   SPDX-License-Identifier: Fair
#
# Written in 2023-03-03.
#
# Last modified 20231103T2342+0100.

$define lines 17

procedure main()
    every i := 1 to lines / 2 + 1 do {
        every j := 1 to (lines + 1) / 2 - i + 1 do writes(" ")
        every j := 1 to i * 2 - 1 do writes("*")
        write()
    }
    every i := 1 to lines / 2 do {
        every j := 1 to i + 1 do writes(" ")
        every j := 1 to ((lines + 1) / 2 - i) * 2 - 1 do writes("*")
        write()
    }
end

Math

# Math
#
# Original version in BASIC:
#   Example included in Vintage BASIC 1.0.3.
#   http://www.vintage-basic.net
#
# This version in Icon:
#   Copyright (c) 2023, Marcos Cruz (programandala.net)
#   SPDX-License-Identifier: Fair
#
# Written in 2023-03, 2023-09.
#
# Last modified 20231103T2342+0100.

link numbers # sign(), trunc()

procedure main()

    writes("Enter a number ")
    n := read()

    write("ABS(", n, ") --> abs(", n, ") --> ", abs(n))
    write("ATN(", n, ") --> atan(", n, ") --> ", atan(n))
    write("COS(", n, ") --> cos(", n, ") --> ", cos(n))
    write("EXP(", n, ") --> exp(", n, ") --> ", exp(n))
    write("INT(", n, ") --> trunc(", n, ") --> ", trunc(n))
    write("LOG(", n, ") --> log(", n, ") --> ", log(n))
    write("SGN(", n, ") --> sign(", n, ") --> ", sign(n))
    write("SQR(", n, ") --> sqrt(", n, ") --> ", sqrt(n))
    write("TAN(", n, ") --> tan(", n, ") --> ", tan(n))

end

Sine Wave

# Sine Wave
#
# Original version in BASIC:
#   Creative Computing (Morristown, New Jersey, USA), ca. 1980.
#
# This version in Icon:
#   Copyright (c) 2023, Marcos Cruz (programandala.net)
#   SPDX-License-Identifier: Fair
#
# Written in 2023-03-02/21.
#
# Last modified 20231103T2342+0100.

link iscreen # clear()

global word

procedure print_credits()
    write("Sine Wave\n")
    write("Original version in BASIC:")
    write("    Creative computing (Morristown, New Jersey, USA), ca. 1980.\n")
    write("This version in Icon:")
    write("    Copyright (c) 2023, Marcos Cruz (programandala.net)")
    write("    SPDX-License-Identifier: Fair\n")
    write("Press Enter to start the program.")
    read()
end

procedure get_words()
    word := ["", ""]
    every w := (1 | 2) do {
        write("Enter the " || ["first", "second"][w] || " word ")
        word[w] := read()
    }
end

procedure draw()
    step := 2
    every angle := 0 to 4000 by 25 do
        write(repl(" ", 26 + 25 * sin(angle/100.0)), word[step := [2, 1][step]])
end

procedure main()
    clear()
    print_credits()
    clear()
    get_words()
    clear()
    draw()
end

Rilataj paĝoj

Basics off
Metaprojekto pri la projektoj «Basics of…».
Basics of 8th
Konverto de malnovaj BASIC-programoj al 8th por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Ada
Konverto de malnovaj BASIC-programoj al Ada por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Arturo
Konverto de malnovaj BASIC-programoj al Arturo por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of C#
Konverto de malnovaj BASIC-programoj al C# por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of C3
Konverto de malnovaj BASIC-programoj al C3 por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Chapel
Konverto de malnovaj BASIC-programoj al Chapel por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Clojure
Konverto de malnovaj BASIC-programoj al Clojure por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Crystal
Konverto de malnovaj BASIC-programoj al Crystal por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of D
Konverto de malnovaj BASIC-programoj al D por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Elixir
Konverto de malnovaj BASIC-programoj al Elixir por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of F#
Konverto de malnovaj BASIC-programoj al F# por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Factor
Konverto de malnovaj BASIC-programoj al Factor por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of FreeBASIC
Konverto de malnovaj BASIC-programoj al FreeBASIC por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Gleam
Konverto de malnovaj BASIC-programoj al Gleam por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Go
Konverto de malnovaj BASIC-programoj al Go por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Hare
Konverto de malnovaj BASIC-programoj al Hare por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Haxe
Konverto de malnovaj BASIC-programoj al Haxe por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Io
Konverto de malnovaj BASIC-programoj al Io por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Janet
Konverto de malnovaj BASIC-programoj al Janet por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Julia
Konverto de malnovaj BASIC-programoj al Julia por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Kotlin
Konverto de malnovaj BASIC-programoj al Kotlin por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Lobster
Konverto de malnovaj BASIC-programoj al Lobster por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Lua
Konverto de malnovaj BASIC-programoj al Lua por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Nature
Konverto de malnovaj BASIC-programoj al Nature por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Neat
Konverto de malnovaj BASIC-programoj al Neat por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Neko
Konverto de malnovaj BASIC-programoj al Neko por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Nelua
Konverto de malnovaj BASIC-programoj al Nelua por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Nim
Konverto de malnovaj BASIC-programoj al Nim por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Nit
Konverto de malnovaj BASIC-programoj al Nit por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Oberon-07
Konverto de malnovaj BASIC-programoj al Oberon-07 por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of OCaml
Konverto de malnovaj BASIC-programoj al OCaml por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Odin
Konverto de malnovaj BASIC-programoj al Odin por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Pike
Konverto de malnovaj BASIC-programoj al Pike por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Pony
Konverto de malnovaj BASIC-programoj al Pony por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Python
Konverto de malnovaj BASIC-programoj al Python por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Racket
Konverto de malnovaj BASIC-programoj al Racket por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Raku
Konverto de malnovaj BASIC-programoj al Raku por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Retro
Konverto de malnovaj BASIC-programoj al Retro por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Rexx
Konverto de malnovaj BASIC-programoj al Rexx por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Ring
Konverto de malnovaj BASIC-programoj al Ring por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Rust
Konverto de malnovaj BASIC-programoj al Rust por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Scala
Konverto de malnovaj BASIC-programoj al Scala por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Scheme
Konverto de malnovaj BASIC-programoj al Scheme por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Styx
Konverto de malnovaj BASIC-programoj al Styx por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Swift
Konverto de malnovaj BASIC-programoj al Swift por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of V
Konverto de malnovaj BASIC-programoj al V por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Vala
Konverto de malnovaj BASIC-programoj al Vala por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Zig
Konverto de malnovaj BASIC-programoj al Zig por lerni la fundamentojn de ĉi-tiu lingvo.

Eksteraj rilataj ligiloj