JOURFIXE

It is currently Thu Mar 28, 2024 2:47 am

All times are UTC - 8 hours [ DST ]




Post new topic Reply to topic  [ 56 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
Author Message
 Post subject: Re: Need help! Ой как NEED HELP!
PostPosted: Fri Nov 01, 2019 1:22 am 
Offline
User avatar

Joined: Thu Sep 06, 2007 12:20 am
Posts: 18469
Location: Шоам, Израиль
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

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

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

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


Top
 Profile  
 
 Post subject: Re: Need help! Ой как NEED HELP!
PostPosted: Fri Nov 01, 2019 2:00 am 
Offline
User avatar

Joined: Sun Sep 09, 2007 11:53 pm
Posts: 18377
Location: St.-Petersburg, Russia
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;

_________________
Кот домашний средней пушистости


Top
 Profile  
 
 Post subject: Re: Need help! Ой как NEED HELP!
PostPosted: Fri Nov 01, 2019 6:06 am 
Offline
User avatar

Joined: Thu Sep 06, 2007 12:20 am
Posts: 18469
Location: Шоам, Израиль
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 идеологически правильнее было бы писать так, чтобы загоняешь в него любой массив точек - а на выходе получаешь параметры прямой. Но сделать не могу, чурка безграмотная. Что дико злит.

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


Top
 Profile  
 
 Post subject: Re: Need help! Ой как NEED HELP!
PostPosted: Fri Nov 01, 2019 8:23 am 
Offline

Joined: Fri Sep 07, 2007 11:39 am
Posts: 7075
Ага. Ок. Т.е. "arguments" - не глобальная переменная, а зарезервированное слово. Т.е. мой комментарий о глобальных переменных к ситуации не относится. (да, javascript я слегка позабыл)

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

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

_________________
Пух. Винни Пух.


Top
 Profile  
 
 Post subject: Re: Need help! Ой как NEED HELP!
PostPosted: Fri Nov 01, 2019 10:06 am 
Offline
User avatar

Joined: Sun Sep 09, 2007 11:53 pm
Posts: 18377
Location: St.-Petersburg, Russia
Алена, все это крайне странно, примеры разные в разных письмах.

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

И еще совет -

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

Code:
<script>
try{

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

_________________
Кот домашний средней пушистости


Top
 Profile  
 
 Post subject: Re: Need help! Ой как NEED HELP!
PostPosted: Fri Nov 01, 2019 11:09 am 
Offline
User avatar

Joined: Sun Sep 09, 2007 11:53 pm
Posts: 18377
Location: St.-Petersburg, Russia
Вот пример передачи массива в функцию - правда, массива целых, потому что класса 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>

_________________
Кот домашний средней пушистости


Top
 Profile  
 
 Post subject: Re: Need help! Ой как NEED HELP!
PostPosted: Fri Nov 01, 2019 12:09 pm 
Offline
User avatar

Joined: Thu Sep 06, 2007 12:20 am
Posts: 18469
Location: Шоам, Израиль
jourfixe wrote:
Ага. Ок. Т.е. "arguments" - не глобальная переменная, а зарезервированное слово. Т.е. мой комментарий о глобальных переменных к ситуации не относится. (да, javascript я слегка позабыл)

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

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

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

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

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


Top
 Profile  
 
 Post subject: Re: Need help! Ой как NEED HELP!
PostPosted: Fri Nov 01, 2019 12:15 pm 
Offline
User avatar

Joined: Thu Sep 06, 2007 12:20 am
Posts: 18469
Location: Шоам, Израиль
Domnitch wrote:
Вот пример передачи массива в функцию - правда, массива целых, потому что класса Point у меня нет

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

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


Top
 Profile  
 
 Post subject: Re: Need help! Ой как NEED HELP!
PostPosted: Fri Nov 01, 2019 12:54 pm 
Offline

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

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

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

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

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

_________________
Пух. Винни Пух.


Top
 Profile  
 
 Post subject: Re: Need help! Ой как NEED HELP!
PostPosted: Fri Nov 01, 2019 1:39 pm 
Offline

Joined: Fri Sep 07, 2007 11:39 am
Posts: 7075
Вдогонку. Самому стало интересно, погуглил "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.

_________________
Пух. Винни Пух.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 56 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

All times are UTC - 8 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group