`
swiftma
  • 浏览: 755 次
社区版块
存档分类
最新评论

计算机程序的思维逻辑 (1) - 数据和变量

阅读更多

程序大概是怎么回事

 

计算机就是个机器,这个机器主要由CPU、内存、硬盘和输入输出设备组成。计算机上跑着操作系统,如Windows或Linux,操作系统上运行着各种应用程序,如Word, QQ等。

 

操作系统将时间分成很多细小的时间片,一个时间片给一个程序用,另一个时间片给另一个程序用,并频繁地在程序间切换。不过,在应用程序看来,整个机器资源好像都归他使,操作系统给他提供了这种假象。

 

对程序员而言,我们写程序,基本不用考虑其他应用程序,我们想好怎么做自己的事就可以了。

 

应用程序看上去能做很多事情,能读写文档,能播放音乐,能聊天,能玩游戏,能下围棋 ......

 

但本质上,计算机只会执行预先写好的指令而已,这些指令也只是操作数据或者设备。所谓程序,基本上就是告诉计算机要操作的数据和执行的指令序列, 即对什么数据做什么操作。

 

比如说:

  • 读文档,就是将数据从磁盘加载到内存,然后输出到显示器上

  • 写文档,就是将数据从内存写回磁盘。

  • 播放音乐,就是将音乐的数据加载到内存,然后写到声卡上。

  • 聊天,就是从键盘接收聊天数据,放到内存,然后传给网卡,通过网络传给另一个人的网卡,再从网卡传到内存,显示在显示器上。

基本上,所有数据都需要放到内存进行处理,程序的很大一部分工作就是操作在内存中的数据。

 

本文主要就说说这个"数据"。(以Java为例)

 

数据

 

数据是什么?数据在计算机内部都是二进制,不方便操作,为了方便操作数据,高级语言引入了"数据类型"和"变量"的概念。

 

数据类型

 

数据类型用于对数据归类,方便理解和操作,对Java语言而言,有如下基本数据类型:

 

  • 整数类型:有四种整型 byte/short/int/long,分别有不同的取值范围

  • 小数类型 :有两种类型 float/double,有不同的取值范围和精度

  • 字符类型:char,表示单个字符

  • 真假类型:boolean,表示真假

基本数据类型都有对应的数组类型,数组表示固定长度的同种数据类型的多条记录,这些数据在内存中挨在一起存放。

 

比如说,一个自然数可以用一个整数类型数据表示,100个连续的自然数可以用一个长度为100的整数数组表示。一个字符用一个char表示,一段文字可以用一个char数组表示。

 

Java是一个面向对象的语言,除了基本数据类型,其他都是对象类型 ,对象到底是什么呢?

 

简单的说,对象是由基本数据类型、数组和其他对象组合而成的一个东西,以方便对其整体进行操作。

 

比如说,一个学生对象,可以由如下信息组成:

 

  • 姓名:一个字符数组

  • 年龄:一个整数

  • 性别:一个字符

  • 入学分数:一个小数

日期在Java中也是一个对象,内部表示为整形long。

 

就像世界万物的组成,都是由元素周期表中的108个基本元素组成的,基本数据类型就相当于化学中的基本元素,而对象就相当于世界万物。

 

变量

为了操作数据,需要把数据存放到内存中,所谓内存在程序看来就是一块有地址编号的连续的空间,放到内存中的某个位置后,为了方便地找到和操作这个数据,需要给这个位置起一个名字。编程语言通过变量这个概念来表示这个过程。

 

声明一个变量,比如 int a其实就是在内存中分配了一个空间,这个空间存放int数据类型,a指向这个内存空间所在的位置,通过对a操作即可操作a指向的内存空间,比如a=5这个操作即可将a指向的内存空间的值改为5。

 

之所以叫量,是因为它表示的是内存中的位置,这个位置存放的值是可以变化的。

 

虽然变量的值是可以变化的,但名字是不变的,这个名字应该代表程序员心目中这块内存位置的意义,这个意义应该是不变的,比如说这个变量int second表示时钟秒数,在不同时间可以被赋予不同的值,但它表示的就是时钟秒数。之所以说应该是因为这不是必须的,如果你非要起一个变量名叫age但赋予它身高的值,计算机也拿你没办法。

 

重要的话再说一遍!变量就是给数据起名字,方便找不同的数据,它的值可以变,但含义不应变。再比如说一个合同,可以有四个变量:

 

* first_party: 含义是甲方

* second_party: 含义是乙方

* contract_body: 含义是合同内容

* contract_sign_date: 含义是合同签署日期

 

这些变量表示的含义是确定的,但对不同的合同,他们的值是不同的。

 

初学编程的人经常使用像a,b,c,hehe,haha这种无意义的名字,给变量起一个有意义的名字吧!

 

通过声明变量,每个变量赋予一个数据类型和一个有意义的名字,我们就告诉了计算机我们要操作的数据。

 

有了数据,怎么对数据进行操作呢?

---------------

未完待续,查看最新文章,敬请关注微信公众号“老马说编程”,深入浅出,探索Java编程及计算机技术的本质。原创文章,保留所有版权。

分享到:
评论

相关推荐

    C语言课程设计报告--学习和掌握C程序设计方法-培养抽象思维、逻辑思维的能力和良好的程序设计风格.doc

    《C语言程序设计》课程是计算机科学教育中的核心部分,旨在帮助学生掌握基本的编程技能,形成抽象思维和逻辑思维的能力,以及培养良好的程序设计风格。 **课程设计目的** C语言课程设计的目标主要有以下几点: 1....

    2023年scratch教案-变量.docx

    - **情感态度与价值观**:培养认真细致的态度,以及严谨的程序思维。 #### 教学重点 - 变量的设置和使用。 #### 教学难点 - 初步理解变量的概念及其应用场景。 #### 教学过程 ##### 导入新课 - **互动游戏**:...

    计算机程序设计--24点游戏设计.doc

    其中,栈(STACK1和STACK2)用于实现中缀表达式到后缀表达式的转换和后缀表达式的计算,它们分别处理整数和运算符。 栈1(STACK1)用于存储整数,而栈2(STACK2)用于存储运算符。栈的常用操作如初始化、入栈、出栈...

    广东省职业技能等级认定证书试卷样题计算机程序设计员-web前端开发(中级)理论-答案.docx

    该部分考查了计算机程序设计员-web前端开发(中级)的逻辑思维和分析能力,包括布尔逻辑、条件语句、循环语句、函数、数组、对象等。 知识点 1. HTML基本结构和语义化标签 HTML文档的基本结构包括文档类型声明、...

    2016年慈溪市小学生计算机程序设计竞赛复赛试题及测试数据

    "2016年慈溪市小学生计算机程序设计竞赛复赛试题及测试数据" 这个标题揭示了本次讨论的核心内容。这是一个关于2016年在浙江省慈溪市举行的小学生计算机程序设计竞赛的复赛部分。这类竞赛通常旨在提升学生的编程技能...

    计算机程序设计基础上机指导与习题

    根据提供的标题和描述,我们可以将重点放在“计算机程序设计基础上机指导与习题”以及“C语言程序设计”上。接下来,将详细阐述与此相关的知识点。 ### 计算机程序设计基础 #### 1. 计算机程序设计概念 计算机程序...

    《计算机程序设计基础》作者赵宏—电子教案.rar

    1. **第1章 概述**:这一章通常会介绍计算机程序设计的基本概念,包括计算机系统、编程语言的分类、编程环境和开发工具的使用,以及程序设计的基本步骤。 2. **第2章 程序设计初步**:这一章可能会涉及基本的编程...

    计算机程序设计(Java)-教案--单元二--Java语言开发基础.docx.docx

    【Java语言开发基础】是计算机程序设计的重要组成部分,这一单元主要涵盖了Java语言的基础知识和编程技巧。课程的主要目标是让学生掌握Java语言的基本组成,包括数据类型、变量、运算符及表达式,以及如何运用三种...

    啊哈C语言 第4讲 数字的家--变量.pdf

    根据给定的文件信息,我们可以提炼出以下知识点: ...1. 培养逻辑思维和解决问题的能力。 2. 激发创新和创造力。 3. 提前为孩子接触和理解编程世界做准备。 4. 通过动手实践,提升计算机操作技能和信息素养。

    MP31819_examples_图说运算思维与演算逻辑训练_

    运算思维是指理解和解决涉及变量、等式和代数概念的问题的能力,而演算逻辑则涉及到如何构造和理解计算机程序的流程,包括条件语句、循环、函数和数据结构等。 在Python中,运算思维可以体现在对复杂问题的抽象,...

    100个经典C程序-----考试学习练习自备良药

    每个程序都是一个挑战,解决每个问题会带来成就感,并且有助于形成良好的编程习惯和思维方式。 【标签解析】 - "C":代表C语言,学习的核心内容。 - "C程序":强调是关于C语言的程序设计。 - "100":表明包含100个...

    2019全国高校计算机能力挑战赛-程序设计赛-C语言-全国一等奖源代码

    总的来说,这份资源是一份宝贵的C语言学习材料,它涵盖了基础编程、算法设计、问题解决策略和竞赛实战经验,对于提升计算机程序设计能力,尤其是参与算法竞赛的准备,具有很大的帮助。通过深入研究这些源代码,学习...

    编制计算机程序解决问题.pdf

    通过以上内容,我们可以看出,编制计算机程序解决问题不仅是一种技术,更是一种思维方式,它能够帮助我们理解和解决现实生活中的复杂问题,提高工作效率。教学过程中,应注重培养学生的创新意识和实践能力,使他们...

    第3章-C51语言程序设计基础-PPT.ppt

    - **位变量`bit`**:用于表示逻辑状态,值可以是1或0。 - **特殊功能寄存器**:直接映射到51系列单片机的特殊功能寄存器地址。 #### 第三节 C51语言的数据存储类型 - **存储器寻址**: - 51系列单片机拥有不同...

    数据的存储箱—变量1.doc

    在计算机编程中,数据的存储和处理是至关重要的,而变量就是我们用来存储数据的“存储箱”。本课以初中信息技术教案的形式,讲解了如何利用变量来实现数据的存储与计算,这是程序设计的基础。通过一个实际的“打折...

    计算机程序设计基础课程PPT

    计算机程序设计基础是计算机科学领域的入门课程,它主要教授如何使用编程语言来解决问题。C语言是一种广泛应用的编程语言,尤其适合系统级编程和嵌入式系统。冯毅老师的C语言课件为此领域的初学者提供了宝贵的资源,...

    北大青鸟 accp 6.0_s1_ 使用Java理解程序逻辑

    【北大青鸟ACCP 6.0 S1 Java程序逻辑理解】 北大青鸟的ACCP 6.0课程...通过北大青鸟ACCP 6.0 S1的Java程序逻辑学习,学员不仅能掌握编程技能,还能培养解决问题和逻辑思维的能力,为后续的IT职业生涯打下坚实的基础。

    计算机基础课程逻辑思维能力细节教学探讨.doc

    例如,编写程序计算1到100的和,需要定义变量,设置循环,每一步都建立在前一步的基础上,为下一步做准备。这种逻辑推理能力的培养,有助于学生在面对复杂问题时,能构建清晰的解决方案,从而实现预期的功能。 对于...

    C语言思维导图-知识点汇总

    C语言是一种强大的编程语言,它的灵活性和高效性使其在计算机科学领域中占据着重要的地位。这份"思维导图-知识点汇总"提供了全面的C语言学习框架,帮助学习者系统地理解和掌握C语言的核心概念。 首先,C语言的基础...

    汇编实验 分支程序 已知两个整数变量A和B 代码+报告

    在汇编语言中,程序员需要编写一系列的指令,每一条对应计算机的一个基本操作,如加载数据、存储数据、算术运算、逻辑运算以及控制流程转移等。分支程序则是汇编语言编程中的一个重要概念,它涉及到程序执行路径的...

Global site tag (gtag.js) - Google Analytics