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. [AX2012 R3]关于Alerts

    AX2012提供两种类型的Alert,Change-based alert和Due-date-based alert,前者用于在对新建记录.删除记录.记录的某个指定字段被改变的时候发出提醒,后者则是用 ...

  2. UIRefreshControl的使用

    注意: 1.需要在ios6.0之后的版本中使用 2.UIRefreshControl目前只能用于UITableViewController,如果用在其他ViewController中,运行时会错误(即 ...

  3. C#调用JAVA接口WSSE方式用WebClient方式

    C#读取JAVA的WSSE接口的调用代码: 用webclient 方式: /// <summary> /// 调用java cxf ws_security加密的服务wcf客户端对应的加密类 ...

  4. Jdbc如何从PostgreSql读取海量数据?PostgreSql源代码分析纪录

    前言: 最近做数据同步,需要从PostgreSql获取数据,发现一旦数据比较多,那么读取的速度非常慢,并且内存占用特别多&GC不掉. 代码样例: 为了方便讲解,下面写了事例代码,从b2c_or ...

  5. [Android Studio 权威教程]断点调试和高级调试

    好了开始写一个简单的调试程序,我们先来一个for循环 ? 1 2 3 4 5 6 7 8 <code class="language-java hljs ">for ( ...

  6. SQL Server 2008 Windows身份验证改为混合模式身份验证

    1.在当前服务器右键进入“属性页”->“安全性”->勾选Sql Server和Windows身份验证模式->确定. 由于默认不启用sa,所以如果启用sa账户登录,则还需要如下设置: ...

  7. LINQ to SQL语句非常详细(原文来自于网络)

    LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...

  8. 深入研究 蒋金楠(Artech)老师的 MiniMvc(迷你 MVC),看看 MVC 内部到底是如何运行的

    前言 跟我一起顺藤摸瓜剖析 Artech 老师的 MiniMVC 是如何运行的,了解它,我们就大体了解 ASP.NET MVC 是如何运行的了.既然是“顺藤摸瓜”,那我们就按照 ASP.NET 的执行 ...

  9. Awk by Example--转载

    原文地址: http://www.funtoo.org/Awk_by_Example,_Part_1?ref=dzone http://www.funtoo.org/Awk_by_Example,_P ...

  10. Install Redis on CentOS 6.4--转

    Install Redis on CentOS 6.4 source:http://thoughts.z-dev.org/2013/05/27/install-redis-on-centos-6-4/ ...