编译原理-程序设计语言的设计

变量 存储单元及它的名称由变量的概念来代替;
     可以代表一个或一组单元,可以修改。


绑定

绑定:一个实体(或对象)与其某种属性建立起某种联系的 过程,称为绑定。
静态绑定:凡是在编译时能确定的属性,称为静态属性;
      若绑定在编译时完成,运行时不改变,称为静态绑定。
动态绑定:凡是在运行时才能确定的属性称为动态的。
          若绑定在运行时完成,称为动态绑定。
 

变量及其属性

变量是对一个(或若干个)存储单元的抽象,赋值语句则是修改存储单元内容的抽象

变量除名字外,具有四个属性:作用域、生存期、值和类型。

变量的作用域是指可以访问该变量的程序范围。

静态作用域绑定:按照程序的语法结构定义变量的作用域。
动态作用域绑定:按照程序的执行动态地定义变量的作用域。

变量的生存期:

一个存储区绑定于一个变量的时间区间,称为变量的生存期。

变量的值:即变量对应存储区单元的内容

关于变量的值的主要问题:
    变量与它的值的绑定是动态的

    变量的初始化,几种处理方法:
        不初始化则出错
        随机
        缺省值0

变量的类型

类型的定义:    变量的类型是与变量相关联的值的类,以及对这些值进行的操作的说明。

静态绑定:通过说明语句完成 如:Pascal、Fortran、C

动态绑定:执行时隐式说明,且动态变化

         
虚拟机

虚拟机是由软件实现的机器。

翻译汇编语言的程序称为汇编程序(器)

翻译高级语言的程序称为编译程序(器)

机器语言就是二进制。汇编语言类似三元式

高级语言:

直观、自然、易于理解

易读、易写、易于交流、出版和存档

一般都是独立于机器的,易于移植

程序单元

程序单元:程序执行过程中的独立调用单元; 如子程序、分程序、过程等。

在编译时,单元表示是该单元的源程序。

运行时,单元表示由一个代码段和一个活动记录组成,称为单元实例
活动记录:执行单元所需要的信息,以及该单元的局部变量所绑定的数据对象的存储区。

引用环境:局部变量+非局部变量

副作用:对绑定于一个非局部变量的对象进行修改时,将产生副作用。

程序单元可以递归激活,从而一个单元可以有很多个实例,但代码段相同。不同的仅仅是活动记录。

数据类型  

数据类型实质上是对存储器中所存储的数据进行抽象。 它包含了一组值的集合和一组操作。


数据类型的作用

实现了数据抽象
使程序员从机器的具体特征中解脱出来
提高了编程效率

数据类型的分类

内部类型:语言定义的
自定义类型:用户定义的

内部类型的优越性

内部类型是对硬件基本位串的抽象。

1.基本表示的不可见性:基本位串对程序员是不可见的。
优点(程序员): 导致不同的程序设计风格、可写性、可读性、可修改性

2.编译时能检查变量使用的正确性,进行静态类型检查

3.编译时可以确定无二义的操作

超载(多态)的概念:运算符的意义依赖于操作数的类型。如“+”可以表示整数加或实数加

编译时,可拒绝混合运算,或提供类型转换指令
4.精度控制:可以通过数据类型显式定义数据的精度

用户定义类型(6种聚合方式)

用户自定义类型是对内部类型和其他用户自定义类型的抽象。

1. 笛卡尔积

C语言:结构St

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

武汉科技大学,计算机考研全面改考408,24计算机专硕复试线仅298分!武汉科技大学计算机考研考情分析!

武汉科技大学(Wuhan University of Science and Technology)简称“武科大”,坐落于湖北省武汉市,是湖北省人民政府、教育部和六家国家特大型企业共建高校,是湖北省“双一流”建设重点高校,入选国家“中西部…

高考志愿填报自动更新数据小程序开源版开发

高考志愿填报自动更新数据小程序开源版开发 版本一:java开源域名授权(自动更新数据);5999 自研RSCH算法,专业和测评综合推算 微信一键登录注册,免注册获取微信头像、昵称 支持院校和专业优先,…

28 - 只出现一次的最大数字(高频 SQL 50 题基础版)

28 - 只出现一次的最大数字 select (selectnumfromMyNumbers group bynum havingcount(num)1order by num desc limit 1) as num;

Doris insert into 插入语句执行成功,且select查询成功,返回结果不报错,但查不到该插入数据

问题:Doris insert into 正常执行成功,select 查询也执行成功,但查不到该写入数据 原因:由于有其他 insert commit 事务待提交且该任务处于锁的状态,导致不断在回滚,进而造成其他的insert into 语句也执行成…

广西容县“四力”并举提质效,正宇软件助力智慧人大建设

近日,广西容县在提升人大代表履职质效方面取得显著成效,通过汇聚“四力”——活力、动力、合力、能力,成功打造了一个高效、务实的人大代表履职环境。这一成果不仅为当地人大工作树立了新的标杆,也为广西乃至全国的人大代表履职模…

24-unittest简介

一、unittest简介 unittest是Python中常用的单元测试框架,与Java中的Junit单元测试框架类似。 二、示例程序 1)导入unittest模块 import unittest 2)使用help()函数查看源码中的示例程序 help(unittest) Simple usage:import unittestc…

数组和指针的联系(C语言)

数组和指针是两种不同的数据类型,数组是一种构造类型,用于存储一组相同类型的变量;而指针是一种特殊类型,专门用来存放数据的地址。数组名除了sizeof(数组名)和&数组名表示整个数组外,其他情况下都表示的是首元素的…

Visual Studio Code 开发esp8266流程2Arduino 配置 nodemcu

http://arduino.esp8266.com/stable/package_esp8266com_index.json http://arduino.esp8266.com/stable/package_esp8266com_index.json Arduino: Library Manager Arduino: Board

零拷贝技术

背景 磁盘可以说是计算机系统重最慢的硬件之一,读写速度相对内存10以上,所以针对优化磁盘的技术非常的多,比如:零拷贝、直接I/O、异步I/O等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统内核中的…

【Unity学习笔记】反射

文章目录 前言反射通过反射获取类型 Unity中的反射用反射在Unity中动态加载 前言 在我平时做项目的时候,由于我们做的项目都是很简单的,所以不怎么接触反射机制。最早了解反射机制是关于Invoke的时候,知道可以通过方法名来直接进行Invoke调用…

数字人动作解决方案,塑造逼真动作

在品牌形象塑造、市场推广及客户服务等领域,企业正面临着前所未有的挑战和机遇。为满足企业的需求,美摄科技凭借其在人工智能和计算机视觉领域的深厚积累,推出了面向企业的数字人动作解决方案,助力企业轻松打造逼真、灵活的虚拟形…

apple开发者账户证书删除与下载

1.打开并登陆: Sign In - Apple 选择证书 证书管理页面 证书详情 删除或者下载证书 下载证书 删除证书

【实战】kafka3.X kraft模式集群搭建

文章目录 前言kafka2.0与3.x对比准备工作JDK安装kafka安装服务器增加hosts 修改Kraft协议配置文件格式化存储目录 启动集群停止集群测试Kafka集群创建topic查看topic列表查看消息详情生产消息消费消息查看消费者组查看消费者组列表 前言 相信很多同学都用过Kafka2.0吧&#xf…

【MySQL03】【 Buffer Pool】

文章目录 一、前言二、缓冲池(Buffer Pool )1. 缓冲池的概念2. LRU List、Free List 和 Flush List2.1 Free 链表2.1.1 缓冲页的哈希处理 2.2 Flush 链表2.3 LRU 链表2.3.1 简单 LRU 链表2.3.2 优化后的 LRU 列表2.3.3 更进一步的优化 3. 脏页的刷新4. 多…

【最新鸿蒙应用开发】——Want信息载体

信息传递载体Want 1、概述 上一章节我们学习了UIAbility组件 【最新鸿蒙应用开发】——一篇搞懂什么是UIAbility-CSDN博客 ,其中组件间的交互传递信息的媒介就是Want,本章节我们来更加深入学习Want的相关知识。 Want是一种对象,用于在应用组…

性能狂飙:SpringBoot应用优化实战手册

在数字时代,速度就是生命,性能就是王道!《极速启航:SpringBoot性能优化的秘籍》带你深入SpringBoot的内核,探索如何打造一个飞速响应、高效稳定的应用。从基础的代码优化到高级的数据库连接池配置,再到前端…

恭喜!Z医生喜提世界顶级梅奥诊所访问学者邀请函

➡️【院校简介】 梅奥诊所(Mayo clinic),于1863年在美国明尼苏达州罗彻斯特创立,是全球规模最大的综合性非营利医生执业组织。它是以不断创新的医学教育和世界领先的医学研究为基础,建立起来的全美规模最大、设备最先…

YashanDB携手宏杉科技助力国产软件生态发展

近日,深圳计算科学研究院崖山数据库系统YashanDB与宏杉科技系列存储、系列服务器与数据库一体机等多款产品顺利完成兼容性互认证。经严格测试,双方产品完全兼容,稳定运行,共同提供高效、稳定、安全的国产软硬件一体化解决方案&…

Spring异步任务@Async的默认线程池执行器是如何初始化的

Spring异步任务Async的默认线程池执行器,是从哪里来?是如何初始化的? 结论先行 异步任务Async的默认线程池执行器是通过TaskExecutionAutoConfiguration#applicationTaskExecutor自动注入的。 异步任务的线程池执行器是如何初始化的&#…

查看Linux端口占用和开启端口命令

查看端口的使用的情况 lsof 命令 比如查看80端口的使用的情况 lsof -i tcp:80列出所有的端口 netstat -ntlp查看端口的状态 /etc/init.d/iptables status开启端口以开启端口80为例。 1 用命令开启端口 iptables -I INPUT -p tcp --dport 80 -j accpet --写入要开放的端口/…