大一C语言挣扎之路1(电子计算机概述和Visual Studio )
大一C语言挣扎之路1(电子计算机概述和Visual Studio )
- C语言
- 一 电子计算机概述
- 1. 计算机的诞生
- 2. 冯·诺依曼结构
- 功能
- 组成部件
- 计算机工作流程
- 3. 计算机的发展历史
- 4. 存储容量的换算
- 5. 进制转换
- 二 计算机程序
- 1. 程序设计
- 2. 代码编写过程
- 三 C语言简介
- 1. C语言的起源
- 2. C语言的优势
- 3. C程序的开发过程
- 四(另附)Visual Studio 下载安装及部分快捷键
- 安装
- 快捷键(2022)
C语言
一 电子计算机概述
1. 计算机的诞生
- 计算机,俗称“电脑”,本质上是一种电子设备,因此常被称为“电子计算机”
- 英国数学家查尔斯·巴贝奇(Charles Babbage)于1834年发明了分析机(也就是现代电子计算机的前身),并设想了现代计算机所具有的大多数其他特性,被称为计算机原型机之父
- 英国数学家阿兰·图灵(Alan Turing)(如图1.1所示)提出了“图灵机”和“图灵测试”等重要概念,是计算机逻辑的奠基者,被称为计算机科学之父、人工智能之父。
- 美国的约翰·阿塔纳索夫(John Atanasoff)和他的学生克利福特·贝瑞(Clifford Berry)于1939年造出了第一台真实的电子计算机阿塔纳索夫-贝瑞计算机(Atanasoff-Berry Computer,简称为ABC)不可以编程,仅设计用于求解线性方程组。
- 1946年2月14日,“电子数字积分计算机”(Electronic Numerical And Calculator,ENIAC)在美国宾夕法尼亚大学问世了。**ENIAC是世界上第一台通用计算机(即为“图灵完备”的),也是继 ABC 后的第二台电子计算机。(没有真正的存储器)
- 美籍匈牙利数学家约翰·冯·诺依曼(John Von Neumann)和他的研制小组发表了一个全新的“存储程序通用电子计算机方案”-EDVAC(Electronic Discrete Variable Automatic Computer),即程序存储(Stored Program)的思想,另一个重大贡献是建议在电子计算机中采用二进制(Binary):根据电子元件双稳工作的特点,二进制的采用将大大简化机器的逻辑线路。被称为“现代计算机之父”。
2. 冯·诺依曼结构
功能
一般来说,基于冯·诺依曼体系结构的计算机(简称为冯·诺依曼机)具有以下功能
(1)能够把程序和数据送至计算机中;
(2)必须具有长期记忆程序、数据、中间结果及最终运算结果的能力;
(3)能够完成各种算术、逻辑运算以及处理和传送数据的能力;
(4)能够控制程序走向,并根据指令控制机器的各部件协调操作;
(5)能够按照要求将处理结果输出给用户;
组成部件
因此,冯·诺依曼机应具备五大基本组成部件,包括:
(1)输入设备:输入数据和程序;
(2)存储器:存放程序指令和数据;
(3)运算器:完成加工处理数据;
(4)控制器:控制程序执行;
(5)输出设备:输出处理结果;
其中
运算器和控制器合称为中央处理器(Central Processing Unit,CPU),是计算机最核心的组成部分。存储器(Memory)是计算机中存储信息的部件。存储器可分为主存储器(即内存储器,简称内存)和辅助存储器(即外存储器,简称外存)。
硬盘、光盘等都属于外存。通常,我们把要永久保存的、大量的数据存储在外存上,而把暂时存储的、少量的数据和程序放在内存上。
内存是计算机中重要的部件之一,用于存放计算机当前执行的程序代码和需要使用的数据,
计算机工作流程
冯·诺依曼机的五大部件之间通过控制总线、地址总线、数据总线这三大总线相联结,有数据流、指令流、控制流通过总线联系各部件。运算时,指令由存储器送入控制器,由控制器产生控制流来控制数据流的流向以及各部件的工作;数据在控制流的作用下从存储器读入运算器进行运算,运算的中间及最后结果又存回存储器;存储器中的运算结果经输出设备输出。
3. 计算机的发展历史
时代 | 名称 | 起讫年 | 硬件 | 软件及应用领域 | 特点 |
---|---|---|---|---|---|
第1代 | 电子管时代 | 1946~1958 | 逻辑元件采用真空电子管;主存储器采用汞延迟线、磁鼓、磁芯;外存储器采用磁带 | 采用机器语言、汇编语言编程;应用领域以军事和科学计算为主 | 体积大、功耗高、可靠性差、速度慢(每秒几千至几万次)、价格昂贵 |
第2代 | 晶体管时代 | 1958~1964 | 逻辑元件采用晶体管;主存储器采用磁芯 | 操作系统,采用高级语言及其编译程序编程;应用领域有科学计算、事务处理和工业控制 | 体积缩小、能耗降低、可靠性提高、速度提高(每秒几十万次) |
第3代 | 集成电路时代 | 1964~1970 | 逻辑元件采用中、小规模集成电路;主存储器采用磁芯 | 分时操作系统以及结构化、模块化程序设计方法;应用领域进入文字处理和图形图像处理 | 速度更快(每秒几十万到几百万次)、可靠性更高、价格下降,通用化、标准化 |
第4代 | 大规模集成电路时代 | 1970至今 | 逻辑元件采用大规模和超大规模集成电路 | 数据库和网络管理系统以及面向对象语言;应用领域除了科学计算、工业控制等,逐步走向家庭 | 集成度高、体积小,速度极快(每秒百万至数亿次)、微处理器诞生(1971) |
4. 存储容量的换算
- 计算机中的数据以二进制的形式存放于内存中。所谓二进制数、就是采用0和1作为数符,每个0或1就是一个位(bit),是数据存储的最小单位。
- 内存的存储单元是连续8个位组成的一个字节(Byte,简写为B)
- 由于现代计算机存储容量的不断增大,如果只用B作为单元,那么数字过于庞大。于是有了KB、MB、GB、TB、PB、EB、ZB、YB等级别更高的度量单位
1B=8 bits1KB=1024B=210B
1MB=210KB=220B
1GB=210MB=220KB=230B
1TB=210GB=220MB=230KB=240B
1PB=210TB=220GB=230MB=240KB=250B
1EB=210PB=220TB=230GB=240MB=250KB=260B
1ZB=210EB=220PB=230TB=240GB=250MB=260KB=270B
1YB=210ZB=220EB=230PB=240TB=250GB=260MB=270KB=280B
1BB =10YB=220ZB=230EB=240PB=250TB=260GB=270MB=280KB=290B
1NB=10BB=20YB=230ZB=240EB=250PB=260TB=270GB=280MB=290KB=2100B
1DB=10NB=20BB=30YB=240ZB=250EB=260PB=270TB=280GB=20MB=2100KB=2110B
- 内存容量的最大容量,取决于地址总线(Address Bus)的数量。如果地址总线有n根,则内存容量的上限为2”B。这是因为,每根地址总线上可以有0和1两种数符,所以只能对2”个存储单元进行“编址”
- 因此32位系统内存最大为4GB
5. 进制转换
各进制的数之间可以相互转换
- N进制数转成十进制数:将各位数符所代表的值乘以对应位的位权再累加求和,则得到对应的十进制数结果,该方法简称为“按权求和”。
- 十进制数转成N进制数:除以N取余至商为零再逆序输出所有余数,简称为“除N取
余法” - 二进制数与八进制数的相互转换:二到八,3合1;八到二,1分3。
- 八进制数与十六进制数的相互转换:通过二进制数作为中间数进行转换。
二 计算机程序
1. 程序设计
- 软件是程序的有机集合体。程序始终是软件的核心,任何软件都至少有一个可运行的程序。除了程序之外,软件一般还配有相关的文档。编程是编写程序的简称,术语称为“程序设计(Programming)”。
- 程序设计一般步骤:
(1).第一步:需求分析
(2)第二步:算法设计
(3)第三步:代码编写
(4)第四步:代码调试 这一步需用到编译器(Compiler)和调试器(Debugger)
- **程序设计语言(Programming Language)**是人与计算机交流所使用的“语言”,具有一套固定的符号和语法规则,大致可以分为四代:
时代 | 名称 | 构成 | 特点 | 现状 |
---|---|---|---|---|
第1代 | 机器语言 | 由二进制指令构成,不同的CPU具有不同的指令系统 | 难编写、难修改、难维护,需要用户直接分配存储空间,编程效率极低 | 很少直接用于编程 |
第2代 | 汇编语言 | 机器指令的符号化,与机器指令存在着直接的对应关系 | 难学难用、容易出错、维护困难;但可直接访问系统接口,汇编程序翻译成的机器语言程序效率高 | 只有在高级语言不能满足设计要求时才使用 |
第3代 | 高级语言 | 面向用户,基本上独立于计算机的类型和结构 | 易学易用,接近于算术语言和自然语言,其一条命令可以代替几条、几十条甚至几百条汇编语言的指令 | 通用性强,应用广泛 |
第4代 | 非过程化语言 | 面向应用,为最终用户设计。编码时只需说明“做什么”,不需描述算法细节 | 缩短开发过程、降低维护代价、最大限度地减少调试过程中出现的问题以及对用户友好等 | 数据库查询和应用程序生成器是该语言的两个典型应用 |
其中,机器语言和汇编语言编写的程序依赖于计算机硬件,所以又称为低级语言。高级语言是一种接近自然语言和数学语言的程序设计语言,不依赖于具体的机器,程序员编程时无须关心硬件的细节,从而大大提高了编程效率。
2. 代码编写过程
- 一般来说,用程序设计语言编写出来的程序叫作源程序或源代码(Source Code),不同语言写的源程序的文件扩展名也不同,例如以C语言写的源程序,对应文件的扩展名为
.c
。 - 由于冯·诺依曼机只能识别二进制代码,不能直接执行使用高级语言编写的程序,因此,任何用非机器语言编写的源程序都要经过专门的翻译程序(汇编程序或编译程序)翻译之后,才能得到计算机可直一接识别和运行的目标程序或目标代码(Object Code)。目标程序是完全由0、1序列组成的二进制文件,对应文件的扩展名为
.obj
。 - 根据源程序类型的不同,翻译的方式也不尽相同,主要有以下3种。
(1)汇编:通过汇编程序将用汇编语言所编写的源程序翻译为目标程序。
(2)编译:通过编译程序将用特定高级语言所编写的源程序翻译为目标程序,产生目标代码。不同的高级语言有不同的编译程序。其中,Pascal、C语言是可以写编译程序的高级语言。
(3)解释:通过解释程序直接执行源程序。一般是读一句,翻译一句,执行一句,不产生目标程序,如 Basic 解释程序。 - 目前,高级程序设计语言的种类繁多,应用广泛,大致可分为以下4类。
(1)命令式语言(过程式语言) :Pascal(第一个结构化程序设计语言)、C
(2)函数式语言
(3)逻辑式语言
(4)面向对象语言:java、c++
三 C语言简介
1. C语言的起源
- C程序设计语言诞生于著名的贝尔实验室,肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis M. Ritchie)用汇编语言为PDP-7编写操作系统,这就是著名的UNIX操作系统。
- 由于汇编语言编写的程序依赖于机器的型号,可移植性差,两人决定改用高级语言编写UNIX操作系统
- 1972年,汤普森继续完善UNIX操作系统,里奇设计新语言。由于该语言以汤普森之前设计的“B语言”为基础,因此命名为“C语言”。1973年,里奇完成了第一版C语言核心,并用C语言重写了 UNIX操作系统。
2. C语言的优势
- 功能强大
(1)运算符丰富。共有34种运算符。
(2)数据类型多样。包含整型、实型、字符型、数组类型、指针类型、结构体类型和共用体类型等。
(3)代码结构化。C语言具有多种循环、条件语句来控制程序的流向,此外,C语言采用函数形式作为程序的模块。
(4)可访问物理地址。C语言既具有高级语言的功能,又具有低级语言的许多功能。
因此可用来编写系统软件。例如Windows 系统大部分是由C语言编写的。 - 运行效率高
- 通用性强
- 可移植性强
3. C程序的开发过程
采用C语言编写的程序简称为C程序,C程序的开发过程从编写程序开始到运行程序出结果为止,一般需要6个步骤:编辑(Edit)、预处理(Preprocess)、编译(Compile)、链接(Link)、装载(Load)和执行(Execule)。其中,预处理和装载两个步骤有时可以省略。
编辑
编辑是通过输人设备将C语言源程序录入到计算机中,生成扩展名为“.c”的源文件。
编辑源程序的方法有两种:一种是直接在C集成开发环境中的编辑器中进行编辑,这是最常用且便捷的方法;另一种是使用其他文本编辑器,如写字板、记事本等。预处理
预处理是指通过预处理器对程序中的预处理指令(它们是为优化代码而设计的)进行转译。每条预处理指令以符号“#”开头。预处理又称转译单元(Translation Unit),将程序转译为扩展名为“.i”的中间文件。编译
编译是将C语言源文件和预处理生成的中间文件转换为机器可识别的目标代码(即二进制代码),生成相应的“.obj”文件。编译主要进行词法的分析和语法的检查,发现问题后及时以error或 warning 信息提示给用户,用户必须对源程序文件进行修改直至编译通过才能继续下面的步骤链接
链接是对目标代码中的符号引用和定义转换,把编译得到的多个二进制代码片段(例如程序中使用的库函数,它们也被编译成二进制码片段)连接成完整的可执行文件,扩展名为“.exe"。链接可分为静态链接和动态链接,静态链接是将所使用的库函数的目标代码静态添加到可执行文件中,动态链接是在程序执行过程中通过路径和函数名动态加载目标代码。装载
装载器将可执行文件装入内存储器中等待执行。执行
在中央处理器(CPU)的控制下,对装入内存的可执行文件的指令逐条执行,运行结果在显示器上显示或者保存至文件中。
常用的C集成环境有 Turbo C++、Microsoft Visual C++、Borland C++、Magic C++、GCC、LCC、Visual Studio .NET、CodeBlocks、Dev C++等
四(另附)Visual Studio 下载安装及部分快捷键
安装
(1)VS2010下载地址
需要注意的是,VS2010 可以在 XP、Win7 和 Win8 下完美运行,但在 Win10 下可能会有兼容性问题,使用 Win10 的读者建议安装 VS2015 或者 VS2017。
• 迅雷下载ed2k://|file|cn_visual_studio_2010_ultimate_x86_dvd_532347.iso|2685982720|4AE6228933DDE49D9BFA4C3467C831C2|/
• 百度网盘 提取密码:f9xr
(2)Visual Studio官网地址(2022)
快捷键(2022)
- ctrl+D 向下复制一行
- shift+ctrl+A 创建新文件
- shift+ctrl+N 创建新项目
- alt+方向键 移动所在行
- Ctrl+tab 切换页面
- Ctrl+/ 行注释掉/取消行注释
- Ctrl+shift+/ 块注释/取消块注释
- Shift+Tab 回退一个制表符
- Ctrl+enter 当前行之前开辟一行
- Shift+Left/Right 向左/向右选中字符
- Ctrl+Left/Right 以一个单词为粒度向左/向右移动光标
- Ctrl+F 快速查找
- Ctrl+Shift+F 在文件中查找
- Ctrl+H 快速替换
- Home 回到行首
- End 跳到行尾
大一C语言挣扎之路1(电子计算机概述和Visual Studio )相关推荐
- 大一C语言挣扎之路3(运算符)
大一C语言挣扎之路3(运算符) 一 运算符和表达式 1. 运算符和表达式定义 2. 运算符的优先级与结合性 3 运算规则(利用小括号) 二 常用运算符 1. 算术运算符 2. 关系运算符 3. 逻辑运 ...
- C语言学习之路(工具篇)—— Visual Studio的使用
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 第一个C语言程序 Visual Studio新建项目 源文件-添加-新建项 通过Visual Studio运行 通过gcc编译后运 ...
- vs2017c语言程序添加图标,笔试编程必备技巧——Visual Studio 2017添加自定义代码片段...
本文目录 代码模板 代码片段功能 step by step 添加自定义代码片段 传送门--常用IDE实现代码片段的方法 代码模板 如何有限的笔试时间中提高编程效率?除了提高自身代码能力之外,事先的准备 ...
- c语言此项目已过期是什么意思,Visual Studio 2017 许可证已过期解决方案
JS控制checkbox全选.取消全选.删除功能的代码贴出来.. function checkAll() { var code_Values = document.getElementsByTagNa ...
- c语言程序中文复制到word变乱码,Visual Studio 2010 复制代码到word时出现中文乱码的解决办法...
namespace 修复VS2010剪贴板乱码 { public partial class Form1 : Form { public Form1() { InitializeComponent() ...
- Windows10下利用Visual Studio Code搭建C语言开发环境
Windows10下利用Visual Studio Code搭建C语言开发环境 1. 前言 2. 下载安装VSCode以及MinGW 2.1 下载安装VSCode 2.2 下载安装MinGW-w64 ...
- 大一c语言大作业课题大全,昆明理工大学大一C语言大作业题目.doc
昆明理工大学大一C语言大作业题目 综合性实践排序求平均值(包括将数拆散求最大最小值).函数ReadDat()随机产生100个存放到数组aa中00个jsSort()函数的功能是:进行降序排列.最后调用函 ...
- 12天学好C语言——记录我的C语言学习之路(Day 12)
12天学好C语言--记录我的C语言学习之路 Day 12: 进入最后一天的学习,用这样一个程序来综合考量指针和字符串的关系,写完这个程序,你对字符串和指针的理解应该就不错了. //输入一个字符串,内有 ...
- 大学c语言程序设计期末考试试卷,大学大一c语言程序设计期末考试试卷及答案.doc...
大学大一c语言程序设计期末考试试卷及答案.doc 计算机科学学院C语言程序设计试卷A第1页(共8页)四川师范大学计算机科学学院20122013学年度第二学期期末考试C语言程序设计试卷试卷A答卷说明1. ...
最新文章
- 建立索引常用的规则如下
- redis服务器端和客户端启动
- 关于git pull机制和游戏开发热更新思考
- oracle条件批量更新表数据
- 牛逼!java开发环境配置视频教程
- 用浏览器做人脸检测,竟然这么简单?(附代码)
- Guava学习笔记:Immutable(不可变)集合
- 利用Word2Vec模型训练Word Embedding,并进行聚类分析
- SQLmap————10、sqlmap详细命令
- 计算机显卡类型有,显卡类型分几种|笔记本显卡类型
- RemoveWGA升级了
- 【IDEA】单独运行一个类的方法
- 用C语言基础及数学公式来简单实现土味表白
- 如何用excel实现并列排序
- DQN、DDQN、Dueling DQN、PER DQN
- 帝国cms插件支持7.0/7.2 7.5/UTF-8 微信登入插件 一键登入
- 2021超级好玩的VR游戏推荐,玩了还想玩
- bat脚本执行exe文件_将批处理(BAT)脚本转换为可执行(EXE)文件
- win7怎么设置计算机的性能,win7怎么提升电脑性能
- 8月8本程序员新书:Rust、软技能、Python、量子...