Forums -> Флейм -> Ищу доброго Java-программера
| Full Version

WhiteRabbit
Ребяты, излагаю ситуацию.
1)Мой мелкий, 14 лет, пытается освоить в универе курс Java
2)В познаниях где-то возникли дыры, - с конкретным заданием человек не справился и не знает, как справиться. Видимо, где-то упущена теория, не только практика.
3)Я помочь ему не могу - от программирования по жизни я еще дальше, чем от Луны, а попытки освоить что-то по самоучителям хоть и двигаются куда-то медленно и печально, за университетским курсом явно не успевают.
4)Попытки найти учителя через агентство потерпели полный крах: присланный учитель честно признал, что с такой задачей справиться не может и обещал поискать кого-нить со знаниями потолще - но до сих пор не нашел.

Отсюда - вопрос: есть ли у нас на форуме человек, разбирающийся в Java и, более или менее, математике, живущий где-нить не очень далеко от Иерусалима, который согласился бы дать несколько частных уроков - не забесплатно, конечно.
sdandrey
ну вобще-то,консультации у професора и асистентов никто еще не отменял.пусть сходит,поговорит.у них есть приёмные часы для студентов и за эти часы професор и ассистент получают деньги
Zemlynin
Надо к Брайту обратиться,однако за последствия неручаюсь :diablo:
Set
Почему бы прям тут эту задачку не выложить... B)
WhiteRabbit
Set
Я выложу, нет проблем - просто, я думаю, дело не в частном решении... Парень что-то пропустил важное, наверное, - вот и хотелось бы понять, что именно и восполнить...
А задачка такая:

Exercise number 5
__________________

The simplest approximation technique for finding the solutions of an equation
f(x) = 0 ( called the roots of the function f ) is the technique of bisection,
which looks for changes of sign in the function f.

The idea is to start with an interval [a,b] such that f(a)<0 and f(b)>0
( we assume that f is defined in all the interval and that f is continuous there ).

We halve the interval and compute the function in the middle point m.
If f(m) >= 0 the same process continues for the interval [a,m], i.e. we assign
m to b.
If f(m) < 0 the process continues for the interval [m,b] - we assign m to a.

The process is stopped when we get the interval [a,b] for which

abs( f(b) - f(a) ) < 1.0e-5

1.0e-5 is 0.00001.

Write an application to find the root of a function f.

The user will enter the values of a and b.

The program will call a method bisection to perform the computations.
The value of the root will be displayed by the method main.

The method bisection will get 2 parameters -The method bisection will get 2 p a and b of the interval,
and will return the root. The method will use another method - f
to define the function.

To compute the absolute value - use the method Math.abs.

The Exercise Print-out
________________________

For the exercise print-out use the function

f(x) = x^3 - x - 1

with the interval [0.0, 3.0]

To compute x^3 - write x*x*x - or use the method Math.pow to write Math.pow( x, 3 ).

To print - follow the instructions listed in Exercise number 1.
Fellow
Imho, чтобы не справиться с таким заданием, надо пропустить вообще всё ...

Это у него первый язык программмирования? И умеет ли он писать хотя бы простые программмки ("Hello world")? Тут ведь даже алгоритм уже расписан - просто бери и пиши сразу код ...
Jedd
Скорее всего проблема не с Ява, а с переводом задачи в четкий алгоритм. Пусть сначала нарисует блок-схему.
Lord KiRon
Кстати в 14 лет универ это не слабо. А задачка действительно из базовых .
Set
Единственный раз когда я пользовался блок-схемой был экзамен на первом курсе... н-дасс, это была фатальная ошибка, чуть не облажался, за полчаса до конца выкинул её нафиг и на коленке всё забацал. :D: С тех пор ими не страдаю. :cool:
sdandrey
действительно базовая задачка,алгоритм элементарный.могу код в матлабе , С или бэйсике накатать,джаву не знаю
Set
Создаём класс с 3-мя методами: main, bisection, f.
"main" запрашивает у юзера значения a и b, передаёт их методу "bisection", затем отображает возвращённое им значение, которое и есть искомый результат.

"f" получает в качестве аргумента "x", считает по указанной формуле (f(x) = x^3 - x - 1) и просто возвращает значение.

"bisection" собственно считает корни, вот таким приблизительно раком:

while (Math.abs(f(b) - f(a)) >= 1.0e-5) {
m = ( a + b ) / 2;
If (f(m) >= 0) b = m else a = m;
}
WhiteRabbit
Fellow
Да, это у него первый язык программирования - и задачка с пятого всего-то занятия, так что про "пропустить все" речь не идет, он это "все" еще не осваивал, чтобы пропускать. ;)
Да, в принципе простые программки он писать умеет - из 9 заданий на данный момент не справился с этим одним, и я, если честно, просто не представляю, что у него там не пошло - математическое решение, алгоритм или собственно как в каком-то месте код прописать.
Set
Большое спасибо. Щас я ему покажу и будем разбираться. Если не справимся с чем-то опять - я тебя еще спрошу, ладно? Я понимаю, что у меня, наверное, как в том анекдоте, в ДНК ошибка... :diablo: Но мне уже тихо хочется поубивать авторов учебников и самоучителей, в которых каждая вторая фраза начинается с "Как вы знаете из своего опыта работы в С++..." :drag:

Added:
Set
Еще раз большое спасибо!user posted image Разобрались... И нашли, что не получалось и почему! И даже дополнительные уроки оказались без надобности - пробел восстановлен. :punk:
Сергей Иванович
А всё же, если не секрет, что именно и почему не получалось?
WhiteRabbit
Да какой там секрет. Не получался вот именно тот кусок, который Set привел(это ж надо так идеально уловить суть проблемы - мои аплодисменты!), а причина - обхохочешься: парень запутался промеж функциями и их производными, погрязнув в мысленных переводах терминов между русским, английским и ивритом. Это не незнание собственно Java было, а просто перепутанница в голове.:p:
sdandrey
вобще ,идиотизм: начинать програмированию учить с джавы или С.для изучения програмирования(постройка алгоритмов,логика и т.д) наилутшими являются бэйсик ,паскаль и фортран
FiL
для обучения ОБЪЕКТНОМУ программированию не надо изучать ПРОЦЕДУРНЫЕ языки. Абсолютно другая логика.
Хотя, для общего развития и не помешает, конечно :)
Uzaren
QUOTE (sdandrey @ 22-12-2006, 23:52)
вобще ,идиотизм: начинать програмированию учить с джавы или С.для изучения програмирования(постройка алгоритмов,логика и т.д) наилутшими являются бэйсик ,паскаль и фортран
Ага, языки, которые сегодня практически почти нигде не используютса! По мойму начинать учиться писать на С - самое то!
Lord KiRon
Болтуны все :diablo:
WhiteRabbit
QUOTE
вобще ,идиотизм: начинать програмированию учить с джавы или С
Вот вы поезжайте в Киев универ - и там спросите скажите... ;)
Можно подумать - это я придумала. :)
sdandrey
QUOTE (Uzaren @ 22-12-2006, 22:52)
QUOTE (sdandrey @ 22-12-2006, 23:52)
вобще ,идиотизм: начинать програмированию учить с джавы или С.для изучения програмирования(постройка алгоритмов,логика и т.д) наилутшими являются бэйсик ,паскаль и фортран
Ага, языки, которые сегодня практически почти нигде не используютса! По мойму начинать учиться писать на С - самое то!
я хочу водеть как ты будешь разбираться с кодом ,написанным на С недели через две после написания(при условии,что у тебя нет опыта програмирования)

на бэйсике ,фортране и паскале и сейчас много работают.например в инженерных расчетах фортран намного удобней чем C
admik
бейсик - это не программы, а макросы писать.
фортран тут при чем? сугубо прикладной язык, вещь отличная, но не для освоения программирования.
Sidorini
QUOTE (admik @ 23-12-2006, 06:33)
бейсик - это не программы, а макросы писать.
Ошибочное, кстати, мнение. Всё что не RT на бейсике вполне писать можно...
admik
Sidorini да конечно можно, но толку? основное направление имело в виду :)
Uzaren
QUOTE (sdandrey @ 23-12-2006, 04:39)
я хочу водеть как ты будешь разбираться с кодом ,написанным на С недели через две после написания(при условии,что у тебя нет опыта програмирования)

Ну так я во так как раз и начинал учитса именно с С, верней меня учили в беер-шевском колледже, и продолжают до сих пор обучать по крайней мере по всем израильским колледжам, если ты учишся на андасаи махшевим, и программа обучения эта утвержденна мисрад ха-авода :D:
sdandrey
на програмёров,обычно,идут учиться те,кто уже имеет понятие о том,что такое код и счем его едят :)

admik,не скажи,фортран очень хорош для обучения програмированию :)
Uzaren
QUOTE (sdandrey @ 23-12-2006, 13:45)
на програмёров,обычно,идут учиться те,кто уже имеет понятие о том,что такое код и счем его едят :)

Я не знаю где и с кем ты учился, но у нас, когда я начинал из группы 95-98% вообше не знало, что такое програмирование :) Какие-то поверхностные знания были у разных людей по DOS'у, виндах, кто-то был не много знаком с вордом и всё :)
sdandrey
QUOTE (Uzaren @ 23-12-2006, 12:12)
Я не знаю где и с кем ты учился, но у нас, когда я начинал из группы 95-98% вообше не знало, что такое програмирование :) Какие-то поверхностные знания были у разных людей по DOS'у, виндах, кто-то был не много знаком с вордом и всё :)
хорошо вам.в .....Технионе я,при том,что не на прагромёра учился, без знаний бэйсика и умения составлять алгоритмы вряд ли смог вытащить хорошую осенку по начальному курсу С

а про програмёров я,вообще ,молчу: люди , которые заканчивали школы или техникумы с програмёрской специализацией, заваливают начальные и не только курсы по С
Lexus
У меня в универе програмирование начинается с Явы, потом C#, C++

Те кто на факульте математике, то Матлаб, ява и всё :))
Lexus
QUOTE (sdandrey @ 22-12-2006, 19:09)
могу код в матлабе , С или бэйсике накатать,джаву не знаю
Ты мне на кубичейский сплайн напиши, буду благодарен.
Enot Pk
Вот у меня на сканере от Symbol'a ОСя на Си. И что? Там такие глюки (например, "двоящийся товар"), что на Бэйсике они если бы и возникли, то удалялись бы за 10 минут. Если кому интересно - в Мск я завтра в Ашане (м. Тёплый стан) с 8 до 18-19. Бэйдж СТО 28590, Ашан - ¹1948 (на планшетку). Продемонстрирую.

А что до блок-схем, то их надо уметь состалять. Я могу.
Имхо - Си маст дай, а "процедурность" не всегда панацея. Да и всё равно всё уходит в машкод, а он один и тот же.
sdandrey
QUOTE (Lexus @ 23-12-2006, 17:19)
QUOTE (sdandrey @ 22-12-2006, 19:09)
могу код в матлабе , С или бэйсике накатать,джаву не знаю
Ты мне на кубичейский сплайн напиши, буду благодарен.
зачем?в матлабе есть уже готовая функция :wink:
Lexus
QUOTE (sdandrey @ 23-12-2006, 21:36)
в матлабе есть уже готовая функция :wink:
над именно свою :)
sdandrey
стучись в аську
obaldin
QUOTE (FiL @ 23-12-2006, 00:07)
для обучения ОБЪЕКТНОМУ программированию не надо изучать ПРОЦЕДУРНЫЕ языки. Абсолютно другая логика.
Что именно подразумевается под "ПРОЦЕДУРНЫМИ языками"? Имеется в виду "imperative style" или "functional style"?
obaldin
QUOTE (sdandrey @ 22-12-2006, 23:52)
для изучения програмирования(постройка алгоритмов,логика и т.д) наилутшими являются бэйсик ,паскаль и фортран
Вирт бы посмеялся :D:
sdandrey
кто такой вирт не знаю, но я писал и еще раз могу повторить

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

это жестокая правда и проверено много раз
obaldin
QUOTE (sdandrey @ 30-12-2006, 21:14)
кто такой вирт не знаю
Понятно, оставим.

QUOTE
QUOTE
для изучения програмирования(постройка алгоритмов,логика и т.д) наилутшими являются бэйсик ,паскаль и фортран
это жестокая правда и проверено много раз
С такими аргументами трудно спорить.
sdandrey
QUOTE (obaldin @ 30-12-2006, 19:41)
С такими аргументами трудно спорить.
проверенно на студентах. в бэйсикe ,паскалe и фортранe структура кода более упорядочена,чем в СИ
obaldin
QUOTE (sdandrey @ 30-12-2006, 22:41)
в бэйсикe ,паскалe и фортранe структура кода более упорядочена,чем в СИ
Если имеется в виду структурное программирование, то тогда попадание паскаля в одну группу с бейсиком и фортраном удивляет даже больше, чем отсутствие других альтернатив кроме этой четверки. Может, ты приведешь коротенький пример на фортране, который будет заметно более структурным, чем аналогичный фрагмент на си? (Заодно уточним, какие языки ты имеешь в виду под "бейсиком" и "фортраном" :) )
piligrim
вот и добрый Java-программер пришел :diablo:
sdandrey
QUOTE (obaldin @ 30-12-2006, 21:30)
QUOTE (sdandrey @ 30-12-2006, 22:41)
в бэйсикe ,паскалe и фортранe структура кода более упорядочена,чем в СИ
Если имеется в виду структурное программирование, то тогда попадание паскаля в одну группу с бейсиком и фортраном удивляет даже больше, чем отсутствие других альтернатив кроме этой четверки. Может, ты приведешь коротенький пример на фортране, который будет заметно более структурным, чем аналогичный фрагмент на си? (Заодно уточним, какие языки ты имеешь в виду под "бейсиком" и "фортраном" :) )
я имел ввиду нечто другое: код написанный на СИ через две недели без пол литра не разберёшь в отличие от кода на бейсике,фортране или паскале :)
dmvn
QUOTE (sdandrey @ 31-12-2006, 01:54)
я имел ввиду нечто другое: код написанный на СИ через две недели без пол литра не разберёшь в отличие от кода на бейсике,фортране или паскале :)
Неверно. Структуру можно блюсти и на Си (даже без плюсов). В мире до хрена кода написано на сях (поболе чем на паскале), так ничего, open-source-сообщество почему-то не спилось :)
mts
QUOTE (sdandrey @ 30-12-2006, 17:54)
QUOTE (obaldin @ 30-12-2006, 21:30)
QUOTE (sdandrey @ 30-12-2006, 22:41)
в бэйсикe ,паскалe и фортранe структура кода более упорядочена,чем в СИ
Если имеется в виду структурное программирование, то тогда попадание паскаля в одну группу с бейсиком и фортраном удивляет даже больше, чем отсутствие других альтернатив кроме этой четверки. Может, ты приведешь коротенький пример на фортране, который будет заметно более структурным, чем аналогичный фрагмент на си? (Заодно уточним, какие языки ты имеешь в виду под "бейсиком" и "фортраном" :) )
я имел ввиду нечто другое: код написанный на СИ через две недели без пол литра не разберёшь в отличие от кода на бейсике,фортране или паскале :)
Беспредметный спор. Я, как самый скромный (по утверждению piligrim'а), могу написать очень красивый и понятнтый код на Basic'e, а могу и так, что сам не пойму на следующий день. А можно и на C красиво разложить, а можно и return'в с goto напихать, с подстановками закрутить и т.д. и т.п. Это всё от програмиста зависит.
obaldin
QUOTE (sdandrey @ 31-12-2006, 00:54)

я имел ввиду нечто другое: код написанный на СИ через две недели без пол литра не разберёшь в отличие от кода на бейсике,фортране или паскале :)
Все-таки, что ты называешь "фортраном"? Все тот же язык с вычисляемыми GOTO, арифметическим IF, типизацией переменных по первой букве ("GOD is REAL unless declared INTEGER" :D: )
CODE
if ( b**2-4*a*c) 100,200,300
  100    print *, 'Roots are Complex'
      go to 400
  200    print *, 'Single Real Root' 
      go to 400
  300    print *, 'Two Real Roots'
  400 continue
(Это еще читабельный пример, добейте его строчек до 400, тогда посмотрим)
obaldin
QUOTE (mts @ 31-12-2006, 01:31)
Это всё от програмиста зависит.
На паскале будет труднее завернуть что-то типа x-=**++x; :)
dmvn
QUOTE (obaldin @ 31-12-2006, 02:55)
На паскале будет труднее завернуть что-то типа x-=**++x; :)
а) C++-профи такой код читает без напряга.
б) Если ты не профи, то на @#$%^^%$## ТАК писать? Пиши проще, комментируй. Сколько лет пишу на С++, ни разу такого не приходилось писать.
в)
Утверждение. 1) На любом языке программирования можно написать нечитаемый код. 2) На любом языке программирования можно написать абсолютно читаемый код.
Доказательство. Неформализуемо, зато 1) и 2) подтверждено миллиардами примеров.

P.S. Кажется, тему надо закрывать.
obaldin
QUOTE (dmvn @ 31-12-2006, 02:46)

Утверждение. 1) На любом языке программирования можно написать нечитаемый код. 2) На любом языке программирования можно написать абсолютно читаемый код.
Само по-себе верно, но есть хитрость - тут речь шла об обучении. А для обучения желателен язык, который сильно затрудняет написание плохого кода.
zx666
QUOTE (obaldin @ Today, 04:25)
QUOTE (dmvn @ 31-12-2006, 02:46)

Утверждение. 1) На любом языке программирования можно написать нечитаемый код. 2) На любом языке программирования можно написать абсолютно читаемый код.
Само по-себе верно, но есть хитрость - тут речь шла об обучении. А для обучения желателен язык, который сильно затрудняет написание плохого кода.
И тут, наконец, появляется Java ! :)
FiL
QUOTE (obaldin @ 30-12-2006, 10:59)
QUOTE (FiL @ 23-12-2006, 00:07)
для обучения ОБЪЕКТНОМУ программированию не надо изучать ПРОЦЕДУРНЫЕ языки. Абсолютно другая логика.
Что именно подразумевается под "ПРОЦЕДУРНЫМИ языками"? Имеется в виду "imperative style" или "functional style"?
Ну и вопросы ты задаешь... я-же не помню уже определений, я это на 2-м курсе проходил :) Да еще и на литовском языке. А ты тут imperative, functional... я даже словей таких не знаю.

Но таки да, я говорю о императивных языках. Про функциональные тут речь вообще не шла (да и не используются они нигде толком, так Lisp где-то в автокаде, да всякие около-академические области). А вот для понимания принципов объектного программирования (причем на чисто-объектных языках, типа смолтока) знания и опыт императивного программирования не помогут. И даже будут мешать на первых порах. По себе сужу.