七周七语言:Io Day 2

试用Orange进行数据挖掘:Classification 环境 -------------------------------------------------------- Kubuntu 12.04/Python 2.7.3/Orange 2.0b   准备工作 -------------------------------------------------------- #1.下载Orange的源码和Numpy的源码 #2.编译Num 阅读详情

第二天

今天做这些花了几乎一个下午……主要原因是要查iolanguage.org上的文档,而且那个文档不知道为什么不能搜索 :(
这“一天”的内容,关于Io的控制语句、文件IO、错误处理、列表都有涉及。

个人比较喜欢的是Io的控制语句,写在一个()里,没有else,条件、语句都用一个comma隔开的感觉很不错;
有点不理解的是关于Io的消息机制和反射,虽然书上的例子举的比较清楚,可是还是觉得将其称之为“反射”比较不习惯;再者,关于原型和对象的关系,感觉就是类的继承(?!)……好吧,学习一门语言的过程还是挺欢乐的~

  • 计算fibonacci数列

    #循环的方法
    array := List clone
    array := list(1, 1)
    #change the value of a to cal fib(a)
    a ::= 10
    for(i, 2, a, 1, array append(array at(i-1) + array at(i-2)) println)
    #Output
    list(1, 1, 2)
    list(1, 1, 2, 3)
    list(1, 1, 2, 3, 5)
    list(1, 1, 2, 3, 5, 8)
    list(1, 1, 2, 3, 5, 8, 13)
    list(1, 1, 2, 3, 5, 8, 13, 21)
    list(1, 1, 2, 3, 5, 8, 13, 21, 34)
    list(1, 1, 2, 3, 5, 8, 13, 21, 34, 55)
    list(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89)
    ==> list(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89)
    #递归的方法
    fib := method( n,
            if(((n == 1) or (n == 2)),return(1))
            #loop until n == i
            reFib := method( n, i, n1, n2,
                if((n == i),return(n1 + n2))
                    return(reFib(n,(i+1),n2,(n2 + n1)))
            )
            #The first condition of reFib
            return(reFib( n, 3, 1, 1))
    )
    fib(1) println
    fib(2) println
    fib(10) println
    #Output
    1
    1
    55
            
  • 在分母为0的情况下,如何让运算符返回0?

      Number setSlot("division", Number getSlot("/"))
      
      Number setSlot("/",
         method( denominator,
               if((denominator == 0),return (0))
               return(self division( denominator))
            )
      )
      
      (1 / 0) println
      (2 / 1) println
      #Output
      0
      2
            
  • 对二维数组进行求和

    #Define a 2D array
    2d_array := list(
    		 list(1, 2, 3),
    		 list(4, 5, 6),
    		 list(7, 8, 9)
    )
    sum := 0
    #Nested foreach statement
    2d_array foreach(r, r foreach(v, (sum = sum + v)))
    "The sum of this 2D array is: " print
    sum println
    #Output
    The sum of this 2D array is: 45
            
  • 对列表增加一个名为myAverage的槽,以计算列表中所有数字的平均值。如果列表没有数字会发生什么?

    List myAverage := method(
    	 sum := 0 
    	 self foreach(k, 
    	 	  if((k type != "Number"),
    		  		Exception raise("There is a NaN-value in the list, please check your list." ),
    		  sum =( sum + k))
    	)
    	return (sum/(self size))
    )
    
    list(1, 2, 3) myAverage println
    list(1, "a", 3) myAverage println
    #Output
    2
      Exception: There is a NaN-value in the list, please check your list.
      ---------
      Exception raise                      myAverage.io 5
      List myAverage                       myAverage.io 13
      CLI doFile                           Z_CLI.io 140
      CLI run                              IoState_runCLI() 1
            
  • 对二维列表写一个原型。该原型的dim(x, y)方法可为一个包含y个列表的列表分配内存,其中每个列表都有x个元素,set(x, y)方法可以设置列表中的值,get(x, y)方法可返回列表中的值。

    2DList := List clone
    #This method should be considered later
    2DList dim := method(x, y,
    	   if( (self proto type == "List"),
    	   	   return 2DList clone dim(x, y)
    	   )
    	   self setSize(x)
    	   for(i, 0, (x-1), 1,
    	   		  self atPut(i, (list() setSize(y)))
    	   )
    	   return self
    )
    #set the value at(x) at(y)
    2DList set := method(x, y, value,
    	   self at(x) atPut(y, value)
    	   return self
    )
    #get the value 
    2DList get := method(x, y,
    	   return (self at(x) at(y))
    )
    
    matrix := 2DList clone dim(3, 3)
    for(i, 0, 2, 1, for(n, 0, 2, 1, matrix set(i, n, i+n))) println
    matrix get(1, 1) println
    #Output
    list(list(0, 1, 2), list(1, 2, 3), list(2, 3, 4))
    2 
            

  • 把矩阵写入文件,并从文件中读取矩阵。

    #Define a matrix
    matrix := list(
    	   list(1, 2, 3),
    	   list(4, 5, 6),
    	   list(7, 8, 9)
    )
    #Create a new file named test.txt
    data := File open("test.txt")
    #Transform the matrix into a sequence and write it into the file
    data File write(matrix serialized)
    data close
    #Read solution 1: use File open(still a serialized file)
    readData := File open("test.txt")
    readData readLine println
    readData close
    #Read solution 2: use doFile
    readData2 := doFile("test.txt")
    readData2 println
    readData2 close
    #Output
    list(list(1, 2, 3);, list(4, 5, 6);, list(7, 8, 9););
    list(list(1, 2, 3), list(4, 5, 6), list(7, 8, 9))
            
  • 写一个猜数字程序。

    #Guess number
    standardIO := File standardInput
    guess := nil
    counter := 0
    #Get a random number between 1~100
    answer := (Random value(99)+1) floor
    
    while( counter < 10,
    	   "Guess a number(1..100):" println
    	   guess := standardIO readLine() asNumber()
    	   if((guess == answer), 
    	   			 "You are right!" println;break,
    				 if((guess > answer), 
    				 		   "Too big" println, 
    				 		   "Too small" println)
    	   )
           counter = counter + 1
    )
    #Output
    Guess a number(1..100):
    50 
    Too small
    Guess a number(1..100):
    75
    Too small
    Guess a number(1..100):
    90
    Too small
    Guess a number(1..100):
    95
    Too big
    Guess a number(1..100):
    93
    Too big
    Guess a number(1..100):
    92
    You are right!
            
七周七语言:Prolog Day 1 第一天 看到‘地图着色’那个例子的时候觉得prolog这下牛逼了……的确,只要通过描述的事实,就能将其填色 :) 这里介绍一下怎么用prolog来解地图填色问题: 在prolog中,只需要描述颜色的种类、以及各个区域的接壤问题即可。 different(red, green). different(red, blue). different(green, red). diffe 阅读详情

相关推荐

c语言串口编程详解

串口: 一种异步通信接口,通常用于低速数据传输。RS-232: 最常见的串口标准,定义了电气特性、连接器和信号线。UART: 通用异步收发传输器,是实现串口通信的硬件模块。通过以上内容,你应能够理解并实现C语言在Windows和Linux平台上的串口编程。希望这本手册能帮助你在实际项目中顺利进行串口通信开发。如果有任何疑问或需要进一步的帮助,请随时提问。

jkzyx123的博客 2224

七周七语言之IO学习笔记

为什么80%的码农都做不了架构师?>>> ...

weixin_34242658的博客 274

TekTronix 高速信号完整性基础以及测试方法分析

如果信号速率比较高,则CTLE与FFE都无法满足要求,尤其是大于10G,比如USB3.1Gen2 10Gbps,PCIe4.0 16Gbps,这些场合都会采用DFE均衡,DFE的优点是,它既可以识别当前比特,并且可以判决前面的n个比特(Tap的阶数越高,看到的前面的比特数越多),根据前面比特的变化来计算出要处理当前比特所要变化的幅度,来补偿由于前面比特变化所引起的信号幅度的变化。10G以下,一般都不太关心这个串扰,高于10G的信号,会发现相互之间的串扰越来越明显,已经成为引起误码的重要的原因之一。

weixin_45365488的博客 4143

七周七语言——Io

一些点: 原型语言:一切都是对象,对象继承对象。即只有对象,没有类;对象继承对象,而不是类继承类。“原型对象”是核心概念。原型对象是新对象的模板,它将自身的属性共享给新对象。 转载于:https://www.cnblogs.com/rolling-stone/p/4520031.html...

weixin_34302798的博客 139

uni-app项目中引入Vant UI组件库(完美避坑!!!)纯净版

uni-app项目中引入Vant UI组件库(纯净版--无uni-ui)

Wzmlzrr的博客 3万+

【WorkBuddy专栏09】WorkBuddy多模态能力深度揭秘

【WorkBuddy专栏09】AI不止会聊天——WorkBuddy多模态能力深度揭秘

AI人人懂 2124

七周七语言之IO语言代码学习

# hello.io "Hello World!" print # 实现unless功能 # doMessage相当于一些语言中的eval unless := method( (call sender doMessage(call message argAt(0))) ifFalse(call sender doMessage(call message argAt(1))) ifTrue

掘井之路 711

STC单片机 普通 I/O 口中断功能介绍和使用

STC32单片机 普通 I/O 口中断功能介绍和使用

perseverance51博客 3048

RHEL7.7-GPU驱动和IB驱动安装方式方法

GPU驱动和IB驱动安装方式方法-RHEL7.7 一 基础环境 系统:rhel7.7 --Red Hat Enterprise Linux Server release 7.7 (Maipo) 带有GUI的文件服务器安装 Kernel: 3.10.0-1062.el7.x86_64 硬件:RH2288V3 MT27500 Family [ConnectX-3] Tesla M60 二 软件包 IB软件包名:MLNX_OFED_LINUX-4.9-0.1.7.0-rhel7.7-x86_64.tgz

weixin_39213943的博客 1419

2023推免(夏令营+套实验室)面试总结(博文附问题汇总和参考答案)

2023推免(夏令营+套实验室)面试总结(博文附问题汇总和参考答案)

m0_51339444的博客 1808

使用python中pypower进行电力潮流计算

使用python中pypower进行电力潮流计算

总裁余(余登武)博客 4863

七周七语言:Scala Day 2

这天的内容给人印象最深的就是foldLeft这玩意儿,用起来就知道;读写文件感觉和Java很相似:-D 关于如何使用Scala文件的讨论 Scala可以使用所有的Java的对象,所以,java.io.File就可以被用来在Scala中读写文件。例如将“Hello,Scala”写进文件: import java.io.* object Test { def m...

SUMR_2014的博客 187

使用 Python 爬取 Wikipedia 数据:抓取百科条目及其内容

维基百科的 API 提供了一些方便的接口,通过这些接口,我们可以轻松获取到维基百科的条目、类别、图片和其他相关信息。维基百科的 API 主要是基于 HTTP 请求的,通过向特定的 URL 发送 GET 请求来获取信息。:获取指定条目的内容。在本博客中,我们介绍了如何使用 Python 爬取维基百科的条目数据。通过使用 Wikipedia API 和网页抓取技术,我们能够高效地获取条目内容,并将其存储和分析。希望本篇教程能帮助你深入理解如何抓取和处理维基百科的数据。

2201_76125261的博客 476

Io 语言入门

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34085658的博客 559

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Sui与KuCoin Labs联合推出夏季黑客松,奖池高达28.5万美金!

Sui与KuCoin Labs联合推出的夏季黑客松于5月29日正式开启,总奖池高达28.5万美金,最终比赛结果将于7月19日的Builder House巴黎站Demo Day上演示并公布。

Sui_Network的博客 652

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数据结构-BitSet和RoaringBitmap

数据结构-BitSet和RoaringBitmap 转载声明 本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容: RoaringBitmap数据结构及原理 作者:yizishou 出处:csdn 谈谈Roaring Bitmap 作者:TheLudlows 出处:csdn BitSet的使用场景及简单示例 作者:cloud-coder 出处:OSCHINA 1 BitMap 1.1 简介 BitMap/BitSet被广泛的应用于数据查询中,但其由于数据稀疏造成的内

迷路剑客个人博客 1727

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Teigha4.0加载显示Dwg文件

Teigha4.0加载显示Dwg文件 网上显示Dwg的例子不是很好找,最好还是去官网下载例子。 这里的demo大抵参考官网例子完成的。 初始化驱动 在窗体加载事件里面初始化显示驱动,代码怎么看都很奇怪,但人家就是这种写法 需要注意的是加载模块的名称,官网例子是WinOpenGL.txv、3.0版本的是WinGDI.gs、这里加载WinBitmap.txv模块,这几个到底啥含义没有去深究。 PaintGraphics = Graphics.FromHwnd(panel.Handle);

wangwg的专栏 4586

七周七语言:Io Day 3

第三天 做 改进本节生成的XML程序,增加空格以显示缩进结构。 Builder := Object clone Builder depth ::= 0 Builder forward := method( #depth ::= 0 prefix := (" " repeated (self depth)) writeln(prefix...

SUMR_2014的博客 245

七周七语言:Ruby Day 2

第二天 找 Ruby用代码块和不用代码块读取文件的方法,用代码块有什么好处? 用代码块读取文件的方法: File.open("text.txt") do |f| puts f.gets end 不用代码块读取文件的方法: f = File.new("text.txt","r") puts f.gets f.close 使用代码块,是一种用来打开一个单独文件的方法,

fanTasy 1352

七周七语言:Ruby Day 1

第一天 找 Ruby API 文档:http://ruby-doc.org/core-1.9.3/ Programming Ruby: The Pragmatic Programmer's Guide [TFH08]的免费在线版本:http://www.ruby-doc.org/docs/ProgrammingRuby/ 替换字符串某一部分的方法: 替换一次: "H

fanTasy 1319

七周七语言:Prolog Day 3

第三天 Prolog真是一位解题高手,Sudoku是我非常喜欢的一个游戏,Programming Logically! 不过对于不熟悉Prolog谓词的而言,又成了一个比较头疼所事,如果不告诉我可以用fd_all_difference来判断一个列表中元素没有重复值,真的不会想到用“谓词”。 其实觉得用Prolog来解决一下AI问题是很有用的,比如做一个棋类游戏的AI,告诉Prolog规则,恐

fanTasy 832
上一篇: 七周七语言:Io Day 1
下一篇: 七周七语言:Io Day 3
fanTasy_shAo
博客等级 码龄16年 7粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值