What & How & Why

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
cs:programming:cpp:courses:comp306:start:unit_1_2_3 [2024/08/11 13:10] – [结构表] codingharecs:programming:cpp:courses:comp306:start:unit_1_2_3 [2024/09/15 13:00] (当前版本) – [Infinite Recursion] codinghare
行 277: 行 277:
 ==结构表== ==结构表==
   * 作为文档的一部分,用于表示整个程序中函数(模块)的结构   * 作为文档的一部分,用于表示整个程序中函数(模块)的结构
-{{:cs:programming:cpp:courses:comp306:start:function_module.jpg|}}+  * 调用某个上层的函数将调用其下一级函数 
 +{{ :cs:programming:cpp:courses:comp306:start:function_module.jpg?200 |}} 
 +===Program Control Functions=== 
 +  * Modularization:将大的问题分解为小的,可管理的问题 
 +==Program Control Function== 
 +  * 用于管理函数之间的信息交流 
 +  * 使用公共区域(global)存储所有功能函数所需变量信息 
 +  * 管理函数没有输入输出(比如 ''main()'') 
 +===Void Data Type=== 
 +  * 没有值和类型 
 +  * 用于表示缺乏类型的类型 
 +===可读文档的建立=== 
 +  * 文档:至于源程序顶部,用于说明程序的详情 
 +  * Vertical Alignment 
 +<code cpp> 
 +//e.g. 
 +//bad 
 +float price_gal_paint; 
 +int coverage_gal_paint; 
 +//good 
 +float price_gal_paint; 
 +int   coverage_gal_paint; 
 +</code> 
 +  * 正确使用 comments 
 +  * Function Banner 
 +<code cpp> 
 +//e.g. 
 +//****************************************************** 
 +// main 
 +//***************************************************** 
 +</code> 
 +  *  Block Markers 
 +  *  Indent Block Markers 
 +  * Meaningful Identifier 
 +  * 正确使用 typedef 
 +====Conditionals and recursion==== 
 +===modulus operator=== 
 +  * 除整数,生成余数 
 +  * 可判断是否能被整除 / 求整数最右边的几位数 
 +===带条件的执行=== 
 +<code cpp> 
 +// condition 
 +if(x > 0) { 
 +    cout << "result is positive"; 
 +
 +// chained 
 +else if(x < 0) { 
 +    cout << "result is negtive"; 
 +
 +// alternative condition 
 +else { 
 +   cout << "result is zero"; 
 +</code> 
 +==nested condition== 
 +  * 理解为大分支的小分支 
 +  * 注意缩进 
 +===Recursion=== 
 +  * 函数调用自身 
 +  * 通过自身参数的变化来进行下一步的处理 
 +==Infinite Recursion== 
 +正常的递归需要 
 +    * base case 
 +    * 趋向于 Base case 的条件 
 +==更多的递归形式== 
 +  * 阶乘 
 +    * base -> ''0!=1'' 
 +    * 递归 -> ''f(n!) = n * f(n-1)'' 
 +====Furitful functions==== 
 +===return value=== 
 +  * 返回的类型需要和函数定义的返回类型一致 
 +  * 存在条件语句时,满足条件分支中的 return 会直接跳出函数 
 +    * 另外一部分不会被执行的 code 被称为 //Dead code// 
 +    * 这种情况下需要保证所有的分支都存在 return 
 +===Development=== 
 +==Incremental development== 
 +  * 使用小步骤渐进式的编写程序 
 +  * 使用临时变量测试中间值,保证每一步修改的正确性 
 +  * 移除所有的测试语句(//scaffolding//) 
 +==Composition== 
 +  * 使用已有的函数组合生成新的函数 
 +===Overloading=== 
 +  * 两个函数重名时且**接收的参数不同**,时,同时使用会导致函数的重载(//overloading//) 
 +  * 使用时需要确保调用的函数是希望的版本 
 +==Boolean== 
 +  * 只有 ture 和 false 两种值 
 +  * 可以被用作 flag 
 +===Logocal operator=== 
 +  * 三种: ''&&'', ''||'', ''!'' 
 +==Bool functions== 
 +  * 返回 boolean 的函数 
 +  * 通常用于检测 
 +===Main return=== 
 +  * ''0'' 代表正常 
 +  * 出问题时通常返回 ''-1'' 
 +