C语言(一)背景,Hello world

1.1.1 计算机和编程语言

学习目的:理解计算机是怎样工作的
计算机是生活中的必需品。 如果我们想要自己设计一些功能和行为,让计算机按照自己的意图做事,就需要写程序了。
本课程的主要目的是通过学习编程,来理解计算机是如何解决问题,计算机的能与不能,pros and cons.
计算机怎样解决问题?把大问题拆分成小问题分步进行
人:what to do。比如告诉同桌开一下灯,他去把灯打开。
计算机:how to do。同桌不知道如何开灯,你要和他说:走到开关前,按下开关,走回来……
程序是用特殊的编程语言写出来表达如何解决问题的。
我们不是在用编程语言和计算机交谈,而是要求它如何做事情,向它描述做事情的过程和方法。

//例:hello world!
#include<stdio.h>
int main()
{
	printf("Hello World!\n");//输出“Hello World!(换行)”引号内的部分
	return 0;
}

普通人能读懂的东西→程序员能懂的东西→计算机能懂的东西
计算机程序算法

(算法:我们想让计算机做计算,先要写出计算的步骤,然后用编程语言写出来。计算机做的所有事情都是计算;计算的步骤就是算法。)

1.1.2 计算机的思维方式

例:解方程2x+6=20 , x∈(1,10)直接解方程对计算机来说太难理解了。
计算机的思维:

  1. 枚举法
    代入x=1,不行;代入x=2,不行;代入……
  2. 二分法
    代入x=5,小了;代入x=7……

计算机执行程序有两种方案:

  1. 解释:借助一个程序,那个程序可以试图理解你的程序,然后按照你的要求执行
  2. 编译:借助一个程序把你的程序翻译成机器语言写的程序,然后计算机就可以直接执行了。

解释语言vs编译语言:语言本无解释与编译之分,只是常用的执行方式不同。
解释型语言有特殊的计算能力;
编译型语言有确定的运算性能。

1.2.1 为什么是C?

语言排行
在这里插入图片描述

  1. 在很多场合,C语言是唯一的选择
  2. 现代编程语言在语法上差异很小,基本都和C接近
  3. 语言的能力、适用领域主要是由 传统 决定的。

1.2.2 简单历史

1969诞生。
FORTRAN→BCPL→B语言→C语言

1967年,剑桥大学的 Martin Richards 对CPL语言进行了简化,于是产生了BCPL(Basic Combined Pogramming Language)语言。
1970年,美国贝尔实验室的 Ken Thompson。以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。并且他用B语言写了第一个UNIX操作系统。
在1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了C语言。

因为B和BCPL都支持指针间接方式,所以C语言也支持了。
C语言还受到了PL/I(和底层系统很接近,可以拿来做操作系统等)的影响,还和 PDP-II的机器语言有很大关系
1973/3,第三版的Unix上出现了C语言的编译器
1973/11,第四版的Unix完全用C语言重新写的。
经典C,又叫K&R the C
经典C,又叫K&R the C
1989年,ANSI发布了一个标准:ANSI C
1990年,ISO接受了ANSI的标准:C89
C的标准在1995年和1999年两次更新:C95和C99。现在的编译器都基于C99了,因此本课程也是。

1.2.3 编程软件

C语言的用途:写操作系统、嵌入式系统、驱动程序(用来驱动U盘)、底层驱动、图形引擎、图像处理、声音效果(直接给我们提供数据的代码不是用C语言写的)一些底层的东西。
C语言是一种工业语言,由基础人员使用。所以:
开发效率>>学习过程
开发效率>>开发乐趣

而在日常的应用中,很少直接用C语言编写。学习C的过程主要是写练习代码,而不是写真实软件。
C语言需要被编译才能运行,所以需要:编辑器和编译器
(或者IDE,Integrated Development Environment集成开发环境,一个顶俩)
推荐的编程软件:Dev C++。免费,安装简单,还不用建工程。
在这里插入图片描述

1.3.1 第一个C程序

在Dev C++中:文件->新建->源代码

输入之前确保是英文输入!!!
#include<stdio.h>
int main()
{
	printf("Hello World!\n");
	return 0;
}

梦开始的地方。
可以先自己敲进去运行玩玩
**上端显示星号,说明没有保存。Ctrl + S 保存并且记得选择.c格式。
编译之后再运行。**运行后出现黑色的终端,上面显示了结果。

1.3.2 详解第一个C程序

#include<stdio.h>
int main()
{
	
	return 0;
}

本课程中所有的程序都需要用到这一段框架(直到学函数之前)
printf()会把" "内的内容(字符串)原封不动地输出,\n表示换行。
如果出现编译错误,会在下面用红色的error显示出来,而具体错误原因在下方窗口里。

1.3.3 做一些计算

printf("%d",23+43);

%d是占位符,说明后面会有一个整数输出到这个位置上。

printf("23+43=%d",23+43);
四则运算C符号意义
++
--
×*
÷/
%取余
( )( )括号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

灰海宽松

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

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

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

打赏作者

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

抵扣说明:

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

余额充值