【软考数据库】第二章 程序语言基础知识

目录

2.1 程序设计语言的基本概念
2.2 程序设计语言的基本成分
2.3 编译程序基本原理


前言:

笔记来自《文老师软考数据库》教材精讲,精讲视频在b站,某宝都可以找到,个人感觉通俗易懂。

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

  • 程序设计语言是为了书写计算机程序而人为设计的符号语言,用于对计算过程进行描述、组织和推导。
  • 低级语言:机器语言 (计算机硬件只能识别o和1的指令序列),汇编语言
  • 高级语言:功能更强,抽象级别更高,与人们使用的自然语言比较接近。
  • 各程序设计语言特点:
    (1)Fortran语言:科学计算,执行效率高
    (2)Pascal语言:为教学开发,表达能力强
    (3)C语言:指针操作能力强,可以开发系统级软件,高效
    (4)C++语言:面向对象,高效。
    (5)Java语言:面向对象,中间代码,跨平台
    (6)C#语言:面向对象,中间代码,.Net框架
    (7)Python是一种面向对象、解释型计算机程序设计语言
    (8)Prolog是逻辑型程序设计语言。
  • 汇编:将汇编语言翻译成目标程序执行。
  • 解释和编译:将高级语言翻译成目标程序执行。不同之处在于:
    (1)编译程序生成独立的可执行文件,直接运行,运行时无法控制源程序,效率高。
    (2)而解释程序不生成可执行文件,可以逐条解释执行,用于调试模式,可以控制源程序,因为还需要控制程序,因此执行速度慢,效率低。
  • 程序设计语言定义三要素::语法、语义、语用。
    (1)语法是指由程序设计语言的基本符号组成程序中的各个语法成分 (包括程序)的-组规则,其中由基本字符构成的符号 (单词)书写规则称为词法规则,由符号构成语法成分的规则称为语法规则。
    (2)语义是程序设计语言中按语法规则构成的各个语法成分的含义,可分为静态语义和动态语义。静态语义指编译时可以确定的语法成分的含义,而运行时刻才能确定的含义是动态语义。一个程序的执行效果说明了该程序的语义,它取决于构成程序的各个组成部分的语义。
    (3)语用表示了构成语言的各个记号和使用者的关系,涉及符号的来源、使用和影响。
  • 语言的实现则有个语境问题。语境是指理解和实现程序设计语言的环境,包括编译环境和运行环境。
  • 程序设计语言的分类:
    (1)命令式和结构化程序设计语言,包括Fortran、PASCAL和C语言
    (2)面向对象程序设计语言,包括c++、JAVA和Smalltalk语言
    (3)函数式程序设计语言,包括LISP、Haskell、Scala、Scheme、APL等
    (4)逻辑型程序设计语言,包括PROLOG。
  • 程序设计语言的基本成分:
    (1)数据成分:指一种程序设计语言的数据和数据类型。数据分为常量(程序运行全局量 (存储空间在静态数据时不可改变)、变量(程序运行时可以改变)区分配)、局部量 (存储空间在堆栈区分配)数据类型有整型、字符型、双精度、单精度浮点型、布尔型等。
    (2)运算成分:指明允许使用的运算符号及运算规则。包括算术运算、逻辑运算关系运算、位运算等。
    (3)控制成分:指明语言允许表述的控制结构。包括顺序结构、选择结构、构。
    (4)传输成分:指明语言允许的数据传输方式。如赋值处理、数据的输入输出等。

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

  • 函数:C程序由一个或多个函数组成,每个函数都有一个名字,其中有且仅有个名字为main的函数作为程序运行时的起点。函数的使用涉及3个概念:函娄定义、函数声明和函数调用。
    函数的定义包括两部分:函数首部和函数体。函数的定义描述了函数做什么和怎么做。
  • 函数首部说明了函数返回值的数据类型、函数的名字和函数运行时所需的参数及类型。函数所实现的功能在函数体部分进行描述。
  • 函数应该先声明后引用。如果程序中对一个函数的调用在该函数的定义之前进行,则应该在调用前对被调用函数进行声明。函数原型用于声明函数。函数声明的一般形式为:返回值类型函数名(参数类型表)。
  • 函数调用的一般形式为:函数名(实参表)
  • 函数调用时实参与形参间交换信息的方法有值调用和用调用两种
    (1)值调用 (Call by Value) :若实现函数调用时将实参的值传递给相应的形参,则称为是传值调用。在这种方式下形参不能向实参传递信息。在C语言中,要实现被调用函数对实参的修改,必须用指针作为参数。即调用时需要先对实参进行取地址运算,然后将实参的地址传递给指针形参。其本质上仍属于值调用。这种方式实现了间接内存访问。
    (2)引用调用 (Call by Reference):引用是C++中引入的概念,当形式参数为引用类型时,形参名实际上是实参的别名,函数中对形参的访问和修改实际上就是针对相应实参所做的访问和改变。

2.3 编译程序基本原理

  • 编译程序对高级语言源程序进行编译的过程中,要不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入符号表中,编译过程如下:
    (1)词法分析:是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。
    (2)语法分析:是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等语法分析程序判断源程序在结构上是否正确。
    (3)语义分析:是编译过程的一个逻辑阶段语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查,进行类型审查。如类型匹配、除法除数不为0等。又分为静态语义错误 (在编译阶段能够查找出来)和动态语义错误 (只能在运行时发现)。

  •  中间代码和目标代码:中间代码是根据语义分析产生的,需要经过优化链接最终生成可执行的自标代码。引入中间代码的目的是进行与机器无关的代码优化处理。常用的中间代码有后缀式(逆波兰式)三元式(三地址码)、四元式和树等形式。需要考虑三个问题(一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量)
  • 前缀表达式:+ab
  • 中缀表达式:a+b
  • 后缀表达式:ab+
  • 主要掌握上述三种表达式即可,其实就是树的三种遍历,一般正常的表达式是中席遍历,即中缀表达式,根据其构造出树,再按题目要求求出前缀或后缀式。
  • 简单求法:后缀表达式是从左到右开始,先把表达式加上括号,再依次把运算符加到本层次的括号后面。

【软考数据库】第一章 计算机系统基础知识

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

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

相关文章

《3-链表》

链表 引言: 存储数组需要内存空间连续,当我们需要申请一个很大的数组时,系统不一定存在这么大的连续内存空间。 而链表则更加灵活,不需要内存是连续的,只要剩余内存空间大小够用即可 1.定义 : 「链表 Lin…

文本批量翻译-批量翻译文件名

批量将英文翻译成中文的软件 批量将英文翻译成中文的软件的主要用途场景主要是在需要大量翻译英文文本到中文的场景下使用,例如: 商务文件翻译:许多企业需要将其商务文件,如合同、报告、信函等翻译成中文,以便其中文读…

Vulnhub项目:MrRobot

靶机地址:Mr-Robot: 1 ~ VulnHub 渗透过程: 先看描述,有3跟keys在这个靶机中 首先确定靶机ip,对靶机开放的端口进行探测 访问靶机地址,出现了很酷炫的web界面,这个mr.robot,是一个美剧,还是挺…

e-STUDIO2010AC•2520AC安装步骤

注意!在室内室外温差比较大的情况下,设备需要在室内静置240分钟以上才可以进行安装。

智慧园区综合管理平台开发基本功能有哪些?

随着智慧城市建设与信息化发展,园区管理也需要更加智能便捷化,于是智慧园区管理系统开发应运而生。智慧园区综合管理系统就是利用物联网、大数据等技术工具,顺应产业园区升级发展需求,实现园区环境、设备、安全、基础管理、资源服…

TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:1~5

原文:Mobile Deep Learning with TensorFlow Lite, ML Kit and Flutter 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的…

vue关于echarts后端返回格式取值方法

在vue中,接口返回如下数据: data: {充电桩: [0, 0, 78], 红外摄像头: [0, 0, 0], 火焰探测器: [0, 1, 0], 烟雾传感器: [0, 1, 1], 限流保护器: [0, 0, 1]}, 其中数组里第一个值应该放在data1,第二个放在data2,第三个…

docker学习

安装 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh为了防止后面权限有问题,执行下面这个 sudo groupadd docker sudo gpasswd -a $USER docker newgrp docker基本操作 获得镜像 docker pull hello-world运行 docker run hello-w…

蓝桥杯欲伸手CTF?有多远爬多远

注意:网络安全类比赛 或者说 CTF 参赛不会需要任何费用 只有国赛/省赛有可能会收取一定运维费用 其他比赛都不会收费 望周知。 先来看个特离谱的事情 早上起床看到几位师傅的朋友圈一脸懵,再仔细一看,好嘛。。。。。。 先看看探姬的回复 接下…

如何使用ChatGPT在1天内完成毕业论文

如何使用ChatGPT在1天内完成毕业论文 几天前,亲眼见证了到一位同学花了1天时间用ChatGPT完成了他的毕业论文,世道要变,要学会使用黑科技才能混的下去。废话到此结束,下面说明这么用AI生成自己的论文。 使用工具: 1. P…

VMware vSphere 8.0 Update 1 正式版发布 - 企业级工作负载平台

ESXi 8.0 U1 & vCenter Server 8.0 U1 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u1/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 2023-04-18,VMware vSphere 8.0 Update 1 正式…

Excel技能之排名,小函数很强大

你还在熬夜加班搞Excel吗? 你还在用手指,指着电脑屏幕,一行一行核对数据吗? 你还在害怕被笑而不敢问同事吗? 赶紧来学Excel,收藏加关注,偷偷地进步!日积月累,必成大器&am…

ADIDAS阿里纳斯励志广告语

系列文章目录 精选优美英文短文1——Dear Basketball(亲爱的篮球)精选优美英文短文2——Here’s to the Crazy Ones(致疯狂的人)“我祝你不幸并痛苦”——约翰罗伯茨毕业致辞“亲爱的波特兰——CJ麦科勒姆告别信” Hi, I’m Gilb…

Java阶段二Day05

Java阶段二Day05 文章目录 Java阶段二Day05截至此版本可实现的流程图为V14UserControllerClientHandlerDispatcherServletHttpServletResponseHttpServletRequest V15DispatcherServletHttpServletResponseHttpServletRequest V16HttpServletRequestHttpServletResponse 反射JA…

【Linux网络服务】DNS域名解析服务服务

一、BIND域名服务基础 服务背景 1在日常生活中人们习惯使用域名访问服务器,但机器向互相只认IP地址,域名与IP地址之间是多对一的关系,一个IP址不一定只对应一个域名,且一个完成域名只可以对应一个IP地址,它们之间转换…

【数据结构】解析队列各接口功能实现

目录 前言: 一、队列概述: 1.队列的概念: 二、队列的各种接口功能实现: 1.初始化队列: 2.入队(尾插): 3.出队(头删): 4.查看队头&#xf…

PyTorch 深度学习实战 | 基于 ResNet 的花卉图片分类

“工欲善其事,必先利其器”。如果直接使用 Python 完成模型的构建、导出等工作,势必会耗费相当多的时间,而且大部分工作都是深度学习中共同拥有的部分,即重复工作。所以本案例为了快速实现效果,就直接使用将这些共有部…

YAML /Excel /CSV?自动化测试测试数据管理应用,测试老鸟总结...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试无论是…

ChatGPT实战100例 - (02) 自动出PPT它不香么?

文章目录 ChatGPT实战100例 - (02) 自动出PPT它不香么?一、需求与思路1. 需求:出个PPT,5分钟后要用2. 思路:生成markdown然后转化 二、生成markdown语法的思维导图1. 问题2. 回答 三、把markdown文本转换成PPT ChatGPT实战100例 -…

MIMO-OFDM无线通信技术(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 本代码为MIMO-OFDM无线通信技术及MATLAB实现。分为十章,供大家学习。 📚2 运行结果 主函数部分代码&a…