1、补充的内容,编程环境 程序调试 函数库与库函数 代码书写规范与风格 几点补充内容: 结构化程序设计的概念 算法 流程图: 传统流程图 N-S图 C语句 例子,代码书写规范与风格,追求 清晰、整洁、美观、一目了然 容易阅读,容易测试 命名规则: 程序版式:对齐(Alignment)与缩进(Indent) 程序注释:行注释、块注释,代码书写规范与风格,在哪些地方写注释? 在重要的文件首部 文件名 + 功能说明 + 作者 + 版本 + 版权声明 + 日期 在用户自定义函数前 对函数接口进行说明 函数功能 + 入口参数 +出口参数 + 返回值 (包括出错处理) 在一些重要的语句块上方 对代码的功能、原
2、理进行解释说明 在一些重要的语句行右方 定义一些非通用的变量 函数调用 较长的、多重嵌套的语句块结束处 在修改的代码行旁边加注释,代码书写规范与风格,函数的注释风格 C风格 /*/*功能描述: 本函数用于实现xxx功能,目的是: */*入口参数: 参数xx,表示 */*出口参数: 参数xx,表示 */*返回值: 返回xx值,当返回xx值时,表示 */*/ /*功能描述: 本函数用于实现xxx功能,目的是:入口参数: 参数xx,表示出口参数: 参数xx,表示 返回值: 返回xx值,当返回xx值时,表示 */C+风格 /功能描述: 本函数用于实现xxx功能,目的是: /入口参数: 参数xx,表示
3、/出口参数: 参数xx,表示 /返回值: 返回xx值,当返回xx值时,表示 /,结构化程序设计,一个比较流行的定义是: 结构化程序设计(Structured Programming)采用“自顶向下、逐步求精”(Top-down,Stepwise refinement)和模块化的方法进行程序设计,限制和避免使用goto语句。 已经证明,只用顺序、选择、循环三种基本的控制结构就能实现任何单入口、单出口的程序。 只有一个入口;只有一个出口。 无死语句,无死循环。,1966年,C.Bohm和G.Jacopini首先证明了:任何程序均可由三种基本控制结构组合而成。它们是: 顺序结构:按语句顺序依次执行。
4、 选择结构:根据对给定条件的判断结果决定执行两路或多路中的一路。 循环结构:满足循环条件则重复执行一组语句。 限制使用goto语句。,结构化程序设计,算法的概念,对面向过程的语言(如C) 程序 = 数据结构 + 算法 对面向对象的语言(如C+) 程序 = 对象 + 消息 算法: 为解决一个具体问题而采取的确定的有限的操作步骤,仅指计算机能执行的算法。,算法的特性,有穷性 在合理的时间内完成 确定性,无歧义 如果x0,则输出Yes;如果x0,则输出No; 有效性 能有效执行(负数开平方就不能有效执行) 没有输入或有多个输入 有一个或多个输出,算法的分类,数值运算算法: 解决求数值解问题。 非数值
5、运算算法: 需要用分析推理、逻辑推理才能解决的问题; 例如人工智能中的许多问题,查找、分类等。,算法的表示方法,自然语言表示; 传统的流程图表示; 在1966年,Bohra 与 Jacopini 提出。 N-S结构化流程图表示; 1973年,美国学者INassi 和 BShneiderman 提出。 伪代码表示。,算法的表示方法,传统的流程图表示; 在1966年,Bohra 与 Jacopini 提出。,起止框,输入框,判断框,处理框,流程线,连接点,注释框,B,A,NS图,传统流程图,流程图:顺序结构,B,A,B,N,如果 成绩60 那么通知补考 否则告知你考试成绩,A,Y,条件 P,流程图
6、:分支结构(选择结构),当型循环,流程图:循环结构,A,当P成立,直到型循环,流程图:循环结构,A,直到P为假,A,条 件P,A,当型循环,直到型循环,真,假,假,条 件P,假,真,流程图:循环结构,流程图:传统流程图,6!(6的阶乘)算法可以用流程图表示如下:,开始,x = 1,y = 2,x*y= y,x + 1= x,A,A,x 6,Y,B,B,结束,传统流程图,打印 y,流程图:图,6!(6的阶乘)算法可用 N-S 图表示如下:,1 =x,2 =y,x * y =y,x + 1 =x,直到 x6,打印 y,初始化部分,循环部分,输出部分,例子:,【例3.27】求最大公约数GCD。 “辗
7、转相除法”(伪代码): 输入A、B两个数, 若A=B,则A或B即为GCD。 若AB,则将A与B交换, 将AB赋给A,直到A=B为止。 例:求4,12的GCD ,其算法: 1) 412; 2) 412; 交换:A=12,B=4 3) A=124=8 4) 8 4;继续判断 5) 84 6) A=84=4 7) A=B=4 终止,流程图,例子:,【例3.27】求最大公约数。 main ( ) int a,b,c;printf (“Enter First number: “);scanf (“%d“, ,控制语句 if()else (条件语句) for() (循环语句) while() (循环语句)
8、 dowhile()(循环语句) continue (结束本次循环) switch (多分支选择语句) break (中止switch或循环语句) goto (转向语句) return (从函数返回语句),C语句,函数调用语句printf(“This is a c statement.“); 表达式语句i = i + 1 (不是语句)i = i + 1; (是语句)x + y; (是语句,但无实际意义) 空语句 ; 复合语句 z = x + y;t = z/100;printf(“%f“,t);,C语句,复合语句,用括住的若干条语句构成一个语句块,称为复合语句。 语句块内可以定义变量: 变量仅在定义它的复合语句内有效; 变量必须在复合语句的开头定义。 复合语句可以用在任何可以使用(单一)语句的地方。,