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