赋值语句

PL真有意思(四):控制流

旧巷老猫 提交于 2019-12-05 16:57:04
前言 对大多数计算模型而言,顺序都是基本的东西,它确定了为完成所期望的某种工作,什么事情应该最先做,什么事应该随后做,我们可以将语言规定顺序的机制分为几个类别: 顺序执行 选择 迭代 过程抽象 递归 并发 异常处理和推断 非确定性 对于不同类别的语言对不同类别的控制流的重要性也不尽相同,比如顺序执行相比于函数式对于命令式则更加重要。而命令式中更倾向用迭代,函数则更强调递归 表达式求值 在讨论控制流之前先讨论下表达式的问题,先明确两个概念:运算符通常是指那些采用特殊语法形式的内部函数(比如+-*/等),运算对象指的是运算符的参数(如2+3,2和3就是运算对象),那么运算符和运算对象的组合就是表达式。一般根据运算符出现的位置(相对于运算对象而言),可以分为3类表示形式:前缀、中缀和后缀。比如Lisp就运用前缀语法: (+ 1 3 4 6) (* (+ 1 7) 8) 大多数命令式语言对二元运算符都使用中缀记法,而对一元运算符和其它函数使用前缀激发。但是像Lisp就全部统一使用中缀记法 优先级和结合性 大多数程序设计语言都提供丰富的内部算术。在用中缀方式(没有括号)写出就可能出现歧义。所以就需要优先级和结合性来解决歧义性,但是我觉得 妈的你写括号就完事儿了 而且不同语言的优先级和结合性也不尽相同 赋值 在纯函数式语言中,程序的基本组成部分是表达式,计算也仅是对表达式求值

批处理中setlocal enabledelayedexpansion的作用详细整理

孤者浪人 提交于 2019-12-05 14:50:57
转自: https://www.jb51.net/article/29323.htm 设置本地为延迟扩展。其实也就是:延迟变量,全称延迟环境变量扩展, 想进阶,变量延迟是必过的一关!所以这一部分希望你能认真看。 为了更好的说明问题,我们先引入一个例子。 例1: @echo off set a=4 set a=5&echo %a% pause 结果:4 解说:为什么是4而不是5呢?在echo之前明明已经把变量a的值改成5了?让我们先了解一下批处理运行命令的机制:批处理读取命令时是按行读取的(另外例如for命令等,其后用一对圆括号闭合的所有语句也当作一行),在处理之前要完成必要的预处理工作,这其中就包括对该行命令中的变量赋值。我们现在分析一下例1,批处理在运行到这句“set a=5&echo %a%”之前,先把这一句整句读取并做了预处理——对变量a赋了值,那么%a%当然就是4了!(没有为什么,批处理就是这样做的。)而为了能够感知环境变量的动态变化,批处理设计了变量延迟。简单来说,在读取了一条完整的语句之后,不立即对该行的变量赋值,而会在某个单条语句执行之前再进行赋值,也就是说“延迟”了对变量的赋值。那么如何开启变量延迟呢?变量延迟又需要注意什么呢? 举个例子说明一下: 例2: @echo off setlocal enabledelayedexpansion set a=4 set a

【java虚拟机】类加载机制

谁说胖子不能爱 提交于 2019-12-05 09:57:56
作者:平凡希 原文地址:https://www.cnblogs.com/xiaoxi/p/6959615.html 一、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的 方法区 内,然后在 堆区 创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。 类加载器并不需要等到某个类被“首次主动使用”时再加载它,JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到了.class文件缺失或存在错误,类加载器必须在程序首次主动使用该类时才报告错误(LinkageError错误)如果这个类一直没有被程序主动使用,那么类加载器就不会报告错误。 二、类的生命周期 其中类加载的过程包括了 加载、验证、准备、解析、初始化 五个阶段。 在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。另外注意这里的几个阶段是按顺序开始,而不是按顺序进行或完成,因为这些阶段通常都是互相交叉地混合进行的

【java虚拟机】Java内存模型

梦想与她 提交于 2019-12-05 09:57:31
作者:平凡希 原文地址:https://www.cnblogs.com/xiaoxi/p/7518259.html 一、什么是Java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。 在此之前,主流程序语言(如C/C++等)直接使用物理硬件和操作系统的内存模型,因此,会由于不同平台上内存模型的差异,有可能导致程序在一套平台上并发完全正常,而在另外一套平台上并发访问却经常出错,因此在某些场景下就不许针对不同的平台来编写程序。 Java内存模型即要定义得足够严谨,才能让Java的并发内存访问操作不会产生歧义;Java内存模型也必须定义地足够宽松,才能使得虚拟机的实现有足够的自由空间去利用硬件的各种特性来获取更好的执行速度。经过长时间的验证和修补,JDK1.5(实现了JSR-133)发布之后,Java内存模型已经成熟和完善起来了,一起来看一下。 二、主内存和工作内存 Java内存模型的主要目的是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。注意一下,此处的变量并不包括局部变量与方法参数,因为它们是线程私有的,不会被共享,自然也不会存在竞争,此处的变量应该是实例字段

ES6-变量的结构赋值

喜欢而已 提交于 2019-12-05 09:10:28
变量结构赋值 很多内容还需要琢磨,尤其是对象和函数参数的解构赋值 1.解构 (Destructuring):ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值, 完全结构 let [foo, [[bar], baz]] = [1, [[2], 3]]; foo // 1 bar // 2 baz // 3 ​ let [ , , third] = ["foo", "bar", "baz"]; third // "baz" ​ let [x, , y] = [1, 2, 3]; x // 1 y // 3 ​ let [head, ...tail] = [1, 2, 3, 4]; head // 1 tail // [2, 3, 4] ​ let [x, y, ...z] = ['a']; x // "a" y // undefined z // [] 不完全结构依然可以解构成功 let [x, y] = [1, 2, 3]; x // 1 y // 2 ​ let [a, [b], d] = [1, [2, 3], 4]; a // 1 b // 2 d // 4 解构不成功 报undefined 2.对象的解构赋值 对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序, 变量必须与属性同名 ,才能取到正确的值。

JavaScript基础入门01

荒凉一梦 提交于 2019-12-05 08:44:58
JavaScript能用来做什么? 页面分为:结构、样式、行为。 JavaScript的组成: ECMAScript、BOM、DOM ECMAScript是一个标准,它规定了语法、类型、语句、关键字、保留子、操作符、对象。(相当于法律) BOM(浏览器对象模型):可以访问浏览器窗口的浏览器对象模型,对浏览器窗口进行操作。 DOM(文档对象类型):DOM把整个页面映射成一个多层节点结构。HTML页面组成都是某种类型的节点,这些节点又包含着不同类型的数据   js代码位置   首先是如何编写 JavaScript 代码,说到这,我们首先要来说明一个需要新人们关注的点,因为我们的 js 是一门 跨平台 的语言,所以说,我们的代码可以运行在不同的 平台 之上。这也就导致了可能相同的代码放在不同的平台运行就会有所出入。 这里面说的平台其实被称之为 宿主环境 。   同时,代码在不同的平台上的运行方式也有所不同。   如果运行在 服务端 ,那么更多的时候我们需要通过命令行的形式去运行,而如果是代码运行在 客户端 ,则需要通过启动 浏览器 来运行代码。   我们在学习的初期建议是在 浏览器 中运行代码,减少学习成本。   首先,我们的 js 代码可以写在 script 标签内部并且将 script 标签放在网页的任何位置。    外联JS的写法为: <script src="相对路径"><

[转]vue原理简介

跟風遠走 提交于 2019-12-05 08:35:07
写vue也有一段时间了,对vue的底层原理虽然有一些了解,这里总结一下。 vue.js中有两个核心功能:响应式数据绑定,组件系统。主流的mvc框架都实现了单向数据绑定,而双向绑定无非是在单向绑定基础上给可输入元素添加了change事件,从而动态地修改model和view。 1. MVC,MVP,MVVM 1.1 MVC MVC模式将软件分为下面三个部分 1. 视图 (View):用户界面 2. 控制器 (Controller):业务逻辑 3. 模型 (Model):数据保存 MVC各个部分之间通信的方式如下: 1.视图传送指令到控制器 2.控制器完成业务逻辑后要求模型改变状态 3.模型将新的数据发送到视图,用户得到反馈 示意图如下: 以上所有通信都是单向的。接受用户指令的时候,MVC有两种方式,一种是通过视图接受指令,然后传递给控制器。另一种是用户直接给控制器发送指令。 实际使用中可能更加灵活,下面是以Backbone.js为例说明。 1.用户可以向视图(View)发送指令(DOM事件),再由View直接要求Model改变状态。 2.用户也可以向Controller发送指令(改变URL触发hashChange事件),再由Controller发送给View。 3. Controller很薄 , 只起到路由作用 , 而View非常厚 , 业务逻辑都放在View

C语言I博客作业09

青春壹個敷衍的年華 提交于 2019-12-05 07:16:13
这个作业属于那个课程 C语言程序设计 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10029 我在这个课程的目标是 熟悉并掌握好C语言及其它的专业性知识 这个作业在那个具体方面帮助我实现目标 完成PTA作业,熟悉break、continue的使用,熟悉使用循环的嵌套解决问题 参考文献 集美大学林丽老师 ,《C Primer Plus》, 作业格式要求 , 伪代码规范 一,PTA实验作业 1,换硬币 将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法? 伪代码 Read x //int整型定义x a←0 //赋值a,b,c,n为0 b←0 c←0 n←0 for a←x/5 ;a>0;a-- //for语句循环,赋值a为x/5,a>0,循环a--,进入下一语句 do for b←x/2;b>0;b-- //for语句循环,赋值b为x/2,b>0,循环b--,进入下一语句 do for c←x/1;c>0;c-- //for语句循环,赋值c为x/1,c>0,循环c-- if 5*a+2*b+1*c←x //如果5*a+2*b+1*c==x then Print a,b,c,a+b+c //则输出a,b,c,a+b+c Print n //输出n 1,数据处理 变量

C语言I博客作业09

独自空忆成欢 提交于 2019-12-05 06:14:23
一.表格 这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 C语言I作业09 我在这个课程的目标是 把C语言学精,熟练掌握编程技术,努力找到 简单代码的写法 这个作业在哪个具体方面帮助我实现目标 PTA上做题,devc++慢慢掌握调试,加强对于 break和continue语句的理解与应用 参考文献 百度百科,其他同学作业,《C Primer Plus》,教科书, 伪代码的写法 二.本周作业 1.PTA实验作业 1.1 换硬币 题目内容描述: 将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法? 1.1.1 数据处理 : 数据表达: x,count,fen5,fen2,fen1,total(变量) ;运算,赋值(怎么来); int(整型) 数据处理: 定义变量x来放待换的零钱数额,fen5来放5分的个数,fen2来放2分的个数,fen1来放1分的个数,total来放3种数额个数的总数,count来放总共有几种换法。total赋值为0;count赋值为0。 输入待换零钱数额 for(fen5=20;fen5>0;fen5--)//进入for嵌套循环 初始5分个数赋值为20个,5分个数大于0,就减1 for(fen2=50;fen2>0;fen2--) 初始初始2分个数赋值为50个,2分个数大于0,就减1 for(fen1=100;fen1>0

JavaScript基础

南笙酒味 提交于 2019-12-05 04:57:40
第一节 JavaScript概述 1.1 JavaScript简介 JavaScript(LiveScript)一种解释性脚本语言,是一种 动态类型 、 弱类型 、基于原型继承的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。 完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型(DOM Document Object Model),浏览器对象模型(BOM Browser Object Model)。 具体参考百度百科 JavaScript 第二节 JavaScript基本语法 入门程序 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>javascrit入门</title> </head> <body> <script type="text/javascript"> //alert("hello world");//弹出窗口显示 document.write("hello world");//页面中显示 </script> </body> </html> 2.1 变量声明 在JavaScript中,任何变量都用var关键字来声明