---恢复内容开始---
20172325 2017-2018-2 《程序设计与数据结构》第一周学习总结
教材学习内容总结
这周对教材的2.1~2.6部分进行了学习,这一部分满足了我对编程最初的愿望,就是利用电脑做一些简单的事。教材内容主要包括:
(1)字符串的转行、拼接和转义序列;
(2)变量和常量的定义以及对变量进行赋值;
(3)基本数据类型(整型、浮点型、字符型和布尔型),这一节在理解上比较复杂,是一些基本的概念和定义,需要结合实际操作来掌握;
(4)表达式,通常完成计算;
(5)交互式程序,达到了面向对象的平台,这也是我在这一章内容里收获最大最高兴的一部分
教材学习中的问题和解决过程
- 问题1:对于连接符的使用,如果连接符后是数字的话,可以不用引号就可以转化成字符串,但是如果加了引号,或者是单词句子会怎样。
问题1解决方案:需要实际敲出来实验,结果是数字加不加引号都没关系,但单词句子就不行,除非对变量进行过声明。在这过程中我还发现一个问题,如果在我写完“+”之后,我想换行,需要用到“\n”,如果我不加引号就没用,我只有在加了引号之后把它变成一个字符串才能达到目的。
- 问题2:在做PP2.4这个问题时,我遇到了两个输入值连在一起的情况,忘了截图,是关于next()和nextline()的区别。
问题2解决方案:从百度上搜索了问题,结果是我发现next()方法返回时Enter间之前的所有字符,他是可以得到带空格的字符串的;而next()会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字符串。
代码调试中的问题和解决过程
问题1:在做了前面的练习之后,我想得到一个有小数点的结果,但是完全不知道怎么修改
问题1解决方案:看了书之后,还是不太清楚,又上网查了相应的方法,得到的解释是他已经将小数部分省略,输出浮点数,我需要在程序内部将整型数改为浮点数。
- 问题2:最后遇到的问题,到了写博客还没能解决,代码托管的脚本运行出错,没了我的代码行数。
问题2解决方案:暂时没有能够解决。
- 问题3:print和println的区别不是特别清楚。
问题3解决方法:实际操作
- 问题4:这是一个特别的发现,不知道带有空格的文件名怎么打开,例如“week 2”
问题4解决方法:各种尝试!这是目前为止我知道的最好用的方法。
代码托管
上周考试错题总结
1、java程序被归为软件类最合适。解析的翻译是:程序被分类为软件,以区分它们与计算机(硬件)的机制。存储和处理器是两种硬件,而输入是程序处理的信息。书上写的是,软件包括程序和程序执行所需要的数据。java是一种程序,所以应该属于软件。
2、易变性是RAM的性质。解析的翻译是:波动意味着,如果电源被关闭,内存的内容就会丢失。这是RAM(随机存取存储器)的真实情况,但不是ROM(只读存储器)或磁盘。软件和计算机网络不是记忆的形式。做题时我没有理解这个易变性是什么意思,看完答案之后,我才知道,易变性大概就是它储存的东西不稳定,这个符合随机存储器的特点。
3、通过引用地址直接获得存储项的能力,被称为随机存取。解析的翻译是:随机存取是指访问任何物品都是同样容易的,并且任何物品都是基于它的地址来检索的。随机访问是RAM和ROM内存使用的访问形式。磁盘访问,称为直接访问,是一个类似的想法,直接和随机访问有时也被称为同义词。顺序存取被磁带使用。通过这道题,知道了,按照存储方式分按存储方式分 ,存储器可以分为随机存储器和顺序存储器。两者的区别是:随机存储器可以在任何存储单元的内容都能被随机存取,且存取时间和存储单元的物理位置无关,而顺序存储器只能按某种顺序来存取,存取时间和存储单元的物理位置有关。对于只读访问,我认为意思就是只可以看的东西,而完全权限是可以在里面进行操作。
4、Java is an example of a(n) (Java是一个E的例子)
A . machine language (机器语言)
B . assembly language (汇编语言)
C . high-level language (高级语言)
D . fourth generation language (第四代语言)
E . both C and D (C和D都是)
解释:误选C选项,认为Java不属于第四代语言,书上也没有明确给出第四代语言的定义。通过搜索其原意是非过程化程序设计语言,是针对以处理过程为中心的第三代语言提出的,希望通过某些标准处理过程的自动生成,使用户只说明要做什么,而把具体的执行步骤的安排交软件自动处理,因为Java是面向对象的,且属于高层次的语言,所以应该也属于第四代语言。5、A unique aspect of Java that allows code compiled on one machine to be executed on a machine of a different hardware platform is Java‘s (Java的独特之处在于其___,它允许在一台机器上编译的代码在不同的硬件平台上执行)
A . bytecodes (字节码)
B . syntax (语法)
C . use of objects (所使用的对象)
D . use of exception handling (所使用的异常处理)
E . all of the above (以上皆是)
解释:Java程序的翻译过程是首先将它编译成字节码,它在体系结构上是中立的(也就是说,无论架构平台是什么,都可以使用它们)。要执行该程序,字节码必须由Java编译器进一步编译或由Java虚拟机解释。6、解析的翻译是:Java标识符不能包含字符“!”在他们的回答中,C、D和E都是错的。“类”这个词在Java中是一个保留的词,不能用作标识符。标识符“i”是完全合法的,尽管它不一定是一个好的标识符,因为它没有描述它的用法。书上说,标识符可以分为三大类,class是编程语言自身保留用于特殊用途的单词。
7、Java byte codes are directly executable whereas Java source code is not. (Java字节码是可以直接执行的,而Java源代码则不是。) ×
解析:Java编译器将源代码编译为字节码,然后Java虚拟机解释执行所产生的字节码,而并非直接执行,这两者均是不可以直接执行的。8、Which of the following is true regarding Java syntax and semantics? (关于Java的语法和语义,下列哪一项是正确的?)
A . a Java compiler can determine if you have followed proper syntax but not proper semantics (Java编译器可以判定你是否遵循正确的语法,但不能判定正确的语义)
B . a Java compiler can determine if you have followed proper semantics but not proper syntax (Java编译器可以判定你是否遵循正确的语义,但不能判定正确的语法)
C . a Java compiler can determine if you have followed both proper syntax and semantics (Java编译器可以判定你是否遵循正确的语义和语法)
D . a Java compiler cannot determine if you have followed either proper syntax or semantics (Java编译器不能判定你是否遵循正确的语义或语法)
E . a Java compiler can determine if you have followed proper syntax and can determine if you have followed proper semantics if you follow the Java naming convention rules (如果你遵循Java的命名规范,Java编译器就可以判定你是否遵循正确的语法,并且可以判定你是否遵循正确的语义)
解释:所有语言的编译器都能够检测语法错误,因为不恰当地使用语法会导致编译器无法正确翻译代码的情况。 然而,编译器无法遵循程序的语义,因为这需要一定程度的理解程序打算做什么,而计算机没有理解(至少在这一点上)。9、Following Java naming convention, which of the following would be the best name for a class about store customers? (下列Java命名规范中,哪个是关于“store customers”类的最佳命名?)
A . StoreCustomer
B . Store Customer
C . storeCustomer
D . STORE_CUSTOMER
E . Store-Customer
解析:这道题我们采用对比排除法,Java的命名约定,一般都应以大写字母开始,多个字的名字应该保持第一个词的第一个字母大写,其余字符是小写。词语应连接在一起,没有空格,或者可以使用“_”连接。答案B和E是不合法的名称,答案C、D不符合我们一般的命名规则,所以只剩下A项。10、Java byte codes are directly executable whereas Java source code is not. (Java字节码是可以直接执行的,而Java源代码则不是。)false
解释:java源代码和字节码都是可以执行的,都必须编译为机器语言。java字节码与真正的机器语言代码之间的区别在于:字节码独立于处理器类型,可以在不同的处理平台之间移植。
感悟
内容比上周复杂,但是交互式程序满足了我对编程的兴趣,继续努力呗!
学习进度条
脚本出了问题,征得张旭升助教同意,暂时没法统计,问题解决后补上。