1 / 61

C 语言程序设计

C 语言程序设计. 主讲:徐大军. Email: xdj@buaa.edu.cn Tel: 13581894133 QQ 群 : 231175581 (每周二、三晚在线答疑). 教学大纲. 1 、课程教学目标 本课程为非计算机专业的基础课程,任务: 在学生掌握 C 语言的基本内容、程序设计的基本方法与编程技巧的过程中,向学生介绍进行科学计算的一般思路。 2 、教材 《C 程序设计 》 第四版 谭浩强 清华出版社 3 、教学内容及基本要求 目录 17~22. 课程安排

Download Presentation

C 语言程序设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C语言程序设计 主讲:徐大军 Email: xdj@buaa.edu.cn Tel: 13581894133 QQ群: 231175581(每周二、三晚在线答疑)

  2. 教学大纲 • 1、课程教学目标 • 本课程为非计算机专业的基础课程,任务:在学生掌握C语言的基本内容、程序设计的基本方法与编程技巧的过程中,向学生介绍进行科学计算的一般思路。 • 2、教材 • 《C程序设计》第四版 谭浩强 清华出版社 • 3、教学内容及基本要求 • 目录17~22

  3. 课程安排 • 上课 32学时,第1~16周,J3-201周二 上午3、4节; • 上机 16学时,第2~9周, • 地点(待定) • 时间(周五上午3、4节)

  4. 成绩 • 平时作业成绩占20%,上机报告10%, • 上机测试10%,期末笔试成绩60%

  5. 第一章 C语言概述 • 内容提要: • C语言历史与发展 • C语言的特点 • 简单的C语言程序介绍 • 如何运行C语言程序

  6. 关于计算机程序的应用 • 计算机能够做什么?

  7. 计算机程序设计在AA领域的应用 • 从一则新闻说起。。。 快讯:中国首台千万亿次超级计算机系统“天河一号” 居国际组织全球超级计算机前500强榜首。 2010年11月15日 02:39:45  来源: 新华网

  8. 计算机程序设计在AA领域的应用 • 从一则新闻说起。。。 世界上第一台电子计算机命名为“埃尼阿克”ENIAC,是1946年美国宾夕法尼亚大学研制成功。 弹道计算

  9. 计算机程序设计在AA领域的应用 • 计算机程序设计的应用案例

  10. 计算机程序设计在AA领域的应用 • 计算机程序设计的应用案例 航天运载器、导弹、卫星、高超飞行器、浮空器、炮射飞行器等 飞行器设计 研究形式: 流场计算 结构计算 传热计算 动力学计算 优化设计

  11. 计算机程序设计在AA领域的应用 • 计算机程序设计的应用案例 航天运载器、导弹、卫星、高超飞行器、浮空器、炮射飞行器等 飞行器设计 研究形式: 流场计算 结构计算 传热计算 动力学计算 优化设计

  12. 计算机程序设计在AA领域的应用 • 计算机程序设计的应用案例 航天运载器、导弹、卫星、高超飞行器、浮空器、炮射飞行器等 飞行器设计 研究形式: 流场计算 结构计算 传热计算 动力学计算 优化设计

  13. 计算机程序设计在AA领域的应用 • 计算机程序设计的应用案例 航天运载器、导弹、卫星、高超飞行器、浮空器、炮射飞行器等 飞行器设计 研究形式: 流场计算 结构计算 传热计算 动力学计算 优化设计

  14. 计算机程序设计在AA领域的应用 • 计算机程序设计的应用案例 航天运载器、导弹、卫星、高超飞行器、浮空器、炮射飞行器等 飞行器设计 研究形式: 流场计算 结构计算 传热计算 动力学计算 优化设计

  15. 计算机程序设计在AA领域的应用 • 计算机程序设计的应用案例 火箭、导弹、卫星的导航制导与控制,图像处理 导航探测 研究形式: 算法研究 硬件开发 图像处理

  16. 计算机程序设计在AA领域的应用 • 计算机程序设计的应用案例 液体、固体、固液火箭发动机,电推进发动机,冲压发动机等 动力工程 研究形式: 流场计算 结构计算 传热计算

  17. 关于“计算机程序设计语言” • 计算机程序设计语言 • 真实会话语言 | • 面向问题的语言 | • 计算机程序设计语言(C语言) | • 机器语言 | • 计算机硬件

  18. 关于“计算机程序设计语言” • 计算机程序设计语言种类 C,C++, C# Basic Fortran Java ……

  19. 关于“计算机程序设计语言” • 为何选择C语言学习? 应用程序界面开发 C++, VB... 科学数值计算 网络编程 C,C++, Fortran., MatLab.. Java,C# 数据库编程 C VC++,VB 硬件编程 C C++ C# 扩展阅读: 【转载】为什么我们都应该学学C语言

  20. C语言的发展历史与特点 • C语言的发展历史 汇编语言 UNIX操作系统 改进 Algol 60 语言 BCPL语言 Bell Lab. B语言 New B 语言 C语言 Ken Thompson Dennis Ritchie • C语言的标准化: K&R C (经典C) ANSI C (C89或C90) C99 The C Programming Langurage Brian Kernighan, Dennis Ritchit 1983-1989, 美国国家标准协会ANSI 1990,国际标准化组织ISO 1999,ISO

  21. C语言的发展历史与特点 • C语言的特点 • C语言是一种底层语言 • C语言是一种小型语言 • C语言是一种包容性语言 • C语言的优点 • 高效、可移植性、功能强大 • 灵活、标准库 • 与UNIX/LINUX系统的集成

  22. C语言的发展历史与特点 • C语言的缺点 • C语言更容易隐藏错误 • C程序可能会难以理解 • C程序可能会难以修改 国际模糊C代码大赛 International Obfuscated C Code Contest http://www.ioccc.org

  23. 简单的C程序 注释 函数 语句 编译预处理 /* example1.1 The first C Program*/ #include <stdio.h> int main() { printf(“This is a C Program!\n"); return 0; } This is a C Program!

  24. 简单的C程序 格式特点 • 习惯用小写字母,大小写敏感 • 不使用行号,无程序行概念 • 可使用空行和空格 • 用锯齿形书写格式 10 10 例:求∑ (i*∑j)之积 i=1 j=1 #include <stdio.h> void main( ) //主函数 { int i , j , sum; //变量 sum=0; for(i=1; i<10;i++) { for(j=1;j<10;j++) { sum=sum+i*j ; } } printf(“%d\n”,sum); } 优秀程序员的素质之一: • 使用TAB缩进 • {} 表示某一层次结构 ,要对齐 • 有足够的注释 • 有合适的空行 • 一个说明或一个语句占一行

  25. 简单的C程序 非法 结构特点 • 1,编译预处理命令 -> 例:#include "stdio.h“ • 2,函数与主函数 • 程序由一个或多个函数组成 • 必须有且只能有一个主函数main() • 程序执行从main开始,在main中结束, 其它函数通过嵌套调用得以执行。 • 3,程序语句 • C程序由语句组成 • 用“;”作为语句终止符 • 4,注释 • /* */为C注释,不能嵌套 • //为C++的注释 • 不产生编译代码 例: /*This is the main /* of example1.1*/ */

  26. 简单的C程序 c程序结构

  27. 简单的C程序 例1.2 加法运算程序 #include "stdio.h" //编译预处理 int main() { int a,b,sum; /*定义变量*/ a=123; /*变量赋值*/ b=456; sum=a+b; /*算术表达式 ,求和*/ printf("sum is %d\n",sum); /*输出sum的值*/ return 0; } • 在C中,变量必须先定义,后使用 • 语句具有规定的语法格式和特定的功能 • ;为语句的终止符。 • { }表示程序的结构层次范围, 并且必须配对使用。 • 注释格式 /*注释内容*/

  28. 简单的C程序 C程序由函数组成 • 例1.3 求最大值 #include "stdio.h" int max(int x, int y) { int z; if (x>y) z=x; else z=y; return (z); } void main ( ) { int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("max= %d\n",c); } • 至少包含一个且仅有一个名为main( )的主函数。 • 程序从主函数main( ) 开始执行。 • main()函数的位置可以任意 • 函数的语法结构: 函数类型 函数名(形参说明 形参) { 内部变量说明; 执行语句部分; return计算结果; } • 注意:书写格式

  29. C程序开发步骤.理论 编辑 编译 链接 执行 C程序的开发步骤 程序代码的录入,生成源程序*.c 语法分析查错,翻译生成目标程序*.obj 与其它目标程序或库链接装配,生成可执行程序*.exe

  30. C程序开发步骤.实现 • Windows环境下的开发环境

  31. C程序开发步骤.实现 • 为什么是黑窗口? 控制台程序

  32. 第2章 程序的灵魂——算法 • 内容提要: • 算法的概念 • 算法的表示方法 • 结构化程序设计方法

  33. 算法的概念 • 数据结构 + 算法 = 程序 对数据的描述 对数据操作的描述 Nikiklaus Wirth, 1966 1.对数据的描述,即数据结构。 在C语言中,系统提供的数据结构,是以数据类型的形式出现的。 2.对数据处理的描述,即计算机算法。算法是为解决一个问题而采取的方法和步骤,是程序的灵魂。

  34. 算法的概念 • 算法的概念 1、算法:计算机求解某一问题而采用的具体方法; 做事情都有——方法、步骤(顺序)——决定事情的成败

  35. 算法的概念 • 算法的概念 • 2、两大类计算机算法: • 数值运算算法(数值求解) • 非数值运算算法(事务管理) 程序员必备知识:算法、数据结构、程序设计方法、语言工具

  36. 算法的概念 a<60 N Y 不及格 a<70 Y N a<80 及格 N Y 中等 a<90 Y N 良好 优秀 • 算法举例 任务:将学生的成绩按分数段分级。 S1:1i ,输入一个学生成绩a S2: S3: i+1 i,输入一个学生成绩a S4:如果i  10000, 返回S2; 否则,算法结束。 转S3 转S3 转S3 转S3 转S3

  37. 算法的概念 a<60 N Y 不及格 a<70 Y N a<80 及格 N Y 中等 a<90 Y N 良好 优秀 • 算法举例 不及格及格中等良好优秀 分数:0~59 60~69 70~79 80~89 90~99 判断次数: 2 4 4 1 3 比例: 0.05 0.15 0.40 0.30 0.10 次数: 500 3000 12000 12000 4000 总计31500次

  38. a<80 N Y a<90 Y a<70 N Y Y 中等 良好 优秀 a<60 Y N 不及格 及格 不及格及格中等良好优秀 分数:0~59 60~69 70~79 80~89 90~99 判断次数: 3 2 2 3 2 比例: 0.05 0.15 0.40 0.30 0.10 次数: 1500 4500 8000 6000 2000 原算法 总计31500次 改进后算法 总计22000次

  39. 【转载】李开复:算法的力量 算法与我 “记得我读博时写的Othello对弈软件获得了世界冠军。当时,得第二名的人认为我是靠侥幸才打赢他,不服气地问我的程序平均每秒能搜索多少步棋,当他发现我的软件在搜索效率上比他快60多倍时,才彻底服输。” 网络时代的算法 并行算法:Google的核心优势 算法并不局限于计算机和网络

  40. 算法的概念 • 算法的特性 • 有穷性:一个算法必须在执行有穷步之后结束。 • 确定性:算法的每一步必须是确切定义的。 • 对于相同输入必须得到相同结果。 • 有效性:算法的每一步都是能够实现的,即可操作的。 • 输 入:算法有零个或多个输入。 • 有输出:算法执行完毕,必须有一个或若干个输出结果。

  41. 算法的表示方法 • 常用的算法表示方法 • 1、用带序号的自然语言表示算法 例2.1 求1×2×3×4×5 Step1: 先求1×2,得到结果2。 Step2: 将Step1得到的乘积再乘以3,得到结果6。 Step3: 将6再乘以4,得到24。 Step4: 将24再乘以5,得到120。这就是最后的结果。 通俗易懂,但不直观,不严谨,难以描述分支和循环(如例2.5)。

  42. 算法的表示方法 • 常用的算法表示方法 • 2、用流程图表示算法 起止框 输入输出框 判断框 处理框 流程线 连接点

  43. 算法的表示方法 s1TcFwhile cs s2 s1s2suntil c • 常用的算法表示方法 • 3、用N-S流程图表示算法 N-S图(盒图) 特点:完全去掉了带箭头的流程线,算法的所有处理步骤都写在一个大矩形框(表示简单、符合结构化思想。)

  44. 算法的表示方法 • 常用的算法表示方法 • 4、用伪代码表示算法 用介于自然语言与计算机语言之间的文字及符号来描述算法 (方便、易懂、便于向计算机语言过渡) if x is positive then print x else print -x

  45. 算法的表示方法 • 举例:计算 ,写出其算法 自然语言描述 S1: 把0放入S存储单元 S2: 把1放入n存储单元 S3: 把S与n相加,结果放入S存储单元 S4: 把n加1,结果放入n存储单元 S5: 判断n是否小于等于100 是,转S3;否则转S6 S6: 输出S的值

  46. 算法的表示方法 • 举例:计算 ,写出其算法 流程图描述 N-S流程图描述 开始 0 => S 1 => n 0 => S 1 => n n≤100 S+n => S S+n => S n+1=>n n+1 => n T 输出S n≤100 N 输出S 结束

  47. 算法的表示方法 • 举例:计算 ,写出其算法 伪代码描述 C语言程序描述 main() { int S, n; S = 0; n =1; while(n<=100) { S= S+n; n = n+1; } printf(“S=%d\n”,S); } 0=>S 1=>n while n≤100 S+n=>S n+1=>n print S

  48. 算法的表示方法 • 如何应用各种算法的表示方法 1、简单问题,或已能够熟练编程 用自然语言打“腹稿”,直接写程序; 2、较为复杂的问题,或尚不熟练掌握编程 画流程图,再写程序 3、大型程序,多人合作编写 一定要画流程图,进行任务分工; 写伪代码,协调讨论,再写程序。

  49. 结构化程序设计方法 • 结构化程序的三种基本结构 顺序结构、选择结构、循环结构 结构化程序设计 基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto) 结构化程序:由三种基本结构反复嵌套构成的程序 优点:结构清晰,易读,提高程序设计质量和效率.

  50. 结构化程序设计方法 A A B B (a) (b) • 结构化程序的三种基本结构 一、顺序结构 N-S结构流程图 先执行A操作,再执行B操作,两者是顺序执行关系。

More Related