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. Cocos2d-JS项目之三:使用合图

    studio里使用合图感觉和spriteBatchNode差不多,但有不同,合图只起到在加载资源时减少IO的作用,起不到批渲染的作用.其实想想,studio本来就是用来拼UI界面的,一个上点规模的UI ...

  2. jquerymobile标签-属性手册

    Button data-role="button"   data-corners true | false data-icon home | delete | plus | arr ...

  3. dbvis MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1

    转自:http://www.cnblogs.com/_popc/p/4053593.html 今天使用数据库查询工具DBvis链接mysql数据库时, 发现执行如何sql语句, 都报如下错误: 后来想 ...

  4. 部署tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中

    在Linux系统中,Tomcat 启动后默认将很多信息都写入到 catalina.out 文件中,我们可以通过tail  -f  catalina.out 来跟踪Tomcat 和相关应用运行的情况. ...

  5. archlinux 下 nignx + php 出现 no input file specified

    奇葩的问题,配置 nginx + php + mysql 后,加一个站点: server { listen 80; server_name wei.abc.com; root /www/wei.abc ...

  6. Careercup 论坛上较有意思的题目整理

    # 数据结构类 ### 线段树 segment tree http://www.careercup.com/question?id=5165570324430848 找区间内的value的个数 二维线 ...

  7. [转]c#截取指定长度的字符串

    /// <summary> /// 截取指定長度的字符串 /// </summary> /// <param name="s"></par ...

  8. 【PRML读书笔记-Chapter1-Introduction】1.6 Information Theory

    熵 给定一个离散变量,我们观察它的每一个取值所包含的信息量的大小,因此,我们用来表示信息量的大小,概率分布为.当p(x)=1时,说明这个事件一定会发生,因此,它带给我的信息为0.(因为一定会发生,毫无 ...

  9. [数据库]sql之行顺序

    这个文章主要是防止我忘了sql的执行顺序,解释的东西我都没怎么看懂.数据库渣如我- 逻辑查询处理阶段简介 FROM:对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联 ...

  10. MySQL忘记root密码的找回方法

    (1)登录到数据库所在服务器,手工kill掉MySQL进程: kill ' cat /mysql-data-directory/hostname.pid'     其中,/mysql-data-dir ...