Сравнение языков программирования (основные инструкции)

В этой статье сравнивается большое количество языков программирования путем составления таблиц их типов данных , выражений , операторов и синтаксисов объявлений , а также некоторых распространенных интерфейсов операционных систем.

Условные обозначения этой статьи

Обычно var , var или var — это то, как представляются имена переменных или другие нелитеральные значения, которые должен интерпретировать читатель. Остальное — буквенный код. Гильеметы ( «и ») заключают в себе необязательные разделы. Tab ↹указывает на необходимый (пробел) отступ.

Таблицы по умолчанию не отсортированы в лексикографическом порядке по названию языка программирования, и некоторые языки имеют записи в некоторых таблицах, но не в других.

Идентификаторы типов

8 бит ( байт )16 бит ( короткое целое )32 бит64 бит ( длинное целое )Размер словаПроизвольно точный ( bignum )
ПодписаноНеподписанныйПодписаноНеподписанныйПодписаноНеподписанныйПодписаноНеподписанныйПодписаноНеподписанный
Ада [1]range -2**7 .. 2**7 - 1[дж]range 0 .. 2**8 - 1[дж] или mod 2**8[к]range -2**15 .. 2**15 - 1[дж]range 0 .. 2**16 - 1[дж] или mod 2**16[к]range -2**31 .. 2**31 - 1[дж]range 0 .. 2**32 - 1[дж] или mod 2**32[к]range -2**63 .. 2**63 - 1[дж]mod 2**64[к]Integer[дж]range 0 .. 2**Integer'Size - 1[дж] или [к]mod Integer'Size
АЛГОЛ 68 (переменной ширины)short short int[с]short int[с]int[с]long int[с]int[с]long long int[а] [г]
bytesиbits
C ( C99 фиксированной ширины)int8_tuint8_tint16_tuint16_tint32_tuint32_tint64_tuint64_tintptr_t[с]size_t[с]
C++ ( C++11 фиксированной ширины)
C ( переменная ширина C99 )signed charunsigned charshort[с]unsigned short[с]long[с]unsigned long[с]long long[с]unsigned long long[с]int[с]unsigned int[с]
C++ ( C++11 переменная ширина)
Objective-C ( Cocoa )signed charилиint8_tunsigned charилиuint8_tshortилиint16_tunsigned shortилиuint16_tintилиint32_tunsigned intилиuint32_tlong longилиint64_tunsigned long longилиuint64_tNSIntegerилиlongNSUIntegerилиunsigned long
С#sbytebyteshortushortintuintlongulongIntPtrUIntPtrSystem.Numerics.BigInteger
(.NET 4.0)
Яваbytechar[б]java.math.BigInteger
Идтиint8uint8илиbyteint16uint16int32uint32int64uint64intuintbig.Int
Ржавчинаi8u8i16u16i32u32i64u64isizeusize
БыстрыйInt8UInt8Int16UInt16Int32UInt32Int64UInt64IntUInt
ДbyteubyteshortushortintuintlongulongBigInt
Общий Лисп [2](signed-byte 8)(unsigned-byte 8)(signed-byte 16)(unsigned-byte 16)(signed-byte 32)(unsigned-byte 32)(signed-byte 64)(unsigned-byte 64)bignum
Схема
ИСЛИСП [3]bignum
Паскаль ( FPC )shortintbytesmallintwordlongintlongwordint64qwordintegercardinal
Визуальный базовыйByteIntegerLong
Visual Basic .NETSByteShortUShortIntegerUIntegerLongULongSystem.Numerics.BigInteger
(.NET 4.0)
FreeBasicByteилиInteger<8>UByteилиUInteger<8>ShortилиInteger<16>UShortилиUInteger<16>LongилиInteger<32>ULongилиUInteger<32>LongIntилиInteger<64>ULongIntилиUInteger<64>IntegerUInteger
Питон 2.xintlong
Питон 3.xint
Сленг
ФортранINTEGER(KIND = n)[ф]INTEGER(KIND = n)[ф]INTEGER(KIND = n)[ф]INTEGER(KIND = n)[ф]
PHPint[м]int[м][э]
Перл 5[д][д][д][д][д]Math::BigInt
Ракуint8uint8int16uint16int32uint32int64uint64Int
РубинFixnumBignum
Эрланг [сущ.]integer()integer()[о]
СкалаByteShortChar[л]IntLongscala.math.BigInt
Семя7integerbigInteger
SmalltalkSmallInteger[я]LargeInteger[я]
Windows PowerShell
OCamlint32int64intилиnativeintopen Big_int;;илиbig_int
Фа#sbytebyteint16uint16int32илиintuint32uint64nativeintunativeintbigint
Стандартный МЛWord8.wordInt32.intWord32.wordInt64.intWord64.wordintwordLargeInt.intили
IntInf.int
Хаскелл ( GHC )«import Int»илиInt8«import Word»илиWord8«import Int»илиInt16«import Word»илиWord16«import Int»илиInt32«import Word»илиWord32«import Int»илиInt64«import Word»илиWord64Int«import Word»илиWordInteger
ЭйфелеваINTEGER_8NATURAL_8INTEGER_16NATURAL_16INTEGER_32NATURAL_32INTEGER_64NATURAL_64INTEGERNATURAL
КОБОЛ [ч]BINARY-CHAR «SIGNED»BINARY-CHAR UNSIGNEDBINARY-SHORT «SIGNED»BINARY-SHORT UNSIGNEDBINARY-LONG «SIGNED»BINARY-LONG UNSIGNEDBINARY-DOUBLE «SIGNED»BINARY-DOUBLE UNSIGNED
МатематикаInteger
Язык ВольфрамаInteger
  • ^a Стандартныеконстантыимогут использоваться для определения того, сколькоs иs можно с пользой добавить в качестве префикса ки. Фактические размеры,, идоступны в виде констант, , ит. д.int shortsint lengthsshortlongshort intlong intshort intintlong intshort max intmax intlong max int
  • ^b Обычно используется для символов.
  • ^c Языки ALGOL 68, C и C++ не определяют точную ширину целочисленных типовshort,int,long, и ( C99 , C++11 )long long, поэтому они зависят от реализации. В C и C++short,long, иlong longдолжны быть не менее 16, 32 и 64 бит соответственно, но могут быть и больше.intТип должен быть не менееshortи не болееlong, и обычно равен размеру слова на процессоре машины (т. е. на 32-битной машине он часто имеет ширину 32 бита; на 64-битных машинах он иногда имеет ширину 64 бита). C99 и C++11 [ требуется ссылка ] также определяют[u]intN_tтипы точной ширины в заголовке stdint.h . Для получения дополнительной информации см. Синтаксис C#Целочисленные типы . Кроме того, типыsize_tиptrdiff_tопределены в зависимости от размера адреса для хранения беззнаковых и знаковых целых чисел, достаточно больших для обработки индексов массива и разницы между указателями.
  • ^d Perl 5 не имеет отдельных типов. Целые числа, числа с плавающей точкой, строки и т. д. считаются «скалярами».
  • ^e PHP имеет две библиотеки произвольной точности. Библиотека BCMath использует только строки как тип данных. Библиотека GMP использует внутренний тип "ресурс".
  • ^f ЗначениеnпредоставляетсяSELECTED_INT_KIND внутренней функцией [4] .
  • ^g Опция времени выполнения ALGOL 68 G--precision "number"может установить точность дляlong long ints до требуемого "числа" значащих цифр. Стандартные константыlong long int widthиlong long max intмогут использоваться для определения фактической точности.
  • ^h COBOL позволяет указать требуемую точность и автоматически выберет доступный тип, способный представить указанную точность.PIC S9999Например, " " потребует знаковую переменную с точностью в четыре десятичных знака. Если указать как двоичное поле, то на большинстве платформ будет выбран 16-битный знаковый тип.
  • ^i Smalltalk автоматически выбирает подходящее представление для целых чисел. Обычно присутствуют два представления: одно для целых чисел, соответствующих размеру исходного слова за вычетом любого бита тега ( SmallInteger ), и одно, поддерживающее целые числа произвольного размера ( LargeInteger ). Арифметические операции поддерживают полиморфные аргументы и возвращают результат в наиболее подходящем компактном представлении.
  • ^j Типы диапазонов Ada проверяются на наличие нарушений границ во время выполнения (а также во время компиляции для статических выражений). Нарушения границ во время выполнения вызывают исключение «ошибка ограничения». Диапазоны не ограничиваются степенями двойки. Обычно предопределенными подтипами Integer являются: Positive (range 1 .. Integer'Last) и Natural (range 0 .. Integer'Last).Short_Short_Integer(8 бит),Short_Integer(16 бит) иLong_Integer(64 бита) также обычно предопределены, но не требуются стандартом Ada. Проверки во время выполнения можно отключить, если производительность важнее проверок целостности.
  • ^k Модульные типы Ada реализуют модульную арифметику во всех операциях, т.е. нарушения диапазона невозможны. Модули не ограничены степенями двойки.
  • ^l Обычно используется для символов, подобных char в Java.
  • ^m int в PHP имеет ту же ширину, что иlongтип в C в этой системе. [c]
  • ^n Erlang является динамически типизированным. Идентификаторы типов обычно используются для указания типов полей записи, а также типов аргументов и возвращаемых значений функций. [5]
  • ^o Когда оно превышает одно слово. [6]
Одинарная точностьДвойная точностьДругая точностьЗависит от процессора
Ада [1]FloatLong_Float
АЛГОЛ 68real[а]long real[а]short real, long long real, и т.д. [г]
Сfloat[б]doublelong double[ф]
С++ (STL)
Objective-C ( Cocoa )CGFloat
С#float
Ява
Идтиfloat32float64
Ржавчинаf32f64
БыстрыйFloatилиFloat32DoubleилиFloat64Float80[г]CGFloat
Дfloatdoublereal
Общий Лиспsingle-floatdouble-floatfloat, short-float, long-float
Схема
ИСЛИСП
Паскаль ( FPC )singledoublereal
Визуальный базовыйSingleDouble
Visual Basic .NET
Ксоджо
Питонfloat
JavaScriptNumber[7]
Сленг
ФортранREAL(KIND = n)[с]
PHPfloat
Перл
Ракуnum32num64Num
РубинFloat
СкалаFloatDouble
Семя7float
SmalltalkFloatDouble
Windows PowerShell
OCamlfloat
Фа#float32
Стандартный МЛreal
Хаскелл ( GHC )FloatDouble
ЭйфелеваREAL_32REAL_64
КОБОЛFLOAT-BINARY-7[э]FLOAT-BINARY-34[э]FLOAT-SHORT, FLOAT-LONG,FLOAT-EXTENDED
МатематикаReal
  • ^a Стандартныеконстантыимогут использоваться для определения того, сколькоs иs можно с пользой добавить в качестве префиксов ки. Фактические размеры, , идоступны в виде констант,ит. д. С константами,идоступны для каждого типа машинного эпсилона .real shortsreal lengthsshortlongshort reallong realshort realreallong realshort max realmax reallong max realshort small realsmall reallong small real
  • ^b декларации одинарной точности часто не соблюдаются
  • ^c ЗначениеnпредоставляетсяSELECTED_REAL_KIND внутренней функцией [8] .
  • ^d Опция времени выполнения ALGOL 68 G--precision "number"может установить точность дляlong long reals до требуемого "числа" значащих цифр. Стандартные константыlong long real widthиlong long max realмогут использоваться для определения фактической точности.
  • ^e Эти типы с плавающей точкой IEEE будут введены в следующем стандарте COBOL.
  • ^f Тот же размер, что иdoubleво многих реализациях.
  • ^g Swift поддерживает 80-битный тип данных с плавающей точкой повышенной точности , эквивалентный типуlong doubleв языках C.
Целое числоОдинарная точностьДвойная точностьПоловинная и учетверенная точность и т.д.
Ада [1]Complex[б]Complex[б]Complex[б]
АЛГОЛ 68compllong complи т. д.short complи т.д. и long long complт.п.
С ( С99 ) [9]float complexdouble complex
С++ (STL)std::complex<float>std::complex<double>
С#System.Numerics.Complex
(.NET 4.0)
Ява
Идтиcomplex64complex128
Дcfloatcdouble
Objective-C
Общий Лисп(комплексное целое число)(сложный однопоплавковый)(сложный двойной поплавок)сложный
Схема
Паскаль
Визуальный базовый
Visual Basic .NETSystem.Numerics.Complex
(.NET 4.0)
ПерлMath::Complex
Ракуcomplex64complex128Complex
Питонcomplex
JavaScript
Сленг
ФортранCOMPLEX(KIND = n)[а]
РубинComplexComplex
Скала
Семя7complex
SmalltalkComplexComplexComplex
Windows PowerShell
OCamlComplex.t
Фа#System.Numerics.Complex
(.NET 4.0)
Стандартный МЛ
Хаскелл ( GHC )Complex.Complex FloatComplex.Complex Double
Эйфелева
КОБОЛ
МатематикаComplexComplex
  • ^a ЗначениеnпредоставляетсяSELECTED_REAL_KIND внутренней функцией [8] .
  • ^b Универсальный тип, который может быть создан с использованием любого базового типа с плавающей точкой.

Другие типы переменных

ТекстБулевПеречислениеОбъект / Универсальный
ХарактерСтрока [а]
Ада [1]CharacterString, Bounded_String,Unbounded_StringBoolean(item1, item2, ...)tagged null record
АЛГОЛ 68charstring,bytesbool,bits— - Определяется пользователем
С ( С99 )char,wchar_tbool[б]enum «name» { item1, item2, ... };void *
С++ (STL)«std::»string
Objective-CunicharNSString *BOOLid
С#charstringboolenum name { item1« = value», item2« = value», ... }объект
ЯваStringbooleanenum name { item1, item2, ... }Object
Идтиbyte,runestringboolconst (
   item1 = iota
   item2
   ...
)
interface{}
РжавчинаcharStringboolenum name { item1« = value», item2« = value», ... }std::any::Any
БыстрыйCharacterStringBoolenum name { case item1, item2, ... }Any
Дcharstringboolenum name { item1, item2, ... }std.variant.Variant
Общий Лиспcharacterstringboolean(member item1 item2 ...)t
Схема
ИСЛИСП
Паскаль (ИСО)charboolean( item1, item2, ... )
Объектный Паскаль ( Delphi )stringvariant
Визуальный базовыйStringBooleanEnum name
   item1 «= value»
   item2 «= value»
   ...

End Enum
[[Variant type|Variant]]
Visual Basic .NETCharObject
КсоджоObjectилиVariant
Питон[д]strboolfrom enum import Enum
class Name(Enum):
   item1 = value
   item2 = value
   ...
object
JavaScript[д]StringBooleanObject
Сленг
ФортранCHARACTER(LEN = *)CHARACTER(LEN = :), allocatableLOGICAL(KIND = n)[ф]CLASS(*)
PHP[д]stringbool(декларация типа опущена)
Перл[д]UNIVERSAL
РакуCharStrBoolenum name<item1 item2 ...>
enum name <<:item1(value) :item2(value) ..>>
Mu
Рубин[д]StringObject[с]Object
СкалаCharStringBooleanobject name extends Enumeration {
   val item1, item2, ... = Value
}
Any
Семя7charstringbooleanconst type: name is new enum
   item1,
   item2,
   ...
end enum;
Windows PowerShell
OCamlcharstringbool[э]
Фа#type name = item1 = value |item2 = value | ...obj
Стандартный МЛ[э]
Хаскелл ( GHC )CharStringBool[э]
ЭйфелеваCHARACTERSTRINGBOOLEANANY
КОБОЛPIC XPIC X(string length)илиPIC X«X...»PIC 1«(number of digitsилиPIC 1«1...»OBJECT REFERENCE
Математика[д]String
  • ^a в частности, строки произвольной длины и автоматически управляемые.
  • ^b Этот язык представляет логическое значение как целое число, где false представлено значением ноль, а true — ненулевым значением.
  • ^c Все значения оцениваются как истина или ложь. Все вTrueClassоценивается как истина, а все вFalseClassоценивается как ложь.
  • ^d В этом языке нет отдельного типа символов. Символы представлены в виде строк длиной 1.
  • ^e Перечисления в этом языке являются алгебраическими типами с конструкторами только с нулевым числом аргументов.
  • ^f ЗначениеnпредоставляетсяSELECTED_INT_KIND внутренней функцией [4] .

Производные типы

массив фиксированного размерадинамический размер массива
одномерный массивмногомерный массиводномерный массивмногомерный массив
Ада [1]array (<first> .. <last>) of <type>
или
array (<discrete_type>) of <type>
array (<first1> .. <last1>, <first2> .. <last2>, ...) of <type>
или
array (<discrete_type1>, <discrete_type2>, ...) of <type>
array (<discrete_type> range <>) of <type>array (<discrete_type1> range <>, <discrete_type2> range <>, ...) of <type>
АЛГОЛ 68[first:last]«modename»
или просто:
[size]«modename»
[first1:last1, first2:last2]«modename»
или т.п.
[first1:last1][first2:last2]«modename»
flex[first:last]«modename»
или просто:
flex[size]«modename»
flex[first1:last1, first2:last2]«modename»
или
flex[first1:last1]flex[first2:last2]«modename» etc.
С ( С99 )type name[size][а]type name[size1][size2][а]type *name
или внутри блока:
int n = ...; type name[n]
С++ (STL)«std::»array<type, size>(С++11)«std::»vector<type>
С#type[]type[,,...]System.Collections.ArrayList
или
System.Collections.Generic.List<type>
Яваtype[][б]type[][]...[б]ArrayList or ArrayList<type>
Дtype[size]type[size1][size2]type[]
Идти[size]type[size1][size2]...type[]type[][]type
Ржавчина[type; size][[type; size1]; size2]Vec<type>Vec<Vec<type>>
Быстрый[type]илиArray<type>[[type]]илиArray<Array<type>>
Objective-CNSArrayNSMutableArray
JavaScriptArray[г]
Общий Лисп(simple-array type (dimension))(simple-array type (dimension1 dimension2))(array type (dimension))(array type (dimension1 dimension2))
Схема
ИСЛИСП
Паскальarray[first..last] of type[с]array[first1..last1] of array[first2..last2] ... of type[с]
или [с]
array[first1..last1, first2..last2, ...] of type
Объектный Паскаль ( Delphi )array of typearray of array ... of type
Визуальный базовыйDim x(last) As typeDim x(last1, last2,...) As type
Visual Basic .NETtype()type(,,...)System.Collections.ArrayList
или
System.Collections.Generic.List(Of type)
Питонlist
Сленгx = type[size];x = type[size1, size2, ...];
Фортранtype :: name(size)type :: name(size1, size2,...)type, ALLOCATABLE :: name(:)type, ALLOCATABLE :: name(:,:,...)
PHParray
Перл
РакуArray[type] or Array of type
Рубинx = Array.new(size1){ Array.new(size2) }Array
СкалаArray[type]Array[...[Array[type]]...]ArrayBuffer[type]
Семя7array type
или
array [idxType] type
array array type
или
array [idxType] array [idxType] type
array type
или
array [idxType] type
array array type
или
array [idxType] array [idxType] type
SmalltalkArrayOrderedCollection
Windows PowerShelltype[]type[,,...]
OCamltype arraytype array ... array
Фа#type []
или
type array
type [,,...]System.Collections.ArrayList
или
System.Collections.Generic.List<type>
Стандартный МЛtype vector or type array
Хаскелл ( GHC )x = Array.array (0, size-1) list_of_association_pairsx = Array.array ((0, 0,...), (size1-1, size2-1,...)) list_of_association_pairs
КОБОЛlevel-number type OCCURS size «TIMES».определение одномерного массива...level-number type OCCURS min-size TO max-size «TIMES» DEPENDING «ON» size.[э]
  • ^a В большинстве выражений (за исключениемsizeofи&) значения типов массивов в C автоматически преобразуются в указатель своего первого аргумента. См. Синтаксис C#Массивы для получения дополнительных сведений о синтаксисе и операциях с указателями.
  • ^b Похожий на C форматtype x[]работает в Java, однакоtype[] xявляется предпочтительной формой объявления массива.
  • ^c Поддиапазоны используются для определения границ массива.
  • ^d Массив JavaScript — это особый вид объекта.
  • ^e ПредложениеDEPENDING ONв COBOL не создает настоящий массив переменной длины и всегда выделяет максимальный размер массива.

Другие типы

Простые составные типыАлгебраические типы данныхПрофсоюзы
ЗаписиВыражение кортежа
Ада [1]type name is «abstract» «tagged» «limited» [record
  field1 : type;
  field2 : type;
  ...
end record | null record]
Любая комбинация записей, объединений и перечислений (а также ссылок на них, позволяющих использовать рекурсивные типы).type name (variation : discrete_type) is record
  case variation is
     when choice_list1 =>
      fieldname1 : type;
      ...
     when choice_list2 =>
      fieldname2 : type;
      ...
     ...
  end case;
end record
АЛГОЛ 68struct (modename «fieldname», ...);Требуемые типы и операторы могут быть определены пользователем.union (modename, ...);
С ( С99 )struct «name» {type name;...};union {type name;...};
Objective-C
С++struct «name» {type name;...};[б]«std::»tuple<type1..typen>
С#struct name {type name;...}(val1, val2, ... )
Ява[а]
JavaScript
Дstruct name {type name;...}std.variant.Algebraic!(type,...)union {type name;...}
Идтиstruct {
  «name» type
  ...
}
Ржавчинаstruct name {name: type, ...}(val1, val2, ... )enum name { Foo(types), ...}union name {name: type, ...}
Быстрыйstruct name {
  
var name «: type»
  ...
}
(«name1:» val1, «name2:» val2, «name3:» val3, ... )enum name { case Foo«(types)» case Bar «(types... }
Общий Лисп(defstruct name slot-name (slot-name initial-value) (slot-name initial-value :type type) ...)(cons val1 val2)[с]
Схема
ИСЛИСП
Паскальrecord
  name: type;
  ...
end
record
  case type of
  value: (types);
  ...
end
Визуальный базовый
Visual Basic .NETStructure name
  Dim name As type
  ...
End Structure
(val1, val2, ... )
Питон[а]«(»val1, val2, val3, ... «)»
Сленгstruct {name [=value], ...}
ФортранTYPE name
  type
 :: name
  ...
END TYPE
PHP[а]
Перл[д]
Раку[а]
РубинOpenStruct.new({:name => value})
Скалаcase class namevar» name: type, ...)(val1, val2, val3, ... )abstract class name
  case class Fooparameters») extends name
  case class Barparameters») extends name
  ...

или или комбинация классов case и объектов case
abstract class name
  case object Foo extends name
  case object Bar extends name
  ...

Windows PowerShell
OCamltype name = {«mutable» name : type;...}«(»val1, val2, val3, ... «)»type name = Foo «of type» | Bar «of type» | ...
Фа#
Стандартный МЛtype name = {name : type,...}(val1, val2, val3, ... )datatype name = Foo «of type» | Bar «of type» | ...
Хаскеллdata Name = Constr {name :: type,...}data Name = Foo «types» | Bar «types» | ...
КОБОЛlevel-number name type clauses.
  level-number+n name type clauses.
  ...
name REDEFINES variable type.
  • ^a Поддерживаются только классы.
  • ^b struct в C++ на самом деле являются классами, но имеют публичную видимость по умолчанию итакже являются объектами POD . C++11 расширил это еще больше, чтобы заставить классы действовать идентично объектам POD во многих других случаях.
  • ^c только пара
  • ^d Хотя в Perl нет записей, поскольку система типов Perl допускает размещение различных типов данных в массиве, «хэши» (ассоциативные массивы), не имеющие переменного индекса, фактически будут тем же самым, что и записи.
  • ^e Перечисления в этом языке являются алгебраическими типами с конструкторами только с нулевым числом аргументов.

Объявления переменных и констант

переменнаяпостоянныйтип синоним
Ада [1]identifier : type« := initial_value»[э]identifier : constant type := final_valuesubtype identifier is type
АЛГОЛ 68modename name« := initial_value»;modename name = value;mode synonym = modename;
С ( С99 )type name« = initial_value»;enum{ name = value };typedef type synonym;
Objective-C
С++const type name = value;
С#type name1« = initial_value», name2« = initial_value», ...;
или
var name = initial_value;
const type name = value, name = value, ...;
или
readonly type name = value, name = value, ... ;
using synonym = type;
Дtype name« = initial_value»;
или
auto name = value;
const type name = value;
или
immutable type name = value;
alias type synonym;
Яваtype name« = initial_value»;final type name = value;
JavaScriptvar name« = initial_value»;или (начиная с ECMAScript 2015)
let name« = initial_value»;
const name = value;(начиная с ECMAScript 2015)
Идтиvar name type« = initial_value»
или
name := initial_value
const name «type» = valuetype synonym type
Ржавчина [ж]let mut name«: type»« = initial_value»;
static mut NAME: type = value;
let name«: type»« = initial_value»;
const NAME: type = value;

static NAME: type = value;
type synonym = typename;
Быстрыйvar name «: type»« = initial_value»let name «: type» = valuetypealias synonym = type
Общий Лисп(defparameter name initial-value)
или
(defvar name initial-value)
(defconstant name value)(deftype synonym () 'type)
Схема(define name initial_value)
ИСЛИСП(defglobal name initial_value)
или
(defdynamic name initial_value)
(defconstant name value)
Паскаль [а]name: type« = initial_value»name = valuesynonym = type
Визуальный базовыйDim name «As type»См. примечания слева.

Константы используют тот же синтаксис, а именно:

  • использовать ConstвместоDim
  • имеют ограничение только на определенные примитивные типы
    Const name1 «As type» = value, name2 «As type» = value, ...
Visual Basic .NET [10]Синтаксис объявления переменных в VB.NET необычайно сложно точно описать.

Учитывая, что существуют суффиксы идентификаторов («модификаторы»):

  • type_character, доступен как альтернатива предложению Asдля некоторых примитивных типов данных;
  • nullable_specifier; и
  • array_specifier;

и что

  • a modified_identifierимеет вид identifier«type_character»«nullable_specifier»«array_specifier»;
  • a modified_identifier_list— это разделенный запятыми список из двух или более вхождений modified_identifier; и
  • a declarator_list— это список деклараторов, разделенных запятыми, который может иметь форму
    • identifier As object_creation_expression(декларатор инициализатора объекта) ,
    • modified_identifier «As non_array_type«array_rank_specifier»»« = initial_value» (один заявитель) или
    • modified_identifier_list «As «non_array_type««array_rank_specifier»» (множественный декларант);

Допустимые операторы объявления имеют вид       , где для целей семантического анализа необходимо преобразовать в список только отдельных деклараторов:Dim declarator_listdeclarator_list

  • Пункты Asкаждого множественного декларатора распределены по егоmodified_identifier_list
  • Декларатор инициализатора каждого объекта заменяется наAs New type...As type = New type...

и для которого, для каждого identifier,

  • а type_characterи Asпредложение не появляются одновременно;
  • если Asприсутствует предложение,
    • an array_rank_specifierне появляется одновременно как модификация идентификатора и типа предложения As;
  • можно unmodified_typeопределить по правилу, что
    • если присутствует предложение type_character«или» ,As
      • unmodified_typeэто то, что указано такой конструкцией,
    • и что в противном случае,
      • либо Option Inferдолжен быть включен и identifierдолжен иметь инициализатор, в этом случае unmodified_typeэто инициализатор, или
      • Option Strictдолжен быть выключен, в этом unmodified_typeслучае Object;
  • его final_typeдобавляют unmodified_typeперед его модификаторами;
  • это final_typeдопустимый тип; и
  • если initial_valueприсутствует,
    • либо Option Strictвключено и initial_valueимеет расширяющееся преобразование в final_type, либо
    • Option Strictвыключен и initial_valueимеет сужающее преобразование в final_type.

Если Option Explicitвыключено, переменные не требуют явного объявления; они объявляются неявно при использовании:name = initial_value

Imports synonym = type
КсоджоDim name «As type»« = initial_value»
Питонname«: type» = initial_valuesynonym = type[б]
CoffeeScriptname = initial_value
Сленгname = initial_value;typedef struct {...} typename
Фортранtype :: nametype, PARAMETER :: name = value
PHP$name = initial_value;define("name", value);
const name = value (5.3+)
Перл«my» $name« = initial_value»;[с]use constant name => value;
Раку«my «type»» $name« = initial_value»;[с]«my «type»» constant name = value;::synonym ::= type
Рубинname = initial_valueName = valuesynonym = type[б]
Скалаvar name«: type» = initial_valueval name«: type» = valuetype synonym = type
Windows PowerShell«[type]» $name = initial_value
Оболочка Bashname=initial_value
OCamllet name« : type ref» = ref value[г]let name «: type» = valuetype synonym = type
Фа#let mutable name «: type» = value
Стандартный МЛval name «: type ref» = ref value[г]val name «: type» = value
Хаскелл«name::typename = valuetype Synonym = type
ВпередVARIABLE name(в некоторых системах вместо этого используйте)value VARIABLE namevalue CONSTANT name
КОБОЛlevel-number name type clauses.«0»1 name CONSTANT «AS» value.level-number name type clauses «IS» TYPEDEF.
Математикаname=initial_value
  • ^a Pascal имеет блоки объявлений. Смотрите функции.
  • ^b Типы — это обычные объекты, поэтому вы можете просто назначать их.
  • ^c В Perl ключевое слово «my» ограничивает область действия переменной блоком.
  • ^d Технически, это не объявляет имя изменяемой переменной — в ML все имена могут быть связаны только один раз; вместо этого это объявляет имя указателем на «ссылочную» структуру данных, которая является простой изменяемой ячейкой. Затем структура данных может быть прочитана и записана с использованием!и:=соответственно.
  • ^e Если начальное значение не указано, автоматически назначается недопустимое значение (что вызовет исключение времени выполнения, если оно будет использовано до назначения допустимого значения). Хотя такое поведение можно подавить, оно рекомендуется в интересах предсказуемости. Если для типа не может быть найдено недопустимое значение (например, в случае неограниченного целочисленного типа), вместо него выбирается допустимое, но предсказуемое значение.
  • ^flet В Rust, если переменной или не задано начальное значениеlet mutи она никогда не присваивается позже, возникает предупреждение "неиспользуемая переменная". Если для переменной или не задано значениеconst,возникает ошибка. Для переменных, не являющихся заглавными, возникает ошибка "глобальные переменные не в верхнем регистре". После определения переменнаяstaticбытьприсвоена только вблоке или функции.static mutconststatic mutunsafe

Условныйзаявления

еслииначе есливыберите случайусловное выражение
Ада [1]if condition then
  statements
«else
  statements»
end if
if condition1 then
  statements
elsif condition2 then
  statements
...
«else
  statements»
end if
case expression is
  when value_list1 => statements
  when value_list2 => statements
  ...
  «when others => statements»
end case
(if condition1 then
  expression1
«elsif condition2 then
  expression2»
...
else
  expressionn
)

или
(case expression is
  when value_list1 => expression1
  when value_list2 => expression2
  ...
  «when others => expressionn»
)
Семя7if condition then
  statements
«else
  statements»
end if
if condition1 then
  statements
elsif condition2 then
  statements
...
«else
  statements»
end if
case expression of
  when set1 : statements
  ...
  «otherwise: statements»
end case
Модула-2if condition then
  statements
«else
  statements»
end
if condition1 then
  statements
elsif condition2 then
  statements
...
«else
  statements»
end
case expression of
  caseLabelList : statements |
  ...
  «else statements»
end
АЛГОЛ 68if condition then statements «else statements» fiif condition then statements elif condition then statements ficase switch in statements, statements«,... out statements» esac( condition | valueIfTrue | valueIfFalse )
АЛГОЛ 68
(краткая форма)
( condition | statements «| statements» )( condition | statements |: condition | statements )( variable | statements,... «| statements» )
АПЛ:If condition
  instructions
«:Else
  instructions»
:EndIf
:If condition
  instructions
:ElseIf condition
  instructions
...
«:Else
  instructions»
:EndIf
:Select expression
  :Case case1
     instructions
  ...
  «:Else
     instructions»
:EndSelect
{condition:valueIfTruevalueIfFalse}
С ( С99 )if (condition) instructions
«else instructions»

instructionsможет быть отдельным оператором или блоком в форме:{ statements }
if (condition) instructions
else if (condition) instructions
...
«else instructions»

или
if (condition) instructions
else { if (condition) instructions }
switch (variable) {
  case case1: instructions «; break;»
  ...
  «default: instructions»
}
condition ? valueIfTrue : valueIfFalse
Objective-C
С++ (STL)
Д
Ява
JavaScript
PHP
С#if (condition) instructions
«else instructions»

instructionsможет быть отдельным оператором или блоком в форме:{ statements }

if (condition) instructions
else if (condition) instructions
...
«else instructions»
switch (variable)
{
  case case1:
     instructions
     «break_or_jump_statement»
  ...
  «default:
     instructions
     break_or_jump_statement»
}

Все непустые случаи должны заканчиваться оператором breakor goto case(то есть им не разрешается переходить в следующий случай). Случай defaultне обязательно должен быть последним.

condition ? valueIfTrue : valueIfFalse
Windows PowerShellif (condition) instruction
«else instructions»
if (condition) { instructions }
elseif (condition) { instructions }
...
«else { instructions
switch (variable) { case1{instructions «break;» } ... «default { instructions }»}
Идтиif condition {instructions}
«else {instructions
if condition {instructions}
else if condition {instructions}
...
«else {instructions

или
switch {
  case condition: instructions
  ...
  «default: instructions»
}
switch variable {
  case case1: instructions
  ...
  «default: instructions»
}
Быстрыйif condition {instructions}
«else {instructions
if condition {instructions}
else if condition {instructions}
...
«else {instructions
switch variable {
  case case1: instructions
  ...
  «default: instructions»
}
Перлif (condition) {instructions}
«else {instructions

или
unless (notcondition) {instructions}
«else {instructions
if (condition) {instructions}
elsif (condition) {instructions}
...
«else {instructions

или
unless (notcondition) {instructions}
elsif (condition) {instructions}
...
«else {instructions
use feature "switch";
...
given (variable) {
  when (case1) { instructions }
  ...
  «default { instructions
}
condition ? valueIfTrue : valueIfFalse
Ракуif condition {instructions}
«else {instructions

или
unless notcondition {instructions}
if condition {instructions}
elsif condition {instructions}
...
«else {instructions}
given variable {
  when case1 { instructions }
  ...
  «default { instructions
}
condition ?? valueIfTrue !! valueIfFalse
Рубинif condition
  instructions
«else
  instructions»
if condition
  instructions
elsif condition
  instructions
...
«else
  instructions»
end
case variable
  when case1
     instructions
  ...
  «else
     instructions»
end
condition ? valueIfTrue : valueIfFalse
Скалаif (condition) {instructions}
«else {instructions
if (condition) {instructions}
else if (condition) {instructions}
...
«else {instructions
expression match {
  case pattern1 => expression
  case pattern2 => expression
  ...
  «case _ => expression»
}
[б]
if (condition) valueIfTrue else valueIfFalse
Smalltalkcondition ifTrue:
  trueBlock
«ifFalse:
  falseBlock»
end
condition ifTrue: trueBlock ifFalse: falseBlock
Общий Лисп(when condition
  instructions)

или или
(unless condition
  instructions)


(if condition
  (progn instructions)
  «(progn instructions)»)
(cond (condition1 instructions)
  (condition2 instructions)
  ...
  «(t instructions)»)
(case expression
  (case1 instructions)
  (case2 instructions)
  ...
  «(otherwise instructions)»)
(if test then else)
или
(cond (test1 value1) (test2 value2) ...))
Схема(when condition instructions)
или
(if condition (begin instructions) «(begin instructions)»)
(cond (condition1 instructions) (condition2 instructions) ... «(else instructions)»)(case (variable) ((case1) instructions) ((case2) instructions) ... «(else instructions)»)(if condition valueIfTrue valueIfFalse)
ИСЛИСП(if condition
  (progn instructions)
  «(progn instructions)»)
(cond (condition1 instructions)
  (condition2 instructions)
  ...
  «(t instructions)»)
(case expression
  (case1 instructions)
  (case2 instructions)
  ...
  «(t instructions)»)
(if condition valueIfTrue valueIfFalse)
Паскальif condition then begin
  instructions
end
«else begin
  instructions
end»'
[с]
if condition then begin
  instructions
end
else if condition then begin
  instructions
end
...
«else begin
  instructions
end»
[с]
case variable of
  case1: instructions
  ...
  «else: instructions»
end
[с]
Визуальный базовыйIf condition Then
  instructions
«Else
  instructions»
End If

Однострочный, instructionsкогда :instruction1 : instruction2 : ...
If condition Then instructions «Else instructions»
If condition Then
  instructions
ElseIf condition Then
  instructions
...
«Else
  instructions»
End If

Однострочный:
см. примечание о языках типа C; Elseпредложение однострочного Ifоператора может содержать другой однострочный Ifоператор.
Select« Case» variable
  Case case_pattern1
     instructions
  ...
  «Case Else
     instructions»
End Select
IIf(condition, valueIfTrue, valueIfFalse)
Visual Basic .NETIf(condition, valueIfTrue, valueIfFalse)
Ксоджо
Питон [а]if condition :
Tab ↹instructions
«else:
Tab ↹instructions»
if condition :
Tab ↹instructions
elif condition :
Tab ↹instructions
...
«else:
Tab ↹instructions»
Питон 3.10+:
match variable:
Tab ↹case case1:
Tab ↹Tab ↹instructions
Tab ↹case case2:
Tab ↹Tab ↹instructions
Питон 2.5+:
valueIfTrue if condition else valueIfFalse
Сленгif (condition) { instructions } «else { instructionsif (condition) { instructions } else if (condition) { instructions } ... «else { instructionsswitch (variable) { case case1: instructions } { case case2: instructions } ...
ФортранIF (condition) THEN
  instructions
ELSE
  instructions
ENDIF
IF (condition) THEN
  instructions
ELSEIF (condition) THEN
  instructions
...
ELSE
  instructions
ENDIF
SELECT CASE(variable)
  CASE (case1)
     instructions
  ...
  CASE DEFAULT
     instructions
END SELECT
Впередcondition IF instructions « ELSE instructions» THENcondition IF instructions ELSE condition IF instructions THEN THENvalue CASE
  case OF instructions ENDOF
  case OF instructions ENDOF
     default instructions
ENDCASE
condition IF valueIfTrue ELSE valueIfFalse THEN
OCamlif condition then begin instructions end «else begin instructions end»if condition then begin instructions end else if condition then begin instructions end ... «else begin instructions end»match value with
  pattern1 -> expression
  | pattern2 -> expression
  ...
  «| _ -> expression»
[б]
if condition then valueIfTrue else valueIfFalse
Фа#Облегченный режим синтаксиса:

Либо в одну строку, либо с отступом, как показано ниже: Режим подробного синтаксиса: такой же, как в стандартном ML.if condition then
Tab ↹instructions
«else
Tab ↹instructions»


Режим облегченного синтаксиса:
в одну строку или с отступом, как показано ниже: Режим подробного синтаксиса: такой же, как и в стандартном ML.
if condition then
Tab ↹instructions
elif condition then
Tab ↹instructions
...
«else
Tab ↹instructions»


Стандартный МЛif condition then «(»instructions «
else «(» instructions «
if condition then «(»instructions «
else if condition then «(» instructions «
...
else «(» instructions «
case value of
  pattern1 => expression
  | pattern2 => expression
  ...
  «| _ => expression»
[б]
Хаскелл ( GHC )if condition then expression else expression
или или
when condition (do instructions)

unless notcondition (do instructions)
result | condition = expression
  | condition = expression
  | otherwise = expression
case value of {
  pattern1 -> expression;
  pattern2 -> expression;
  ...
  «_ -> expression»
}
[б]
Оболочка Bashif condition-command; then
  expression
«else
  expression»
fi
if condition-command; then
  expression
elif condition-command; then
  expression
«else
  expression»
fi
case "$variable" in
  "$condition1" )
     command...
  "$condition2" )
     command...

esac
CoffeeScriptif condition then expression «else expression»
или или или или
if condition
  expression

«else
  expression»


expression if condition

unless condition
  expression
«else
  expression»


expression unless condition
if condition then expression else if condition then expression «else expression»
или или
if condition
  expression
else if condition
  expression

«else
  expression»


unless condition
  expression
else unless condition
  expression

«else
  expression»
switch expression
  when condition then expression
  else expression

или
switch expression
  when condition
     expression
  «else
     expression»
Все условия являются выражениями.
КОБОЛIF condition «THEN»
  expression
«ELSE
  expression».
[г]
EVALUATE expression «ALSO expression...»
  WHEN case-or-condition «ALSO case-or-condition...»
     expression
  ...

  «WHEN OTHER
     expression»
END-EVALUATE
Ржавчинаif condition {
  expression
}« else {
  expression
if condition {
  expression
} else if condition {
  expression
}« else {
  expression
}»
match variable {
  pattern1 => expression,
  pattern2 => expression,
  pattern3 => expression,
  «_ => expression»
}
[ быть]
Все условия являются выражениями
еслииначе есливыберите случайусловное выражение
  • ^a Одна инструкция может быть записана на той же строке после двоеточия. Несколько инструкций группируются в блок , который начинается с новой строки (отступ обязателен). Синтаксис условного выражения не следует этому правилу.
  • ^b Это сопоставление с образцом , похожее на select case, но не то же самое. Обычно используется для деконструкции алгебраических типов данных .
  • ^c В языках семейства Паскаль точка с запятой не является частью оператора. Она является разделителем операторов, а не терминатором.
  • END-IFВместо точки в конце можно использовать ^d .
  • ^e В Rust запятая (,) в конце ветви сопоставления может быть опущена после последней ветви сопоставления или после любой ветви сопоставления, в которой выражение является блоком (заканчивается возможно пустыми скобками сопоставления{}).
цикл whileцикл do while(контролируемый подсчет) цикл forforeach
Ада [1]while condition loop
  statements
end loop
loop
  statements
  exit when not condition
end loop
for index in «reverse» [first .. last | discrete_type] loop
  statements
end loop
for item of «reverse» iterator loop
  statements
end loop

или [б]
(for [all | some] [in | of] [first .. last | discrete_type | iterator] => predicate)
АЛГОЛ 68«for index» «from first» «by increment» «to last» «while condition» do statements odfor key «to upb list» do «typename val=list[key];» statements od
«while condition»
  do statements od
«while statements; condition»
  do statements od
«for index» «from first» «by increment» «to last» do statements od
АПЛ:While condition
  statements
:EndWhile
:Repeat
  statements
:Until condition
:For var«s» :In list
  statements
:EndFor
:For var«s» :InEach list
  statements
:EndFor
С ( С99 )instructionsможет быть отдельным оператором или блоком в форме:{ statements }
while (condition) instructions
do instructions while (condition);for («type» i = first; i <= last; i++) instructions
Objective-Cfor (type item in set) instructions
С++ (STL)«std::»for_each(start, end, function)
Начиная с C++11 :
for (type item : set) instructions
С#foreach (type item in set) instructions
Яваfor (type item : set) instructions
JavaScriptfor (var i = first; i <= last; i++) instructionsНачиная с EcmaScript 2015: [11]

for (var item of set) instructions

PHPforeach (range(first, last) as $i) instructions
или
for ($i = first; $i <= last; $i++) instructions
foreach (set as item) instructions
или
foreach (set as key => item) instructions
Windows PowerShellfor ($i = first; $i -le last; $i++) instructionsforeach (item in set) instructions
Дforeach (i; first ... last) instructionsforeach («type» item; set) instructions
Идтиfor condition { instructions }for i := first; i <= last; i++ { instructions }for key, item := range set { instructions }
Быстрыйwhile condition { instructions }2.х: 1.х:
repeat { instructions } while condition

do { instructions } while condition
for i = first ... last { instructions }
или или
for i = first ..< last+1 { instructions }

for var i = first; i <= last; i++ { instructions }
for item in set { instructions }
Перлwhile (condition) { instructions }
или
until (notcondition) { instructions }
do { instructions } while (condition)
или
do { instructions } until (notcondition)
for«each» «$i» (first .. last) { instructions }
или
for ($i = first; $i <= last; $i++) { instructions }
for«each» «$item» (set) { instructions }
Ракуwhile condition { instructions }
или
until notcondition { instructions }
repeat { instructions } while condition
или
repeat { instructions } until notcondition
for first..last -> $i { instructions }
или
loop ($i = first; $i <=last; $i++) { instructions }
for set« -> $item» { instructions }
Рубинwhile condition
  instructions
end

или
until notcondition
  instructions
end
begin
  instructions
end while condition

или
begin
  instructions
end until notcondition
for i in first..last
  instructions
end

или или
for i in first...last+1
  instructions
end


first.upto(last) { |i| instructions }
for item in set
  instructions
end

или
set.each { |item| instructions }
Оболочка Bashwhile condition ;do
  instructions
done

или
until notcondition ;do
  instructions
done
for ((i = first; i <= last; ++i)) ; do
  instructions
done
for item in set ;do
  instructions
done
Скалаwhile (condition) { instructions }do { instructions } while (condition)for (i <- first to last «by 1») { instructions }
или
first to last «by 1» foreach (i => { instructions })
for (item <- set) { instructions }
или
set foreach (item => { instructions })
SmalltalkconditionBlock whileTrue:
  loopBlock
loopBlock doWhile:
  conditionBlock
first to: last do:
  loopBlock
collection do:
  loopBlock
Общий Лисп(loop
  while condition
  do
  instructions)

или
(do () (notcondition)
  instructions)
(loop
  do
  instructions
  while condition)
(loop
  for i from first to last «by 1»
  do
  instructions)

или или
(dotimes (i N)
  instructions)


(do ((i first (1+ i))) ((>=i last))

  instructions)
(loop
  for item in list
  do
  instructions)

или или или или
(loop
  for item across vector
  do
  instructions)


(dolist (item list)
  instructions)


(mapc function list)

(map type function sequence)
Схема(do () (notcondition) instructions)
или
(let loop () (if condition (begin instructions (loop))))
(let loop () (instructions (if condition (loop))))(do ((i first (+ i 1))) ((>= i last)) instructions)
или
(let loop ((i first)) (if (< i last) (begin instructions (loop (+ i 1)))))
(for-each (lambda (item) instructions) list)
ИСЛИСП(while condition instructions)(tagbody loop instructions (if condition (go loop))(for ((i first (+ i 1))) ((>= i last)) instructions)(mapc (lambda (item) instructions) list)
Паскальwhile condition do begin
  instructions
end
repeat
  instructions
until notcondition;
for i := first «step 1» to last do begin
  instructions
end;
[а]
for item in set do instructions
Визуальный базовыйDo While condition
  instructions
Loop

или или (Visual Basic .NET использует вместо этого)
Do Until notcondition
  instructions
Loop


While condition
  instructions
Wend
End While
Do
  instructions
Loop While condition

или
Do
  instructions
Loop Until notcondition
iнеобходимо объявить заранее.

For i = first To last «Step
  instructions

Next i

For Each item In set
  instructions
Next item
Visual Basic .NETFor i« As type» = first To last« Step
  instructions

Next« i»
[а]
For Each item« As type» In set
  instructions
Next« item»
КсоджоWhile condition
  instructions
Wend
Do Until notcondition
  instructions
Loop

или
Do
  instructions
Loop Until notcondition
Питонwhile condition :
Tab ↹instructions
«else:
Tab ↹instructions»
Питон 3.x: Питон 2.x:
for i in range(first, last+1):
Tab ↹instructions
«else:
Tab ↹instructions»


for i in xrange(first, last+1):
Tab ↹instructions
«else:
Tab ↹instructions»
for item in set:
Tab ↹instructions
«else:
Tab ↹instructions»
Сленгwhile (condition) { instructions } «then optional-block»do { instructions } while (condition) «then optional-block»for (i = first; i <= last; i++) { instructions } «then optional-block»foreach item(set) «using (what)» { instructions } «then optional-block»
ФортранDO WHILE (condition)
  instructions
ENDDO
DO
  instructions
  IF (condition) EXIT
ENDDO
DO I = first,last
  instructions
ENDDO
ВпередBEGIN «instructions» condition WHILE instructions REPEATBEGIN instructions condition UNTILlimit start DO instructions LOOP
OCamlwhile condition do instructions donefor i = first to last do instructions doneArray.iter (fun item -> instructions) array
или
List.iter (fun item -> instructions) list
Фа#while condition do
Tab ↹instructions
for i = first to last do
Tab ↹instructions
foritem in set do
Tab ↹instructions

или
Seq.iter (fun item -> instructions) set
Стандартный МЛwhile condition do ( instructions )Array.app (fn item => instructions) array
или
app (fn item => instructions) list
Хаскелл ( GHC )Control.Monad.forM_ [first..last] (\i -> do instructions)Control.Monad.forM_list (\item -> do instructions)
Эйфелеваfrom
  setup
until
  condition
loop
  instructions
end
CoffeeScriptwhile condition
  expression

или или или или или
expression while condition

while condition then expression

until condition
  expression


expression until condition

until expression then condition
for i in [first..last]
  expression

или или
for i in [first..last] then expression

expression for i in [first..last]
for item in set
  expression

или или
for item in set then expression

expression for item in set
КОБОЛPERFORM procedure-1 «THROUGH procedure-2» ««WITH» TEST BEFORE» UNTIL condition[с]
или
PERFORM ««WITH» TEST BEFORE» UNTIL condition
  expression
END-PERFORM
PERFORM procedure-1 «THROUGH procedure-2» «WITH» TEST AFTER UNTIL condition[с]
или
PERFORM «WITH» TEST AFTER UNTIL condition
  expression
END-PERFORM
PERFORM procedure-1 «THROUGH procedure-2» VARYING i FROM first BY increment UNTIL i > last[д]
или [д]
PERFORM VARYING i FROM first BY increment UNTIL i > last
  expression
END-PERFORM
Ржавчинаwhile condition {
  expression
}
loop {
  expression
     if condition {
      break;
  }
}
for i in first..last+1 {
  expression
}

или
for i in first..=last {
  expression
}
for item in set {
  expression
}
[е]
или [е]
set.into_iter().for_each(|item| expression);
  • ^a "stepn" используется для изменения интервала цикла. Если "step" опущено, то интервал цикла равен 1.
  • ^b Это реализует квантификатор всеобщности («для всех» или «»), а также квантификатор существования («существует» или «»). {\displaystyle \forall } {\displaystyle \exists }
  • THRUВместо можно использовать ^cTHROUGH .
  • «IS» GREATER «THAN»Вместо можно использовать ^d> .
  • ^e Тип выражения множества должен реализовывать признакstd::iter::IntoIterator.
бросатьобработчикутверждение
Ада [1]raise exception_name «with string_expression»begin
  statements
exception
  when exception_list1 => statements;
  when exception_list2 => statements;
...
  «when others => statements;»
end
[б]
pragma Assert («Check =>» boolean_expression ««Message =>» string_expression»)
[function | procedure | entry] with
  Pre => boolean_expression
  Post => boolean_expression
any_type with Type_Invariant => boolean_expression
АПЛ«string_expression» ⎕SIGNAL number_expression:Trap number«s»_expression
  statements
«:Case number«s»_expression
  statements»
...
«:Else number«s»_expression
  statements»
:EndTrap
«string_expression» ⎕SIGNAL 98/⍨~condition
С ( С99 )longjmp(state, exception);switch (setjmp(state)) { case 0: instructions break; case exception: instructions ... }assert(condition);
С++throw exception;try { instructions } catch «(exception)» { instructions } ...
С#try { instructions } catch «(exception« name»)» { instructions } ... «finally { instructionsSystem.Diagnostics.Debug.Assert(condition);
или
System.Diagnostics.Trace.Assert(condition);
Яваtry { instructions } catch (exception) { instructions } ... «finally { instructionsassert condition «: description»;
JavaScripttry { instructions } catch (exception) { instructions} «finally { instructions?
Дtry { instructions } catch (exception) { instructions } ... «finally { instructionsassert(condition);
PHPtry { instructions } catch (exception) { instructions } ... «finally { instructionsassert(condition);
Сленгtry { instructions } catch «exception» { instructions } ... «finally { instructions?
Windows PowerShelltrap «[exception]» { instructions } ... instructions
или
try { instructions } catch «[exception]» { instructions } ... «finally { instructions
[Debug]::Assert(condition)
Objective-C@throw exception;@try { instructions } @catch (exception) { instructions } ... «@finally { instructionsNSAssert(condition, description);
Быстрыйthrow exception(2.х)do { try expression ... instructions } catch exception { instructions } ...(2.х)assert(condition«, description»)
Перлdie exception;eval { instructions }; if ($@) { instructions }?
Ракуtry { instructions CATCH { when exception { instructions } ...}}?
Рубинraise exceptionbegin
  instructions
rescue exception
  instructions
...
«else
  instructions»
«ensure
  instructions»
end
Smalltalkexception raiseinstructionBlock on: exception do: handlerBlockassert: conditionBlock
Общий Лисп(error "exception")
или или
(error
  type
  arguments)


(error (make-condition
  type
  arguments))
(handler-case
  (progn instructions)
  (exception instructions)
  ...)

или [а]
(handler-bind
  (condition
     (lambda
     instructions
     «invoke-restart restart args»))
...)
(assert condition)
или или
(assert condition
  «(place)
  «error»»)


(check-type var type)
Схема ( R 6 RS )(raise exception)(guard (con (condition instructions) ...) instructions)?
ИСЛИСП(error "error-string" objects)
или
(signal-condition condition continuable)
(with-handler
  handler form*
)
?
Паскальraise Exception.Create()try Except on E: exception do begin instructions end; end;?
Визуальный базовыйErr.Raise ERRORNUMBERWith New Try: On Error Resume Next
  OneInstruction
.Catch
: On Error GoTo 0: Select Case .Number
  Case SOME_ERRORNUMBER
     instructions
End Select: End With
'*** Попробуйте класс *** Частный mstrDescription As String Частный mlngNumber As Long      Public Sub Catch () mstrDescription = Err . Описание mlngNumber = Err . Номер End Sub         Открытое свойство Get Number () As Long Number = mlngNumber End Property         Публичное свойство Получить описание () Как строковое описание = mstrDescription Конец свойства         
[12]
Debug.Assert condition
Visual Basic .NETThrow exception
или
Error errorcode
Try
  instructions
Catch« name As exception»« When condition»
  instructions
...
«Finally
  instructions»
End Try
System.Diagnostics.Debug.Assert(condition)
или
System.Diagnostics.Trace.Assert(condition)
КсоджоRaise exceptionTry
  instructions
Catch «exception»
  instructions
...
«Finally
  instructions»
End Try
Питонraise exceptiontry:
Tab ↹instructions
except «exception»:
Tab ↹instructions
...
«else:
Tab ↹instructions»
«finally:
Tab ↹instructions»
assert condition
Фортран
Впередcode THROWxt CATCH ( code or 0 )
OCamlraise exceptiontry expression with pattern -> expression ...assert condition
Фа#try expression with pattern -> expression ...
или
try expression finally expression
Стандартный МЛraise exception «arg»expression handle pattern => expression ...
Хаскелл ( GHC )throw exception
или
throwError expression
catch tryExpression catchExpression
или
catchError tryExpression catchExpression
assert condition expression
КОБОЛRAISE «EXCEPTION» exceptionUSE «AFTER» EXCEPTION OBJECT class-name.
или или или
USE «AFTER» EO class-name.

USE «AFTER» EXCEPTION CONDITION exception-name «FILE file-name».

USE «AFTER» EC exception-name «FILE file-name».
РжавчинаНет [13]assert!(condition)
  • ^a Common Lisp позволяетwith-simple-restart,restart-caseиrestart-bindопределять перезапуски для использования сinvoke-restart. Необработанные условия могут привести к тому, что реализация покажет пользователю меню перезапусков перед тем, как развернуть стек.
  • ^b Неперехваченные исключения распространяются на самое внутреннее динамически охватывающее выполнение. Исключения не распространяются между задачами (если только эти задачи в данный момент не синхронизированы в рандеву).

Другие операторы потока управления

выходной блок (перерыв)продолжатьэтикеткаветвь ( перейти )возвращаемое значение от генератора
Ада [1]exit «loop_name» «when condition»label:goto label
АЛГОЛ 68value exit;...do statements; skip exit; label: statements odlabel:...go to label; ...
goto label; ...
label; ...
yield(value)

( Обратный звонок ) [14]

АПЛ:Leave:Continuelabel:label
или
:GoTo label
С ( С99 )break;continue;label:goto label;
Objective-C
С++ (STL)
Д
С#yield return value;
Яваbreak «label»;continue «label»;
JavaScriptyield value«;»
PHPbreak «levels»;continue «levels»;goto label;yield «key =>» value;
Перлlast «label»;next «label»;
Раку
Идтиbreak «label»continue «label»goto label
Быстрыйbreak «label»continue «label»
Оболочка Bashbreak «levels»continue «levels»
Общий Лисп(return)
или или
(return-from block)

(loop-finish)
(tagbody tag
  ...
  tag
...)
(go tag)
Схема
ИСЛИСП(return-from block)(tagbody tag
  ...
  tag
...)
(go tag)
Паскаль (ИСО)label:[а]goto label;
Паскаль ( FPC )break;continue;
Визуальный базовыйExit blockВ качестве альтернативы, для методов,
Return
label:GoTo label
КсоджоContinue block
Visual Basic .NETYield value
Питонbreakcontinueyield value
РПГ IVLEAVE;ITER;
Сленгbreak;continue;
ФортранEXITCYCLElabel[б]GOTO label
Рубинbreaknext
Windows PowerShellbreak «label»continue
OCaml
Фа#
Стандартный МЛ
Хаскелл ( GHC )
КОБОЛEXIT PERFORMили EXIT PARAGRAPHили EXIT SECTIONилиEXIT.EXIT PERFORM CYCLElabel «SECTION».GO TO label
  • ^a Pascal имеет блоки объявлений. Смотрите функции.
  • Метка ^b должна быть числом от 1 до 99999.

См. рефлексивное программирование для вызова и объявления функций с помощью строк.

вызов функциибазовая/пустая функцияфункция возврата значениятребуемая основная функция
Ада [1]foo «(parameters)»procedure foo «(parameters)» is begin statements end foofunction foo «(parameters)» return type is begin statements end foo
АЛГОЛ 68foo «(parameters)»;proc foo = «(parameters)» void: ( instructions );proc foo = «(parameters)» rettype: ( instructions ...; retvalue );
АПЛ«parameters» foo parametersfoo←{ statements }foo←{ statements }
С ( С99 )foo(«parameters»)void foo(«parameters») { instructions }type foo(«parameters») { instructions ... return value; }«global declarations»
int main(«int argc, char *argv[]») {
  instructions
}
Objective-C
С++ (STL)
Яваpublic static void main(String[] args) { instructions }
или
public static void main(String... args) { instructions }
Дint main(«char[][] args») { instructions}
или или или
int main(«string[] args») { instructions}

void main(«char[][] args») { instructions}

void main(«string[] args») { instructions}
С#То же, что и выше; альтернативно, если только одно утверждение:

void foo(«parameters») => statement;

То же, что и выше; альтернативно, если достаточно просто, чтобы быть выражением:

void foo(«parameters») => expression;

static void Main(«string[] args») method_body
Вместо этого может возвращать int.
(начиная с C# 7.1:) Может возвращать Taskили Task<int>, и если так, то может быть async.
JavaScriptfunction foo(«parameters») { instructions }
или или
var foo = function («parameters») { instructions }

var foo = new Function ("«parameter»", ..., "«last parameter»" "instructions");
function foo(«parameters») { instructions ... return value; }
Идтиfunc foo(«parameters») { instructions }func foo(«parameters») type { instructions ... return value }func main() { instructions }
Быстрыйfunc foo(«parameters») { instructions }func foo(«parameters») -> type { instructions ... return value }
Общий Лисп(foo «parameters»)(defun foo («parameters»)
  instructions)

или
(setf (symbol-function 'symbol)
  function)
(defun foo («parameters»)
  ...
  value
)
Схема(define (foo parameters) instructions)
или
(define foo (lambda (parameters) instructions))
(define (foo parameters) instructions... return_value)
или
(define foo (lambda (parameters) instructions... return_value))
ИСЛИСП(defun foo («parameters»)
  instructions)
(defun foo («parameters»)
  ...
  value
)
Паскальfoo«(parametersprocedure foo«(parameters)»; «forward;»[a]
«label
  label declarations»
«const
  constant declarations»
«type
  type declarations»
«var
  variable declarations»
«local function declarations»

begin
  instructions
end;
function foo«(parameters)»: type; «forward;»[a]
«label
  label declarations»
«const
  constant declarations»
«type
  type declarations»
«var
  variable declarations»
«local function declarations»

begin
  instructions;
  foo := value
end;
program name;
«label
  label declarations»
«const
  constant declarations»
«type
  type declarations»
«var
  variable declarations»
«function declarations»

begin
  instructions
end.
Визуальный базовыйFoo(«parameters»)Sub Foo«(parameters
  instructions
End Sub
Function Foo«(parameters)»« As type»
  instructions
  Foo = value
End Function
Sub Main()
  instructions
End Sub
Visual Basic .NETТо же, что и выше; альтернативно:

Function Foo«(parameters)»« As type»
  instructions
  Return value
End Function

Предложение Asне требуется, если Option Strictвыключено. Вместо Asпредложения можно использовать символ типа.
Если управление выходит из функции без явного указания возвращаемого значения, функция возвращает значение по умолчанию для возвращаемого типа.

Sub Main(««ByVal »args() As String»)
  instructions
End Sub
или
Function Main(««ByVal »args() As String») As Integer
  instructions
End Function
Ксоджо
Питонfoo(«parameters»)def foo(«parameters»):
Tab ↹instructions
def foo(«parameters»):
Tab ↹instructions
Tab ↹return value
Сленгfoo(«parameters» «;qualifiers»)define foo («parameters») { instructions }define foo («parameters») { instructions ... return value; }public define slsh_main () { instructions }
Фортранfoo («arguments»)
CALL sub_foo («arguments»)
[с]
SUBROUTINE sub_foo («arguments»)
  instructions
END SUBROUTINE
[с]
type FUNCTION foo («arguments»)
  instructions
  ...
  foo = value
END FUNCTION
[с]
PROGRAM main
  instructions
END PROGRAM
Вперед«parameters» FOO: FOO « stack effect comment: ( before -- ) »
  instructions
;
: FOO « stack effect comment: ( before -- after ) »
  instructions
;
PHPfoo(«parameters»)function foo(«parameters») { instructions }function foo(«parameters») { instructions ... return value; }
Перлfoo(«parameters»)
или
&foo«(parameters
sub foo { «my (parameters) = @_;» instructions }sub foo { «my (parameters) = @_;» instructions... «return» value; }
Ракуfoo(«parameters»)
или
&foo«(parameters
«multi »sub foo(parameters) { instructions }«our «type» »«multi »sub foo(parameters) { instructions ... «return» value; }
Рубинfoo«(parametersdef foo«(parameters
  instructions
end
def foo«(parameters
  instructions
  «return» value
end
Ржавчинаfoo(«parameters»)fn foo(«parameters») { instructions }fn foo(«parameters») -> type { instructions }fn main() { instructions }
Скалаfoo«(parametersdef foo«(parameters)»«: Unit =» { instructions }def foo«(parameters)»«: type» = { instructions ... «return» value }def main(args: Array[String]) { instructions }
Windows PowerShellfoo «parameters»function foo { instructions };
или
function foo { «param(parametersinstructions }
function foo «(parameters)» { instructions ... return value };
или
function foo { «param(parametersinstructions ... return value }
Оболочка Bashfoo «parameters»function foo {
  instructions
}

или
foo () {
  instructions
}
function foo {
  instructions
  return «exit_code»
}

или
foo () {
  instructions
  return «exit_code»
}
  • параметры
    • $n( $1 , $2 , $3 , ...)
    • $@(все параметры)
    • $#(количество параметров)
    • $0(имя этой функции)
OCamlfoo parameterslet «rec» foo parameters = instructionslet «rec» foo parameters = instructions... return_value
Фа#[<EntryPoint>] let main args = instructions
Стандартный МЛfun foo parameters = ( instructions )fun foo parameters = ( instructions... return_value )
Хаскеллfoo parameters = do
Tab ↹instructions
foo parameters = return_value
или
foo parameters = do
Tab ↹instructions
Tab ↹return value
«main :: IO ()»
main = do instructions
Эйфелеваfoo («parameters»)foo («parameters»)
  require
     preconditions
  do
     instructions
  ensure
     postconditions
  end
foo («parameters»): type
  require
     preconditions
  do
     instructions
     Result := value
  ensure
     postconditions
  end
[б]
CoffeeScriptfoo()foo = ->foo = -> value
foo parametersfoo = () ->foo = ( parameters ) -> value
КОБОЛCALL "foo" «USING parameters»
  «exception-handling»
«
END-CALL»
[г]
«IDENTIFICATION DIVISION.»
PROGRAM-ID. foo.
«other divisions...»
PROCEDURE DIVISION «USING parameters».
  instructions
.
«IDENTIFICATION DIVISION.»
PROGRAM-ID/FUNCTION-ID. foo.
«other divisions...»
DATA DIVISION.
«other sections...»
LINKAGE SECTION.
«parameter definitions...»
variable-to-return definition
«other sections...»
PROCEDURE DIVISION «USING parameters» RETURNING variable-to-return.
  instructions.
«FUNCTION» foo«(«parameters»)»
  • ^a Pascal требует "forward;" для предварительных объявлений .
  • ^b Eiffel позволяет указать корневой класс и функцию приложения.
  • ^c В Фортране параметры функции/подпрограммы называются аргументами (посколькуPARAMETER— ключевое слово языка);CALLключевое слово является обязательным для подпрограмм.
  • ^d Вместо использования"foo"можно использовать строковую переменную, содержащую то же значение.

Where string is a signed decimal number:

string to integerstring to long integerstring to floating pointinteger to stringfloating point to string
Ada[1]Integer'Value (string_expression)Long_Integer'Value (string_expression)Float'Value (string_expression)Integer'Image (integer_expression)Float'Image (float_expression)
ALGOL 68 with general, and then specific formatsWith prior declarations and association of: string buf := "12345678.9012e34 "; file proxy; associate(proxy, buf);
get(proxy, ivar);get(proxy, livar);get(proxy, rvar);put(proxy, ival);put(proxy, rval);
getf(proxy, ($g$, ivar));
or
getf(proxy, ($dddd$, ivar));
getf(proxy, ($g$, livar));
or
getf(proxy, ($8d$, livar));
getf(proxy, ($g$, rvar));
or
getf(proxy, ($8d.4dE2d$, rvar));
putf(proxy, ($g$, ival));
or
putf(proxy, ($4d$, ival));
putf(proxy, ($g(width, places, exp)$, rval));
or
putf(proxy, ($8d.4dE2d$, rval));
APLstring_expressionstring_expressionstring_expressioninteger_expressionfloat_expression
C (C99)integer = atoi(string);long = atol(string);float = atof(string);sprintf(string, "%i", integer);sprintf(string, "%f", float);
Objective-Cinteger = [string intValue];long = [string longLongValue];float = [string doubleValue];string = [NSString stringWithFormat:@"%i", integer];string = [NSString stringWithFormat:@"%f", float];
C++ (STL)«std::»istringstream(string) >> number;«std::»ostringstream o; o << number; string = o.str();
C++11integer = «std::»stoi(string);long = «std::»stol(string);float = «std::»stof(string); double = «std::»stod(string);string = «std::»to_string(number);
C#integer = int.Parse(string);long = long.Parse(string);float = float.Parse(string);double = double.Parse(string);string = number.ToString();
Dinteger = std.conv.to!int(string)long = std.conv.to!long(string)float = std.conv.to!float(string)
double = std.conv.to!double(string)
string = std.conv.to!string(number)
Javainteger = Integer.parseInt(string);long = Long.parseLong(string);float = Float.parseFloat(string);
double = Double.parseDouble(string);
string = Integer.toString(integer);
string = String.valueOf(integer);
string = Float.toString(float);
string = Double.toString(double);
JavaScript[a]integer = parseInt(string);float = parseFloat(string);
float = new Number (string);
float = Number (string);
float = +string;
string = number.toString ();
string = String (number);
string = number+"";
string = `${number}`
Gointeger, error = strconv.Atoi(string)
integer, error = strconv.ParseInt(string, 10, 0)
long, error = strconv.ParseInt(string, 10, 64)float, error = strconv.ParseFloat(string, 64)string = strconv.Itoa(integer)
string = strconv.FormatInt(integer, 10)
string = fmt.Sprint(integer)
string = strconv.FormatFloat(float)
string = fmt.Sprint(float)
Rust[d]string.parse::<i32>()
i32::from_str(string)
string.parse::<i64>()
i64::from_str(string)
string.parse::<f64>()
f64::from_str(string)
integer.to_string()float.to_string()
Common Lisp(setf integer (parse-integer string))(setf float (read-from-string string))(setf string (princ-to-string number))
Scheme(define number (string->number string))(define string (number->string number))
ISLISP(setf integer (convert string <integer>))(setf float (convert string <float>))(setf string (convert number <string>))
Pascalinteger := StrToInt(string);float := StrToFloat(string);string := IntToStr(integer);string := FloatToStr(float);
Visual Basicinteger = CInt(string)long = CLng(string)float = CSng(string)
double = CDbl(string)
string = CStr(number)
Visual Basic .NET
(can use both VB syntax above and .NET methods shown right)
integer = Integer.Parse(string)long = Long.Parse(string)float = Single.Parse(string)
double = Double.Parse(string)
string = number.ToString()
Xojointeger = Val(string)long = Val(string)double = Val(string)
double = CDbl(string)
string = CStr(number)
or
string = Str(number)
Pythoninteger = int(string)long = long(string)float = float(string)string = str(number)
S-Langinteger = atoi(string);long = atol(string);float = atof(string);string = string(number);
FortranREAD(string,format) numberWRITE(string,format) number
PHPinteger = intval(string);
or
integer = (int)string;
float = floatval(string);
float = (float)string;
string = "$number";
or
string = strval(number);
or
string = (string)number;
Perl[b]number = 0 + string;string = "number";
Rakunumber = +string;string = ~number;
Rubyinteger = string.to_i
or
integer = Integer(string)
float = string.to_f
float = Float(string)
string = number.to_s
Scalainteger = string.toIntlong = string.toLongfloat = string.toFloatdouble = string.toDoublestring = number.toString
Smalltalkinteger := Integer readFrom: stringfloat := Float readFrom: stringstring := number asString
Windows PowerShellinteger = [int]stringlong = [long]stringfloat = [float]stringstring = [string]number;
or
string = "number";
or
string = (number).ToString()
OCamllet integer = int_of_string stringlet float = float_of_string stringlet string = string_of_int integerlet string = string_of_float float
F#let integer = int stringlet integer = int64 stringlet float = float stringlet string = string number
Standard MLval integer = Int.fromString stringval float = Real.fromString stringval string = Int.toString integerval string = Real.toString float
Haskell (GHC)number = read stringstring = show number
COBOLMOVE «FUNCTION» NUMVAL(string)[c] TO numberMOVE number TO numeric-edited
  • ^a JavaScript only uses floating point numbers so there are some technicalities.[7]
  • ^b Perl doesn't have separate types. Strings and numbers are interchangeable.
  • ^c NUMVAL-C or NUMVAL-F may be used instead of NUMVAL.
  • ^ str::parse is available to convert any type that has an implementation of the std::str::FromStr trait. Both str::parse and FromStr::from_str return a Result that contains the specified type if there is no error. The turbofish (::<_>) on str::parse can be omitted if the type can be inferred from context.
read fromwrite to
stdinstdoutstderr
Ada[1]Get (x)Put (x)Put (Standard_Error, x)
ALGOL 68readf(($format$, x));
or
getf(stand in, ($format$, x));
printf(($format$, x));
or
putf(stand out, ($format$, x));
putf(stand error, ($format$, x));[a]
APLx←⎕←x⍞←x
C (C99)scanf(format, &x);
or
fscanf(stdin, format, &x);[b]
printf(format, x);
or
fprintf(stdout, format, x);[c]
fprintf(stderr, format, x);[d]
Objective-Cdata = [[NSFileHandle fileHandleWithStandardInput] readDataToEndOfFile];[[NSFileHandle fileHandleWithStandardOutput] writeData:data];[[NSFileHandle fileHandleWithStandardError] writeData:data];
C++«std::»cin >> x;
or
«std::»getline(«std::»cin, str);
«std::»cout << x;«std::»cerr << x;
or
«std::»clog << x;
C#x = Console.Read();
or
x = Console.ReadLine();
Console.Write(«format, »x);
or
Console.WriteLine(«format, »x);
Console.Error.Write(«format, »x);
or
Console.Error.WriteLine(«format, »x);
Dx = std.stdio.readln()std.stdio.write(x)
or
std.stdio.writeln(x)
or
std.stdio.writef(format, x)
or
std.stdio.writefln(format, x)
stderr.write(x)
or
stderr.writeln(x)
or
std.stdio.writef(stderr, format, x)
or
std.stdio.writefln(stderr, format, x)
Javax = System.in.read();
or
x = new Scanner(System.in).nextInt();
or
x = new Scanner(System.in).nextLine();
System.out.print(x);
or
System.out.printf(format, x);
or
System.out.println(x);
System.err.print(x);
or
System.err.printf(format, x);
or
System.err.println(x);
Gofmt.Scan(&x)
or
fmt.Scanf(format, &x)
or
x = bufio.NewReader(os.Stdin).ReadString('\n')
fmt.Println(x)
or
fmt.Printf(format, x)
fmt.Fprintln(os.Stderr, x)
or
fmt.Fprintf(os.Stderr, format, x)
Swiftx = readLine() (2.x)print(x) (2.x)
println(x) (1.x)
JavaScript
Web Browser implementation
document.write(x)
JavaScript
Active Server Pages
Response.Write(x)
JavaScript
Windows Script Host
x = WScript.StdIn.Read(chars)
or
x = WScript.StdIn.ReadLine()
WScript.Echo(x)
or
WScript.StdOut.Write(x)
or
WScript.StdOut.WriteLine(x)
WScript.StdErr.Write(x)
or
WScript.StdErr.WriteLine(x)
Common Lisp(setf x (read-line))(princ x)
or
(format t format x)
(princ x *error-output*)
or
(format *error-output* format x)
Scheme (R6RS)(define x (read-line))(display x)
or
(format #t format x)
(display x (current-error-port))
or
(format (current-error-port) format x)
ISLISP(setf x (read-line))(format (standard-output) format x)(format (error-output) format x)
Pascalread(x);
or
readln(x);
write(x);
or
writeln(x);
write(stderr, x);
or
writeln(stderr, x);
Visual BasicInput« promptxPrint x
or
? x
Visual Basic .NETx = Console.Read()
or
x = Console.ReadLine()
Console.Write(«formatx)
or
Console.WriteLine(«format, »x)
Console.Error.Write(«format, »x)
or
Console.Error.WriteLine(«format, »x)
Xojox = StandardInputStream.Read()
or
x = StandardInputStreame.ReadLine()
StandardOutputStream.Write(x)
or
StandardOutputStream.WriteLine(x)
StdErr.Write(x)
or
StdErr.WriteLine(x)
Python 2.xx = raw_input(«prompt»)print x
or
sys.stdout.write(x)
print >> sys.stderr, x
or
sys.stderr.write(x)
Python 3.xx = input(«prompt»)print(, end=""»)print(, end=""», file=sys.stderr)
S-Langfgets (&x, stdin)fputs (x, stdout)fputs (x, stderr)
FortranREAD(*,format) variable names
or
READ(INPUT_UNIT,format) variable names[e]
WRITE(*,format) expressions
or
WRITE(OUTPUT_UNIT,format) expressions[e]
WRITE(ERROR_UNIT,format) expressions[e]
Forthbuffer length ACCEPT ( # chars read )
KEY ( char )
buffer length TYPE
char EMIT
PHP$x = fgets(STDIN);
or
$x = fscanf(STDIN, format);
print x;
or
echo x;
or
printf(format, x);
fprintf(STDERR, format, x);
Perl$x = <>;
or
$x = <STDIN>;
print x;
or
printf format, x;
print STDERR x;
or
printf STDERR format, x;
Raku$x = $*IN.get;x.print
or
x.say
x.note
or
$*ERR.print(x)
or
$*ERR.say(x)
Rubyx = getsputs x
or
printf(format, x)
$stderr.puts(x)
or
$stderr.printf(format, x)
Windows PowerShell$x = Read-Host«« -Prompt» text»;
or
$x = [Console]::Read();
or
$x = [Console]::ReadLine()
x;
or
Write-Output x;
or
echo x
Write-Error x
OCamllet x = read_int ()
or
let str = read_line ()
or
Scanf.scanf format (fun x ... -> ...)
print_int x
or
print_endline str
or
Printf.printf format x ...
prerr_int x
or
prerr_endline str
or
Printf.eprintf format x ...
F#let x = System.Console.ReadLine()printf format x ...
or
printfn format x ...
eprintf format x ...
or
eprintfn format x ...
Standard MLval str = TextIO.inputLIne TextIO.stdInprint strTextIO.output (TextIO.stdErr, str)
Haskell (GHC)x <- readLn
or
str <- getLine
print x
or
putStrLn str
hPrint stderr x
or
hPutStrLn stderr str
COBOLACCEPT xDISPLAY x
  • ^a ALGOL 68 additionally as the "unformatted" transput routines: read, write, get, and put.
  • ^b gets(x) and fgets(x, length, stdin) read unformatted text from stdin. Use of gets is not recommended.
  • ^c puts(x) and fputs(x, stdout) write unformatted text to stdout.
  • ^d fputs(x, stderr) writes unformatted text to stderr
  • ^e INPUT_UNIT, OUTPUT_UNIT, ERROR_UNIT are defined in the ISO_FORTRAN_ENV module.[15]
Argument valuesArgument countsProgram name / Script name
Ada[1]Argument (n)Argument_CountCommand_Name
C (C99)argv[n]argcfirst argument
Objective-C
C++
C#args[n]args.LengthAssembly.GetEntryAssembly().Location;
Javaargs.length
Dfirst argument
JavaScript
Windows Script Host implementation
WScript.Arguments(n)WScript.Arguments.lengthWScript.ScriptName
or
WScript.ScriptFullName
Goos.Args[n]len(os.Args)first argument
Rust[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()
SwiftProcess.arguments[n] or
Process.unsafeArgv[n]
Process.arguments.count or
Process.argc
first argument
Common Lisp???
Scheme (R6RS)(list-ref (command-line) n)(length (command-line))first argument
ISLISP
PascalParamStr(n)ParamCountfirst argument
Visual BasicCommand[b]App.Path
Visual Basic .NETCmdArgs(n)CmdArgs.Length[Assembly].GetEntryAssembly().Location
XojoSystem.CommandLine(string parsing)Application.ExecutableFile.Name
Pythonsys.argv[n]len(sys.argv)first argument
S-Lang__argv[n]__argcfirst argument
FortranDO i = 1,argc
  CALL GET_COMMAND_ARGUMENT (i,argv(i))
ENDDO
argc = COMMAND_ARGUMENT_COUNT ()CALL GET_COMMAND_ARGUMENT (0,progname)
PHP$argv[n]$argcfirst argument
Bash shell$n ($1, $2, $3, ...)
$@ (all arguments)
$#$0
Perl$ARGV[n]scalar(@ARGV)$0
Raku@*ARGS[n]@*ARGS.elems$PROGRAM_NAME
RubyARGV[n]ARGV.size$0
Windows PowerShell$args[n]$args.Length$MyInvocation.MyCommand.Name
OCamlSys.argv.(n)Array.length Sys.argvfirst argument
F#args.[n]args.LengthAssembly.GetEntryAssembly().Location
Standard MLList.nth (CommandLine.arguments (), n)length (CommandLine.arguments ())CommandLine.name ()
Haskell (GHC)do { args <- System.getArgs; return length args !! n}do { args <- System.getArgs; return length args}System.getProgName
COBOL[c]
  • ^a In Rust, std::env::args and std::env::args_os return iterators, std::env::Args and std::env::ArgsOs respectively. Args converts each argument to a String and it panics if it reaches an argument that cannot be converted to UTF-8. ArgsOs returns a non-lossy representation of the raw strings from the operating system (std::ffi::OsString), which can be invalid UTF-8.
  • ^b In Visual Basic, command-line arguments are not separated. Separating them requires a split function Split(string).
  • ^c The COBOL standard includes no means to access command-line arguments, but common compiler extensions to access them include defining parameters for the main program or using ACCEPT statements.

Execution of commands

Shell commandExecute programReplace current program with new executed program
Ada[1]Not part of the language standard. Commonly done by compiler provided packages or by interfacing to C or POSIX.[16]
Csystem("command");execl(path, args);
or
execv(path, arglist);
C++
Objective-C[NSTask launchedTaskWithLaunchPath:(NSString *)path arguments:(NSArray *)arguments];
C#System.Diagnostics.Process.Start(path, argstring);
F#
Goexec.Run(path, argv, envv, dir, exec.DevNull, exec.DevNull, exec.DevNull)os.Exec(path, argv, envv)
Visual BasicInteraction.Shell(command «, WindowStyle» «, isWaitOnReturn»)
Visual Basic .NETMicrosoft.VisualBasic.Interaction.Shell(command «, WindowStyle» «, isWaitOnReturn»)System.Diagnostics.Process.Start(path, argstring)
XojoShell.Execute(command «, Parameters»)FolderItem.Launch(parameters, activate)
Dstd.process.system("command");std.process.execv(path, arglist);
JavaRuntime.exec(command);
or
new ProcessBuilder(command).start();
JavaScript
Windows Script Host implementation
WScript.CreateObject ("WScript.Shell").Run(command «, WindowStyle» «, isWaitOnReturn»);WshShell.Exec(command)
Common Lisp(uiop:run-program command)
Scheme(system command)
ISLISP
Pascalsystem(command);
OCamlSys.command command, Unix.open_process_full command env (stdout, stdin, stderr),...Unix.create_process prog args new_stdin new_stdout new_stderr, ...Unix.execv prog args
or
Unix.execve prog args env
Standard MLOS.Process.system commandUnix.execute (path, args)Posix.Process.exec (path, args)
Haskell (GHC)System.system commandSystem.Process.runProcess path args ...Posix.Process.executeFile path True args ...
Perlsystem(command)
or
$output = `command`
or
$output = qx(command)
exec(path, args)
Rubysystem(command)
or
output = `command`
exec(path, args)
PHPsystem(command)
or
$output = `command`
or
exec(command)
or
passthru(command)
Pythonos.system(command)
or
subprocess.Popen(command)
subprocess.call(["program", "arg1", "arg2", ...])os.execv(path, args)
S-Langsystem(command)
FortranCALL EXECUTE_COMMAND_LINE (COMMAND «, WAIT» «, EXITSTAT» «, CMDSTAT» «, CMDMSG»)[a]
Windows PowerShell[Diagnostics.Process]::Start(command)«Invoke-Item »program arg1 arg2 ...
Bash shelloutput=`command`
or
output=$(command)
program arg1 arg2 ...

^a Fortran 2008 or newer.[17]

References

  1. ^ a b c d e f g h i j k l m n o p Ada Reference Manual – Language and Standard Libraries; ISO/IEC 8652:201x (E), "Reference Manual" (PDF). Archived from the original (PDF) on 2011-04-27. Retrieved 2013-07-19.
  2. ^ "Common Lisp HyperSpec (TM)". lispworks.com. Retrieved 30 January 2017.
  3. ^ "www.islisp.info: Specification". islisp.info. Archived from the original on 22 January 2016. Retrieved 30 January 2017.
  4. ^ a b "selected_int_kind in Fortran Wiki". fortranwiki.org. Retrieved 30 January 2017.
  5. ^ "Erlang — Types and Function Specifications". erlang.org. Retrieved 30 January 2017.
  6. ^ "Erlang — Advanced". erlang.org. Retrieved 30 January 2017.
  7. ^ a b 8.5 The Number Type
  8. ^ a b "selected_real_kind in Fortran Wiki". fortranwiki.org. Retrieved 30 January 2017.
  9. ^ "Библиотека GNU C: Комплексные числа". gnu.org . Получено 30 января 2017 г. .
  10. ^ "Grammar vb". Спецификация языка Visual Basic . 2016-06-17. Архивировано из оригинала 2019-08-29 . Получено 2019-08-29 .
  11. ^ "for...of". mozilla.org . Получено 30 января 2017 г. .
  12. ^ "Try-Catch for VB". google.com . Архивировано из оригинала 16 апреля 2016 года . Получено 30 января 2017 года .
  13. ^ Клабник, Стив; Николс, Кэрол. «Обработка ошибок». Язык программирования Rust.
  14. ^ "Prime decay – Rosetta Code". rosettacode.org . Получено 30 января 2017 г. .
  15. ^ "iso_fortran_env в Fortran Wiki". fortranwiki.org . Получено 30 января 2017 г. .
  16. ^ "Выполнить системную команду – Rosetta Code". rosettacode.org . Получено 30 января 2017 г. .
  17. ^ "EXECUTE_COMMAND_LINE – Компилятор GNU Fortran". gnu.org . Получено 30 января 2017 г. .
Retrieved from "https://en.wikipedia.org/w/index.php?title=Comparison_of_programming_languages_(basic_instructions)&oldid=1236325508"