c语言计算机培训,C语言计算机基础学习||新手入门必看

本次内容笔者将完全抛弃传统教学的形式,通过自己所学所闻得出来的心得,用通俗易懂的语言结合生活,来让大家更好的认识计算机编程,更好的入门计算机基础。

笔者也想用自己的论述告诉大家,专业知识有时会比较枯燥乏味点,但当它生活联系起来时,便会发现其中蕴含着无数多前人的智慧。它们和生活的联系是如此的密切。

e0691bfd19b1d4cf5682058190a90822.png

本篇文章你们能学到:

为什么编程语言要这样发展的?

生活中的进制思想

计算机为什么要使用二进制

位、字节与二进制联系

编程语言的发展趋势

为什么要有编译软件

编译原理

编程语言都有哪几种

C语言是诞生于贝尔实验室,它是在1970年,由丹尼斯里奇博士在B语言的基础上发展完整出来的。也正因为如此,丹尼斯博士被誉为“C语言之父”。

b05bd8e904702e0452332d0bfb23f2f3.png

从这里我们可以知道,大多数语言的出现都是从别的语言基础上逐渐发展完善得来的。

那么在C语言诞生之前,我们的程序员是靠什么来编程的?

那么让我们简单来看看编程语言的发展。

3bb032830e4df6f722aa8ef033562cbd.png

在计算机诞生之初,人们是利用机器语言0和1来编程。关于0和1,这也是我们常说的二进制语言。如果单纯从进制转换角度来看,那么其实就是考我们的数学换算能力。可是,它绝不是单纯的数学转换的,在两个数字的背后可隐藏着许多具体的东西。

6465ecbde00308bb7246aac2aa7f109c.png

我们生活最习惯的进制就是十进制了,这个进制思想从出生开始,爸爸妈妈教我们数数字的时候就开始灌输到我们的脑子里了,包括我们所接受的数学教育也是基于10进制上的。现在,我们马上就要进入计算机的世界了,而计算机可不认识十进制数呢,它是二进制的,而想要理解计算机那就要按照它的规则来。

我们该如何从十进制思想束缚中挣脱出来,进入二进制的世界呢?那么,接下我们看看也许以前我们从来都没有思考的问题,来帮助大家更好的理解二进制。

比如十进制的数字就是0~9,如果我们想用十进制表示比9大的数字如10,如果纯用一位数字来表示是不可能的,因为10进制中单位数字最大的就是9,那么又要怎么做呢??大家可以思考下。

2a41ee20d51c5d4129d36db580ad32f5.png

其实也不难想到,我们平时在生活上想用手势暗示对方这是数字10时,我们会怎么做呢?那自然会伸出一个手指和一个拳头。

十进制的发明者就考虑用多位数字来表示比9大的数字。进一位,表达为10,依次类推,就可以用0~9的数字表示比9大的任意数了。那么你想用二进制表示比1大的数字,那么应该怎么表示呢?自然就能想到,得用两位数字来表示,因为二进制所用最大数字中最大的就是1。。。。自然而然,当我们想表示2时就用01表示,表示4就用100。。

也正是这种用多位数字表达任意数的思想产生了多种进制。常见进制就有二进制、八进制、十进制、十六进制。

看了那么多的进制,同学们可能会想,为什么要发明那么多的进制呢,用十进制不就可以了吗?那多好,贴近我们正常人的思维。

其实所有进制的出现也是为了方便我们的生活啊,只是因为用途与我们常规生活不一样。为什么我们在日常生活中要用十进制,而不是采用八进制、二进制、十六进制呢?因为我们有十个手指阿,而且手也是最容易出现在我们的视线当中的,所以对于我们人类来说,采用十进制思想是最好的。

其实我们一开始也是对计算机采用十进制的,后来发现不可行啊。

因为计算机不同,它可不是人,它既没有手指,也没有大脑,它只是一堆废铁。对于通了电的它来说,它就只有两种状态,那就是通电和断电。聪明的人类利用它这种特性,决定采用0和1来表示它。

所以严格来说,关于二进制,在数学上它就是进制换算,但对于计算机而言,它们只是一种符号。如果用一个电子开关来表示的话,1就是断开,0就是闭合。如果用电平来表示的话,1就是高电平,0就是低电平。

回到刚才所说,计算机是可以用来计算和存储数据。但在刚刚笔者的论述理解中,计算机只是机器,它只有通电和断电这两种状态呢。那么它又是怎么和数字联系到一起的呢?

我们可以这样想,如果一根线的电平高低能代表两种状态,那么2根线会有什么样的组合呢?

那就是00、01、10、11这四种状态了,那么8根线呢?学过排列和组合的我们知道,那就是一共有2^8(2的八次方 =

256)种状态。我们计算机就是常常用8根线放在一起,同时计数,就能表示0~255,一共256种状态了。所以我们计算机的数据单位是这样的,将一根线表示为“位”,将8根线或者8位称为一个字节。

我们C语言中有个数据类型为char,它的是一个字节的,那么它能存储的数值范围多少呢?请大家思考下。

原来,计算机的计数也没那么什么嘛,只是几根线的电平高低组合。我们人类就是将它们的状态当成我们的数字。比如一个8位的计算器,那么我们把它的状态组合第一种状态0000

0000当做是我们的数学中的0,那255应该怎么用状态表示呢?当然是1111 1111了。

接下来展示下三代语言的代码编写,比如我们写代码计算两个数相加,

那么我们的编程是这样写的,如下图所示:

60fb19ad9a25f37c92163bfb0664e9e9.png

在这里,我们通过三代语言的实例比较中,可以很直观看到了我们编写代码的难度越来越小了,代码量也在减小,从起初的0和1到利用英文单词来助记(如ADD在英文单词就是相加的意思),再到利用数学语言来表达。我们可以发现,我们的编程语言在以简单、代码量越来越小的趋势发展中。

那么这里为什么机器可以读懂a+b呢?是不是变聪明了呢?当然不是,机器还是机器,它还是只能认识0和1。那为什么人们还是可以让机器看懂a+b的意思呢?原来啊,我们这里有个逆向编译的过程

ca393ab7cbe8d002622a7ed50f157bb8.png

在这里充当编译的就是编译软件,我们有很多种叫法,IDE,编译环境,开发环境都是他。高级语言不止一种,不同的高级语言有不同的编译软件。我们将要学习的C语言便是比较底层的高级语言,属于面向结构语言,它使用的编译环境就是Visual

C++6.0(这个软件可以去网上下载,该公众号也有提供)。现在的高级语言有很多种了,比较热门的就有Java、Python、C++等,这些是属于面向对象的语言。面向对象的语言也都是基于面向结构语言的基础上发展而来的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javafx如何带菜单_JavaFX技巧30:带有DropShadow的ScrollPane

javafx如何带菜单最近,在我的一个项目中,我发现用户很难看到ScrollPane实例的内容当前是否已滚动。 一种更清晰的方法是在滚动窗格的顶部添加阴影。 这也是Google的Material Design建议的。 所以我尝试了一下。 在我的解决方案中,我只是向Sc…

IntelliJ IDEA 怎么知道项目信息_如何重新打开已经移除的项目_如何关闭和删除项目

文章目录 一个窗口只管理一个项目如何打开已经移除的项目Open 和 Import 的简单区别关闭项目如何删除项目IDEA 怎么知道项目信息这里要特别理解一个问题,硬盘上的项目文件必须在 IDEA 的配置文件中,IDEA 才能识别这个文件,而通过 IDEA 添加本地文件(例如添加项目或者添加模…

hmi开发软件c语言,组态,HMI,软件,VC++,源代码

要点:1)、创建新的HMIBuilder应用。2)、如何创建刻度。3)、如何创建一个组合图形。参阅TestMeter1要点:1)、创建新的HMIBuilder应用。2)、如何快速通过组合操作创建按钮。参阅TestButton1.要点:1)、创建新的HMIBuilder应用。2)、如何快速创建…

机器学习java_Java机器学习,第2部分

机器学习java欢迎使用本教程的第二部分,该教程使用LightningScorer为PMML文件评分。 让我们找出其他参数是如何工作的。 初始步骤与教程的第一部分相似。 首先获取本地副本 git clone https://github.com/sezinkarli/lightningscorer.git并用Maven构建它 mvn c…

IntelliJ IDEA 如何知道项目中的模块数据_如何从项目源中选择模块加入当前项目中(添加模块)_如何移除项目中的模块(移除模块/删除模块)

文章目录IDEA 如何获取项目的模块数据从项目源中选择模块加入当前项目中如何移除项目中的模块方式一,选择模块的根目录(Content Root),鼠标右键 Remove方式二,打开【项目结构】窗口,在模块列表中选中模块&a…

c语言明解课后答案,明解C语言 中级篇 第一章答案

练习1-1#include #includeint main() {srand(time(0));int anw rand() % 7;printf("您的签运是:");switch (anw) {case 0:printf("大吉"); break;case 1:printf("吉"); break;case 2:printf("小吉"); break;case 3:printf("吉&q…

java 迁移数据_Java 10迁移建议

java 迁移数据你好,再一次到另一个热点。 我的名字是Java Champions的平台工程师和DevOps专家Peter Pilgrim。 如您所知,Java 9引入了模块系统。 您可能正在将服务迁移到JDK 10或更高版本,或者至少在考虑中。 我对企业的一般建议是&#xff…

IntelliJ IDEA for Mac 如何配置项目模块的源代码根目录_源码文件的根目录

按下组合键 Command ; 打开【项目结构】配置窗口;然后选择左侧菜单栏的【Modules】;然后在右侧的模块列表中,选择你要配置的模块;接着选择右侧界面中的【Sources】标签。 首先添加内容根目录(Content Root&#xff0…

c语言动态内存分配数组,【C】动态内存分配

## 动态内存分配的意义C语言中的一切操作都是基于内存的变量和数组都是内存的别名内存分配由编译器在编译期间决定定义数组的时候必须指定数组长度数组长度是在编译期就必须确定的需求:程序在运行过程中,可能需要使用一些额外的内存空间malloc和freemall…

javafx 调用java_Java“地铁”表(JavaFX)

javafx 调用java再次嗨,这次,TableView“ Metro”样式被添加到JMetro JavaFX主题。 这会将JMetro版本放大到3.1.0。 我之所以没有添加表格样式,是因为奇怪的是在Fluent设计系统(以前是Metro)中还没有表格的定义。 有一…

IntelliJ IDEA for Mac 修改项目模块的名称

按下组合键 Command ; 打开项目结构窗口,选择左侧边栏的菜单【Modules】,然后选择你要修改的模块,在右侧的【Name】输入框可以修改名称,具体操作如下图所示: 注:模块名称虽然修改了,但是模块的…

二分查找算法举例说明C语言,C语言快速排序与二分查找算法示例

本文实例讲述了C语言二分排序与查找算法。分享给大家供大家参考,具体如下:题目:首先产生随机数,再进行快速排序,再进行二分查找。实现代码:#include #include #include void quiksort(int a[],int low,int …

gradle跟pom_Gradle多项目构建–父pom式结构

gradle跟pom当您来自Maven背景时,很可能已经习惯了父pom结构。 现在,在进行gradle时,情况有所不同。 想象一下有一个包含接口和各种其他实现的项目的场景。 这将是我们的项目结构。 multi-project-gradle -- specification -- core -- i…

java streams_使用Stream.peek在Java Streams内部进行窥视

java streams对于刚接触JDK 8的管道和流的Java开发人员而言, Stream接口提供的peek(Consumer)方法可以是有用的工具,有助于可视化流操作的行为。 即使是更熟悉Java流和聚合操作的Java开发人员,有时也会发现Stream.peek…

算法提高 日期计算c语言,算法提高 日期计算

//规定年份2017年1月1日 星期7#includeusing namespace std;int rn(int n) //判断是否是润年{if (n%40 && n%100!0 || n%4000)return 1;return 0;}int md[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};int main(){int year,month,day;int i,sum0,td0;while (cin>>…

IntelliJ IDEA for Mac 模块源文件的编译输出路径配置

按下组合键 Command ; 打开【项目结构】窗口,接着在左侧菜单栏中选择【Modules】,接着在右侧模块列表中选择要设置的模块,接着选择右侧的【Paths】标签,如下图所示: 不知道搞个【test ouput path】的好处在哪里&…

IntelliJ IDEA for Mac 如何在当前的普通Java项目中创建新的模块/添加模块/创建模块

文章目录添加模块的入口创建新的项目模块添加模块的入口 添加新的模块的入口有两个,如下图所示: 第一种方式,【File】 --> 【New】 --> 【Module】: 第二种方式,打开【Project Structure】窗口,然后…

react api_使用Java EE 8中的React式API加速服务

react api服务通常可以通过异步处理进行优化,即使不改变其对外界的行为。 某些服务效率不高的原因是,它们需要等待其他服务提供结果才能继续下去。 让我们看一下如何在不等待外部REST服务的情况下调用它们,并独立进行多个并行调用&#xff…

android申请权限一次性申请多个,android 6.0以上动态一次申请多个权限-最美解决方案...

目录背景危险权限申请权限思路申请权限流程干货后续一.背景android23 API新增危险权限校验,需要手动获取:二.危险权限:日历数据android.permission-group.CALENDARandroid.permission.READ_CALENDARandroid.permission.WRITE_CALENDAR相机and…

IntelliJ IDEA for Mac 直接将模块硬盘上的根目录删除会怎么样

不通过 IDEA 删除模块文件,而是直接手动从硬盘删除模块文件,造成的结果如下图所示: 【模块内容导航窗格】的内容是根据以下两个配置文件的信息从硬盘中加载进来的: 项目根目录/.idea/modules.xml 这个文件记载了配置文件【模块名…