Vergleich von vJass mit anderen Programmiersprachen – Mappedia

Vergleich von vJass mit anderen Programmiersprachen

Aus Mappedia
Wechseln zu: Navigation, Suche

Dieser Artikel vergleicht die wichtigsten Konstrukte von vJass mit einigen anderen Programmiersprachen. Dies kann helfen, wenn man schon eine andere Programmiersprache kennt und vJass lernen will, aber auch wenn man vJass kann und eine normale Sprache lernen will.


Inhaltsverzeichnis

Hello World

Hello World ist das Standard-Beispiel für Programmiersprachen. Dabei handelt es sich um einen möglichst einfachen Programmcode, der den Text "Hello World" ausgibt.

in vJass:

library HelloWorld initializer init
	private function init takes nothing returns nothing
		call BJDebugMsg("Hello World!")
	endfunction
endlibrary

in C++:

#include <iostream>

int main()
{
  std::cout << "Hallo World" << std::endl;
  std::cin.get();
  return 0;
}

in Java:

class HelloWorld {

	public static void main(String[] args) {
		System.out.println("Hello World!");
	}
}

in PHP:

<?
echo 'Hello World!';
?> 

in Ruby:

puts 'Hello world'

in Haskell:

main = putStrLn "Hello, World!"

in Python:

print "Hello, World!" 

Basic:

PRINT "Hello World"

Fortran:

PROGRAM HelloWorld
   PRINT *, "Hello World"
END PROGRAM HelloWorld

Lisp:

(print "Hello World")

Lua:

print("Hello World\n")

Modula:

MODULE HelloWorld EXPORTS Main;

IMPORT SIO;

BEGIN
   SIO.PutText("Hello World\n");
END HelloWorld.

Pascal:

PROGRAM HelloWorld (OUTPUT);

BEGIN
   WRITELN('Hello World');
END.

in Assembler (MIPS R2000):

.data                     # Datensegment
str:    .asciiz "Hello World!\n"  # String ablegen
        .text                     # Codesegment
main:   li      $v0, 4            # 4 = Print_string
        la      $a0, str          # Adresse des Strings übergeben
        syscall                   # Systemfunktion aufrufen
        li      $v0, 10           # 10 = Quit
        syscall                   # Programm beenden

Variablen

Datentypen

Die folgende Tabelle zeigt die Jass-Datentypen und ihre Entsprechungen in anderen Sprachen:

Sprache Gleitkommazahl Natürliche Zahl Wahrheitswert Zeichenkette
Jass real integer boolean string
Java float int bool String
Basic Single Integer Boolean String
Delphi Real Integer Boolean ShortString
C++ double int bool string
C# double int (Int32) bool string
}

globale Variablen

Globale Variablen sind im gesamten Programm verfügbar.

in Jass:

globals
    integer x = 14
    real    y = 4.5
endglobals

in Delphi:

var
  x: Integer = 14;
  y: Single  = 4.5;

in C++:

int x = 14;
double y = 4.5;

Hierbei gilt es zu beachten, dass globale Variablen in C++ im Gegensatz zu Jass normalerweise nur dateiweit verfügbar sind und in anderen Dateien (z. B. mittels einer Header-Datei) erneut deklariert werden müssen.

lokale Variablen

Lokale Variablen sind in den Funktionen verfügbar, in denen sie deklariert wurden.

in Jass werden lokale Variablen am Anfang von Funktionen deklariert:

function Beispiel takes nothing returns nothing
    local integer x = 14
    local real y = 4.5
endfunction


in Delphi:

procedure IchMacheIrgendwas;
var x: Integer = 14;
    y: Real    = 4.5;
begin
   
end;


in C++:

void Beispiel()
{
    int x = 14;
    double y = 4.5;
}

Arrays

Kontrollstrukturen

Bedingungen

Schleifen

Schleifen werden benutzt um Handlungen wiederholt auszuführen.

In Jass verlässt man die Schleife mit "exitwhen 'Bedingung'"

function etwas takes nothing returns nothing
local integer i = 0

loop //Beginn der Schleife
    call BJDebugMsg(I2S(i)) //Irgendeine Handlung
    set i = i + 1
    exitwhen i == 10 //Verlässt die Schleife, sobald die Bedingung erfüllt ist
endloop //Beendet die Schleife

endfunction


In C++:

void etwas()
{
    for (int i = 0; i < 10; ++i) //Beginn der Schleife, Initialisierung von i, Festlegung der Bedingung, welche wahr sein muss, damit die Schleife fortgesetzt wird, Aktion, die am Ende jeder Iteration durchgeführt wird.
        ; //Irgendeine Handlung
}

Funktionen

Klassen

Konstruktoren

Destruktoren

Klassenattribute

Klassenmethoden

Subtyping

Vererbung

Aggregationen

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Warcraft-Mapping
Werkzeuge