Introduce

The article shows a way to use math equations to represent code's logical.

Key ideas

logical first

Get readers to see the logical first, so prefer to keep a 'where' section to describe variables separately.

Pure function conception

I am thinking, in a function, whether we can just use

  • Only has a 'if/else' statement
  • Only has a 'switch/case' statement
  • Only has a 'for' statement
  • Only has a 'foreach' statement
  • Only has a 'while' statement
  • Only has statements without 'if/else', 'switch/case', 'for', 'foreach' or 'while'.

Decision Structures

  • Decision structure - simple
    \[
    result =
    \begin{cases}
    statement_1, & {condition}_1 \\
    statement_2, & {condition}_2 \\
    statement_3 & \text{otherwise}
    \end{cases}
    \]

  • Decision structure (if ... then) - if, else
    \[
    result =
    \begin{cases}
    statement_1, & \text{if}\ {condition}_1 \\
    statement_2, & \text{if}\ {condition}_2 \\
    statement_3 & \text{otherwise}
    \end{cases}
    \]

  • Decision structure (if ... then) - if, else with multiple lines
    \[
    \text{if (constant-expression)} \\
    \{ \\
    \qquad statement_1 \\
    \qquad statement_2 \\
    \}
    \]

  • Decision structure(selection) - switch, case, default, goto, break
    \[
    result = (switch : {expression})
    \begin{cases}
    statement_1, & \text{case}\ {constant-expression}_1 \\
    statement_2, & \text{case}\ {constant-expression}_2 \\
    statement_3 & \text{otherwise}
    \end{cases}
    \]

  • Loop structure (conditional) - while, continue
    First check the condition to determine if enter the loop.
    \[
    {while}_\text{condition} \text{statement}
    \]

  • Loop structure (conditional) - do, while, continue
    First execute the statement, then check the condition to determine if enter the next loop.
    \[
    {while}^\text{condition} \text{statement}
    \]

  • Loop structure (iteration) - for
    \[
    {for}_\text{i = 1}^\text{ i < n} \text{statement}
    \]

  • Loop structure (iteration) - for with step
    \[
    {for}_\text{i = 1}^\text{ i < n; i += 2} \text{statement}
    \]

  • Loop structure (iteration) - foreach
    \[
    {foreach}_\text{item}^\text{items} \text{statement}
    \]

Keywords

  • break
    \(\bigotimes\)
  • continue
    \(\bigodot\)

function

\[
\text{(variable_1 [, ..., variable_n]) function_name(parameter_1 [, ..., parameter_k])} = \\
[\{] \\
\qquad statement_1 \\
\qquad statement_2 \\
\qquad ... \\
\qquad statement_n \\
where \\
\qquad variable_1 = ... \\
\qquad ... \\
\qquad variable_m = ... \\
[\}]
\]

function in one body

\[
\text{(variable_1 [, ..., variable_n]) function_name(parameter_1 [, ..., parameter_l])} = \\
\qquad \begin{cases}
statement_1 \\
statement_2 \\
where \\
\qquad variable_1 = ... \\
\qquad ... \\
\qquad variable_m = ... \\
\end{cases} \\
\]

class

\[
\text{class class_name[(inherited class name)]} = \\
[\{] \\
[where] \\
\qquad field_1 = ... \\
\qquad ... \\
\qquad field_m = ... \\
[functions]\\
\qquad function_1 \\
\qquad function_2 \\
\qquad ... \\
\qquad function_n \\
[\}]
\]

Comment - single line

\[
\text{ # input some comments} \\
\text{ : input some comments}
\]

Comment - multiple lines

\[
''' \\
\text{ this is} \\
\text{ multiple lines comments} \\
'''
\]

Comment - multiple lines 2

\[
""" \\
\text{ this is} \\
\text{ multiple lines comments} \\
"""
\]

Sample

\[
\text{class firstclass} = \\
\qquad field1 = 1 \\
\qquad field2 = true \\
\qquad \\
\qquad func1(param1, y) \\
\qquad \{ \\
\qquad \qquad var1,\ var2 = func2(1,\ 2) = \\
\qquad \qquad func3(var1) \\
\qquad \qquad y^{(mean)} = f4(y) \\
\qquad where \\
\qquad \qquad var1 \text{ # return value 1}\\
\qquad \qquad var2 \text{ # return value 2}\\
\qquad \qquad y \text{ : result data of training data.} \\
\qquad \qquad y^{(mean)} \text{ : the arithmetic mean along the y.} \\
\qquad \} \\
\qquad \\
\qquad (result1,\ result2)\ func2(param1,\ param2) = \\
\qquad \{ \\
\qquad \qquad result1 =
\begin{cases}
1, & \text{param1 > 0} \\
-1 & \text{otherwise}
\end{cases} \\
\qquad \qquad var2 = 100 \text{ # it is a variable defined in body. }\\
\qquad \qquad result2 = var1 + var2 + param2 \\
\qquad where \\
\qquad \qquad result1 \text{ # return value 1} \\
\qquad \qquad result2 = 0 \text{ # return value 2} \\
\qquad \qquad var1 = 10 \text{ # it is a variable. } \\
\qquad \} \\
\qquad \\
\qquad func3(param1) = \\
\qquad \begin{cases}
\text{# do something ...} \\
\text{# do something ...} \\
\text{# do something ...} \\
\text{# do something ...} \\
\text{# do something ...} \\
\text{# do something ...} \\
\end{cases} \\
\qquad \\
\qquad f4(y) = \frac{sum(y)}{count(y)} \\
\qquad \\
\qquad
\]

References

Represent code in math equations的更多相关文章

  1. C# Math.Round

    不能直接调用Math.Round方法的,这可和Java的不一样哦Math.Round这个函数的解释是将值按指定的小数位数舍入,并不就是四舍五入.这种舍入有时称为就近舍入或四舍六入五成双 C# code ...

  2. How to implement an algorithm from a scientific paper

    Author: Emmanuel Goossaert 翻译 This article is a short guide to implementing an algorithm from a scie ...

  3. Markdown Example

    An h1 header Paragraphs are separated by a blank line. 2nd paragraph. Italic, bold, and monospace. I ...

  4. CS190.1x-ML_lab4_ctr_student

    这次lab主要主要是研究click-through rate (CTR).数据集来自于Kaggle的Criteo Labs dataset.相关ipynb文件见我github. 作业分成5个部分:on ...

  5. 01 Go 1.1 Release Notes

    Go 1.1 Release Notes Introduction to Go 1.1 Changes to the language Integer division by zero Surroga ...

  6. Hexo搭建个人博客及next主题基本配置

    前言 国内一些免费的博客平台比如CSDN.博客园都已经很成熟,功能齐全,已经可以满足我们的需求,帮助我们记录学习过程遇到的问题,还能分享帮助其他人解决问题.为什么还要自己动手去搭建博客呢?首先写博客是 ...

  7. NLNet-Theme for cnblogs

    这篇文档仅作为markdown在cnblogs中的渲染效果展示.第一部分NLNet' Samples为自定义内容的效果展示.NOTE 第二.三部分的Markdown Reference(From Ty ...

  8. 百闻不如一试——公式图片转Latex代码

    写博客时,数学公式的编辑比较占用时间,在上一篇中详细介绍了如何在Markdown中编辑数学符号与公式. https://www.cnblogs.com/bytesfly/p/markdown-form ...

  9. 比特币_Bitcoin 简介

    2008-11   Satoshi Nakamoto  Bitcoin: A Peer-to-Peer Electronic Cash System http://p2pbucks.com/?p=99 ...

随机推荐

  1. 99 Lisp Problems 列表处理(P1~P28)

    L-99: Ninety-Nine Lisp Problems 列表处理类问题的解答,用Scheme实现,首先定义几个在后续解题中用到的公共过程: ; common procedure (define ...

  2. Debug Assertion Failed! Expression: _pFirstBlock == pHead

    点击Abort之后,查看调用栈,发现异常在函数return时被时产生,进一步看是vector的析构函数被调用时产生,以前没开发过C++项目,没什么经验,这个错误让我很困惑,第一,我电脑上并没有f盘:第 ...

  3. JVM性能分析与优化

    JVM性能分析与优化: http://www.docin.com/p-757199232.html

  4. 安卓Android面试题大全

    56个问题都是经常用到的,可以深入研究下,也是必须掌握的开发必备知识. 安卓Android面试题汇总 搜集了一些Android面试题目,供将要面试或者正在面试的朋友参考. 1, 谈谈你对Activit ...

  5. Amazon的Fire Phone之于Android开发者

    在上周Amazon也耐不住加入了手机竞争行列之中,发布了自己的Fire Phone,于是Android家族又多了一位变种成员,Android系统的碎片化程度也进一步加剧.因为工作的关系,我有幸在上个月 ...

  6. Eplan 2D安装版布局,部件、端子竖放

    部件竖放,不是通过变量的选择实现,而是通过设置实现的,具体设置在: 选项-设置-用户-2D安装板布局: 部件方向-更改为 垂直 部件放置-旋转角度-更改为90° 这样在连续放置部件的时候就变为竖放了, ...

  7. How to Debug Enterprise Portal Code in Dynamics AX 2009

    转载 To set up debugging for pages1. Log into the server that is running the AOS.2. Open the Microsoft ...

  8. cakePHP的controller回调

    1. afterFilter(), executed after all controller logic, including the rendering of the view2. beforeF ...

  9. mysql中替换字符串(正则) 模糊

    例如: abcd(efg)hijk 替换之后是abcdhijk , name)),''); 执行之后,报错:Truncated incorrect DOUBLE value解决办法,经过查询发现是co ...

  10. SNF开发平台WinForm之六-上传下载组件使用-SNF快速开发平台3.3-Spring.Net.Framework

    6.1运行效果: 6.2开发实现: 1.先在要使用的项目进行引用,SNF.WinForm.Attachments.dll文件. 2.在工具箱内新建选项卡->选择项,浏览找到文件SNF.WinFo ...