软件设计师(二)程序设计语言基础知识

news2024/12/23 0:33:10

在这里插入图片描述

程序设计语言是为了书写计算机程序而人为设计的符号语言,用于对计算过程进行描述、组织和推导。

一、程序设计语言概述

1、基本概念

(1)低级语言和高级语言

  • 计算机硬件只能识别由 0、1 组成的机器指令序列,即机器指令程序,因此机器指令是最基本的计算机语言。
  • 用符号表示的指令称为汇编指令,汇编指令的集合被称为汇编语言。

人们称机器语言和汇编语言为低级语言。
面向各类应用的程序设计语言,称为高级语言。不依赖于机器硬件。

(2)编译程序和解释程序

计算机只能理解由 0、1序列构成的机器语言,因此高级程序设计语言需要翻译,担负这一任务的程序称为“语言处理程序”。语言之间的翻译形式有多种,基本方式为汇编、解释和编译。

用某种高级语言或汇编语言编写的程序称为源程序,源程序不能直接在计算机上执行。
源程序是用汇编语言编写,需要汇编程序翻译(汇编)。
源程序是用高级语言编写,需要对应的解释程序或编译程序进行翻译(解释或编译)。

解释程序也叫解释器,直接解释执行源程序,或将源程序翻译成某种中间代码再执行
编译程序也叫编译器,将源程序翻译成目标语言程序,然后在计算机上运行目标程序
在解释方式下,翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立保存的目标程序。

(3)程序设计语言的定义

程序设计语言的定义都涉及语法、语义和语用等方面。

(4)程序设计语言的分类

程序设计语言有交流算法计算机实现的双重目的。

命令式和结构化程序设计语言
命令式语言是基于动作的语言。
通常所称的结构化程序设计语言属于命令式语言类,其结构特性主要反映在以下几个方面:一是用自顶向下逐步精化的方法编程,二是按模块组织的方法编程,三是程序只包含顺序判定(分支)及循环构造,而且每种构造只允许单入口和单出口。

面向对象的程序设计语言

函数式程序设计语言
用函数和表达式建立程序的方法就是函数式程序设计

逻辑型程序设计语言
逻辑型语言是一类以形式逻辑为基础的语言,其代表是建立在关系理论和一阶谓词理论基础上的 PROLOG。
逻辑型程序设计具有与传统的命令式程序设计完全不同的风格。

(5)各种程序语言特点

  1. Fortran语言(科学计算,执行效率高)
  2. Pascal语言(为教学而开发的,表达能力强,Delphi )
  3. C语言(指针操作能力强,高效 )
  4. Lisp语言(函数式程序语言,符号处理,人工智能 )
  5. C++语言(面向对象,高效 )
  6. Java语言(面向对象,中间代码,跨平台)
  7. C#语言(面向对象,中间代码,.Net )
  8. Prolog语言(逻辑推理,简洁性,表达能力,数据库和专家系统 )

2、基本成分

程序设计语言的基本成分包括数据、运算、控制和传输等。

(1)程序设计语言的数据成分

程序设计语言的数据成分指一种程序设计语言的数据类型。
数据表示则指明了程序中值的组织形式。

数据是程序操作的对象,具有存储类别、类型、名称、作用域和生存期等属性,在使用时要为它分配内存空间。
存储类别说明数据在内存中的位置和生存期;
类型说明数据占用内存的大小和存放形式;
作用域则说明可以使用数据的代码范围;
生存期说明数据占用内存的时间特点。

不同角度可将数据进行不同的划分:

  • 常量和变量
  • 全局量和局部量
  • 数据类型:基本类型、用户定义类型、构造类型及其他类型

(2)程序设计语言的运算成分

程序设计语言的运算成分指明允许使用的运算符号及运算规则。
基本运算可以分成算术运算、关系运算、逻辑运算、位运算。

(3)程序设计语言的控制成分

控制成分指明语言允许表述的控制结构,程序员使用控制成分来构造程序中的控制逻辑。程序可以用顺序、选择和循环这 3 种控制结构。
在这里插入图片描述

(4)程序设计语言的传输成分

程序设计语言的传输成分指明语言允许的数据传输方式,如赋值处理、数据的输入和输出等。

(5)函数

函数是程序模块的主要成分,它是一段具有独立功能的程序函数的使用涉及 3 个概念: 函数定义、函数声明和函数调用。

函数定义
函数的定义包括两部分: 函数首部和函数体。
在这里插入图片描述

函数声明
函数应该先声明后引用。
如果程序中对一个函数的调用在该函数的定义之前进行,则应该在调用前对被调用函数进行声明。函数原型用于声明函数。函数声明的一般形式为:返回值类型 函数名(参数类型表)

函数调用
当在一个函数(称为调用函数)中需要使用另一个函数(称为被调用函数)实现的功能时,便以名字进行调用,称为函数调用。
函数调用时,实参与形参间交换信息的方法有值调用引用调用两种。
在这里插入图片描述

二、语言处理程序基础

语言处理程序是一类系统软件的总称,分为汇编程序、编译程序和解释程序。

1、汇编程序基本原理

(1)汇编语言

汇编语言是为特定的计算机设计的面向机器的符号化的程序设计语言。
用汇编语言编写的程序称为汇编语言源程序。

汇编语言源程序由若干条语句组成,其中可以有三类语句:指令语句、伪指令语句和宏指令语句。
指令语句
指令语句又称机器指令语句,将其汇编后产生相应的机器代码。基本的指令有ADD、SUB和AND等。
指令语句可分为传送指令、算术运算指令、逻辑运算指令、移位指令、转移指令和处理机控制指令等类型。

伪指令语句
伪指令语句:汇编程序在汇编源程序时完成某些工作,例如为变量分配存储单元地址,给某个符号赋一个值等。

伪指令语句与指令语句的区别:

  • 伪指令语句经汇编后不产生机器代码,而指令语句经汇编后要产生相应的机器代码
  • 伪指令语句所指示的操作是在源程序被汇编时完成的,而指令语句的操作必须在程序运行时完成。

宏指令语句
在汇编语言中,还允许用户将多次重复使用的程序段定义为宏。宏的定义必须按照相应的规定进行,每个宏都有相应的宏名。在程序的任意位置,若需要使用这段程序,只要在相应的位置使用宏名,即相当于使用了这段程序。因此,宏指令语句就是宏的引用。

(2)汇编程序

汇编程序的功能是将用汇编语言编写的源程序翻译成机器指令程序。
汇编程序一般需要两次扫描源程序才能完成翻译过程。

2、编译程序基本原理

(1)编译过程概述

编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序(汇编语言或机器语言)。
在这里插入图片描述
在这里插入图片描述

词法分析
词法分析阶段的任务是对源程序从前到后 (从左到右) 逐个字符地扫描,从中识别出一个个“单词”符号。“单词”符号是程序设计语言的基本语法单位,如关键字(或称保留字)、标识符、常数、运算符和分隔符 (如标点符号、左右括号) 等。
词法分析过程依据的是语言的词法规则,即描述“单词”结构的规则。

语法分析
语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位,如“表达式”“语句”和“程序”等。
语法规则就是各类语法单位的构成规则。
词法分析和语法分析在本质上都是对源程序的结构进行分析。

语义分析
语义分析阶段分析各语法结构的含义,检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。只有语法和语义都正确的源程序才能翻译成正确的目标代码。
语义分析的一个主要工作是进行类型分析和检查。

中间代码生成
中间代码生成阶段的工作是根据语义分析的输出生成中间代码。

出错处理
错误大致可分为静态错误和动态错误。
动态错误也称动态语义错误。
静态错误是指编译阶段发现的程序错误,可分为语法错误和静态语义错误。

(2)文法和语言的形式描述

字母表、字符串、字符串集合及运算
文法和语言的形式描述
在这里插入图片描述

(3)词法分析

词法分析的任务是把构成源程序的字符串转换成单词符号序列。
在这里插入图片描述
在这里插入图片描述

有限自动机
有限自动机是一种识别装置的抽象概念,它能准确地识别正规集。有限自动机分为两类:确定的有限自动机(DFA)和不确定的有限自动机(NFA)。

M = ( S , Σ , f , S 0 , Z ) M =(S, \Sigma,f,S_0,Z) M=(S,Σ,f,S0,Z)
1)S是一个有限集,每个元素为一个状态
2) Σ \Sigma Σ是一个有穷字母表,每个元素为一个输入字符
3) f f f是转换函数:是一个单值对照。 f ( A , a ) = Q f (A,a)= Q f(A,a)=Q表示当前状态为 A、输入为 a 时,将转换到下一状态 Q,称 Q为A 的一个后继状态
4) S 0 S_0 S0属于S,是其唯一的初态
5)Z是一个终态集

在这里插入图片描述
不确定的有限自动机:对于 S 中的一个给定状态及输入符号,返回一个状态的集合即当前状态的后继状态不一定是唯一的。有向弧上的标记可以是 ϵ \epsilon ϵ
在这里插入图片描述

(4)正规式与有限自动机之间的转换

(5)词法分析器的构造

(6)语法分析

(7)语法制导翻译和中间代码生成

(8)中间代码优化和目标代码生成

3、解释程序基本原理

解释程序是另一种语言处理程序,在运行用户程序时,它直接执行源程序或源程序的中间表示形式。因此,解释程序不产生源程序的目标程序,这是它和编译程序的主要区别。

解释程序实现高级语言的3种方式:
在这里插入图片描述

  • 源程序被直接解释执行的处理方式如标记A 所示。这种解释程序对源程序进行逐个字符的检查,然后执行程序语句规定的动作。通过反复扫描源程序来实现程序的运行,运行效率很低。
  • 解释程序先将源程序翻译成某种中间代码形式,然后对中间代码进行解释来实现用户程序的运行,这种翻译方式如标记 B 和 C 所示。不同于中间代码的级别。在方式 C 下,解释程序采用的中间代码更接近于机器语言

(1)解释程序的基本结构

解释程序通常可以分成两部分:

  • 第一部分是分析部分,包括通常的词法分析、语法分析和语义分析程序,经语义分析后把源程序翻译成中间代码。
  • 第部分是解释部分,用来对第一部分产生的中间代码进行解释执行。

(2)高级语言编译与解释方式的比较

对于高级语言的编译和解释工作方式,可以从以下几个方面进行比较。

  • 效率:编译比解释可能获得更高的效率
  • 灵活性:由于解释程序需要反复检查源程序,这也使得解释方式能够比编译方式更灵活。
  • 可移植性:解释器一般也是用某种程序设计语言编写的,因此只要对解释器进行重新编译,就可以使解释器运行在不同的环境中。

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

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

相关文章

ssm+vue开放式教学评价管理系统源码和论文

ssmvue开放式教学评价管理系统源码和论文121 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身…

如何炒伦敦金

由于疫情的影响,目前世界上多个国家降低存款利率,以推动经济发展,由此也引发了比较严重的通胀问题,尤其是在俄乌冲突之后,国际油价不断上涨,加大了这种通货膨胀的影响。进行伦敦金投资是一种规避通胀的好方…

一文速学-让神经网络不再神秘,一天速学神经网络基础(六)-基于数值微分的反向传播

前言 思索了很久到底要不要出深度学习内容,毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新,很多坑都没有填满,而且现在深度学习的文章和学习课程都十分的多,我考虑了很久决定还是得出神经网络系列文章,…

电脑耳机没声音怎么解决?教你5个方法!

“刚在电脑上插上耳机准备听歌,但是为什么一直都没有声音呢?这是怎么回事呢?自己捣鼓了很久还是没有找到解决方法,有没有大佬可以指点我一下呀?” 有时候我们可能会在电脑上听音乐、看视频等。如果是在公共场合&#x…

【狂神】Spring5笔记(四)之Mybatis和事物的整合

一、整合Mybatis方式一 目录结构: 大致内容结构: 主要难点就在于applicationContext.xml中相关配置的理解 代码图片如下 这个类就专门用于对象的创建就可以了 测试类: 实现类: SqlSessionTemplate 二、整合Mybatis方式二 相关代码…

作为一家游戏开发公司,有哪些经验可以分享?

在竞争激烈的游戏开发行业中,成功的游戏开发公司需要不断学习、创新和积累经验。作为一家经验丰富的游戏开发公司,我们愿意分享一些我们认为对于取得成功至关重要的经验和教训。这些经验涵盖了游戏开发的各个方面,从创意构思到发布和营销。希…

图片懒加载指令

场景和指令用法: 电商网站的首页通常会很长,用户不一定能访问到页面靠下面的图片,这类图片通过懒加载优化手段可以做到只有进入视口区域才发送图片请求 在vue官网中查看的 将一个自定义指令全局注册到应用层级(常见的做法&#xf…

睿趣科技:抖音小店多久可以做起来

随着社交媒体的迅猛发展,抖音成为了全球最受欢迎的短视频平台之一,吸引了数以亿计的用户。在抖音上,人们不仅可以分享自己的生活、才艺和创意,还可以创业经营抖音小店。但是,很多人都想知道,一个抖音小店到…

深度学习技巧应用27-最全的深度学习学习计划的设定与应用,看完更加自信

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用27-最全的深度学习学习计划的设定与应用,看完更加自信。本文将带大家了解不同类型的深度学习模型,包括卷积神经网络(CNN)、循环神经网络(RNN)等,并学习调整模型超参数、优化算法等技巧。通过参与实际的深度学习项…

这五款wifi检测工具,不要太好用

前言 不断有朋友问到关于wifi测试软件有哪些?WiFi信号和声音一样,强弱都是可以测量的,检测WiFi的方法有很多,作为普通的家庭用户,我们有时需要测试WiFi的速度、信号强度、周围WiFi干扰等等,那么wifi信号如…

Git 回顾小结

Git是一个免费开源,分布式的代码版本控制系统,版主开发团队维护代码 作用:记录代码内容,切换代码版本,多人开发时高校合并代码内容 Git常用命令 命令作用注意git -v查看Git版本git init初始化本地Git仓库git add 文件…

【知识积累】准确率,精确率,召回率,F1值

二分类的混淆矩阵(预测图片是否是汉堡) 分类器到底分对了多少? 预测的图片中正确的有多少? 有多少张应该预测为是的图片没有找到? 精确率和召回率在某种情况下会呈现此消彼长的状况。举个极端的例子&#xf…

山西电力市场日前价格预测【2023-09-05】

日前价格预测 预测明日(2023-09-05)山西电力市场全天平均日前电价为262.11元/MWh。其中,最高日前电价为349.80元/MWh,预计出现在19:30。最低日前电价为0.00元/MWh,预计出现在11:45-14:15。 价差方向预测 1&#xff1a…

机械零件保养3d模拟演示打消客户购买顾虑

复杂机械的工作运转是复杂的,想要对机械有深度的理解和迭代,必须了解它的运转原理及参数,复杂机械运行原因教学存在着不可视、系统庞杂及知识点多等弊病,3D虚拟展示是基于web3d网页运行的三维页面,可以将复杂机械运行过…

实现 Entity实例生命周期和vue组件生命周期融合

场景解决方案实现方案index.vue方案解决效果 场景 ceisum中Entity实例的生成和销毁,大部分逻辑和vue代码分离,导致不好阅读和维护 解决方案 ceisum 中实例 Entity 的生命周期,和vue的生命周期’相似’,把两个生命周期结合(把en…

软件设计师学习笔记8-操作系统+进程

目录 1.操作系统 1.1操作系统层次图 1.2操作系统的作用 1.3操作系统的任务 2.特殊的操作系统 3.进程 3.1进程的概念 3.2进程与程序 3.3进程与线程 3.4进程的状态 3.4.1三态模型 3.4.2基于三态模型的五态模型 1.操作系统 1.1操作系统层次图 该图片来自希赛软考 1.…

港陆证券:9月券商金股名单大曝光,“宁王”霸气回归居榜首!

9月金股来袭,37家券商算计引荐273股,其中60股获2家及以上组织引荐。 9月主线行情怎么看 梳理券商9月“金股”策略发现,组织普遍以为当前商场处于底部区域,装备方向上,大都券商主张重视新能源、科技板块,还…

敦煌网、Jumia等跨境电商平台怎么测评(补单)留评?

评论的重要性是众所周知的,对于想要做卖家运营的人来说,它直接影响着产品的销量和排名 那么如何通过自养号测评来提升销量和排名呢? 我相信大家对这个问题已经有了一定的了解,拥有大量自养号可以通过这些号来通过关键词搜索、浏…

【广州华锐互动】智能变电站AR仿真实训系统大大提高培训的效率和质量

随着电力行业的不断发展,变电站的建设和运维变得越来越重要。传统的变电站运维培训方式存在着诸多问题,如难以真实模拟变电站运行环境、信息传递不及时、难以掌握实际操作技能等问题。而智能变电站AR仿真实训系统可以为变电站运维人员带来全新的培训方式…

git:一些撤销操作

参考自 如何撤销 Git 操作?[1] 一、撤销提交 git revert HEAD 撤销上次提交. (会在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化,所有记录都会保留) 二、撤销某次merge git merge --abort 三、替换上一次提交 git commit --ame…