广告
返回顶部
首页 > 资讯 > 前端开发 > html >如何使用编程中花括号
  • 434
分享到

如何使用编程中花括号

2024-04-02 19:04:59 434人浏览 独家记忆
摘要

本篇内容介绍了“如何使用编程中花括号”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先,以非块状语言为例所

本篇内容介绍了“如何使用编程中花括号”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

首先,以非块状语言为例

所有熟悉C风格编程语法的程序员都熟悉编程块,用C、C  ++、Java、javascript和其他语言编写的所有主要编程结构都是块结构的。换句话说,这些构造的主体放置在块中,这些块由打开和闭合的花括号分隔。

有人可能会说,这并不是完全正确的,因为 if  语句和循环(这里只提到两种编程构造),如果它们的主体只有一个语句,就可以不用块来构造。然而,在过去的几年里,编程风格专家建议将所有的构造体放在一个块中(参见Douglas  Cockroft的“JavaScript: The Good Parts”中关于将所有if和循环体放在块中的论点特别有说服力)

然而,第一批高级编程语言并没有块。

我将使用大约在20世纪50年代末的FORTRAN语言来演示这一点。

如何使用编程中花括号

Donald  Knuth在他关于早期高级编程语言的优秀评论文章《编程语言的早期开发》中比较了几种早期编程语言的特性,这篇文章转载在他的书《计算机语言选集》中。他的做法是,演示某个计算机程序如何用不同的语言实现。这个程序实现了一个叫做TPK算法的算法,在现代JavaScript中是这样的:

function f(t) {   return Math.sqrt(Math.abs(t) + 5 * Math.pow(t, 3)); } let arr = []; let y; for (let i = 0; i < 11; i++) {   putstr("Enter a number: ");   arr[i] = parseFloat(readline()); } for (let i = 10; i >= 0; i--) {   y = f(arr[i])   if (y > 400) {     print(y,"is too large.");   }   else {     print(i,y)   } }

不要担心程序做什么。重要的一点是,这个程序执行了Knuth认为在现代编程语言中对测试很重要的所有特性。

正如我提到的,Knuth将几种编程语言与该算法进行了比较。他最后看过的一种语言,现在通常被认为是第一种真正的高级编程语言。下面是Knuth编写的TPK程序在Fortran中的样子:

C   THE TPK ALGORITHM, FORTRAN STYLE     FUNF(T) = SQRTF(ABSF(T))+5.0*T**3     DIMENSION A(11) 1   FORMAT(6F12.4)     READ 1, A     DO 10 J = 1, 11     I = 11 &ndash; J     Y = FUNF(A(I+1))     IF (400.0-Y) 4, 8, 8 4   PRINT 5, I 5   FORMAT(I10, 10H TOO LARGE)     GO TO 10 8   PRINT 9, I, Y 9   FORMAT(I10, F12.7) 10  CONTINUE     STOP 52525

Fortran语法的细节我就不多说了,但你可以清楚地看到,该语言不包含块。函数定义在一行上,而不是作为代码块,DO  循环使用一个行标签来控制循环。当时的高级语言还没有将复合语句分组成块的概念,这些语言仍然依靠 goto 来控制程序流。

该代码由Knuth使用1957年的Fortran版本编写。1957年至1960年间,一种新的语言ALGOL被开发出来,它弥补了当时Fortran等语言和其他高级语言的许多缺陷。

Algol中的块

Algol编程语言首次被描述是在1958年,尽管该语言最流行的版本是Algol  60。Algol的功能之一是将语句分组为复合语句(称为块)的能力,每个Algol程序都被视为一个块,因为一个程序通常包含一个或多个语句(因此为复合语句)。Algol的开发者认识到,许多编程场景,如条件和循环,需要将语句作为一个单元来考虑。

如何使用编程中花括号

Algol使用关键字 begin 和 end  标记了块的开始和结束。一个区块可以嵌套在另一个区块里面,外区块被认为是主导区块,内区块被认为是从属区块。例如,这里有一个Algol程序,可以嵌套块:

begin real a;      a := 1;      begin real a;           a := 2;           print(a)      end;      print(a) end

依次打印数字2和1。

这是在Algol的 if 语句中如何使用块的示例:

if x > -1 then      begin           if x &ne; 0 then           x := 1/x      end;

这是Algol中 for 循环块的示例:

begin      real a0, a1, a2, a3, z, p;      integer n, i;      read(a0, a1, a2, a3);      read(n)      for i := 1 step 1 until n do           begin                read(z);                p := ((a3 &times; z + a2) &times; z + a1) &times; z + a0                print(p)           end i end

现在让我们看看Algol中的TPK程序,看看与Fortran版本相比,块结构对该程序有什么帮助:

TPK begin integer i, real y; real a[0:10];      real procedure f(t); real  t; value t;      f := sqrt(abs(t)) + 5 &times; t &uarr; 3;      for i := 0 step 1 until 10 do read(a[i]);      for i := 10 step -1 until 0 do           begin y := f(a[i]);                if y > 400 then write(I, 'TOO LARGE')                else write(i, y);           end end TPK

你应该能看出来,Algol版本的区块结构让它更像你我今天习惯阅读的代码。

转到BCPL

块结构语言的语法的下一个变化是1967年由剑桥大学的马丁&middot;理查兹(Martin  Richards)开发的BCPL语言。在1960年至1967年Algol最初开发期间,编译器和系统开发人员一直在寻找使用机器语言和汇编语言以外的语言开发系统应用程序(如操作系统)的方法。我之所以强调BCPL,是因为C是通过Ken  Thompson开发的一种名为B的中间语言,作为BCPL的完善和改进而开发的。

Richards将BCPL开发为一种系统开发语言,它与汇编语言一样高效,但具有更高级别的语法,从而使编码更简单、更高效。这意味着高级语言(如Algol)的许多特性需要以更有效的方式包含在BCPL等语言中。

实现这一效率的方法之一是将一个代码块的指定从单词(begin 和 end)简化为符号。对于复合语句和代码块,Richards选择了符号 $( 代表开头和  )$ 代表结尾,这些符号称为节括号。

在BCPL中,如果 $( 和 )$ 与一个结构体一起使用,比如 if 语句或循环,那么它们就是在限定一个复合语句,如果 $(  包括一些声明,那么它们就是在给一个块划定界限。

例如,下面是BCPL中带有复合语句的 if 语句的写法:

IF A < B      $( LET T = A           A := B; B := T      $)

这是BCPL块的示例:

GET "LIBHDR" LET START() BE      $( LET A, B, C, SUM = 1, 2, 3, 0           SUM := A + B + C           WRITES("Sum is ")           WRITEN(SUM)      $)

在这里,开始部分方括号是开始一个块,因为声明紧跟着方括号。

(和) 在C中成为 { 和 }

大约在1968年或1969年,贝尔实验室的肯-汤普森和丹尼斯-里奇开始尝试使用系统编程语言开发操作系统。汤普森其实一开始就尝试使用Fortran进行探索,但当他意识到这不可能时,很快就放弃了。他决定要对BCPL进行修改,使其成为一种更符合自己喜好的系统编程语言,于是开发了B。

B虽然更接近汤普森和里奇想要的系统开发语言,但仍然不能完全满足他们的需求,所以里奇开始为新的B开发另一种语言NB。NB的生命力并不长,最终被一种全新的语言所取代,他们自然而然地称之为C。如果你对C语言是如何从BCPL、B和NB发展而来的感兴趣,我鼓励你阅读丹尼斯-里奇的《C语言的历史》。

如何使用编程中花括号

汤普森在B中固定并延续到NB然后在C中固定的许多事物之一就是缩写运算符,这些都是为了让扩展后的语言适应当时计算机的内存限制所必需的。例如,汤普森创造了复合赋值运算符(  += 为例)以及增量(++)和减量(-)运算符,作为提高语言效率的方法。此举是为了提高效率,导致BCPL的其他运算符被简化&mdash;&mdash;例如,$( 和 $) 被 { 和  } 取代。

“如何使用编程中花括号”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 如何使用编程中花括号

本文链接: https://www.lsjlt.com/news/84403.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用编程中花括号
    本篇内容介绍了“如何使用编程中花括号”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先,以非块状语言为例所...
    99+
    2022-10-19
  • linux中Bash如何使用花括号{}
    这篇文章主要为大家展示了“linux中Bash如何使用花括号{}”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中Bash如何使用花括号{}”这篇文章吧。花括号{}的使用通过括号扩展可以...
    99+
    2023-06-27
  • 如何分析Bash中的 {花括号}
    如何分析Bash中的 {花括号},很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在这里,我们先来看看花括号 {}。构造序列花括号在之前的《点的含义》这篇文章中已经...
    99+
    2023-06-16
  • vue中花括号数据绑定失败如何解决
    这篇文章将为大家详细讲解有关vue中花括号数据绑定失败如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。如下所示:<!DOCTYPE h...
    99+
    2022-10-19
  • 如何使用javascript编程求水仙花数
    小编给大家分享一下如何使用javascript编程求水仙花数,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 用javascript编程求水仙花数的方法:1、使用...
    99+
    2022-10-19
  • VUe双中括号属性如何使用
    Vue是一种流行的JavaScript框架,它使用双花括号(“{{”和“}}”)语法来实现属性与视图之间的数据绑定。VUe框架中的模板显示了被框架监控的变量的特定属性,当这些变量的值改变时,这些属性也跟随改变,从而在视图中自动更新相应的值。...
    99+
    2023-05-25
  • 如何使用shell中的各种括号
    这篇文章主要讲解了“如何使用shell中的各种括号”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用shell中的各种括号”吧!在这里我想说的是几种shell里的小括号,大括号结构和有括...
    99+
    2023-06-09
  • 如何使用Shell编程Bash引号
    本篇内容介绍了“如何使用Shell编程Bash引号”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先了解下,在bash脚本中,有三种引号 单引...
    99+
    2023-06-09
  • 如何理解Shell中的中括号用法
    本篇文章给大家分享的是有关如何理解Shell中的中括号用法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。导读在计算机科学中,Shell俗称壳(用来区别于核),是指"为...
    99+
    2023-06-05
  • springboot中如何使用雪花算法生成雪花ID
    这篇文章主要介绍“springboot中如何使用雪花算法生成雪花ID”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot中如何使用雪花算法生成雪花ID”文章能帮助大家解决问题。1、什么...
    99+
    2023-07-05
  • 如何使用PHP编写微信公众号自动回复程序
    随着移动互联网的快速发展,微信已经成为了人们生活中必不可少的社交工具。而在微信公众号中,自动回复功能也是不可缺少的一部分。本文将介绍如何使用PHP编写微信公众号自动回复程序。准备工作首先,需要有一个微信公众号。如果没有的话可以去申请一个。其...
    99+
    2023-05-14
    PHP 微信公众号 自动回复程序
  • C/C++编程中const如何使用
    这篇文章主要介绍“C/C++编程中const如何使用”,在日常操作中,相信很多人在C/C++编程中const如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C/C++编程中const如何使用”的疑惑有所...
    99+
    2023-06-29
  • 如何使用shell编程中空格
    这篇文章主要介绍“如何使用shell编程中空格”,在日常操作中,相信很多人在如何使用shell编程中空格问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用shell编程中空格”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-09
  • 如何使用Python中的多线程编程
    如何使用Python中的多线程编程,需要具体代码示例引言:随着计算机技术的不断发展,多核处理器的普及以及大数据时代的到来,多线程编程变得越来越重要。多线程编程可以充分利用计算机的多个核心,加快程序的执行速度,提高系统的响应性能。Python...
    99+
    2023-10-22
    Python多线程编程
  • 如何在PHP中使用多线程编程?
    随着Web应用程序变得越来越庞大和复杂,传统的单线程PHP开发模式不再适用于高并发处理。在这种情况下,使用多线程技术可以提高Web应用程序处理并发请求的能力。本文将介绍如何在PHP中使用多线程编程。一、多线程概述多线程编程是指在一个进程中并...
    99+
    2023-05-14
    PHP 并发编程 多线程编程
  • 如何使用Shell编程
    本篇内容介绍了“如何使用Shell编程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基础知识shell执行方式   sh...
    99+
    2023-06-09
  • 如何理解栈在括号匹配和表达式求值中的应用
    这篇文章主要讲解了“如何理解栈在括号匹配和表达式求值中的应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解栈在括号匹配和表达式求值中的应用”吧!编程...
    99+
    2022-10-19
  • 如何在ASP中使用异步编程?
    ASP.NET是一种基于Web的应用程序框架,它提供了一系列的编程模型、服务和工具,可以帮助开发人员构建强大、安全、高效的Web应用程序。在ASP.NET中,异步编程是一种非常重要的特性,它可以提高Web应用程序的性能和可伸缩性。本文将介绍...
    99+
    2023-07-27
    缓存 shell 异步编程
  • Laravel 中如何使用 Python 进行编程?
    Laravel 是一款流行的 PHP 开发框架,它具有简单易用、高效稳定的特点。Python 是一门广泛应用于科学计算、人工智能等领域的编程语言。那么,如何在 Laravel 中使用 Python 进行编程呢?本文将为你详细介绍。 一、Py...
    99+
    2023-07-19
    unix 编程算法 laravel
  • 如何在Python编程算法中使用对象进行编程?
    在Python编程中,对象是一种非常重要的概念。通过使用对象,开发者可以更加轻松地编写复杂的算法和数据结构。本文将介绍如何在Python编程算法中使用对象进行编程,并通过代码演示来帮助读者更好地理解。 一、什么是对象? 在Python中,对...
    99+
    2023-10-16
    编程算法 对象 编程算法
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作