《嵌入式 C 语言编程 - 基础》理论课教案
第 1 章
C 语言基础
一、整章授课思路 [40 分钟] .......................................................................................................................... 3 1. 回顾、预习检查、任务、目标部分 [5 分钟] ................................................................................... 3 2. 什么是程序、指令以及流程图[10 分钟] ............................................................................................ 3 3. C 语言基础和简介[10 分钟] ................................................................................................................ 4 4. 编译和执行 C 程序[10 分钟] ............................................................................................................... 5 5. 补充内容[3 分钟] .................................................................................................................................. 6 6. 总结
[2 分钟] ...................................................................................................................................... 6 二、 学员问题汇总 ........................................................................................................................................ 6 三、 作业布置 ................................................................................................................................................ 7
课时:1 学时 授课人:XXX
本书目 标
重点介绍 C 语言在整个课程体系中的地位 解 讲解 PPT :C 语言在嵌入式领域的重要性
—— 提高学生对本门课的兴趣 参考资料推荐
—— 提供参考资料 及经典书籍 程序设计语言 C 陷阱与缺陷 C 专家编程 C 语言编程规范 理解算法、流程图以及程序的概念 掌握用 C 语言进行程序设计的基本方法。
掌握 C 语言的基础知识,包括基本数据类型、表达式、控制结构等 掌握 C 语言的高级知识,包括数组、指针、函数、字符串、结构、文件操作等 课时及上课时间分配
—— 整本书授课思路及进度安排 3 天理论课时 第一天:
第一章 1 课时 第二章 2 课时 第三章 1 课时 第四章 2 课时 第五章
2 课时 第二天:
第六章 3 课时 第七章 2 课时 第八章 3 课时 第三天 第九章
3 课时 第十章
2 课时 第十一章 3 课时 1 天做课后题
8 课时 1 天综合实验
8 课时 本章 目标
了解程序、算法和流程图的概念 熟练掌握 C 程序的基本结构 掌握 C 程序的编译和运行过程 使用 GCC 创建 C 程序 本章重点
C 程序的基本结构和注释 C 语言的编译和执行 本章难点
如何学习及学好 C 语言? 批注 [r1]: 从业务角度描述,学员学完本书能干什么、能作出什么东西,参考 PPT 上的描述。
批注 [r2]: 从业务角度描述,学员学完本章能干什么、能作出什么东西,参考 PPT 上的描述。
批注 [r3]: 注意描述要简洁明了,其他老师一看就明白,方便交流。
一、 整章授课思路
[ [4 40 0 分钟] ]
本章依次讲解三个问题:
程序、算法和流程图 C 程序的基本结构、编译和运行过程 使用 GCC 创建 C 程序 1. 回顾、预习检查、 任务、目标 部分
[ [5 5 分钟] ]
根据 PPT 中提供的问题,逐一提问学员,注意给予学员引导,建立学员的信心。
main()函数的返回值默认是整型 [int] main()中的 int 默认可以省略 \n 代表换行 计算机为什么使用二进制语言:硬件易于实现,计算简单 2. 什么是程序、指令以及流程图[ [1 10 0 分钟] ]
2.1 什么是程序?
引入:
程序语言,顾名思义就是语言,是用于交流的,程序就是计算机的语言和人的语言的翻译者,做一个程序员就是要把人类世界的问题用计算机的方法去解决和展现
讲解要点:程序 起源:
几十年前,有一个老美(叫什么 Niklaus Wirth),弄了一个破玩意儿:
“Algorithm + Data Structures = Programs”
好了,这孩子出名啦,全世界都他的这个玩意奉为经典。
当我们中国人看到了以后,心想啊,那玩意儿是经典啊,不能改啊,我们 就这样翻译吧:
“算法 + 数据结构 = 程序”
或者
“程序 = 算法 + 数据结构”
课堂案例:
打个比方,一个程序就 像一个用 汉语 (程序设计语言)写下的红烧肉 菜谱 (程序),用于指导 懂汉语和烹饪手法的人 (体系结构)来做这个菜。通常,计算机程序要经过編譯和連結而成为一种人们不易看清而计算机可解讀的格式,然后运行。未经编译就可运行的程序,通常称之为脚本程序(script)。
:
验证案例:(无,这里仅做示范)
2.2 算法 引入:
算法就是处理事情的方法,比如出门前要先穿衣服,穿衣服要先穿哪件再穿哪件,这就是算法。。。
讲解要点:
批注 [r4]: 指整章的整体思路,先讲什么,后讲什么,它们之间如何串起来。
批注 [r5]: 各技能点的逐一讲解,技能点的讲解一般包括:
1)引入:通过生活案例或代码案例引出本次课讲解的技能,主要让学员明白为什么用学这个技能。
2)讲解要点:该技能点讲解的大致思路、注意问题、相关提问等。切忌把 PPT 上讲解的技能点再重复罗列一遍,造成“重复冗余”。
3)课堂案例:上课讲解使用的案例名称,案例放置在对应文件夹中,Word 中不需要粘贴源代码。
4)验证案例:用于检验学员学习效果的案例,PPT 一般出现在小结部分。多用现场编程题,其次是问答题。案例放置在对应文件夹中 说明:
1、对本章重点、难点部分,要求进行详细描述,其他部分完全可以从简描述。
2、非重难点的技能点讲解,可以没有“引入”和“检验案例”。
3、如果技能点比较复杂,可 以往下细分。
算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
一个算法应该具有以下五个重要的特征:
1、有穷性:
一个算法必须保证执行有限步之后结束;
2、确切性:
算法的每一步骤必须有确切的定义;
3、输入:一个算法有 0 个或多个输入,以刻画运算对象的初始情况,所谓 0 个输入是指算法本身定除了初始条件;
4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
5、可行性:
算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
算法的优劣:用空间复杂度与时间复杂度来衡量 例:空间换时间,时间换空间。——来上班的方式选择。打车?走路?
课堂案例
案 例:
计算长方形的面积
2.3 流程图
引入:
千言万语不如一张图。
讲解要点:
流程图:使用图形表示算法的思路是一种极好的方法 流程图在 汇编语言和早期的 BASIC 语言环境中得到应用,由于其中的转向过于任意,带来了许多副作用,现已趋向消亡。
较新的是有利于结构化程序设计的 PAD 图,对 PASCAL 或 或 C 语言都极适用。
课堂案例 :
案例:
流程图来画计算 长方形的面积 3. C C 语言基础和简 介[ [1 10 0 分钟] ]
3.1 C 语言简介之语言特性
引入:
1、纸带 2、汇编语言的特点:速度快 3、C 语言:强大——可以直接修改 PC 上的值,简单——易懂,不挑机器及特性(高级)
讲解要点:
机器语言或称为二进制代码语言 计算机可以直接识别,不需要进行任何翻译。每台机器的指令,其格式和代码所代表的含义都是硬性规定的,故称之为面向机器的语言,也称为机器语言。它是第一代的计算机语言。机器语言对不同型号的计算机来说一般是不同的。
汇编语言(AssemblyLanguage) 是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。
本质上汇编语言和机器语言是一一对应的,即一条汇编语言对应一条机器指令.而一条高级语言一般可以相当于多条机器或汇编指令,这大大提高了软件开发效率,让复杂软件的出现成为可能. C 语言简介之 C 语言强大
C 语言入门容易,用起来难
C++入门难,用起来方便
课堂案例 :
既然要学习 C 语言,则需要大概了解一下 C 语言的是怎么产生怎么发展的。
C 语言是在 B 语言基础上发展起来的。在 B 语言之前经历了 ALGOL60、CPL、BCPL语言。
使用 B 语言写了第一个 UNIX 操作系统。B 语言过于简单。功能有限。在 1973 年贝尔实验室的 Dennis Ritchie 在 B 语言基础上设计了 c 语言。
其目的为描述和实现 UNIX 系统的。同年, Ken Thompson 和 Dennis Ritchie 合作把原来使用汇编语言编写的 UNIX 改为 C 语言来实现。之后 C 语言发展经历了三个重要的发展阶段。
到现在为止虽然出现了很多的程序设计语言,但是 C 语言依旧具有强壮的生命力,在很多行业领域仍然使用。我们现在学习 c 语言可以为学习其它语言打下基础。
4. 编译和执行 C C 程 序[ [1 10 0 分钟] ]
C 4.1 C 语言的基本结构
引入:
那么一个 C 程序怎么才能变成计算机可识别的二进制代码 讲解要点:
1.一个 C 语言源程序可以由一个或多个源文件组成。
2.每个源文件可由一个或多个函数组成。
3.一个源程序不论由多少个文件组成,都有一个且只能有一个 main 函数,即主函数。
4.源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。
5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”
之后不能加分号。
6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
课堂案例 :
案例:
helloworld.c
4.2 C 语言的编译和执行
引入:
回顾:Linux 开发基础第六章内容,详细剖析 C 程序编译的整个过程
讲解要点:
解释器或直译器(Interpreter)是一种供执行其他程式的电脑程式,解释器只像一位“中间人”,每次执行程式时都要先转成另一种语言再作执行,因此解释器的程式运行速度比较缓慢。
相对地,编译器并不执行程式或原程式码,而是一次过将其翻译成另一种语言,如机械码,以供多次执行而无需再经编译。其制成品无需依赖编译器而执行,程式运行速度比较快。
课堂案例 :
案例:
编译并连接执行 c helloworld.c 程序
5. 补充内容[ [3 3 分钟] ]
如何学习 C 语言 C 语言在嵌入式领域的重要性 6. 总结
[ [2 2 分钟] ]
根据 PPT 上的问题,对本次课进行总结。
二、
学员 问题 汇总
问题 1:C 语言有哪些经典的书籍和教材?
答:C 程序设计语言 C 陷阱与缺陷等 问题 2:在 vi 中怎么设置 tab 键为空 4 格
答:在用户主目录下建文件 .exrc 内容为 set ts=4 set sw=4 set ai 即可 批注 [r6]: 课堂上学员常问的一些问题,上多次课后,需要进行归纳汇总,便于教员间相互交流、学术例会研讨等。
三、
作业布置
预习作业:
1)
用 Gcc 编译一个 C 程序 复习作业:
1)教材题 无 2)补充作业 1:使用 Gcc 编译 Helloworld.c 程序 批注 [r7]:
包括预习作业和课后作业。
预习作业:
用于学员预习本章时完成的作业。
课后作业:
用于本章讲解完毕时布置的作业。