标签: procedural-programming

寻找用不同语言编写的示例程序

作为理解OOP和Procedural语言之间差异的一种方法,我一直在寻找用C和C++或C#或Java编写的示例程序.我只想看到同一问题的不同方法,以帮助我了解真正的差异.有谁知道我在哪里可以找到这样的教程?

c c# oop procedural-programming programming-languages

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

如何将Procedural项目移植到OO项目中

我有一个小的PHP项目(大约3000行),我需要制作它的BASIC UML模型,从使用图,序列图和状态图的情况开始,可能是类图,并可能用协作图扩展它.

我是UML建模的新手,这是我第一次将模型从实现中取出而不是相反(不是非常有用,除非你进入逆向工程,但无论如何,这是一个分配)

现在,我应该如何处理这个问题?如果我的项目有OO实现,一些UML工具可以让我的生活变得非常简单,但事实并非如此,所以我想知道我是否应该将我的项目重写为OO以及如何做(我的意思是,是否有一些标准的基础我应遵循的指导方针或程序?),或者我是否应该按原样制作项目模型(在这种情况下,哪种建模工具最好).

我的项目也是在Eclipse IDE上编写的,有人知道它的任何插件来帮助我完成这个UML建模任务吗?

oop uml modeling procedural-programming

2
推荐指数
1
解决办法
201
查看次数

C 函数通常比 OOP 语言的方法有更多的参数吗?

我不得不编写一个超过 600 行和大约 25 个函数的 C 程序。这是我写过的最长的 C 代码。

我注意到一些函数有超过 5 个参数。直接从 main() 调用的那些有更多的参数。它离 main() 越远,越少。

我还注意到我经常不得不将参数传递给函数,不是因为该函数直接使用该参数,而是该函数调用另一个需要该参数的函数。

所以它看起来像

void f1(int a, int b,..., int bar){
    int foo = f2(bar); // the only time 'bar' is used in f1
    .
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

我试图尽量减少全局变量的使用,但我不得不声明一些全局变量,因为有些参数变得过于冗余。基本上我必须将这些参数传递给每个函数。

我不是一个有经验的程序员,但是当我用 Java 编程时,我认为我不需要编写一个超过 5 个参数的方法。

在 C 中传递比其他语言更多的参数是否正常?这只是过程式编程与面向对象编程的本质吗?还是我只是在写不好的 C 代码?

c arguments procedural-programming function

2
推荐指数
1
解决办法
145
查看次数

高级编程语言是否倾向于面向对象,而低级语言是面向程序的?

我只是对那里的所有语言类型感到有些困惑.与面向对象/程序的区别相比,高级/低级语言区别之间有什么区别 - 如果有的话?许多类比似乎相似.

oop procedural-programming

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

在PHP网站中是否需要OOP,我不能将其概念应用于程序代码....蛋糕和吃它?

我知道有关OOP和程序之间差异的无数问题,何时使用以及利益是否超过额外开销,学习语法,继承混淆等等.我发现的大部分内容往往只讨论差异和好处而不是它是否必要.

我通常在相同的站点脚本中混合OOP和程序,这取决于我正在做什么.我仍然是OOP的新手,实际上非常喜欢OOP的模块化特性及其带来的好处,即使有轻微的开销.有时候继承可能会有点混乱!

对我来说,主要的好处似乎只是更好地组织和保护代码.其中,开发人员或开发团队是唯一欣赏它的人.我想有一个部署速度的情况,但不会说大多数网站都有很多,除非你继承了别人的鸟类:)

在大多数PHP应用程序中是否需要OOP,特别是当执行速度是大多数网站的圣杯时?好的,所以毫秒的开销不会真正注意到,除非一个繁重的使用网站,但作为电子音乐速度的粉丝是王!

我在游戏和实时云软件等复杂的东西中使用OOP,但静态网站呢?即使数据库很重?

有没有人拥有从OOP中受益的典型网站的真实世界示例?为什么?

假设这两个案例结构合理,那么像ebay或monster.co.uk这样的大量使用网站会从OOP或程序()的速度提升中获益更多吗?为什么?

至少在程序上你可以从上到下进行调试,而不必在脚本周围跳过来检查类和扩展和接口.

我不能只使用清晰的MVC和评论良好的代码来应用OOP模块化思维吗?

例如,我将包含文件和组相关功能中的可重用功能保存在一起.我所要做的就是像文件一样包含文件并调用函数.如果函数需要更改,它只会在一个地方更改,类似于一个类.

并且在程序中已经存在一种继承,而不必通过箍来声明它.您没有相同级别的控制权,但它可以很好地快速完成工作.

您甚至可以通过在父函数中对函数进行分组来模拟类,并使用选择器函数来访问它们.虽然这有点远!

此外,据我所知,当一个函数被调用时,它会保留在内存中,从而使后续使用更快.而使用OOP,您必须创建各种方法的两个对象,以便为两个不同的变量使用相同的函数.如我错了请纠正我.

为什么在我可以直接用过程引用值时创建一个对象并使用一种方法"获取"一个值?

为了达到这个目标做得很好,没有意识到我输入了这么多.无论如何,在我离开之前,我将在这里结束它.

因此,如果您有任何实际网站或部分网站受益于OOP或程序的好例子,我将非常感谢清晰度.

php oop procedural-programming

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

自定义错误处理程序,用于处理对象代码内外的错误

我知道Stackoverflow上有很多与自定义错误处理程序相关的问题.但是,在阅读了其中许多内容以及PHP手册之后,我仍然无法解决我的问题.因此我发布了这个问题.

我的脚本目前以这种方式构建:

require 'file.php';
require 'anotherFile.php';
// several more "require" here. These files contain many functions

function myErrorHandler($errno, $errstr, $errfile, $errline, $errcontext){
    // some code to handle errors here

}

class myObject {
    function __construct() {
        // set the values here
    }

    function computeSomething() {
        ...
        doFunction2();
        ...
    }

    function SomethingBadHappened()
    {
    }
}

function doFunction1() {
    // for some reason, an error happens here
    // it is properly handled by the current error handler
}

function doFunction2() {
    // …
Run Code Online (Sandbox Code Playgroud)

php oop error-handling procedural-programming

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

为什么我们使用多维数组?

我正在学习多维数组,我对多维数组如何工作以及如何使用它们有所了解,除了一件事,在什么情况下我们需要使用它们?为什么?

oop procedural-programming

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

外部文件写入未完成

当我写入Pascal中的外部文件时,即使编码完美无缺,外部文件也不会完全写入.

procedure save;
  {Menyimpan data penerbangan ke dalam file eksternal}
      begin
         write('> ');
     write('nama file: ');
     readln(namafisik);
     assign(d,namafisik);
     {$I-};
     rewrite(d);
     {$I+};
     if (IOresult=0) then
         begin
            for i:=1 to Neff do
             writejadwal(i);
         end;
      end;

procedure writejadwal(i:integer);
{Menuliskan jadwal ke file eksternal pada indeks ke-i}
      begin
           write(d,T.KodePenerbangan[i]);
           write(d,' | ');
           write(d,T.KotaKeberangkatan[i]);
           write(d,' | ');
           write(d,T.KotaKedatangan[i]);
           write(d,' | ');
           if ((T.TKeberangkatan[i].Day) < 10 ) then
              begin
                   x:=T.TKeberangkatan[i].Day;
                   str(x,y);
                   s:=y;
                   write(d,'0'+s);
              end
           else
               begin
               write(d,T.TKeberangkatan[i].Day);
               end;
           write(d,':');
           if ((T.TKeberangkatan[i].Month) < 10 ) then
              begin …
Run Code Online (Sandbox Code Playgroud)

pascal procedural-programming freepascal lazarus turbo-pascal

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

面向对象编程和过程编程有什么区别?

从我可以收集到的过程编程使用过程和函数或子例程。它提供了有关如何操作的分步说明。虽然另一方面面向对象我并不完全确定。我所看到的只是它使用“对象”并且几乎​​相同?有人可以澄清并解释对象究竟是什么吗?

oop paradigms procedural-programming

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

如何从JSON对象(AST)构建控制流图(CFG)

我想从以JSON格式给出的AST构建控制流图(CFG).所以这个AST是在TouchDevelop中针对每个脚本自动创建的.而且由于TouchDevelop不是面向对象的编程,我还可以使用访问者模式吗?任何有用的指针将不胜感激.

Update1:我的问题是我不明白从哪里开始.从互联网上,我应该使用访问者模式来浏览AST以访问每个节点并收集信息.从那里,我可以构建一个CFG,然后进行数据流分析.但有两个问题:

1)据我所知,我需要面向对象的编程模型,使用访问者模式,(我可能是错的),这TouchDevelop不是.

2)如下所示,AST不是AST格式,正如我在互联网上找到的那样.它是JSON格式.我想我可以解析JSON将其转换为所需的AST结构,但我不太确定.

示例脚本的源代码

meta version "v2.2,nothing";
meta name "DivideByZero";
//
meta platform "current";

action main() {
  (5 / 0)?post_to_wall;
}
Run Code Online (Sandbox Code Playgroud)

产生的AST(JSON格式)如下:

{
    "type":"app",
    "version":"v2.2,nothing",
    "name":"DivideByZero",
    "icon":null,
    "color":null,
    "comment":"",
    "things":[
        {
            "type":"action",
            "name":"main",
            "isEvent":false,
            "outParameters":[
            ],
            "inParameters":[
            ],
            "body":[
                {
                    "type":"exprStmt",
                    "tokens":[
                        {
                            "type":"operator",
                            "data":"("
                        },
                        {
                            "type":"operator",
                            "data":"5"
                        },
                        {
                            "type":"operator",
                            "data":"/"
                        },
                        {
                            "type":"operator",
                            "data":"0"
                        },
                        {
                            "type":"operator",
                            "data":")"
                        },
                        {
                            "type":"propertyRef",
                            "data":"post to wall"
                        }
                    ]
                }
            ],
            "isPrivate":false
        }
    ]

}
Run Code Online (Sandbox Code Playgroud)

procedural-programming static-analysis abstract-syntax-tree touchdevelop control-flow-graph

0
推荐指数
1
解决办法
1684
查看次数