嵌入式系统编程语言第二章C语言开发流程及基本结构.ppt_第1页
嵌入式系统编程语言第二章C语言开发流程及基本结构.ppt_第2页
嵌入式系统编程语言第二章C语言开发流程及基本结构.ppt_第3页
嵌入式系统编程语言第二章C语言开发流程及基本结构.ppt_第4页
嵌入式系统编程语言第二章C语言开发流程及基本结构.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统 编程语言,第二章 C语言开发流程及基本结构,思考题,已知圆的半径,求圆的面积,本节课内容,一、C语言开发流程 二、C程序基本结构,三、C语言开发流程,高级编程语言中的指令,哎呀 我理解不了,编译程序/解释程序,可以 我现在可以理解了,高级语言由编译/解释程序转换为机器代码,这种机器代码计算机可以理解,计算机硬件,高级语言程序,编译程序/解释程序(编译器/解释器)0,机器代码,高级语言的编译和执行,三、C语言开发流程,编译器,连接器,源程序:是用户创建的文件,以“.c”为文件扩展名保存,目标文件:是编译器的输出结果。这类文件的常见扩展名为“.o”或“.obj”,可执行文件:是连接器的输出结果。可执行文件的扩展名为“.exe”。,编译和执行C程序,三、C语言开发流程,设计程序,编写代码,编译,运行程序,测试和调试,维护和修改,编译中发现错误,转回修改源程序,运行中发现错误,转回修改源程序,调试运行中发现问题,表明分析本身有错误,重新分析设计问题,定义程序目标,C程序的开发步骤,三、C语言开发流程,步骤: 成果: 编辑 .c .h 预编译 编译 .obj或.o 链接 .exe 加载 运行,是否理解它们真正的含义?,例 求圆面积程序 area.c分析(编译预处理),/*给定半径,求圆的面积*/ #define PI 3.14159 /*编译预处理宏替换*/ #include /*编译预处理文件包含*/ #include /*编译预处理文件包含*/ int main( ) /*主函数*/ float r,s; /*定义变量r、s类型为单精度实型*/ r=1.0; /*变量r赋初值*/ s=PI*pow(r,2); /*计算圆面积s*/ printf(“半径R=%f 时,面积S=%fn”,r,s); /*输出结果*/ return 0; ,注释部份 这部分内容不会 被编译,也不被执行,预编译处理 程序编译、执行前系统 自动进行的特殊处理 特点: 以#开头 结束处无分号,预编译处理宏定义,#define PI 3.14159 PI 符号常量(宏名,最好用大写,以区别一般变量) 3.14159 宏体(可以是一个表达式) 作用:用简单符号代表宏体部份内容(编译时会先自动替换) 意义:直观/多次使用/便于修改 注意: #define 可出现在程序的任一位置(作用范围:由此行到程序末尾) 宏定义不是C语句,不必在行未加分号,否则会连分号一起置换。,例二 #define A 1 #define B 2 #define C 2*A+B int main() printf(“C=%d”,C); /*输出结果:C=*/ return 0; ,例三 #define WIDTH 80 #define LENGTH WIDTH+40 s=LENGTH*20,/*s=80+40*20=880*/,预编译处理文件包含,#include stdio.h“头文件”(标准前导文件) C语言是一种“装配式”语言,许多常规的工作如输入、输出、数学函数等,往往事先由人做成各种“程序模块”,存放在各种所谓“头文件”(.h)中。 文件包含的作用,就是根据需要把相应的某个“头文件”的内容在预编译时先整体嵌入所编的程序中。 用户也可以将自己设计的程序模块等做成“头文件”,供其他程序“包含”。,文件包含示意图,#include #include 源程序area.c (用户编写),头文件stdio.h (系统提供),头文件math.h (系统提供),area.exe (可执行程序),stdio.h math.h,编译/ 连接,area.c文件本身只有11行,stdio.h有187行, math.h有107行, 实际上stdio.h本身还包括 一个25行的头文件stdarg.h。,stdarg.h,stdio.h stdarg.h math.h,使用“文件包含”功能的优点,提高程序设计效率和程序可靠性 减少程序员重复劳动量 常用有:stdio.h 标准输入/输出函数 math.h 数学函数 stdlib.h 常用函数 一个优秀的程序员不应是事无巨细都要从头做起的“工匠”,而应是一个“策划师”+“组装师”。 所以 ,逐步熟悉并掌握常用函数等现有功能模块,是学习C程序设计的一个重要内容。,链接,主函数 main( ) ,C语言是一种函数式语言,它的一个函数实际上就是一个功能模块C程序的基本组成是函数。 一个C程序是由一个固定名称为main的主函数和若干个其他函数(可没有)组成。 一个C程序必须有一个、也只能有一个主函数。 主函数在程序中的位置可以任意,但程序执行时总是从主函数开始,在主函数内结束。 主函数可以调用其他各种函数(包括用户自己编写的),但其他函数不能调用主函数。,主函数的一般形式:,int main( ) 说明部分程序段(定义数据类型) 执行部分程序段(给出操作指令) return 0; ,函数体,说明部分(简单程序可能没有此部分): float r,s; /*定义变量r、s类型为单精度实型*/ int a,b; /*定义变量a、b类型为整型*/ 执行部份:输入、赋值、计算、控制、输出等 r=1.0; /*变量r赋初值*/ s=PI*pow(r,2); /*计算圆面积s*/ printf(“半径R=%f 时,面积S=%fn”,r,s); /*输出结果*/,其他函数,标准函数只能调用(先文件包含) 。方法是: 函数名(参数) 例: s=PI*pow(r,2); pow(x,y) 求xy (标准数学函数) printf(“半径R=%f 时,面积S=%fn”,r,s); printf(); (标准输出函数) 自编(定义)函数: (后面几章将详细介绍) 先定义,后调用 【示例】求三个数的平均值,自定义函数示例,float average(float x, float y, float z) float aver; aver=(x+y+z)/3; Return (aver); int main( ) /*主函数*/ float a,b,c,ave; a=3.5;b=4.6;c=7.9; ave=average(a,b,c); /*调用自定义函数*/ printf(“average=%f”,ave); return 0; Lets try,自定义函数格式 函数类型 函数名(形式参数类型 形式参数) (函数体) ,小结 1、C语言程序的基本结构,一个C程序是由一个固定名称为main的主函数和若干个其他函数(可缺省)组成。 其基本结构一般形式如右图所示。,#include int main(void) /*一个简单的c程序*/ int num; /*定义一个名为num的变量*/ num=1; /*为num赋一个值*/ printf(“I am a simple computer.n”); printf(“My favorite number is %d.”,num); return 0; ,以 # 开始的语句称为预处理器指令,以.h为后缀的文件被称为头文件,可以是 C 程序中现成的标准库文件,也可以是自定义的库文件。,stdio.h文件中包含了有关输入输出语句的函数,main() 函数是 C 程序处理的起点。,main() 函数返回一个int型整数,void表示main()函数不接受任何参数.,在函数定义的后面有一个左大括号,即 ,它表示函数的开始,后面是函数的主体,大括号也可以用于将语句块括起来,在函数定义的结尾处有一个右大括号,即 ,在屏幕上产生一行输出: I am a simple computer. My favorite number is 1.,函数主体中的每个语句都以分号结束。,C 程序中的一个语句可以跨越多行,并且用分号通知编译器该语句已结束。,C 程序的基本结构,C程序的基本结构,C程序是由函数组成的 函数由说明部分和函数体组成 C程序总是从main函数开始执行的 C程序书写格式自由 每个语句和数据定义后必须有一个分号 C语言本身没有输入输出语句 可以用/*.*/做注释,小结 2、C语言程序若干特点,C语言是一种函数式语言,其程序基本组成是函数 每个C程序必须有一个、也只能有一个主函数main 不管主函数在程序中的位置如何,程序执行总是从主函数开始 所有变量必须先定义(规定数据类型)后使用 每个语句必须用分号“;”结束(注意是“每个语句”而不“每行语句”) 编译预处理命令不是语句(行末不能用分号结束) C语言本身没有输入/输出语句,其功能须通过调用相关函数来实现 使用系统提供的标准库函数或其他文件提供的现成函数时,必须使用“文件包含”(除了printf和scanf语句)。,示例程序的完善,示例程序: #define PI 3.14159 #include #include main( ) float r,s; r=1.0; s=PI*pow(r,2); printf(“R=%f,S=%f n”,r,s); ,示例程序(求圆面积)有两 个不足: 如果要求多个半径r值时的面积s,每次都必须修改源程序并重新编译处理; 如果半径r为负值,也会有正常的s值输出。 为此,可将程序进行如下修 改:,#define PI 3.14159 #include #include #include main( ) float r,s; printf(“Input R=”); scanf(“%f ”, ,作业,已知圆的面积为S,求圆的周长,简单测试,设有以下定义 int a=0; double b=1.25; char c=A; #define d 2 则下列语句中错误的是( ) A) a+; B) b+; C) c+; D) d+;,简单测试,有以下程序 int ma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论