免费预览已结束,剩余159页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2016/10/15 2016/10/15 上学期有点失败 2016/10/15 学习高级程序设计的基础 编制程序 2016/10/15 硬件( 操作系统( 应用程序 ( 应用 平台 基于 平台的 应用 程序 低级语言的地盘 高级语言的地盘 2016/10/15 与硬件打交道 资源消耗少 效率要求高 2016/10/15 现状? 2016/10/15 关系 族谱图 2016/10/15 丏业中的作用? 网页网站设计 计算机二级 C? 软件设计 2016/10/15 难不难? 听说:除了难,还是难! 2016/10/15 0 我们怎么学? 程序设计诀窍: 多看,多练,多动手 抓住原理 人的脑袋对数据的处理对比程序对数据的处理! 2016/10/15 1 一点建议 自己多看书! 2016/10/15 2 考核方法 平时考勤 20% 上机实验 30% 期末项目 30% 期末考试20% 2016/10/15 3 is a 目前的 人用计算器一生也完不成 秒钟完成的计算量 2016/10/15 4 is a 硬件 ( 键盘、鼠标、显示器、硬盘、 存、 硬件成本下降很快 摩尔定律 每过 18个月微芯片的集成度翻一番,而芯片价格保持不变 软件 ( 运行于计算机之上的程序( 如何降低软件开发成本? 2016/10/15 5 计算机如何工作 2016/10/15 6 很像厨师的菜谱,定义了执行某个任务所需的步骤 但不幸和不同的是,你不能使用你自己的母语来写 is 2016/10/15 7 以往的擅长: 与操作系统和基础工具有关的编程任务 操作系统核心,设备驱动程序,系统工具,网络应用,编辑器,字处理工具,编译器,某些图形和 及数据库应用 未来的发展: 高性能、实时中间件,嵌入式领域,并发程序设计等 2016/10/15 8 机器语言 计算 1+1 10111000 00000001 00000000 00000101 00000001 00000000 2016/10/15 9 汇编语言 X, 1 10111000 00000001 00000000 X, 1 00000101 00000001 00000000 2016/10/15 0 +1 2016/10/15 1 # %dn, 1+1); 2016/10/15 2 一切从一个叫“ 电子游戏开始 为了让他的游戏能在 汇编太不好用了, 试验了一些高级语言,包括 不理想 他在 己设计了一个 开始用 016/10/15 3 016/10/15 4 接受美国国家技术勋章 2016/10/15 5 是一种高级语言 高级语言并不是“高级”,只是相对低级语言,在一个高的级别上进行编程 历史悠久,战勋卓著 诞生于上世纪 70年代初,成熟于 80年代( 修订与 90年代( 很多重量级软件都是用 上天入地,无所不能 几乎没有不能用 有不支持 很多流行语言、新生语言都借鉴了它的思想、语法 从 C+,到 到 C#,还有 2016/10/15 6 . , an 2016/10/15 8 计算机基本工作过程 整个过程的执行者是硬件,但硬件是受软件控制的 编程,就是编写软件,使硬件按照人的意图工作 2016/10/15 9 编译运行 编译过程 程序员( 写程序源代码( 编译器( 源代码转换为可被计算机理解的机器代码( 并把机器代码以可执行文件( 形式保存在磁盘上 软件的运行 计算机把机器代码读入到内存( 由取输入( 产生输出( 完成程序员预定的功能 2016/10/15 0 编译语言 一种编译语言对应一种编译器 程序员按照该语言的语法编写程序源代码,把自己的意图融入到代码中 编译器读入源代码,把程序员的意图转换成可执行程序,供他人使用 可执行程序 编译器 2016/10/15 1 解释运行 解释运行过程 程序员编写程序源代码 解释器读入源代码,并执行源代码 解释运行的语言特点 执行速度慢 好学易用 先编译、后解释 把源代码编译成更容易解释的中间代码,然后再解释运行 第 1章 观其大略 2016/10/15 3 简单数学题目求解步骤 题目: 从学校到石阡路费多少钱? 设变量, 设变量, 分析题目,到石阡路线怎么走(学校 -汽车站 -石阡) 得出到石阡车费式子(表达式): 2016/10/15 4 简单程序求解步骤 题目: 从学校到石阡路费多少钱? 设变量, 设变量, 分析题目,到石阡路线怎么走(学校 -汽车站 -石阡) 得出到石阡车费式子(表达式): 编写程序,实现功能! 2016/10/15 5 简单程序实现方式 1 /主函数(程序入口) x,y,z; /设变量 x=10; /变量赋值 y=40; z=x+y; /得出结果 50元 x=8; /变量赋值 y=40; z=x+y; /得出结果 48元 有什么缺点? 2016/10/15 6 简单程序实现方式 1 /主函数(程序入口) x,y,z; /设变量 z=0,40); z=,40); a,b) /求路费函数 z; /设变量 z=a+b; z; 实现一个功能 2016/10/15 7 解答数学与编程之相同 设变量作为存储数据 如: x, y, z 表达式 如: z=x+y;z=x*y; 函数 实现某一功能 Y=f(x); 2016/10/15 8 解答数学与编程之不同 变量存储空间 如: x, y, 在脑子里 变量有类型 如: 想它放什么就放什么 但电脑是具体存放地方必须有类型,如口袋 函数 是将多个计算式子包括起来,数学仅仅是一个表达式如:抛物线函数 2016/10/15 9 变量 用于存放数据 表达式 如: z=x+y; 如: xy 函数 多个表达式构成的一个功能模块 2016/10/15 0 下课后去食堂吃饭 下课拿好书等 下楼走到食堂 指定饭菜刷卡 吃饭 拿饭菜 开始 结束 2016/10/15 1 x,y,z; 入口 z; z=a+b; a,b) (10,40) 50 z = 50; (8,40) z = 48; 48 返回 2016/10/15 2 n); 超级无敌考考你: 如何把 “ “分别打印在两行? 016/10/15 3 打印华氏温度与摄氏温度对照表 计算公式: C=(5/9)(2016/10/15 4 打印华氏温度与摄氏温度对照表 #* 对 0, 20, ., 300 打印华氏温度与摄氏温度对照表 */ 0; /* 温度表的下限 */ 300; /* 温度表的上限 */ = 20; /* 步长 */ = * 对 0, 20, ., 300 打印华氏温度与摄氏温度对照表 */ 0; /* 温度表的下限 */ 300; /* 温度表的上限 */ = 20; /* 步长 */ = # 0 /* 表的下限 */ # 300 /* 表的上限 */ # 20 /* 步长 */ /* 打印华氏 */ ) * 用于将输入复制到输出的程序;第 1个版本 */ ) c; c = ); c != c ); c = ); 016/10/15 9 一个更好的版本 # /* 用于将输入复制到输出的程序;第 2个版本 */ ) c; (c = ) ) != c ); 016/10/15 0 计算行数 # /* 统计输入的行数 */ ) c; 0; (c = ) ) != c = n ) ; %dn, 016/10/15 1 加法器 # /* 计算输入的两个整数的和 */ ) a, b; ); %d%d, &a, &b); dn, a+b); 016/10/15 2 平均分 # /* 计算某科成绩的平均值 */ #0 /* 总人数 */ ) , i; d n, i=0; i=0 */ n) i, p; p = 1; i = 1; i n); /* 测试 */ ) m, n; m = , 1); n = 3, 3); %d %dn, m, n); ; 016/10/15 6 这一章我们学到了 # # , , =, =, != 数组 代码风格 注释、缩进、空行、命名 函数 第 2章 类型、运算符与表达式 2016/10/15 8 标识符( 用户自定义的符号叫标识符 如变量名、函数名、宏和类型名 标识符由字母、数字和下划线组成,大小写敏感 不可以 是数字开头 标识符要直观,能表达它的功能 下划线和大小写通常用来增强可读性 关键字( 可作为标识符 材 164页) 某些功能的变量采用习惯命名 如: i, j, k 2016/10/15 9 基本数据类型( 整数,在目前绝大多数机器上占 4个字节 个字节 所占字节数取决于机器字长 单精度浮点数,一般是 4个字节长 双精度浮点数,一般是 8个字节长 字符,一般是 1个字节长 用来表示 256个 者 0255的整数 2016/10/15 0 数据类型修饰符 整数,一般 2个字节长。通常简写为 整数,一般是 4个字节长。通常简写为 精度浮点数,一般是 10个字节长。 用来修饰 明他们是 有符号的整数(正整数、 0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略 用来修饰 明他们是 无符号的整数(正整数和 0) 2016/10/15 1 超出取值范围会怎样? 3276732767 如果我们给它一个小于 2767的数会如何呢? 现场编程测验 小蛇能吞下大象吗? 2016/10/15 2 溢出( 成的危害 一台安装了 5/98的机器,如果连续运行 能死机 原因: 一个计数器,记录系统已经运行了多少毫秒。这个计数器是个 型的变量 4294967295 一天有 24*60*60*1000 = 86400000毫秒 4294967295 / 86400000 = 当 计数器会溢出,引起死机 2016/10/15 3 浮点数的陷阱 # f; f = f = f is ); In f is fn, f); 运行结果会是什么? 016/10/15 4 浮点数的陷阱 易发生精度带来的相等性判断问题 个问题发生的概率小一些,但也存在 解决办法: f 里定义了一系列专门的字符串处理函数 2016/10/15 1 枚举( 数 一个几乎被遗忘的角色 从程序来窥其一斑 ; = = 1; = n); n); 016/10/15 2 变量声明 变量必须“先定义,后使用” 所有变量必须在第一条可执行语句前定义 声明的顺序无关紧要 一条声明语句可声明若干个同类型的变量,变量名之间用逗号分隔 变量定义后,即占用内存,可向其存入各种数据,并可通过变量名使用数据 声明变量,是初始化变量的最好时机 不被初始化的变量,其值为危险的随机数 ; i = 0; 1; 2016/10/15 3 常量 用 i=0; 常量只能在定义时赋值,然后 不能 再改变其值 常数、常量、宏和枚举,都可以用来表示一个永远不会改变的数 前者不建议直接使用,而用后三者代替 后三者的工作机理是完全不同的,达到的效果也不尽相同 2016/10/15 4 计算机只会计算 任何事物都要被表示成 数字和公式 的形式后,才能被计算机计算(被计算机处理) 事物到数字和公式的转换过程叫 数学建模 因为:事物在计算机内的处理都是一种计算 又因为:计算就要有操作数、运算法则和计算结果 所以:事物在计算机内的处理都有操作数、运算法则和计算结果 计算结果你可以留用,也可以忽略 2016/10/15 5 算术运算符 +, -, *, / 加、减、乘、除运算 四则混合运算中,先算乘除,后算加减, 先算左,后算右 % 求余运算 2016/10/15 6 关系运算符 , =, b & b c); b,并且 c | 或运算 ( a b | b c); b,或者 c ! 求反 ( !a );如果 ,结果非 0;如果 ,结果是 0 并不改变 2016/10/15 0 类型转换 在进行赋值操作时,会发生类型转换 将取值范围 小 的类型 转为 取值范围 大 的类型是安全 的 反之是不安全的 如果 大 类型的值在 小 类型能容纳的范围之内,则平安无事 但是,浮点数转为整数,会丢失小数部分(非四舍五入) 反之,转换后的结果必然是错误的,具体结果与机器和实现方式有关。避免如此使用 2016/10/15 1 字符串与数值类型之间的转换 i = 123 这样用是不行地 , , 把字符串转为 定义在 可以用来把各种类型的数值转为字符串 定义在 2016/10/15 2 自动类型转换 两个同种数据类型的运算结果,还是该类型 两个不同种数据类型的运算结果,是两种类型中取值范围更大的那种 只要两者中有一个是 都转为 把数据赋值给另外一种类型变量也会发生自动类型转换 从小到大,顺利转换 从大到小,发出警告(好的编译器会给出) 2016/10/15 3 类型强转 可以通过“ (类型 )表达式 ”的方式把表达式的值转为任意类型 强转时,你必须知道你在做什么 强转与指针,并称 好了可以呼风唤雨,用坏了就损兵折将 屠 龙 刀 倚 天 剑 2016/10/15 4 加一和减一运算符 i+, +i, +让参与运算的变量加 1, 运算符为后缀,先取 后加 /减 1 运算符为前缀,先加 /减 1,然后取 在一行语句中,使用加 1或者减 1运算的变量只能出现 不仅可读性差,而且因为编译器实现的方法不同,容易导致不同编译器运行效果不一样,贻害无穷 2016/10/15 5 位操作运算符 & 按位与运算 | 按位或运算 按位异或运算 按位右移运算 按位求反 2016/10/15 6 赋值运算符 赋值运算的结果是被赋值变量赋值后的值 a = b = c = 0; 下面两个语句是等价的 i = i + 2; i += 2; +、 -、 *、 /、 %、 、 &、 、 |运算符都可以按此种方式处理 这种形式看起来更直观,而且执行效率一般也能更高一些 2016/10/15 7 条件表达式 把 a和 a b) z = a; z = b; z = (a b) ? a : b; 此种表达式切忌用得过于繁杂 2016/10/15 8 优先级 ( ) - . ! + + - * & (类型 ) * / % + - = = != & | & | ? : = += -= *= /= %= &= = |= = , 2016/10/15 9 优先级 能背下优先级表的人凤毛麟角 脑细胞太宝贵了,不能用来死记硬背 用括号来控制运算顺序更直观、方便,并减少出错的概率 先算乘除,后算加减,有括号就先算括号里的 括号太多,有时候不清晰 注意用 空格 做好分隔 实在不行就拆分表达式 第 3章 控制流 2016/10/15 1 三种基本结构 顺序结构、选择结构、循环结构 已经证明,任何程序均可只用这三种结构实现 9(5):366966. 只用这三种结构的程序,叫结构化程序 程序“必须”符合结构化规则 2016/10/15 2 流程图 顺序结构 选择结构 环结构 2016/10/15 3 语句块( 括住的若干条语句构成一个语句块 语句块内可以定义变量 变量必须在语句块的开头定义 变量仅在定义它的语句块内(包括下层语句块)有效 ( 同一个语句块内的变量不可同名,不同语句块可以同名 ( 各司其职、下层优先 尽量不要在下层语句块内定义变量,也尽量不要定义同名变量 语句块可以用在任何可以使用语句的地方,但没有道理要乱加语句块 2016/10/15 4 选择结构的一种最常用形式 表达式 ) 语句块 1; 句块 2; 语句块 3 表达式 值 非 0时,执行 语句块 1,然后 语句块 3; 表达式 值为 0时,执行 语句块 2,然后 语句块 3 表达式 值为 0时,直接执行 语句 3 意 达式 !=0? Y N 语句块 1 语句块 2 语句块 3 2016/10/15 5 表达式 1) 语句块 1; 表达式 2) 语句块 2; 表达式 3) 语句块 3; 句块 4; 语句块 5; 表达式 1!=0? Y N 语句块 1 语句块 2 语句块 5 表达式 2!=0? 表达式 3!=0? 语句块 3 N 语句块 4 N Y Y 2016/10/15 6 多路选择 表达式 ) 型常数 1: 语句 1; 型常数 2: 语句 2; 语句 3; 现场编程完成计算器 不要忘记 016/10/15 7 =判断,并且只能是整数判断 两者都要尽量避免用得过多、过长,尤其不要嵌套得太多 它们大大增加程序的分支,使逻辑关系显得混乱,不易维护,易出错 2016/10/15 8 循环 表达式 ) 语句块 ; 表达式 1; 表达式 2; 表达式 3) 语句块 ; 2016/10/15 9 表达式 ) 语句块 1; 语句块 2; 只要 表达式 的值为 非 0,就重复执行 语句块 1,直到 表达式 值为 0时止,开始执行 语句块 2 表达式 !=0? Y N 语句块 1 语句块 2 2016/10/15 00 表达式 1; 表达式 2; 表达式 3) 语句块 ; 首先执行 表达式 1。如果 表达式 2的值为 非 0,就重复执行 语句块 和 表达式 3,直到 表达式 2的值为 0时止 相当于: 表达式 1; 表达式 2) 语句块 ; 表达式 3; 表达式 2!=0? Y N 语句块 表达式 3 表达式 1 2016/10/15 01 注意 在 有分号表示循环体就是分号之前的内容,即循环体不存在 i 缺点:对参数类型和个数无法严格验证,易使用出错 2016/10/15 13 使用函数要注意 每个函数只完成一个功能(包括 ) 对函数的功能可以用 不含连词的一句话 描述 函数不能过长 1986年 S/360的研究结果:大多数有错误的函数都大于 500行 1991年对 148,000行代码的研究表明:小于 143行的函数比更长的函数更容易维护 函数一定要对传进来的非法参数做点什么 向调用者提供错误信息 016/10/15 14 全局变量( 在所有函数之外定义的变量是全局变量,在定义它的位置以后都有效 全局变量自动初始化为 0 全局变量使函数之间的数据交换更容易,效率也高一些 但是 不推荐 使用,甚至 禁止 使用 程序的任何部分都可以改写全局变量,很难确定在程序的哪里改写了它,程序结构混乱 不得不用的时候(这种情况比较少见),要严格控制对它的改写 2016/10/15 15 静态变量( 函数的内部变量在函数退出后失效(内存释放)。再次进入函数,变量重新定义 每次函数执行都建立一个全新的执行环境,不受其它函数的干扰 把此变量定义为 变量的值可以保存到下次进入函数 i; 静态变量自动初始化为 0 016/10/15 16 递归( 函数直接或间接调用自己为递归 n) n = 0) ; n * 016/10/15 17 模块 模块包含两部分 源文件 (一系列相关函数的定义 头文件 (这些函数的声明等必要信息 函数声明、外部变量声明、宏定义、类型定义 可以将模块编译为 而保护了源代码 使用模块的过程 1. 建立一个工程( 2. 把各模块都加入到工程中 3. #4. 开始使用此模块 2016/10/15 18 编写模块的技术 模块的信息隐藏 用 议采用) 允许被其它模块使用的全局变量 在源文件中定义,不加 在头文件中进行声明,加 2016/10/15 19 预编译指令 编译器在开始正式编译之前处理的指令,叫预编译指令 它们不会存在于最后生成的目标代码中 文件包含: # 用 # 用 表示在编译器的 表示在当前目录查找文件 文件名中可以带有路径 2016/10/15 20 # # 名字 替换文本 在 #有独立出现“ 宏名字 ”的地方(除了字符串内)都被“ 替换文本 ”替换 “ 替换文本 ”中可以有空格 宏可以有参数 #,B) (A) (B) ? (A) : (B) 能想出带参数的宏和函数的区别吗? 定义宏的时候注意替换发生后产生的非预想结果 一般用括号可以避免,如上例 宏名中间不要有空格 2016/10/15 21 与 # #现在开始取消 # # # # 这些预编译指令通常用来处理多文件工程和程序多版本的问题。(程序多版本一般是不同平台的版本,不同用户等级的版本,不同开发阶段的版本等) 2016/10/15 22 使用预编译指令的目的 增强程序可读性 但是调错时宏可能带来很多难题 精简源代码,提取变化 这一点更多时候用函数的效果更好,但宏也有其不可替代的优势 不编译无用代码,精炼目标代码 第 5章 指针与数组 2016/10/15 24 计算机内的存储部件,活动中的所有指令和数据都保存在内存内 速度快,但是掉电即失 可以随机访问 只要指名要访问的内存单元的 地址 ,就可以立即访问到该单元 地址 是一个无符号整数(通常用 16进制数),其字长与主机相同 内存中的每个字节都有唯一的一个地址 内存( 地址( 2016/10/15 25 指针的故事 “该程序执行了非法操作,即将关闭 ” 这种错误几乎全是由指针和数组导致的 黑客攻击服务器利用的 有些非计算机专业的人,尽量避免使用指针 2016/10/15 26 指针的故事 铁杆 C/C+程序员最挚爱的武器:指针 指针造就了 C/C+的高效和强大 很多不可能的任务由指针完成 a=a=%c%s%c;a,34,a,34);a,34,a,34); 2016/10/15 27 关于指针的原则 学习原则 一定要学会 其实通常的应用很简单 就是一个变量 复杂的应用也不建议使用 使用原则 永远要清楚每个指针指向了哪里 永远要清楚指针指向的位置是什么 2016/10/15 28 数组( 若干类型相同的相关数据凑到一起,就是数组 定义 类型 数组名 整型常数 1整型常数 2 整型常数 n; a64; 使用 a00、 a12、 a53 每个元素都是一个普通变量 下标可以是任意整型表达式 数组的各个元素在内存中分布在一起,分布规律是 思考一下一维和三维数组怎么分布呢? 2016/10/15 29 从类型的角度理解数组 a10; 定义了一个有 10个 0(只是看作,语法并不允许这么定义: 0 a) a2010; 定义了一个有 20个 0类型元素数组 a0、 a1 a9的类型是 0,所以 a00、 a01 a199的类型是 a302010; 这个呢? 这种特性决定了数组元素在内存的分布规律,也解释了数组的很多语法现象 2016/10/15 30 数组初始化 数组定义后的初值仍然是随机数,一般需要我们来初始化 a5 = 12, 34, 56 ,78 ,9 ; a5 = 0 ; a = 11, 22, 33, 44, 55 ; 数组大小最好用宏来定义,以适应未来可能的变化 #0 a 2016/10/15 31 数组的使用 数组的下标都是从 0开始 对数组每个元素的使用与普通变量无异 可以用任意表达式作为下标,动态决定访问哪个元素 i=0; i 和 中均定义了下面的函数 定义的数据类型,就是一个 向
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一建通关背诵题库及答案
- 中考人物头像试题及答案
- 基于深度学习的图像语音合成
- 旅游行业市场前景分析
- 传统农业数字化转型市场分析
- 人工智能技术在电商平台营销中的应用
- 广东省珠海市2025年八年级上学期期末数学试题附答案
- 甘肃省兰州市永登县2025-2026学年三年级上册期中考试语文试卷(含答案)
- 2025-2030中国工业机器人多轴联动系统研发产业发展现状调查及创新技术投资
- 2025-2030中国工业余热回收利用政策扶持市场需求技术分析报告
- 黑龙江省哈尔滨市南岗区2024-2025学年七年级上学期期末考试英语试题(含答案无听力原文及音频)
- 输血科院感知识培训课件
- 渔业养殖钢架棚施工合同
- 手术室安全与事故应对
- 血透尿毒症脑病
- 黑龙江省哈尔滨八中2025届高二上数学期末学业水平测试模拟试题含解析
- 统编版(2024)语文七年级上册第六单元 分课基础预习练+单元巩固练(含答案)
- DL∕T 5143-2018 变电站和换流站给水排水设计规程
- 高中英语词汇3500词(必背)
- imatest教程完整课件
- 巨量千川初级道题不确定答案附有答案
评论
0/150
提交评论