《C语言程序设计》课件-第1章 C语言概述_第1页
《C语言程序设计》课件-第1章 C语言概述_第2页
《C语言程序设计》课件-第1章 C语言概述_第3页
《C语言程序设计》课件-第1章 C语言概述_第4页
《C语言程序设计》课件-第1章 C语言概述_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计智能工程学院“现场课程”

C语言的发展1.1

C程序的开发步骤1.4

C语言的特点1.2

第一个C语言程序1.3目录CONTENTS机器语言是计算机能直接识别执行的最低级语言,由二进制0和1构成指令,与硬件架构紧密关联,无需编译,但难读难写,可移植性差。机器语言阶段

汇编语言用助记符替代机器语言的二进制指令,与机器语言一一对应,需汇编器转换为机器码,仍依赖硬件架构,比机器语言易读,常用于底层开发。汇编语言阶段

1.1

C语言的发展高级语言是面向问题和开发者的编程语言,语法接近自然语言与数学逻辑,脱离具体硬件架构。需经编译或解释转为机器码执行,易学易用,可移植性强。涵盖C语言、Python、Java等多种类型,广泛应用于应用程序、网站等各类软件开发,大幅提升编程效率。汇编语言阶段C语言的诞生并非偶然,而是为解决特定技术痛点——早期操作系统(如UNIX)开发的效率问题。其起源与贝尔实验室(BellLabs)的项目紧密相关:前身:B语言的局限20世纪60年代,贝尔实验室的肯・汤普森(KenThompson)

为开发UNIX操作系统,基于更早的“BCPL语言”简化出B语言(1969年)。但B语言是“无类型语言”(仅支持word一种数据类型),无法高效处理内存细节,且仅适配DECPDP-7小型机,通用性差。C语言的诞生(1972-1973)1972年,汤普森的同事丹尼斯・里奇(DennisRitchie)

为适配更强大的DECPDP-11小型机,在B语言基础上进行两大关键改进:引入数据类型(如int、char、float),支持对内存的精细化控制;增加指针特性,直接操作内存地址,满足系统编程对硬件的底层访问需求。1973年,里奇用新语言重写了UNIX内核,该语言被正式命名为“C语言”(取B语言的下一个字母,也暗示其对B的“继承与优化”)。早期定位:系统级开发工具最初C语言仅用于UNIX系统开发,但因其“高效、简洁、可移植”的特性,逐渐被用于编写编译器、数据库、嵌入式系统等对性能要求极高的场景。

1.1

C语言的发展简洁C语言只有37个关键字、9种控制语句,对一切不必要的成份进行了压缩。C语言表达方法简洁,使用一些简单的方法就可以构造出相当复杂的数据类型和程序结构。灵活C语言的语法限制不太严格,程序设计的自由度比较大,程序的书写格式与变量的类型使用都很灵活,如整型数据、字符型数据和逻辑型数据可以通用。

1.2C语言的特点功能丰富C语言具有丰富的数据类型,包括整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型、枚举类型等。C语言还具有34种运算符,灵活使用各种运算符可以实现其他高级语言难以实现的运算。模块化和结构化C语言用函数作为程序模块,以实现程序的模块化;C语言具有结构化的控制语句,如if…else语句、while语句、do…while语句、switch语句和for语句等。

1.2C语言的特点具有低级语言的功能C语言虽属高级语言,却具备诸多低级语言功能。它允许直接操作内存,通过指针直接访问和修改内存地址,实现对硬件资源的精细控制。支持位运算,能按二进制位对数据进行操作,便于处理硬件寄存器等底层数据。可嵌入汇编代码,在关键性能模块直接使用汇编指令,兼顾高级语言的便捷与低级语言的高效。其编译生成的目标代码精简,执行效率接近汇编语言,能直接与操作系统内核及硬件设备交互,因此广泛用于编写操作系统、驱动程序等底层软件,体现出显著的低级语言特性。

1.2C语言的特点

执行效率高C语言生成的目标代码质量高,程序执行效率高。C语言一般只比汇编程序生成的目标代码效率低10%~20%。可移植性好C语言是通过编译和连接来得到可执行代码的,由于C语言的编译系统相当简洁,因此很容易移植到新的系统。提示这一节的内容相对比较抽象和不好理解,读者待学习完这本教材后再来回顾一下,会有更好的领悟。

1.2C语言的特点1.3.1最简单的C语言程序结构同学们刚开始接触C语言,下面我们以一个简单的例子说明C程序的基本结构。【例1-1】只有一行输出的C程序。/*显示"欢迎您学习C语言!"*//*注释*/#include<stdio.h> /*编译预处理命令*/intmain(void) /*定义主函数main()*/{printf("欢迎您学习C语言!\n");/*调用printf()函数输出文字*/ return0;/*返回一个整数*/}

1.3

第一个C语言程序1.3.1最简单的C语言程序结构【运行结果】程序运行结果如图所示。【程序说明】该程序运行结果的第1行是程序运行后输出的结果,第2行是任何一个C程序在VisualC++6.0环境下运行都会自动输出的一行信息,告诉用户:“如果想继续,请按任意键”。当用户按任意键后,屏幕上不再显示运行结果,返回程序窗口。

1.3

第一个C语言程序1.3.1最简单的C语言程序结构例1-1的程序是一个由头文件和主函数组成的简单C语言程序,下面分别解释一下各行程序的意义。第1行:#include<stdio.h>C语言中的预处理指令,作用是将标准输入输出库(stdio.h)的内容引入当前程序。stdio.h是StandardInputOutputHeader的缩写,包含了一系列用于输入输出操作的函数声明,比如常用的printf()(输出)、scanf()(输入)、fopen()(文件操作)等。程序在编译前,预处理器会将该头文件的内容替换到这条指令处,让编译器能识别并正确后续代码中使用的输入输出函数。第2行:intmain(void)C语言程序的主函数声明,是程序执行的入口点:int表示函数返回值类型为整数,通常用于向操作系统返回程序执行状态(0表示正常结束)。main是C语言规定的主函数专用名称,程序启动后会首先执行此函数。(void)说明该函数不接受任何参数,明确表示无需传入参数。整个程序的逻辑从main函数开始执行,其执行完毕意味着程序结束。

1.3

第一个C语言程序1.3.1最简单的C语言程序结构这对花括号{}包裹的是main函数的函数体,包含具体执行的代码:printf("欢迎您学习C语言!\n");是输出语句,printf函数从标准输入输出库(stdio.h)中引入,作用是在屏幕上打印双引号中的内容。\n是转义字符,表示换行。return0;表示函数执行结束并返回整数0。在C语言中,主函数返回0通常表示程序正常运行结束,非0值一般代表异常状态,供操作系统判断程序执行结果。整个代码块的功能是:程序运行后在屏幕上输出"欢迎您学习C语言!"并换行,然后正常结束程序。在程序各行的右侧都可以看到一段关于这行代码的文字描述(用/**/括起来),称为代码注释。其作用是对代码进行解释说明,为日后自己阅读或者他人阅读源程序时方便理解程序代码含义和程序设计思路。

1.3

第一个C语言程序第3行到第6行:{printf("欢迎您学习C语言!\n"); return0;}

02011.3.1最简单的C语言程序结构通过对例1-1的介绍,我们可以看到一个C语言程序的结构主要有以下特点:程序入口唯一:必须包含且仅包含一个main函数,作为程序执行的起始点。函数化组织:程序由一个或多个函数构成,函数是功能实现的基本单元,包含函数声明、参数、函数体(用{}包裹)和返回值。

1.3

第一个C语言程序1.3.1最简单的C语言程序结构03预处理指令:开头通常有#include(引入头文件)、#define(宏定义)等预处理指令,在编译前处理。04语句分号结束:每条可执行语句以分号;结尾,逻辑块用{}划分作用域。

1.3

第一个C语言程序06051.3.1最简单的C语言程序结构声明在前:变量需先声明后使用,函数需声明或定义后调用,体现结构化程序设计的严谨性。必要注释:一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。

1.3

第一个C语言程序1.3.1最简单的C语言程序结构

知识库C语言允许用两种注释方式:1.单行注释:以//开头,从//到本行末尾的内容均为注释,不会被编译执行,常用于简短说明。2.多行注释:以/*开头、*/结尾,中间可包含多行内容,适用于对复杂代码块的详细说明。注意不可嵌套使用。注释不影响程序运行,用于提高代码可读性。

1.3

第一个C语言程序1.3.2C语言程序的格式特点通过上面的实例可以看出,C语言编写有一定的格式特点,具体如下:1.花括号划分块结构:{}用于包裹函数体、循环体、分支体等,明确逻辑范围,不强制换行但通常配合缩进使用。2.分号作为语句结束符:每条可执行语句必须以;结尾,这是语法强制要求。3.缩进无语法约束但影响可读性:缩进仅为增强代码层次(如if、for内代码缩进),编译器忽略,但良好缩进是编程规范。

小技巧在编写程序时,为了防止对应大括号的遗漏,建议先将两个对应的大括号输入程序中,再往括号中添加代码。

1.3

第一个C语言程序1.3.2C语言程序的格式特点

1.3

第一个C语言程序4.空格与换行的灵活性:关键字与标识符间需空格分隔(如inta),但语句可跨多行书写,编译器仅通过分号和括号识别结构。5.C程序书写格式自由,一行内可以写多个语句,一个语句可以分写在多行上。但为了有良好的编程风格,最好将一条语句写在一行。

小技巧代码缩进统一为4个字符。建议不使用空格,而用【Tab】键,如例1-1中的第4行和第5行。例如,以下程序完全是正确的,但是由于书写格式不规范,因而不利于阅读和理解,应参照例1-1的格式来进行书写。#include<stdio.h>intmain(void){printf("欢迎您学习C语言!\n");return0;}需求分析是开发前的关键步骤,指通过调研、梳理和明确用户或实际场景对程序的具体要求。包括确定程序需实现的功能(如计算、数据处理、交互等)、性能指标(如运行速度、内存占用)、输入输出格式、适用环境及可能的约束条件(如硬件限制、兼容性要求)。其目的是为后续设计和编码提供清晰依据,避免开发偏离实际需求。需求分析算法设计是指在编码前,针对需求分析确定的功能目标,设计解决问题的具体步骤和逻辑流程。它需明确数据的处理方式、操作顺序、条件判断、循环逻辑等,用自然语言、流程图或伪代码等形式描述,不依赖具体语法。好的算法设计能确保程序高效、简洁地实现功能,是C语言开发中连接需求与编码的核心环节,直接影响程序性能和可维护性。算法设计121.4C程序的开发步骤编写程序指的是使用C语言的语法规则,将算法设计阶段确定的解决思路转化为计算机可识别的代码。文件用.c作为后缀,如file.c。编写程序编译程序指的是使用编译器(如GCC、Clang等)对C语言源代码(.c文件)进行处理的过程。编译器会将人类可读的C语言代码转换为计算机可直接执行的机器语言(二进制指令),生成目标文件(通常为.o或.obj格式)。编译过程会进行语法检查、词法分析等,若代码存在语法错误,编译器会报错并终止编译,需修正后重新编译。编译程序341.4C程序的开发步骤链接程序(Linker)是软件开发中的关键工具,主要作用是将编译生成的目标文件(.o/.obj)、库文件等组合起来,生成可执行文件。它解决不同文件间的符号引用(如函数调用、变量引用),确定各部分在内存中的地址,去除重复代码,并将程序依赖的库函数实现整合进来,最终形成操作系统可直接加载执行的文件(如.exe)。链接过程确保程序各模块能正确协作,是从源代码到可运行程序的最后一步关键处理。链接程序

提示编译程序时显示的错误信息是寻找错误原因的重要信息来源,同学们要学会看这些错误信息,并且每一次碰到错误并且最终解决了错误时,要记录错误信息以及相应的解决方法,这样以后再看到类似的提示信息就能够熟练反应出是源程序哪里出现了问题,从而提高程序调试效率。51.4C程序的开发步骤运行程序指的是执行链接阶段生成的可执行文件(如Windows的.exe、Linux/macOS的无后缀可执行文件),让计算机按照程序代码逻辑完成指定任务的过程。具体来

温馨提示

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

评论

0/150

提交评论