<软考>软件设计师-3程序设计语言基础(总结)

news2024/11/24 17:49:59

(一) 程序设计语言概述

1 程序设计语言的基本概念

1-1 程序设计语言的目的

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

1-2 程序语言分类

  • 低级语言 : 机器语言(计算机硬件只能识别0和1的指令序列),汇编语言
  • 高级语言 : 功能更强,抽象级别更高,与人们使用的自然语言比较接近

1-3 各程序设计语言特点

Fortran语言:	科学计算,执行效率高。
Pascal语言:		为教学开发,表达能力强。
C语言:			指针操作能力强,可以开发系统级软件,高效。
C++语言:		面向对象,高效。
Java语言:		面向对象,中间代码,跨平台。
C#语言:			面向对象,中间代码,.Net框架。
Python:			是一种面向对象、解释型计算机程序设计语言。
Prolog			是逻辑型程序设计语言。

1-4 汇编

汇编语言翻译成目标程序执行。

1-5 解释和编译

高级语言翻译成目标程序执行。不同之处在于编译程序生成独立的可执行文件,直接运行,运行时无法控制源程序,效率高。而解释程序不生成可执行文件,可以逐条解释执行,用于调试模式,可以控制源程序,因为还需要控制程序,因此执行速度慢,效率低

1-6 程序设计语言定义三要素(语法 语义 语用)

  • 1 语法: 是指由程序设计语言的基本符号组成程序中的各个语法成分(包括程序)的一组规则,其中由基本字符构成的符号(单词)书写规则称为词法规则,由符号构成语法成分的规则称为语法规则
  • 2 语义: 是程序设计语言中按语法规则构成的各个语法成分的含义,可分为静态语义动态语义。静态语义指编译时可以确定的语法成分的含义,而运行时刻才能确定的含义是动态语义。一个程序的执行效果说明了该程序的语义,它取决于构成程序的各个组成部分的语义。
  • 3 语用: 表示了构成语言的各个记号和使用者的关系,涉及符号的来源、使用和影响。

1-7 语境

语境是指理解和实现程序设计语言的环境,包括编译环境运行环境

1-8 程序设计语言的分类

  • (1)命令式和结构化程序设计语言,包括Fortran、PASCAL和C语言。
  • (2)面向对象程序设计语言,包括C++、JAVA和Smalltalk语言。
  • (3)函数式程序设计语言,包括LISP、Haskell、Scala、Scheme、APL等。
  • (4)逻辑型程序设计语言,包括PROLOG。

2 程序设计语言的基本成分

  • 1.数据成分 :指一种程序设计语言的数据数据类型。数据分为常量(程序运行时不可改变)、变量(程序运行时可以改变)、全局量(存储空间在静态数据区分配)、局部量(存储空间在堆栈区分配)。数据类型有整型、字符型、双精度、单精度浮点型、布尔型等。

  • 2.运算成分 :指明允许使用的运算符号及运算规则。包括算术运算、逻辑运算、关系运算、位运算等。

  • 3.控制成分 :指明语言允许表述的控制结构。包括顺序结构、选择结构、循环结构
    在这里插入图片描述

  • 4.传输成分 :指明语言允许的数据传输方式。如赋值处理、数据的输入输出等。

  • 5.函数 :C程序由一个或多个函数组成,每个函数都有一个名字,其中有且仅有一个名字为main的函数作为程序运行时的起点。

函数的使用涉及3个概念:函数定义函数声明函数调用

  • 函数定义 :包括两部分:函数首部和函数体。函数的定义描述了函数做什么和怎么做。函数定义的一般形式为:
    返回值的类型 函数名(形式参数表)//函数首部
    {
    函数体;
    }
  • 函数声明 :在首部说明了函数返回值的数据类型、函数的名字和函数运行时所需的参数及类型。函数所实现的功能在函数体部分进行描述。
  • 函数调用 :函数应该先声明后引用。如果程序中对一个函数的调用在该函数的定义之前进行,则应该在调用前对被调用函数进行声明。函数原型用于声明函数。函数声明的一般形式为:
    返回值类型 函数名(参数类型表);

函数调用的一般形式为:函数名(实参表);

函数调用时实参与形参间交换信息的方法有值调用和引用调用两种。
(1)值调用: 若实现函数调用时将实参的值传递给相应的形参,则称为是传值调用。在这种方式下形参不能向实参传递信息。在c语言中,要实现被调用函数对实参的修改,必须用指针作为参数。即调用时需要先对实参进行取地址运算,然后将实参的地址传递给指针形参。其本质上仍属于值调用。这种方式实现了间接内存访问。
(2)引用调用: 引用是C++中引入的概念,当形式参数为引用类型时,形参名实际上是实参的别名,函数中对形参的访问和修改实际上就是针对相应实参所做的访问和改变。

(二) 语言处理程序基础

1 编译程序基本原理

编译程序对高级语言源程序进行编译的过程中,要不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入符号表中

编译过程图:
在这里插入图片描述

  • 词法分析: 是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。

  • 语法分析: 是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式"等等.语法分析程序判断源程序在结构上是否正确

  • 语义分析: 是编译过程的一个逻辑阶段.语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查,进行类型审查。如类型匹配、除法除数不为0等。又分为静态语义错误(在编译阶段能够查找出来)和动态语义错误(只能在运行时发现)。

中间代码和目标代码

中间代码是根据语义分析产生的,需要经过优化链接,最终生成可执行的目标代码。引入中间代码的目的是进行与机器无关的代码优化处理。常用的中间代码有后缀式(逆波兰式)、三元式(三地址码)、四元式等形式。

需要考虑三个问题(一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量)。

前缀表达式: +ab
中缀表达式:a+b
后缀表达式: ab+

在这里插入图片描述

三种表达式其实就是树的三种遍历一般正常的表达式是中序遍历,即中缀表达式,根据其构造出树,再按题目要求求出前缀或后缀式。

◆简单求法:后缀表达式是从左到右开始,先把表达式加上括号,再依次把运算符加到本层次的括号后面。

2 文法定义

在这里插入图片描述◆文法G是一个四元组,可表示为G= (V,T, P,S),其中:

V:非终结符,不是语言组成部分,不是最终结果,可以推导出其他元素。
T:终结符,是语言的组成部分,是最终结果,不能再推导其他元素。
S:起始符,是语言的开始符号。
P:产生式,用终结符代替非终结符的规则,例如a->b。

乔姆斯基(Chomsky)把文法分成4种类型,即0型、1型、2型和3型。

  • 0型文法也称为短语文法,其功能相当于图灵机,任何0型语言都是递归可枚举的;反之,递归可枚举集也必定是一个0型语言。
  • 1型文法也称为上下文有关文法这种文法意味着对非终结符的替换必须考虑上下文,并且一般不允许替换成e串。例如,若αAB→avβ是1型文法的产生式,α和β不全为空,则非终结符A只有在左边是α,右边是β的上下文中才能替换成γ。
  • 2型文法就是上下文无关文法非终结符的替换无须考虑上下文。程序设计语言中的大部分语法都是上下文无关文法,当然语义上是相关的,要注意区分语法和语义。
  • 3型文法等价于正规式,因此也被称为正规文法或线性文法。

3 正规式

  • 语言中具有独立含义的最小语法单位是符号(单词),如标识符、无符号常数与界限符等。词法分析的任务是把构成源程序的字符串转换成单词符号序列。

  • 词法规则可用3型文法(正规文法)或正规表达式描述,它产生的集合是语言规定的基本字符集(字母表)上的字符串的一个子集,称为正规集。

  • 正规式和正规集:
    在这里插入图片描述

  • 仅通过有限次地使用上述3个步骤定义的表达式才是z上的正规式,其中,运算符“|” “·” “*”分别称为“或” “连接” 和 “闭包”。在正规式的书写中,连接运算符“·”可省略,运算的优先级从高到低顺序排列为“*” “·” “I”。设∑={a, b},下表列出了∑上的一些正规式和相应的正规集。

在这里插入图片描述

4 有限自动机

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

  • (1)确定的有限自动机(DFA)

一个确定的有限自动机是个五元组(S,∑,f,s0,z),其中:

  • s是一个有限集,其每个元素称为一个状态。
  • ∑是一个有穷字母表,其每个元素称为一个输入字符。
  • f是S×∑ -> S上的单值部分映像。
  • f(A, a)=Q表示当前状态为A、输入为a时,将转换到下一状态Q。称Q为A的一个后继状态。
  • S∈S,是唯一的一个开始状态。
  • z是非空的终止状态集合,Z⊆S。

状态转换图:
在这里插入图片描述

  • (2)不确定的有限自动机(NFA)

一个不确定的有限自动机也是一个五元组,它与确定有限自动机的区别如下:

  • f是S×∑ -> S上的映像。对于S中的一个给定状态及输入符号,返回一个状态的集合。即当前状态的后继状态不一定是唯一的。
  • 有向弧上的标记可以是ε。

状态转换图:
在这里插入图片描述

确定的有限自动机和不确定的有限自动机:输入一个字符,看是否能得出唯一的后继,若能,则是确定的,否则若得出多个后继,则是不确定的。

5 语法分析方法

  • 自上而下语法分析:最左推导,从左至右。给定文法G和源程序串r。从G的开始符号s出发,通过反复使用产生式对句型中的非终结符进行替换(推导),逐步推导出r。
  • 递归下降思想:原理是利用函数之间的递归调用模拟语法树自上而下的构造过程,是一种自上而下的语法分析方法。
  • 自下而上语法分析:最右推导,从右至左。从给定的输入串r开始,不断寻找子串与文法G中某个产生式P的候选式进行匹配,并用P的左部代替(归约)之,逐步归约到开始符号s.
  • 移进-规约思想:设置一个,将输入符号逐个移进栈中,栈顶形成某产生式的右部时,就用左部去代替,称为归约。很明显,这个思想是通过右部来推导出左部,因此是自下而上语法分析的核心思想。

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

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

相关文章

第二十一章总结。。

计算机网络实现了堕胎计算机间的互联,使得它们彼此之间能够进行数据交流。网络应用程序就是再已连接的不同计算机上运行的程序,这些程序借助于网络协议,相互之间可以交换数据,编写网络应用程序前,首先必须明确网络协议…

同旺科技 USB TO RS-485 定制款适配器--- 拆解(四)

内附链接 1、USB TO RS-485 定制款适配器 ● 支持USB 2.0/3.0接口,并兼容USB 1.1接口; ● 支持USB总线供电; ● 支持Windows系统驱动,包含WIN10 / WIN11系统32 / 64位; ● 支持Windows RT、Linux、Mac OS X、Windo…

【爬取音乐,并将音乐信息储存到数据库中】

爬取音乐,并将音乐信息储存到数据库中 确定音乐网站的url并分析网站分析二级页面创建数据库使用Xpath解析,进行多层爬取保存信息完整代码结果 确定音乐网站的url并分析网站 分析二级页面 创建数据库 # 创建一个链接对象 conn pymysql.connect(hostmaster, userroo…

浅谈https

1.网络传输的安全性 http 协议:不安全,未加密https 协议:安全,对请求报文和响应报文做加密 2.对称加密与非对称加密 2.1 对称加密 特点: 加解密使用 相同 秘钥 高效,适用于大量数据的加密场景 算法公开&a…

C++——内部类

class A { public:class B//内部类{private:int _b;}; private:int _a; }; int main() {cout << sizeof(A) << endl;return 0; } 概念及特征&#xff1a; 如果一个类定义在另一个类的内部&#xff0c;这个类就叫内部类。注意此时这个内部类是一个独立的类&#x…

EarCMS 前台任意文件上传漏洞复现

0x01 产品简介 EarCMS是一个APP内测分发系统的平台。 0x02 漏洞概述 EarCMS前台put_upload.php中,存在pw参数硬编码问题,同时sql语句pdo使用错误,没有有效过滤sql语句,可以控制文件名和后缀,导致可以任意文件上传。 0x03 复现环境 FOFA:app="EearCMS" 0x0…

UEFI下Windows10和Ubuntu22.04双系统安装图解

目录 简介制作U盘启动盘并从U盘启动电脑安装系统安装Windows系统安装Ubuntu 附录双系统时间不一致 简介 传统 Legacy BIOS主板下的操作系统安装可参考本人博客 U盘系统盘制作与系统安装&#xff08;详细图解&#xff09; &#xff0c;本文介绍UEFI主板下的双系统安装&#xff…

JavaSE语法之五:数组的定义与使用(超详解!!!)

文章目录 一、数组的概念1. 什么是数组2. 数组的创建及初始化3. 数组的使用3.1 数组中元素的访问3.2 遍历数组 二、数组是引用类型1. 初始JVM的内存分布2. 基本类型变量与引用变量的区别3. 引用变量4. 认识null 三、数组的应用场景1. 保存数据2. 作为函数的参数2.1 参数传基本类…

【从零认识ECS云服务器 | 快速上线个人网站】阿里云手动搭建WordPress网站

第一步&#xff1a;部署 LAMP/LNMP 环境&#xff0c;需要在ECS实例中安装操作系统&#xff08;Linux&#xff0c;本例中使用的操作系统版本为CentOS 7.9 64位&#xff09;、Web服务器软件&#xff08;Apache/Nginx&#xff09;、数据库软件&#xff08;MySQL&#xff09;、网站…

Linux(16):认识系统服务(daemons)

什么是 daemon 与系统服务 【服务】一般的说明是【常驻在记体体中的程序&#xff0c;且可以提供一些系统或网络功能&#xff0c;那就是服务】。而服务一般的英文说法是【service】。 简单的说&#xff0c;系统为了某些功能必须要提供一些服务(不论是系统本身还是网络方面)&…

Makefile语法

一、Makefile规则格式 Makefile 里面是由一系列的规则组成的&#xff0c;这些规则格式如下&#xff1a; 目标…... : 依赖文件集合…… 命令 1 命令 2 ……参考上一节gcc编译器与Makefile入门参考这条规则 1 main: main.o input.o calcu.o2 gcc -o main main.o input.o c…

Windows 基于 VMware 虚拟机安装银河麒麟高级服务器操作系统

前言 抱着学习的态度研究一下麒麟系统的安装 银河麒麟&#xff08;KylinOS&#xff09;原是在“863计划”和国家核高基科技重大专项支持下&#xff0c;国防科技大学研发的操作系统&#xff0c;后由国防科技大学将品牌授权给天津麒麟&#xff0c;后者在2019年与中标软件合并为…

【Java基础篇 | 面向对象】—— 聊聊什么是接口(上篇)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习JavaSE的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 关于接口的简单的介绍…

七、Linux服务器集群搭建

详见《Linux服务器集群搭建》 【往期回顾】 一、Linux系统概述和安装 二、Linux基础命令 三、Linux高级命令 四、虚拟机网络配置 五、Linux基础软件安装 六、shell编程

Tomcat的初步学习

Tomcat ~~ 一个 HTTP 服务器 HTTP协议就是HTTP客户端和HTTP服务器之间通信使用的协议, HTTP客户端就是浏览器(当然也有别的). HTTP服务器,则有很多种实现. tomcat 是 Java 圈子中, 最知名, 最广泛使用的 HTTP 服务器 Tomcat的下载安装 官网链接 Apache (阿帕奇)最早也是个开源…

【Python】 Python web开发库大全

库排序是按照使用人数和文档的活跃度为参考进行的&#xff0c;建议大家使用排名靠前的框架&#xff0c;因为它们的文档更齐全&#xff0c;技术积累要更多&#xff0c;社区更繁盛&#xff0c;能得到更好的支持&#xff0c;这样在遇到自己无法解决的问题&#xff0c;可以更快更高…

收藏!当今最流行的10 种人工智能算法

人工智能的概念始于1956年的达特茅斯会议&#xff0c;由于受到数据、计算力、智能算法等多方面因素的影响&#xff0c;人工智能技术和应用发展经历了多次高潮和低谷。 2022年以来&#xff0c;以ChatGPT为代表的大模型一夜爆火&#xff0c;它能够基于在预训练阶段所见的模式和统…

Unity UGUI TextMeshPro实现输入中文和表情包(Emoji)表情

目录 实现中文显示 准备工作 1、打开Window——TextMeshPro——FontAssetCreator 2、把字体文件放入SourceFont中 3、把CharacterSet改为Characters from File 4、把字体库文件放入Characters File 5、设置好参数点击Generate Font Atlas等待完成后保存 6、把生成后保存…

代码随想录算法训练营第44天| 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ

JAVA代码编写 52. 携带研究材料 题目描述 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带一些研究材料&#xff0c;但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等&#xff0c;…

在Ascend昇腾硬件用npu加速paddleLite版本ocr(nnadapter)

在Ascend昇腾硬件用npu加速paddleLite版本ocr&#xff08;nnadapter&#xff09; 参考文档* nnadapter参考文档地址* 华为昇腾 NPU参考文档地址* PaddleLite的CAPI参考文档 一.确保cpu版本运行正常二.编译Ascend上npu加速库三.跑通npu加速版本Demo1.Demo下载地址2.参考手册网址…