Синтаксис языков программирования таблица + видео обзор

Таблица «Синтаксис изучаемых языков программирования»

каждая с новой строки

каждая с новой строки, в конце каждой команды ставится символ «;»

переменные объявляются в теле алгоритма (после нач )

переменные объявляются до тела алгоритма (до begin )

переменные объявляются внутри главной функции main ()

Доступны из библиотеки using namespace std

вывод «целое число», а, нс

cout целое число endl;

Деление (для вещественных чисел)

Деление (для целых чисел)

a /10 (целая часть от деления) a %10 (остаток от деления)

Целая часть от числа (вещ)

int ( x ) ( frac ( x ) – дробная часть числа)

else begin действие2.1 > действие 2.2 >

действие2 ; > while ( условие );

цел а
нц для а от 0 до 9
… тело цикла
кц

for i := значение1 > to конечное_значение > do ;

for i := значение1 > to конечное_значение > do begin ;

for i := значение2 > downto конечное_значение > do ;

for ( действие до начала цикла ;

условие продолжения цикла ;

действия в конце каждой итерации цикла ) <

Одномерные массивы (объявление)

m: array [ 1..100 ] of integer;

Одномерные массивы (обращение к элементу)

Двумерные массивы (объявление)

m= array [1..10, 1..100] of integer;

Двумерные массивы (обращение к элементу)

Синтаксис языков программирования таблица

Синтаксис языков программирования таблица

Синтаксис языков программирования таблица

Синтаксис языков программирования таблица

Синтаксис языков программирования таблица

Синтаксис языков программирования таблица

Данный материал будет полезен тем, кто испытывает трудности при переходе с одного языка программирования на другой. Приведённые языки программирования:

Здесь основные структурные элементы языков отражены в таблице, удобной для запоминания по аналогии.

Рекомендую использовать её в качестве вспомогательного пособия при изучении содержательной линии «Алгоритмизация и программирование» в основной школе.

Номер материала: ДБ-846546

Не нашли то что искали?

Вам будут интересны эти курсы:

Оставьте свой комментарий

Подарочные сертификаты

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

Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение администрации может не совпадать с точкой зрения авторов.

Источник

infoegehelp.ru

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

В таблице рассмотрен синтаксис языков программирования:

Скачать дистрибутивы можно здесь.

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

При наведении мыши на строки таблицы, выделенные фиолетовым цветом, отображается пример реализации в программе.

ПаскальАлгоритмическийБейсикСи
Комментарий
<текст>
(*текст*)
|строка текста‘строка текста
REM строка текста
//строка текста
/*текст*/
Структура программы
заголовок
объяв конст
объяв типов
объяв перем
описание функц
begin
тело прогр
end.
алг
нач
объяв перем
тело прогр
кон
описание функц
объяв функ
тело прогр
END
описание функц
подкл_библиот
объяв конст
объяв типов
объяв функц
void main() <
тело прогр
>
описание функц
Объявление переменных различных типов данных
целое(2 байта)перем: integer;цел перемDIM перем AS INTEGERint перем;
целое(4 байта)перем:longint;цел перемDIM перем AS LONGlong перем;
вещ (4 байта)перем:single;

вещ (6 байт)перем:real;
вещ (8 байт)перем:double;//-//DIM перем AS DOUBLEdouble перем;
символперем: char;сим перемDIM перем AS STRINGchar перем;
строкаперем: string;лит перем//-//
логическоеперем: boolean;лог перем
массив целыхмасс:array[гран..гран] of
integer;
целтаб масс[гран:гран]DIM масс() AS INTEGERint масс[кол_элем];
массив символовмасс:array[гран..гран] of
char;
симтаб масс[гран:гран]DIM масс() AS STRINGchar масс[кол_элем+1];
массив строкмасс:array[гран..гран] of
string;
литтаб масс[гран:гран]//-//
объявление константысonst имя_конст=знач;CONST имя_конст=знач #define имя_конст знач
интервалперем:гран..гран
создание нового типа данныхtype имя_типа=опис_типа;

нц для от до шаг
тело цикла
кц
FOR
тело цикла
NEXT
for() <
тело цикла
>
цикл «пока»while условие do
begin
тело цикла
end;
нц пока условие
тело цикла
кц
WHILE условие
тело цикла
WEND
while(условие) <
тело цикла
>
цикл «до тех пор»repeat
тело цикла
until(условие)
нц
тело цикла
кц при условие
DO WHILE условие
тело цикла
LOOP
do <
тело цикла
>while(условие);
Описание и объявление функции
определениеFunction имя_функц (имена_аргументов:тип):
тип;
begin
тело функц
end;
алг тип имя_функц (тип имена_аргументов)
нач
тело функц
кон
FUNCTION имя_функц (имена_аргументов)
тело функц
END FUNCTION
тип имя_функц (тип имена_аргументов)
<
тело функц
>
объявлениеDECLARE FUNCTION имя_функ(аргумент)тип имя_функц (тип)

Перейти к разбору задач C4 из демо ЕГЭ (программы написаны в этих средах программирования):

Источник

В этом сравнении языков программирования сравниваются особенности синтаксиса (формата) языков для более чем 50 языков программирования.

СОДЕРЖАНИЕ

Выражения

Выражения языка программирования в целом можно разделить на четыре синтаксических структуры:

Заявления

Операторы языка программирования обычно имеют соглашения для:

Разделитель операторов используется для разграничения границ между двумя отдельными операторами. Знак конца оператора используется для обозначения конца отдельного оператора. Языки, которые интерпретируют конец строки как конец оператора, называются «строчно-ориентированными» языками.

Продолжение линии

Продолжение строки обычно выполняется как часть лексического анализа : новая строка обычно приводит к добавлению токена в поток токенов, если не обнаружено продолжение строки.

Библиотеки

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

Блоки

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

Комментарии

Комментарии можно классифицировать по:

Встроенные комментарии

Заблокировать комментарии

)

СимволЯзыки
comment

+/

D (может быть вложенным)
/#

#/

Кобра (может быть вложенной)
Raku (символы в скобках могут быть (), <>, <>, [], любые символы Unicode с зеркальным отображением BiDi или символы Unicode со свойствами Ps / Pe / Pi / Pf)
=begin

->

Haskell (может быть вложенным)
(*

>

Delphi, Object Pascal, Паскаль, Красный
<#

—>>

Рули (не могут быть вложенными, но могут содержать << и >> )
|#

%>

MATLAB (символы должны быть в отдельной строке)
#|

Уникальные варианты

Сравнение комментариев

Существует множество стилей синтаксиса для объявления комментариев в исходном коде. BlockComment Курсив здесь используется для обозначения стиля блочного комментария. InlineComment Курсив здесь используется для обозначения стиля встроенного комментария.

*InlineComment (not all dialects)
!InlineComment (not all dialects)
REM InlineComment

Кобра# InlineComment/# BlockComment #/ (гнездовой)
D// InlineComment
/// Documentation InlineComment ( ddoc комментарии)
/* BlockComment */
/** Documentation BlockComment */ ( ddoc комментарии)

/+ BlockComment +/ (вложенный) (вложенный, комментарии в формате ddoc )
/++ Documentation BlockComment +/

/** BlockComment */ ( Комментарий к документации Javadoc )

__END__
Comments after end of code

( Строка документации, если первая строка модуля, класса, метода или функции)

р# InlineComment
Раку# InlineComment#`<
BlockComment
>

=comment
This comment paragraph goes until the next POD directive
or the first blank line.

красный; InlineComment< BlockComment >
Ржавчина// InlineComment

/// InlineComment («Внешний» комментарий rustdoc) («Внутренний» комментарий rustdoc)
//! InlineComment

/* BlockComment */ (гнездовой)

/** BlockComment */ («Внешний» комментарий rustdoc) («Внутренний» комментарий rustdoc)
/*! BlockComment */

»’ InlineComment (Комментарий к документации XML)
Rem InlineComment

Источник

Учим языки программирования как иностранные

Синтаксис языков программирования таблица

Вы задумывались, почему языки программирования так называются? Ведь поговорить на них невозможно. Они должны преобразовать задачу, поставленную человеком, в четкий алгоритм. Примерно так же работают дорожные знаки: они указывают водителю, где можно проехать, а где нельзя, нужно ли снизить скорость или можно разогнаться, разрешена ли парковка. Многие знаки прямо предписывают действия. Но никто не называет систему дорожных знаков языком.

Синтаксис языков программирования таблица

Сходства и различия

На первый взгляд, между компьютерными и человеческими языками нет ничего общего. Изучение иностранных языков — гуманитарная область, а программирование — техническая специальность. Да и служат эти языки разным целям.

Самое существенное отличие между человеческими и компьютерными языками заключается в более высокой степени абстракции языков программирования. Они имеют дело не с объектами физического мира, а с отвлеченными понятиями, каждое из которых нужно сначала понять. Даже такой простой термин, как переменная, надо объяснять. А есть и более сложные — например, инкапсуляция и полиморфизм.

Иностранный язык всегда немного напоминает родной. Все люди живут в одном материальном мире. Часть слов мы можем усвоить сразу: table — стол, а cat — кошка. Некоторые более абстрактные вещи тоже понятны — как hello или good morning.

Встречаются и более сложные конструкции, смысл которых не очевиден — вряд ли новичок сумеет с ходу разобраться, почему how do you do означает «как дела?», а take care — «береги себя». В этих выражениях перевод отдельных слов мало что дает для понимания смысла. Подобные словосочетания лучше запоминать целиком, не вникая в их внутреннюю логику.

В языках программирования тоже есть элементы, которые понятны сразу — как операторы сложения (+) или умножения (*). Но существуют и конструкции, которые на первых порах приходится заучивать. Например, тег, открывающий код на JavaScript:

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

Если приглядеться, можно найти еще больше сходств между человеческими и компьютерными языками. И те и другие имеют структуру и принципы, по которым работают, — иначе говоря, семантические и синтаксические правила. А еще у каждого языка есть словарный состав.

Синтаксис языков программирования таблица

Словарный запас

Усвоить лексику иностранного языка непросто. Слова могут принципиально отличаться по звучанию от аналогов в вашем родном языке, и зачастую их приходится просто зазубривать. При этом для общения активный словарь должен включать порядка 400 слов — и этого хватит только для разговора на повседневные темы.

С языками программирования попроще. Выучить надо наименования ключевых слов, операторов и идентификаторов. Даже в самом богатом языке программирования их используется ограниченное количество.

Кроме того, большинство ключевых слов (if, void, while, for или print) взяты из английского языка. И если он вам знаком, будет просто запомнить их и увязать с новыми значениями.

Синтаксис

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

В английском вопросительные предложения отличаются от повествовательных обратным порядком слов: «Mark will go to the park» и «Will Mark go to the park?». Только корректная конструкция даст вашему собеседнику понять, сообщаете вы ему новую информацию или ждете ответа от него.

Чтобы компьютер понял, чего вы от него хотите, надо знать синтаксис языка программирования. Неправильные синтаксические конструкции приводят к ошибкам при компиляции (если язык компилируемый) или при исполнении (если интерпретируемый). А еще — к неправильным результатам вычислений или ошибочным действиям. Простой и универсальный пример — скобки в математических расчетах, которые повышают приоритет части выражения.

result := a + (b * 2) / c

result := (a + (b * 2)) / c

Эти выражения дают разные результаты при одинаковых значениях переменных a, b и c.

Усвоить синтаксис — одна из самых сложных задач при изучении языка программирования с нуля. Вероятно, большую часть времени, затраченного на создание программы, вы будете исправлять ошибки компилятора, вызванные некорректным синтаксисом.

В человеческих языках много устоявшихся за века иррациональных конструкций. А компьютерные изначально проектировались так, чтобы исключить такие сложности. Ни в одном популярном ЯП вы не встретите ситуации, когда два ключевых слова используются в одинаковых ситуациях по разным синтаксическим правилам. Если в конце инструкции следует ставить точку с запятой, то так же надо поступать во всех инструкциях и во всех случаях. Каким бы сложным ни был программный код, какие бы редкие и особенные ключевые слова ни использовались в нем — завершать инструкцию будет всегда точка с запятой, а не другие символы.

Семантика

Если синтаксис отвечает за техническую корректность конструкций языка, то семантика — за смысловое наполнение. В человеческом языке это сложная область: у одного слова может быть много прямых, переносных и контекстуальных значений. А еще есть фразеологизмы с особой семантикой. Кроме того, человеческие языки тесно связаны с культурой — заучить слова и правила недостаточно, нужно знакомиться с историей и традициями.

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

Синтаксис языков программирования таблица

Главное — видеть цель!

Когда изучают иностранный язык, преследуют конкретную цель: общаться с зарубежными партнерами, подготовиться к путешествию, прочитать Шекспира и Гете в оригиналах.

Цель нужна и при обучении программированию: найти работу в IT, создать гениальное приложение или разработать программу для себя. Цель — это стрелка компаса, которая поможет ориентироваться в программировании.

Первый язык — самый сложный

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

Сосредоточьтесь на изучении одного языка. Вы не сможете освоить сразу все — и даже пять самых популярных разом не осилите. Это не только трудно, но и непрактично. Вы ведь не стали бы одновременно изучать японский, немецкий и зулусский, не так ли? Так же нет смысла пытаться охватить сразу Python, Swift, Java и C++.

Выбирайте один и последовательно изучайте его. У всех языков общие принципы — когда вы их усвоите, новые языки будут даваться проще. Потребуется только знакомиться с новым «словарем» и синтаксисом.

Elementary. Hello, world!

Знакомясь с иностранным языком, вы прежде всего узнаете, как сказать «Привет». И чаще всего в первую очередь при изучении ЯП разбирают, как вывести на экран приветствие «Hello, world!».

Затем вы переходите к изучению начального словаря и базовых правил грамматики. В программировании аналогом будут простейшие понятия — переменные и их типы, методы, операторы и ключевые слова. Это кирпичики, из которых строится любая программа.

На этом этапе все совершают ошибки — и учатся на них. Важно экспериментировать с языком, «играть» с кодом, добавлять и убирать конструкции и элементы. Не бойтесь сломать код! Ошибки и сбои анализируйте и пробуйте исправить. Все это поможет лучше разобраться, как язык работает, и развить навыки в кодировании.

Intermediate

Достигнув среднего уровня, уже можно более свободно использовать иностранный язык — читать книги или смотреть фильмы, разговаривать с носителями языка.

Intermediate в программировании — это когда вы хорошо понимаете принципы, по которым язык функционирует, усвоили все необходимые понятия и можете ими свободно оперировать. И, конечно, уже способны написать программу. Вероятно, к этому времени вы напишете уже сотни строк работающего кода!

Но чтобы стать хорошим разработчиком, нужно освоить язык гораздо глубже. У вас уже есть фундамент знаний и представление о структуре языка. А главное — есть понимание, что именно нужно изучать. Ошибки все еще случаются, но решения вы ищете уже увереннее.

Наступает момент, когда знаний уже хватает, чтобы разрабатывать несложные проекты, но все еще недостаточно, чтобы взяться за что-то по-настоящему значимое. Можно почувствовать, что, несмотря на успехи, до профессионализма еще далеко.

Не отчаивайтесь! Помните, что это нормальная часть обучения. В начале пути вы быстро шли вперед — потому что постигали самые простые вещи. Чтобы приобрести более сложные навыки, требуется больше времени, и прогресс будет уже не таким быстрым. Запаситесь терпением. Если чувствуете, что топчетесь на месте, — дайте себе немного отдохнуть, чтобы не перегореть. Решайте задачи на своем нынешнем уровне, общайтесь с коллегами. А когда почувствуете силы — продолжайте совершенствовать знания и навыки!

Advanced

На этом уровне вы сможете свободно разговаривать с носителями языка. Понимание, что вы способны выразить любую мысль и чувство на иностранном языке, дает невероятное ощущение свободы общения.

С языками программирования — похожая история. Вы будете чувствовать себя уверенно с новыми проектами и задачами. Столкнувшись с очередной проблемой, не впадете в ступор и не броситесь судорожно искать решение. Опыт поможет сразу нащупать оптимальный путь. И даже в особенно трудных ситуациях вы будете точно знать, где искать помощь и совет, а все сложности будете воспринимать как приключение.

Но время почивать на лаврах в программировании не наступает никогда. Это область, которая развивается и меняется быстро. Стоит остановиться — и с трудом завоеванное мастерство начнет угасать. Самодовольный разработчик недолго остается востребованным специалистом.

Хорошая новость: когда вы достигнете этой ступени, уже сможете самостоятельно освоить практически любой язык программирования. И это невероятно круто. Потому что с иностранными языками это не работает: даже если вы свободно разговариваете на немецком, французском и суахили, для изучения китайского вам снова придется начинать с азов. А программисту потребуется только освоить немного понятий нового языка, запомнить его ключевые слова, бросить взгляд на синтаксические правила и несколько дней попрактиковаться в новой среде разработки.

Синтаксис языков программирования таблица

Готовимся к первым шагам

Для тех, кто в начале пути, мы сформулировали несколько простых советов.

Не пытайтесь охватить сразу все

Нельзя заговорить на иностранном языке за неделю, как и написать серьезную программу, едва познакомившись с языком программирования. Исключение — опытные разработчики, для которых любой язык — просто еще одна форма, в которую без труда укладываются давно изученные понятия.

Начните с простых понятий и конструкций. Освойте базовый «словарь» — важнейшие ключевые слова языка. Изучите принципы синтаксиса. И двигайтесь дальше!

Возьмите учебник, а не документацию

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

Начать изучение ЯП с документации — как взять толковый словарь и пытаться по нему освоить иностранный язык. Да, такой словарь может давать исчерпывающие описания и даже примеры применения слов, но он изначально написан на чужом для вас языке.

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

Найдите наставника

Есть начинающие программисты, которые предпочитают осваивать язык своими силами. Мы снимаем шляпу перед этими отважными людьми, не боящимися трудностей. Но дело пойдет значительно быстрее, если рядом будет человек, который сумеет объяснить сложные понятия, покажет пример, поможет найти и исправить ошибки.

Погружайтесь в языковую среду

При изучении иностранного языка полезно общаться с его носителями. В идеале — погрузиться в языковую среду, отправившись за границу. Теоретические знания должны подкрепляться постоянной и интенсивной практикой.

В случае с языком программирования вы не можете пообщаться с «носителем» — машина вряд ли поддержит беседу. Но погружение в языковую среду возможно. Для этого нужно как можно больше практиковаться, писать и совершенствовать код. Беглость и уверенность в использовании языка достигаются только постоянной практикой.

Не бойтесь неудач

Никто не рождается со знанием языка — ни компьютерного, ни иностранного, ни даже родного. Поэтому нужно помнить, что на первых порах ошибки не просто возможны — они неизбежны.

Не опускайте руки: продолжайте трудиться, анализируйте промахи. Не бойтесь попросить помощи у других программистов — своего наставника, коллег или на форуме. Каждый из нынешних профессионалов когда-то был на вашем месте.

Практика, терпение, упорство и опыт — отличная формула для изучения языков программирования!

Синтаксис языков программирования таблица

Вы задумывались, почему языки программирования так называются? Ведь поговорить на них невозможно. Они должны преобразовать задачу, поставленную человеком, в четкий алгоритм. Примерно так же работают дорожные знаки: они указывают водителю, где можно проехать, а где нельзя, нужно ли снизить скорость или можно разогнаться, разрешена ли парковка. Многие знаки прямо предписывают действия. Но никто не называет систему дорожных знаков языком.

Синтаксис языков программирования таблица

Сходства и различия

На первый взгляд, между компьютерными и человеческими языками нет ничего общего. Изучение иностранных языков — гуманитарная область, а программирование — техническая специальность. Да и служат эти языки разным целям.

Самое существенное отличие между человеческими и компьютерными языками заключается в более высокой степени абстракции языков программирования. Они имеют дело не с объектами физического мира, а с отвлеченными понятиями, каждое из которых нужно сначала понять. Даже такой простой термин, как переменная, надо объяснять. А есть и более сложные — например, инкапсуляция и полиморфизм.

Иностранный язык всегда немного напоминает родной. Все люди живут в одном материальном мире. Часть слов мы можем усвоить сразу: table — стол, а cat — кошка. Некоторые более абстрактные вещи тоже понятны — как hello или good morning.

Встречаются и более сложные конструкции, смысл которых не очевиден — вряд ли новичок сумеет с ходу разобраться, почему how do you do означает «как дела?», а take care — «береги себя». В этих выражениях перевод отдельных слов мало что дает для понимания смысла. Подобные словосочетания лучше запоминать целиком, не вникая в их внутреннюю логику.

В языках программирования тоже есть элементы, которые понятны сразу — как операторы сложения (+) или умножения (*). Но существуют и конструкции, которые на первых порах приходится заучивать. Например, тег, открывающий код на JavaScript:

Источник

Видео

Основы программирования. Синтаксис и семантика

Основы программирования. Синтаксис и семантика

Синтаксис языка программирования Python.

Синтаксис языка программирования Python.

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

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

Языки программирования, синтаксис, семантика, прагматика

Языки программирования, синтаксис, семантика, прагматика

Сравнение языков программирования: C, C++, C#, Java, Python, Swift, JavaScript, PHP, Ruby, Kotlin

Сравнение языков программирования: C, C++, C#, Java, Python, Swift, JavaScript, PHP, Ruby, Kotlin

Синтаксис языка 1С

Синтаксис языка 1С

Синтаксис SQL запросов: Часть 1

Синтаксис SQL запросов: Часть 1

C# для начинающих - Урок 1: Синтаксис

C# для начинающих - Урок 1: Синтаксис

Информатика, 10-й класс, Словарь и синтаксис языка программирования высокого уровня

Информатика, 10-й класс, Словарь и синтаксис языка программирования высокого уровня

1С с полного нуля /#2 знакомство с языком(синтаксисом) | для новичков |с нуля|#1С| бесплатные курсы|

1С с полного нуля /#2 знакомство с языком(синтаксисом) | для новичков |с нуля|#1С| бесплатные курсы|
Поделиться или сохранить к себе:
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных, принимаю Политику конфиденциальности и условия Пользовательского соглашения.