Transcript 计算机语言与C语言概述
C语言程序设计 主讲教师:李长河 教 材:C程序设计(第四版)谭浩强 院 系:计算机学院 Email:[email protected] • 听课要求: 切实掌握各章主要内容(预习/听课/消化/归纳) 在预习的基础上,听课为主,笔记为辅,课后弄懂课件和 教材中的程序(会分析,能流利写出) • 考核方式: 平时成绩(作业、书面/上机、考勤)+考试 说明: 课程主页: http://cs.cug.edu.cn/teacherweb/lichanghe/pages/teachingRes/ C2012First.html 实验安排:4次(5,7,9,11周),每次4个课时, 星期五7-10节, 具体时间地点待定 第一章 计算机语言与C语言概述 学习目标 •了解计算机语言发展过程 •了解C语言特点 •掌握如何运行C程序 1.1 计算机语言概念 ■计算机语言定义 计算机能够识别和接受的语言。 要使计算机按自己的意图工作,必须使 用计算机所能接受、理解和执行的指令 指挥计算机工作。 ■计算机语言的种类 机器语言 计 算 机 语 言 低级语言 汇编语言 (面向计算机) BASIC 入门语言 F77 科学计算 高级语言 Foxpro 数据库管理 (面向问题 ) C 多用途 …… …… •机器语言 最早问世,用二进制代码构成指令。 如: 100000 (+) 110000 (-) 用机器语言编程的缺点: ─繁琐、不直观、不易调试。 如计算y=2x2+3x-1需要七八条指令。 ─移植性差。 依赖于计算机。 •汇编语言 用符号构成指令,如:MOV、ADD 用汇编语言编程: 相对直观,但仍繁琐,仍是面向计算 机的语言。 汇编语言是计算机间接接受的语言 •高级语言(非结构化->结构化->面向对象) 与低级语言相比,有根本性的区别: 是面向问题的语言。 高级语言的一条指令(语句): y=2*x*x+3*x-1; 对应于:y=2x2+3x-1 y=sin(x); 对应于:y=sinx 用高级语言编程: 直观、易懂、移植性好(不依赖于具体计 算机) 1.2 C语言的特点 集高级语言和低级语言的优点于一身: ●能实现低级语言的大部分功能(如直接 访问内存物理地址、进行位操作等)。 ●图形功能强。 ●运算符和数据结构丰富。 ●语法限制不太严格,程序设计自由度大。 ●生成目标代码质量高,程序执行效率高。 1.3 简单的C程序介绍 例1: #include <stdio.h> int main() { 主函数说明 程序框架 printf(“abcdef”); 函数体 语句 return 0; } 程序的功能是输出字符串:abcdef 例2:求两数之和。 main() { int a,b,c; a=100; b=50; c=a+b; printf(“\n c=%d”,c); } 程序运行结果:c=150 a b c 100 50 150 例3:求两数中的最大值。 函数类型 函数名 形参 main() int max (int x,int y) { int a,b,c; { int z; scanf(“%d,%d”,&a,&b); if(x>y) z=x; c=max(a,b); else z=y; printf(“\nmax is:%d”,c); return(z); } } a b c 3 5 5 x y z 3 5 5 (两个函数组成) 总结上例可知: (1) C程序由函数构成。 (2) 函数由两部分组成: 函数说明部分:函数名、函数类型、形 参名、形参类型。 函数体:实现函数的具体操作;由语句 构成。 (3) 程序总是从main函数开始执行。 (4) 书写格式自由。 (5)语句必须有分号:; C程序的开发过程 开 编 始 程序代码的录入, 生成源程序*.c 编译 语法分析查错,翻译 生成目标程序*.obj 链接 与其它目标程序或库 链接装配,生成可执行 程序*.exe 辑 源程序 file.c 编 编辑 译 有 目 标 程 有错? 序 无 连 接 file.obj file.exe 可执行 目标程 库函数和 序 其它目标 执 行 执行 程序 不正确 结果正确? 正确 结 束 源程序 目标程序 可执行程序 内容 程序设计语言 机器语言 机器语言 可执行 不可以 不可以 可以 文件名后缀 .c .obj .exe 如何学习C语言编程? • 编程似写作 先学“字词句”和“语法”,目标是“写作”。 学习数据类型、控制结构、语法规则等——学语言基础 掌握程序分析、算法与编程——写文章 • 仅仅读书是不够的 程序是编出来的,程序是调出来 ——在编程实践中消化知识。 • 没有天生的程序员 初学者:有点难。 没有学不会的,只有学不精的——除非自己放弃。 • 循次渐近很重要 阅读/分析程序→摹仿编程→掌握常见程序模块→简单程序→复 杂编程 • 仅是起点,而非终点