WhiteRabbit
@ 22-12-2006, 11:22
Ребяты, излагаю ситуацию.
1)Мой мелкий, 14 лет, пытается освоить в универе курс Java
2)В познаниях где-то возникли дыры, - с конкретным заданием человек не справился и не знает, как справиться. Видимо, где-то упущена теория, не только практика.
3)Я помочь ему не могу - от программирования по жизни я еще дальше, чем от Луны, а попытки освоить что-то по самоучителям хоть и двигаются куда-то медленно и печально, за университетским курсом явно не успевают.
4)Попытки найти учителя через агентство потерпели полный крах: присланный учитель честно признал, что с такой задачей справиться не может и обещал поискать кого-нить со знаниями потолще - но до сих пор не нашел.
Отсюда - вопрос: есть ли у нас на форуме человек, разбирающийся в Java и, более или менее, математике, живущий где-нить не очень далеко от Иерусалима, который согласился бы дать несколько частных уроков - не забесплатно, конечно.
sdandrey
@ 22-12-2006, 13:48
ну вобще-то,консультации у професора и асистентов никто еще не отменял.пусть сходит,поговорит.у них есть приёмные часы для студентов и за эти часы професор и ассистент получают деньги
Zemlynin
@ 22-12-2006, 16:44
Надо к Брайту обратиться,однако за последствия неручаюсь :diablo:
Почему бы прям тут эту задачку не выложить... B)
WhiteRabbit
@ 22-12-2006, 19:44
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
@ 22-12-2006, 20:09
Imho, чтобы не справиться с таким заданием, надо пропустить вообще всё ...
Это у него первый язык программмирования? И умеет ли он писать хотя бы простые программмки ("Hello world")? Тут ведь даже алгоритм уже расписан - просто бери и пиши сразу код ...
Скорее всего проблема не с Ява, а с переводом задачи в четкий алгоритм. Пусть сначала нарисует блок-схему.
Lord KiRon
@ 22-12-2006, 20:31
Кстати в 14 лет универ это не слабо. А задачка действительно из базовых .
Единственный раз когда я пользовался блок-схемой был экзамен на первом курсе... н-дасс, это была фатальная ошибка, чуть не облажался, за полчаса до конца выкинул её нафиг и на коленке всё забацал. :D: С тех пор ими не страдаю. :cool:
sdandrey
@ 22-12-2006, 21:09
действительно базовая задачка,алгоритм элементарный.могу код в матлабе , С или бэйсике накатать,джаву не знаю
Создаём класс с 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
@ 22-12-2006, 22:06
FellowДа, это у него первый язык программирования - и задачка с пятого всего-то занятия, так что про "пропустить все" речь не идет, он это "все" еще не осваивал, чтобы пропускать. ;)
Да, в принципе простые программки он писать умеет - из 9 заданий на данный момент не справился с этим одним, и я, если честно, просто не представляю, что у него там не пошло - математическое решение, алгоритм или собственно как в каком-то месте код прописать.
SetБольшое спасибо. Щас я ему покажу и будем разбираться. Если не справимся с чем-то опять - я тебя еще спрошу, ладно? Я понимаю, что у меня, наверное, как в том анекдоте, в ДНК ошибка... :diablo: Но мне уже тихо хочется поубивать авторов учебников и самоучителей, в которых каждая вторая фраза начинается с "Как вы знаете из своего опыта работы в С++..." :drag:
Added:SetЕще раз большое спасибо!
![user posted image](http://www.forum.ontariorabbits.org/images/smiles/icon_ok.gif)
Разобрались... И нашли, что не получалось и почему! И даже дополнительные уроки оказались без надобности - пробел восстановлен. :punk:
Сергей Иванович
@ 22-12-2006, 23:08
А всё же, если не секрет, что именно и почему не получалось?
WhiteRabbit
@ 23-12-2006, 00:30
Да какой там секрет. Не получался вот именно тот кусок, который Set привел(это ж надо так идеально уловить суть проблемы - мои аплодисменты!), а причина - обхохочешься: парень запутался промеж функциями и их производными, погрязнув в мысленных переводах терминов между русским, английским и ивритом. Это не незнание собственно Java было, а просто перепутанница в голове.:p:
sdandrey
@ 23-12-2006, 00:52
вобще ,идиотизм: начинать програмированию учить с джавы или С.для изучения програмирования(постройка алгоритмов,логика и т.д) наилутшими являются бэйсик ,паскаль и фортран
для обучения ОБЪЕКТНОМУ программированию не надо изучать ПРОЦЕДУРНЫЕ языки. Абсолютно другая логика.
Хотя, для общего развития и не помешает, конечно :)
Uzaren
@ 23-12-2006, 01:52
QUOTE (sdandrey @ 22-12-2006, 23:52) |
вобще ,идиотизм: начинать програмированию учить с джавы или С.для изучения програмирования(постройка алгоритмов,логика и т.д) наилутшими являются бэйсик ,паскаль и фортран |
Ага, языки, которые сегодня практически почти нигде не используютса! По мойму начинать учиться писать на С - самое то!
Lord KiRon
@ 23-12-2006, 02:02
Болтуны все :diablo:
WhiteRabbit
@ 23-12-2006, 02:37
QUOTE |
вобще ,идиотизм: начинать програмированию учить с джавы или С |
Вот вы поезжайте в Киев универ - и там спросите скажите... ;)
Можно подумать - это я придумала. :)
sdandrey
@ 23-12-2006, 05:39
QUOTE (Uzaren @ 22-12-2006, 22:52) |
QUOTE (sdandrey @ 22-12-2006, 23:52) | вобще ,идиотизм: начинать програмированию учить с джавы или С.для изучения програмирования(постройка алгоритмов,логика и т.д) наилутшими являются бэйсик ,паскаль и фортран |
Ага, языки, которые сегодня практически почти нигде не используютса! По мойму начинать учиться писать на С - самое то! |
я хочу водеть как ты будешь разбираться с кодом ,написанным на С недели через две после написания(при условии,что у тебя нет опыта програмирования)
на бэйсике ,фортране и паскале и сейчас много работают.например в инженерных расчетах фортран намного удобней чем C
admik
@ 23-12-2006, 07:33
бейсик - это не программы, а макросы писать.
фортран тут при чем? сугубо прикладной язык, вещь отличная, но не для освоения программирования.
Sidorini
@ 23-12-2006, 08:27
QUOTE (admik @ 23-12-2006, 06:33) |
бейсик - это не программы, а макросы писать. |
Ошибочное, кстати, мнение. Всё что не RT на бейсике вполне писать можно...
admik
@ 23-12-2006, 10:24
Sidorini да конечно можно, но толку? основное направление имело в виду :)
Uzaren
@ 23-12-2006, 12:11
QUOTE (sdandrey @ 23-12-2006, 04:39) |
я хочу водеть как ты будешь разбираться с кодом ,написанным на С недели через две после написания(при условии,что у тебя нет опыта програмирования)
|
Ну так я во так как раз и начинал учитса именно с С, верней меня учили в беер-шевском колледже, и продолжают до сих пор обучать по крайней мере по всем израильским колледжам, если ты учишся на андасаи махшевим, и программа обучения эта утвержденна мисрад ха-авода :D:
sdandrey
@ 23-12-2006, 14:45
на програмёров,обычно,идут учиться те,кто уже имеет понятие о том,что такое код и счем его едят :)
admik,не скажи,фортран очень хорош для обучения програмированию :)
Uzaren
@ 23-12-2006, 15:12
QUOTE (sdandrey @ 23-12-2006, 13:45) |
на програмёров,обычно,идут учиться те,кто уже имеет понятие о том,что такое код и счем его едят :)
|
Я не знаю где и с кем ты учился, но у нас, когда я начинал из группы 95-98% вообше не знало, что такое програмирование :) Какие-то поверхностные знания были у разных людей по DOS'у, виндах, кто-то был не много знаком с вордом и всё :)
sdandrey
@ 23-12-2006, 17:30
QUOTE (Uzaren @ 23-12-2006, 12:12) |
Я не знаю где и с кем ты учился, но у нас, когда я начинал из группы 95-98% вообше не знало, что такое програмирование :) Какие-то поверхностные знания были у разных людей по DOS'у, виндах, кто-то был не много знаком с вордом и всё :) |
хорошо вам.в .....Технионе я,при том,что не на прагромёра учился, без знаний бэйсика и умения составлять алгоритмы вряд ли смог вытащить хорошую осенку по начальному курсу С
а про програмёров я,вообще ,молчу: люди , которые заканчивали школы или техникумы с програмёрской специализацией, заваливают начальные и не только курсы по С
Lexus
@ 23-12-2006, 20:19
У меня в универе програмирование начинается с Явы, потом C#, C++
Те кто на факульте математике, то Матлаб, ява и всё :))
Lexus
@ 23-12-2006, 20:19
QUOTE (sdandrey @ 22-12-2006, 19:09) |
могу код в матлабе , С или бэйсике накатать,джаву не знаю |
Ты мне на кубичейский сплайн напиши, буду благодарен.
Enot Pk
@ 23-12-2006, 23:32
Вот у меня на сканере от Symbol'a ОСя на Си. И что? Там такие глюки (например, "двоящийся товар"), что на Бэйсике они если бы и возникли, то удалялись бы за 10 минут. Если кому интересно - в Мск я завтра в Ашане (м. Тёплый стан) с 8 до 18-19. Бэйдж СТО 28590, Ашан - ¹1948 (на планшетку). Продемонстрирую.
А что до блок-схем, то их надо уметь состалять. Я могу.
Имхо - Си маст дай, а "процедурность" не всегда панацея. Да и всё равно всё уходит в машкод, а он один и тот же.
sdandrey
@ 23-12-2006, 23:36
QUOTE (Lexus @ 23-12-2006, 17:19) |
QUOTE (sdandrey @ 22-12-2006, 19:09) | могу код в матлабе , С или бэйсике накатать,джаву не знаю |
Ты мне на кубичейский сплайн напиши, буду благодарен. |
зачем?в матлабе есть уже готовая функция :wink:
Lexus
@ 24-12-2006, 12:34
QUOTE (sdandrey @ 23-12-2006, 21:36) |
в матлабе есть уже готовая функция :wink: |
над именно свою :)
sdandrey
@ 24-12-2006, 13:08
стучись в аську
obaldin
@ 30-12-2006, 18:59
QUOTE (FiL @ 23-12-2006, 00:07) |
для обучения ОБЪЕКТНОМУ программированию не надо изучать ПРОЦЕДУРНЫЕ языки. Абсолютно другая логика. |
Что именно подразумевается под "ПРОЦЕДУРНЫМИ языками"? Имеется в виду "imperative style" или "functional style"?
obaldin
@ 30-12-2006, 19:20
QUOTE (sdandrey @ 22-12-2006, 23:52) |
для изучения програмирования(постройка алгоритмов,логика и т.д) наилутшими являются бэйсик ,паскаль и фортран |
Вирт бы посмеялся :D:
sdandrey
@ 30-12-2006, 22:14
кто такой вирт не знаю, но я писал и еще раз могу повторить
QUOTE |
для изучения програмирования(постройка алгоритмов,логика и т.д) наилутшими являются бэйсик ,паскаль и фортран |
это жестокая правда и проверено много раз
obaldin
@ 30-12-2006, 22:41
QUOTE (sdandrey @ 30-12-2006, 21:14) |
кто такой вирт не знаю |
Понятно, оставим.
QUOTE |
QUOTE | для изучения програмирования(постройка алгоритмов,логика и т.д) наилутшими являются бэйсик ,паскаль и фортран |
это жестокая правда и проверено много раз |
С такими аргументами трудно спорить.
sdandrey
@ 30-12-2006, 23:41
QUOTE (obaldin @ 30-12-2006, 19:41) |
С такими аргументами трудно спорить. |
проверенно на студентах. в бэйсикe ,паскалe и фортранe структура кода более упорядочена,чем в СИ
obaldin
@ 31-12-2006, 00:30
QUOTE (sdandrey @ 30-12-2006, 22:41) |
в бэйсикe ,паскалe и фортранe структура кода более упорядочена,чем в СИ |
Если имеется в виду структурное программирование, то тогда попадание паскаля в одну группу с бейсиком и фортраном удивляет даже больше, чем отсутствие других альтернатив кроме этой четверки. Может, ты приведешь коротенький пример на фортране, который будет заметно более структурным, чем аналогичный фрагмент на си? (Заодно уточним, какие языки ты имеешь в виду под "бейсиком" и "фортраном" :) )
piligrim
@ 31-12-2006, 00:47
вот и добрый Java-программер пришел :diablo:
sdandrey
@ 31-12-2006, 01:54
QUOTE (obaldin @ 30-12-2006, 21:30) |
QUOTE (sdandrey @ 30-12-2006, 22:41) | в бэйсикe ,паскалe и фортранe структура кода более упорядочена,чем в СИ |
Если имеется в виду структурное программирование, то тогда попадание паскаля в одну группу с бейсиком и фортраном удивляет даже больше, чем отсутствие других альтернатив кроме этой четверки. Может, ты приведешь коротенький пример на фортране, который будет заметно более структурным, чем аналогичный фрагмент на си? (Заодно уточним, какие языки ты имеешь в виду под "бейсиком" и "фортраном" :) ) |
я имел ввиду нечто другое: код написанный на СИ через две недели без пол литра не разберёшь в отличие от кода на бейсике,фортране или паскале :)
QUOTE (sdandrey @ 31-12-2006, 01:54) |
я имел ввиду нечто другое: код написанный на СИ через две недели без пол литра не разберёшь в отличие от кода на бейсике,фортране или паскале :) |
Неверно. Структуру можно блюсти и на Си (даже без плюсов). В мире до хрена кода написано на сях (поболе чем на паскале), так ничего, open-source-сообщество почему-то не спилось :)
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
@ 31-12-2006, 02:48
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
@ 31-12-2006, 02:55
QUOTE (mts @ 31-12-2006, 01:31) |
Это всё от програмиста зависит. |
На паскале будет труднее завернуть что-то типа x-=**++x; :)
QUOTE (obaldin @ 31-12-2006, 02:55) |
На паскале будет труднее завернуть что-то типа x-=**++x; :) |
а) C++-профи такой код читает без напряга.
б) Если ты не профи, то на @#$%^^%$## ТАК писать? Пиши проще, комментируй. Сколько лет пишу на С++, ни разу такого не приходилось писать.
в)
Утверждение. 1) На любом языке программирования можно написать нечитаемый код. 2) На любом языке программирования можно написать абсолютно читаемый код.
Доказательство. Неформализуемо, зато 1) и 2) подтверждено миллиардами примеров.
P.S. Кажется, тему надо закрывать.
obaldin
@ 31-12-2006, 04:25
QUOTE (dmvn @ 31-12-2006, 02:46) |
Утверждение. 1) На любом языке программирования можно написать нечитаемый код. 2) На любом языке программирования можно написать абсолютно читаемый код. |
Само по-себе верно, но есть хитрость - тут речь шла об обучении. А для обучения желателен язык, который сильно затрудняет написание плохого кода.
zx666
@ 31-12-2006, 04:38
QUOTE (obaldin @ Today, 04:25) |
QUOTE (dmvn @ 31-12-2006, 02:46) | Утверждение. 1) На любом языке программирования можно написать нечитаемый код. 2) На любом языке программирования можно написать абсолютно читаемый код. |
Само по-себе верно, но есть хитрость - тут речь шла об обучении. А для обучения желателен язык, который сильно затрудняет написание плохого кода. |
И тут, наконец, появляется Java ! :)
QUOTE (obaldin @ 30-12-2006, 10:59) |
QUOTE (FiL @ 23-12-2006, 00:07) | для обучения ОБЪЕКТНОМУ программированию не надо изучать ПРОЦЕДУРНЫЕ языки. Абсолютно другая логика. |
Что именно подразумевается под "ПРОЦЕДУРНЫМИ языками"? Имеется в виду "imperative style" или "functional style"? |
Ну и вопросы ты задаешь... я-же не помню уже определений, я это на 2-м курсе проходил :) Да еще и на литовском языке. А ты тут imperative, functional... я даже словей таких не знаю.
Но таки да, я говорю о императивных языках. Про функциональные тут речь вообще не шла (да и не используются они нигде толком, так Lisp где-то в автокаде, да всякие около-академические области). А вот для понимания принципов объектного программирования (причем на чисто-объектных языках, типа смолтока) знания и опыт императивного программирования не помогут. И даже будут мешать на первых порах. По себе сужу.