Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
6 / 6 / 0
Регистрация: 26.06.2016
Сообщений: 68
1

Основные понятия JavaScript

15.01.2019, 14:08. Показов 1636. Ответов 32

Author24 — интернет-сервис помощи студентам
Доброго времени суток всем кто забрёл в эту тему.

Изучаю JavaScript, пытаюсь разобраться в основных категориях: Объект, Функция.
Буду рад, если кто нибудь, уделит немного своего внимания и поможет мне в этом.
Далее я буду писать код и комментарии к нему, как я его понимаю. С целью, показать последовательность моих мыслей и исправлении ошибок в понимании.
Заранее благодарен всем кто откликнется.

Javascript
1
2
3
4
var obj = {
    property0: 0,
    property1: 1
}
Создаётся переменная var obj в объекте window
Переменной var obj присваивается ссылка на объект созданный с помощью функции-конструктор function Object(){}
(или другими словами переменной var obj присваивается ссылка на объект типа Object)

Я без труда могу обращаться к свойствам property0 и property1 в созданном объекте через имя переменной var obj

Javascript
1
2
3
4
5
console.log(obj.property0); // 0
console.log(obj.property1); // 1
// или так 
console.log(window.obj.property0); // 0
console.log(window.obj.property1); // 1
Дальше я читаю что: Любая функция это объект, и следовательно ею можно манипулировать как объектом

И делаю вывод, что могу создать функцию по аналогии с созданием объекта, пример которого выше по тексту.

Javascript
1
2
3
4
var func = function () {
        property0: 0, // на этой строке появляется ошибка Uncaught SyntaxError: Unexpected token 
        property1: 1 // после нуля надо убрать запятую и ошибки не будет
}
Javascript
1
2
3
4
var func = function () {
        property0: 0
        property1: 1 
}// этот код выполняется без ошибок
Далее обращаюсь к свойствам property0 и property1 переменной var func.

Javascript
1
2
console.log(func.property0); // undefined
console.log(func.property1); // undefined
Как сказано по ссылке(функция это объект),я обращаюсь к функции как к объекту, но результат совершенно разный. Что не так?
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2019, 14:08
Ответы с готовыми решениями:

Как реализуются в JavaScript базовые понятия ООП?
Как в этом языке в коде реализуются полиморфизм, абстракция и т.д.?

История создания, ключевые понятия языка сценариев JavaScript
История создания, ключевые понятия языка сценариев JavaScript (понятия сценарий и программа,...

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

Основные понятия теории множество
Помогите, прошу, ответить на несколько вопросов . Для какого отношения p всегда выполняется...

32
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
15.01.2019, 14:37 2
Цитата Сообщение от vvshnik14 Посмотреть сообщение
Как сказано по ссылке(функция это объект)
а чего ж Вы дальше не стали читать?
Цитата Сообщение от MDN
Для понимания работы функций необходимо (и достаточно?) иметь представление о следующих моментах:
-способы объявления
-способы вызова
-параметры и аргументы вызова (arguments)
-область данных (Scope) и замыкания (Closures)
-объект привязки (this)
-возращаемое значение (return)
-исключения (throw)
-использование в качестве конструктора объектов
-сборщик мусора (garbage collector)
И дальше рассматриваются эти аспекты. Дочитайте до конца.

Javascript
1
2
3
4
var func = function func() {
    return 0;
}
console.log(func instanceof  Object) // true
0
6 / 6 / 0
Регистрация: 26.06.2016
Сообщений: 68
15.01.2019, 14:51  [ТС] 3
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
а чего ж Вы дальше не стали читать?
я читал
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Для понимания работы функций необходимо (и достаточно?) иметь представление о следующих моментах:
-способы объявления
-способы вызова
-параметры и аргументы вызова (arguments)
-область данных (Scope) и замыкания (Closures)
-объект привязки (this)
-возращаемое значение (return)
-исключения (throw)
-использование в качестве конструктора объектов
-сборщик мусора (garbage collector)
Выделенные пункты в статье не рассматриваются



Javascript
1
2
3
4
var func = function func() {
    return 0;
}
console.log(func instanceof  Object) // true
То что Object присутствует в цепочке прототипов функции я знаю (пока не понимаю каким образом)

Но вопрос в другом. Можно ли объявлять свойства в функции? Если, да. То, каким образом к ним можно обращаться?
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
15.01.2019, 15:16 4
Цитата Сообщение от vvshnik14 Посмотреть сообщение
Выделенные пункты в статье не рассматриваются
наверное не ту статью читали, поглядите вот здесь
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
15.01.2019, 15:28 5
klopp, приветствую Да нет, Тс как раз читал именно эту статью, именно на неё он дал ссылку в п.1

vvshnik14,
Цитата Сообщение от vvshnik14 Посмотреть сообщение
Выделенные пункты в статье не рассматриваются
если Вы дочитали до конца, вероятно Вы увидели в абзаце с заголовком Далее ссылку - Функции. Прочитав её до конца, Вы увидите См. также. Посмотрите, не поленитесь. Так уж устроен этот ресурс. Не все данные в одном месте. Это своеобразная википедия для MDN. Просто набор статей со ссылками друг на друга.

Цитата Сообщение от vvshnik14 Посмотреть сообщение
То что Object присутствует в цепочке прототипов функции я знаю (пока не понимаю каким образом)
Прототипное наследование. Уверен Вы и до этого доберетесь

Цитата Сообщение от vvshnik14 Посмотреть сообщение
Можно ли объявлять свойства в функции?
Нет так, как это сделали Вы.

Javascript
1
2
3
4
5
6
7
var func = function func() {
    return 0;
}
func.prop1 = 'Прувет!'
console.log(func instanceof  Object) // true
console.log(typeof func); // function
console.log(func.prop1); // Прувет!
0
6 / 6 / 0
Регистрация: 26.06.2016
Сообщений: 68
15.01.2019, 15:51  [ТС] 6
Javascript
1
2
3
4
5
6
7
8
9
var func = function func() {
    return 0;
}
func.prop1 = 'Прувет!'
console.log(func instanceof  Object) // true
console.log(typeof func); // function
console.log(func.prop1); // Прувет!
 
console.log(prop1 in func) // Uncaught ReferenceError: prop1 is not defined
Оператор in возвращает true, если свойство содержится в указанном объекте или в его цепочке прототипов.
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
15.01.2019, 15:58 7
vvshnik14, Читайте внимательнее, про кавычки забыли -
Javascript
1
2
3
4
5
6
7
8
var func = function func() {
    return 0;
}
func.prop1 = 'Прувет!'
console.log(func instanceof  Object) // true
console.log(typeof func); // function
console.log(func.prop1); // Прувет!
console.log('prop1' in func) // true
1
6 / 6 / 0
Регистрация: 26.06.2016
Сообщений: 68
15.01.2019, 16:14  [ТС] 8
Qwerty_Wasd, Весьма благодарен за ваши ответы
Подскажите, а если func использовать как конструктор и создать объект типа func.
Почему в нём нету свойства prop1?

Javascript
1
2
3
4
5
6
7
8
9
10
11
var func = function func() {
    return 0;
}
func.prop1 = 'Прувет!'
console.log(func instanceof  Object) // true
console.log(typeof func); // function
console.log(func.prop1); // Прувет!
console.log('prop1' in func) // true
 
var obj_func = new func();
console.log('prop1' in obj_func); // false
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
15.01.2019, 16:38 9
vvshnik14, вот мы сейчас не заметно подобрались с Вами к краеугольному камню в обучении любой дисциплины - логика.
Переведём код на русский язык (я позволю себе это допущение, ибо это мой родной язык) -
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
укажем ссылку на функцию, используя Named Function Expression(именованное функциональное выражение)
*/
var func = function func() {
    return 0;
}
/*объявим и инициализируем поле у экземпляра Function, используя ссылку на него*/
func.prop1 = 'Прувет!'
/*проверим принадлежит ли экземпляр по ссылке классу Object*/
console.log(func instanceof  Object) // true
/*также проверим тип экземпляра*/
console.log(typeof func); // function
/*Выведем значение поля prop1 экземпляра func*/
console.log(func.prop1); // Прувет!
/*удостоверимся, что  prop1 принадлежит scope экземпляра func*/
console.log('prop1' in func) // true
 
/*А теперь ВНИМАНИЕ!*/
/*Создадим НОВЫЙ экземпляр типа Function, и укажем на него ссылку obj_func*/ 
var obj_func = new func();
 
/* И тут мы проверям присутствует ли в scope obj_func  поле prop1*/
/*РАЗВЕ МЫ ОБЪЯВЛЯЛИ И ИНИЦИАЛИЗИРОВАЛИ ЭТО ПОЛЕ У obj_func?*/
console.log('prop1' in obj_func); // false 
 
/*Правильно - нет!*/
Добавлено через 6 минут
И да чуть не забыл - не за что. Пожелаю Вам терпения, оно Вам понадобиться в изучении
0
6 / 6 / 0
Регистрация: 26.06.2016
Сообщений: 68
15.01.2019, 17:33  [ТС] 10
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
укажем ссылку на функцию, используя Named Function Expression(именованное функциональное выражение)
*/
var func = function func() {
* * return 0;
}
/*объявим и инициализируем поле у экземпляра Function, используя ссылку на него*/
func.prop1 = 'Прувет!'
/*проверим принадлежит ли экземпляр по ссылке классу Object*/
console.log(func instanceof *Object) // true
/*также проверим тип экземпляра*/
console.log(typeof func); // function
/*Выведем значение поля prop1 экземпляра func*/
console.log(func.prop1); // Прувет!
/*удостоверимся, что *prop1 принадлежит scope экземпляра func*/
console.log('prop1' in func) // true
/*А теперь ВНИМАНИЕ!*/
/*Создадим НОВЫЙ экземпляр типа Function, и укажем на него ссылку obj_func*/ 
var obj_func = new func();
/* И тут мы проверям присутствует ли в scope obj_func *поле prop1*/
/*РАЗВЕ МЫ ОБЪЯВЛЯЛИ И ИНИЦИАЛИЗИРОВАЛИ ЭТО ПОЛЕ У obj_func?*/
console.log('prop1' in obj_func); // false 
/*Правильно - нет!*/

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
console.log(func.constructor); // f Function() { [native code] }
/* как я понимаю если в поле constructor экземпляра func указана 
f Function() { [native code] } - значит экземпляр создан 
по образу и подобию своего конструктора и это значит что он 
наследует ВСЕ поля конструктора (и его прототипов)*/
 
console.log(obj_func.constructor); // f func() {return 0;}
/* здесь конструктором является  f func() {return 0;} - значит экземпляр 
obj_func наследует ВСЕ  поля конструктора (и его прототипов)*/
 
console.log(obj_func.constructor.prop1); // Прувет!
/* ответ на вопрос есть ли у конструктора экземпляра obj_func поле prop1*/
Почему у экземпляра созданного по конструктору с полем prop1 - нету этого поля (т.е. оно не наследуется)?

Добавлено через 4 минуты
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
И да чуть не забыл - не за что. Пожелаю Вам терпения, оно Вам понадобиться в изучении
Qwerty_Wasd, Благодарю за ответ и совет
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
15.01.2019, 17:41 11
vvshnik14, Почитайте, только внимательно - https://developer.mozilla.org/... onstructor
0
Эксперт JS
6494 / 3905 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
15.01.2019, 21:27 12
Всем здравствуйте!
Здесь не объявления свойств, а метки.
Javascript
1
2
3
4
var func = function () {
        property0: 0
        property1: 1 
}// этот код выполняется без ошибок
Вот наглядное пояснение работы меток:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        func();
 
        function func() {
            var i = 10;
            property0:
            while (true) {
                if (--i) {
                    console.log(i);
                    continue property0;
                }
                else
                   break;
            }
            property1:
            console.log("Kу-ку!");
        }
Перефразируя слова классика, сказанные о С++:
"Сложный, вычурный и очень трудный для понимания язык программирования JavaScript был создан специально, чтобы отделить узкий круг талантливых настоящих программистов от лиц, примазывающихся к ним."


Добавлено через 9 минут
vvshnik14, кстати.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
let str = "abc"; // Здесь литерал строки
 
let num = 1.23;  // Здесь литерал вещественного числа
 
let obj = { // Здесь литерал Object
    property0: 0,
    property1: 1
}
 
let func = function () { // Здесь литерал функции
        property0: 0
        property1: 1 
}
Как мы видим, синтаксис для литералов разных типов разный. Разные синтаксисы нельзя отождествлять.
1
6 / 6 / 0
Регистрация: 26.06.2016
Сообщений: 68
16.01.2019, 08:50  [ТС] 13
amr-now, Здравствуйте!
Цитата Сообщение от amr-now Посмотреть сообщение
Здесь не объявления свойств, а метки.
Вы ответили на вопрос(Почему интерпретатор не ругается на этот код?), который у меня возник, но я его пока не озвучил.

Javascript
1
2
3
4
var func = function () {
        property0: 0
        property1: 1 
}// этот код выполняется без ошибок
Раз Вы это затронули, ещё вопрос: почему этот код в теле функции не создаёт ошибки?

Javascript
1
2
3
var func = function () {
       0 
}// этот код выполняется без ошибок
0
6 / 6 / 0
Регистрация: 26.06.2016
Сообщений: 68
16.01.2019, 08:56  [ТС] 14
И ещё вопрос для Qwerty_Wasd и тех кто решит присоединиться:
В этой картинки есть неточности? (Она про наследование в JavaScript)
Могу ли я опираться на неё в своих рассуждениях?
Миниатюры
Основные понятия JavaScript  
0
Эксперт JS
6494 / 3905 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
16.01.2019, 09:50 15
vvshnik14, можете.
Вот кишки Мустафы:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <script>
        function User() { }
        var Mustafa = new User();
        console.log(getType(Mustafa));
        console.log(User);
        console.log(User.prototype);
        console.log(Object.getPrototypeOf(Mustafa) === User.prototype); // true
 
        /**
         * Имя типа у аргумента. Обычно с прописной буквы, кроме undefined и null.
         * Для примитивных типов подставляется имя типа-обертки.
         * @param {*} arg Произвольное значение объекта или примитивного типа, для которого нужно определить имя типа.
         */
        function getType(arg) {
            let proto, constr;
            return (arg === undefined) ? "undefined" :
                (arg === null) ? "null" :
                    (!(proto = Object.getPrototypeOf(arg)) || !(constr = proto.constructor)) ? "Object" : constr.name;
        }
    </script>
</body>
</html>
Добавлено через 6 минут
Цитата Сообщение от vvshnik14 Посмотреть сообщение
Почему интерпретатор не ругается на этот код?
Потому что JavaScript считает его синтаксически верным.

Цитата Сообщение от vvshnik14 Посмотреть сообщение
Javascript
1
2
3
var func = function () {
      0 
}// этот код выполняется без ошибок
Здесь синтаксис унаследован из языка Си:
- литерал 0 является выражением,
- выражение может быть инструкцией.
- подразумевается, что инструкция заканчивается точкой с запятой.

Я кстати в двухтысячных годах несколько лет не понимал, что такое "инструкция" (statement). Так что, как говорится, и на "Е" бывает, и на...

Добавлено через 4 минуты
PS: По поводу инструкции. В русскоязычной литературе десятилетиями гулял ложный перевод слова "statement".
Переводили как "оператор". Наводило на ложный смысл "operator"
1
6 / 6 / 0
Регистрация: 26.06.2016
Сообщений: 68
17.01.2019, 13:17  [ТС] 16
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
укажем ссылку на функцию, используя Named Function Expression(именованное функциональное выражение)
*/
var func = function func() {
* * return 0;
}
/*объявим и инициализируем поле у экземпляра Function, используя ссылку на него*/
func.prop1 = 'Прувет!'
/*проверим принадлежит ли экземпляр по ссылке классу Object*/
console.log(func instanceof *Object) // true
/*также проверим тип экземпляра*/
console.log(typeof func); // function
/*Выведем значение поля prop1 экземпляра func*/
console.log(func.prop1); // Прувет!
/*удостоверимся, что *prop1 принадлежит scope экземпляра func*/
console.log('prop1' in func) // true
/*А теперь ВНИМАНИЕ!*/
/*Создадим НОВЫЙ экземпляр типа Function, и укажем на него ссылку obj_func*/ 
var obj_func = new func();
/* И тут мы проверям присутствует ли в scope obj_func *поле prop1*/
/*РАЗВЕ МЫ ОБЪЯВЛЯЛИ И ИНИЦИАЛИЗИРОВАЛИ ЭТО ПОЛЕ У obj_func?*/
console.log('prop1' in obj_func); // false 
/*Правильно - нет!*/

Не согласен с этим комментарием:

Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Javascript
1
2
3
/*А теперь ВНИМАНИЕ!*/
/*Создадим НОВЫЙ экземпляр типа Function, и укажем на него ссылку obj_func*/ 
var obj_func = new func();
На мой взгляд, здесь создаётся объект типа func, а не Function.

Javascript
1
2
console.log(obj_func.constructor.name); // func
console.log(func.constructor.name); // Function
Попробую ответить на свой же вопрос, который задавал ранее:

Цитата Сообщение от vvshnik14 Посмотреть сообщение
Javascript
1
2
3
4
5
console.log(func.constructor); // f Function() { [native code] }
/* как я понимаю если в поле constructor экземпляра func указана 
f Function() { [native code] } - значит экземпляр создан 
по образу и подобию своего конструктора и это значит что он 
наследует ВСЕ поля конструктора (и его прототипов)*/
Здесь я неправ, в том что экземпляр наследуется от конструктора. Как сейчас, я понимаю: конструктор нужен как макет, который содержит набор свойств(и их значения), которые будут присутствовать в экземпляре созданным при помощи ключевого слова new. НО экземпляр не будет содержать свойств которые были указаны в конструкторе без ключевого слова this.
0
Эксперт JS
6494 / 3905 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
17.01.2019, 13:32 17
Цитата Сообщение от vvshnik14 Посмотреть сообщение
Здесь я неправ, в том что экземпляр наследуется от конструктора.
vvshnik14, экземпляр как самый первый "вагончик" из "поезда" не наследуется ни от чего.
В JS экземпляр - пустая площадка. Дикое поле практически.

К пустому экземпляру сразу же прицепляется вагончик из ИмяФункции.prototype
Функция-конструктор ИмяФункции на пустой площадке создает какие-то поля.

А чтобы ООП было похоже на обычное ООП, в конце функции-конструктора по-хорошему надо бы заморозить набор полей экземпляра.
В противном случае все кому не лень будут дальше дописывать поля к экземпляру, что с точки зрения обычного ООП - извращение.
1
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.01.2019, 13:52 18
vvshnik14, просто молча подкину https://jsfiddle.net/Qwerty_Wasd/6ksw94du/
Javascript
1
console.log(typeof obj_func.constructor); // function
А вот это объясняет лишь от кого наследует obj_func
Javascript
1
console.log(func.constructor.name);
0
6 / 6 / 0
Регистрация: 26.06.2016
Сообщений: 68
17.01.2019, 13:54  [ТС] 19
amr-now, спасибо за участие в обсуждении.
Вы не поверите но картинка с мустафой мне ОЧЕНЬ помогла, не хватало визуального представления той логики которой накрутили создатели языка.

Цитата Сообщение от amr-now Посмотреть сообщение
К пустому экземпляру сразу же прицепляется вагончик из ИмяФункции.prototype
Функция-конструктор ИмяФункции на пустой площадке создает какие-то поля.
два дня назад мне это было вообще не понятно, но JS изучаю, таким же образом как и дети разбирают игрушки. Долго не мог понять как устроено наследования, теперь понимаю:

null <---- Object.Prototype <------ ИмяФункции.prototype <----- Экземпляр
1
Эксперт JS
6494 / 3905 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
17.01.2019, 13:58 20
Раз пошла такая пьянка, покажу сюрреализм языка JavaScript:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <script>
        /*
        укажем ссылку на функцию, используя Named Function Expression(именованное функциональное выражение)
        */
        var Func = function() {
            this.f = "aaaa";
            Object.preventExtensions(this);
        }
 
        var obj = new Func()
        console.log(getType(obj));
        console.log(obj);
        obj.f = "bbbb";
        console.log(obj);
 
        /**
         * Имя типа у аргумента. Обычно с прописной буквы, кроме undefined и null.
         * Для примитивных типов подставляется имя типа-обертки.
         * @param {*} arg Произвольное значение объекта или примитивного типа, для которого нужно определить имя типа.
         */
        function getType(arg) {
            let proto, constr;
            return (arg === undefined) ? "undefined" :
                (arg === null) ? "null" :
                    (!(proto = Object.getPrototypeOf(arg)) || !(constr = proto.constructor)) ? "Object" : constr.name;
        }
    </script>
</body>
</html>
Безымянный класс ворует себе имя у первой переменной, которая инициализируется этим классом.
С точки зрения логики это нонсенс.
------
В скрипте также показана заморозка набора полей экземпляра, чтобы было похоже на обычный всеми понимаемый экземпляр.
0
17.01.2019, 13:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2019, 13:58
Помогаю со студенческими работами здесь

Основные понятия языка Pascal
Основные понятия языка Pascal: переменная,оператор,тьип данных Решите плисссссс отблагодарю

Основные понятия и приемы программирования
Помогите ответить на вопросы по С#. 1)Создание объектов.Понятия ссылки....

Основные понятия алгебры логики
Здравствуйте уважаемые пользователи этого форума! Необходима ваша помощь очень срочно по алгебре...

основные понятия логики высказываний
Помогите с мат. лог. не дружу с ней:cry: ((((


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru