C语言入门——初识C语言

  • 一. C语言的起源
  • 二. 选择C语言的原因
    • (一). 设计特性
    • (二). 高效性
    • (三). 可移植性
    • (四). 强大而灵活
    • (五). 面向程序员
    • (六). 缺点
  • 三. C语言的应用范围
  • 四. 计算机能做什么
    • (一). 现代计算机构成
    • (二). CPU工作原理
    • (三). 计算机的工作原理
  • 五. 高级计算机语言和编译器
  • 六. 语言标准
    • (一). 第1个ANSI/ISO C标准
    • (二). C99标准
    • (三). C11 标准
  • 七. 使用C语言的7个步骤
    • (一). 第1步:定义程序的目标
    • (二). 第2步:设计程序
    • (三). 第3步:编写代码
    • (四). 第4步:编译
    • (五). 第5步:运行程序
    • (六). 第6步:测试和调试程序
    • (七). 第7步:维护和修改程序
  • 八. 编程机制
  • 九. 本章小结
  • 十. 复习题
    • 1. 对编程而言,可移植性意味着什么?
    • 2. 解释源代码文件、目标代码文件和可执行文件有什么区别?
    • 3. 编译器的任务是什么?
    • 4. 链接器任务是什么?
  • 十一. 编程练习
    • 1. 你刚被 MacroMuscle 有限公司聘用,该公司准备进入欧洲市场,需要一个把英寸转换成厘米(lin=2.54cm)的程序。该程序需要提示用户输入英寸值。你的任务是定义程序目标和设计程序(编程的第 1 步和第2 步)。

本文仅为个人学习记录,不建议阅读
本文主要根据异步图书C Primer Plus一书进行学习

一. C语言的起源

1972年,贝尔实验室的丹尼斯·里奇Dennis Ritch)和肯·汤普逊Ken Thompson)在开发UNIX操作系统时设计了C语言。

二. 选择C语言的原因

主要具有以下四个优点:

强大的控制结构
快速
代码紧凑——程序更小
可移植到其他计算机

(一). 设计特性

C是一门流行的语言,融合了计算机科学理论和实践的控制特性。
C语言的设计理念让用户能轻松地完成自顶而下的规划、结构化编程和模块化设计。因此,用C语言编写的程序更易懂更可靠

(二). 高效性

C是高效的语言。在设计上,它充分利用了当前计算机的优势,因此 C 程序相对更紧凑,而且运行速度很快

C 语言具有通常是汇编语言1 才具有的微调控制能力,可以根据具体情况微调程序以获得最大运行速度或最有效地使用内存。

(三). 可移植性

C 是可移植的语言。

这意味着,在一种系统中编写的 C 程序稍作修改或不修改就能在其他系统运行。

如需修改,也只需简单更改主程序头文件中的少许项即可。

(四). 强大而灵活

C语言功能强大灵活(计算机领域经常使用这两个词)。

C语言除了编写一些解释器和编译器外,还可以用于解决物理学和工程学的问题,甚至可用于制作电影的动画特效。

(五). 面向程序员

C 语言是为了满足程序员的需求而设计的,程序员利用 C 可以访问硬件操控内存中的位

C 语言有丰富的运算符,能让程序员简洁地表达自己的意图。

(六). 缺点

要享受用 C 语言自由编程的乐趣,就必须承担更多的责任。

C 语言紧凑简洁,结合了大量的运算符。正因如此,我们也可以编写出让人极其费解的代码。

三. C语言的应用范围

无论是软件公司、经验丰富的C程序员,还是其他用户,都能从C语言中受益。

四. 计算机能做什么

在学习如何用C语言编程之前,最好先了解一下计算机的工作原理

(一). 现代计算机构成

中央处理单元CPU)——承担绝大部分的运算工作。

随机存取内存RAM)——是存储程序和文件的工作区。

永久内存存储设备 ——过去一般指机械硬盘,现在还包括固态硬盘。

一些外围设备——键盘、鼠标、触摸屏等。

(二). CPU工作原理

CPU 的工作非常简单,它从内存中获取并执行一条指令,然后再从内存中获取并执行下一条指令。

CPU有自己的小工作区——由若干个寄存器组成,每个寄存器都可以储存一个数字。
一个寄存器储存下一条指令的内存地址,CPU 使用该地址来获取和更新下一条指令。
在获取指令后,CPU在另一个寄存器中储存该指令,并更新第1个寄存器储存下一条指令的地址。
CPU能理解的指令有限(这些指令的集合叫作指令集)。
而且,这些指令相当具体,其中的许多指令都是用于请求计算机把一个数字从一个位置移动到另一个位置。
例如,从内存移动到寄存器。

(三). 计算机的工作原理

如果希望计算机做某些事,就必须为其提供特殊的指令列表(程序),确切地告诉计算机要做的事以及如何做。
你必须用计算机能直接明白的语言(机器语言)创建程序。

五. 高级计算机语言和编译器

高级编程语言以多种方式简化了编程工作。
首先,不必用数字码表示指令;
其次,使用的指令更贴近你如何想这个问题,而不是类似计算机那样繁琐的步骤。

使用高级编程语言,可以在更抽象的层面表达你的想法,不用考虑CPU在完成任务时具体需要哪些步骤。

编译器是把高级语言程序翻译成计算机能理解的机器语言指令集的程序。
程序员进行高级思维活动,而编译器则负责处理冗长乏味的细节工作。

简而言之,高级语言以更抽象的方式描述行为,不受限于特定CPU或指令集。
而且,高级语言简单易学,用高级语言编程比用机器语言编程容易得多。

六. 语言标准

与大多数语言不同的是,C语言比其他语言更依赖库,因此需要一个标准库。
实际上,由于缺乏官方标准,UNIX实现提供的库已成为了标准库。

(一). 第1个ANSI/ISO C标准

1.信任程序员;
2.不要妨碍程序员做需要做的事;
3.保持语言精练简单;
4.只提供一种方法执行一项操作;
5.让程序运行更快,即使不能保证其可移植性。

在最后一点上,标准委员会的用意是:
作为实现,应该针对目标计算机来定义最合适的某特定操作,而不是强加一个抽象、统一的定义。
在学习C 语言过程中,许多方面都反映了这一哲学思想。

(二). C99标准

1.国际化;
2.弥补缺陷
3.提高计算的实用性

(三). C11 标准

出于对当前编程安全的担忧,不那么强调“信任程序员”目标了。
而且,供应商并未像对 C90 那样很好地接受和支持 C99。这使得 C99 的一些特性成为 C11 的可选项。
对于 C11 标准,我们浅尝辄止。

七. 使用C语言的7个步骤

(一). 第1步:定义程序的目标

在动手写程序之前,要在脑中有清晰的思路。

分析实现该目标的基本方法,必要时在目标分析阶段可以使用日常语言进行一些基本过程的描述。

(二). 第2步:设计程序

对程序应该完成什么任务有概念性的认识后,就应该考虑如何用程序来完成它。

在完成目标分析之后进行进一步的细化工作,例如,确定程序中需要的数据类型,优化具体算法等。
这个阶段的工作也可以用日常语言或者流程图的形式进行描述。

(三). 第3步:编写代码

设计好程序后,就可以编写代码来实现它。

利用文本编辑器,按照 C 语言的语法规则进行代码的编写,该阶段需要注意 C 语言的代码规范。

程序清单1.1 C源代码示例

#include <stdio.h>
int main(void)
{int dogs;printf("How many dogs do you have?\n");scanf("%d", &dogs);printf("So you have %d dog(s)!\n", dogs);return 0;
}

(四). 第4步:编译

接下来的这一步是编译源代码。

作为一门编译型程序设计语言,
C 语言需要调用编译器将 C 语言的源代码文件编译成可执行程序
随后才能运行和调试程序,进一步判断程序结果的正确性。

本人使用的编译器为VSCode,具体如何安装可以参考VSCode配置C语言环境(完整版)

(五). 第5步:运行程序

传统上,可执行文件是可运行的程序。

检测可执行程序是否能够在目标系统上正确运行。

(六). 第6步:测试和调试程序

接下来,应该检查程序是否按照你所设计的思路运行。

你会发现你的程序中有一些错误,计算机行话叫作bug。查找并修复程序错误的过程叫调试。

检测程序是否能够获得正确的运算结果。

通常情况下,
检测过程需要反复地进行测试,尤其是对一些特殊数据(如不太常用的非常大的数据) 进行检测。

(七). 第7步:维护和修改程序

创建完程序后,你发现程序有错,或者想扩展程序的用途,这时就要修改程序。

该阶段主要对代码修正错误增强可读性添加注释描述设计思路等,
为今后的软件升级和维护做好准备。

如果在编写程序时清楚地做了注释并采用了合理的设计方案,这些事情都很简单。

八. 编程机制

生成程序的具体过程因计算机环境而异。C是可移植性语言,因此可以在许多环境中使用,但是有些产品会随着时间的推移发生演变或被取代。

九. 本章小结

C是强大而简洁的编程语言。
它之所以流行,在于自身提供大量的实用的编程工具,能很好的控制硬件。
而且与大多数程序相比,C语言更容易从一个系统移植到另一个系统。

C是是编译型语言。C编译器和链接器是把C语言源代码转换成可执行代码的程序。

十. 复习题

1. 对编程而言,可移植性意味着什么?

完美的可移植程序是,其源代码无需修改就能在不同计算机系统中成功编译的程序

2. 解释源代码文件、目标代码文件和可执行文件有什么区别?

源代码文件包含程序员使用的任何编程语言编写的代码。

目标代码文件包含机器语言代码,它不必是完整的程序代码。

可执行文件包含组成可执行程序的完整机器语言代码。

3. 编译器的任务是什么?

编译器把源代码(如,用C语言编写的代码)翻译成等价的机器语言代码(也叫作目标代码)。

4. 链接器任务是什么?

链接器把编译器翻译好的源代码以及库代码和启动代码组合起来,生成一个可执行程序。

十一. 编程练习

1. 你刚被 MacroMuscle 有限公司聘用,该公司准备进入欧洲市场,需要一个把英寸转换成厘米(lin=2.54cm)的程序。该程序需要提示用户输入英寸值。你的任务是定义程序目标和设计程序(编程的第 1 步和第2 步)。

解答:

程序目标:
实现英寸转换成厘米的功能设计程序:1. 计算机提示用户输入英寸值。2. 用户通过键盘输入需要转换的英寸数值,例如,4in。3. 程序读取用户的键盘输入,获取4in的数值。4. 程序通过1in = 2.54cm 的转换公式,将英寸转换成厘米。5. 计算机将得到的数据结果反馈给用户。6. 程序结束或者等待用户下一次转换输入。

流程图如下所示:

#mermaid-svg-679bmrQnclhVhqlr {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-679bmrQnclhVhqlr .error-icon{fill:#552222;}#mermaid-svg-679bmrQnclhVhqlr .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-679bmrQnclhVhqlr .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-679bmrQnclhVhqlr .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-679bmrQnclhVhqlr .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-679bmrQnclhVhqlr .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-679bmrQnclhVhqlr .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-679bmrQnclhVhqlr .marker{fill:#333333;stroke:#333333;}#mermaid-svg-679bmrQnclhVhqlr .marker.cross{stroke:#333333;}#mermaid-svg-679bmrQnclhVhqlr svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-679bmrQnclhVhqlr .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-679bmrQnclhVhqlr .cluster-label text{fill:#333;}#mermaid-svg-679bmrQnclhVhqlr .cluster-label span{color:#333;}#mermaid-svg-679bmrQnclhVhqlr .label text,#mermaid-svg-679bmrQnclhVhqlr span{fill:#333;color:#333;}#mermaid-svg-679bmrQnclhVhqlr .node rect,#mermaid-svg-679bmrQnclhVhqlr .node circle,#mermaid-svg-679bmrQnclhVhqlr .node ellipse,#mermaid-svg-679bmrQnclhVhqlr .node polygon,#mermaid-svg-679bmrQnclhVhqlr .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-679bmrQnclhVhqlr .node .label{text-align:center;}#mermaid-svg-679bmrQnclhVhqlr .node.clickable{cursor:pointer;}#mermaid-svg-679bmrQnclhVhqlr .arrowheadPath{fill:#333333;}#mermaid-svg-679bmrQnclhVhqlr .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-679bmrQnclhVhqlr .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-679bmrQnclhVhqlr .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-679bmrQnclhVhqlr .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-679bmrQnclhVhqlr .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-679bmrQnclhVhqlr .cluster text{fill:#333;}#mermaid-svg-679bmrQnclhVhqlr .cluster span{color:#333;}#mermaid-svg-679bmrQnclhVhqlr div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-679bmrQnclhVhqlr :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

YES
NO
开始
计算机提示用户输入英寸值
用户通过键盘输入需要转换的英寸数值
程序读取用户的键盘输入
转换公式
计算机将得到的数据结果反馈给用户
是否结束?
结束

  1. 汇编语言(英语:assembly language)是任何一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。 ↩︎

C语言入门——初识C语言相关推荐

  1. go语言视频教程_ go语言入门视频教程_go语言实战视频教程

    许多人可能知道go语言的优点在哪里,但他们不知道go语言适合在哪里使用.通过学习go语言视频教程,可以清楚的知道go语言主要用于服务器端开发,其定位是用来开发"大型软件".学习go ...

  2. 入门C语言模板,C语言入门经典-C语言编程

    C语言入门经典-C语言编程Tag内容描述: 1.第01章C语言编程,C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让 ...

  3. c语言编程培训ppt,C语言入门经典-C语言编程.ppt

    <C语言入门经典-C语言编程.ppt>由会员分享,可在线阅读,更多相关<C语言入门经典-C语言编程.ppt(27页珍藏版)>请在人人文库网上搜索. 1.第01章 C语言编程,C ...

  4. c语言入门经典doc,C语言入门经典C语言编程.ppt

    C语言入门经典C语言编程.ppt 第01章 C语言编程,C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序即一组指令,并让计算机依指令行事 ...

  5. 编程入门c语言ppt,C语言入门经典-C语言编程.ppt

    <C语言入门经典-C语言编程.ppt>由会员分享,可在线阅读,更多相关<C语言入门经典-C语言编程.ppt(27页珍藏版)>请在装配图网上搜索. 1.第01章 C语言编程,C语 ...

  6. 【零基础入门C语言】 初识C语言—1

    声明:[零基础入门C语言]系列是博主对B站up主:鹏哥C语言所分享教学内容的学习笔记,并且该系列每篇博客都会将博主听课后总结的纸质版笔记附于文末,供大家参考. 初识C语言章节的内容在于初步了解C语言的 ...

  7. c语言入门数组,C语言入门之数组(2)

    二维数组 前面介绍的数组只有一个下标,称为一维数组, 其数组元素也称为单下标变量.在实际问题中有很多量是二维的或多维的, 因此C语言允许构造多维数组.多维数组元素有多个下标, 以标识它在数组中的位置, ...

  8. 【C语言】初识C语言(下篇)

    如果这世界上真有奇迹,那只是努力的另一个名字. 大家好,这里是anduin.今天将给大家带来初识C语言的最后一部分,和之前一样点到为止,适当补充,今天的内容是#define 定义常量和宏.指针和结构体 ...

  9. 【C语言】初识C语言(中篇)

    种一棵树,最好的时间是10年前,其次是现在. 大家好,这里是anduin,这次的主题依旧是初识C语言,和上次不同,这次我们主要讲两大块,对于一些知识,我们选择略讲,但是对于一些我觉得重要的知识我会对其 ...

最新文章

  1. python3入门-终于懂得python3快速入门教程
  2. 关于python中requests模块导入问题-python引入requests模块报错
  3. php json注释,【部分解决】Json中添加注释
  4. Sharepoint学习笔记—Site Definition系列-- 3、创建ListDefinition
  5. 关于调用Oracle存储过程时发生“BCD Overflow”错误的处理
  6. 搜狗浏览器下 禁止浏览器自动填写用户名、密码
  7. 不得不说的wepapi 优化
  8. python生成时间戳_Python 获取时间戳
  9. OpenAI升级Codex,直接将书面语言转为计算机代码;区块链网站被黑客偷走6亿美元加密货币|极客头条...
  10. 自主访问控制 强制访问控制_快速访问控制
  11. paip.java 线程无限wait的解决
  12. python二元函数拟合_Python拟合二元一次函数
  13. centerOS环境变量配置
  14. Mac技巧|如何快速显示Mac桌面?Mac桌面快捷操作方式
  15. FreeRTOS个人笔记-初谈CM3内核
  16. vue项目中设置浏览器图标
  17. kali安装配置使用手册
  18. Yii Framework 开发教程(32) Zii组件-GridView示例
  19. LSSVM分类和回归
  20. 二级学科 计算机科学技术,一级学科、二级学科,考研专业哪个包含了计算机考研方向...

热门文章

  1. 树洞OCR文字识别v1.1.0官方版
  2. spy++是可以获取浏览器当前页面的标题的,并且可以根据“窗口标题”和“类名”实现对浏览器的显示和隐藏,
  3. 吕著三国史话(观后感一)
  4. 南充中等计算机专业学校排名,南充计算机/电脑学校哪里好|南充外国语中等专业学校计算机应用|顺庆计算机学校怎么样|南充中专学校...
  5. matlab 变量上小尖尖,发动机最中间的那个小尖尖,你猜是什么?
  6. 语音控制Office,这个功能一定要体验
  7. 百度 谷歌 Twitter,这么多短链接服务(Short Url)到底哪家强?
  8. c语言贾宗璞答案,c语言答案 贾宗璞、许合利
  9. 如何在页面直接打开微信公众号
  10. 使用Windows PE部署Windows镜像