Porovnání programovacích jazyků (základní pokyny) - Comparison of programming languages (basic instructions)
![]() | tento článek používá Značky HTML.Února 2019) ( |
![]() | tento článek potřebuje další citace pro ověření.Únor 2009) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Tento článek porovnává velké množství programovací jazyky tabulkou jejich typy dat, jejich výraz, prohlášení, a prohlášení syntax a některá běžná rozhraní operačního systému.
Konvence tohoto článku
The tučně je doslovný kód. Non-bold je interpretován čtenářem. Prohlášení v guillemets («…») Jsou volitelné. Záložka ↹ označuje nezbytné odsazení (s mezerami).
Identifikátory typu
Celá čísla
8 bitů (byte ) | 16 bitů (krátké celé číslo ) | 32 bitů | 64 bitů (dlouhé celé číslo ) | Velikost slova | Libovolně přesné (bignum ) | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Podepsaný | Nepodepsaný | Podepsaný | Nepodepsaný | Podepsaný | Nepodepsaný | Podepsaný | Nepodepsaný | Podepsaný | Nepodepsaný | ||
Ada[1] | rozsah -2 ** 7 .. 2 ** 7-1 [j] | rozsah 0 .. 2 ** 8 - 1 [j] nebo mod 2 ** 8 [k] | rozsah -2 ** 15 .. 2 ** 15 - 1 [j] | rozsah 0 .. 2 ** 16 - 1 [j] nebo mod 2 ** 16 [k] | rozsah -2 ** 31 .. 2 ** 31 - 1 [j] | rozsah 0 .. 2 ** 32 - 1 [j] nebo mod 2 ** 32 [k] | rozsah -2 ** 63 .. 2 ** 63-1 [j] | mod 2 ** 64 [k] | Celé číslo [j] | rozsah 0 .. 2 ** Integer ' [j] nebo mod Integer ' [k] | N / A |
ALGOL 68 (proměnná šířka) | krátký krátký int [C] | N / A | krátký int [C] | N / A | int [C] | N / A | dlouhá int [C] | N / A | int [C] | N / A | dlouhá dlouhá int [A][G] |
bajtů & bity | |||||||||||
C (C99 pevná šířka) | int8_t | uint8_t | int16_t | uint16_t | int32_t | uint32_t | int64_t | uint64_t | intptr_t [C] | size_t [C] | N / A |
C ++ (C ++ 11 pevná šířka) | |||||||||||
C (C99 variabilní šířka) | podepsaný znak | nepodepsaný znak | krátký [C] | bez znaménka krátký [C] | dlouho [C] | bez znaménka dlouho [C] | dlouho dlouho [C] | nepodepsáno dlouho dlouho [C] | int [C] | nepodepsané int [C] | |
C ++ (C ++ 11 variabilní šířka) | |||||||||||
Cíl-C (Kakao ) | podepsaný znak | nepodepsaný znak | krátký | bez znaménka krátký | int | nepodepsané int | dlouho dlouho | bez znaménka dlouho dlouho | NSInteger | NSUInteger | |
C# | sbyte | byte | krátký | ushort | int | uint | dlouho | dlouho | IntPtr | UIntPtr | System.Numerics (.NET 4.0) |
Jáva | byte | N / A | char [b] | N / A | N / A | N / A | N / A | java.math | |||
Jít | int8 | uint8 nebo byte | int16 | uint16 | int32 | uint32 | int64 | uint64 | int | uint | velký.Int |
Rez | i8 | u8 | i16 | u16 | i32 | u32 | i64 | u64 | isize | využít | N / A |
Rychlý | Int8 | 8. UInt | Int16 | 16. UInt | Int32 | UInt32 | Int64 | UInt64 | Int | UInt | |
D | byte | ubyte | krátký | ushort | int | uint | dlouho | dlouho | N / A | N / A | BigInt |
Společný Lisp[2] | (podepsaný bajt 8) | (nepodepsaný bajt 8) | (podepsaný bajt 16) | (nepodepsaný bajt 16) | (podepsaný bajt 32) | (nepodepsaný bajt 32) | (podepsaný bajt 64) | (nepodepsaný bajt 64) | bignum | ||
Systém | |||||||||||
ISLISP[3] | bignum | ||||||||||
Pascal (FPC ) | zkratka | byte | smallint | slovo | Longint | dlouhé slovo | int64 | qword | celé číslo | kardinál | N / A |
Visual Basic | N / A | Byte | Celé číslo | N / A | Dlouho | N / A | N / A | N / A | N / A | ||
Visual Basic .NET | SByte | Krátký | UShort | Celé číslo | UInteger | Dlouho | ULong | System.Numerics (.NET 4.0) | |||
FreeBasic | Byte nebo Celé číslo <8> | UByte nebo UInteger <8> | Krátký nebo Celé číslo <16> | UShort nebo UInteger <16> | Dlouho nebo Celé číslo <32> | ULong nebo UInteger <32> | LongInt nebo Celé číslo <64> | ULONInt nebo UInteger <64> | Celé číslo | UInteger | N / A |
Krajta 2.x | N / A | N / A | N / A | N / A | int | N / A | dlouho | ||||
Python 3.x. | N / A | N / A | N / A | N / A | N / A | int | |||||
Slang | N / A | N / A | N / A | N / A | N / A | N / A | |||||
Fortran | CELÉ ČÍSLO [F] | N / A | CELÉ ČÍSLO [F] | N / A | CELÉ ČÍSLO [F] | N / A | CELÉ ČÍSLO [F] | N / A | |||
PHP | N / A | N / A | int [m] | N / A | int [m] | N / A | N / A | [E] | |||
Perl 5 | N / A[d] | N / A[d] | N / A[d] | N / A[d] | N / A[d] | Matematika :: BigInt | |||||
Raku | int8 | uint8 | int16 | uint16 | int32 | uint32 | int64 | uint64 | Int | N / A | |
Rubín | N / A | N / A | N / A | N / A | Fixnum | N / A | Bignum | ||||
Erlang[n] | N / A | N / A | N / A | N / A | celé číslo() | N / A | celé číslo()[Ó] | ||||
Scala | Byte | N / A | Krátký | Char [l] | Int | N / A | Dlouho | N / A | N / A | N / A | scala.math.BigInt |
7. semeno | N / A | N / A | N / A | N / A | N / A | N / A | celé číslo | N / A | N / A | N / A | bigInteger |
Pokec | N / A | N / A | N / A | N / A | SmallInteger [i] | N / A | LargeInteger [i] | ||||
Windows PowerShell | N / A | N / A | N / A | N / A | N / A | N / A | |||||
OCaml | N / A | N / A | int32 | N / A | int64 | N / A | int | otevřít Big_int ;; | |||
F# | sbyte | byte | int16 | uint16 | int32 nebo int | uint32 | uint64 | nativeint | unativeint | bigint | |
Standardní ML | N / A | Slovo 8. slovo | N / A | Int32.int | Word32.slovo | Int64.int | Word64.slovo | int | slovo | LargeInt.int nebo IntInf.int | |
Haskell (GHC ) | «import Int » Int8 | «importovat Word » Word8 | «import Int » Int16 | «importovat Word » Slovo16 | «import Int » Int32 | «importovat Word » Word32 | «import Int » Int64 | «importovat Word » Word64 | Int | «importovat Word » Slovo | Celé číslo |
Eiffelova | INTEGER_8 | PŘÍRODNÍ_8 | INTEGER_16 | PŘÍRODNÍ_16 | INTEGER_32 | NATURAL_32 | INTEGER_64 | NATURAL_64 | CELÉ ČÍSLO | PŘÍRODNÍ | N / A |
COBOL[h] | BINARY-CHAR «SIGNED» | BINARY-CHAR NEPODPÍSÁNO | BINARY-SHORT «PODPÍSÁNO» | BINARY-SHORT BEZ PODPISU | BINARY-LONG «SIGNED» | BINÁRNĚ DLOUHÉ NEPODPÍSÁNO | BINARY-DOUBLE «PODPÍSÁNO» | BINARY-DVOJNÁSOBKA NEPODPÍSANÁ | N / A | N / A | N / A |
Mathematica | N / A | N / A | N / A | N / A | N / A | Celé číslo | |||||
Wolfram jazyk | N / A | N / A | N / A | N / A | N / A | Celé číslo |
^ a The Standard konstanty int šortky
a délky int
lze použít k určení, kolik 'krátký
's a'dlouho
„může být užitečně předponou“krátký int
' a 'dlouhá int
'. Skutečná velikostkrátký int
', 'int
' a 'dlouhá int
'je k dispozici jako konstanty krátký max. int
, max. int
a dlouhá max. int
atd.
^ b Běžně se používá pro znaky.
^ c Jazyky ALGOL 68, C a C ++ neurčují přesnou šířku celočíselných typů krátký
, int
, dlouho
, a (C99, C ++ 11) dlouho dlouho
, takže jsou závislé na implementaci. V C a C ++ krátký
, dlouho
, a dlouho dlouho
typy musí mít šířku alespoň 16, 32 a 64 bitů, ale mohou být i větší. The int
typ musí být alespoň tak široký jako krátký
a nanejvýš tak široký jako dlouho
, a je to obvykle šířka velikosti slova na procesoru stroje (tj. na 32bitovém stroji je často široký 32 bitů; na 64bitových strojích je někdy široký 64 bitů). C99 a C ++ 11[Citace je zapotřebí ] také definovat [u] intN_t
typy s přesnou šířkou v stdint.h záhlaví. VidětSyntaxe C # Integrální typy Pro více informací. Kromě toho typy size_t
a ptrdiff_t
jsou definovány ve vztahu k velikosti adresy, aby držely nepodepsaná a podepsaná celá čísla dostatečně velká pro zpracování indexů pole a rozdílu mezi ukazateli.
^ d Perl 5 nemá odlišné typy. Celá čísla, čísla s plovoucí desetinnou čárkou, řetězce atd. Jsou považována za „skaláry“.
^ e PHP má dvě knihovny s libovolnou přesností. Knihovna BCMath používá jako datový typ pouze řetězce. Knihovna GMP používá interní typ „prostředku“.
^ f Hodnota "n" je poskytována SELECTED_INT_KIND
[4] vnitřní funkce.
^ g ALGOL 68 Možnost spuštění G --přesnost „číslo“
lze nastavit přesnost pro dlouhá dlouhá int
s na požadované „číslo“ významných číslic. The Standard konstanty dlouhá dlouhá int šířka
a dlouhá dlouhá max. int
lze použít ke stanovení skutečné přesnosti.
^ h COBOL umožňuje specifikaci požadované přesnosti a automaticky vybere dostupný typ schopný reprezentovat zadanou přesnost. "PIC S9999
„například bude vyžadovat podepsanou proměnnou s přesností na čtyři desetinná místa. Pokud je zadáno jako binární pole, vybere se na většině platforem 16bitový podepsaný typ.
^ i Pokec automaticky vybere vhodné vyjádření pro integrální čísla. Obvykle jsou k dispozici dvě reprezentace, jedna pro celá čísla vyhovující velikosti nativního slova minus libovolný bit značky (SmallInteger) a jedna podporující celá čísla libovolné velikosti (LargeInteger). Aritmetické operace podporují polymorfní argumenty a vrátí výsledek v nejvhodnější kompaktní reprezentaci.
^ j Ada typy rozsahů jsou kontrolovány na porušení hranic za běhu (stejně jako v době kompilace pro statické výrazy). Porušení hranic za běhu vyvolá výjimku „chyba omezení“. Rozsahy nejsou omezeny na mocniny dvou. Běžně předdefinované celočíselné podtypy jsou: Pozitivní (rozsah 1 .. Celé číslo'poslední
) a přírodní (rozsah 0 .. Celé číslo'poslední
). Short_Short_Integer
(8 bitů), Short_Integer
(16 bitů) a Long_Integer
(64 bitů) jsou také běžně předdefinovány, ale standard Ada to nevyžaduje. Kontroly doby běhu lze deaktivovat, pokud je výkon důležitější než kontroly integrity.
^ k Ada typy modulo implementují modulo aritmetiku ve všech operacích, tj. není možné porušení rozsahu. Moduly nejsou omezeny na mocniny dvou.
^ l Běžně se používá pro znaky jako Java char.
^ m int
v PHP má stejnou šířku jako dlouho
typ C má v tomto systému [C].
^ n Erlang se zadává dynamicky. Identifikátory typů se obvykle používají k určení typů polí záznamu a typů argumentů a návratů funkcí.[5]
^ o Když překročí jedno slovo.[6]
Plovoucí bod
Jedna přesnost | Dvojitá přesnost | Jiná přesnost | Závisí na procesoru | |
---|---|---|---|---|
Ada[1] | Plovák | Long_Float | N / A | |
ALGOL 68 | nemovitý [A] | dlouho skutečné [A] | krátké skutečné , dlouho dlouho skutečné , atd.[d] | |
C | plovák [b] | dvojnásobek | dlouhý dvojitý [F] | |
C ++ (STL) | ||||
Objective-C (kakao) | CGFloat | |||
C# | plovák | N / A | ||
Jáva | ||||
Jít | float32 | float64 | ||
Rez | f32 | f64 | ||
Rychlý | Plovák | Dvojnásobek | Float80 [G] | CGFloat |
D | plovák | dvojnásobek | nemovitý | |
Společný Lisp | single-float | dvojitý plovák | float, short-float, long-float | |
Systém | ||||
ISLISP | ||||
Pascal (Free Pascal) | singl | dvojnásobek | nemovitý | |
Visual Basic | Singl | Dvojnásobek | N / A | |
Visual Basic .NET | ||||
Xojo | ||||
Krajta | N / A | plovák | ||
JavaScript | Číslo [7] | N / A | ||
Slang | ||||
Fortran | SKUTEČNÉ (DRUHÉ = n) [C] | |||
PHP | plovák | |||
Perl | ||||
Raku | num32 | num64 | Num | |
Rubín | N / A | Plovák | N / A | |
Scala | Plovák | Dvojnásobek | ||
7. semeno | N / A | plovák | ||
Pokec | Plovák | Dvojnásobek | ||
Windows PowerShell | ||||
OCaml | N / A | plovák | N / A | |
F# | float32 | |||
Standardní ML | N / A | nemovitý | ||
Haskell (GHC) | Plovák | Dvojnásobek | ||
Eiffelova | REAL_32 | REAL_64 | ||
COBOL | FLOAT-BINARY-7 [E] | FLOAT-BINARY-34 [E] | PLOCHÝ KRÁTKÝ , FLOAT-LONG , Plovák prodloužen | |
Mathematica | N / A | N / A | Nemovitý |
^ a The Standard konstanty skutečné šortky
a skutečné délky
lze použít k určení, kolik 'krátký
's a'dlouho
„může být užitečně předponou“krátké skutečné
' a 'dlouho skutečné
'. Skutečná velikostkrátké skutečné
', 'nemovitý
' a 'dlouho skutečné
'je k dispozici jako konstanty krátké max. skutečné
, max. skutečný
a dlouhá max. skutečná
atd. S konstantami krátké malé skutečné
, malý skutečný
a dlouhý malý skutečný
k dispozici pro každý typ stroj epsilon.
^ b deklarace jediné přesnosti často nejsou dodržovány
^ c Hodnota "n" je poskytována SELECTED_REAL_KIND
[8] vnitřní funkce.
^ d ALGOL 68 Možnost spuštění G --přesnost „číslo“
lze nastavit přesnost pro dlouho dlouho skutečné
s na požadované „číslo“ významných číslic. The Standard konstanty dlouhá dlouhá skutečná šířka
a 'dlouhý dlouhý max skutečný
lze použít ke stanovení skutečné přesnosti.
^ e Tyto typy IEEE s plovoucí desetinnou čárkou budou představeny v příštím standardu COBOL.
^ f Stejná velikost jako 'dvojnásobek
„na mnoha implementacích.
^ g Swift podporuje 80-bit rozšířená přesnost typ s plovoucí desetinnou čárkou, ekvivalentní s plovoucí desetinnou čárkou dlouhý dvojitý
v jazycích C.
Složitá čísla
Celé číslo | Jedna přesnost | Dvojitá přesnost | Poloviční a čtyřnásobná přesnost atd. | |
---|---|---|---|---|
Ada[1] | N / A | Komplex [b] | Komplex [b] | Komplex [b] |
ALGOL 68 | N / A | kompl | dlouhý kompl atd. | krátké kompl atd. & dlouhý dlouhý kompl atd. |
C (C99) [9] | N / A | plovoucí komplex | dvojitý komplex | N / A |
C ++ (STL) | N / A | std :: complex | std :: complex | |
C# | N / A | N / A | System.Numerics.Complex (.NET 4.0) | |
Jáva | N / A | N / A | N / A | |
Jít | N / A | komplex64 | komplex128 | |
D | N / A | plovák | cdouble | |
Cíl-C | N / A | N / A | N / A | |
Společný Lisp | (komplexní celé číslo) | (komplexní single-float) | (komplexní dvojitý plovák) | komplex |
Systém | N / A | |||
Pascal | N / A | N / A | ||
Visual Basic | N / A | N / A | ||
Visual Basic .NET | N / A | N / A | System.Numerics.Complex (.NET 4.0) | |
Perl | Matematika :: Složité | |||
Raku | komplex64 | komplex128 | Komplex | |
Krajta | komplex | N / A | ||
JavaScript | N / A | N / A | ||
Slang | N / A | N / A | ||
Fortran | KOMPLEXNÍ (KIND = n) [A] | |||
Rubín | Komplex | N / A | Komplex | |
Scala | N / A | N / A | N / A | |
7. semeno | N / A | N / A | komplex | |
Pokec | Komplex | Komplex | Komplex | |
Windows PowerShell | N / A | N / A | ||
OCaml | N / A | N / A | Complex.t | |
F# | System.Numerics.Complex (.NET 4.0) | |||
Standardní ML | N / A | N / A | N / A | |
Haskell (GHC) | N / A | Complex.Complex Float | Complex.Complex Double | |
Eiffelova | N / A | N / A | N / A | |
COBOL | N / A | N / A | N / A | |
Mathematica | Komplex | N / A | N / A | Komplex |
^ a Hodnota "n" je poskytována SELECTED_REAL_KIND
[8] vnitřní funkce.
^ b Obecný typ, který lze vytvořit s jakýmkoli základním typem plovoucí desetinné čárky.
Jiné typy proměnných
Text | Booleovský | Výčet | Objekt /Univerzální | ||
---|---|---|---|---|---|
Charakter | Tětiva[A] | ||||
Ada[1] | Charakter | Tětiva & Bounded_String & Unbounded_String | Booleovský | (položka1, položka2, ... ) | označený nulový záznam |
ALGOL 68 | char | tětiva & bajtů | bool & bity | N / A - Definováno uživatelem | N / A |
C (C99) | char | N / A | bool [b] | výčet "název" {položka1, položka2, ... }; | prázdnota * |
C ++ (STL) | «Standardní ::»tětiva | ||||
Cíl-C | Unichar | NSString * | BOOL | id | |
C# | char | tětiva | bool | výčet název { položka1« = hodnota», položka2« = hodnota", ... } | objekt |
Jáva | Tětiva | booleovský | výčet název {položka1, položka2, ... } | Objekt | |
Jít | byte | tětiva | bool | const ( | rozhraní{} |
Rez | char | Tětiva | bool | výčet název { | N / A |
Rychlý | Charakter | Tětiva | Boole | výčet název { případ položka1, položka2, ... } | Žádný |
D | char | tětiva | bool | výčet název {položka1, položka2, ... } | standardní varianta |
Společný Lisp | charakter | tětiva | booleovský | (členská položka1 položka2 ...) | t |
Systém | |||||
ISLISP | |||||
Pascal (ISO) | char | N / A | booleovský | (položka1, položka2, ...) | N / A |
Objekt Pascal (Delphi) | tětiva | varianta | |||
Visual Basic | N / A | Tětiva | Booleovský | Výčet název | Varianta |
Visual Basic .NET | Char | Objekt | |||
Xojo | N / A | Objekt nebo varianta | |||
Krajta | N / A[d] | str | bool | z enum import Enum | objekt |
JavaScript | N / A[d] | Tětiva | Booleovský | Objekt | |
Slang | |||||
Fortran | CHARAKTER (LEN = *) | CHARACTER (LEN = :), lze přiřadit | LOGICKÉ (DRUH = n) [F] | TŘÍDA(*) | |
PHP | N / A[d] | tětiva | bool | (deklarace typu vynechána) | |
Perl | N / A[d] | UNIVERZÁLNÍ | |||
Raku | Char | Str | Boole | výčet název | Mu |
Rubín | N / A[d] | Tětiva | Objekt [C] | Objekt | |
Scala | Char | Tětiva | Booleovský | objekt název rozšiřuje výčet { | Žádný |
7. semeno | char | tětiva | booleovský | typ const: název je nový výčet | |
Windows PowerShell | |||||
OCaml | char | tětiva | bool | N / A[E] | N / A |
F# | typ název = položka1 = hodnota |položka2 = hodnota | ... | obj | |||
Standardní ML | N / A[E] | N / A | |||
Haskell (GHC) | Char | Tětiva | Boole | N / A[E] | N / A |
Eiffelova | CHARAKTER | TĚTIVA | BOOLEAN | N / A | ŽÁDNÝ |
COBOL | PIC X | PIC X (délka řetězce) nebo PIC X «X ...» | PIC 1 «(počet číslic)» nebo PIC 1 «1 ...» | N / A | REFERENČNÍ PŘEDMĚT |
Mathematica | N / A[d] | Tětiva | N / A |
^ a konkrétně řetězce libovolné délky a automaticky spravované.
^ b Tento jazyk představuje boolean jako celé číslo, kde false je reprezentováno jako hodnota nula a true nenulovou hodnotou.
^ c Všechny hodnoty se vyhodnotí na hodnotu true nebo false. Všechno dovnitř TrueClass
hodnotí jako pravdivé a vše v FalseClass
vyhodnotí jako nepravdivé.
^ d Tento jazyk nemá samostatný typ znaků. Znaky jsou reprezentovány jako řetězce délky 1.
^ e Výčty v tomto jazyce jsou algebraické typy pouze s nullovými konstruktory
^ f Hodnota "n" je poskytována SELECTED_INT_KIND
[4] vnitřní funkce.
Odvozené typy
Pole
pole pevné velikosti | pole dynamické velikosti | ||||
---|---|---|---|---|---|
jednorozměrné pole | vícerozměrné pole | jednorozměrné pole | vícerozměrné pole | ||
Ada[1] | pole (<first> .. <last>) z <type> nebo pole (<discrete_type>) z <type> | pole ( | pole (<discrete_type> rozsah <>) z <type> | pole ( | |
ALGOL 68 | [za prvé:poslední] nebo jednoduše: [velikost] | [za prvé1:poslední1, za prvé2:poslední2] nebo [za prvé1:poslední1][za prvé2:poslední2] atd. | flex[za prvé:poslední] nebo jednoduše: flex[velikost] | flex[za prvé1:poslední1, za prvé2:poslední2] nebo flex[za prvé1:poslední1] | |
C (C99) | zadejte název[velikost][A] | zadejte název[velikost1][velikost2][A] | typ *název nebo v rámci bloku: int n = ...; zadejte název[n] | ||
C ++ (STL) | «Std ::» pole <typ, velikost> (C ++ 11) | «Std ::» vektor <typ> | |||
C# | typ[] | typ[,,...] | Systém | ||
Jáva | typ[][b] | typ[][]...[b] | ArrayList nebo ArrayList <typ> | ||
D | typ[velikost] | typ[velikost1][velikost2] | typ[] | ||
Jít | [velikost]typ | [velikost1][velikost2]...typ | []typ | [][]typ | |
Rez | [typ; velikost] | [[typ; velikost1]; velikost2] | Vec <typ> | Vec | |
Rychlý | [typ] nebo Pole <typ> | [[typ]] nebo Pole | |||
Cíl-C | NSArray | NSMutableArray | |||
JavaScript | N / A | N / A | Pole [d] | ||
Společný Lisp | (jednoduchý typ pole (dimenze)) | (jednoduchý typ pole (rozměr1 dimenze2)) | (typ pole (dimenze)) | (typ pole (rozměr1 dimenze2)) | |
Systém | |||||
ISLISP | |||||
Pascal | pole [za prvé..poslední] z typ[C] | pole [za prvé1..poslední1] pole [za prvé2..poslední2] ... z typ [C] nebo | N / A | N / A | |
Objekt Pascal (Delphi) | pole typ | pole pole ... z typ | |||
Visual Basic |
|
| |||
Visual Basic .NET | typ() | typ(,,...) | Systém | ||
Krajta | seznam | ||||
Slang |
|
| |||
Fortran | typ :: název(velikost) | typ :: název(velikost1, velikost2,...) | typ, PŘIDĚLITELNÉ :: název(:) | typ, PŘIDĚLITELNÉ :: název(:,:,...) | |
PHP | pole | ||||
Perl | |||||
Raku | Pole [typ] nebo Pole typ | ||||
Rubín |
| Pole | |||
Scala | Pole [typ] | Pole [...[Pole [typ]]...] | ArrayBuffer [typ] | ||
7. semeno | pole typ | pole pole typ | pole typ | pole pole typ | |
Pokec | Pole | OrderedCollection | |||
Windows PowerShell | typ[] | typ[,,...] | |||
OCaml | typ pole | typ pole ... pole | |||
F# | typ [] nebo zadejte pole | typ [,,...] | Systém | ||
Standardní ML | typ vektor nebo zadejte pole | ||||
Haskell (GHC) |
|
| |||
COBOL | typ čísla úrovně NACHÁZÍ se velikost «ČASY». | definice jednorozměrného pole ... | typ čísla úrovně NACHÁZÍ se minimální velikost NA maximální velikost «ČASY» ZÁVISÍCÍ «NA»Velikost. [E] | N / A |
^ a Ve většině výrazů (kromě velikost
a &
operátory), hodnoty typů polí v C se automaticky převedou na ukazatel prvního argumentu. Vidět C syntaxe # pole pro další podrobnosti operací syntaxe a ukazatele.
^ b Typ C X[]
„funguje však v Javě“[] X
"je upřednostňovaná forma deklarace pole.
^ c Podrozsahy se používají k definování hranic pole.
^ d Pole JavaScriptu je speciální druh objektu.
^ e The ZÁLEŽÍ NA
klauzule v COBOL nevytváří pole `` skutečné`` proměnné délky a vždy přidělí maximální velikost pole.
Jiné typy
Jednoduché složené typy | Algebraické datové typy | Odbory | ||
---|---|---|---|---|
Evidence | Tuple výraz | |||
Ada[1] | typ identifikátor je «abstraktní» «označeno» «omezený» [záznam | N / A | Libovolná kombinace záznamů, sjednocení a výčty (stejně jako odkazy na tyto, umožňující rekurzivní typy). | typ identifikátor (variace : diskrétní_typ) je záznam |
ALGOL 68 | struktur (modename «Polename», ...); | Požadované typy a operátoři mohou být definované uživatelem | svaz (modename, ...); | |
C (C99) | struktur "název" {zadejte název;...}; | N / A | N / A | svaz {zadejte název;...}; |
Cíl-C | ||||
C ++ | struktur "název" {zadejte název;...};[b] | «Std ::» n-tice | ||
C# | struktur název {zadejte název;...} | (val1, val2, ... ) | N / A | |
Jáva | N / A[A] | |||
JavaScript | N / A | |||
D | struktur název {zadejte název;...} | standardní varianta. algebraické!(typ,...) | svaz {zadejte název;...} | |
Jít | struktura { | |||
Rez | název struktury {název: typ, ...} | (val1, val2, ... ) | jméno výčtu { Foo(typy), ...} | název odboru {název: typ, ...} |
Rychlý | struktur název { | ("název1:»Val1, "název2:»Val2, "název3:»Val3, ... ) | výčet název { případ Foo «(typy)» případ Bar "(typy)» ... } | |
Společný Lisp | (defstruct name slot-name (slot-name initial-value) (slot-name initial-value: type type) ...) | (nevýhody val1 val2)[C] | ||
Systém | N / A | |||
ISLISP | ||||
Pascal | záznam | N / A | N / A | záznam |
Visual Basic | ||||
Visual Basic .NET | Struktura název | (val1, val2, ... ) | ||
Krajta | N / A[A] | «(»Val1, val2, val3, ... «)» | N / A | |
Slang | struktura {jméno [= hodnota], ...} | |||
Fortran | TYP název
| |||
PHP | N / A[A] | |||
Perl | N / A[d] | N / A | ||
Raku | N / A[A] | |||
Rubín | OpenStruct.Nový({:název => hodnota}) | |||
Scala | třída případů název(«var" název: typ, ...) | (val1, val2, val3, ... ) | abstraktní třída název nebo | |
Windows PowerShell | ||||
OCaml | typ název = {«proměnlivý" název : typ;...} | «(»Val1, val2, val3, ... «)» | typ název = Foo «z typ" | Bar "z typ" | ... | N / A |
F# | ||||
Standardní ML | typ název = {název : typ,...} | (val1, val2, val3, ... ) | datový typ název = Foo «z typ" | Bar "z typ" | ... | |
Haskell | data název = Constr {název :: typ,...} | data název = Foo «typy» | Tyčové «typy» | ... | ||
COBOL | klauzule typu název-úrovně. | N / A | N / A | název REDEFINY proměnný typ. |
^ a Podporovány jsou pouze třídy.
^ b struktur
s v C ++ jsou ve skutečnosti třídy, ale mají výchozí veřejnou viditelnost a jsou taky LUSK předměty. C ++ 11 to dále rozšířil, aby třídy v mnoha dalších případech fungovaly stejně jako objekty POD.
^ c pouze pár
^ d Ačkoli Perl nemá záznamy, protože Perlův systém typů umožňuje, aby byly v poli různé datové typy, „hash“ (asociativní pole), která nemají variabilní index, by byl ve skutečnosti stejný jako záznamy.
^ e Výčty v tomto jazyce jsou algebraické typy pouze s nullovými konstruktory
Proměnná a konstantní prohlášení
proměnná | konstantní | zadejte synonymum | |
---|---|---|---|
Ada[1] | identifikátor : typ":= počáteční hodnota"[E] | identifikátor : konstantní typ := final_value | podtyp identifikátor je typ |
ALGOL 68 | modename název« := počáteční hodnota"; | modename název = hodnota; | režimu synonymum = modename; |
C (C99) | zadejte jméno «= počáteční hodnota"; | výčet { název = hodnota }; | typedef zadejte synonymum; |
Cíl-C | |||
C ++ | konst zadejte název = hodnota; | ||
C# | zadejte název1« = initial_value », jméno2« = počáteční hodnota", ... ; nebo | konst zadejte název = hodnota, název = hodnota, ... ; nebo | použitím synonymum = typ; |
D | zadejte jméno «= počáteční hodnota"; nebo | konst zadejte název = hodnota; nebo | alias zadejte synonymum; |
Jáva | zadejte jméno «= počáteční hodnota"; | finále zadejte název = hodnota; | N / A |
JavaScript | var název"= počáteční hodnota"; nebo nechat název"= počáteční hodnota"; (od té doby ECMAScript 2015) | konst název = hodnota; (od té doby ECMAScript 2015) | |
Jít | var typ jména «= initial_value »nebo | konst jméno «typ» = hodnota | typ typ synonyma |
Rez[F] | nechť mut název": typ""= počáteční hodnota"; statický mut NÁZEV: typ = hodnota; | nechat název": typ""= počáteční hodnota"; konst NÁZEV: typ = hodnota; statický NÁZEV: typ = hodnota; | typ synonymum = typename; |
Rychlý | var název": typ""= počáteční hodnota" | nechat název ": typ" = hodnota | typealias synonymum = typ |
Společný Lisp | (defparametr název počáteční hodnota) nebo | (v rozporu hodnota názvu) | (deftype synonymum () 'typ) |
Systém | (definovat name initial_value) | ||
ISLISP | (defglobální name initial_value) nebo | (v rozporu hodnota názvu) | N / A |
Pascal[A] | název: typ"= počáteční hodnota" | název = hodnota | synonymum = typ |
Visual Basic | Ztlumit název "Tak jako typ" | Viz poznámky vlevo. Konstanty používají stejnou syntaxi a:
| |
Visual Basic .NET[10] | Syntaxe deklarace proměnné VB.NET je překvapivě obtížné přesně popsat. Vzhledem k tomu, že existují přípony identifikátorů ("modifikátory"):
a to
platné deklarační prohlášení mají formu
kde pro účely sémantické analýzy převést
a pro které, pro každého
Li
| Dovoz synonymum = typ | |
Xojo | Ztlumit název "Tak jako typ""= počáteční hodnota" | N / A | |
Krajta | název = počáteční hodnota | N / A | synonymum = typ[b] |
CoffeeScript | N / A | ||
Slang | název = počáteční hodnota; | typedef struct {...} typename | |
Fortran | zadejte název | typ, PARAMETR :: název = hodnota | |
PHP | $název = počáteční hodnota; | definovat("název", hodnota); | N / A |
Perl | «můj» $název"= počáteční hodnota»;[C] | používat konstantní název => hodnota; | |
Raku | «můj «Typ» »$ name«= počáteční hodnota»;[C] | «můj "typ"" konstantní název = hodnota; | ::synonymum ::= typ |
Rubín | název = počáteční hodnota | název = hodnota | synonymum = typ[b] |
Scala | var název": typ" = počáteční hodnota | val název": typ" = hodnota | typ synonymum = typ |
Windows PowerShell | «[typ] »$název = počáteční hodnota | N / A | N / A |
Bash shell | jméno =počáteční hodnota | N / A | N / A |
OCaml | nechat název": typ ref» = ref hodnota[d] | nechat název ": typ" = hodnota | typ synonymum = typ |
F# | nechat měnitelné název": typ" = hodnota | ||
Standardní ML | val název": typ ref» = ref hodnota[d] | val název ": typ" = hodnota | |
Haskell | "název::typ;" název = hodnota | typ Synonymum = typ | |
Forth | VARIABILNÍ název (v některých systémech použít hodnota VARIABILNÍ název namísto) | hodnota KONSTANTNÍ název | |
COBOL | klauzule typu název typu číslo. | «0»1 název KONSTANTNÍ «TAK JAKO»Hodnota. | klauzule typu název typu číslo úrovně «JE» TYPEDEF. |
Mathematica | jméno =počáteční hodnota | N / A | N / A |
^ a Pascal má deklarační bloky. Vidět Porovnání programovacích jazyků (základní pokyny) #Functions.
^ b Typy jsou jen běžné objekty, takže je můžete jednoduše přiřadit.
^ c V Perlu klíčové slovo „moje“ nastavuje rozsah proměnné do bloku.
^ d Technicky to nedeklaruje název být proměnlivou proměnnou - v ML mohou být všechna jména svázána pouze jednou; spíše prohlašuje název ukázat na „referenční“ datovou strukturu, což je jednoduchá proměnlivá buňka. Datovou strukturu lze poté číst a zapisovat pomocí !
a :=
operátoři, resp.
^ e Pokud není zadána žádná počáteční hodnota, je automaticky přiřazena neplatná hodnota (která spustí výjimku za běhu, pokud byla použita před přiřazením platné hodnoty). I když lze toto chování potlačit, doporučuje se to v zájmu předvídatelnosti. Pokud pro typ nelze najít neplatnou hodnotu (například v případě celočíselného typu bez omezení), je místo toho vybrána platná, přesto předvídatelná hodnota.
^ f V Rust, pokud není dána počáteční hodnota a nechat
nebo nechť mut
proměnná a nikdy se jí nepřiřadí, existuje "nepoužitá proměnná" varování. Pokud není uvedena žádná hodnota pro a konst
nebo statický
nebo statický mut
proměnná, došlo k chybě. Tady je „globály bez velkých písmen“ chyba pro velká písmena konst
proměnné. Poté, co je definováno, a statický mut
proměnnou lze přiřadit pouze v nebezpečný
blok nebo funkce.
Řízení toku
Podmiňovací způsob prohlášení
-li | jinak pokud | vyberte případ | podmíněný výraz | |
---|---|---|---|---|
Ada[1] | -li stav pak | -li stav1 pak | případ výraz je | (li stav1 pak |
7. semeno | -li stav pak | -li stav1 pak | případ výraz z | |
Modula-2 | -li stav pak | -li stav1 pak | případ výraz z | |
ALGOL 68 | -li stav pak prohlášení «jiný prohlášení » fi | -li stav pak prohlášení elif stav pak prohlášení fi | případ přepínač v prohlášení, prohlášení «, ... ven prohlášení » esac | (podmínka | valueIfTrue | valueIfFalse) |
ALGOL 68 (krátký formulář) | (podmínka | výpisy «| výpisy») | (podmínka | prohlášení |: podmínka | prohlášení) | (proměnná | výpisy, ... «| výpisy») | |
APL | :Li stav | :Li stav | :Vybrat výraz | {stav:valueIfTrue ⋄ valueIfFalse} |
C (C99) a:
| pokud (stav) instrukce
| pokud (stav) instrukce
| přepínač (proměnná) { | stav ? valueIfTrue : valueIfFalse |
C# | pokud (stav) instrukce
| pokud (stav) instrukce
| Všechny neprázdné případy musí končit a přestávka nebo běžný případ prohlášení (to znamená, že se nesmí dostat do dalšího případu).The | stav ? valueIfTrue : valueIfFalse
|
Windows PowerShell | pokud (stav) instrukce | pokud (stav) { instrukce } | přepínač (proměnná) { případ1 { instrukce «přestávka;» } ... «výchozí { instrukce }»} | |
Jít | -li stav {instrukce} | -li stav {instrukce} | přepínač proměnná { | |
Rychlý | -li stav {instrukce} | -li stav {instrukce} | přepínač proměnná { | |
Perl | pokud (stav) {instrukce} | pokud (stav) {instrukce} | použít funkci „switch“; | stav ? valueIfTrue : valueIfFalse |
Raku | -li stav {instrukce} | -li stav {instrukce} | daný proměnná { | stav ?? valueIfTrue !! valueIfFalse |
Rubín | -li stav | -li stav | případ proměnná | stav ? valueIfTrue : valueIfFalse |
Scala | pokud (stav) {instrukce} | pokud (stav) {instrukce} | výraz zápas { | pokud (stav) valueIfTrue jiný valueIfFalse |
Pokec | stav ifTrue: | stav ifTrue: trueBlock ifFalse: falseBlock | ||
Společný Lisp | (když stav | (kond (podmínka1 pokyny) | (případ výraz | (li test pak jinde) (podmínka (test1 hodnota1) (test2 hodnota2) ...)) |
Systém | (když pokyny k podmínkám) nebo | (kond (podmínka1 pokyny) (podmínka2 pokyny) ...«(jiný instrukce)») | (případ (proměnná) ((případ1) instrukce) ((případ2) instrukce) ...«(jiný instrukce)») | (li podmínka valueIfTrue valueIfFalse) |
ISLISP | (li stav | (kond (podmínka1 pokyny) | (případ výraz | (li podmínka valueIfTrue valueIfFalse) |
Pascal | -li stav pak začít | -li stav pak začít | případ proměnná z | |
Visual Basic | Li stav Pak
Pokud to necháme
| Li stav Pak
Viz poznámka o jazycích podobných C; the | Vybrat« Případ»Proměnná | IIf (stav, valueIfTrue, valueIfFalse) |
Visual Basic .NET | Li(stav, valueIfTrue, valueIfFalse) | |||
Xojo | ||||
Krajta [A] | -li stav : | -li stav : | valueIfTrue -li stav jiný valueIfFalse (Python 2.5+) | |
Slang | pokud (stav) { instrukce } «else { instrukce }» | pokud (stav) { instrukce } else if (stav) { instrukce } ... «else { instrukce }» | přepínač (proměnná) { případ případ1: instrukce } { případ případ2: instrukce } ... | |
Fortran | IF (stav) PAK | IF (stav) PAK | VYBERTE PŘÍPAD (proměnná) | |
Forth | stav LI instrukce « JINÝ instrukce" PAK | stav LI instrukce JINÝ stav LI instrukce POTOM POTOM | hodnota PŘÍPAD | stav LI valueIfTrue JINÝ valueIfFalse PAK |
OCaml | -li stav pak začít instrukce konec «jinak začít instrukce konec» | -li stav pak začít instrukce skončit jinak, pokud stav pak začít instrukce konec ... «jinak začít instrukce konec» | zápas hodnota s | -li stav pak valueIfTrue jiný valueIfFalse |
F# | Lehký režim syntaxe: Na jednom řádku nebo s odsazením, jak je uvedeno níže:
Stejné jako standardní ML (níže). | Lehký režim syntaxe: Na jednom řádku nebo s odsazením, jak je uvedeno níže:
Stejné jako standardní ML (níže). | ||
Standardní ML | -li stav pak «(»Pokyny«)» | -li stav pak «(»Pokyny«)» | případ hodnota z | |
Haskell (GHC) | -li stav pak výraz jiný výraz nebo když stav (dělat instrukce) nebo ledaže podmínka (dělat instrukce) | výsledek | stav = výraz | případ hodnota z { | |
Bash shell |
|
|
| |
CoffeeScript | -li stav pak výraz «jiný výraz" | -li stav pak výraz jinak pokud stav pak výraz «jiný výraz" | přepínač výraz | Všechny podmínky jsou výrazy |
-li stav | -li stav | |||
výraz -li stav | ledaže stav | přepínač výraz | ||
ledaže stav | ||||
výraz ledaže stav | ||||
COBOL | LI stav «PAK» [d] | HODNOCENÍ výraz «TAKY výraz..." | ||
-li | jinak pokud | vyberte případ | podmíněný výraz |
^ a Na stejný řádek za dvojtečkou lze napsat jednu instrukci. Více pokynů je seskupeno do a blok který začíná na novém řádku (Je požadováno odsazení). Syntaxe podmíněného výrazu toto pravidlo nedodržuje.
^ b Tohle je porovnávání vzorů a je podobný vybranému případu, ale ne stejný. Obvykle se používá k dekonstrukci algebraické datové typy.
^ c V jazycích rodiny Pascalů není středník součástí prohlášení. Je to oddělovač mezi příkazy, nikoli terminátor.
^ d END-IF
lze použít místo období na konci.
Smyčkové příkazy
zatímco | dělat, zatímco | pro i = první až poslední | pro každého | |
---|---|---|---|---|
Ada[1] | zatímco stav smyčka | smyčka | pro index v «zvrátit" [za prvé .. poslední | diskrétní_typ] smyčka | pro položka z «zvrátit»Iterátor smyčka |
ALGOL 68 | «pro index »«z za prvé" "podle přírůstek »«na poslední »«zatímco stav" dělat prohlášení od | pro klíč «na upb seznam» dělat «typename val=seznam[klíč]; » prohlášení od | ||
«zatímco stav" dělat prohlášení od | «zatímco prohlášení; stav" dělat prohlášení od | «pro index »«z za prvé" "podle přírůstek »«na poslední" dělat prohlášení od | ||
APL | :Zatímco stav | :Opakovat | :Pro var «s» :V seznam | :Pro var «s» :V každém seznam |
C (C99) | instrukce může to být jediný příkaz nebo blok ve formě: { prohlášení }
| dělat instrukce zatímco (stav); | pro («Typ» i = za prvé; i <= poslední; i++) instrukce | N / A |
Cíl-C | pro (zadejte položku v soubor) instrukce | |||
C ++ (STL) | «std ::»pro každého(Start, konec, funkce) (C ++ 11 ) | |||
C# | pro každého (zadejte položku v soubor) instrukce | |||
Jáva | pro (zadejte položku : soubor) instrukce | |||
JavaScript | pro (var i = za prvé; i <= poslední; i++) instrukce | pro (var položka z soubor) instrukce (od té doby EcmaScript 2015[11]) | ||
PHP | foreach (rozsah (za prvé, poslední) jako $ i) pokyny nebo | pro každého (soubor tak jako položka) instrukce | ||
Windows PowerShell | pro ($ i = za prvé; $ i -le poslední; $ i ++) instrukce | pro každého (položka v soubor) pokyny pomocí položky | ||
D | pro každého (i; za prvé ... poslední) pokyny | pro každého Pokyny (položka „typ“; sada) | ||
Jít | pro stav { instrukce } | pro i := za prvé; i <= poslední; i++ { instrukce } | pro klíč, položka : = rozsah soubor { instrukce } | |
Rychlý | zatímco stav { instrukce } | opakovat { instrukce } zatímco stav (2.x)dělat { instrukce } zatímco stav (1.x) | pro i = za prvé ... poslední { instrukce } nebo pro i = za prvé ..< poslední + 1 { instrukce } nebo pro var i = za prvé; i <= poslední; i++ { instrukce } | pro položka v soubor { instrukce } |
Perl | zatímco (stav) { instrukce } nebo | dělat { instrukce } zatímco (stav) nebo | pro«každý»«$ i» (za prvé .. poslední) { instrukce } nebo | pro«každý»« $ Položka » (soubor) { instrukce } |
Raku | zatímco stav { instrukce } nebo | opakovat { instrukce } zatímco stav nebo | pro za prvé..poslední -> $ i { instrukce } nebo | pro soubor"-> $ položka » { instrukce } |
Rubín | zatímco stav | začít | pro i dovnitř za prvé..poslední nebo pro i dovnitř za prvé...poslední + 1 | pro položka v soubor |
Bash shell | zatímco stav;dělat | N / A | pro ((i = za prvé; i <= poslední; ++i)); dělat | pro položka v sada;dělat |
Scala | zatímco (stav) { instrukce } | dělat { instrukce } zatímco (stav) | pro (i <- za prvé na poslední «o 1») { instrukce } | pro (položka <- soubor) { instrukce } |
Pokec | conditionBlock whileTrue: | loopBlock dělat, zatímco: | za prvé na: poslední dělat: | sbírka dělat: |
Společný Lisp | (smyčka | (smyčka | (smyčka | (smyčka |
Systém | (do () (podmínka) instrukce) nebo | (nechat smyčku () (instrukce (li stav (smyčka)))) | (dělat ((i za prvé (+ i 1))) ((> = i poslední)) instrukce) nebo | (pro každého (lambda (položka) instrukce) seznam) |
ISLISP | (zatímco stavinstrukce) | (smyčka tagbody instrukce (li stav (go loop)) | (Protože já za prvé (+ i 1))) ((> = i poslední)) instrukce) | (mapc (lambda (položka) instrukce) seznam) |
Pascal | zatímco stav začít | opakovat | pro i := za prvé "krok 1» na poslední začít | pro položka v soubor dělat ... |
Visual Basic | Dělat, zatímco stav nebo
| Dělat | i musí být předem deklarováno.Pro i = za prvé Na poslední"Krok 1»
Příště já | Pro každého položka v soubor |
Visual Basic .NET | Protože já« Tak jako typ" = za prvé Na poslední"Krok 1» | Pro každého položka"Tak jako typ" v soubor | ||
Xojo | Zatímco stav | Dělat do podmínka | ||
Krajta | zatímco stav : | N / A | pro i v dosahu (za prvé, poslední + 1): (Python 3.x)
| pro položka v soubor: |
Slang | zatímco (stav) { instrukce } «pak volitelný blok » | dělat { instrukce } zatímco (stav) «pak volitelný blok » | pro (i = za prvé; i <= poslední; i ++) { instrukce } «pak volitelný blok » | pro každého položka(soubor) «použitím (co)» { instrukce } «pak volitelný blok » |
Fortran | DĚLAT, ZATÍMCO (stav) | DĚLAT | DĚLAT Já = za prvé,poslední | N / A |
Forth | ZAČÍT Podmínka «pokyny» ZATÍMCO instrukce OPAKOVAT | ZAČÍT podmínka instrukce DOKUD | limit start DĚLAT instrukce SMYČKA | N / A |
OCaml | zatímco stav dělat instrukce Hotovo | N / A | pro i = za prvé na poslední dělat instrukce Hotovo | Array.iter (zábava položka -> instrukce) pole |
F# | zatímco stav dělat | N / A | pro i = za prvé na poslední dělat | pro položka v soubor dělat |
Standardní ML | zatímco stav dělat ( instrukce ) | N / A | Array.app (fn položka => instrukce) pole | |
Haskell (GHC) | N / A | Control.Monad.forM_ [za prvé..poslední] ( i -> dělat instrukce) | Control.Monad.forM_ seznam ( item -> dělat instrukce) | |
Eiffelova | z | |||
CoffeeScript | zatímco stav | N / A | pro i v [první poslední] | pro položka v soubor |
výraz zatímco stav | ||||
zatímco stav pak výraz | ||||
dokud stav | ||||
výraz dokud stav | pro i v [první poslední] pak výraz | pro položka v soubor pak výraz | ||
dokud stav pak výraz | výraz pro i v [první poslední] | výraz pro položka v soubor | ||
COBOL | PROVÉST postup-1 «PŘES postup-2 »« «S» TEST PŘED» DOKUD stav[C] | PROVÉST postup-1 «PŘES postup-2 »«S» ZKOUŠKA PO DOBĚ stav[C] | PROVÉST postup-1 «PŘES postup-2 » RŮZNÉ i Z za prvé PODLE přírůstek DOKUD i > poslední[d] | N / A |
PROVÉST ««S» TEST PŘED» DOKUD stav | PROVÉST «S» ZKOUŠKA PO DOBĚ stav | VYMĚNIT VÝKON i Z za prvé PODLE přírůstek DOKUD i > poslední |
^ a "krok
n "se používá ke změně intervalu smyčky. Pokud"krok
"je vynechán, pak je interval smyčky 1.
^ b Tím se implementuje univerzální kvantifikátor („pro všechny“ nebo „∀“) a také existenční kvantifikátor („existuje“ nebo „∃“).
^ c THRU
lze použít místo PŘES
.
^ d «JE» VĚTŠÍ «NEŽ»
lze použít místo >
.
Výjimky
házet | psovod | tvrzení | |
---|---|---|---|
Ada[1] | vyzdvihnout název_výjimky «s řetězec_výraz » | začít | pragma Assert («Zkontrolovat =>»Boolean_expression« «Zpráva =>»Řetězec_výraz») |
APL | «Řetězec_výraz» ⎕SIGNÁL number_expression | :Past číslo «s» _výraz | «Řetězec_výraz» ⎕SIGNÁL 98 / ⍨ ~stav |
C (C99) | longjmp (Stát, výjimka); | přepínač (setjmp (Stát)) {případ 0: instrukce přestávka; případ výjimka: instrukce ... } | tvrdit (stav); |
C ++ | házet výjimka; | Snaž se { instrukce } chytit «(výjimka)» { instrukce } ... | |
C# | Snaž se { instrukce } chytit «(výjimka «jméno»)» { instrukce } ... «Konečně { instrukce }» | System.Diagnostics.Debug.Assert (stav); nebo
| |
Jáva | Snaž se { instrukce } chytit (výjimka) { instrukce } ... «Konečně { instrukce }» | tvrdit stav «: popis»; | |
JavaScript | Snaž se { instrukce } chytit (výjimka) { instrukce } «Konečně { instrukce }» | ? | |
D | Snaž se { instrukce } chytit (výjimka) { instrukce } ... «Konečně { instrukce }» | tvrdit (stav); | |
PHP | Snaž se { instrukce } chytit (výjimka) { instrukce } ... «Konečně { instrukce }» | tvrdit (stav); | |
Slang | Snaž se { instrukce } chytit "výjimka" { instrukce } ... «Konečně { instrukce }» | ? | |
Windows PowerShell | past «[výjimka]» { instrukce } ... pokyny nebo Snaž se { instrukce } chytit «[výjimka]» { instrukce } ... «Konečně { instrukce }» | [Debug] :: Assert (stav) | |
Cíl-C | @házet výjimka; | @Snaž se { instrukce } @chytit (výjimka) { instrukce } ... «@Konečně { instrukce }» | NSAssert (stav, popis); |
Rychlý | házet výjimka (2.x) | udělej to výraz ... instrukce } chytit výjimka { instrukce } ... (2.x) | tvrdit (stav«, popis») |
Perl | zemřít výjimka; | eval { instrukce }; pokud ($ @) { instrukce } | ? |
Raku | Snaž se { instrukce CATCH {kdy výjimka { instrukce } ...}} | ? | |
Rubín | vyzdvihnout výjimka | začít | |
Pokec | výjimka vyzdvihnout | instrukční blok na: výjimka dělat: handlerBlock | tvrdit: conditionBlock |
Společný Lisp | (chyba "výjimka") nebo | (psovod případ | (tvrdit stav) nebo |
Schéma (R.6RS) | (vyzdvihnout výjimka) | (stráž (con (stavinstrukce) ...) instrukce) | ? |
ISLISP | (chyba "error-string" objekty) nebo | (s obsluhou | ? |
Pascal | vyzdvihnout Výjimka.Create () | Snaž se Až na na E: výjimka začít instrukce konec; konec; | ? |
Visual Basic | Err CHYBOVÉ ČÍSLO | S novým Snaž se: Při chybě Pokračovat dále '*** Vyzkoušejte třídu ***Soukromé mstr Popis Tak jako TětivaSoukromé mlngNumber Tak jako DlouhoVeřejnost Sub Chytit()mstr Popis = Chybovat.PopismlngNumber = Chybovat.ČísloKonec SubVeřejnost Vlastnictví Dostat Číslo() Tak jako DlouhoČíslo = mlngNumberKonec VlastnictvíVeřejnost Vlastnictví Dostat Popis() Tak jako TětivaPopis = mstr PopisKonec Vlastnictví | Debug.Assert stav |
Visual Basic .NET | Házet výjimka nebo
| Snaž se | System.Diagnostics. Debug.Assert (stav) nebo
|
Xojo | Vyzdvihnout výjimka | Snaž se | N / A |
Krajta | vyzdvihnout výjimka | Snaž se: | tvrdit stav |
Fortran | N / A | ||
Forth | kód HÁZET | xt CHYTIT (kód nebo 0) | N / A |
OCaml | vyzdvihnout výjimka | Snaž se výraz s vzor -> výraz ... | tvrdit stav |
F# | Snaž se výraz s vzor -> výraz ... | ||
Standardní ML | vyzdvihnout výjimka «arg» | výraz Rukojeť vzor => výraz ... | |
Haskell (GHC) | házet výjimka | chytit tryExpression catchExpression | tvrdit podmínkový výraz |
COBOL | VYZDVIHNOUT «VÝJIMKA»Výjimka | POUŽITÍ «PO» VÝJIMKOVÝ PŘEDMĚT jméno třídy. nebo | N / A |
^ a Společný Lisp umožňuje with-simple-restart
, případ restartu
a restartovat-svázat
definovat restarty pro použití s vyvolat-restartovat
. Neošetřené podmínky mohou způsobit, že implementace před odvíjením zásobníku uživateli zobrazí nabídku restartů.
^ b Nezachycené výjimky se šíří do nejvnitřnějšího dynamicky obklopujícího provedení. Výjimky se nešíří mezi úkoly (pokud nejsou tyto úkoly aktuálně synchronizovány na schůzce).
Další výkazy řízení toku
výstupní blok (přestávka) | pokračovat | označení | větev (jít do ) | návratová hodnota z generátoru | |
---|---|---|---|---|---|
Ada[1] | výstup «Loop_name» «když stav" | N / A | označení: | jít do označení | N / A |
ALGOL 68 | hodnota výstup; ... | dělat prohlášení; přeskočit výjezd; štítek: prohlášení od | označení: ... | jít do označení; ... | výtěžek(hodnota) |
APL | :Odejít | :Pokračovat | označení: | →označení | N / A |
C (C99) | přestávka; | pokračovat; | označení: | jít do označení; | N / A |
Cíl-C | |||||
C ++ (STL) | |||||
D | |||||
C# | výnos výnos hodnota; | ||||
Jáva | přestávka "označení"; | pokračovat "označení"; | N / A | ||
JavaScript | výtěžek hodnota";" | ||||
PHP | přestávka «Úrovně»; | pokračovat «Úrovně»; | jít do označení; | výtěžek «Klíč =>» hodnota; | |
Perl | poslední "označení"; | další "označení"; | |||
Raku | |||||
Jít | přestávka "označení" | pokračovat "označení" | jít do označení | ||
Rychlý | přestávka "označení" | pokračovat "označení" | N / A | ||
Bash shell | přestávka «Úrovně» | pokračovat «Úrovně» | N / A | N / A | N / A |
Společný Lisp | (vrátit se) nebo | (tagbody štítek | (jít štítek) | ||
Systém | |||||
ISLISP | (návrat z blok) | (tagbody štítek | (jít štítek) | ||
Pascal (ISO) | N / A | označení: [A] | jít do označení; | N / A | |
Pascal (FPC) | přestávka; | pokračovat; | |||
Visual Basic | Výstup blok Alternativně pro metody
| N / A | označení: | Jít do označení | |
Xojo | Pokračovat blok | ||||
Visual Basic .NET | Výtěžek hodnota | ||||
Krajta | přestávka | pokračovat | N / A | výtěžek hodnota | |
RPG IV | ODEJÍT; | ITER; | |||
Slang | přestávka; | pokračovat; | |||
Fortran | VÝSTUP | CYKLUS | označení [b] | JÍT DO označení | N / A |
Rubín | přestávka | další | |||
Windows PowerShell | přestávka "označení" | pokračovat | |||
OCaml | N / A | ||||
F# | |||||
Standardní ML | |||||
Haskell (GHC) | |||||
COBOL | KONEC VÝKONU nebo VÝSTUPNÍ ODSTAVEC nebo VÝSTUPNÍ SEKCE nebo VÝSTUP. | UKONČTE VÝKONNÝ CYKLUS | štítek «SEKCE». | JÍT DO označení | N / A |
Ya | přestávka "odkud"; např.
| pokračovat "kam"; např.
| :označení | jít do :označení; | N / A |
^ a Pascal má deklarační bloky. Vidět Porovnání programovacích jazyků (základní pokyny) #Functions.
^ b štítek musí být číslo mezi 1 a 99999.
Funkce
Vidět odraz pro volání a deklaraci funkcí pomocí řetězců.
volání funkce | základní / neplatná funkce | funkce návratu hodnoty | Požadované hlavní funkce | |
---|---|---|---|---|
Ada[1] | foo «(Parametry)» | postup foo «(Parametry)» je začátek prohlášení konec foo | funkce foo «(Parametry)» vrátit se typ je začátek prohlášení konec foo | N / A |
ALGOL 68 | foo«(Parametry)»; | proc foo = «(Parametry)» prázdnota: ( instrukce ); | proc foo = «(Parametry)» rettype: ( pokyny ...; retalue ); | N / A |
APL | «Parametry» foo parametry | foo←{ prohlášení } | foo←{ prohlášení } | N / A |
C (C99) | foo («Parametry») | prázdnota foo («Parametry») { instrukce } | typ foo («Parametry») { pokyny ... vrátit se hodnota; } | «Globální prohlášení» |
Cíl-C | ||||
C ++ (STL) | ||||
Jáva | public static void main (String [] args) { instrukce } nebo | |||
D | int hlavní («char [] [] args») { instrukce} nebo | |||
C# | Stejné jako výše; alternativně, pokud pouze jedno prohlášení:
| Stejné jako výše; alternativně, pokud je to dost jednoduché na to, aby to byl výraz:
| static void Main («řetězec [] args») method_body Může se místo toho vrátit (počínaje C # 7.1 :) Může se vrátit | |
JavaScript | funkce foo («Parametry») { instrukce } nebo | funkce foo («Parametry») { pokyny ... vrátit se hodnota; } | N / A | |
Jít | func foo («Parametry») { instrukce } | func foo («Parametry») typ { pokyny ... vrátit se hodnota } | func main () { instrukce } | |
Rychlý | func foo («Parametry») { instrukce } | func foo («Parametry») -> typ { pokyny ... vrátit se hodnota } | N / A | |
Společný Lisp | (foo «Parametry») | (defun foo («Parametry») | (defun foo («Parametry») | N / A |
Systém | (definovat (foo parametry) instrukce) nebo | (definovat (foo parametry) pokyny ... návratová_hodnota) nebo | ||
ISLISP | (defun foo («Parametry») | (defun foo («Parametry») | ||
Pascal | foo«(parametry)» | postup foo«(parametry)»; «vpřed;»[A] | funkce foo«(parametry)»: typ; «vpřed;»[A] | program název; |
Visual Basic | Foo («Parametry») | Sub Foo«(parametry)» | Funkce Foo«(parametry)»« Tak jako typ" | Sub Main () |
Visual Basic .NET | Stejné jako výše; alternativně:Funkce Foo«(parametry)»« Tak jako typ"
Ukončit funkci The Pokud ovládací prvek ukončí funkci bez výslovně zadané návratové hodnoty, vrátí funkce výchozí hodnotu pro návratový typ. | Sub Main (««ByVal »args () Jako řetězec») neboFunkce Hlavní (««ByVal »args () Jako řetězec») Jako celé číslo
Ukončit funkci | ||
Xojo | ||||
Krajta | foo («Parametry») | def foo («Parametry»): | def foo («Parametry»): | N / A |
Slang | foo («Parametry» «; kvalifikace») | definovat foo («Parametry») { instrukce } | definovat foo («Parametry») { pokyny ... vrátit se hodnota; } | public define slsh_main () { instrukce } |
Fortran | foo («Argumenty») | SUBROUTINE sub_foo («Argumenty») | typ FUNKCE foo («Argumenty») | PROGRAM hlavní |
Forth | «Parametry» FOO | : FOO « komentář k zásobníku: ( před -- ) » | : FOO « komentář k zásobníku: ( před -- po ) » | N / A |
PHP | foo («Parametry») | funkce foo («Parametry») { instrukce } | funkce foo («Parametry») { instrukce ... vrátit se hodnota; } | N / A |
Perl | foo («Parametry») nebo | sub foo { «můj (parametry) = @_;»instrukce } | sub foo { «můj (parametry) = @_;»instrukce... «vrátit se»hodnota; } | |
Raku | foo («Parametry») nebo | «multi »sub foo (parametry) { instrukce } | «náš «Typ» »«multi »sub foo (parametry) { instrukce... «vrátit se»hodnota; } | |
Rubín | foo«(parametry)» | def foo«(parametry)» | def foo«(parametry)» | |
Rez | foo («Parametry») | fn foo («Parametry») { instrukce } | fn foo («Parametry») -> typ { instrukce } | fn main () { instrukce } |
Scala | foo«(parametry)» | def foo«(parametry)»«: Jednotka =» { instrukce } | def foo«(parametry)»«: typ" = { pokyny ... «vrátit se»Hodnota } | def main (args: Array [String]) { instrukce } |
Windows PowerShell | foo «Parametry» | funkce foo { instrukce }; | funkce foo «(parametry)» { instrukce … vrátit se hodnota }; nebo | N / A |
Bash shell | foo «Parametry» |
|
| |
| ||||
OCaml | foo parametry | nechat «rec» foo parametry = instrukce | nechat «rec» foo parametry = pokyny ... návratová_hodnota | |
F# | [ | |||
Standardní ML | zábava foo parametry = ( instrukce ) | zábava foo parametry = ( pokyny ... návratová_hodnota ) | ||
Haskell | foo parametry = dělat | foo parametry = návratová_hodnota | «main :: IO ()» | |
Eiffelova | foo («Parametry») | foo («Parametry») | foo («Parametry»): typ | [b] |
CoffeeScript | foo () | foo = -> | foo = -> hodnota | N / A |
foo parametry | foo = () -> | foo = ( parametry ) -> hodnota | ||
COBOL | VOLÁNÍ "foo" «POUŽITÍM parametry » [d] | «IDENTIFIKAČNÍ DIVIZE.» | «IDENTIFIKAČNÍ DIVIZE.» | N / A |
«FUNKCE»Foo« («parametry») » | N / A |
^ a Pascal vyžaduje „vpřed;
" pro předat prohlášení.
^ b Eiffel umožňuje specifikaci kořenové třídy a funkce aplikace.
^ c Ve Fortranu se parametry funkce / podprogramu nazývají argumenty (od PARAMETR
je klíčové slovo jazyka); the VOLÁNÍ
klíčové slovo je vyžadováno pro podprogramy.
^ d Místo použití "foo"
, místo toho může být použita řetězcová proměnná obsahující stejnou hodnotu.
Zadejte převody
Kde tětiva je podepsané desetinné číslo:
řetězec na celé číslo | řetězec na dlouhé celé číslo | řetězec na plovoucí desetinnou čárku | celé číslo do řetězce | plovoucí desetinná čárka na řetězec | |
---|---|---|---|---|---|
Ada[1] | Integer'Value (řetězec_výraz) | Long_Integer'Value (řetězec_výraz) | Float'Value (řetězec_výraz) | Integer'Image (integer_expression) | Float'Image (float_expression) |
ALGOL 68 s obecnými a poté specifickými formáty | S předchozími prohlášeními a sdružením: tětiva buf: = "12345678.9012e34"; soubor zástupce; spolupracovník (proxy, buf); | ||||
get (proxy, ivar); | get (proxy, livar); | get (proxy, rvar); | put (proxy, ival); | put (proxy, rval); | |
getf (proxy, ($ g $, ivar));nebo getf (proxy, ($ dddd $, ivar)); | getf (proxy, ($ g $, livar));nebo getf (proxy, ($ 8d $, livar)); | getf (proxy, ($ g $, rvar));nebo getf (proxy, ($ 8d.4dE2d $, rvar)); | putf (proxy, ($ g $, ival));nebo putf (proxy, ($ 4d $, ival)); | putf (proxy, ($ g (šířka, místa, exp) $, rval));nebo putf (proxy, ($ 8d.4dE2d $, rval)); | |
APL | ⍎řetězec_výraz | ⍎řetězec_výraz | ⍎řetězec_výraz | ⍕integer_expression | ⍕float_expression |
C (C99) | celé číslo = atoi (tětiva); | dlouho = atol (tětiva); | plovák = atof (tětiva); | sprintf (tětiva, "% i", celé číslo); | sprintf (tětiva, "% f", plovák); |
Cíl-C | celé číslo = [tětiva intValue]; | dlouho = [tětiva longLongValue]; | plovák = [tětiva doubleValue]; | tětiva = [NSString stringWithFormat | tětiva = [NSString stringWithFormat |
C ++ (STL) | «std ::»istringstream (tětiva) >> číslo; | «std ::»ostringstream Ó; Ó << číslo; tětiva = Ó.str (); | |||
C ++ 11 | celé číslo = «std ::»Stoi (tětiva); | dlouho = «std ::»Stol (tětiva); | plovák = «std ::»Stof (tětiva); dvojnásobek = «std ::»Stod (tětiva); | tětiva = «std ::»To_string (číslo); | |
C# | celé číslo = int. parse | dlouho = dlouhá | plovák = float.parse dvojnásobek = zdvojnásobit | tětiva = číslo | |
D | celé číslo = std.conv.to! int | dlouho = std.conv.to! long | plovák = std.conv.to! float dvojnásobek = std.conv.to! double | tětiva = std.conv.to! řetězec | |
Jáva | celé číslo = Integer.parseInt | dlouho = Long.parseLong | plovák = Float.parseFloat | tětiva = Integer.toString tětiva = String.valueOf | tětiva = Float.toString tětiva = Double.toString |
JavaScript[A] | celé číslo = parseInt (tětiva); | plovák = parseFloat (tětiva); plovák = nové číslo (tětiva);
| tětiva = číslo.toString (); | ||
Jít | celé číslo, chyba = strconv.Atoi (tětiva) | dlouho, chyba = strconv.ParseInt | plovák, chyba = strconv.ParseFloat | tětiva = strconv.Itoa (celé číslo) tětiva = strconv.FormatInt
| tětiva = strconv.FormatFloat tětiva = fmt. tisk |
Rez[d] | tětiva.parse :: i32 :: from_str (tětiva) | tětiva.parse :: i64 :: from_str (tětiva) | tětiva.parse :: f64 :: from_str (tětiva) | celé číslo.to_string () | plovák.to_string () |
Společný Lisp | (setf celé číslo (analyzovat celé číslo tětiva)) | (setf plovák (čtení z řetězce tětiva)) | (setf tětiva (tisk-na-řetězec číslo)) | ||
Systém | (definovat číslo (řetězec-> číslo tětiva)) | (definovat tětiva (číslo-> řetězec číslo)) | |||
ISLISP | (setf celé číslo (konvertovat tětiva | (setf plovák (konvertovat tětiva | (setf tětiva (konvertovat číslo <řetězec>)) | ||
Pascal | celé číslo : = StrToInt (tětiva); | plovák : = StrToFloat (tětiva); | tětiva : = IntToStr (celé číslo); | tětiva : = FloatToStr (plovák); | |
Visual Basic | celé číslo = CInt (tětiva) | dlouho = CLng (tětiva) | plovák = CSng (tětiva) | tětiva = CStr (číslo) | |
Visual Basic .NET (lze použít obě syntaxe VB výše a metody .NET zobrazené vpravo) | celé číslo = Celé číslo | dlouho = Long.parse | plovák = Single.parse dvojnásobek = Double.Parse | tětiva = číslo | |
Xojo | celé číslo = Val (tětiva) | dlouho = Val (tětiva) | dvojnásobek = Val (tětiva) dvojnásobek = CDbl (tětiva) | tětiva = CStr (číslo) nebo tětiva = Str (číslo) | |
Krajta | celé číslo = int (tětiva) | dlouho = dlouhý (tětiva) | plovák = float (tětiva) | tětiva = str (číslo) | |
Slang | celé číslo = atoi (tětiva); | dlouho = atol (tětiva); | plovák = atof (tětiva); | tětiva = řetězec (číslo); | |
Fortran | ČÍST(tětiva,formát) číslo | PSÁT SI(tětiva,formát) číslo | |||
PHP | celé číslo = intval (tětiva); nebo celé číslo = (int)tětiva; | plovák = floatval (tětiva); plovák = (float)tětiva; | tětiva = "$ číslo"; nebo tětiva = strval (číslo); nebo
| ||
Perl[b] | číslo = 0 + tětiva; | tětiva = "číslo"; | |||
Raku | číslo = +tětiva; | tětiva = ~číslo; | |||
Rubín | celé číslo = tětiva.to_i nebo celé číslo = Celé číslo (tětiva) | plovák = tětiva.to_f plovák = Float (tětiva) | tětiva = číslo.to_s | ||
Scala | celé číslo = tětiva.toInt | dlouho = tětiva.dlouho | plovák = tětiva.toFloat dvojnásobek = tětiva.doDouble | tětiva = číslo.toString | |
Pokec | integer: = Integer readFrom: tětiva | float: = Float readFrom: tětiva | řetězec: = číslo jako řetězec | ||
Windows PowerShell | celé číslo = [int]tětiva | dlouho = [dlouhý]tětiva | plovák = [float]tětiva | tětiva = [řetězec]číslo; nebo | |
OCaml | nechat celé číslo = int_ | nechat plovák = float_ | nechat tětiva = řetězec_ | nechat tětiva = řetězec_ | |
F# | nechat celé číslo = int tětiva | nechat celé číslo = int64 tětiva | nechat plovák = float tětiva | nechat tětiva = řetězec číslo | |
Standardní ML | val celé číslo = Int | val plovák = Skutečné | val tětiva = Int | val tětiva = Skutečné | |
Haskell (GHC) | číslo = číst tětiva | tětiva = ukázat číslo | |||
COBOL | HÝBAT SE «FUNKCE» NUMVAL (tětiva)[C] NA číslo | HÝBAT SE číslo NA číselné úpravy |
^ a JavaScript používá pouze čísla s plovoucí desetinnou čárkou, takže existují určité technické aspekty.[7]
^ b Perl nemá samostatné typy. Řetězce a čísla jsou zaměnitelné.
^ c NUMVAL-C
nebo NUMVAL-F
lze použít místo NUMVAL
.
^ str :: parse
je k dispozici pro převod jakéhokoli typu, který má implementaci std :: str :: FromStr
vlastnost. Oba str :: parse
a FromStr :: from_str
vrátit a Výsledek
který obsahuje zadaný typ, pokud nedojde k chybě. The turbofish (::<_>
) zapnuto str :: parse
lze vynechat, pokud lze typ odvodit z kontextu.
Standardní stream I / O
číst z | napsat | ||
---|---|---|---|
stdin | stdout | stderr | |
Ada[1] | Dostat (X) | Dát (X) | Put (Standard_Error, X) |
ALGOL 68 | readf (($ formát $, X)); nebo | printf (($ formát $, X)); nebo | putf (chyba stojanu, ($ formát $, X));[A] |
APL | x ←⎕ | ⎕←X | ⍞←X |
C (C99) | scanf (formát, &X); nebo | printf ( formát, X); nebo | fprintf (stderr, formát, X );[d] |
Cíl-C | data = [[NSFileHandle fileHandleWithStandardInput] readDataToEndOfFile]; | [[NSFileHandle fileHandleWithStandardOutput] writeData:data]; | [[NSFileHandle fileHandleWithStandardError] writeData:data]; |
C ++ | «std ::»cin >> X; nebo | «std ::»cout << X; | «std ::»cerr << X; nebo |
C# | X = Console.Read (); nebo X = Console.ReadLine (); | Console.Write ("formát, "X); nebo | Chyba konzoly |
D | x = std.stdio.readln () | std.stdio.write (X) nebo | stderr.write (X) nebo |
Jáva | X = System.in.read (); nebo | System.out.print (X); nebo | System.err.print (X); nebo |
Jít | fmt.Scan (&X) nebo | fmt.Println (X) nebo | fmt.Fprintln (os.Stderr, X) nebo |
Rychlý | x = readLine () (2.x) | tisk(X) (2.x)println (X) (1.x) | |
JavaScript Implementace webového prohlížeče | document.write (X) | ||
JavaScript Stránky aktivního serveru | Response.Write (X) | ||
JavaScript Hostitel skriptů Windows | X = WScript.StdIn.Read (znaky) nebo | WScript.Echo (X) nebo | WScript.StdErr.Write (X) nebo |
Společný Lisp | (setf X (řádek pro čtení)) | (princ X) nebo | (princ X * chybový výstup *) nebo |
Schéma (R.6RS) | (definovat X (řádek pro čtení)) | (Zobrazit X) nebo | (Zobrazit X (aktuální-chybový-port)) nebo |
ISLISP | (setf X (řádek pro čtení)) | (formát (standardní výstup) formát x) | (formát (chybový výstup) formát x) |
Pascal | číst(X); nebo | psát si(X); nebo | napsat (stderr, X); nebo |
Visual Basic | Vstup" výzva,»X | Tisk x nebo | N / A |
Visual Basic .NET | X = Console.Read () nebo | Console.Write ("formát, "X) nebo | Chyba konzoly |
Xojo | X = StandardInputStream.Read () nebo | StandardOutputStream.Write (X) nebo | StdErr.Write (X) nebo |
Python 2.x. | X = raw_input ("výzva") | tisk x nebo | tisk >> sys.stderr, x nebo |
Python 3.x. | X = vstup ("výzva") | tisk(X", end = ""») | tisk(X", end = ""», file = sys.stderr) |
Slang | fgets (&X, stdin) | fputs (X, standardní výstup) | fputs (X, stderr) |
Fortran | ČÍST(*,formát) názvy proměnných nebo | PSÁT SI(*,formát) výrazy nebo | WRITE (ERROR_UNIT,formát) výrazy[E] |
Forth | délka vyrovnávací paměti AKCEPTOVAT (přečteno # znaků) | délka vyrovnávací paměti TYP | N / A |
PHP | $ x = fgets (STDIN); nebo | tisk X; nebo | fprintf (STDERR, formát, X); |
Perl | $ x = <>; nebo | tisk X; nebo | tisknout STDERR X; nebo |
Raku | $ x = $ * IN.get; | X.tisk nebo | X.Poznámka nebo |
Rubín | X = dostane | uvádí x nebo | $ stderr.puts (X) nebo |
Windows PowerShell | $ x = Hostitel čtení«« -Výzva" text"; nebo | X; nebo | Chyba zápisu X |
OCaml | nechat X = read_int () nebo | print_int x nebo | prerr_int x nebo |
F# | nechat X = System.Console | printf formát x ... nebo | eprintf formát x ... nebo |
Standardní ML | val str = TextIO.inputLIne TextIO.stdIn | tisk str | TextIO.output (TextIO.stdErr, str) |
Haskell (GHC) | X <- readLn nebo | tisk x nebo | hPrint stderr x nebo |
COBOL | AKCEPTOVAT X | ZOBRAZIT X |
^ a ALGOL 68 navíc jako „neformátovaný“ transput rutiny: číst, psát si, dostat
a dát
.
^ b dostane (X)
a fgets (X, délka, stdin)
číst neformátovaný text ze stdin. Použití get se nedoporučuje.
^ c uvádí (X)
a fputs (x, standardní výstup)
zapsat neformátovaný text do standardního výstupu.
^ d fputs (x, stderr)
zapíše neformátovaný text do stderr
^ e INPUT_UNIT, OUTPUT_UNIT, ERROR_UNIT
jsou definovány v ISO_FORTRAN_ENV
modul.[14]
Čtení argumenty příkazového řádku
Hodnoty argumentů | Argument se počítá | Název programu / název skriptu | |
---|---|---|---|
Ada[1] | Argument (n) | Argument_Count | Command_Name |
C (C99) | argv [n] | argc | první argument |
Cíl-C | |||
C ++ | |||
C# | args [n] | délka oblouků | Assembly.GetEntryAssembly () |
Jáva | délka oblouk | ||
D | první argument | ||
JavaScript Hostitel skriptů Windows implementace | WScript.Arguments (n) | WScript.Arguments.length | WScript.ScriptName nebo WScript.ScriptFullName |
Jít | os.Args [n] | len (os.Args) | první argument |
Rez[A] | std :: env :: args (). nth (n) std :: env :: args_os (). nth (n) | std :: env :: args (). count () std :: env :: args_os (). count () | std :: env :: args (). next () std :: env :: args_os (). next () |
Rychlý | Process.arguments [n] nebo Process.unsafeArgv [n] | Process.arguments.count nebo Process.argc | první argument |
Společný Lisp | ? | ? | ? |
Schéma (R.6RS) | (list-ref (příkazový řádek) n) | (délka (příkazový řádek)) | první argument |
ISLISP | N / A | N / A | N / A |
Pascal | ParamStr (n) | ParamCount | první argument |
Visual Basic | Příkaz [b] | N / A | App.Path |
Visual Basic .NET | CmdArgs (n) | CmdArgs.Length | [Assembly] .GetEntryAssembly (). Umístění |
Xojo | System.CommandLine | (analýza řetězce) | Application.ExecutableFile.Name |
Krajta | sys.argv [n] | len (sys.argv) | první argument |
Slang | __argv [n] | __argc | první argument |
Fortran | DĚLAT i = 1,argc | argc = COMMAND_ARGUMENT_COUNT () | VOLEJTE GET_COMMAND_ARGUMENT (0,progname) |
PHP | $ argv [n] | $ argc | první argument |
Bash shell | $n ($1, $2, $3, ...) $@ (všechny argumenty) | $# | $0 |
Perl | $ ARGV [n] | skalární (@ARGV) | $0 |
Raku | @ * ARGS [n] | @ * ARGS.elems | $ PROGRAM_NAME |
Rubín | ARGV [n] | ARGV.size | $0 |
Windows PowerShell | $ args [n] | $ args. Délka | $ MyInvocation.MyCommand |
OCaml | Sys.argv. (n) | Array.length Sys.argv | první argument |
F# | args. [n] | délka oblouků | Assembly.GetEntryAssembly () |
Standardní ML | List.nth (CommandLine | délka (CommandLine | CommandLine.name () |
Haskell (GHC) | dělat { args <- Systém.getArgs; vrátit se délka args !! n } | dělat { args <- Systém.getArgs; vrátit se délka args } | System.getProgName |
COBOL | [C] | N / A |
- ^ a V Rustu
std :: env :: args
astd :: env :: args_os
vrátit iterátory,std :: env :: Args
astd :: env :: ArgsOs
resp.Args
převede každý argument na aTětiva
a panikaří, pokud dosáhne argumentu, na který nelze převést UTF-8.ArgsOs
vrací neztrátovou reprezentaci surových řetězců z operačního systému (std :: ffi :: OsString
), což může být neplatný UTF-8. - ^ b V jazyce Visual Basic nejsou argumenty příkazového řádku odděleny. Jejich oddělení vyžaduje funkci rozdělení
Rozdělit(tětiva)
. - ^ c Standard COBOL neobsahuje žádné prostředky pro přístup k argumentům příkazového řádku, ale běžná rozšíření kompilátoru pro přístup k nim zahrnují definování parametrů pro hlavní program nebo použití
AKCEPTOVAT
prohlášení.
Provádění příkazů
Příkaz prostředí | Proveďte program | Nahraďte aktuální program novým spuštěným programem | |
---|---|---|---|
Ada[1] | Není součástí jazykového standardu. Běžně se provádí pomocí balíčků poskytovaných překladačem nebo propojením s C nebo POSIX.[15] | ||
C | Systém ("příkaz"); | kromě (cesta, args); nebo | |
C ++ | |||
Cíl-C | [NSTask launchTaskWithLaunchPath: (NSString *)cesta argumenty: (NSArray *)argumenty]; | ||
C# | System.Diagnostics | ||
F# | |||
Jít | vykon. běh (cesta, argv, envv, dir, exec.DevNull, exec.DevNull, exec.DevNull) | os.Exec (cesta, argv, envv) | |
Visual Basic | Interaction.Shell (příkaz «, WindowStyle »«, isWaitOnReturn ») | ||
Visual Basic .NET | Microsoft.VisualBasic | System.Diagnostics | |
Xojo | Shell.Execute (příkaz «, Parametry ») | FolderItem.Launch (parametry, aktivovat) | N / A |
D | std.process.system ("příkaz"); | std.process.execv (cesta, arglist); | |
Jáva | Runtime.exec (příkaz); nebo | ||
JavaScript Hostitel skriptů Windows implementace | WScript.CreateObject ("WScript.Shell"). Spustit (příkaz «, WindowStyle »«, isWaitOnReturn »); | WshShell.Exec (příkaz) | |
Společný Lisp | (uiop: run-program příkaz) | ||
Systém | (Systém příkaz) | ||
ISLISP | N / A | N / A | N / A |
Pascal | Systém(příkaz); | ||
OCaml | Příkaz sys příkaz, Unix.open_process_full příkaz env (stdout, stdin, stderr), ... | Unix.create_process prog args new_stdin new_stdout new_stderr, ... | Unix.execv prog args nebo |
Standardní ML | OS.Process.system příkaz | Unix.execute (cesta, args) | Posix.Process.exec (cesta, args) |
Haskell (GHC) | System.system příkaz | System.Process | Proces Posix |
Perl | Systém(příkaz) nebo | exec (cesta, args) | |
Rubín | Systém(příkaz) nebo | exec (cesta, args) | |
PHP | Systém(příkaz) nebo | ||
Krajta | os. system (příkaz) nebo | subprocess.call (["program", "arg1", "arg2", ...]) | os.execv (cesta, args) |
Slang | Systém(příkaz) | ||
Fortran | VOLEJTE EXECUTE_COMMAND_LINE (PŘÍKAZ «, POČKEJTE» «, EXITSTAT» «, CMDSTAT» «, CMDMSG») [A] | ||
Windows PowerShell | [Diagnostics.Process] :: Start (příkaz) | «Vyvolat položku »Program arg1 arg2… | |
Bash shell | výstup=`příkaz` nebo
| program arg1 arg2… |
^ a Fortran 2008 nebo novější.[16]
Reference
- ^ A b C d E F G h i j k l m n Ó str Referenční příručka Ada - jazykové a standardní knihovny; ISO / IEC 8652: 201x (E), "Referenční příručka" (PDF). Archivovány od originál (PDF) dne 2011-04-27. Citováno 2013-07-19.
- ^ „Common Lisp HyperSpec (TM)“. lispworks.com. Citováno 30. ledna 2017.
- ^ "www.islisp.info: Specifikace". islisp.info. Archivovány od originál dne 22. ledna 2016. Citováno 30. ledna 2017.
- ^ A b "selected_int_kind ve Fortran Wiki". fortranwiki.org. Citováno 30. ledna 2017.
- ^ "Erlang - typy a specifikace funkcí". erlang.org. Citováno 30. ledna 2017.
- ^ „Erlang - pokročilý“. erlang.org. Citováno 30. ledna 2017.
- ^ A b 8.5 Typ čísla
- ^ A b „selected_real_kind ve Fortran Wiki“. fortranwiki.org. Citováno 30. ledna 2017.
- ^ „Knihovna GNU C: komplexní čísla“. gnu.org. Citováno 30. ledna 2017.
- ^ „Grammar vb“. Specifikace jazyka Visual Basic. 2016-06-17. Archivováno z původního dne 2019-08-29. Citováno 2019-08-29.
- ^ „pro ... z“. mozilla.org. Citováno 30. ledna 2017.
- ^ „Try-Catch for VB“. google.com. Citováno 30. ledna 2017.
- ^ „Prime rozklad - Rosetta Code“. rosettacode.org. Citováno 30. ledna 2017.
- ^ „iso_fortran_env ve Fortran Wiki“. fortranwiki.org. Citováno 30. ledna 2017.
- ^ „Execute a system command - Rosetta Code“. rosettacode.org. Citováno 30. ledna 2017.
- ^ „EXECUTE_COMMAND_LINE - kompilátor GNU Fortran“. gnu.org. Citováno 30. ledna 2017.