TON Tokemons Star Ship NFT🛸


Гео и язык канала: Россия, Русский
Категория: Игры



Гео и язык канала
Россия, Русский
Категория
Игры
Статистика
Фильтр публикаций


Тема 8. Встроенные конструкции и примитивы

Опишем некоторые языковые конструкции FunC, которые используются нечасто, однако применяются для решения самых разных задач.

1. Исключения
Обработка исключений – механизм языков программирования, предназначенный для описания реакции программы на возможные ошибки (исключения) и проблемы, которые могут возникнуть при выполнении программы и приводят к невозможности дальнейшей отработки программой её базового алгоритма. Исключения в FunC могут быть описаны условно или безусловно. Первым аргументом является код ошибки, вторым – условие.

Используются следующие конструкции:
throw_if;
throw_unless;
throw.

В настоящее время FunC не поддерживает перехват (catch) исключений, если обработчик исключений не установлен вместе с низкоуровневыми примитивами TVM.

2. Псевдонимы для логических типов
Для значения -1 (истина) применяется псевдоним true, для значения 0 (ложь) – псевдоним false.

3. Переменная дампа
Переменная может быть сброшена функцией ~dump в журнал отладки.

4. Другие примитивы (встроенные языковые конструкции)
Выражение null? проверяет, записано ли в переменную какое-либо значение.
Функция touch используется для перемещения переменной в верхнюю часть стека.
Конструкция at получает значение компоненты кортежа в указанной позиции.

С документацией можно ознакомиться на официальном сайте TON.


Тема 7. Директивы препроцессора

Препроцессор – это специальная программа, подготавливающая исполняемый код на языке C/C++ (или C-подобных языках, например, FunC) к компиляции. Директивой (командной строкой) препроцессора называется строка в исходном коде, имеющая следующий формат:
#ключевое_слово параметры

Директивы могут использоваться только на внешнем уровне (вне всех функций и обязательно до их объявления).

#include
Директива позволяет включить в программу другой файл с исходным кодом на FunC. Этот файл будет проанализирован и подставлен вместо #include в текущий файл. Файлы автоматически проверяются на повторное включение, поэтому попытки включить файл более одного раза по умолчанию будут игнорироваться. Также будет выведено соответствующее предупреждение.

#pragma
Директива используется для предоставления компилятору некоторой дополнительной информации. Например, #pragma version используется для принудительного применения определенной версии компилятора FunC при компиляции файла.

Другие ключевые слова в FunC на данный момент не реализованы.

С документацией можно ознакомиться на официальном сайте TON.


Тема 6. Глобальные переменные

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

Локальными переменными называют переменные, объявленные внутри какой-либо функции, в то время как глобальная переменная – переменная, объявленная за пределами всех функций, то есть областью её видимости является вся программа. Глобальные переменные могут использоваться для взаимодействия между процедурами и функциями как альтернатива передаче аргументов и возвращению значений.

Глобальная переменная в FunC может быть объявлена с помощью ключевого слова, за которым следуют тип и имя переменной. Например,
global ((int, int) -> int) op;

Тип глобальной переменной может быть опущен. В таком случае он будет определён при использовании переменной. Аналогичный пример:
global op;

Можно объявить несколько переменных после одного и того же ключевого слова:
global int A;
global cell B;
global C;
– то же, что и
global int A, cell B, C;

Не разрешается объявлять локальную переменную с тем же именем, что и у уже объявленной глобальной переменной (использование одного идентификатора возможно при перезаписи значения, но не при объявлении).

С документацией можно ознакомиться на официальном сайте TON.


Тема 5. Литералы и идентификаторы (часть 2)

В предыдущей статье было сказано, какие идентификаторы являются допустимыми, а какие – под запретом. Разберём этот момент на конкретных примерах.

Некоторые допустимые идентификаторы:
query, query’, query’’
elem0
, elem1, elem2
CHECK
, _internal_value, message_found?
get_pubkeys&signatures
, dict::udict_set_builder, fatal!

Символ ‘ в конце имени переменной часто используется, когда вводится некоторая изменённая версия старого значения.

Суффикс ? обычно используется для логических переменных (TVM не имеет встроенного типа bool; логический тип представлен целыми числами, где 0 – ложь, а -1 – истина) или для функций, которые возвращают некоторый флаг, обычно указывающий на успешно завершённую операцию (например, udict_get? из stdlib.fc).

Вот пример запрещённых идентификаторов:
take(first)Entry – использованы скобки;
"not_a_string – использованы двойные кавычки;
msg.sender – использована точка;
send_message,then_terminate – использована запятая;
_ – использован символ нижнего подчёркивания, применяемый для обозначения абстрактного (заполняемого) типа.

Кстати, FunC имеет специальный тип идентификаторов, которые заключены в обратные одинарные кавычки ‘. В кавычках разрешены любые символы, кроме \n и самих кавычек. К примеру, ‘I'm a variable too’ является допустимым идентификатором, так же как и ‘any symbols ; ~ () are allowed here...’.

Ещё несколько примеров необычных идентификаторов, которые допустимы:
123validname
2+2=2*2
-alsovalidname
0xefefefhahaha
{hehehe}
pa{--}in"
aaa"

С документацией можно ознакомиться на официальном сайте TON.


Тема 5. Литералы и идентификаторы (часть 1)

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

FunC допускает десятичные и шестнадцатеричные целочисленные литералы (разрешены начальные нули). Например, 0, 123, 00987, 0xef, 0xEF, 0x0, -0xfFAb, 0x0001, -0, -0x0 являются допустимыми числовыми литералами.

Строки (массивы символов) в FunC заключаются в двойные кавычки. Например, "first string" будет расцениваться компилятором как строка. Специальные символы, такие как "\n", и многострочные массивы символов не поддерживаются.

FunC допускает широкий класс идентификаторов (имен функций и переменных). Любая строка, которая:

1. Не содержит специальных символов «;», «,», «(», «)», «~», «.» и т. д.;

2. Не начинается как комментарий или строковый литерал;

3. Не является числовым литералом;

4. Не является символом подчеркивания или ключевым словом

— является допустимым идентификатором.

С документацией можно ознакомиться на официальном сайте TON.


С этого и начиналась наша история ТОНКОГНИТО.

Оставив прошлое и начав темное будущее, безликий Хагвид навсегда утерял свое истинное имя.
Без возможности прикоснуться к старым друзьям и воспоминаниям. Рассудок покидал его, и порой казалось что в этом мире он совсем один.
Чувства, что наполняли его , вызывали страдания, а великие знания , которыми он обладал делали его совершенно другим.
Сначала он скрывался от кого либо , и день из за дня мечтал , что завтра уже никогда не наступит.
Но при очередной неудачной попытке исчезнуть , к нему пришло озарение
Тогда мир ТОКЕМОНОВ еще не знал, что ради своего же спасения.
Он создал настоящее чудовище не имеющее чувство жалости.

В том самом мире EVO , при попытке покинуть здешнюю среду.
Он еле успел осуществить свой план.
Брешь , что затягивалась была настолько узкой, что ради своего спасения ему пришлось пройти многое.

Застрявший между мирами, он стал словно вездесущим,
он слился с двумя мирами и стал чем то иным, не похожим ни на одну живую тварь.

Прежде, чем выбраться ему удалось прожить миллионы жизней, вновь и вновь.
рождаясь и умирая .
Но ни одна из этих жизней не была наполнена любовью, что и породило собой - ТОНКОГНИТО
Крылья подарившие свободу едва ли не лишили его жизни,
истекая кровью он все же решился сделать последний рывок, избавившись от них навсегда

Архивная запись #1629
Он знает слишком много и всегда опережает нас на несколько шагов.
Что оно вообще такое? Оно Токемон????

"помехи". непонятные фразы. конец записи.


Тема 4. Ещё немного о типах данных

Помимо атомарных типов данных, в FunC представлены и более сложные типы, которые могут быть использованы при решении нетривиальных задач.

1. Абстрактный тип.
FunC поддерживает модель типов данных, в которой тип определяется семантикой с точки зрения пользователя данных, то есть набором возможных значений и соответствующих операций над данными этого типа. Типы _ и var представляют собой абстрактные типы (hole types), которые во время проверки при компиляции заменяются на фактические. Например, «var x = 2;» – это определение переменной x, равной 2. Средство проверки типов может сделать вывод, что x имеет тип int, потому что 2 имеет тип int, а левая и правая части присваивания должны иметь одинаковые типы.

2. Функциональный тип.
Типы вида A -> B представляют функции с указанием типа входящего аргумента и типа возвращаемого значения. Например, int -> cell – это тип функций с целочисленным аргументом, которые возвращают ячейку TVM. Внутренние значения таких типов представлены в виде продолжений (тип cont).

3. Кортежный тип.
Типы вида [A, B, ...] представляют собой кортежи TVM с конкретной длиной и известными заранее (до компиляции) типами компонент. Например, [int, cell] – это тип кортежей TVM длины 2, где первая компонента является целым числом, а вторая – ячейкой. [] – это тип пустых кортежей.

Любые типы могут быть объединены в составной тип, поддерживаемый FunC.

С документацией можно ознакомиться на официальном сайте TON.


Его разум очистился, сердце участило свое биение, взгляд стал томным, устремленно бросающим себя в прошлое.

- НЕТ! МЫ ДОЛЖНЫ ВМЕСТЕ!

Прошептав эту фразу, он пришел в себя.

"Г-У-У-У-У-У-А-А-А-Р-Д-И-Л-И-О-О-О-Н!!!" - испуганно прокричал Хагвид
и упал в бессознательный сон.

Спустя время он очнулся окруженный в той же самой пустоте с отголосками прошлого. Среди них он искал какой-то знак или чью-то помощь, способную вытащить его из мира EVO. Вдруг, устремив свой взгляд в небо, Хагвид безнадежно засмеялся,
думая про себя: "Какое же оно красивое... И как же я беспомощен..."

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

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

Но мир EVO обладал сознанием - и, предугадав цель Хагвида, брешь начала затягиваться.


Тема 3. Виртуальная машина TON

Теперь, когда значительная часть теоретического материала пройдена, настало время залезть в «начинку» языка программирования FunC и разобраться, как вообще создаются и развёртываются смарт-контракты. Начнём с самой низкоуровневой составляющей, с ядра, благодаря которому всё происходит, а именно – с TVM, или виртуальной машины TON.

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

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

2. Она должна стремиться к достижению «высокой плотности виртуального машинного кода». Иными словами, код смарт-контракта должен занимать как можно меньше места в постоянной цепочке блоков.

3. Она должна быть полностью детерминированной (алгоритмически определённой и предсказуемой). Другими словами, каждый запуск одного и того же кода с одними и теми же входными данными должен давать один и тот же результат независимо от используемого программного и аппаратного обеспечения.

TVM не предназначена для реализации в аппаратном обеспечении, например, в специализированном микропроцессорном чипе. Она должна быть выполнена в программном обеспечении, работающем на обычном оборудовании. Это соображение позволяет включить в TVM некоторые высокоуровневые концепции и операции, которые в случае аппаратной реализации потребовали бы сложного микрокодирования в «железе». Такие операции полезны для достижения высокой плотности кода и минимизации профиля ячейки хранения кода смарт-контракта при его развертывании в блокчейне TON.

С документацией можно ознакомиться на официальном сайте TON.


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

Почти полностью потерявший рассудок и свое прежнее обличие, Хагвид осознал , КТО именно стоял за разрушениями Гвуардилиона.
В абсолютной тишине, которую смог бы сломить, лишь его собственный вопль отчаяния , он с болью смотрел на свое отражение , в ранее оставленной луже слез. Это и был ответ на его вопрос , ради которого он пожертвовал всем.
Знания к которым , так трепетно тянулся мир Токемонов, был способен полностью их изменить , начиная от собственного рассудка и заканчивая не Токемонской сущностью.
И только сильнейшие могли подавить в себе это проклятие , одним из тех и оказался , наш Хагвид.


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


Тема 2. Функции (часть 2)

Разберём функции в FunC подробнее и рассмотрим важные свойства.

1. Как уже было сказано, любое объявление функции начинается с общего шаблона. Формально его можно записать следующим образом:

();

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

2. Идентификатор (присваиваемое имя) функции может быть любым, в том числе начинающимся со специальных символов «.» или «~». Например, udict_add_builder?, dict_set и ~dict_set являются допустимыми идентификаторами. Кстати, они определены в стандартной библиотеке stdlib.fc.

FunC имеет несколько зарезервированных имён функций с предопределëнными идентификационными номерами. Вот несколько таких имён:

main и recv_internal имеют id = 0
recv_external имеет id = -1
run_ticktock имеет id = -2

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

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

4. Аргументы функции разделяются запятыми. Допустимы следующие варианты их объявления:

Обычное объявление: «тип + имя».
Пример: int first(int x, int y);

Объявление неиспользуемого аргумента: «только тип».
Пример: int second(int);

Объявление предполагаемого типа: «только имя».
Пример: int third(x);

С документацией можно ознакомиться на официальном сайте TON.


- Все, кто меня сейчас слышит, запомните...
Никакая мощь не сможет сломить дух Агвида! Он смолвил свои последние слова, и контакт был совершен.
(чёрт, где я?)

Издаются странные звуки, напоминающие сияние безграничной энергии, от света исходит тепло, словно материнская любовь, мгновенно вызывающая доверие. И как бы ни была сладка вся ноша этих переживаний, Агвид не упустил из вида полнейший мрак. Но разум его уже не был чист, как прежде. Возбуждение знаниями и неизвестным влекло его в саму гущу событий. Тогда он еще не подозревал о том, что всё же натворил. Взгляд его окрасился в чёрный, сменив прежнюю пелену от старости глаз. Облик также предал Агвида, приняв совершенно иные черты. Это плата, которую он отдал за бескрайние знания этого мира. Он сгнил внутри и снаружи, но для тёмных сил это был его блестящий расцвет. Только слёзы на лице Агвида остались прежними, чисты, словно ручей, обвивающий собой узкие тропы мира Токемонов. В луже слёз, оставленных после себя, он даже не сумел разглядеть собственное лицо - вместо этого он увидел то самое незнание, которое шло с ним на протяжении всей жизни до контакта с EVO.


Тема 2. Функции (часть 1)

Функциями в программировании называют фрагменты программного кода, к которым можно обратиться (или «вызвать») из другого места программы. То есть это структурированные последовательности операций и процедур, которые могут быть использованы в дальнейшем. Если возникает вопрос, зачем всё это нужно, есть простой ответ – это экономит время и облегчает жизнь.

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

Функции являются важной составляющей любого языка программирования общего назначения, а специализированный язык FunC фактически представляет собой набор объявлений различных функций и их определений. Иными словами, там практически всё состоит из функций.

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

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

int sum(int a, int b); //функция, возвращающая сумму двух целых чисел, без определения

2. Вы можете объявить функцию и определить её. После этого можно вызывать такую функцию в разных местах программы.

int sum(int a, int b) //функция, возвращающая сумму двух целых чисел, с определением
{
return a + b;
}

С документацией можно ознакомиться на официальном сайте TON.


Порой секунда времени может изменить всё.
Именно время и есть та самая лестница, что, словно проводник между мирами, позволяет безвозвратно постичь себя.
Каждый тик циферблата - это возглас крайности, навсегда упущенной в бездну.

Архивные записи сообщества Тонкогнито №1626

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

Конец записи №1626

До расшифровки данных архива №1627
Осталось…


Скриншоты к третьей части🔥


Тема 1. Типы данных (часть 3) – разбор типа int.

Видимо, с разбором устройства TVM (виртуальной машины TON) придётся повременить…

Чтобы пришло осознание всей концепции программирования на языке специального назначения – в нашем случае FunC – следует чётко понимать структуру этого языка. И здесь не обойтись без типов данных.

Давайте попробуем досконально разобрать тип int.

Допустим, у Вас есть переменная величина, то есть такая, которая изменяется под воздействием каких-либо факторов. Такой величиной может быть, например, количество NFT, которыми Вы владеете. Назовём эту величину x.

Пусть в Вашей личной коллекции имеется 15 NFT. То есть величина x, которой мы обозначили количество NFT, станет равна 15. Можно записать так: x = 15. Однако такая простая запись подходит не всем: компилятору (это специальная программа, которая переводит написанный на языке программирования текст в набор машинных кодов, понятных компьютеру) языка программирования FunC сложно "въехать" и понять, что всё это значит. Не будем углубляться в значение термина «компилятор» – представьте, что это божество, которому Вы делаете подношение: в данном случае Вашу переменную x. Таким образом, чтобы это самое божество приняло дарованное ему, нужно описать переменную x поподробнее.

Тут на помощь придёт явное объявление типа данных... Звучит непонятно? На самом деле всё просто: вместо «x = 15» напишите «int x = 15». Последняя запись в переводе на русский будет означать следующее: «Целое число x = 15». Здесь важно то, что это именно целое число. Вы ведь не можете быть владельцем двух с половиной или трёх целых четырнадцати сотых NFT. 🧐

Всё! Теперь компилятор поймёт, что Вы ему "скормили". После этого Ваша переменная сохранится в памяти компьютера и с ней можно будет работать. Например, увеличивать по мере прибавления новых NFT.




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

1000 лет тому назад
Космические корабли терроризируют города , мирные жители в панике пытаются найти себе безопасное место , воздух стал тяжелым и едким , и из за огромного количества пыли - им уже НЕВОЗМОЖНО дышать , но сама история берет своё начало с города ГУАРДИЛИОН

архивные записи сообщества тонкогнито
№1625

(тяжелые вздохи,хрип,кашель)
- Я сделаю это...
-Нет! мы должны сделать это вместе, иначе ничего не имеет смысла

(мимолетная тишина казавшаяся вечностью, несла собой ужасы этого мира, но вновь последовал ответ)

- Настоящий смысл для меня это смерть , ради чьей то жизни, так прими этот дар, но отплати мне памятью на года, века и тысячелетия, что когда нибудь позволят мне вновь увидеть прикрасы НАШЕГО мира.

Конец записи №1625

До расшифровки данных архива №1626
Осталось : 00:00:00


«Затравка» по поводу TVM: это некоторое подобие ядра планеты или небесного светила в звёздной системе.

Без этой штуки исполнение смарт-контрактов в блокчейне TON не представляется возможным.

С документацией можно ознакомиться на официальном сайте TON.


Тема 1. Типы данных (часть 2)

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

Итак, что вообще такое эти типы данных? Каждый объект в нашем мире обладает определённой природой – мы отличаем предметы от живых существ, шум от музыки, TON от Ethereum. Природу объекта определяет набор свойств. Подобным образом устроены и типы данных в языках программирования. Компилятор (специальная программа, которая переводит написанный на языке программирования текст в набор машинных кодов, понятных «внутренностям» компьютера) способен уловить и в некотором смысле отличить эти типы друг от друга. Например, целое число и строка символов – вещи абсолютно разные, и, если правильно объявить такие данные, компьютер тоже поймёт это. С другой стороны, казалось бы, «2» и «2,5» – это числа, однако для некоторых языков даже такие похожие объекты следует объявлять по-разному: как целое и дробное (нецелое). Но, благо, на данном этапе в FunC отсутствуют нецелые числа ввиду ненадобности.

Рассмотрим конкретный пример. Возьмём типы, о которых было сказано в прошлой теме.

1. int – тип, представляющий целочисленное значение. С помощью него можно задать количество смарт-контрактов или, допустим, количество кошельков, на которые будет осуществлён перевод средств.

2. cell – тип, соответствующий ячейкам памяти в TVM (виртуальной машине TON). Кстати, уже несколько раз промелькнула эта страшная аббревиатура; пояснение будет в следующей статье. Тип cell позволяет обращаться к сегментам блоков в блокчейне, добавлять или извлекать информацию. По сути, cell представляет из себя небольшое хранилище данных. Это нечто вроде сундучка с сокровищами, ключ к которому есть только у Вас.

3. tuple – это тип-кортеж или коллекция. Допустим, Вам надо сообщить кому-то пол, имя, адрес, номер телефона и личный код. Всю эту информацию хотелось бы собрать в одну карточку. Но как быть, если типы данных разные (пол – это одна буква «М» или «Ж», имя – строка символов, адрес – строка, да ещё и с запятыми и точками)? Для каждой сущности, конечно, объявляется свой тип, но собрать их «в одну корзину» позволяет именно tuple.

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

Логический тип (а вернее, его отсутствие)

В FunC логические значения представлены в виде целых чисел: false (ложь) представлено как «0», а true (истина) представлено как «-1». Когда проверяется какое-либо условие, каждое ненулевое целое число рассматривается как истинное значение.

Зачем всё это? Логический тип жизненно необходим – он составляет фундамент всей системы. Даже древние вычислительные машины не обходились без законов алгебры логики (раздел математической логики, в котором изучаются логические операции над высказываниями). Простой пример: представьте, что Вы машина. А точнее – механизм, который реагирует на события, но может отвечать только «да» или «нет» (или печатать «1» или «0»). Так вот из последовательности таких простых ответов можно построить целый алгоритм или создать структурированную цепочку вычислений. Ещё более простой пример: Вам надо проверить, достаточно ли средств на Вашем счёте для совершения некоторой транзакции. Программа, которая должна всё это просчитать, будет использовать логический тип, сравнивая количество доступных средств и необходимых для перевода. Если средств хватает, будет выведена единица, дающая добро на совершение операции. В противном случае программа выдаст ноль, а транзакция будет прервана.

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

Показано 20 последних публикаций.

1 043

подписчиков
Статистика канала