1、为什么学习C语言
1)C语言的起源与发展
第一代语言是机器语言(1、0二进制)如0000 0001 1101 10000
第二代语言是汇编语言(把0101此类二进制代码翻译成一些英文单词(对应二进制指令) (ADD AX,BX)
第三代高级语言 (以八十年代分界线,因为结构化的语言有缺陷,后有面向对象的)
形如a+b
Fortran(应用于科学实验) | Basic(微软) |
C(结构化语言) | Pascal(用于教学,数据结构(10年前) |
Algo | simula67 |
Ada | SmallTalk |
C++(最复杂的) | C++学好了,其他都没什么问题了 |
Java(对C++进行改装而成) | C#(和JAVA一个平台的语言,语法差不多二学一即可) |
汇编语言将机器语言翻译为英文,而高级语言更智能化但速度最慢并不能被直接执行,机器语言最快,其次汇编语言,最慢是高级语言。高级语言中C语言最快,其次C++,然后是JAVA和C#)
横轴为二十世纪时间表,此表是依据时间顺序出现的编程语言,以及语言间的发展关系和关联度。以C语言所在轴进行展开,CPL编写硬件比较方便,但功能不够强大,对其进一步简化,产生了BCPL(B是指简化),1970年左右又产生了B语言(B语言创始人据此写出了世界上第一个操作系统UNIX,用于大型机商务场所里),C语言是B语言的改版(C语言创始人和B语言创始人是同事,一起利用C语言改写了UNIX系统第五版,这个系统的应用也是C语言流行起来的原因),C++是另外一个人写的(是C语言创始人的下属,都是贝尔实验室的),某公司又对C++进行改写产生了JAVA,C#和JAVA的语法高度相似。C语言绝大部分知识(函数与指针必学,学了才会知道其他语言这方面的不同)都在C++的学习中得到应用。
linux(c),windows(c),unix(c)
2)C的特点
优点是代码量小,速度快,功能强大(许多操作系统和软件是C语言写的,C可以仿硬件)
缺点是危险性高,开发周期长(写大项目容易崩溃),可移植性不强
3)C的应用领域
系统软件开发
操作系统:Windows、Linux、Unix
驱动程序:主板驱动、显卡驱动、摄像头驱动
数据库:DB2,Oracle,Sql Server
应用软件开发
办公软件:Wps
图形图像多媒体:ACDSee, Photoshop,Mediaplayer
嵌入式软件开发:智能手机、掌上电脑
游戏开发:2D、3D游戏
4)C的重要性
有史以来最重要的语言
所有工科大学生和理科生必修课程
最重要系统软件:windows、Linux、unix均使用C语言开发
一名合格黑客必须掌握的语言
任何想要从事程序设计和开发人员必须掌握的语言
大企业、外企招聘程序员必考的语言
为学习数据结构、C++、JAVA、C#奠定基础
2、怎样学习C语言
每一讲分四节课
前两节为理论课,讲授理论知识
后两节课为上级课,在机房完成当堂训练(自学的用自己设备跑)
途径:多思考、多上机(多问问题,查帖子和问代码能力较强的AI)
目标:能看懂程序、能调试程序、自学能力要很强
3、学习的目标
1、了解程序语言及发展历史
2、熟练掌握C语言的语法规则
3、掌握简单算法(解题的方法和步骤)
4、理解面向过程的思想,这非常有助于将来面向对象思想的学习
- 能看懂程序
- 会调试程序
- 掌握将大问题转化为一系列小问题来求解的思想
5、为学习C++、数据结构、C#、JAVA打下良好的基础。
4、常见问题答疑
1、学习JAVA为什么要先学C语言?
学C就是在学 JAVA,因为C语言至少80%的语法知识都被JAVA继承过来了。
C是面向过程语言的代表,学好C有助于学习JAVA中面向对象的思想。
学好C中的指针是理解JAVA中引用的基础!如果不懂指针就不可能对JAVA中的引用有深刻的理解,而引用是JAVA中一个最基本但又十分重要的概念。
2、没学过计算机专业课程能够学懂C语言
郝老师课程解决该忧虑。
3、英语和数学不好能学好C么?
基本没关系,但懂英语更好
C语言组成——关键字
auto(自动) | break(终止) | case(案件) | char | const(常量) |
continue(继续) | default(默认) | do(做) | double(双) | else(否则) |
enum | extern(额外的) | float(浮点型) | for(为了) | goto(去) |
if(如果) | int(整数) | long | register | return |
short | signed | sizeof | static | struct |
switch | typedef | unsigned | union(联合) | void |
volatile | while(当) |
课程大纲
举例子——一元二次方程
# include <stdio.h>
#include <math.h>
int main(void)
{
//把三个系数保存到计算机中
int a=1;//=不表示相等,表示赋值
int b=2;
int c=1;
double delta;//delta存放的是b*b-4*a*c
double x1, x2;//存放一元二次方程的两个解
delta = b * b - 4 * a * c;
if (delta> 0)
{
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("该一元二次方程组有两个解,x1=%f,x2=%f\n", x1, x2);
}
else if (delta == 0)
{
x1 = x2 = (-b) / (2 * a);
printf("该一元二次方程有一个唯一解,x1=x2=%f\n", x1);
}
else
{
}
return 0;
}
运行结果
# include <stdio.h>
#include <math.h>
int main(void)
{
//把三个系数保存到计算机中
int a=1;//=不表示相等,表示赋值
int b=5;
int c=1;
double delta;//delta存放的是b*b-4*a*c
double x1, x2;//存放一元二次方程的两个解
delta = b * b - 4 * a * c;
if (delta> 0)
{
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("该一元二次方程组有两个解,x1=%f,x2=%f\n", x1, x2);
}
else if (delta == 0)
{
x1 = x2 = (-b) / (2 * a);
printf("该一元二次方程有一个唯一解,x1=x2=%f\n", x1);
}
else
{
}
return 0;
}
运行结果