林强 发表于 2022-12-14 20:48:21

闻太师 发表于 2022-12-14 20:44
那是你算法的问题,比如可以做个判断,如果某一轮没有交换过,就说明排序完成结束循环。

你说的没错,这就是很多人讲的程序优化的问题了,你写的程序能不能干活,和干的好不好是两回事了

youngchun 发表于 2022-12-14 22:18:53

林强 发表于 2022-12-14 17:49
这TI-BASIC和上个世纪的BASIC已经不太一样了,对于菜鸟的我来说,至少没有了行号,也无法用POKE CALL去写汇 ...

BASIC也是我最早学的语言。上初中时就有教过,但是学得是懂非懂。
后来我爸给买了一台小霸王学习机,在上面才把BASIC学得比较熟悉,后来上大学还去考了个BASIC的初级程序员。
再后来,学习了C语言后,就再也没用过BASIC,现在基本忘记了。

林强 发表于 2022-12-14 22:54:58

youngchun 发表于 2022-12-14 22:18
BASIC也是我最早学的语言。上初中时就有教过,但是学得是懂非懂。
后来我爸给买了一台小霸王学习机,在 ...

别小看小霸王学习机,在上面可以跑汇编程序哦,只是不能存东西,这是因为厂家为了防止盗版,改了键盘定义,造成无法使用LOAD和SAVE指令,本来是可以用录音机存储程序的:L

林强 发表于 2022-12-14 23:06:17

现在问题来了,怎么判断数字没有交换,排序完成了呢?:lol

ssffzz1 发表于 2022-12-14 23:09:51

本帖最后由 ssffzz1 于 2022-12-14 23:13 编辑

林强 发表于 2022-12-14 23:06
现在问题来了,怎么判断数字没有交换,排序完成了呢?

1)进入内层循环前清零一个标记 f=0
2)在内层循环里如果发生交换swap里面将标记置位f=1,
3)退出内层循环的时候,判断f==0,退出排序。

说起来麻烦,不过这事你怎么着也的把程序贴上来吧。

林强 发表于 2022-12-14 23:17:04

ssffzz1 发表于 2022-12-14 23:09
1)进入内层循环前清零一个标记 f=0
2)在内层循环里如果发生交换swap里面将标记置位f=1,
3)退出内 ...

大概知道怎么搞了,这BASIC语法上有点问题,计算器没什么资料,只能摸着石头过河:lol

林强 发表于 2022-12-15 15:52:01

接着昨天的,为了让程序识别到排序完成,可以设立一个标志位,并置1。在外循环前检查这个标志是否为1,如果为1则循环,为0则退出循环。当进入外循环时把标志置0,然后在内循环有数字位置交换时把标志置1。这个用C很容易写,但是用BASIC稍微绕一下,可以用三种方法实现:lol

林强 发表于 2022-12-15 16:00:47

1,外循环用FOR语句时,在循环后判断标志是否为0,如为0用exit语句直接跳出循环
2,外循环用FOR语句,在循环后判断标志是否为0,如为0用GOTO语句跳出循环
2,外循环用while语句,在循环前判断标志是否大于0,如为0,则直接结束循环

林强 发表于 2022-12-15 16:04:51

这里面学到了for和while的不同,当知道一个循环的次数时用for,对于循环次数未知时用while,本例中排序的循环完成次数是未知的,所以用while更合适,语句更少。:lol

ssffzz1 发表于 2022-12-15 16:08:43

Talk is cheap.Show me the code.


名人名言,不是我说的。专业的事用专业的语言。

ceceky 发表于 2022-12-15 16:13:43

编着玩是爱好,当职业是码农

林强 发表于 2022-12-15 16:30:14

还是要学python,刚安装好,以后贴代码就方便多了,当然计算器也要会玩:lol

bis 发表于 2022-12-15 18:44:32

林强 发表于 2022-12-15 19:33:12

bis 发表于 2022-12-15 18:44
计算器编程也能玩儿起来?中学生吧。

玩啥不是玩,这个计算器功能还是很强大的,新款的有python,:lol

ssffzz1 发表于 2022-12-15 19:41:29

好,递归,除了耗费内存栈外,几乎没什么缺点

>>> def f(j):
...   if j==0:
...             return(1)
...   return(j*f(j-1))

这样更紧凑,一个意思。
页: 1 [2] 3 4 5 6
查看完整版本: 你对编程感兴趣吗?