【软件评测】03程序语言基础

2023-05-16

仅为学习记录~

程序设计语言概述

低级语言

机器语言:用二进制代码表示的计算机的指令等,所有都是二进制表示,计算机可以直接执行,而不需要再次进行编译
优点:执行效率较高,较灵活
缺点:导致程序编写、阅读、理解较难,不利于开发计算机程序

汇编语言:为了克服机器语言的缺点,用一定的缩写来代替某些指令
例:用add来代替二进制的加法,便于记忆
本质还是机器语言,用某些缩写代替了机器语言

汇编语言程序
汇编语言写成程序,翻译成与之等价的机器语言程序的程序语言

汇编程序:汇编语言写成的程序代码

高级语言

高级语言的特点及应用

Fortran语言—科学计算,执行效率高
Pascal语言—为教学而开发的,表达能力强,Delphi
C语言—指针操作能力强,高效
Lisp语言—函数值程序语言,符号处理,人工智能
C++语言—面向对象,高效
Java语言—面向对象,中间代码,跨平台
C#语言—面向对象,中间代码,.Net
Smalltalk—面向对象,程序设计语言、程序设计环境、应用开发环境
Prolog—逻辑推理。简洁性,表达能力,数据库和专家系统
Python—一种脚本语言

静态类型语言

在编译时,需要明确数据类型为静态语言

java、C++、C#都属于静态语言

动态类型语言

在编译时,可以没有明确,当程序运行到具体的赋值语句时才明确

PHP、python、JavaScript属于动态语言

解释程序

不生成目标程序,解释的程序在运行时需要源代码/等效的中间代码+解释器一起运行,控制层在解释器上

编译程序

编译程序会将源程序编译成目标计算机的目标程序
编译的目标程序,计算机直接拉编译程序运行,不需要运行源程序
反编译不能还原出源程序,只能还原到中间状态,可以帮助理解设计程序的一些思路

编译过程

语句:用来描述程序中运算步骤、控制结构、数据传输的
语法:程序的语言的基本符号组成的程序,要符合各个部分的语法规则
语义:不同结构语法的结构含义

语义分为静态语义和动态语义
静态语义:程序在编译过程中需要明确的语义
动态语义:需要去运行程序才能明确的语义
在编译过程中,只会分析静态语义,在运行过程中,才会分析动态语义

语用:程序与使用者之间的关系

编译过程

在这里插入图片描述
词法分析:编译的第一个阶段,对源程序从前往后、从左往右按照词法规则去分析
语法分析:在词法分析的基础上,按照语法规则的要求是不是构成一个正确的程序
语义分析:在语法分析的基础上,去检查程序的静态语义,主要数据的类型进行分析和检查
中间代码生成:根据语法分析输出对应的中间代码
代码优化:对中间代码进行适当的优化
目标代码生成:根据目标计算机的特点,生成对应的指令代码

中间代码生成和代码优化并不是每个编译器都必需的

符号表管理和出错处理贯穿整个编译过程
符号表管理:记录源程序中各种符号的必要信息,以辅助语义的正确性检查,以及在编译过程中能够快速去进行查找、修改、插入的相关操作
出错处理:在整个编译过程中的错误相关

中间代码有利于进行语机器无关的机器处理(特点)

文法

文法定义

G=(Vn,Vt,P,S)

文法推导

需练习相关题型

正规表达式和正规集

在这里插入图片描述
在这里插入图片描述

有限自动机

确定的有限自动机

如果输入值给定值是a,他的状态一定转移,那就是确定的有限自动机
在这里插入图片描述

非确定的有限自动机

如果输入的值给定值为a,他的后继状态不一定是唯一的,那就是非确定的有限自动机
111

程序基本的控制结构

顺序结构

依次执行,不会产生分支的情况
在这里插入图片描述

循环结构

到节点后有条件判定,如果符合要求执行循环内语句,如果不符合则跳转循环,执行下面的语句 ,例for循环、while循环
在这里插入图片描述

选择结构

又称分支结构,例if…else…
在这里插入图片描述

表达式

表达式

前缀表达式(+ab)
中缀表达式(a+b)
后缀表达式(ab-) 逆波兰式
采用逆波兰表示时,利用栈求值

数据类型

数据类型是一种程序语言的数据类型

数据名称:有用户通过标识符命名
数据类型:说明数据占用内存的大小和存放形式
存储类别:说明数据在内存中的位置和生存期
作用域:说明可以使用数据的代码范围
生存期:说明数据占用内存的时间范围
常量:固定不变的值,程序运行过程中,代表的值永远不变
变量:值可以变的量,变量能够作为某特定种类的值中任何一个的保留器
全局量:变量的作用范围为全局
局部量:变量的作用范围为指定代码

数据类型

基本类型:整型、字符型、实型、布尔类型
特殊类型:空类型(void)
用户定义类型:枚举类型
构造类型:数组、结构、联合
指针类型:type*
抽象类型:类类型

标识符

标识符的作用:为变量、函数、数据类型命名

传址与传值

形参:定义函数过程中,声明的参数
实参:在调用过程中,用实际参数替代形参
传值调用:把实际参数的值传给该函数
传址调用:把实际参数存放的地址传给该参数,传址能把运算后的值传给实参

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【软件评测】03程序语言基础 的相关文章

随机推荐

  • 通俗地、有效地学习Linux驱动&应用(只要没更完有空就更)

    目录 食用方法 Warning Linux系统分层的意义 系统移植和烧写 Windows系统下通过OTG烧写 Ubuntu脚本烧写 Windows脚本烧写 通过uboot进行操作 Debian移植 xff08 EBF6ULL系列请看 xff
  • ROS+Opencv的双目相机标定和orbslam双目参数匹配

    本文承接ROS调用USB双目摄像头模组 目录 先完成单目标定双目标定生成可用于ORB SLAM2的yaml文件生成可用于ORB SLAM3的yaml文件参考 按照上面链接配置好后 xff0c 执行 rostopic list 你应该可以找到
  • 双目相机 -- IMU联合标定

    声明 xff1a 一些图片是不该有水印的 xff0c CSDN把图片链接的格式改了 xff0c 暂时还不知道怎么去掉 xff0c 请见谅 xff01 xff01 xff01 目录 声明 xff1a 一些图片是不该有水印的 xff0c CSD
  • window子系统wsl2安装kali及桌面

    一 先升级wsl2 xff08 1 xff09 wsl1没有Linux的内核 xff0c 所以很多Linux版本的工具都无法在wsl1中运行 xff0c 比如 xff1a docker xff0c Linux版本的浏览器等等 所以需要升级为
  • 京东秒杀系统模块的Redis分布式锁深度剖析,没给你讲明白你打我!

    1 0背景 目前开发过程中 xff0c 按照公司规范 xff0c 需要依赖框架中的缓存组件 不得不说 xff0c 做组件的大牛对CRUD操作的封装 xff0c 连接池 缓存路由 缓存安全性的管控都处理的无可挑剔 但是有一个小问题 xff0c
  • 一次搞懂,Docker底层原理分析实战

    当今 xff0c Docker 技术已经形成了更为成熟的生态圈 xff0c 各家公司都在积极做业务容器化改造 xff0c 大家对 Docker 也都已经不再陌生 但在我刚接触 Docker 时 xff0c 市面上的资料还非常少 xff0c
  • RocketMq安装出现的问题

    RocketMq4 9 3版本下载安装问题 xff08 Win10 xff09 1 官网https rocketmq apache org docs quick start 找到下图中所示的链接 下载链接 解压到自己想要的目录下 xff0c
  • 阿里云服务器搭建fastdfs

    fastdfs安装介绍 环境准备 本人的阿里云服务器CentOS Linux release 7 9 2009 Core 版本 xff08 通过命令cat etc redhat release查看自己的Linux版本信息 xff09 过程中
  • win10搭建mysql主从复制的两个测试主从数据库

    mysql主从复制基础 win10电脑设置两个mysql数据库 卸载MySQL数据库 本人只是想把自己的mysql5 7 4升级为mysql8版本 xff0c 这里顺带记录一下 xff0c 以便有需要的人查看备份数据库 本人使用的是sqly
  • mac系统n工具下载node.js速度过慢(导致下载失败)

    n工具下载node js失败 n工具n工具下载node js失败的原因解决注意 n工具 n工具是mac系统用来管理多个node js版本的工具 xff0c 我们如果要使用到多个node js版本 xff0c 那么就可以使用n工具 xff0c
  • 使用Git小乌龟初始化本地仓库并且创建新的分支提交 删除分支(超详细图文教程,手把手教你做)

    前段时间入了小乌龟的坑 xff0c 最近项目需要多人合作 xff0c 就需要使用分支提交项目 xff0c 这里刚好就使用到了创建分支功能 xff0c 就记录一下使用的完整过程 文章目录 第一步 初始仓库 xff1a 1 1 创建完成项目会多
  • opencv笔试面试必背题目

    算法工程师 xff0c 技术软件类求职opencv必背八股文 更多算法 业务 HR面等笔试题面试题 gt 个性签名自取 xff01 1 opencv中RGB2GRAY是怎么实现的 答 xff1a 以R G B为轴建立空间直角坐标系 xff0
  • 我的新地址 http://www.cppblog.com/flyingxu/

    我的新地址 http www cppblog com flyingxu 这里的文章不会移过去 xff0c 也不会继续更新 xff0c 保持现状 以后会不会重新开始更新 xff0c 也不确定
  • px4+ros+gazebo+ORB_SLAM2室内视觉无人机导航

    px4 43 ros 43 gazebo 43 ORB SLAM2室内视觉无人机导航 一 ros 43 px4环境搭建 我用的ORB SLAM2视觉相机跑图首先要安装ros 43 px4环境 xff0c 我用的阿木实验室的镜像 xff0c
  • pc+tx2通信

    https blog csdn net RNG uzi article details 107285113
  • F4烧写PX4固件

    一 硬件准备 一个f4v3pro或者f4v3s飞控 xff0c 一根USB线 xff0c F450机架 xff0c ET07接收机和配套遥控器 xff0c 20A电调 xff0c 电机 xff0c 格式3s电池 1 无人机组装效果图 上 上
  • C++结构体类型变量

    C 43 43 定义结构体类型变量的方法 1 先声明结构体类型再定义变量名 xff0c 在定义了结构体变量后 xff0c 系统会为之分配内存单元 span class token keyword struct span Student sp
  • pycharm中如何安装tensorflow、cv2

    做卷积神经网络时用到了Python xff0c 记录一下遇到的问题 xff0c 首先 xff0c anaconda和pycharm的安装可按照网上的教程来 tensorflow的安装 但是 xff0c 当配置好解释器之后 xff0c 面临的
  • 【vscode和gitee】如何更改VsCode的gitee远程库地址,并提交到新的仓库中

    如何更改VsCode的gitee远程库地址 xff0c 并提交到新的仓库中 1 查看并更换git远程仓库地址 span class token number 1 span 查看当前remotes span class token funct
  • 【软件评测】03程序语言基础

    仅为学习记录 程序设计语言概述 低级语言 机器语言 xff1a 用二进制代码表示的计算机的指令等 xff0c 所有都是二进制表示 xff0c 计算机可以直接执行 xff0c 而不需要再次进行编译 优点 xff1a 执行效率较高 xff0c