标签: procedural-programming

如何在没有循环或游标的情况下推广顺序COUNT()的时间顺序数据?

我已经阅读了所有的论点:告诉SQL你想要什么,而不是如何得到它.使用基于集合的方法而不是程序逻辑.不惜一切代价避免使用游标和循环.

不幸的是,我已经绞尽脑汁几周了,我无法弄清楚如何提出一种基于集合的方法来COUNT为按顺序排列的时间顺序数据子集生成迭代.

以下是我正在处理的问题的具体应用.

我使用包含多年播放数据的数据库进行与足球相关的研究,该数据当然按时间顺序按年,游戏和比赛排列.数据库加载到运行MySQL 5.0的Web服务器上.

core表格中包含了我对此特定问题所需的字段.以下是表格相关部分的一些示例数据:

   GID | PID  | OFF | DEF | QTR | MIN | SEC | PTSO | PTSD
  --------------------------------------------------------
   121 | 2455 | ARI | CHI |   2 |   4 |  30 |   17 |   10
   121 | 2456 | ARI | CHI |   2 |   4 |  15 |   17 |   10 
   121 | 2457 | ARI | CHI |   2 |   3 |  53 |   17 |   10 
   121 | …
Run Code Online (Sandbox Code Playgroud)

mysql sql procedural-programming cursor nested-loops

5
推荐指数
1
解决办法
162
查看次数

理解(子、部分、完整、一次性)延续(用过程语言)

在阅读了几乎所有我能找到的有关延续的内容后,我仍然无法理解它们。也许是因为所有的解释都与 lambda 演算密切相关,我很难理解它。

一般来说,延续是在完成当前操作(即其余计算)后下一步要做什么的某种表示。

但随着种类繁多,事情变得更加棘手。也许你们中的一些人可以帮助我用我的自定义类比来帮助我,并指出我在理解中犯了错误的地方。

假设我们的函数被表示为对象,为了简单起见:

  1. 我们的解释器有一堆函数调用。
  2. 每个函数调用都有一个用于存储本地数据和参数的堆栈。
  3. 每个函数调用都有一个要执行的“指令”队列,这些指令对本地数据堆栈和队列本身(也可能对调用者堆栈进行操作)进行操作。

该类比类似于XY 连接语言

所以,根据我的理解:

  • 延续是整个计算的其余部分(未完成的指令队列+所有后续计算的堆栈:调用者队列)。
  • 部分延续是当前未完成的队列+调用者堆栈的某些分隔部分,直到某个点(对于整个程序来说不是完整的)。
  • 子延续是当前“活动”函数的当前指令队列的其余部分。
  • 一次性延续是指在具体化为对象后只能执行一次的延续。

如果我的类比有误,请纠正我。

continuations procedural-programming functional-programming

5
推荐指数
1
解决办法
1324
查看次数

Diamond-Square算法的平滑问题

我使用菱形平方算法生成随机地形.它工作得很好,除了我将这些大锥形状伸出或伸入地形.问题似乎是每时不时地设置一个点太高或太低.

这是问题的图片
截图

当我将平滑度设置得非常高时,可以更好地看到它
截图特写

这是我的代码 -

private void CreateHeights()
    {
        if (cbUseLand.Checked == false) 
            return;
        int
            Size = Convert.ToInt32(System.Math.Pow(2, int.Parse(tbDetail.Text)) + 1),
            SideLength = Size - 1,
            d = 1025 / (Size - 1),
            HalfSide;
        Heights = new Point3D[Size, Size];
        float
            r = float.Parse(tbHeight.Text),
            Roughness = float.Parse(RoughnessBox.Text);

        //seeding all the points
        for (int x = 0; x < Size; x++)
            for (int y = 0; y < Size; y++)
                Heights[x, y] = Make3DPoint(x * d, 740, y * d);

        while (SideLength …
Run Code Online (Sandbox Code Playgroud)

algorithm height procedural-programming map procedural-generation

4
推荐指数
1
解决办法
2271
查看次数

没有类的对象 - 'clean C'中的数据模型

我在一些中型项目上使用过C++,但我从来没有在C中做过任何严肃的编程.

阅读完本文后,我开始想知道如何在没有类和异常的情况下使用C++ 11.我曾经听过干净的C这个词.Clean C应该是一个C++代码,它不使用ANSI C没有的C++特性,比如类或元编程.

有充足的资源如何有效地使用C语言以及如何在C++中完成它们.但是很难找到任何有关如何充分利用这两个方面的资源.

我的问题分为两部分:

  1. 在没有名称空间,异常和元编程的情况下使用C++是否有任何好的资源?书籍,开源项目?
  2. 请查看这段简单的代码,这是我第一次尝试处理C++ 11中提到的子集中的数据结构和字符串.我首先想到的是代码冗余.你有什么不同的做法,为什么?

-

#include <cstring>

namespace addressbook {
namespace contact {

struct contact {
    char* name;
    char* email;
};

void initialize(addressbook::contact::contact* contact)
{
    contact->name = nullptr;
    contact->email = nullptr;
}

void deinitialize(addressbook::contact::contact* contact)
{
    delete[] contact->name;
    delete[] contact->email;
}

void set_name(addressbook::contact::contact* contact, char* name)
{
    delete[] contact->name;
    contact->name = new char [strlen(name) + 1];
    std::strcpy(contact->name, name);
}

void set_email(addressbook::contact::contact* contact, char* email)
{
    delete[] contact->email;
    contact->email …
Run Code Online (Sandbox Code Playgroud)

c c++ procedural-programming c++11

4
推荐指数
2
解决办法
3380
查看次数

为什么要区分表达式和语句

在函数式语言(实际上我用过的所有函数式语言)中,语句和表达式之间没有区别,每个代码块的最后一个值是块的"返回值".另一方面,通常不被认为是纯粹功能的语言通常会引入这种区别.

作为我正在谈论的一个例子,以下python代码打印None:

def foo():
    5 + 5
print(foo())
Run Code Online (Sandbox Code Playgroud)

而方案代码打印 10

(define (foo) (+ 5 5))
(display (foo))
Run Code Online (Sandbox Code Playgroud)

显然,我对那些喜欢一种风格的人的主观答案不感兴趣,而是客观原因.

对我而言,这种区别似乎使得语言的语法和实现更加复杂(一个不那么明显的例子就是模板和void类型的c ++标准中的必要例外,或者引入了"快捷方式if语句",比如?c - 受影响的语言)没有真正的好处 - 但很可能有一个原因,即使是新的现代语言仍然有这种区别.

language-agnostic procedural-programming functional-programming

4
推荐指数
1
解决办法
117
查看次数

l 系统节点重写示例

这是我在 stackover 流中的第一篇文章。最近我开始阅读名为“植物的算法之美”的书,其中在第 1 章中,他解释了 L 系统。(您可以在此处阅读该章节)。

所以据我所知,有两种类型的 L 系统。边缘重写和节点重写。

边缘重写相对非常简单。有一个初始的起始多边形和一个生成器。初始多边形的每条边(边)都将被生成器替换。

但是这个节点重写非常混乱。从我收集到的信息来看,有两个或更多规则,并且每次迭代都将规则中的变量替换为其常量对应项。

对于海龟解释,这些是标准规则

F : Move turtle forward in current direction (initial direction is up)
+ : rotate turtle clock wise
- : rotate turtle anti clock wise
[ : Push the current state of the turtle onto a pushdown operations stack. 
    The information saved on the stack contains the turtle’s position and orientation, 
    and possibly other attributes such as the  color and width of lines being drawn. …
Run Code Online (Sandbox Code Playgroud)

algorithm procedural-programming l-systems procedural-generation fractals

4
推荐指数
1
解决办法
1228
查看次数

以程序方式编写一个相当大的,以数据库为中心的PHP应用程序而没有MVC是否合理?

对于相当主观的问题感到抱歉,但我希望得到一个比我更有经验的人的意见.

我对ajax驱动的PHP应用程序非常了解,虽然我在客户端的标记和行为之间有很好的分离,但我的PHP慢慢变得有点混乱.到目前为止,我做得很好,分成几部分,并以一种我没有太多重复的方式构建,但我肯定会开始看到它如何成为一个足够代码的负担.所以我一直在阅读有关OOP和MVC的内容,现在我正在尝试决定是否值得重构CodeIgniter或Kohana.直观地说,感觉这将是更多的工作而不是它的价值,但我知道我可能会在一段时间内唱出不同的曲调.

根据您的经验,今天在程序上编写一个严肃的应用程序是否被认为是绝对的hackish,或者是否有某些类型的应用程序更适合程序/结构编程.

php oop model-view-controller procedural-programming

3
推荐指数
1
解决办法
318
查看次数

程序编程的设计模式和封装?

我正在研究一个以程序风格编写的相当大的PHP项目(它是在PHP 5之前编写的),我不禁觉得我正在做的一些事情有点"hackish".其他地方的修改很容易破坏应用程序.我见过的所有设计模式和最佳实践似乎只适用于OOP.我可以使用PHP 5的OOP功能开始编写我的一些代码,但我不确定所有其他开发人员是否熟悉OOP.

对于那些对OOP更熟悉的人来说,程序式编程的本质是否只是"hackish"?是否有"最佳实践"书籍涉及如何保持大型程序应用程序的可维护性,并且不太可能引入新的错误?

我知道我可以以程序的方式应用OOP设计原则/模式,但如果我要这样做,我不妨使用PHP的OOP功能.也许我对程序范式没有足够的理解?

php procedural-programming design-patterns

3
推荐指数
1
解决办法
1451
查看次数

太空船精灵的程序生成

我已经研究了这个主题了几天,并且知道它如何起作用,但我想我会在这里发布其他一些想法.

我想做的是生成在游戏中使用的太空飞船精灵/图像.外观和感觉应该类似于这些: 飞船精灵http://i50.tinypic.com/10z1hq9.png

基本上,我的想法归结为这样的事情:

  1. 生成形成船舶"核心"的基础形状.形状可包括圆形,椭圆形,菱形,圆角矩形等.

  2. 生成较小的子形状,这些子形状覆盖在核心形状上,或通过简单的管道连接.(镜像所有子形状以创建对称船.)

  3. 生成更小的子形状(细节形状),将它们覆盖在任何现有形状上.(这些形成了船的"细节".)

  4. 选择3-5种颜色,随机遮盖每个形状,使覆盖的形状颜色不同.

  5. 将纹理或渐变应用于核心和子形状(不是细节形状),使船具有三维外观.

有没有人知道如何实现这样的算法来实现宇宙飞船的理想外观?

c# graphics procedural-programming

3
推荐指数
1
解决办法
5450
查看次数

JavaScript中的程序方法

我最近观看了一个JavaScript视频教程,其中包含与此类似的代码:

(function (){
    var b = 10,
        c = 20, 
        d = 50;

    var e = function(){
        return b + c + d;
    };
    return e();
}());
Run Code Online (Sandbox Code Playgroud)

这是一种常见的JS编码模式.作者说这是Javascript代码中程序方法的一个例子.我不明白,你能解释一下吗?

javascript procedural-programming

3
推荐指数
1
解决办法
4594
查看次数