Name
Descripción del contenido de la página
Conversión de Name a varios lenguajes de programación.
Este programa ha sido convertido a 23 lenguajes de programación.
Original
Origin of name.bas:
Example included in Vintage BASIC 1.0.3.
http://vintage-basic.net/
10 INPUT"WHAT IS YOUR NAME";NAME$
20 INPUT"ENTER A NUMBER";N
30 FORI=1TON
40 ?"HELLO, ";NAME$;"!"
50 NEXT
En 8th
\ Name
\ Original version in BASIC:
\ Example included in Vintage BASIC 1.0.3.
\ http://www.vintage-basic.net
\ This version in 8th:
\ Copyright (c) 2023, Marcos Cruz (programandala.net)
\ SPDX-License-Identifier: Fair
\ Written on 2023-03-09.
\ Last modified 20231103T2334+0100.
64 constant entry_max_len
: input_number \ -- n
null
repeat drop
"Enter a number" .
entry_max_len null con:accept >n
null? while! ;
\ Ask the user to enter a number. If the entry cannot be converted to a number,
\ ask again.
: input_name \ -- s
null
repeat drop
"What is your name?" .
entry_max_len null con:accept
s:len 0 = while! ;
\ Ask the user to enter a name. If the entry is empty, ask again.
: app:main \ --
input_name
input_number
repeat
"Hello, " . over . "!" . cr
n:1- while
2drop ;
En Arturo
; Name
; Original version in BASIC:
; Example included in Vintage BASIC 1.0.3.
; http://www.vintage-basic.net
; This version in Arturo:
; Copyright (c) 2023, Marcos Cruz (programandala.net)
; SPDX-License-Identifier: Fair
;
; Written on 2023-10-19.
;
; Last modified: 20251205T0049+0100.
name: input "What is your name? "
until [
numberString: input "Enter a number: "
dup numeric? numberString else [ print "Number expected. Retry." ]
] []
number: floor to :floating numberString
loop range 1 number [] [ print ~"Hello, |name|" ]
En C#
// Name
// Original version in BASIC:
// Example included in Vintage BASIC 1.0.3.
// http://www.vintage-basic.net
// This version in C#:
// Copyright (c) 2024, Marcos Cruz (programandala.net)
// SPDX-License-Identifier: Fair
//
// Written on 2024-12-21.
//
// Last modified: 20251205T1543+0100.
using System;
class Name
{
static void Main()
{
Console.Write("What is your name? ");
string name = Console.ReadLine();
double number;
while (true)
{
Console.Write("Enter a number: ");
try
{
number = Int64.Parse(Console.ReadLine());
break;
}
catch
{
Console.WriteLine("Integer expected.");
}
}
for (int i = 0; i < number; i++)
{
Console.WriteLine($"Hello, {name}!");
}
}
}
En C3
// Name
// Original version in BASIC:
// Example included in Vintage BASIC 1.0.3.
// http://www.vintage-basic.net
// This version in C3:
// Copyright (c) 2025, Marcos Cruz (programandala.net)
// SPDX-License-Identifier: Fair
//
// Written on 2025-03-09, 2025-03-12, 2025-03-18.
//
// Last modified: 20250731T1954+0200.
import std::io;
fn String acceptString(String prompt = "") {
io::print(prompt);
String! s = io::readline();
if (catch excuse = s) {
return "";
} else {
return s;
}
}
fn int! acceptInteger(String prompt = "") {
String s = acceptString(prompt);
defer free(s);
return String.to_int(s);
}
fn int acceptValidInteger(String prompt = "", String error = "Integer expected.\n") {
while (true) {
int! n = acceptInteger(prompt);
if (catch excuse = n) {
io::print(error);
} else {
return n;
}
}
}
fn void main() {
String name = acceptString("What is your name? ");
defer free(name);
int number = acceptValidInteger("Enter a number: ");
io::printfn("number=%s", number);
for (int i = 0; i < (number); i += 1) {
io::printfn("Hello, %s!", name);
}
}
En Chapel
// Name
// Original version in BASIC:
// Example included in Vintage BASIC 1.0.3.
// http://www.vintage-basic.net
// This version in Chapel:
// Copyright (c) 2025, Marcos Cruz (programandala.net)
// SPDX-License-Identifier: Fair
//
// Written on 2025-04-05.
//
// Last modified: 20250405T2002+0200.
import IO;
proc acceptString(prompt: string): string {
write(prompt);
IO.stdout.flush();
return IO.readLine().strip();
}
proc acceptValidInteger(prompt: string): int {
var result: int;
while true {
var s: string = acceptString(prompt);
try {
result = s: int;
break;
}
catch exc {
writeln("Integer expected.");
}
}
return result;
}
proc main() {
var name: string = acceptString("What is your name? ");
var number: int = acceptValidInteger("Enter a number: ");
for 1 .. number {
writef("Hello, %s!\n", name);
}
}
En Crystal
# Name
# Original version in BASIC:
# Example included in Vintage BASIC 1.0.3.
# http://www.vintage-basic.net
# This version in Crystal:
# Copyright (c) 2023, Marcos Cruz (programandala.net)
# SPDX-License-Identifier: Fair
#
# Written on 2023-09-30.
#
# Last modified: 20231104T0010+0100.
def getn(prompt : String) : Float64
while true
print prompt
begin
number = gets.not_nil!.to_f
break
rescue
puts "Number expected."
end
end
number
end
print "What is your name? "
name = gets.not_nil!
n = getn "Enter a number: "
n.to_i.times do
puts "Hello, #{name}!"
end
En D
// Name
// Original version in BASIC:
// Example included in Vintage BASIC 1.0.3.
// http://www.vintage-basic.net
// This version in D:
// Copyright (c) 2025, Marcos Cruz (programandala.net)
// SPDX-License-Identifier: Fair
//
// Written on 2025-03-22.
//
// Last modified: 20251219T2153+0100.
module name;
string acceptString(string prompt)
{
import std.stdio : readln;
import std.stdio : write;
import std.string : strip;
write(prompt);
return strip(readln());
}
int acceptValidInteger(string prompt)
{
import std.conv : to;
import std.stdio : writeln;
int result;
while (true)
{
string s = acceptString(prompt);
try
{
result = to!int(s);
break;
}
catch (Exception exc)
{
writeln("Integer expected.");
}
}
return result;
}
void main()
{
import std.stdio : writef;
string name = acceptString("What is your name? ");
int number = acceptValidInteger("Enter a number: ");
foreach (_; 0 .. number)
{
writef("Hello, %s!\n", name);
}
}
En Factor
! Name
! Original version in BASIC:
! Example included in Vintage BASIC 1.0.3.
! http://www.vintage-basic.net
! This version in Factor:
! Copyright (c) 2024, Marcos Cruz (programandala.net)
! SPDX-License-Identifier: Fair
! Written in 2024-11-30/12-02.
! Last modified 20241203T0108+0100.
USING: io kernel math math.parser sequences ;
IN: name
! XXX FIXME Prompts are printed only after both inputs! But
! it works fine on the graphical interface. Bug of Factor?
: repetitions ( -- number )
"" [ string>number dup ] [ drop "Enter a number: " write readln ] until ;
! Ask the user to enter a number. If the entry cannot be converted to a number, ask again.
: name ( -- string )
"" [ dup "" = ] [ drop "What is your name? " write readln ] while ;
! Ask the user to enter a name. If the entry is empty, ask again.
: salute ( -- string )
"Hello, " name append "!" append ;
: run ( -- )
salute repetitions swap '[ _ print ] times ;
MAIN: run
En Go
/*
Name
Original version in BASIC:
Example included in Vintage BASIC 1.0.3.
http://www.vintage-basic.net
This version in Go:
Copyright (c) 2024, Marcos Cruz (programandala.net)
SPDX-License-Identifier: Fair
Written on 2024-12-31.
Last modified: 20241231T0218+0100.
*/
package main
import "fmt"
import "strconv"
func inputString(prompt string) string {
fmt.Print(prompt)
var s = ""
fmt.Scanf("%s", &s)
return s
}
func inputInt(prompt string) int {
var number int64
var err error
for {
number, err = strconv.ParseInt(inputString(prompt), 10, 0)
if err == nil {
break
} else {
fmt.Println("Integer expected.")
}
}
return int(number)
}
func main() {
var name string = inputString("What is your name? ")
var number int = inputInt("Enter a number: ")
for i := 0; i < number; i++ {
fmt.Printf("Hello, %v!\n", name)
}
}
En Hare
// Name
//
// Original version in BASIC:
// Example included in Vintage BASIC 1.0.3.
// http://www.vintage-basic.net
//
// This version in Hare:
// Copyright (c) 2025, Marcos Cruz (programandala.net)
// SPDX-License-Identifier: Fair
//
// Written in 2025-02-14/15.
//
// Last modified: 20260213T1645+0100.
// Modules {{{1
// =============================================================================
use bufio;
use fmt;
use os;
use strconv;
use strings;
// User input {{{1
// =============================================================================
fn print_prompt(prompt: str) void = {
fmt::print(prompt)!;
bufio::flush(os::stdout)!;
};
fn accept_string(prompt: str = "") str = {
print_prompt(prompt);
const buffer = match (bufio::read_line(os::stdin)!) {
case let buffer: []u8 =>
yield buffer;
case =>
return "";
};
defer free(buffer);
return strings::dup(strings::fromutf8(buffer)!)!;
};
fn accept_integer(prompt: str = "") (int | ...strconv::error) = {
const string: str = accept_string(prompt);
defer free(string);
return strconv::stoi(string);
};
fn accept_valid_integer(prompt: str = "", error: str = "Integer expected.") int = {
for (true) {
match (accept_integer(prompt)) {
case let number: int =>
return number;
case =>
fmt::println(error)!;
};
};
};
// Main {{{1
// =============================================================================
export fn main() void = {
const name: str = accept_string("What is your name? ");
defer free(name);
const number: int = accept_valid_integer("Enter a number: ");
for (let i = 0; i < (number): int; i += 1) {
fmt::printfln("Hello, {}!", name)!;
};
};
En Io
#!/usr/bin/env io
/*
Name
Original version in BASIC:
Example included in Vintage BASIC 1.0.3.
http://www.vintage-basic.net
This version in Io:
Copyright (c) 2024, Marcos Cruz (programandala.net)
SPDX-License-Identifier: Fair
Written on 2024-12-03.
Last modified: 20241203T0045+0100.
*/
"What is your name? " print
name := File standardInput readLine
loop(
"Enter a number: " print
number := File standardInput readLine asNumber
// N.B. Invalid inputs cause a `nan` value and don't pass the test.
if(number > 0, break)
"Number greater than 0 expected." println
)
number repeat(
"Hello, " print name print "!" println
)
En Janet
# Name
# Original version in BASIC:
# Example included in Vintage BASIC 1.0.3.
# http://www.vintage-basic.net
# This version in Janet:
# Copyright (c) 2025, Marcos Cruz (programandala.net)
# SPDX-License-Identifier: Fair
#
# Written on 2025-12-24.
#
# Last modified 20251225T1945+0100.
(defn accept-string [prompt-text]
(prin prompt-text)
(string/trim (getline)))
(defn accept-integer [prompt-text]
(def input (accept-string prompt-text))
(def number (scan-number input))
(if number
(math/trunc number)
(do
(print "Number expected.")
(accept-integer prompt-text))))
(defn main [& args]
(def name (accept-string "What is your name? "))
(def times (accept-integer "Enter a number: "))
(for i 0 times
(print "Hello, " name "!")))
En Julia
# Name
# Original version in BASIC:
# Example included in Vintage BASIC 1.0.3.
# http://www.vintage-basic.net
# This version in Julia:
# Copyright (c) 2024, Marcos Cruz (programandala.net)
# SPDX-License-Identifier: Fair
#
# Written on 2024-07-01.
#
# Last modified: 20240704T1050+0200.
print("What is your name? ")
name = readline()
n = 0
while true
print("Enter a number: ")
global n = tryparse(Int, readline())
if isnothing(n)
println("Number expected. Retry input line.")
else
break
end
end
for _ = 1:n
println("Hello, $(name)!")
end
En Kotlin
/*
Name
Original version in BASIC:
Example included in Vintage BASIC 1.0.3.
http://www.vintage-basic.net
This version in Kotlin:
Copyright (c) 2023, Marcos Cruz (programandala.net)
SPDX-License-Identifier: Fair
Written on 2023-10-25.
Last modified: 20250420T0003+0200.
*/
// Print the given prompt, wait until the user enters a valid integer
// and return it.
fun getNumber(prompt: String): Int {
var number: Int
while (true) {
try {
print(prompt)
number = readln().toInt()
break
}
catch (e: Exception) { }
}
return number
}
fun main() {
print("What is your name? ")
val name = readln()
var number = getNumber("Enter a number: ")
print("Hello, $name!\n".repeat(number))
}
En Nim
#[
Name
Original version in BASIC:
Example included in Vintage BASIC 1.0.3.
http://www.vintage-basic.net
This version in Nim:
Copyright (c) 2025, Marcos Cruz (programandala.net)
SPDX-License-Identifier: Fair
Written in 2025-01-16.
Last modified: 20250404T0158+0200.
]#
import std/strutils
proc main() =
write(stdout, "What is your name? ")
let name = readLine(stdin)
var number: int
while true:
write(stdout, "Enter a number: ")
try:
number = parseInt(readLine(stdin))
if number >= 0:
break
writeLine(stdout, "Positive integer expected.")
except:
writeLine(stdout, "Integer expected.")
for _ in 1 .. number:
writeLine(stdout, "Hello, ", name)
main()
En Odin
/*
Name
Original version in BASIC:
Example included in Vintage BASIC 1.0.3.
http://www.vintage-basic.net
This version in Odin:
Copyright (c) 2023, 2025, Marcos Cruz (programandala.net)
SPDX-License-Identifier: Fair
Written in 2023-10-01/02, 2025-02.
Last modified: 20250226T2325+0100.
*/
package name
import "../lib/anodino/src/read"
import "core:fmt"
main :: proc() {
fmt.print("What is your name? ")
name, _ := read.a_string()
defer delete(name)
number : f64
for ok := false; !ok; {
fmt.print("Enter a number: ")
number, ok = read.an_f64()
if !ok do fmt.println("Number expected.")
}
for _ in 0 ..< int(number) do fmt.printfln("Hello, %v!", name)
}
En Pike
#! /usr/bin/env pike
// Name
// Original version in BASIC:
// Example included in Vintage BASIC 1.0.3.
// http://www.vintage-basic.net
// This version in Pike:
// Copyright (c) 2025, Marcos Cruz (programandala.net)
// SPDX-License-Identifier: Fair
//
// Written on 2025-03-08.
//
// Last modified: 20250308T1621+0100.
string accept_string(string prompt) {
write(prompt);
return Stdio.stdin->gets();
}
int accept_integer(string prompt) {
// NB The casting accepts any valid integer at the start of the string
// and ignores the rest; if no valid integer is found at the start of
// the string, zero is returned.
return (int) accept_string(prompt);
}
int accept_valid_integer(string prompt) {
int n = 0;
while (n <= 0) {
n = accept_integer(prompt);
if (n <= 0) {
write("Integer greater than zero expected.\n");
}
}
return n;
}
void main() {
string name = accept_string("What is your name? ");
int number = accept_valid_integer("Enter a number: ");
for (int i = 0; i < (number); i += 1) {
write("Hello, %s!\n", name);
}
}
En Python
# Name
# Original version in BASIC:
# Example included in Vintage BASIC 1.0.3.
# http://www.vintage-basic.net
# This version in Python:
# Copyright (c) 2024, Marcos Cruz (programandala.net)
# SPDX-License-Identifier: Fair
#
# Written on 2024-10-29.
#
# Last modified: 20241029T2042+0100.
import ast
print("What is your name? ", end = "")
name = input()
while True:
try:
n = ast.literal_eval(input("Enter a number: "))
break
except:
print("Number expected. Retry input line.")
for _ in range(0, n):
print(f"Hello, {name}!")
En Raku
# Name
# Original version in BASIC:
# included in Vintage BASIC 1.0.3.
# http://www.vintage-basic.net
# This version in Raku:
# Copyright (c) 2024, Marcos Cruz (programandala.net)
# SPDX-License-Identifier: Fair
# Written on 2024-12-02.
# Last modified: 20241203T1831+0100.
my $name = prompt 'What is your name? ';
my Int $number;
loop {
try {
$number = +prompt 'Enter a number: ';
CATCH {
default {
put 'Number expected.';
next;
}
}
}
last;
}
for 1 .. $number {
put "Hello, $name!";
}
En Ring
/*
Name
Original version in BASIC:
Example included in Vintage BASIC 1.0.3.
http://www.vintage-basic.net
This version in Ring:
Copyright (c) 2024, Marcos Cruz (programandala.net)
SPDX-License-Identifier: Fair
Written on 2024-03-18.
Last modified: 20240318T1305+0100.
*/
put "What is your name? "
get name
while true
put "Enter a number: "
n = getNumber()
// NOTE: Somehow `isNumber()` does not work as expected with values
// returned by `get` or `getNumber()`; therefore `isString()` is used
// instead:
if not isString(n)
break
else
put "Number expected. Retry." + nl
end
end
for i = 1 to n
put "Hello, " + name + "!" + nl
next
En Scheme
; Name
; Original version in BASIC:
; Example included in Vintage BASIC 1.0.3.
; http://www.vintage-basic.net
; This version in Scheme (Bigloo):
; Copyright (c) 2025, Marcos Cruz (programandala.net)
; SPDX-License-Identifier: Fair
;
; Written in 2025-12-03/04.
;
; Last modified 20251224T1231+0100.
(module name)
(define (accept-string prompt)
(display prompt)
(read-line))
(define (accept-integer prompt)
(let ((input (accept-string prompt)))
(let ((number (string->number input)))
(if number
(truncate number)
(begin
(display "Number expected.")
(newline)
(accept-integer prompt))))))
(let ((name (accept-string "What is your name? ")))
(let ((times (accept-integer "Enter a number: ")))
(do ((i 0 (+ i 1))) ((>= i times))
(display (format "Hello, ~a!" name))
(newline))))
En Swift
/*
Name
Original version in BASIC:
Example included in Vintage BASIC 1.0.3.
http://www.vintage-basic.net
This version in Swift:
Copyright (c) 2025, Marcos Cruz (programandala.net)
SPDX-License-Identifier: Fair
Written on 2025-04-23.
Last modified: 20250423T1045+0200.
*/
var name = ""
while name == "" {
print("What is your name? ", terminator: "")
name = readLine() ?? ""
}
var number = 0
while number <= 0 {
print("Enter a number greater than 0: ", terminator: "")
number = Int(readLine() ?? "0") ?? 0
}
for _ in 0 ..< number {
print("Hello, \(name)!")
}
En V
/*
Name
Original version in BASIC:
Example included in Vintage BASIC 1.0.3.
http://www.vintage-basic.net
This version in V:
Copyright (c) 2025, Marcos Cruz (programandala.net)
SPDX-License-Identifier: Fair
Written on 2025-01-03.
Last modified: 20250103T2059+0100.
*/
import os
import strconv
fn input_int(prompt string) int {
mut n := 0
for {
n = strconv.atoi(os.input(prompt)) or { continue }
break
}
return n
}
fn main() {
name := os.input('What is your name? ')
number := input_int('Enter a number: ')
for _ in 0 .. number {
println('Hello, ${name}!')
}
}
