Basics of Icon

Descripción del contenido de la página

Conversión de antiguos programas de BASIC a Icon para aprender los rudimentos de este lenguaje.

Etiquetas:

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

Páginas relacionadas

Basics off
Metaproyecto sobre los proyectos «Basics of…».
Basics of 8th
Conversión de antiguos programas de BASIC a 8th para aprender los rudimentos de este lenguaje.
Basics of Ada
Conversión de antiguos programas de BASIC a Ada para aprender los rudimentos de este lenguaje.
Basics of Arturo
Conversión de antiguos programas de BASIC a Arturo para aprender los rudimentos de este lenguaje.
Basics of C#
Conversión de antiguos programas de BASIC a C# para aprender los rudimentos de este lenguaje.
Basics of C3
Conversión de antiguos programas de BASIC a C3 para aprender los rudimentos de este lenguaje.
Basics of Chapel
Conversión de antiguos programas de BASIC a Chapel para aprender los rudimentos de este lenguaje.
Basics of Clojure
Conversión de antiguos programas de BASIC a Clojure para aprender los rudimentos de este lenguaje.
Basics of Crystal
Conversión de antiguos programas de BASIC a Crystal para aprender los rudimentos de este lenguaje.
Basics of D
Conversión de antiguos programas de BASIC a D para aprender los rudimentos de este lenguaje.
Basics of Elixir
Conversión de antiguos programas de BASIC a Elixir para aprender los rudimentos de este lenguaje.
Basics of F#
Conversión de antiguos programas de BASIC a F# para aprender los rudimentos de este lenguaje.
Basics of Factor
Conversión de antiguos programas de BASIC a Factor para aprender los rudimentos de este lenguaje.
Basics of FreeBASIC
Conversión de antiguos programas de BASIC a FreeBASIC para aprender los rudimentos de este lenguaje.
Basics of Gleam
Conversión de antiguos programas de BASIC a Gleam para aprender los rudimentos de este lenguaje.
Basics of Go
Conversión de antiguos programas de BASIC a Go para aprender los rudimentos de este lenguaje.
Basics of Hare
Conversión de antiguos programas de BASIC a Hare para aprender los rudimentos de este lenguaje.
Basics of Haxe
Conversión de antiguos programas de BASIC a Haxe para aprender los rudimentos de este lenguaje.
Basics of Io
Conversión de antiguos programas de BASIC a Io para aprender los rudimentos de este lenguaje.
Basics of Janet
Conversión de antiguos programas de BASIC a Janet para aprender los rudimentos de este lenguaje.
Basics of Julia
Conversión de antiguos programas de BASIC a Julia para aprender los rudimentos de este lenguaje.
Basics of Kotlin
Conversión de antiguos programas de BASIC a Kotlin para aprender los rudimentos de este lenguaje.
Basics of Lobster
Conversión de antiguos programas de BASIC a Lobster para aprender los rudimentos de este lenguaje.
Basics of Lua
Conversión de antiguos programas de BASIC a Lua para aprender los rudimentos de este lenguaje.
Basics of Nature
Conversión de antiguos programas de BASIC a Nature para aprender los rudimentos de este lenguaje.
Basics of Neat
Conversión de antiguos programas de BASIC a Neat para aprender los rudimentos de este lenguaje.
Basics of Neko
Conversión de antiguos programas de BASIC a Neko para aprender los rudimentos de este lenguaje.
Basics of Nelua
Conversión de antiguos programas de BASIC a Nelua para aprender los rudimentos de este lenguaje.
Basics of Nim
Conversión de antiguos programas de BASIC a Nim para aprender los rudimentos de este lenguaje.
Basics of Nit
Conversión de antiguos programas de BASIC a Nit para aprender los rudimentos de este lenguaje.
Basics of Oberon-07
Conversión de antiguos programas de BASIC a Oberon-07 para aprender los rudimentos de este lenguaje.
Basics of OCaml
Conversión de antiguos programas de BASIC a OCaml para aprender los rudimentos de este lenguaje.
Basics of Odin
Conversión de antiguos programas de BASIC a Odin para aprender los rudimentos de este lenguaje.
Basics of Pike
Conversión de antiguos programas de BASIC a Pike para aprender los rudimentos de este lenguaje.
Basics of Pony
Conversión de antiguos programas de BASIC a Pony para aprender los rudimentos de este lenguaje.
Basics of Python
Conversión de antiguos programas de BASIC a Python para aprender los rudimentos de este lenguaje.
Basics of Racket
Conversión de antiguos programas de BASIC a Racket para aprender los rudimentos de este lenguaje.
Basics of Raku
Conversión de antiguos programas de BASIC a Raku para aprender los rudimentos de este lenguaje.
Basics of Retro
Conversión de antiguos programas de BASIC a Retro para aprender los rudimentos de este lenguaje.
Basics of Rexx
Conversión de antiguos programas de BASIC a Rexx para aprender los rudimentos de este lenguaje.
Basics of Ring
Conversión de antiguos programas de BASIC a Ring para aprender los rudimentos de este lenguaje.
Basics of Rust
Conversión de antiguos programas de BASIC a Rust para aprender los rudimentos de este lenguaje.
Basics of Scala
Conversión de antiguos programas de BASIC a Scala para aprender los rudimentos de este lenguaje.
Basics of Scheme
Conversión de antiguos programas de BASIC a Scheme para aprender los rudimentos de este lenguaje.
Basics of Styx
Conversión de antiguos programas de BASIC a Styx para aprender los rudimentos de este lenguaje.
Basics of Swift
Conversión de antiguos programas de BASIC a Swift para aprender los rudimentos de este lenguaje.
Basics of V
Conversión de antiguos programas de BASIC a V para aprender los rudimentos de este lenguaje.
Basics of Vala
Conversión de antiguos programas de BASIC a Vala para aprender los rudimentos de este lenguaje.
Basics of Zig
Conversión de antiguos programas de BASIC a Zig para aprender los rudimentos de este lenguaje.

Enlaces externos relacionados