JOURFIXE
https://jou.rfixe.com/forum/

Need help! Ой как NEED HELP!
https://jou.rfixe.com/forum/viewtopic.php?f=12&t=7931
Page 2 of 6

Author:  Alona [ Fri Nov 01, 2019 1:22 am ]
Post subject:  Re: Need help! Ой как NEED HELP!

jourfixe wrote:
У тебя в цикле переменная "arguments". Там, где "arguments.length". Откуда эта "arguments" взялась, ты точно её хотела туда поставить, а не что-нибудь другое?

Взялась из образца в интернете. Я там ссылочку указывала
https://www.codingame.com/playgrounds/8958/the-power-of-javascript-functions

jourfixe wrote:
Зы. Вообще, это порочная практика - писать функции так, что вместо входных параметров они используют глобальные переменные. Функция по возможности должна быть независима от глобального состояния. "Чистая" функция при одних и тех же входных параметрах выдаёт один и тот же результат (в определение "чистой" функции входит ещё и отсутствие побочных эффектов, но это отдельная тема).

Общефилософски я с тобой согласна. Моё мышление глубоко отформатировано процедурно-ориентированными языками, и поэтому в моей башке функция - это всегда набор аргументов, причем еще и сверить их, зараз по строевому списку. Чтобы каждый, значить, был строго остановленного типа. :mrgreen: Я не сразу-то доперла, что в джаве - в отличие от Фортрана, гы, фукцию нельзя вызывать, пока ее не напишешь выше. Логично, чо, язык-интерпретатор.

Но с джавой у меня никак не получается! С аргументами я тоже пыталась, не сомневайся. Там даже в коде осталась закомментированная строчка, когда я пробовала вот так.
function SumPointsX(points) {
var i;
var sum = 0;

for (i = 0; i < points.length; i++) {
sum = sum + points[i].X();
}
return sum;
}
Не работает эта сука ни хрена. Попытка вызвать функцию рушит всю графику, пустой бокс. Вот прям сейчас перепроверила.
Отменяю последнюю строчку
// var SumX = function SumPointsX(target_points);
- вся графика на месте.

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

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

Но ничо, мы другим берем. ;) Фишка же у меня не в том, что я круто программирую, фишка в том, что я перелопачиваю умственный процесс обучения физике и переформарирую его в соответствии с принципами объектного программирования. Что, как оказалось, в терминах дидактики полностью соответствует таксономии Блюма. :)

Image

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

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

ЗЫ. Как функцию написать - скажешь?

Author:  Domnitch [ Fri Nov 01, 2019 2:00 am ]
Post subject:  Re: Need help! Ой как NEED HELP!

Code:
function SumPointsX(points) {
  var i;
  var sum = 0;

  for (i = 0; i < points.length; i++) {
     sum = sum + points[i].X();
  }
  return sum;
...
// var SumX = function SumPointsX(target_points);
}


Алена, если это копипаст твоего кода, то тут 1 явная ошибка и одно подозрительное присваивание

1. Нельзя писать "function" в вызове функции

var SumX = function SumPointsX(target_points);

Надо

var SumX = SumPointsX(target_points);

2. Твердо ли ты уверена, что надо

sum = sum + points[i].X();

а не

sum = sum + points[i].X;

Author:  Alona [ Fri Nov 01, 2019 6:06 am ]
Post subject:  Re: Need help! Ой как NEED HELP!

Domnitch wrote:
Code:
function SumPointsX(points) {
  var i;
  var sum = 0;

  for (i = 0; i < points.length; i++) {
     sum = sum + points[i].X();
  }
  return sum;
...
// var SumX = function SumPointsX(target_points);
}


Алена, если это копипаст твоего кода, то тут 1 явная ошибка и одно подозрительное присваивание

1. Нельзя писать "function" в вызове функции

var SumX = function SumPointsX(target_points);

Надо

var SumX = SumPointsX(target_points);

2. Твердо ли ты уверена, что надо

sum = sum + points[i].X();

а не

sum = sum + points[i].X;
О, спасиб за ценное замечание, Миша.

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

2. Насчет points[i].X() - это опять-таки по образце и подобию. В частности, когда я работаю этой функцией, обрабатывая массив как внешнюю переменную - усё прекрасно работает.

Вот так - работает в лучшем виде.

function SumPointsX() {
var i;
var sum = 0;

for (i = 0; i < nPoints; i++) {
sum = sum + graph_points[i].X();
}
return sum;
}

SumX = SumPointsX();

Собсна, вопрос этот и появился как реализация подспудного осчусчения, а котором писал Андрей: я думаю, что вообще говоря least square fit идеологически правильнее было бы писать так, чтобы загоняешь в него любой массив точек - а на выходе получаешь параметры прямой. Но сделать не могу, чурка безграмотная. Что дико злит.

Если не подскажете коллективным разумом, оставлю, канешн, как есть.

Author:  jourfixe [ Fri Nov 01, 2019 8:23 am ]
Post subject:  Re: Need help! Ой как NEED HELP!

Ага. Ок. Т.е. "arguments" - не глобальная переменная, а зарезервированное слово. Т.е. мой комментарий о глобальных переменных к ситуации не относится. (да, javascript я слегка позабыл)

Но тогда "arguments" используется неверно. У тебя 1 аргумент: массив. А используешь ты его, как будто каждый элемент массива - аргумент, индивидуально прописанный при вызове функции. Т.е. "arguments" тебе повсюду надо поменять на "arguments[0]". Тоже так себе практика.

Ышшо, попридираюсь по мелочам:
1. ты пишешь не на джаве, а на джаваскрипте. Джава - это достаточно таки другой йезык.
2. джаваскрипт, строго говоря, не объектно-ориентированный язык (в отличие от джавы). Наследование там есть, но другое (прототипное). А функции, наоборот, граждане высшего сорта, можно определять и использовать наряду с объектами.
К проблеме это отношения не имеет, так, слегка режет глаз.

Author:  Domnitch [ Fri Nov 01, 2019 10:06 am ]
Post subject:  Re: Need help! Ой как NEED HELP!

Алена, все это крайне странно, примеры разные в разных письмах.

Можешь ли ты дать минимальный законченный пример - просто слепить HTML в десяток-другой строки и вложить его в письмо?
А лучше два - (условно) работающий и не работающий.

И еще совет -

Загони весь свой скрипт в конструкцию try-catch
Примерно так

Code:
<script>
try{

// Тут весь твой код полностью
   
}
catch(err)
{
alert(err);
}
</script>

Author:  Domnitch [ Fri Nov 01, 2019 11:09 am ]
Post subject:  Re: Need help! Ой как NEED HELP!

Вот пример передачи массива в функцию - правда, массива целых, потому что класса Point у меня нет

Пример работает - скопипастить его в файл с расширением html и щелкнуть на нем

Code:
<!DOCTYPE HTML>
<html>

<body>

  <p>Before the script...</p>

  <script>
function SumPointsX(ponts)
{
var sum = 0;

for (var i = 0; i < ponts.length; i++) {
sum = sum + ponts[i];
}
return sum;
}

try {

alert("trace 1");
var global_points = new Array();
global_points[0] = 100;
global_points[1] = 200;
alert("trace 2");

for (var j = 0; j < global_points.length; j++) {
alert(global_points[j]);
}

alert("trace 3");

var sumx = SumPointsX(global_points);
alert(sumx);   
}
catch(err)
{
alert(err.message);
}

alert("trace 4");
  </script>

  <p>...After the script.</p>

</body>

</html>

Author:  Alona [ Fri Nov 01, 2019 12:09 pm ]
Post subject:  Re: Need help! Ой как NEED HELP!

jourfixe wrote:
Ага. Ок. Т.е. "arguments" - не глобальная переменная, а зарезервированное слово. Т.е. мой комментарий о глобальных переменных к ситуации не относится. (да, javascript я слегка позабыл)

Но тогда "arguments" используется неверно. У тебя 1 аргумент: массив. А используешь ты его, как будто каждый элемент массива - аргумент, индивидуально прописанный при вызове функции. Т.е. "arguments" тебе повсюду надо поменять на "arguments[0]". Тоже так себе практика.

Ышшо, попридираюсь по мелочам:
1. ты пишешь не на джаве, а на джаваскрипте. Джава - это достаточно таки другой йезык.
2. джаваскрипт, строго говоря, не объектно-ориентированный язык (в отличие от джавы). Наследование там есть, но другое (прототипное). А функции, наоборот, граждане высшего сорта, можно определять и использовать наряду с объектами.
К проблеме это отношения не имеет, так, слегка режет глаз.
Андрюшенька-душенька, я тебе уже ведь не раз говорила, что я тебя обожаю!

1. Заработало.
2. Я кое-что поняла/вспомнила, что когда-то немного это знала - про так, как устроены многомерные массивы в языках, начиная с С.
3. Про джаву-скрипт - отдельная благодарность! Хотя я почти ничего не поняла, как это? Если сможешь простыми словами еще рассказать на пальцах пару предложений и сказать их правильные имена (если не объектно-ориентированный - но кто?) - буду дико благодарна. Ужасно не люблю чувствовать себя идиоткой.

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

ЗЫ. Про джаву-скрипт. Я правильно поняла, что он собрал достоинства объектно-ориентированных и процедурно-ориентированных языков? А то мне, помнится, было очень неудобно, когда я лет 20 попробовала поучиться на джаве.

Author:  Alona [ Fri Nov 01, 2019 12:15 pm ]
Post subject:  Re: Need help! Ой как NEED HELP!

Domnitch wrote:
Вот пример передачи массива в функцию - правда, массива целых, потому что класса Point у меня нет

Пример работает - скопипастить его в файл с расширением html и щелкнуть на нем
Миш, спасибо!!!!

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

Author:  jourfixe [ Fri Nov 01, 2019 12:54 pm ]
Post subject:  Re: Need help! Ой как NEED HELP!

О! Заработало - и хорошо.
Про java vs. javascript: это два разных языка. Ты нам сейчас демонстрировала javascript. Почему в обоих названиях присутствует слово "java", мне неизвестно. Взять случайным образом два разных языка программирования, так сходства там будет примерно столько же, сколько между java vs. javascript. Разные философии, разные ниши (пересекаются, но непринципиально), отличия в синтаксисе (местами). Из сходств: корень "java" (хехе), популярность (оба очень популярны), и сходство в синтаксисе (опять таки местами).
В общем, взять по ошибке курс джавы вместо джаваскрипта - это примерно пойти стопами Паганеля (португальский вместо испанского)

> Про джаву-скрипт. Я правильно поняла, что он собрал достоинства объектно-ориентированных и процедурно-ориентированных языков? А то мне, помнится, было очень неудобно, когда я лет 20 попробовала поучиться на джаве.

ХЕЗ. Объектно-ориентированный? Да, но с оговоркой: наследование в JS прототипное. Процедуральный? Вполне. Функциональный? Отчасти. За последние 10 лет функциональщины стало больше, язык развивается.

С другой стороны, Джава сейчас тоже уже совсем не та, что ты учила 20 лет назад. 20 лет назад это был язык с весьма строгой Объектно-Ориентированной философией. Начиная с 8-й версии стала постепенно появляться функциональщина, а сейчас она там в полный рост.

> Можно я иногда буду в эту ветку глупые вопросы задавать?
Да ради Будды :)

Author:  jourfixe [ Fri Nov 01, 2019 1:39 pm ]
Post subject:  Re: Need help! Ой как NEED HELP!

Вдогонку. Самому стало интересно, погуглил "why javascript has java in its name"
Первая же ссылка:
Quote:
Java is to Javascript what Car is to Carpet. "The language's name is the result of a co-marketing deal between Netscape and Sun, in exchange for Netscape bundling Sun's Java runtime with their then-dominant browser." It was originally called Mocha, renamed to LiveScript, and then renamed to JavaScript.

Page 2 of 6 All times are UTC - 8 hours [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/