1、进制

什么是进制?有什么用?
二进制,八进制,十进制,十六进制怎么相互表示和相互转换?

作业:十六进制0xff用十进制表示,等于多少?用二进制表示等于多少?
十进制29用十六进制表示,等于多少?用二进制表示,等于多少?
二进制1011 1010用十六进制表示,等于多少?用十进制表示,等于多少?

2、变量
什么是变量?
变量有什么类型?
每个类型的变量,范围是多少,这里只针对C51里面的变量范围。
int 类型
unsigned int类型
char类型
unsigned char 类型
float 类型
作业,
定义一个变量,要求该变量能容纳30000的数值。
定义一个浮点数,要求该变量可以容纳正负的小数数值。

不同变量之间,假如不注意,相互转换,会发生什么效果?编程测试一下。
比如定义一个变量int a,float b
float b=125.652;
int a=100;
a=b*10;
那么a=多少?
强制类型转换相关知识点。
2.1
一些运算符和优先级

3、数组(先不写,学,后面自学)
数组的定义
一维数组
二维数组
数组的初始化
数组的赋值
数组的遍历。

思考,假如我有12个数值,让某个变量不断的得到改变,比如一天12小时,有一个变量a,会根据实际的时间,得到不同的时间数据,那么就可以定义一个数组,里面放小时的数据,怎么处理?

4、流程控制第一个,选择if–else
实际场合。
比如成绩,假如成绩大于60分,是及格,小于60分,是不及格。那么可以有。假如张三成绩是62分,打印出他是成绩及格还是不及格,电脑需要判断。
可以这么写
float n=62;
if n>60:
print(及格)
else
print(不及格)
上面就是两个判断。
具体的语法特征,就需要看具体的编程语言了。
我们的是C语言,看C语言相关章节的知识点,就可以了。

有些场合,需要多重判断。
比如有一科目语文,高于90分,是优秀,80—90是良好,70-80是中,60-70是及格,小于60是不及格。
那就有多个选择,假如张三成绩是80分,需要打印出他等级,那么就要判断。
可以这么写
float a=80;
if(a>90)
print(“1”);
else if(a<90 && a>80)
print(“2”)
else if(a<80 && a>70)
print(‘3’)
else if(a<70 && a>60)
print(‘4’)
else if(a<60)
print(“5”)
上面是属于多重选择的情况。

还有一种情况,是判断的嵌套。
比如在一个大类里面,有多个子类1,在子类1里面有多个子类2.
比如
if(a>90)
{
if(a>90&&a<100)
print(xxxxxx)
else if(a>100 && a<120)
print(xxxureoiwe)
}
else
{
if(a<90 &&a>80)
print cccalfda ;
else if(a<80 && a>70)
print xxxxxxxxxxxxx
}
这个逻辑,就在大类里面,分了两个小类。
判断之后,再继续判断,就叫做循环的嵌套咯

5 流程控制第二个,switch —case

有时候觉得if else写起来有点不舒服,不好判断。
那么可以用switch case
比如,有个成绩n=80
float a=80;
switch(a)
{
case 80:
print 成绩是80
break
case 90:
print 成绩是90
break
default :
print 成绩两个都不是
break
}

这么一写,就觉得舒爽多了。但是也看实际的场合。

6、流程控制语句 for循环

有时候,我们需要多次重复的执行一个动作,比如开枪,一枪一枪开,直到子弹用完。子弹用完,是重复的终止条件。所以循环,也需要一个终止条件,如果没有终止条件,就会进入死循环里面。
我们举一个例子,
一个变量i ,不断打印十次i的数值。i每次都变化加1,当i大于10的情况,就停止打印。
int i=0;
for(i=0;i<10;i++)
{ print i;}
上面的函数,具体的语法特征,也是需要看c语言对应的书本的内容。
解读一下,定义一个变量i=0
i<10是判断的终止条件。当i<10条件为真,那么就继续执行花括号内部的语句,没执行一次花括号内部的程序,之后,就i++,i自加1,相当于i=1,再判断一次i=1<10是不是成立,这样不断的执行,判断,i+1,这样就执行了10次。

再举一个例子。让一个LED灯闪烁3次,停止。
可以这么写。
int i=0;
for(i=0;i<3;i++)
{
LED亮;
延时一下;
LED灭;
延时一下;
}
这样,就会看到LED灯会反复的点亮一段时间,之后灭掉,之后再亮,直到i<3不成立。

上面的两个例子,for是单重循环,花括号内部的东西,叫做循环体。在循环体内部,可以再做N个循环,
这个就叫做循环的嵌套。
比如
我们写一个延时函数
int a=10;
int b=20;
for(a=0;a<10;a++)
{
做一个动作A;
for(b=0;b<50;b++)
{
做动作B
}
}
那么动作A执行10次,动作b会执行1050次,因为每次进入一次循环体,就执行50次B.
动作A
动作B
动作B。。。总共50次
动作A
动作B
动作B
、、、50次
动作A.
cccccccccc这样,动作A做了10次,动作B就做了10
50次。

7、循环控制语句while
有时候while也用来做循环,英文意思我们知道while是当什么什么的意思。
我们举例说一下
int a=10
while(a>0)
{
动作A;
a=a-1;
}
while括号内部的语句,就是判断语句,如果成立,那么执行括号里面的循环体,动作A,然后a自减一,得到9,
再判断9>0是不成立,如果成立,执行里面的东西。
再一次自减一,a=8
判断a>0是不成成立
。。。。
也起到循环的效果。。

同理,while循环里面,也能放另外的循环,起到循环的嵌套的效果。

8、函数
有时候,有些动作需要多次重复执行,你可以把这些动作打包,封装成一个函数,那么每次调用,就方便多了,自己能根据实际的情况,使用这个函数弹药包。
比如延时函数,我们经常用到,那么可以把延时函数封装起来,延时1s,那么每次调用,就会执行一次。
举一个例子。
void delay1S()
{
int i=0;
for(i=0;i<100;i++)
{}
}
int main()
{
int a=0;
for(a=0;a<10;a++)
{
delay1S();
}
}
上面例子,前面的是函数的定义,我们要使用函数,必须先定义好函数,如果别人没有的话,我们就要定义制造一个弹药库,来使用。
如果别人有,我们就引用别人的就好了。
这样,就方便多了,每次需要延时1S的时候,我们就用这个函数。

但是有时候我们需要每次延时10秒
那么我们可以这么写,多一个形参
void delay(int ts)
{
int i;
for(i=0;i<1000;i++)
{}
}
int main()
{
int a;
for(a=0;a<10;a++)
{
delay(10);
}
}
上面这个int ts,括号内部这个,叫做形式参数,当我们使用的时候,我们传一个数据进去,就方便多了。如果我们传100,那么就是每次延时100秒。

有时候一个形式参数还不够,需要多形式参数,外部传入两个,三个数据。
比如我们定一个一个加法
int jiafa(int x,int y)
{
int z;
z=x+y;
return z;
}
void main()
{
int a=10;
int b=100;
int result;
result=jiafa(a,b);
print result;
}
我们将a和b两个传进去,然后那个加法函数返回一个计算的结果,这个要注意,前面的void成了 int,这个是返回的数值,和result接收的数的类型一样。

这样,我们基本知道了函数的定义,函数的调用。

10、变量的作用域
上面的例子看到,当有很多个函数,里面都定义了一个变量名字是a,那么会不会冲突的?
实际上,那个是局部变量,只在自己的函数里面起到作用。
当用完这个函数,那个变量就不存在了。

如果我们想用一个变量,所有的函数都用,那么怎么办的,我们叫那个变量是全局变量。

很简单,我们把那个变量,放在主函数外面,所有函数外面定义就好了。
比如
#include <stdio.h>
int a=10;
void delay()
{
a=100;
}
void main()
{
a=200;
delay();
}
这样,所有的函数都可以使用这个变量a,但是要注意,这个变量所有都能用,那么他最后的数据结果是什么。
上面的例子,a首先定义的时候,赋予初值=10,
主函数先执行,a=200,然后调用delay函数,所以a最后等于a=100。

12、宏定义
我们看程序的时候,经常看到宏定义
#define PI 3.1415926
比如这个,因为3.1415926我们经常用到,所以我们用PI这个名字来顶替,那么后面所有用到的,我们都用PI来使用,那就方便多了,而且容易记住。

所以宏定义很多时候会用到。

更多知识点看C语言的书本。