英语翻译Programming Methodology-Lecture13.

上传人:我** 文档编号:117057256 上传时间:2019-11-18 格式:PPT 页数:26 大小:3.33MB
返回 下载 相关 举报
英语翻译Programming Methodology-Lecture13._第1页
第1页 / 共26页
英语翻译Programming Methodology-Lecture13._第2页
第2页 / 共26页
英语翻译Programming Methodology-Lecture13._第3页
第3页 / 共26页
英语翻译Programming Methodology-Lecture13._第4页
第4页 / 共26页
英语翻译Programming Methodology-Lecture13._第5页
第5页 / 共26页
点击查看更多>>
资源描述

《英语翻译Programming Methodology-Lecture13.》由会员分享,可在线阅读,更多相关《英语翻译Programming Methodology-Lecture13.(26页珍藏版)》请在金锄头文库上搜索。

1、 它就会给你 there这个版本的tokenizer 定界符, 定界实际上是个很有意思的单词,可以把token分开,比 如空格,tab键,回车,单行没有回车,然后你说你有更 多的token。是的,给我下一个token。他就会给你mary 作为token。 之后当你说还有更多的token吗,就这么多了,这样 的话。你就不应该调用next token()。实际上如果你想 的话是可以调用的,你可以试试。但实际上没有token可 以给你了。这跟爱不爱没有关系,他迷失了自我,没有 token了。 是的,Air suppiy乐队。我太建议你们去听听了,但 是有时候你听到一首歌,就在你的脑海里挥之不去,有时

2、 候选择性脑残也不是件坏事,但是现在很重要,目前重要 的是我们如何把这些揉在一起来分解一行。我给你看一个 tokenizer例子这个例子很简单。 我们要做的就是向用户,我往下拉一点你们就可以看 得到了,我们让用户输入需要分离的内容然后我们写出字 符串R中得token,然后调用方法printfTokens。他会接受 你想分离的字符串。 它创建了其中一个stringTokenizer,()我们能打 个盹吗?不,我知道当你听到在你14岁的时候与初恋女友 分手时的歌,自那以后每次听到那首悲情曲,你就活不下 去,tokenizer,我觉得很有意思。 所以我们要做的就是数所有的token,我需要一个for

3、 loop,这就有趣了。我需要一个for loop,我要用for loop 做的不是检查我是否到达了最大数,我的目的是看看 tokenizer是否有更多的token。 所以我用for loop,就像是一般的应用,但是我从0开 始数,你会说看起来还可以。我用count+ 你会说好吧 ! mehran 你说什么呢?我说我正在数一共有多少token,你会 说,好嘛,很给力啊。所以我留下或离开的条件就是 tokenizer是否有更多的token。 若有更多的,我就到这里来得到下一个token,继续这 个循环。这个计数器会寻找到一个计数所有的token的方法 。所以写出的是token no. count

4、,之后就是 tokenizer.nexttoken(),有问题吗?我们来运行这个程 序,你可以想唱就唱,没问题,我们来运行这个小朋友。 我们的朋友叫什么来着,我们来运行tokenizer键入需分解 的行,我说 I for one,love CS 很正式。出现了字符串 中得tokens。这个I,就是一个token因为我们说过,空格 是界定符,所以剩下的token还有for one以及love和CS 。 这是你肯定会说,是的,太好了 ,但是你知道吗我 实在不喜欢标点符号,有时我不喜欢标点符号,但是我又 不能阻止用户输入符号我不在乎语法是不是正确,所以我 怎样阻止他们忽略语法,这很有意思。你可以说,

5、嘿,我 想改变tokenizer ,所以它不仅可以以空格分离,它也可 以设置其他的界定符,任何我给出的字符串用于分离。你 可以给出任意的界定符。这里我给出一个逗号一个空格, 这个stringtokenizer构造函数,可以实际分离一个字符 串. 但是你也可以使用其他的定界符,比如说逗号或者 是空格,都可以被看作是定界符。所有我说I for one love CS,没有逗号,为什么?因为逗号被当做了定界符 。 你也可以想象定界符是句号或者叹号皆可,或者其 他的任何字符,如果你想得到没有标点符号的,所以对于 很长的文本分离是个很好的东西,如果你想分离成多个单 独的单词,或者对单词做单独的处理,关于

6、tokenization 分离还有问题吗?希望接受起来不那么难。 接下来我想做的就是,字符串大杂烩,我想跟你们讲 讲近几年来计算机科学发展中,很重要的内容,也就是 encryption加密。加密这个概念其实已经有几千年的历史 了。加密实际上就是传递秘密的信息。 如果你有某个信息,你想传递给别人,你所要传得就 是加密的信息,有意思的是,人们已经在几千年前就知道 机密的应用了。但是在过去的50年中,人们并没有掌握到 加密的好方法。但是他们还是持续用了很长时间,人们破 解了加密的系统。 实际上,西蒙.辛格曾有本很有意思的著作。如果你 们感兴趣的话我下节课给你们带一本看看,这本书讲的是 加密的历史。这

7、本书追溯历史中破解密码在如何颠覆战争 或者皇室斗争的重要作用。 主要讲的就是加密,加密有很悠久的历史了,最著名 的要数凯撒加密法,不要以为这是沙拉的名字。凯撒加密 法,拿错教案了。我们想做的就是,把这些字母旋转得到 某种形式的替代。 这是什么意思呢?这是一堆单词。我现在用ppt给你 们详细展示一下。所以在凯撒时期,我现在假扮凯撒。本 来今天我想穿个大长袍来的,但是我觉得要得瑟招摇了, 所以我只是带来了凯撒皇冠。我本来先找个威严的皇冠, 但是没找到,所以我只带了这顶小帽。 所以我是凯撒,我自己封的皇冠,我知道里历史是要 有人来多权的。那是拿破仑,是另一码子的事儿了。我特 别喜欢混淆历史,看看你是

8、不是真的认真在听课,好的, 凯撒加密就是我们用原始的字母表,就是这个从A到Z的字 母表。 我们用这字母表,我们转换几个字母,比如说我们转 换三个字母,这样我转换了钱三个字母,D就会排在原来A 所在的位置,我把这些靠后的字母转移过来,ABC三个字 母就跑到最后面了,它们回事说我们怎么到后面来了,我 们刚才就是把它们转移到这里来了。 也就是说,我们旋转字母表N个字母的位置。在这个 例子中N=3 N就叫做密钥,所以凯撒加密的密钥就是你 所要移动的字母表。我们是循环转移的,现在,我们完成 了这个循环的转移,我们把想要加密的原始信息,这个我 们称尚未加密文本,这个文本里就是我们的原始信息。 我们想要通过

9、这个图标给这个文本加密,所以对于整 个字母表来说在原始信息中A就被D所代替,如果原始信息 中D就会被G替代,同理C 会被F代替。凯撒密码这部分还 有什么问题呢? 这被证实是有效的加密法,历史学家曾证实凯撒加密 在很久以前就得到了应用,但是他被刺杀了,说明加密还 有不足,但是,对于大部分人来说当你还小的时候,你有 的那个超级解码环就有点像是凯撒加密。好了,凯撒加密 这部分还有什么问题吗? 现在我们要做的就是写一个程序可以根据凯撒加密, 加密并解密文本,我们要做成自上而下设计。我就直接在 计算机上做了,这样会更有意思,因为我是凯撒,我能飙 车,所以我们现在有了凯撒密码,我已经给出了一些运行 方法,

10、这就是程序的最开始部分。 这部分没什么作用,说明这个程序用凯撒密码加密, 它会要一个加密密钥,也就是要一个数字,这个数字会旋 转字母表,从而创建凯撒密钥,也就是凯撒密码,这个密 钥是个整数,这是未加密文本,也就是我们想要加密的原 始信息,我们向用户所用一行原始信息。 接下来我们要做的就是,通过调用encryptCaesar函 数,创建加密文本,我们给出一个智指令,有点像询问性 的,我们给出未加密文本,我们给出凯撒密码所需的密钥 ,也就是一个整数,这样我们就得到了一个加密字符串, 我们现在来写出,我们如何来实行这二个加密呢?现在, 我们应该写的就是encryptCaesar,我们要做的就是写一

11、个和谐的信息,那么这个小家伙会返回什么呢?字符串, 因为这是我们想要的,也就是已加密的字符串,所以当我 们调用encryptCaesar。 它通过了什么呢?他通过了字符串,我们把这个字符串 叫做str,他通过了一个整数,也就是密钥,所以如果我 想加密,我要做的就是,在逐个字符的基础上,我要进行 replacement替换,我想说,在原始字符串中每个字符, 这些字符在我的加密字符串中,应该按照一定的顺序移动 了。 为此,我现在要使用标准的字符串创建流程了,也就 是以一个字符串开始,然后我调用result 空字符串,也 就是”就是个空字符串,然后我需要for loop 来通过 我要加密的字符串,这

12、样通过数每个字符来计算出字符串 的长度,这是一个标准的做法。 我写出ch=我要得到字符串中想要的字符,所以我说 str.charAt(i),现在我得到了字符,我要找到加密字 符的方法,我想,如果加密字符需要如此复杂的过程,也 许我可以创建个函数,没错,这就是我们原来提到的自上 而下设计,每次如果你遇到说,哇塞,这儿忒麻烦了。 就不要再纠结它了,这样得到更细的分类,可以直接 正对单个字符,还不是整个字符串,我现在来写一个函数 ,或者叫做方法,我现在要做的就是调用encrypt,所得 到的结果添加到结果中,单个字符。 我把它称作encryptCaesar,我现在要放进去的是 我想要加密的字符,我同

13、时要传递密钥,这样他就知道转 移的方式,加密后,我要说如果你成功加密了所有的字符 串,我现在要按return回车,我说return result 。 我以一个字符串开始,我依次通过字符串中每个字 符,我要依次处理一个字符,然后返回结果,你在这个函 数中所看到的除了这一行外,你要做到游刃有余了才行, 你看过的,不听地反复,我们今天做了数次上节课我们也 做了数次,这是标准的逐一通过字符串中字符的方法。 现在,我们已经解决了给整个字符串加密的问题, 可以直接给单个字符串加密了,现在这里的是private私 有的,这将返回一个单个字符叫做encryptCaesar。着其 中有需要加密的字符,以及加密需

14、要的密钥,现在我想要 知道我怎样加密单个字符。 我现在想知道,这个字符是怎样加密的,我怎样确保 字符串的按照合适的位置移动呢?比如说我有大写字母A ,我们假设所有字符都是大写的,实际上,这是个很好的 假设。 我们假设所有字符都是大写的,所以假设未加密的文 本中的字符都是大写的,返回加密文本中得也都是大写, 假设我有大写A,密钥是3,我想做的就是A转变成了D,我 怎么做到呢? 因为我给这个字符位置加了3,现在唯一的问题就是我 要离开字符的最末,然后加上3,得到Z,如果我由A变成 了D,这样没问题,但是对于Z,我会得到了一个大叹号, 因为我已经到了字符的最末端,所以我需要对这个数学运 算式进行细微

15、的改变,我要做的就是用这个字符从A减去 。 这样就告诉我了这个字母表中的字符是什么了,以 及字符的位置,现在,如果我加上密钥,我得到了旋转后 的字符,如果是A 我用A减去A,我就得到了 0,现在我加 上密钥,我得到了3,你会说,如果你想把它转换成字符 你就得到了D,没问题。是的,但是如果是Z减去A,得到 25。 如果加3,得到28,但是字母表中没有第28个字母, 我如何让字母表循环,让28再次回到字符表开端,或者我 们用%26,这样他会说,如果你超过了末尾,当处于26时 ,得到的余数如果超出了尾端,也就是甩掉了出示的26个 字母,又回绕到了开端。 如果我这样做,这样它就会返回给我回绕到开头后的

16、 字符位置,这样我就得到了字符位置,有意思,我需要将 a加回,因为比如说如果我们一A开始,减去A,这样我就 得到了0,我加上密钥,也就是3,我用%26。 3除以26,余数还是3,这样我就得到了3,我需要把这 个3转换成字母D,怎样做呢?我用A+3,有什么问题吗? 好了,最后一个要涉及的内容,就是如果我想把这个 指派给字符,我不能直接指派,注意如果我直接指派的话 ,这就得到了这个,你会说,mehran 怎么回事?你曾告 诉我字符和数字是一样的,而且我现在所操作的字符相关 内容都是和数字有关的,那我为什么不能指派给字符呢? 这是个错误提示,这就像我们说,把实数转换成整数 一样,记住当我们把实数转换成整数时,我们说如果你想 截取实数的时候,比如把双精度浮点数转换成整数,你会 丢失一部分信息,所以由双精度浮点数转换成整数时要明 确的计算,一串整数可以使很大的数字,可以是成千上亿 ,但是一串字符可要小的多。 所以如果你想从整数转成字符,你需要说清楚,从整 数转换成字符,所以我需要明确计算一下,我们很高兴, 很友善,这部分对吗?哦,变量ch重复了,我们叫C

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号