啊哈磊_编程从这里起步

标题: 《啊哈!算法》题解-易语言版 [打印本页]

作者: llc_cn    时间: 2014-7-19 14:49
标题: 《啊哈!算法》题解-易语言版
本帖最后由 llc_cn 于 2014-7-20 15:32 编辑

我是一个商人,但是喜欢编程,买了一本《啊哈!算法》,想提高提高。可惜一看内容都是C语言版的,我完全看不懂,就算照搬到TC2.0环境中,也编译无法通过,一堆错误,不知道怎么回事(第一节,桶排序,有明白人给解释一下么?书上的例子代码真的正确么?)

因为学过E,所以准备一边看书,一边用E的代码把书里的c代码都重写一遍。见笑了~~

第一章
第一节 桶排序
[mw_shl_code=c,true].
版本 2
.支持库 spec

.局部变量 a, 整数型, , "0"
.局部变量 b, 整数型, , "10"
.局部变量 i, 整数型
.局部变量 j, 整数型

置随机数种子 ()
.计次循环首 (5, )
    加入成员 (a, 取随机数 (1, 10))
.计次循环尾 ()
调试输出 (a)
.计次循环首 (4, i)
    b [a ] = 1
    .如果真 (a [i + 1] = a )
        b [a ] = b [a ] + 1
    .如果真结束
    b [a [i + 1]] = 1
.计次循环尾 ()
调试输出 (b)
.计次循环首 (10, j)
    .如果真 (b [j] ≠ 0)
        调试输出 (j)
    .如果真结束

.计次循环尾 ()
[/mw_shl_code]

第一章
第二节 冒泡排序
[mw_shl_code=c,true].版本 2
.支持库 spec

.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 a, 整数型, , "5"
.局部变量 m, 整数型
.局部变量 tmp, 整数型

置随机数种子 ()
.计次循环首 (5, m)
    a [m] = 取随机数 (1, 10)
.计次循环尾 ()
调试输出 (a)
.计次循环首 (4, i)
    .计次循环首 (5 - i, j)
        .如果真 (a [j] < a [j + 1])
            tmp = a [j]
            a [j] = a [j + 1]
            a [j + 1] = tmp
        .如果真结束

    .计次循环尾 ()
.计次循环尾 ()
调试输出 (a)
[/mw_shl_code]



作者: cad20020601    时间: 2014-7-19 16:27
沙发。            
作者: 嗨,强哥!    时间: 2014-7-20 14:35
我也用过易语言,虽然我支持国货,支持纯中文编程;但是C语言可以说是全球程序员通用的编程语言。我作为一名编程纯业余爱好者,最后还是放弃了易语言。
C语言简洁,运算能力强,模块化,保留字只有32个,基本上不用英文都能够看明白。当然英语熟练学起来更得心应手。

C语言我断断续续学了近三年,不过真正花的时间不多,现在基本上快学完了,感觉自己已经有一只脚迈进了C语言中,更加感到C语言的优美!
作者: 嗨,强哥!    时间: 2014-7-20 14:37
还是别浪费时间了,等学会C语言再回头看易语言就会觉得它简单了,更加容易上手了。
作者: 嗨,强哥!    时间: 2014-7-20 14:39
一般是先学会语言再看算法,或者是边学边看算法,你怎么一上来就看算法了。
作者: 嗨,强哥!    时间: 2014-7-20 14:40
语言是工具用来描述算法,你不会语言怎么写算法?
作者: 嗨,强哥!    时间: 2014-7-20 14:42
看看啊哈磊的代码,简洁优美!


#include <stdio.h>
int main()
{
    int a[11],i,j,t;
    for(i=0;i<=10;i++)
        a[i]=0;  //初始化为0
   
    for(i=1;i<=5;i++)  //循环读入5个数
    {
        scanf("%d",&t);  //把每一个数读到变量t中
        a[t]++;  //进行计数
    }

    for(i=0;i<=10;i++)  //依次判断a[0]~a[10]
        for(j=1;j<=a[i];j++)  //出现了几次就打印几次
            printf("%d ",i);

    getchar();getchar();
    //这里的getchar();用来暂停程序,以便查看程序输出的内容
    //也可以用system("pause");等来代替
    return 0;
}

作者: 嗨,强哥!    时间: 2014-7-20 14:44
本帖最后由 嗨,强哥! 于 2014-7-20 14:47 编辑

去掉注释,看起来更加优美。

#include <stdio.h>
int main()
{
    int a[11], i , j, t;
    for (i=0; i<=10; i++)
    a = 0;
   
    for (i=1; i<=5; i++)
    {
        scanf ("%d", &t);
        a[t]++;
    }

    for (i=0; i<=10; i++)
        for (j=1; j<=a; j++)
            printf ("%d ", i);

    system ("pause");
    return 0;
}





作者: llc_cn    时间: 2014-7-20 14:45
嗨,强哥! 发表于 2014-7-20 14:37
还是别浪费时间了,等学会C语言再回头看易语言就会觉得它简单了,更加容易上手了。

嗯,理解你的心情,但是这世界上没有千篇一律的东西,你觉得这个好学,我觉得那个好学,都是对的,能学会就是正确的。
C在大学时自己看过,但是没有能够坚持下来,甚为遗憾。
工作后接触到了易语言,感觉很舒服,很多东西不用学就明白,基本没有投入过太多精力学习,也能做出不错的小程序来:http://www.duote.com/soft/32919.html

易语言准确的说不算一门真正的计算机语言,比较恰当的形容是一个款快速开发工具,相当快速,相当容易的开发工具。同其他编程语言在学习上的难度相比,低到几乎没有。特别是很多支持信息和资料都是全中文,这点比C啊,VB啊什么的有那么一些优势。当然,你可能能举出很多反例来反驳我,不过没意思,咱们就是交流一下,我又不会逼你也学易语言,你也没法逼我不用易语言,交流而已。
作者: llc_cn    时间: 2014-7-20 14:47
嗨,强哥! 发表于 2014-7-20 14:42
看看啊哈磊的代码,简洁优美!

嗯。。。。。。。

我想说,所谓的优美不优美都是自己觉着的,我倒不是说C不优美,而是不能因此说别人不优美不是?

这里是啊哈磊的论坛,他是用C的,所以你说这个肯定没问题,不过要是你到CSDN上去说,估计会有人和你吵起来吧,哈哈哈
作者: llc_cn    时间: 2014-7-20 14:50
嗨,强哥! 发表于 2014-7-20 14:39
一般是先学会语言再看算法,或者是边学边看算法,你怎么一上来就看算法了。

我说了我不是科班,你别考我“语言”的定义或者“算法”的定义,这个我肯定不知道,我就知道我运用易语言这个开发工具能够写出程序解决自己的问题。而当我遇到一些问题必须考虑算法来实现或者更高效率的实现时,我就需要看算法的东西,这不是很顺理成章么?
作者: 嗨,强哥!    时间: 2014-7-20 14:54
llc_cn 发表于 2014-7-20 14:47
嗯。。。。。。。

我想说,所谓的优美不优美都是自己觉着的,我倒不是说C不优美,而是不能因此说别人 ...

中文混杂着符号和英文,程序看起来有点别扭。这么说,并不是崇洋媚外,毕竟编程发源地是西方,没办法,我们只好先学习别人定的规矩,这就是差距。
易语言很容易上手,但是底层的东西你是学不到的,(如果有用到,)没有则关系不大。
作者: 嗨,强哥!    时间: 2014-7-20 14:56
llc_cn 发表于 2014-7-20 14:50
我说了我不是科班,你别考我“语言”的定义或者“算法”的定义,这个我肯定不知道,我就知道我运用易语言 ...

如果你运用易语言熟练,那肯定可以看算法的。
我是说如果你用C语言,那是肯定先学语言再看算法。

同样实现一个算法,C语言效率那是肯定高于易语言的。
作者: 嗨,强哥!    时间: 2014-7-20 14:57
llc_cn 发表于 2014-7-20 14:50
我说了我不是科班,你别考我“语言”的定义或者“算法”的定义,这个我肯定不知道,我就知道我运用易语言 ...

我初中毕业,学C语言纯粹是业余爱好。
作者: llc_cn    时间: 2014-7-20 14:58
嗨,强哥! 发表于 2014-7-20 14:54
中文混杂着符号和英文,程序看起来有点别扭。这么说,并不是崇洋媚外,毕竟编程发源地是西方,没办法,我 ...

一个商人而已~~我相信我不懂什么叫指针,不知道寄存器和累加器应该不会影响我写一个进销存的小程序,嘿嘿。
作者: llc_cn    时间: 2014-7-20 14:58
嗨,强哥! 发表于 2014-7-20 14:54
中文混杂着符号和英文,程序看起来有点别扭。这么说,并不是崇洋媚外,毕竟编程发源地是西方,没办法,我 ...

至于说中文混杂着英文看起来别扭,嗯。。。。。。,我只能说,呵呵
作者: 嗨,强哥!    时间: 2014-7-20 14:59
llc_cn 发表于 2014-7-20 14:47
嗯。。。。。。。

我想说,所谓的优美不优美都是自己觉着的,我倒不是说C不优美,而是不能因此说别人 ...

不会的,C语言实现算法代码就那样简洁,无可置疑啊。
作者: 嗨,强哥!    时间: 2014-7-20 15:05
本帖最后由 嗨,强哥! 于 2014-7-20 15:36 编辑

《啊哈!算法》,想提高提高。可惜一看内容都是C语言版的,我完全看不懂,就算照搬到TC2.0环境中,也编译无法通过,一堆错误,不知道怎么回事(第一节,桶排序,有明白人给解释一下么?书上的例子代码真的正确么?)------就算不会C语言,看懂算法也可以用易语言来写程序。从这一点可以来说,你易语言也没有好好掌握

啊哈算法我也看了几章,简单明白,很容易用程序来实现的啊,不知道你易语言学了几天


作者: 嗨,强哥!    时间: 2014-7-20 15:07
llc_cn 发表于 2014-7-20 14:58
一个商人而已~~我相信我不懂什么叫指针,不知道寄存器和累加器应该不会影响我写一个进销存的小程序,嘿嘿 ...

从实用角度看,易语言容易上手编程出自己实用的程序,这一点可以肯定。确实如此。我赞同,因为我自己就实现过。
作者: 嗨,强哥!    时间: 2014-7-20 15:10
llc_cn 发表于 2014-7-20 14:58
至于说中文混杂着英文看起来别扭,嗯。。。。。。,我只能说,呵呵

中文,英文都很美,这无话可说。
但是混杂在一起很多人感觉不美,是因为西方语言有先入为主的优势,所以,很多人看原版的文档,就是这个原因。
别呵呵了
作者: llc_cn    时间: 2014-7-20 15:12
嗨,强哥! 发表于 2014-7-20 14:59
不会的,C语言实现算法代码就那样简洁,无可置疑啊。

给你讲个笑话吧:
说一个美女对一个程序员说,你要是能用一句话就让这个论坛打起来,我今晚就和你睡一觉。
程序员呵呵一笑,说:小意思,看我的。
于是程序员在论坛上发了一个帖子:PHP是世界上最优美的语言!
马上,论坛上关于哪种语言最优美的帖子就互相干起来了。
美女很佩服程序员,说:你真厉害,我服了你了,走吧,咱们开房去~~
程序员说:不!我一定要说服他们,PHP真的是这个世界上最优美的语言!!!!
作者: llc_cn    时间: 2014-7-20 15:14
嗨,强哥! 发表于 2014-7-20 15:05
《啊哈!算法》,想提高提高。可惜一看内容都是C语言版的,我完全看不懂,就算照搬到TC2.0环境中,也编译无 ...

你要是想让我同意你智商比我高,我就同意了。
作者: 嗨,强哥!    时间: 2014-7-20 15:17
llc_cn 发表于 2014-7-20 15:12
给你讲个笑话吧:
说一个美女对一个程序员说,你要是能用一句话就让这个论坛打起来,我今晚就和你睡一觉 ...

你爱钻牛角尖

适合自己的就好,比如适合你的易语言
我只说C语言简洁优美,你就受不了了,真奇怪啊。因为我也承认易语言实用上手快,只不过自己感觉中英文混杂不习惯而已。

C语言也有它自身的优缺点,但是它比起易语言优势还是很大的,原因不说了,希望你理解就好。所以国货当自强。
作者: 嗨,强哥!    时间: 2014-7-20 15:23
llc_cn 发表于 2014-7-20 15:14
你要是想让我同意你智商比我高,我就同意了。

不是这个意思。
语言只是工具而已,你喜欢易语言这工具,很好;我喜欢C语言也很好。至于你我用的熟练与否就不知道了。

算法是核心,解决一个问题的方法就是算法。你用易语言可以解决,我用C语言也可以解决。就这一点区别而已。

至于智商可以用勤学苦练来弥补,不是用争论来比高低。
作者: llc_cn    时间: 2014-7-20 15:27
再来一个笑话,哈哈哈

c程序员看不起c++程序员,
c++程序员看不起java程序员,
java程序员看不起c#程序员,
c#程序员看不起美工,
周末了,美工带着妹子出去约会了…
一群傻X程序员还在加班!
作者: 嗨,强哥!    时间: 2014-7-20 15:31
llc_cn 发表于 2014-7-20 15:27
再来一个笑话,哈哈哈

c程序员看不起c++程序员,

你讲的好比是说四川话的笑话说粤语的,说粤语的笑话讲鸟语的,最后一只猪爬上树把树叶吃了
作者: rosynirvana    时间: 2014-7-20 20:47
还是因为易语言扯了这么多楼
作者: 超神级    时间: 2014-7-20 21:30
其实很多语言都是有存在的必要的不然早就淘汰了,,对于某些程序开发易语言还是可以节约很多时间.
作者: Dsp    时间: 2014-7-21 08:57
打英文比打中文快
作者: 嗨,强哥!    时间: 2014-7-21 10:39
超神级 发表于 2014-7-20 21:30
其实很多语言都是有存在的必要的不然早就淘汰了,,对于某些程序开发易语言还是可以节约很多时间.

确实,易语言还是很容易上手的
作者: 嗨,强哥!    时间: 2014-7-21 10:40
Dsp 发表于 2014-7-21 08:57
打英文比打中文快

不见得,易语言内置输入法打中文也很快。
作者: 4399APPLE    时间: 2014-7-21 19:37
嗨,强哥! 发表于 2014-7-21 10:40
不见得,易语言内置输入法打中文也很快。

你回来了??
作者: 嗨,强哥!    时间: 2014-7-22 07:49
4399APPLE 发表于 2014-7-21 19:37
你回来了??

我回来了?啥意思
我说的易语言中文打字快是实事求是。
作者: 4399APPLE    时间: 2014-7-22 09:51
嗨,强哥! 发表于 2014-7-22 07:49
我回来了?啥意思
我说的易语言中文打字快是实事求是。

问题是易语言执行速度慢,要一句一句的翻译……
还有就是服务器不行,想做个聊天系统都不行,只好用MFC……
作者: rosynirvana    时间: 2014-7-22 09:55
易语言最大的优势是面向一个单词都不想看到的人
作者: 嗨,强哥!    时间: 2014-7-22 10:02
rosynirvana 发表于 2014-7-22 09:55
易语言最大的优势是面向一个单词都不想看到的人

单词都不想看懂人学习C绝对是个挑战。
我学习C语言,遇到的所有单词我都用有道过一遍。
作者: rosynirvana    时间: 2014-7-22 10:22
嗨,强哥! 发表于 2014-7-22 10:02
单词都不想看懂人学习C绝对是个挑战。
我学习C语言,遇到的所有单词我都用有道过一遍。

很多也不是单词,是缩写
例如printf(print function) stdio(standard input/output)
而且数目也不多(关键字加上新学会遇到的几个函数名)

如果是说了一辈子方言的人让他改说普通话肯定不现实
现在会上论坛的大部分人看英语单词看顺眼问题还是不大的吧(猜测)
作者: 嗨,强哥!    时间: 2014-7-22 10:54
rosynirvana 发表于 2014-7-22 10:22
很多也不是单词,是缩写
例如printf(print function) stdio(standard input/output)
而且数目也不多( ...

printf(print function),后面的f,我看成format(凭记忆打的,不知道单词有没有打错)中文是格式化。

我觉得能够把英文看顺眼了,说明已经进入学习状态了。
作者: 利威尔·阿克曼    时间: 2014-7-27 10:54
llc_cn 发表于 2014-7-20 14:45
嗯,理解你的心情,但是这世界上没有千篇一律的东西,你觉得这个好学,我觉得那个好学,都是对的,能学会 ...

太2真人...
作者: 嗨,强哥!    时间: 2014-8-9 23:49
llc_cn 发表于 2014-7-20 14:45
嗯,理解你的心情,但是这世界上没有千篇一律的东西,你觉得这个好学,我觉得那个好学,都是对的,能学会 ...

近期C基本上看了一遍,准备回头学易语言,感觉很轻松。因为以前用过VFP,上手没难度,看了一下易语言知识库,使用手册,写的很详细。我英语差,看不了外文文档,我想只能选择易语言了。
作者: 嗨,强哥!    时间: 2014-8-14 12:59
.版本 2

.程序集 窗口程序集1

.子程序 _编辑框1_内容被改变

a [1] = 到数值 (编辑框1.内容)

.子程序 _编辑框2_内容被改变

a [2] = 到数值 (编辑框2.内容)

.子程序 _编辑框3_内容被改变

a [3] = 到数值 (编辑框3.内容)

.子程序 _编辑框4_内容被改变

a [4] = 到数值 (编辑框4.内容)

.子程序 _编辑框5_内容被改变

a [5] = 到数值 (编辑框5.内容)


.子程序 _按钮1_被单击
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 t, 整数型

.计次循环首 (5, i)
    .计次循环首 (5 - i, j)
        .如果 (a [j] < a [j + 1])
            t = a [j]
            a [j] = a [j + 1]
            a [j + 1] = t
        .否则

        .如果结束

    .计次循环尾 ()
.计次循环尾 ()

编辑框1.内容 = 到文本 (a [1])
编辑框2.内容 = 到文本 (a [2])
编辑框3.内容 = 到文本 (a [3])
编辑框4.内容 = 到文本 (a [4])
编辑框5.内容 = 到文本 (a [5])

作者: APPLEUFO    时间: 2014-10-26 18:06
http://bbs.eyuyan.com/read.php?tid=360766
论坛4月就有完整的桶排序,你发现晚了
[mw_shl_code=c,true].版本 2

.子程序 数组模块_桶排序, , 公开, 排序正整数  注意: 最小不能为0,也不能为负数 // 真为从小到大,反之假
.参数 参数_原始, 整数型, 参考 数组
.参数 参数_顺序, 逻辑型, 可空
.局部变量 局变_最大数, 整数型
.局部变量 局变_桶子, 整数型, , "0", 根据 局变_最大数  定义需要 多少个桶子
.局部变量 n1, 整数型
.局部变量 m1, 整数型

.计次循环首 (取数组成员数 (参数_原始), n1)  ' 找数组里面最大的数
    .如果真 (局变_最大数 < 参数_原始 [n1])
        局变_最大数 = 参数_原始 [n1]
    .如果真结束

.计次循环尾 ()
' 调试输出 (局变_最大数, “局变_最大数”)

重定义数组 (局变_桶子, 假, 局变_最大数)  ' 从 0 --- 最大值

.计次循环首 (取数组成员数 (参数_原始), n1)
    ' 调试输出 (n1, 参数_原始 [n1])
    ' 调试输出 (局变_桶子 [参数_原始 [n1]])  ‘ 最小不能为0  ,否则此处数组0  报错
    局变_桶子 [参数_原始 [n1]] = 局变_桶子 [参数_原始 [n1]] + 1
.计次循环尾 ()


.如果真 (是否为空 (参数_顺序) = 真)
    参数_顺序 = 真
.如果真结束

.如果 (参数_顺序 = 真)

    .计次循环首 (取数组成员数 (局变_桶子), n1)
        .如果真 (局变_桶子 [n1] > 0)

            .计次循环首 (局变_桶子 [n1], )
                m1 = m1 + 1
                参数_原始 [m1] = n1
            .计次循环尾 ()
        .如果真结束

    .计次循环尾 ()

.否则

    m1 = 取数组成员数 (参数_原始)

    .计次循环首 (取数组成员数 (局变_桶子), n1)

        .如果真 (局变_桶子 [n1] > 0)

            .计次循环首 (局变_桶子 [n1], )
                参数_原始 [m1] = n1  ' 这两行与正序的两行  顺序不能错,否则数组0报错
                m1 = m1 - 1
            .计次循环尾 ()
        .如果真结束

    .计次循环尾 ()
.如果结束

' http://ahalei.blog.51cto.com/4767671/1362789    详情  【啊哈!算法】最快最简单的排序——桶排序
[/mw_shl_code]
作者: 羊丹    时间: 2014-11-10 21:26
我可以说一句吗?我初中高中就是学易语言的,现在大学学C.
我看来,易语言可以做为一门让你走进编程世界,让你提前感受编程快感的编程语言, C感觉入手难,新手能入,提升费劲.
我在一些小东西上喜欢用易语言,方便明了, C的编程运行更适合 讲究效率,兼容的.
在一些偏底层东西调用时,C 比易语言要灵活,
C 像是 沙子 ,让你自己去弄成砖块,让你自己构思设计.然后去建房子  ,易语言 像是 给你砖块, 给你的构图,让你去建.

易语言 和 C语言我都喜欢

作者: im2b    时间: 2015-4-28 19:56
E语言看起来真难,真难,真难啊

作者: amz    时间: 2015-7-7 10:31
楼主,学c比较好!你先看看<啊哈!c>这本书一定就能入门!这本书是通俗易懂,超级简单!
作者: 逸飞扬_VbCNT    时间: 2017-10-2 19:37
嗨,强哥! 发表于 2014-7-20 14:44
去掉注释,看起来更加优美。

#include

用一个自动缩进很容易做到   







欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2