20172332 《程序设计与数据结构》第二周学习总结
学号20172332 2017-2018-2 《程序设计与数据结构》第二周学习总结
教材学习内容总结
- 1.字符串的概念以及拼接。
- 2.println方法和print方法的用法和区别
- 3.转义序列的概念和用法。
- 4.变量常量和赋值语句的相关内容。
- 5.8个基本数据类型。
- 6.表达式的概念,算数、自增自减、赋值三种运算符以及运算符优先级。
- 7.数据类型转换的安全性以及三种技术。
- 8.最最重要的Scanner类!!!
教材学习中的问题和解决过程
- 问题1:字符串与数字拼接和数字运算的区分。
- 问题1解决方案:我自己总结了一下。如果是数字拼接则至少有一个是字符串,会有两种形式:1.数字放在字符串中,也就是双引号中。(代码形式,举个例子:"Letters in the Hawaiian alphabet:12")2.字符串+数字或者数字+字符串的形式。(代码形式,举个例子:"Speed of ketchup :"+40或者40+"km per year")。如果是数字运算则操作数都为数值型,也就是把数字+数字用括号括起来。(代码形式,举个例子:"24 and 45 added:"+(24+45))
- 问题2:制表符的作用和空格有什么区别。
- 问题2解决方案:制表符一般是8个空格,而且制表符遇到特殊情况会自动缩进,总的来说,制表符比空格方便而且整齐。
- 问题3:
b说都是int型,但是e又说他是final型,它到底是啥型。 - 问题3解决方案:它属于int型也属于final型是从不同角度去分析而得到的。
- 问题4:自增自减运算符的优先级。
- 问题4解决方案:独立使用在一条语句中时,前缀形式和后缀形式是一样的。(举个例子:++count和count++)在复杂的表达式中,前缀是先把变量+1然后赋值,后缀是先赋值最后把变量+1(举个例子:count是5,total=++count则count是5+1=6,total也是6;total=count++则total是5,count是5+1=6)
- 问题5:操作数除法的运算出的结果的数据类型。
- 问题5解决方案:两个操作数都是整型数则结果为整型数;如果操作数中含有一个浮点型值则结果为浮点型值。
代码调试中的问题和解决过程
-
问题1:
-
问题1解决方案:在之前已经声明过变量value了,所以不需要int value=age;只需要直接value=age;,若想打int value=age;则应把之前的int age,value;改为int age;
-
问题2:
-
问题2解决方案:在A=scan.nextInt;后面忘记打()了,B和C的也是这个原因。
-
问题3:有些数字的计算结果有误。
-
问题3解决方案:我查询IEEE 754 浮点数舍入后,只能了解到与浮点数的精确度有关,变量不同的浮点数精确度不同,比如double与float的精确度就不同,所以导致结果显示的不同,还有有四种舍入方法,不同的方法对应的数据类型不同。但是具体的舍入方法就不是很能理解。
-
问题4:
-
问题4解决方案:语句不能想当然的用,比如nextChar就没有这个= =
改成这样就能用了,就是多输几行代码的事。 -
问题5:得出的结果不对。
-
问题5解决方案:声明分数时应用浮点数。修改:
-
问题6:不知道怎么让小数表现出跟整型数一样的效果。(= =解决方案贼简单,但是当时就是没想到,这一个题卡了我将近一个点!)
-
问题6解决方案:一位小数乘10,两位小数乘100啊!只要把小数点移到最后一位数字之后,就是把小数化成整数了,就能用整型数表示啊。(我知道答案的那一刻,突然觉得自己导论白学了,很气但还是要保持微笑!)最终成功的截图
代码托管
上周考试错题总结
- 1.A Java program is best classified as (一个Java程序被归为___类最合适)
A . hardware (硬件)
B . software (软件)
C . storage (存储)
D . processor (处理器)
E . input (输入)
答案是B,我选的E。解析:程序被分类为软件,以区别于计算机(硬件)的机制。存储和处理器是硬件的两种形式,而输入是程序处理的信息。自己的理解:程序属于软件,程序中的信息才属于输入。 - 2.When executing a program, the processor reads each program instruction from (当执行一个程序时,处理器从___读取每个程序指令)
A . secondary memory (storage) (辅助存储器(存储))
B . the Internet (互联网)
C . registers stored in the processor (储存在处理器中的寄存器)
D . main memory (主存储器)
E . could be any of these (可以是以上这些中的任何一个)
答案是D,我选的是E。解析:程序在执行前从辅助存储器加载到主存中,以便通过读取每条指令不减慢处理器的速度。这种在内存中执行程序的想法叫做存储程序计算机,是20世纪40年代约翰·冯·诺依曼首创的。自己的理解:为了保持运行的速度,处理器都是从主存储器中读取指令的,所以别的指令都是要先加载到主存储器中,才能被处理器读取。 - 3.The ability to directly obtain a stored item by referencing its address is known as (通过引用地址直接获得存储项的能力被称为___)
A . random access (随机存取)
B . sequential access (顺序存取)
C . read-only access (只读访问)
D . fetch access (获取访问)
E . volatility (易变性)
答案是A,我选的E。随机存取就是直接存取。 - 4.It is important to dissect a problem into manageable pieces before trying to solve the problem because (试图解决问题之前,把一个问题分解成可控制的几部分是很重要的,因为)
A . most problems are too complex to be solved as a single, large activity (大多数问题太复杂,以至于不能作为一个单独大型的活动来解决)
B . most problems are solved by multiple people and it is easy to assign each piece to a separate person (大多数问题都是由很多人解决的而且把每一部分分配给不同的人是很容易的)
C . it is easier to integrate small pieces of a program into one program than it is to integrate one big chunk of code into one program (将程序的小部分整合到一个程序中比将一大块代码整合到一个程序中更容易)
D . our first solution may not solve the problem correctly (我们的第一个方案可能无法正确解决问题)
E . all of the above (以上皆是)
答案是A,我选的C。解析:任何有趣的问题都很复杂,很难简单地解决。通过分解问题,我们可以为每一块建立小的解决方案,然后集成这些碎片。答案D是正确的,但这并不是我们将问题分解成碎片的原因。自己的理解:= =书看的不认真,光知道个大概,但是具体的字词不清楚。 - 5.Comments should (注释应该)
A . rephrase the code it explains in English (用英语复述它解释的代码)
B . be insightful and explain what the instruction's intention is ( 有深刻见解并解释指令的意图是什么)
C . only be included in code that is difficult to understand (仅仅包含在难以理解的代码中)
D . be used to define variables whose names are not easy to understand (被用于解释难以理解的变量名称)
E . all of the above (以上皆是)
答案是B,我选的E。说实话,这道题我也不知道我为啥选错了,因为我自己的记忆中我选的是B,可能是手滑点错选项了(尴尬又不是礼貌的微笑)。A选项注释不一定非得是英语。C选项不是仅仅,在容易理解的代码中也可以用注释。D选项我认为它包含的太少了。 - 6.The instruction: System.out.println("Hello World"); might best be commented as (这个指令最好被注释为)
A . // prints "Hello World" to the screen (将"Hello World"打印到屏幕上)
B . // prints a message (打印一条信息)
C . // used to demonstrate an output message (用来演示输出信息)
D . //
E . // meaningless instruction (没有意义的指令)
答案是C,我选的是A。注意题目中有最好两个字,所以这道题应该选最合适的。A选项有点重复啰嗦,没有C选项简洁明了。 - 7.Which of the following is a legal Java identifier? (下面哪个是合法的Java标识符?)
A . i
B . class
C . ilikeclass!
D . idon'tlikeclass
E . i-like-class
答案是A,我选的B。这道题应该理解为合法的自定义Java标识符。B是已经规定好的保留字。自定义标识符的要求:可以包含数字,英文,下划线和美元符号,但是不能以数字开头。所以C,D,E都是错的。 - 8.Which of the following would be a good variable name for the current value of a stock? (下面哪个是关于变量“current value of a stock”的最佳命名?)
A . curstoval
B . theCurrentValueOfThisStockIs
C . currentStockVal
D . csv
E . current
答案是C,我选的A。最佳命名方式。A不够完整不能表示全意思,B太长了,D太短了和E不够完整。最佳命名方式,在过长和过短的命名中找到一个合适的命名。若找不到,则用长命名。 - 9.Java byte codes are directly executable whereas Java source code is not. (Java字节码是可以直接执行的,而Java源代码则不是。)
A . true
B . false
答案是B,我选的A。Java字节码和Java源代码都需要转换成机械语言,Java字节码不属于机械语言。(这题错还是对书的理解不到位!) - 10.The word "Public" is a reserved word. ("Public"是一个保留字。)
A . true
B . false
答案B,我选的A。Java语言对大小写是很敏感的,应该是public是保留字,看题不认真,没有发现P是大写。 - 11.Java is an example of a(n) (Java是一个___的例子)
A . machine language (机器语言)
B . assembly language (汇编语言)
C . high-level language (高级语言)
D . fourth generation language (第四代语言)
E . both C and D (C和D都是)
答案是E,我选的C。解析:java是第四代中创建的,它显然也是一个高层次的语言。机器语言是机器可执行的语言,编写的程序在0和1只。汇编语言,用助记符。第四代语言是封装在程序内部的工具,这样用户就可以灵活地编写程序中执行的代码。我自己是没在书上找到,当一个概念记吧=。=。
其他(感悟、思考等,可选)
首先关于这次考试,我有很大的感受。我对于书的理解还是不够,对于一个概念不能向深处理解,然后是对于审题,粗心这个毛病,大学了怎么还没改掉!最重要的是,要加强英语学习了!下下次考试全英文,一首凉凉送给自己。
然后关于这次的学习,我觉得书上例题真的很重要,首先知道了一些语句的用法,然后还能多熟悉操作。
最后我在做pp时,会把一些语句改变顺序,然后会发现有一些语句不能改顺序,有一些则可以改。而且通过做pp会发现很多自己记得不清楚的知识点,然后再通过翻书查找,加深对它的理解。
这章看完,我才觉得自己开始迈入编程的大门,就一个交互式程序自己琢磨了很久,才搞明白怎么回事,估计后面会越来越难,需要花费的精力也越来越大,但是!感觉有压力才有动力啊。
不过总的而言,我觉得这周的学习情况会比上周有所好转。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 182/182 | 1/1 | 10/10 | |
第二周 | 458/640 | 1/2 | 15/25 |
-
计划学习时间:20小时
-
实际学习时间:15小时
-
改进情况:首先很明显的是代码量比上周提升了,学习时间也提升了,但是依旧没有达到计划学习的时间。