第一个C程序(2)

预编译语句#include

第一个程序中使用了一项功能,在屏幕窗口中显示字符串“Hello World"(当然也可以输出其他的包括特殊符号、中文等),这里涉及到操作硬件,其实是一项非常复杂的工作。但是屏幕输出、键盘输入等等功能又是常用的功能,要求初学者掌握这样的能力是不现实的。所以,系统提供了一些通用的功能,供大家调用。

当然,要使用这些功能,还是需要”付出代价的“,这就是#include语句的功能,包含:stdio.h这一个系统头文件(std-->标准  io---> 输入输出  标准输入输出头文件)。头文件的功能可以简单描述为提供功能共享的”菜单“,到饭店吃饭,当然先点菜!菜单上当然对每项菜品进行了描述!

包含了stdio.h头文件(拿到了菜单),就可以调用printf函数(点菜),该函数能够实现屏幕输出的功能。

结构化编程思想

”从顶而下,逐步求精“,”模块化编程“等等都是结构化编程的思想,虽然落后,很多概念还在经常使用。简单地来说,结构化编程可以理解为”没办法一口吃下一张饼,怎么办?切开了一块块吃!”问题来了:

1、依据什么来切?怎么切?切到什么程度?答案是按照功能切,切成一个个的“独立”功能的模块!一个复杂的图书管理系统,如何切成登录、验证、借书、还书等等独立功能,是不是压力小一点点?再说这些功能还能够进一步的细分!切到什么程度?达到功能独立,一般一个程序员能够完成的程度即可,应该是没有具体的标准。重点规则是:功能作为标准,保证独立

2、有什么好处?当然很多!首先是可以多个程序员合作每个人吃一块,合并起来就可以了,然后,功能独立可以减低程序的冗余,当然,调试也方便了!登录功能不正常,当然不会取借书等功能模块里找问题!

3、为什么不够?按照上面的介绍,结构化编程思想是非常符合程序开发的,它致命的弱点是只从功能着手(动作、行为、作用等等),而忽略了从数据(静态的属性,比如书价格、状态等等)分析系统的设计!面向对象编程则很好的解决了这个问题,这里不做深入探讨,只举一个例子,如果你想打篮球,是先考虑如何实现运球、投篮、传球等等行为呢(结构化编程),还是先设计出篮球、篮筐等等物品呢(面向对象)?篮球都没有,设计出一套动作?

功能模块

在程序设计中,功能模块称为函数,它到底是什么?

家里的电视机是不是一个功能模块?当然是,具备播放电视的功能!

它有四个要素:

1、名称(电视),函数名-----不能冲突,否则打架了!

2、输入(电源、电视信号等等),函数的参数

3、输出(电视画面),函数的类型(标准用语,可以理解为函数输出、返回)

4、从输入到输出的加工过程,函数体

这也是C语言中函数的四要素!

先说说函数的定义:其实就是实现了上面的四个要素,取一个名(标识符要求),定义它有什么输入(可以是多个或者没有),它有什么返回(只能是一个或者没有),最后完成函数体。这里可以看前面的例子:

int main()
{
    printf("Hello World!\n");
    return 0;
}

函数名:main    (函数名后跟一对小括号,可以理解为函数的标志,必须有!)

输入:没有

输出、返回(函数类型):int   整数类型   (后面讲)

函数体:一对大括号里面两行语句。

函数的调用,两个问题:

1、谁来调用程序的功能?当然是操作系统!双击QQ图标,就是告诉操作系统要运行QQ了,具体怎么运行,操作系统来完成!这点很重要,因为还存在一个返回的问题,谁调用,当然返回给谁!主函数里的return 0;也就是返回0给调用者操作系统了,为什么是0,不是其他的呢?可以这样理解,操作系统需要获取程序的运行状态,比如是否异常等等,而0则是正常结束。

2、怎么调用?操作系统当然可以获取程序的执行权(所有硬件软件资源都由它管理),但是没有一个预定,不知道从哪里开始执行,在C/C++控制台应用程序中,默认就是名称为main的函数,这个函数很特殊,称为主控函数(主函数 ),所以,一个程序中main函数必须有而且只能有一个!

C语言程序执行过程

回到项目,了解了结构化编程思想和函数相关的东西,就得整理一下C语言程序的执行过程了:

1、C程序由一个个的功能模块组成!外部提供的功能在链接过程中利用预编译语句导入;

2、有一个唯一的主控函数main是程序的入口,在它的函数体中依据需求对相应的功能模块进行调用,当然它只能被操作系统调用;

3、每个功能模块在调用时,被调用的功能模块活动进度,调用的功能模块则进入暂停状态,等待被调用功能的完成(异步调用除外),有点类似于学习过程中突然取接个电话;

4、其他功能模块不管有没有调用,主函数执行完毕程序就结束了。

从以上也可以得到一些拓展:

1、函数定义(自己写函数)需要完成四大要素的设计,尤其是函数体。但调用外部的功能模块(函数)只需要关注,它能够做什么,然后怎么调用它,函数体的具体实现不需要了解;

2、一个程序里可以定义很多个功能模块(函数),除主函数外它们应该属于语法平等的地位,也就是可以相互调用。

3、在一个程序中可以有很多个函数,可以把它们分布在许多个不同的CPP文件中。这类似于把不同的文件放到了不同的文件夹,为了解决不同CPP文件中函数的调用,可以把某个CPP文件中所有的函数申明统一放到对应的头文件中(.h)。

4、函数的申明是语句,其实就是把函数定义中的函数名、参数、类型三大要素提取出来。为尽快掌握C语言程序设计,函数定义、函数申明、函数调用,这些概念还是需要做一个初步了解,比较函数是C语言程序的基本组成。

语法干货

1、C语言程序的基本组成是函数;

2、预编译语句是编译链接的时候执行的,它在程序运行前;

3、每个程序有一个唯一的main主控函数(有很多种写法);

4、每行语句(暂时理解为函数体里)都以分号结束;

5、程序从main函数开始执行(也不一定!)到最后一行代码结束;

6、C语言有自己的字符集(语法上可以用的符号),并且严格区分大小写;

7、标识符是用来取名字的,比如函数名,变量名等等,规则有:必须由字母数字下划线组成;必须由字符或者下划线开头;不能冲突(不能用系统保留的关键字、不能在同一作用域内与其他符合冲突)

8、注释是用来阅读程序的,没有具体的程序功能(编译运行过程种忽略),C/C++有行注释和块注释,//是行注释,注释本行中后面的内容      /*     */  斜杠*之间是块注释

9、程序书写过程中,要注意空格、换行、TAB等分割符的使用,原则是引起歧义的肯定要分开,一个空格和多个空格语法意义一样,比如  int a;  a与前面的int分开

10、一行可以写多行代码,一行代码也可以分多行写(字符串需要符号 \ 来接上一行 )

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值