Represent code in math equations
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的更多相关文章
- C# Math.Round
不能直接调用Math.Round方法的,这可和Java的不一样哦Math.Round这个函数的解释是将值按指定的小数位数舍入,并不就是四舍五入.这种舍入有时称为就近舍入或四舍六入五成双 C# code ...
- 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 ...
- Markdown Example
An h1 header Paragraphs are separated by a blank line. 2nd paragraph. Italic, bold, and monospace. I ...
- CS190.1x-ML_lab4_ctr_student
这次lab主要主要是研究click-through rate (CTR).数据集来自于Kaggle的Criteo Labs dataset.相关ipynb文件见我github. 作业分成5个部分:on ...
- 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 ...
- Hexo搭建个人博客及next主题基本配置
前言 国内一些免费的博客平台比如CSDN.博客园都已经很成熟,功能齐全,已经可以满足我们的需求,帮助我们记录学习过程遇到的问题,还能分享帮助其他人解决问题.为什么还要自己动手去搭建博客呢?首先写博客是 ...
- NLNet-Theme for cnblogs
这篇文档仅作为markdown在cnblogs中的渲染效果展示.第一部分NLNet' Samples为自定义内容的效果展示.NOTE 第二.三部分的Markdown Reference(From Ty ...
- 百闻不如一试——公式图片转Latex代码
写博客时,数学公式的编辑比较占用时间,在上一篇中详细介绍了如何在Markdown中编辑数学符号与公式. https://www.cnblogs.com/bytesfly/p/markdown-form ...
- 比特币_Bitcoin 简介
2008-11 Satoshi Nakamoto Bitcoin: A Peer-to-Peer Electronic Cash System http://p2pbucks.com/?p=99 ...
随机推荐
- Cocos2d-JS项目之三:使用合图
studio里使用合图感觉和spriteBatchNode差不多,但有不同,合图只起到在加载资源时减少IO的作用,起不到批渲染的作用.其实想想,studio本来就是用来拼UI界面的,一个上点规模的UI ...
- jquerymobile标签-属性手册
Button data-role="button" data-corners true | false data-icon home | delete | plus | arr ...
- 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语句, 都报如下错误: 后来想 ...
- 部署tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中
在Linux系统中,Tomcat 启动后默认将很多信息都写入到 catalina.out 文件中,我们可以通过tail -f catalina.out 来跟踪Tomcat 和相关应用运行的情况. ...
- archlinux 下 nignx + php 出现 no input file specified
奇葩的问题,配置 nginx + php + mysql 后,加一个站点: server { listen 80; server_name wei.abc.com; root /www/wei.abc ...
- Careercup 论坛上较有意思的题目整理
# 数据结构类 ### 线段树 segment tree http://www.careercup.com/question?id=5165570324430848 找区间内的value的个数 二维线 ...
- [转]c#截取指定长度的字符串
/// <summary> /// 截取指定長度的字符串 /// </summary> /// <param name="s"></par ...
- 【PRML读书笔记-Chapter1-Introduction】1.6 Information Theory
熵 给定一个离散变量,我们观察它的每一个取值所包含的信息量的大小,因此,我们用来表示信息量的大小,概率分布为.当p(x)=1时,说明这个事件一定会发生,因此,它带给我的信息为0.(因为一定会发生,毫无 ...
- [数据库]sql之行顺序
这个文章主要是防止我忘了sql的执行顺序,解释的东西我都没怎么看懂.数据库渣如我- 逻辑查询处理阶段简介 FROM:对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联 ...
- MySQL忘记root密码的找回方法
(1)登录到数据库所在服务器,手工kill掉MySQL进程: kill ' cat /mysql-data-directory/hostname.pid' 其中,/mysql-data-dir ...