Loops 图灵语言中的计数循环

Loops 图灵语言中的计数循环,loops,turing-lang,Loops,Turing Lang,当我运行程序时,我得到一个错误变量“I尚未声明” 当我将I声明为变量时,会出现错误“I已声明” 输出应如下所示: 年人口 =================== 2000 XXXXXXXXX ~ 2020年XXXXXXXXX 这是一个类似但简单得多的程序,我成功地完成了我在上面程序中尝试做的事情 % calculates the population of a city from year 2000 to 2020 var popstart : int := 80000 var popgrow

当我运行程序时,我得到一个错误变量“I尚未声明” 当我将I声明为变量时,会出现错误“I已声明”

输出应如下所示:

年人口
===================
2000 XXXXXXXXX ~ 2020年XXXXXXXXX

这是一个类似但简单得多的程序,我成功地完成了我在上面程序中尝试做的事情

% calculates the population of a city from year 2000 to 2020

var popstart : int := 80000
var popgrowth : real
var popend : real
var growthrate : real := 0.03

% popgrowth := popstart * growthrate
    for i : 2000..2020 by 1
popgrowth := popstart * growthrate
end for

put "year  population"
put "====  =========="
put  i, "  ", popgrowth
救命啊!
提前谢谢你

您必须申报i。i是一个从2000年开始一直到2020年的变量


var i:int应该可以做到这一点。

我对图灵知之甚少,但我怀疑i的
。。。是
i
的隐式声明

所以,我不知道你如何修复它,但你可以通过这样做来绕过它:

for i : 4 .. 19 by 3
    put i
end for

另一个答案是,对图灵知之甚少。。。。 我猜
I
仅在循环期间在作用域内,因为它是在该范围内声明的,所以当您试图在循环结束时在循环外部使用
I
时,它会抛出错误。这就解释了为什么你发布的小程序有效,而大程序无效。以及为什么当您尝试先在循环外声明
i
,然后在循环语句中再次声明时,它会抛出错误


我相信这和沃尔夫想说的是同一件事,但并没有真正解释原因。(如果我们关于
i
仅在循环中有效的说法是正确的,他的回答应该会解决这个问题)

我不知道如何解释,但你可以弄清楚这是否正确。(我对你的内容做了一些更改。)


您的主要问题是
i
超出范围。
i
只能在
for
循环中使用。将
Put
语句放入for循环中。像这样:

var popstart : int := 80000
var popgrowth : real
var popend : real
var growthrate : real := 0.03
var number:real
% popgrowth := popstart * growthrate
    for i : 2000..2020 by 1
    number:=i
popgrowth := popstart * growthrate
end for

put "year  population"
put "====  =========="
put  number, "  ", popgrowth
@戴维德沃利弗的解决方案只会带来去年的人口增长。你的程序也有一个逻辑错误,因为它只会给出人口增长率,而不会给出总人口

我假设这个问题已经和你们的老师解决了,因为图灵是一种非常过时的语言。它在几年前就失去了支持。我仍然记得九年级的一些问题,但在这里发布图灵相关的问题可能不是一个好主意,因为没有人真正理解这种语言及其惯例

需要帮助的资源:


更挑剔的细节是不相关的:for
语句的
for没有正确缩进,而且
by 1
是不必要的

谢谢马斯菲尼克斯,但我试过了。我得到了一个错误“我已经被声明了”,似乎我偶然发现了某种编程悖论。也许是因为在数字范围内的“两点”之间有一个空格。曼图灵让我想起了5-6年前的高中生活。我没有想到这一点,但看起来你们俩都是对的。现在要找出我的数学有什么问题…答案应该包含一个解释,并被认为是正确的。仔细阅读
% calculates population growth for city of Whitby between 2000 and 2020.

var popstart : int := 80000
var popgrowth : real
var growthrate : real := 0.03

put "year  population"
put "====  =========="
put "2000  80000"

popgrowth := popstart
for i : 2001 .. 2020 by 1
    popgrowth := popgrowth + (popgrowth * growthrate)
    put i, "  ", popgrowth:0:2
end for
var popstart : int := 80000
var popgrowth : real
var popend : real
var growthrate : real := 0.03
var number:real
% popgrowth := popstart * growthrate
    for i : 2000..2020 by 1
    number:=i
popgrowth := popstart * growthrate
end for

put "year  population"
put "====  =========="
put  number, "  ", popgrowth
% calculates the population of a city from year 2000 to 2020

var popstart : real := 80000
var popgrowth : real
var popend : real
var growthrate : real := 0.03

% popgrowth := popstart * growthrate
for i : 2000..2020
    popgrowth := popstart * growthrate
    popstart += popgrowth
    put "year  population"
    put "====  =========="
    put  i, "  ", popstart
end for