可爱的坏人

 

20172327 2017-2018-2 《程序设计与数据结构》第五周学习总结

20172327 2017-2018-2 《程序设计与数据结构》第五周学习总结

教材学习内容总结:

第5章

  • 布尔表达式:
    1.条件语句和循环语句可用于控制程序额的执行流程。
    2.if语句可以使程序选择是否执行某一条语句。
    3.循环可以使程序多次执行某些语句。
    |相等性运算符|关系运算符|逻辑运算符|
  • if语句:
    1.if语句由保留字if、紧随其后的布尔表达式及一条或一组语句构成。条件表达式包含在括号内,并且其运算结果只能是ture或者false。如为ture,执行if语句中的语句,然后执行if后的语句;如为false,则不执行if语句中的语句,然后继续执行if语句中的语句。
    2.if-else语句可以使程序在某个条件表达式的值为true时执行一段代码,其值为false时执行另一段代码。
    3.使用语句块:在Java中,可以用语句块来代替任意一条语句。语句块是由括号括起来的多条语句的集合。
    4.if语句的嵌套:a.一条if语句中嵌入另一条if语句,这种情况称为if语句的嵌套。b.在一个嵌套的if语句中,else子句和它前面最近且未匹配的if语句相匹配。
  • 数据比较:
    1.浮点数比较:只有两个浮点数的二进制数位都相等时i,这两个浮点数的值才相等。
    2.字符比较:Unicode字符集定义了Java中字符的相对顺序。
    3.比较对象:a.不能使用相等性运算符和关系符来比较两个String对象。b.compareTo方法可用于判断两个字符串的相对顺序关系。
  • while语句:
    1.while语句是一种循环语句,像if语句一样计算布尔表达式的值,并在其值为true时执行一条语句(称为循环体)。但while语句会在循环体执行完毕后再次计算表达式的值,这一点与if语句不同。如果此时表达式的计算结果仍然为ture,将再次执行循环体。这一循环体不进行下去,直到表达式为false时停止。|while执行相同的语句,直到它的条件变为false。|
    2.无限循环:必须精心设计程序,已避免无限循环。 3.嵌套循环:一个循环体中可能包含另一个循环,这称为嵌套循环。外层循环每执行一次,内层循环就会执行指定次数的完成循环。
    4.break和continue语句:执行break语句时,将立即跳转到控制当前执行流程的语句之后继续执行。continue语句对循环处理也具有类似的作用。它与break语句类似,但不同的循环控制条件将再次被计算,如果其值仍然为ture,则再次执行循环体。基于与break语句相同的理由,在循环中也应该避免使用continue语句。
  • 迭代器:
    1.迭代器是一种对象,该对象提供了一些方法有助于一次处理某个集合。
    每个迭代器对象都有一个可以返回布尔值的hasNext方法,返回的布尔值表明了集合中是否至少还有一个元素要处理。
  • ArrayList类:
    1.在ArrayList对象中保存了多个对象的列表,通过一个整形索引值可以引用列表中的每个对象。通常使用循环语句遍历列表中的各个对象,然后再用其他方法处理它们。

第6章

  • switch语句:
    1.Java中的另一种条件语句是switch语句,该语句可使程序从多条执行路径中选择一条来执行,这些路径的选择基于某个单一的值。使用多个if语句可以构造出同样的逻辑,但是使用switch语句可使代码更易与理解。
    2.switch语句先计算一个表达式的值,然后将该值和几个可能的case子句取值进行匹配。每种取值都有与之关联的执行语句。当计算出表达式的值后,控制会转移到与表达式值相匹配的第一条case子句执行。
  • 条件运算符
    1.Java条件运算符在某些方面和if-else语句相似。条件运算符是三元运算符,因为该运算符需要三个操作数。
  • do语句
    1.do语句和while语句很相似,do循环也重复执行循环体中的语句,直到循环控制条件变为false。
  • for语句
    1.for语句通常用于已知循环次数的情况。
    2.for循环的控制头中包含由分号隔开的三部分。在循环开始前,首先执行称为初始化的第一部分;第二部分是一个布尔表达式,在执行循环体前先计算(类似while循环)。如果计算值为ture,将执行循环体,然后执行称为增量的第三部分。
    3.for-each循环
    for-each循环时for循环的增强版,特别有助于处理涉及迭代器的问题。

教材学习中的问题和解决问题

问题1:对ArrayList类还是没看懂,不知道它的具体用法

分析:通过上网查找,我找到了一篇博客,它是对ArrayList进行了总结。

下面是博客的链接,感觉讲的挺全的。大家可以看一下.
http://www.cnblogs.com/YSO1983/archive/2011/08/22/2149711.html

代码学习中的问题和解决过程

问题1:在编写例题Average时,出现了下面的错误:

分析:通过检查,是粗心将Sum的大写打成了小写

问题2:在编写例题PalindromeTester时,发现出现下面的问题:

分析:经过仔细核对,发现我的while语句的编写有错误,从而使其不能运转。

问题3:在编写pp5.7石头剪刀布的那到题时就出现了死循环,很懵逼。


分析:在导员的帮助下,发现我缺一条 Play = scan.nextLine();语句,后来加上后,就合适了。

问题4:在编写pp6.6时,出现了下面的问题。

分析:由于理解不够,所以for的位置不对,经过调整,将for提到myCoin.flip前.然后将不必要的输出去了,将所需的输出加上,就成功了。

上周考试错题总结

  • 第一题:The idea that program instructions execute in order (linearly) unless otherwise specified through a conditional statement is known as
    A .boolean execution
    B .conditional statements
    C .try and catch
    D .sequentiality
    E .flow of control

  • 分析: "控制流 " 描述指令执行的顺序。 它默认为线性 (或连续), 但通过使用诸如条件和循环等控制语句来改变。

  • 第二题Which of the sets of statements below will add 1 to x if x is positive and subtract 1 from x if x is negative but leave x alone if x is 0?
    A .if (x > 0) x++;else x--;
    B .if (x > 0) x++;else if (x <0)x--;
    C .if (x > 0) x++;if (x < 0) x--;else x = 0;
    D .if (x == 0) x = 0;else x++;x--;
    E .x++;x--;

  • 分析:如果 x 为正数, 则在 x 为负 x 的情况下执行 x++, 否则, 不会发生任何情况, 或者 x 不受影响。 在 A、C、D 和 E 中, 逻辑不正确。 在 A, x-是做如果 x 是不积极的, 因此, 如果 x 是 0, x 成为-1, 这是错误的答案。 在 C 中, 如果 x 为正数, 则执行 x++。 在任一情况下, 将执行下一语句, 如果 x 不是负数, 则执行 else 子句, 将 x 设置为0。 因此, 如果 x 是正数, 则在这组代码之后变为0。 在 D, x + + 和 x-都执行如果 x 不是0。 在 E 中, 此代码不尝试确定 x 是正数还是负数, 它只添加一个, 然后从 x 中减去 1, 使 x 相同。

  • 第三题:Assume that count is 0, total is 20 and max is 1. The following statement will do which of the following? if (count != 0 && total / count > max) max = total / count;
    A .The condition short circuits and the assignment statement is not executed
    B .The condition short circuits and the assignment statement is executed without problem
    C .The condition does not short circuit causing a division by zero error
    D .The condition short circuits so that there is no division by zero error when evaluating the condition, but the assignment statement causes a division by zero error
    E .The condition will not compile because it uses improper syntax

  • 分析:因为计数是 0, (计数! = 0) 是假的。 因为条件的左手边是假的, 所以条件是短路的, 所以右手边是不计算的。 因此, 避免了潜在的除法错误。 由于条件为 false, 语句最大 = 总计/计数未执行, 再次避免潜在除法为零错误。

  • 第四题:If a break occurs within the innermost loop of a nested loop that is three levels deep
    A .when the break is encountered just the innermost loop is "broken"
    B .when the break is encountered, all loops are "broken" and execution continues from after the while statement (in our example)
    C .when the break is encountered, all but the outermost loops are broken, and execution continues from the next iteration of the while loop (in our example)
    D .this is a syntax error unless there are break or continue statements at each loop level
    E .
    none of the above

  • 分析:最里面的循环 (我们的示例中的 for 循环) 已断开, 并且在 for 循环结束后继续执行。

  • 第五题:Which of the following are true statements about check boxes?
    A .they may be checked or unchecked
    B .radio buttons are a special kind of check boxes
    C .they are Java components
    D .you can control whether or not they will be visible
    E .all of the above

  • 分析:有关复选框的四个语句中的每一个都是 true。

  • 第六题:As in the other members of the C family of languages (C, C++, C#), Java interprets a zero value as false and a non-zero value as true.
    A .true
    B .false

  • 分析:尽管C系列确实以这种方式解释零和非零值, 但 Java要求使用保留常量 true 和 false, 或者使用关系和/或逻辑运算符进行逻辑计算。

  • 第七题:In order to compare int, float and double variables, you can use <, >, ==, !=, <=, >=, but to compare char and String variables, you must use compareTo( ), equals( ) and equalsIgnoreCase( ).
    A .true
    B .false

  • 分析:您还可以使用 <, >、==、! =、<=, > = 直接比较 char 变量, 但必须对任何字符串比较使用 compareTo ()、等号 () 和 equalsIgnoreCase ()。

  • 第八题:If a switch statement is written that contains no break statements whatsoever,
    A .this is a syntax error and an appropriate error message will be generated
    B .each of the case clauses will be executed every time the switch statement is encountered
    C .this is equivalent to having the switch statement always take the default clause, if one is present
    D .this is not an error, but nothing within the switch statement ever will be executed
    E .none of the above

  • 分析:虽然写这样一个开关声明是不寻常的, 它是完全合法的。
    切换语句执行的正常规则应用在计算切换表达式后执行的匹配 case 子句。 随后,所有后续子句都按顺序执行, 因为没有中断语句来终止开关/案例执行。

  • 第九题:The statement if (x < 0) y = x; else y = 0; can be rewritten using a conditional operator as
    A .y = (x < 0) ? x : 0;
    B .x = (x < 0) ? y : 0;
    C .(x < 0) ? y = x : y = 0;
    D .y = (x < 0);
    E .y = if (x < 0) x : 0;

  • 分析:Java 的条件运算符在这种情况下测试一个条件 (x 0), 如果为 true, 则返回 "?" 之后的值。(在本例中为 x), 如果为 false, 则返回以下值: (在本例中为 0)。 原始 if 语句是将 y 指定为 x (如果为 x 0), 否则为0。 这将通过将 y 指定为 x 或0基于 (x 0) 来完成, 如中所示。 在 B 中, x 被指定为向后的 y 或0的值。 在 C 中, 条件运算符在语法上无效。 在 D 中, y 将被设置为 true 或 false, 具体取决于 (x 0), 而 E 中的语句在语法上无效。

  • 第十题:The do loop differs from the while loop in that
    A .the while loop will always execute the body of the loop at least once
    B .the do loop will always execute the body of the loop at least once
    C .the do loop will continue to loop while condition in the while statement is false and the while loop will continue to loop while the condition in the while statement is true
    D .the while loop will continue to loop while condition in the while statement is false and the do loop will continue to loop while the condition in the while statement is true
    E .none of the above, there is absolutely no difference between the two types of loops

  • 分析:由于 for 循环不测试条件, 直到循环体执行后,主体将始终执行至少一次, 而 while循环首先测试条件, 因此,如果第一次条件为 false,则该主体甚至不会执行一次。

  • 第十一题:A switch statement must have a default clause.
    A .true
    B .false

  • 分析:默认子句是可选的。

  • 第十二题:Each case in a switch statement must terminate with a break statement.
    A .true
    B .false

  • 分析:他们经常这样做, 但是如果中断语句不存在, 控制流就会继续进入下一个案例。

  • 第十三题:The following for-loop is an infinite loop.
    for (int j = 0; j < 1000; ) i++;
    A .true
    B .false

  • 分析:此循环将 j 初始化为 0, 并将其与1000进行比较, 但在每次循环迭代之后不会更改 j。 实际上, 循环将以运行时错误终止, 最终一旦我变得太大, 无法存储在内存中, 但在逻辑上, 这是一个无限循环。

  • 第十四题:In Java, it is possible to create an infinite loop out of while and do loops, but not for-loops.
    A .true
    B .false

  • 分析:诚然, 循环可以是无限循环, 但 Java for 循环可以是无限循环也是如此。 在许多其他编程语言中, 这不是真的, 因为 for 循环有一个设置的开始和结束点, 但是 Java for 循环比大多数其他语言的 for 循环要灵活得多。

代码托管


其他(感悟、思考等,可选)

这一周状态不好,可能放假打乱了节奏,没认真看书,而且时间有点紧,所以做的不太好,下周我会调整的。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 95/95 1/1 18/18
第二周 515/620 1/2 22/40
第三周 290/910 1/3 20/60
第四周 1741/2651 1/4 30/84
第五周 579/3230 1/5 20/104

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:20小时

  • 实际学习时间:20小时

  • 改进情况:无

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

posted on 2018-04-10 12:57  可爱的坏人  阅读(337)  评论(3编辑  收藏  举报

导航