![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| PrinceOFF |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 21.10.2013 Где: Минск, РБ Репутация: нет Всего: нет |
Все привет.
Как и предыдущий свой вопрос, хотел прочитав новую главу, сначала самому составить программу, а потом посмотреть как она составлена в книге. Да не тут-то было... Мало того, что сам не составил, так еще и разобрать готовую не получается - второй день сижу в ступоре и не могу понять принцип действия операторов:
Вопросы: 1. Не могу понять принцип действия сокращенных операторов и инкремента в 11 и 12 строчке. 2. Точно также не могу понять принцип действия 14 строчки. Мои рассуждения: 1. lower+=number обозначает lower=lower+number, т.е. lower (который изначально инициализирован как "0"), равен 0+1, т.е. уже равен "1". Не смотря на то, что мы его задали равным нулю. Краем уха, забегая вперед своего обучения, немножко слышал про константу. Т.е. если бы мы в начале программы обозначили lower как
2. str+=lower обозначает str=str+lower - т.е. просто текст в 8 строке + наше значение lower. Но почему именно lower - понять не могу. Когда я объявлял переменные, я пологал, что роль нашей суммы должна играть переменная count, которая и неинициирована в начале в отличие от других переменных..? В общем, чехарда в голове полная... P.S. И еще - если вы считаете, что ответ на эти вопросы принесет мне потенциальный вред в плане изучения java и лучше, все-таки, сидеть дальше и ломать голову самому - не отвечайте. Если вреда в этом нет - ответьте P.S2. Я вот думаю - если у меня на раннем этапе изучения такие заморочки, то не значит ли это, что дальше, при изучении серьезных глав вообще будет темный лес? Неужели все через "это" проходили? |
||||
|
|||||
| Mirkes |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 7 Всего: 17 |
Как вам уже писали ранее, тому уроду, который писал примеры следовало оторвать руки. Переменным надо давать осмысленные имена!
Вот та же программа с заменой имен:
Думаю так понятнее sum - сумма, изначально ноль! currentNumber - переменная цикла, сначала 1 потом увеличивается maxNumber - верхняя граница цикла, вводится с клавиатуры, посему не инициирована Кстати, это цикл while а не do-while Такие фрагменты писать через while - дурной тон, пример - просто безобразный. Если идея был продемонстрировать сокращенные операторы, то можно было еще короче:
А если уж извращаться до конца, тогда получим
Честно говоря, мне кажется это плохой самоучитель. -------------------- Mirkes |
||||||
|
|||||||
| PrinceOFF |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 21.10.2013 Где: Минск, РБ Репутация: нет Всего: нет |
Похоже, "тот урод" - это я... У автора книги переменные типа i,j,s и т.д. А вот я уже пытался (следуя совету) дать какие-то другие обозначения, но, судя по всему, дал неудачно...
Да, переменные выглядят лучше и осмысленнее, но ответы на свои вопросы я так и не получил. Названия переменных мы поменяли (и даже убрали одну (зачем она была введена в самоучителе тоже вопрос?)), но принцип их действия остался тем же, и я его, к сожалению, не понял...
А какой хороший? Я выбрал этот самоучитель потому что мне понравилась аннотация: "... Материал книги излагается последовательно и сопровождается большим количеством наглядных примеров, разноплановых практических задач и детальным разбором их решений..." Что еще надо человеку, который самостоятельно занимается изучением java? Есть у меня еще и "Библиотека профессионала java. Хорстманн, Корнелл" - просматривал я мельком те главы, которые уже успел прочитать по Васильеву, и честно говоря, у меня осталось впечатление, что у Васильева, материал действительно последовательно излагается. И более детально что ли, и наглядно... Каждому оператору посвящена своя глава... А у Хорстманна операторы как-то все вместе собраны, без разграничений... Я знаю, что многие Хорстманна и Корнелла называют чуть ли ни самым лучшим самоучителем, но такое уж мое мнение (возможно ошибочное. потому что я бегло просматривал книгу, а не подробно)... Посоветуйте хороший, на ваш взгляд, самоучитель (с хорошими примерами для разбора) по которому можно изучить java с нуля. Вы также по самоучителю учились или как-то иначе? |
||||||
|
|||||||
| Mirkes |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 7 Всего: 17 |
К сожалению не могу порекомендовать другую книгу - сам учил фактически по примерам и справочникам, но у меня это был далеко не первый язык. Ваши переменные были лучше, чем в самоучителе
Давайте посмотрим на мой последний текст
С точки зрения сокращенных операторов интерес представляют только два:
Переменная sum инициирована 0 (просто напоминание) Тело цикла - пустое (сразу после закрывающей скобки стоит ";") Запись цикла состоит из трех частей, разделенных ";" Первая часть - инициация. в ней я описал переменную цикла i (переменным коротких циклов обычно дают простые имена, что противоречит правилу осмысленности вторая часть - условие продолжения у меня написана с ошибкой Третья часть - изменение переменной(ых) цикла. Вот она представляет особый интерес sum+=i++ эквивалентно записи sum=sum + i; i=i+1 Следует заметить, что краткая запись не только экономит размер файла (на что вообще говоря наплевать) но и выполняется быстрее, что может быть весьма полезно Теперь второй сокращенный оператор: str+=sum; он эквивалентен str=str+sum и фактически означает дописать в конец строки str текстовое представление числа sum. Теперь по поводу циклов. Цикл for рассмотрен в предыдущем примере. Цикл while
Цикл do-while
Основное отличие этого цикла в том, что условие проверяется ПОСЛЕ выполнения тела Удачи -------------------- Mirkes |
||||||||
|
|||||||||
| PrinceOFF |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 21.10.2013 Где: Минск, РБ Репутация: нет Всего: нет |
Спасибо
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |