Отличная подборка сайтов для самостоятельной учебы http://habrahabr.ru/post/156241/ Ссылка на торрент для Microsoft Visual Studio Ultimate 2012. Версия взломанная так что на ваш выбор http://zalil.ru/34639689
Спасибо! Хочется отметить сайт intuit.ru, на котором выложена тьма бесплатных курсов на всевозможные темы, связанные с околокомпьютерными дисциплинами, включая программирование. Правда, на русском.
Ссылка на torrent. INTUIT.ru: Локальная версия курсов (2011) - 370 курсов (DVD) [2011] [ISO].Локальная версия сайта. Намного удобнее, доступны все курсы и не требует регистрации http://nnm-club.ru/forum/viewtopic.php?t=287586
Сфотографировал и отправил (тем кто записался, разумеется) на email список телефонов и email нашей группы. Если кто-то вдруг не получил список напишите письмо мне на email alexzubc(собака)gmail(точка)com.
Если кому-то будет вдруг интересно, я выложил полностью решение всех задач из первого домашнего задания (того, что задавали на втором занятии). Вот ссылка для скачивания: http://yadi.sk/d/_SIGsSoM6uhPE P.S. А это очень простой и удобный (полностью бесплатный) редактор блок-схем, которым я пользуюсь. Ссылка для скачивания: http://www.downloadbestsoft.com/Diagram-Designer.html
Ссылка на 80+ гигабайт разных кусов правда все на англ языке. http://nnm-club.ru/forum/viewtopic.php?t=406519 Единственный минус это то, что они не используют Visual Studio но важен то код а не компилятор.
// input var num1 = parseInt(prompt("Enter the 1 number")); var num2 = parseInt(prompt("Enter the 2 number")); var num3 = parseInt(prompt("Enter the 3 number")); var num4 = parseInt(prompt("Enter the 4 number")); var num5 = parseInt(prompt("Enter the 5 number"));
var nummax = num1; //flag
//Process if (num2 > num1) { nummax == num2 };
if (num3 > num2) { nummax == num3 };
if (num4 > num3) { nummax == num4 };
if (num5 > num4) { nummax == num5 };
//output
alert("max number is " + nummax);
почему не работает
и огромное спасибо за всю предаставленую информацию
ндрей ты везде пишешь после if (num2 > num1) следующий код: { nummax == num2 }
А должно быть так: { nummax = num2 }
Нужно ПРИСВАИВАТЬ переменной nummax значение которое лежит в num2, а ты СРАВНИВАЕШЬ. "==" - это оператор СРАВНЕНИЯ (логический true/false), а должно быть "равно". "=" - оперататор ПРИСВОЕНИЯ значения переменной. P.S. Прошу прощения, если объяснил излишне подробно привычка после работы в helpdesk :)
Только сейчас заметил вторую важную ошибку в твоем тексте программы - в условии оператора if. Нужно сравнивать num2 > nummax, а не num2 > num1. И так везде. Вот рабочий код, только рекомендую не делать "копи-паст", а разобраться в каждой строчке: // input var num1 = parseInt(prompt("Enter the 1 number")); var num2 = parseInt(prompt("Enter the 2 number")); var num3 = parseInt(prompt("Enter the 3 number")); var num4 = parseInt(prompt("Enter the 4 number")); var num5 = parseInt(prompt("Enter the 5 number"));
Ещё один момент: правильно расставлять ";". Точку с запятой нужно ставить после каждой отдельной инструкции. Например, после закрывающей фигурной скобки точка с запятой не требуется, фигурные скобки обозначают отдельный блок (список) инструкций.
Если блок после if содержит только одну инструкцию, то фигруные скобки не обязательны. Фигрурные скобки требуются лишь когда инструкций (т.е. операторов, вычислений, вызовов функций) больше чем одна. Пример if без фигурных скобок: if (num2 > nummax) nummax = num2; //одна инструкция, фигурные скобки не обязательны.
if (num3 > nummax) //одна инструкция, фигурные скобки не обязательны. nummax = num3;
Пример if с нескольколькими инстукциями и фигурными скобками: if(num2 > nummax) { nummax = num2; //первая инструкция alert('Now nummax is ' + nummax); //вторая инструкция }
Думаю вы обратили внимание, на третьем занятии Сергей показал нам интересную "фишку" языка javascript. Чтобы в программе можно было вводить и обратывать дробные числа ("5.2", "1.9", "0.5"). Преобразование строки в число делаем с помощью команды Number: var num1 = Number(prompt("Enter the 1 number"));
Привет ребята не знала что вы так быстро организуетесь. вчера лично пришла и вырубилась. Текст домашнего задания тем кому собственно нужно.
Д/з.
Написать программу которая с клавиатуры принимает три числа и определяет минимальное из них.
с клавиатуры вводятся три числа а также слово min или max. В зависимости от введенного слова выводится или максимальное или минимальное значение.
Вводится число которое обозначает возраст. Если возраст попадает в диапазон от 21 одного года до 45 включая границы тогда выводить на экран Success. В противном случае n0
с клавиатуры вводится целое число это возраст. А также буковка обозначающая пол. м - мужской ж - женский. Для мужчин 21 - 45, для женщин с 18 - 38, включая границы. да или нет. Программа проверяет попадание возраста в диапазон в зависимости от возраста и пола.
Маленькая поправка-дополнение. 1) В том задании, которое дал Сергей, в 4й задаче для указания пола пользователь вводит английские буквы m и f, а также M и F. То есть программа должна принимать как ответ буквы как Заглавного, так и строчного регистра.
2) В 3й и 4й задачах в случае не попадания возраста в заданый интервал пишется слово "Denied!".
Решение 1-го дом. задания 3-го урока с небольшим изменением условия: количество вводимых чисел ограничено упрямством пользователя и системными ресурсами. Для определения максимального числа использовался разъяснённый на уроке Сергеем флаг-метод:
http://a1111exe.com/mcsd/maxnum.html
При составлении кода гуглил и использовал следующие референс-источники:
Алексей, посмотрел код, хорошее решение =). Вопрос: где можно почитать про символы которые ты использовал для инициализации переменной pattern. Если я правильно понял, ты использовал escape-последовательности?
Разобрался я с этим pattern (блин заняло время!). Но на мой взгляд следующее решение несколько проще и понятнее в плане кода. Названия переменных, текст prompt использовал почти те же: var txtNumS = new Array(); //text array for input data //input and check if input is number do { var txtNum = prompt('Enter a number.\n' + 'Entering an empty field ' + 'stops the prompt and begins calculations',""); if(!(isNaN(Number(txtNum)))) { txtNumS.push(txtNum); } } while(txtNum != "");
Потребуется некоторое время, чтобы разобраться в коде. Вот несколько хинтов: - для ввода и хранения данных в программе использован массив строк txtNumS (массив - это грубо говоря много переменных под одним именем) ; - при вводе каждого элемента txtNum (т.е. строки) в этот массив проверяется можно ли преобразовать этот элемент в число. - Если преобразование в число возможно, то новая строка вносится в массив. - Если преобразование невозможно, то этот элемент нам не нужен, ти он не вносится в массив. - размер массива увеличивается в зависимости от количества вводимых чисел; - преобразование из текста в число производится с помощью функции Number; - ввод данных заканчивается при нажатии Enter (введена "пустая строка"); - переменная maxNum используется в качестве флага; - чтобы найти максимальное число перебираются последовательно все элементы массива; - i - это переменная цикла. она увеличивается на 1 при каждом новом цикле (т.е. повторении) программы. Вот как-то так. Если будут вопросы, готов ответить.
Я изначально ориентировался только на целые числа, поэтому использовал regex, не особо заморачиваясь. Спасибо за твой вариант, надо будет его потестировать.
Потестировал. Проблема в том, что функция Number() возвращает 0 для пустой строки. Проверка: alert(Number("")); Для проверки максимума это куда ни шло, но если есть проверка минимума, то если все числа положительны - объявляется не введённый явно ноль и заявляет, что он минимальное число. Так что пока я оставляю валидацию на regex.
Алексей, ты совершенно прав на счет функции Number. Чтобы решить задачу с минимум я слегка подправил свой код из задачи с максимумом. Получилось вот так: do { var txtNum = prompt('Enter a number.\n' + 'Entering an empty field ' + 'stops the prompt and begins calculations', ""); if ( !(isNaN(Number(txtNum))) && (txtNum != "") ) { txtNumS.push(txtNum); } } while (txtNum != "");
Выглядит логично, должно работать! С другой стороны, я модифицировал regex, так что можно вводить и десятичные дроби, а вместо parseInt() ввёл Number(), так что теперь второе решение ищет максимум или минимум не только по целым числам. Кроме того, я уже написал комментарий, подробно объясняющий regex, так что в этом месте модифицировать код уже не буду. Тем более, что на самом деле знание regex это MUST в программировании. Научившись пользоваться регулярными выражениями, програмисты и сисадмины, как наркоманы, уже без них не могут ^) http://a1111exe.com/mcsd/maxminnum.html
Кто-то из группы говорил, что HTML5 требует наличия атрибута type в теге script. Внесу ясность. В HTML5 атрибут type НЕ является необязательным, в отличие от предыдущих версий HTML4, HTML4.1 где писать type было обязательно. Практически все современные броузеры поддерживают HTML5, и форма записи script type="text/javascript" является избыточной. Источник: http://www.w3schools.com/tags/tag_script.asp
Добавил решение четвертой задачи. Теперь доступно решение всех четырех задач из второго домашнего задания. Ссылка прежняя: http://yadi.sk/d/oivY-Tlu6xw6f
Если учесть что мы еще не изучали ни массивы (array) ни циклы (loop while for ...) и кроме того, судя по записанному проверять ввод никто не просил, все это лишнее. И кстати проверку ввода можно делать и с помощью флага примерно таким образом: var boolnum=true; var txtNum=new array(); var i=0; while (bullnum=true) { var txtNum[i] =prompt("please enter number\n, if you input is not a number the script will proceed calculations"); if (Number(txtNum[i])==NaN) { bullnum=false } i++ } и далее вычисления. Дело в том, что нам сказали, что если задача не поставлена, выполнять ее не надо, а тем более придумывать. А так как нам ни сказали делать проверку ввода, все это на самом деле лишнее.
Насколько я помню, Сергей говорил о справедливой точке зрения работодателя. Мы же пока учимся на курсе, и Сергей наш учитель, но не работодатель.
Кроме того, как ни крути, мы все пришли на этот курс с разными подготовкой, опытом и знаниями. Это естественно. Но и тем более естественно брать задачи своего уровня, чтобы чему-то учиться и на начальных этапах. Я решал задачу для произвольного количества чисел с примитивной валидацией не от праздности, а ради экспириенса. Ну и интересно же... :)
У кого не было такого опыта с Javascript - может посмотреть код, который я постараюсь подробно прокомментировать (на английском), включив референс-материалы - а может и не смотреть, довольствуясь темпом курса. Я не планирую пока удалять эти странички из онлайна, так что они могут оказаться полезны, когда мы-таки да дойдём до циклов и валидации регулярными выражениями.
>> Если учесть что мы еще не изучали ни массивы (array) ни циклы (loop while for ...) и кроме того, судя по записанному проверять ввод никто не просил, все это лишнее >> Безусловно можно сделать все задачи намного проще чем это сделал я или Алексей. Но образовательный эффект от такого упрощения будет стремиться к нулю. Здесь я согласен с Алексеем. Я тоже помню, что Сергей говорил о справедливой точке зрения работодателя.
Пока мы на курсе, нужно накручивать себя по максимуму изучать и проверить на практике как можно больше. Это как в тиронуте, сначала ты работаешь на подготовку, потом подготовка работает на тебя.
И потом никто не мешает "забегать вперед". Ничего архисложного предложено не было. Пользуясь референсами которые указал Алексей можно понять все листинги программ. Пусть не все и сразу, но постепенно придет понимаение и массив, и циклов, и проверок ввода. Это важные по моему мнению моменты и я не считаю разумным удалять листинги.
блин народ пытаюсь делать по проще а вы куда то летите что просто слов нет и опять не работает N2
alert("Adding five numbers");
// input var num1 = parseInt(prompt("Enter the 1 number")); var num2 = parseInt(prompt("Enter the 2 number")); var num3 = parseInt(prompt("Enter the 3 number")); var min = ("min"); var max = ("max"); var check = (prompt("Insert our choice")); var nummax = num1; //flag max var nummin = num3; //flag min //Process
if ( check = max ) неправильно, если ты хочешь сравнить текст, то нужно заключать его в кавычки то есть if ((check="max")||(check="MAX")) так как было особо подчеркнуть, что нужно учитывать регистр кроме того не нужно ставить ; после } ; это окончание команды, что то акцента, говорящего компилятору - вот конец команды } это окончание блока то есть когда ты делаешь }; это и синтаксически (правила написания на комп языке) неправильно, кроме того, это может неправильно компилироватьзя, и использует лишнюю память, чего следует избегать.
1. Оператор "=" в большинстве языков программирования (если не во всех) - оператор присваивания, а не проверки равенства. Т.е., в этой инструкции ты не проверяешь, является ли содержимое переменной "check" равным значению переменной "max", а присваиваешь переменной "check" значение переменной "max" И проверяешь, что результат (значение "check") определён и не является пустой строкой (""). 2. Но даже если в этом была твоя задумка, то оператор "if" всё равно использован синтаксически неправильно. После того, как закрывается скобка условия, должен быть блок инструкций в фигурных скобках, или хотя бы одна инструкция, и вот она-то и должна завершаться точкой с запятой.
Все остальные операторы выбора "if" записаны у тебя в такой форме: "if (...) { instruction };" Это также синтаксически неверно. Вот правильная форма: "if (...) { instruction; }" С нашей точки зрения отличие небольшое, но для парсера (интерпретатора) Javascript его достаточно, чтобы не понять твой код.
Также неверно использован оператор "else": он всегда должен следовать после инструкций блока "if". Очевидно, тебя на этом этапе сильно путает синтаксис. В этом случае хорошей практикой, которая поможет привыкнуть к синтаксису и пользоваться им свободней, является намеренный отказ от использования любых сокращений и упрощений, допускаемых правилами синтаксиса изучаемого языка. Например, следующий код должен работать (разумеется, нужно убрать открывающую и закрывающую кавычки, которые я использую не как часть кода, а для обозначения цитирования): "if(myvar = "") alert("WOW"); else alert("MEOW");" Но тебе даже такой код лучше писать в форме, включающей фигурные скобки: "if(myvar = "") {alert("WOW");} else {alert("MEOW");}" И совсем хорошо вот так: " if(myvar = "") { alert("WOW"); } else { alert("MEOW"); } "
Кстати, ты можешь попробовать использовать встроенный во многие браузеры диспетчер сообщений и ошибок для Javascript. Он, по крайней мере в Firefox и Chrome вызывается нажатием клавиш: ctrl + shift + j
Андрей вот наипростейший вариант (который смогла выдать моя голова)с подробными коментариями. Проверил - все работает. alert("Finding minimal or maximal number"); // input var num1 = parseInt(prompt("Enter the 1 number")); var num2 = parseInt(prompt("Enter the 2 number")); var num3 = parseInt(prompt("Enter the 3 number"));
//variables for switch opertor var txtmin = ("min"); var txtmax = ("max");
//ask user what to do: to find minimal number or maximal number var check = prompt("Enter action (min or max)");
//Processing var nummin = num1; //flag max. Usually we put as flag the first element of data. var nummax = num1; //flag min. Usually we put as flag the first element of data.
/* ####################################################################################### # Switch statement. # The switch statement is used to perform different action based on different conditions. # This is how it works: First we have a single expression n (most often a variable), # that is evaluated once. The value of the expression is then compared with the values # for each case in the structure. # If there is a match, the block of code associated with that case is executed. # Use break to prevent the code # from running into the next case automatically. # More information can be found here: http://www.w3schools.com/js/js_switch.asp ####################################################################################### */ switch (check) { case txtmin: //user entered "min" if (num2 < nummin) { nummin = num2; } if (num3 < nummin) { nummin = num3; } //output minimal number alert("Minimal number is " + nummin); break; case txtmax: //user entered "max" if (num2 > nummax) { nummax = num2; } if (num3 > nummax) { nummax = num3; } //output maximal number alert("Maximal number is " + nummax); break; default: alert("Wrong input!"); } Ссылка на рабочий файл с этим кодом: http://yadi.sk/d/k6tr0CCm70yNj
Я же указал что это наипростейший вариант. Он написан для иллюстрации решения задачи и помощи тем, у кого пока небольшой опыт в программировании. Вариант с проверкой ввода, дробными числами и учитывающий оба регистра (а также вариант mIN, mIn, miN и т.п.) был представлен мной выше.
Всем привет. Согласна с александром. Здесь как в музыке. Если ты придешь в музыкальную школу со знанием уже клавиатуры всеравно тебя заставят играть гаммы. Потому что без них никуда. Так что целиком и полностью +10
неудобно не то слово. редактировать нельзя. Добавлять коммент... это просто трендец. Айда может скайп конфу создадим? а? ребята добавляйтесь там хоть пообщаться можно а тут как то стыдновато рассказывать о том как где и что вроде учебное место. Не для флуда. Мой скайп niyana2
Скайп-конфа отличная идея. Я сейчас онлайн (ник alexzubc). Еще идея - поднять форум (например phpBB или joomla)на бесплатном хостинге. Как вам? Если будет достаточно желащих переехать на форум, я сегодня займусь этой задачей. Пишите свое мнение
Решения для всех 4-х заданий: 1. http://a1111exe.com/mcsd/maxnum.html 2. Скрипт довольно подробно прокомментирован. http://a1111exe.com/mcsd/maxminnum.html 3. http://a1111exe.com/mcsd/succage.html 4. Сила логических констант: достаточно одного "if...else..." для проверки. http://a1111exe.com/mcsd/succagefm.html
Функции Math.max и Math.min имеют фикисированное число аргументов, то есть при изменении количества вводимых чисел придется переписывать код. Плюс ехотя бы один из аргументов не может быть приведен к числу, то функция возвращает NaN, соответственно нужно водить дополнительные проверки.
Я тоже этого не понял. Поэтом позвонил в контоору в который мы учимся мне там дали такой адрес: nemetzsoft(собака)gmail(точка)com. На него я и выслал решение задач.
Test comment
ReplyDeleteAlex Zubcovsky 8)
ReplyDeletetest comment
ReplyDeleteОтличная подборка сайтов для самостоятельной учебы
ReplyDeletehttp://habrahabr.ru/post/156241/
Ссылка на торрент для Microsoft Visual Studio Ultimate 2012. Версия взломанная так что на ваш выбор
http://zalil.ru/34639689
Спасибо!
DeleteХочется отметить сайт intuit.ru, на котором выложена тьма бесплатных курсов на всевозможные темы, связанные с околокомпьютерными дисциплинами, включая программирование. Правда, на русском.
Ссылка на torrent. INTUIT.ru: Локальная версия курсов (2011) - 370 курсов (DVD) [2011] [ISO].Локальная версия сайта. Намного удобнее, доступны все курсы и не требует регистрации http://nnm-club.ru/forum/viewtopic.php?t=287586
DeleteСфотографировал и отправил (тем кто записался, разумеется) на email список телефонов и email нашей группы. Если кто-то вдруг не получил список напишите письмо мне на email alexzubc(собака)gmail(точка)com.
ReplyDeleteЕсли кому-то будет вдруг интересно, я выложил полностью решение всех задач из первого домашнего задания (того, что задавали на втором занятии). Вот ссылка для скачивания: http://yadi.sk/d/_SIGsSoM6uhPE
ReplyDeleteP.S. А это очень простой и удобный (полностью бесплатный) редактор блок-схем, которым я пользуюсь. Ссылка для скачивания: http://www.downloadbestsoft.com/Diagram-Designer.html
Ссылка на 80+ гигабайт разных кусов правда все на англ языке. http://nnm-club.ru/forum/viewtopic.php?t=406519 Единственный минус это то, что они не используют Visual Studio но важен то код а не компилятор.
ReplyDeleteСпасибо! Замечу, что по этой ссылке необязательно качать все 80+ гигибайт, можно выбрать и скачать только то что нужно (например только уроки по C#).
Deletealert("Adding five numbers");
ReplyDelete// input
var num1 = parseInt(prompt("Enter the 1 number"));
var num2 = parseInt(prompt("Enter the 2 number"));
var num3 = parseInt(prompt("Enter the 3 number"));
var num4 = parseInt(prompt("Enter the 4 number"));
var num5 = parseInt(prompt("Enter the 5 number"));
var nummax = num1; //flag
//Process
if (num2 > num1)
{
nummax == num2
};
if (num3 > num2) {
nummax == num3
};
if (num4 > num3) {
nummax == num4
};
if (num5 > num4) {
nummax == num5
};
//output
alert("max number is " + nummax);
почему не работает
и огромное спасибо за всю предаставленую информацию
ндрей ты везде пишешь после if (num2 > num1) следующий код:
Delete{
nummax == num2
}
А должно быть так:
{
nummax = num2
}
Нужно ПРИСВАИВАТЬ переменной nummax значение которое лежит в num2, а ты СРАВНИВАЕШЬ.
"==" - это оператор СРАВНЕНИЯ (логический true/false),
а должно быть "равно".
"=" - оперататор ПРИСВОЕНИЯ значения переменной.
P.S. Прошу прощения, если объяснил излишне подробно привычка после работы в helpdesk :)
Только сейчас заметил вторую важную ошибку в твоем тексте программы - в условии оператора if.
DeleteНужно сравнивать num2 > nummax, а не num2 > num1. И так везде.
Вот рабочий код, только рекомендую не делать "копи-паст", а разобраться в каждой строчке:
// input
var num1 = parseInt(prompt("Enter the 1 number"));
var num2 = parseInt(prompt("Enter the 2 number"));
var num3 = parseInt(prompt("Enter the 3 number"));
var num4 = parseInt(prompt("Enter the 4 number"));
var num5 = parseInt(prompt("Enter the 5 number"));
var nummax = num1; //flag
//Process
if (num2 > nummax) {
nummax = num2;
}
if (num3 > nummax) {
nummax = num3;
}
if (num4 > nummax) {
nummax = num4
}
if (num5 > nummax) {
nummax = num5;
}
//output
alert("max number is " + nummax);
Ещё один момент: правильно расставлять ";". Точку с запятой нужно ставить после каждой отдельной инструкции. Например, после закрывающей фигурной скобки точка с запятой не требуется, фигурные скобки обозначают отдельный блок (список) инструкций.
DeleteЕсли блок после if содержит только одну инструкцию, то фигруные скобки не обязательны. Фигрурные скобки требуются лишь когда инструкций (т.е. операторов, вычислений, вызовов функций) больше чем одна.
DeleteПример if без фигурных скобок:
if (num2 > nummax)
nummax = num2; //одна инструкция, фигурные скобки не обязательны.
if (num3 > nummax) //одна инструкция, фигурные скобки не обязательны.
nummax = num3;
Пример if с нескольколькими инстукциями и фигурными скобками:
if(num2 > nummax) {
nummax = num2; //первая инструкция
alert('Now nummax is ' + nummax); //вторая инструкция
}
This comment has been removed by the author.
ReplyDeleteДумаю вы обратили внимание, на третьем занятии Сергей показал нам интересную "фишку" языка javascript.
ReplyDeleteЧтобы в программе можно было вводить и обратывать дробные числа ("5.2", "1.9", "0.5"). Преобразование строки в число делаем с помощью команды Number:
var num1 = Number(prompt("Enter the 1 number"));
Можно также пользоваться parceFloat преобразует в дробное число. Но тогда при выводе он будет выдавать число в виде дроби, даже если оно было целым.
DeleteПривет ребята не знала что вы так быстро организуетесь. вчера лично пришла и вырубилась. Текст домашнего задания тем кому собственно нужно.
ReplyDeleteД/з.
Написать программу которая с клавиатуры принимает три числа и определяет минимальное из них.
с клавиатуры вводятся три числа а также слово min или max. В зависимости от введенного слова выводится или максимальное или минимальное значение.
Вводится число которое обозначает возраст. Если возраст попадает в диапазон от 21 одного года до 45 включая границы тогда выводить на экран Success. В противном случае n0
с клавиатуры вводится целое число это возраст. А также буковка обозначающая пол. м - мужской ж - женский. Для мужчин 21 - 45, для женщин с 18 - 38, включая границы. да или нет. Программа проверяет попадание возраста в диапазон в зависимости от возраста и пола.
Маленькая поправка-дополнение.
Delete1) В том задании, которое дал Сергей, в 4й задаче для указания пола пользователь вводит английские буквы m и f, а также M и F. То есть программа должна принимать как ответ буквы как Заглавного, так и строчного регистра.
2) В 3й и 4й задачах в случае не попадания возраста в заданый интервал пишется слово "Denied!".
Решение 1-го дом. задания 3-го урока с небольшим изменением условия: количество вводимых чисел ограничено упрямством пользователя и системными ресурсами. Для определения максимального числа использовался разъяснённый на уроке Сергеем флаг-метод:
ReplyDeletehttp://a1111exe.com/mcsd/maxnum.html
При составлении кода гуглил и использовал следующие референс-источники:
http://www.webdeveloper.com/forum/showthread.php?146858-store-prompt-input-in-array-display-array-help
http://www.w3schools.com/jsref/jsref_obj_regexp.asp
http://www.w3schools.com/jsref/met_win_prompt.asp
http://www.w3schools.com/js/js_obj_array.asp
Алексей, посмотрел код, хорошее решение =). Вопрос: где можно почитать про символы которые ты использовал для инициализации переменной pattern. Если я правильно понял, ты использовал escape-последовательности?
DeleteРазобрался я с этим pattern (блин заняло время!).
DeleteНо на мой взгляд следующее решение несколько проще и понятнее в плане кода. Названия переменных, текст prompt использовал почти те же:
var txtNumS = new Array(); //text array for input data
//input and check if input is number
do {
var txtNum = prompt('Enter a number.\n' +
'Entering an empty field ' +
'stops the prompt and begins calculations',"");
if(!(isNaN(Number(txtNum)))) {
txtNumS.push(txtNum);
}
}
while(txtNum != "");
//processing
maxNum = Number(txtNumS[0]);
for(var i = 1; i < txtNumS.length; i++) {
if(Number(txtNumS[i] > maxNum)) {
maxNum = Number(txtNumS[i]);
}
}
//output
alert('The entered numbers are: ' +
txtNumS.join() +
'\nThe maximal of them is ' +
maxNum);
слишком не понятно для начинаюших
DeleteПотребуется некоторое время, чтобы разобраться в коде. Вот несколько хинтов:
Delete- для ввода и хранения данных в программе использован массив строк txtNumS (массив - это грубо говоря много переменных под одним именем) ;
- при вводе каждого элемента txtNum (т.е. строки) в этот массив проверяется можно ли преобразовать этот элемент в число.
- Если преобразование в число возможно, то новая строка вносится в массив.
- Если преобразование невозможно, то этот элемент нам не нужен, ти он не вносится в массив.
- размер массива увеличивается в зависимости от количества вводимых чисел;
- преобразование из текста в число производится с помощью функции Number;
- ввод данных заканчивается при нажатии Enter (введена "пустая строка");
- переменная maxNum используется в качестве флага;
- чтобы найти максимальное число перебираются последовательно все элементы массива;
- i - это переменная цикла. она увеличивается на 1 при каждом новом цикле (т.е. повторении) программы.
Вот как-то так. Если будут вопросы, готов ответить.
Александр,
DeleteЯ изначально ориентировался только на целые числа, поэтому использовал regex, не особо заморачиваясь. Спасибо за твой вариант, надо будет его потестировать.
Потестировал. Проблема в том, что функция Number() возвращает 0 для пустой строки. Проверка: alert(Number(""));
DeleteДля проверки максимума это куда ни шло, но если есть проверка минимума, то если все числа положительны - объявляется не введённый явно ноль и заявляет, что он минимальное число. Так что пока я оставляю валидацию на regex.
Алексей, ты совершенно прав на счет функции Number. Чтобы решить задачу с минимум я слегка подправил свой код из задачи с максимумом.
DeleteПолучилось вот так:
do {
var txtNum = prompt('Enter a number.\n' +
'Entering an empty field ' +
'stops the prompt and begins calculations', "");
if ( !(isNaN(Number(txtNum))) && (txtNum != "") ) {
txtNumS.push(txtNum);
}
}
while (txtNum != "");
Выглядит логично, должно работать! С другой стороны, я модифицировал regex, так что можно вводить и десятичные дроби, а вместо parseInt() ввёл Number(), так что теперь второе решение ищет максимум или минимум не только по целым числам. Кроме того, я уже написал комментарий, подробно объясняющий regex, так что в этом месте модифицировать код уже не буду. Тем более, что на самом деле знание regex это MUST в программировании. Научившись пользоваться регулярными выражениями, програмисты и сисадмины, как наркоманы, уже без них не могут ^)
Deletehttp://a1111exe.com/mcsd/maxminnum.html
Решение 2-го задания с аналогичным изменением условия. Собственно, это модификация решения 1-го задания:
ReplyDeletehttp://a1111exe.com/mcsd/maxminnum.html
Дополнительный использованный референс:
http://www.w3schools.com/js/js_switch.asp
Постараюсь на досуге добавить в код комментарии, подробно объясняющие работу программ.
Кто-то из группы говорил, что HTML5 требует наличия атрибута type в теге script. Внесу ясность.
ReplyDeleteВ HTML5 атрибут type НЕ является необязательным, в отличие от предыдущих версий HTML4, HTML4.1 где писать type было обязательно.
Практически все современные броузеры поддерживают HTML5, и форма записи script type="text/javascript" является избыточной.
Источник:
http://www.w3schools.com/tags/tag_script.asp
Решение всех задач из второго домашнего задания (кроме последней задачи, сейчас цейтнот на работе, выложу ее вечером):
ReplyDeletehttp://yadi.sk/d/oivY-Tlu6xw6f
Добавил решение четвертой задачи. Теперь доступно решение всех четырех задач из второго домашнего задания.
DeleteСсылка прежняя: http://yadi.sk/d/oivY-Tlu6xw6f
Если учесть что мы еще не изучали ни массивы (array) ни циклы (loop while for ...) и кроме того, судя по записанному проверять ввод никто не просил, все это лишнее. И кстати проверку ввода можно делать и с помощью флага примерно таким образом:
ReplyDeletevar boolnum=true;
var txtNum=new array();
var i=0;
while (bullnum=true)
{
var txtNum[i] =prompt("please enter number\n, if you input is not a number the script will proceed calculations");
if (Number(txtNum[i])==NaN)
{
bullnum=false
}
i++
}
и далее вычисления.
Дело в том, что нам сказали, что если задача не поставлена, выполнять ее не надо, а тем более придумывать.
А так как нам ни сказали делать проверку ввода, все это на самом деле лишнее.
если кому что непонятно объясню. Могут быть небольшие ошибки в коде, я не компилировал =)
DeleteНасколько я помню, Сергей говорил о справедливой точке зрения работодателя. Мы же пока учимся на курсе, и Сергей наш учитель, но не работодатель.
DeleteКроме того, как ни крути, мы все пришли на этот курс с разными подготовкой, опытом и знаниями. Это естественно. Но и тем более естественно брать задачи своего уровня, чтобы чему-то учиться и на начальных этапах. Я решал задачу для произвольного количества чисел с примитивной валидацией не от праздности, а ради экспириенса. Ну и интересно же... :)
У кого не было такого опыта с Javascript - может посмотреть код, который я постараюсь подробно прокомментировать (на английском), включив референс-материалы - а может и не смотреть, довольствуясь темпом курса. Я не планирую пока удалять эти странички из онлайна, так что они могут оказаться полезны, когда мы-таки да дойдём до циклов и валидации регулярными выражениями.
>> Если учесть что мы еще не изучали ни массивы (array) ни циклы (loop while for ...) и кроме того, судя по записанному проверять ввод никто не просил, все это лишнее
Delete>>
Безусловно можно сделать все задачи намного проще чем это сделал я или Алексей. Но образовательный эффект от такого упрощения будет стремиться к нулю. Здесь я согласен с Алексеем. Я тоже помню, что Сергей говорил о справедливой точке зрения работодателя.
Пока мы на курсе, нужно накручивать себя по максимуму изучать и проверить на практике как можно больше. Это как в тиронуте, сначала ты работаешь на подготовку, потом подготовка работает на тебя.
И потом никто не мешает "забегать вперед". Ничего архисложного предложено не было. Пользуясь референсами которые указал Алексей можно понять все листинги программ. Пусть не все и сразу, но постепенно придет понимаение и массив, и циклов, и проверок ввода. Это важные по моему мнению моменты и я не считаю разумным удалять листинги.
Целиком и полностью согласен с Александром!
Deleteблин народ пытаюсь делать по проще а вы куда то летите что просто слов нет
ReplyDeleteи опять не работает N2
alert("Adding five numbers");
// input
var num1 = parseInt(prompt("Enter the 1 number"));
var num2 = parseInt(prompt("Enter the 2 number"));
var num3 = parseInt(prompt("Enter the 3 number"));
var min = ("min");
var max = ("max");
var check = (prompt("Insert our choice"));
var nummax = num1; //flag max
var nummin = num3; //flag min
//Process
if ( check = max );
//max
if (num2 > nummax)
{
nummax = num2
};
if (num3 > nummax) {
nummax = num3
};
alert( nummax );
//min
else
if (num1 < nummin)
{
nummin = num1
};
if (num2 < nummin) {
nummin = num2
};
alert( nummin );
if ( check = max ) неправильно, если ты хочешь сравнить текст, то нужно заключать его в кавычки то есть
Deleteif ((check="max")||(check="MAX"))
так как было особо подчеркнуть, что нужно учитывать регистр
кроме того не нужно ставить ; после }
; это окончание команды, что то акцента, говорящего компилятору - вот конец команды
} это окончание блока то есть когда ты делаешь }; это и синтаксически (правила написания на комп языке) неправильно, кроме того, это может неправильно компилироватьзя, и использует лишнюю память, чего следует избегать.
Андрей,
Delete"if ( check = max );"
1. Оператор "=" в большинстве языков программирования (если не во всех) - оператор присваивания, а не проверки равенства. Т.е., в этой инструкции ты не проверяешь, является ли содержимое переменной "check" равным значению переменной "max", а присваиваешь переменной "check" значение переменной "max" И проверяешь, что результат (значение "check") определён и не является пустой строкой ("").
2. Но даже если в этом была твоя задумка, то оператор "if" всё равно использован синтаксически неправильно. После того, как закрывается скобка условия, должен быть блок инструкций в фигурных скобках, или хотя бы одна инструкция, и вот она-то и должна завершаться точкой с запятой.
Все остальные операторы выбора "if" записаны у тебя в такой форме:
"if (...) { instruction };"
Это также синтаксически неверно. Вот правильная форма:
"if (...) { instruction; }"
С нашей точки зрения отличие небольшое, но для парсера (интерпретатора) Javascript его достаточно, чтобы не понять твой код.
Также неверно использован оператор "else": он всегда должен следовать после инструкций блока "if". Очевидно, тебя на этом этапе сильно путает синтаксис. В этом случае хорошей практикой, которая поможет привыкнуть к синтаксису и пользоваться им свободней, является намеренный отказ от использования любых сокращений и упрощений, допускаемых правилами синтаксиса изучаемого языка. Например, следующий код должен работать (разумеется, нужно убрать открывающую и закрывающую кавычки, которые я использую не как часть кода, а для обозначения цитирования):
"if(myvar = "") alert("WOW"); else alert("MEOW");"
Но тебе даже такой код лучше писать в форме, включающей фигурные скобки:
"if(myvar = "") {alert("WOW");} else {alert("MEOW");}"
И совсем хорошо вот так:
"
if(myvar = "") {
alert("WOW");
} else {
alert("MEOW");
}
"
Кстати, ты можешь попробовать использовать встроенный во многие браузеры диспетчер сообщений и ошибок для Javascript. Он, по крайней мере в Firefox и Chrome вызывается нажатием клавиш: ctrl + shift + j
This comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
DeleteThis comment has been removed by the author.
ReplyDeleteАндрей вот наипростейший вариант (который смогла выдать моя голова)с подробными коментариями. Проверил - все работает.
ReplyDeletealert("Finding minimal or maximal number");
// input
var num1 = parseInt(prompt("Enter the 1 number"));
var num2 = parseInt(prompt("Enter the 2 number"));
var num3 = parseInt(prompt("Enter the 3 number"));
//variables for switch opertor
var txtmin = ("min");
var txtmax = ("max");
//ask user what to do: to find minimal number or maximal number
var check = prompt("Enter action (min or max)");
//Processing
var nummin = num1; //flag max. Usually we put as flag the first element of data.
var nummax = num1; //flag min. Usually we put as flag the first element of data.
/* #######################################################################################
# Switch statement.
# The switch statement is used to perform different action based on different conditions.
# This is how it works: First we have a single expression n (most often a variable),
# that is evaluated once. The value of the expression is then compared with the values
# for each case in the structure.
# If there is a match, the block of code associated with that case is executed.
# Use break to prevent the code
# from running into the next case automatically.
# More information can be found here: http://www.w3schools.com/js/js_switch.asp
####################################################################################### */
switch (check) {
case txtmin: //user entered "min"
if (num2 < nummin) {
nummin = num2;
}
if (num3 < nummin) {
nummin = num3;
}
//output minimal number
alert("Minimal number is " + nummin);
break;
case txtmax: //user entered "max"
if (num2 > nummax) {
nummax = num2;
}
if (num3 > nummax) {
nummax = num3;
}
//output maximal number
alert("Maximal number is " + nummax);
break;
default:
alert("Wrong input!");
}
Ссылка на рабочий файл с этим кодом: http://yadi.sk/d/k6tr0CCm70yNj
лучше учитывать оба регистра то есть
Deleteif ((check="min")||check="MIN"))
Я же указал что это наипростейший вариант. Он написан для иллюстрации решения задачи и помощи тем, у кого пока небольшой опыт в программировании. Вариант с проверкой ввода, дробными числами и учитывающий оба регистра (а также вариант mIN, mIn, miN и т.п.) был представлен мной выше.
DeleteКак же неудобно что в этом блоге нельзя редактировать коментаррии. Сейчас обнажуил у себя опечатку, пришлось удалять все добавлять заново
ReplyDeleteВсем привет. Согласна с александром. Здесь как в музыке. Если ты придешь в музыкальную школу со знанием уже клавиатуры всеравно тебя заставят играть гаммы. Потому что без них никуда. Так что целиком и полностью +10
ReplyDeleteнеудобно не то слово. редактировать нельзя. Добавлять коммент... это просто трендец. Айда может скайп конфу создадим? а? ребята добавляйтесь там хоть пообщаться можно а тут как то стыдновато рассказывать о том как где и что вроде учебное место. Не для флуда. Мой скайп niyana2
ReplyDeleteСкайп-конфа отличная идея. Я сейчас онлайн (ник alexzubc).
ReplyDeleteЕще идея - поднять форум (например phpBB или joomla)на бесплатном хостинге. Как вам? Если будет достаточно желащих переехать на форум, я сегодня займусь этой задачей. Пишите свое мнение
Если будут проблемы с хостингом, могу разместить CMS на своём сервере.
Deleteкласс
ReplyDeleteделай Саша
Готово дело. Форум поднял, заходим регистируемся.
Deletehttp://mcpd2014.x10.mx/forum/
Решения для всех 4-х заданий:
ReplyDelete1.
http://a1111exe.com/mcsd/maxnum.html
2. Скрипт довольно подробно прокомментирован.
http://a1111exe.com/mcsd/maxminnum.html
3.
http://a1111exe.com/mcsd/succage.html
4. Сила логических констант: достаточно одного "if...else..." для проверки.
http://a1111exe.com/mcsd/succagefm.html
Теперь у нашей группы есть свой выделеный сайт:
ReplyDeletehttp://mcpd2014.x10.mx/forum/index.php
Чтобы увидеть все материалы форума необходимо зарегистирроваться по ссылке:
http://mcpd2014.x10.mx/forum/ucp.php?mode=register
Спасибо! Жду активации.
DeleteВсех зарегистрировавшихся на данный момент активировал.
DeleteВсем привет. Ребят намного лучше задачи по поиску минимального / максимального числа решать так с помощью функции:
ReplyDeleteMath.max и Math.min соответственно)
удачи.
Функции Math.max и Math.min имеют фикисированное число аргументов, то есть при изменении количества вводимых чисел придется переписывать код. Плюс ехотя бы один из аргументов не может быть приведен к числу, то функция возвращает NaN, соответственно нужно водить дополнительные проверки.
ReplyDeleteНарод! На какой адресс отправлять задачи Сергею ?
ReplyDeleteЯ тоже этого не понял. Поэтом позвонил в контоору в который мы учимся мне там дали такой адрес: nemetzsoft(собака)gmail(точка)com. На него я и выслал решение задач.
Delete