пятница, 21 августа 2015 г.

Часто стал путаться синтаксисом, поэтому решил сделать небольшую заметку
о том какую форму имеют различные операторы и циклы.

Цикл for

for (инициализация; условие; итерация) {
...тело цикла...
}

Цикл while

while (условие) {
...тело цикла...
}
Цикл do-while

do {
...тело цикла...
} while (условие);

среда, 12 августа 2015 г.

Циклы.

"В языке Java циклы обладают очень большой гибкостью. Как же в таком случае выбрать цикл, наиболее подходящий для решения конкретной задачи?
Если число итераций известно заранее, то лучше выбрать цикл for. Цикл do-while подходит в тех случаях, если требуется, чтобы была выполнена как минимум одна итерация. А цикл while оказывается наиболее удобным тогда, когда число повторение заранее не известно."

вторник, 4 августа 2015 г.

Кодировка.

Долгое время не мог решить проблему с кодировкой в intellij IDEA 14. Английский текст без проблем выводился в консоль, а вот русский то вопросы показывает (?), то иероглифы. У меня Windows 8.1.
Проверка кодировки через командную строку через команду chcp показало 866. В настройках IDEA CTRL+ALT+S в поиске вводим enc и выбираем параметр File Encodings у меня в параметре IDE Encoding значение UTF-8, а в параметре Project Encoding - windows-1251.  Покурил форумы, пощелкав настройками, проблему решить удалось. И так что сделал:

1) кодировку системную не менял;
2) установил параметры IDE Encoding на windows-1251;
3) установил параметры Project Encoding на UTF-8;
4) установил параметры Default encoding for propertis files на UTF-8 и установил галочку Transparent native-to-ascii conversion;
5) установил для вывода в консоль кодировку UTF-8. Этот параметр заметил при работе программы, показываю его на скрине:





Для меня осталось непонятным, зачем делать различные кодировки на ввод данных и на вывод в консоль, не проще было бы сделать таким образом, чтобы консоль "брала" настройки из установленных на ввод данных.(???)
Продолжая изучать книгу H. Shildtа "java a beginner's guide".

Нашел интересную ошибку в ответах к упражнениям для самопроверки по материалу главы 2. Упражнение № 10 "Напишите программу, которая бы находила простые числа в пределах от 2 до 100".
Простое число - это натуральное (целое положительное) число, имеющее ровно два различных натуральных делителя. Другими словами, число простое, если оно больше и делится без остатка только на и на .(Википедия). Если говорить еще проще, то простое число 3, например, делится нацело только на 3 и на 1, а если поделить его на 2, то получится 1.5(полтора), то есть с остатком 0.5.

Вот код программы, который предлагают в ответах:

public class Prime {
    public static void main(String args[]) {
        int i, j;
        boolean isprime;
        for (i = 2; i < 1000; i++) {
            isprime = true;
            // Проверить делится ли число без остатка            for (j = 2; j < i/j; j++)
                // если число делится без остатка значит оно простое            if ((i % j) == 0) isprime = false;
            if (isprime)
                System.out.println(i + " is prime.");
        }
    }
}

После того, как я скомпилировал программу, в консоль вывелись не только простые числа, но и составные. Такие как "4", "9", "25", "49" и другие. Долгое время не мог понять, что значит строка кода цикла for (j = 2; j < i/j; j++). Но, немного подумав, решил исправить её на следующую for (j = 2; j < i; j++). И программа заработала как следует. 

public class Prime {
    public static void main(String args[]) {
        int i, j;
        boolean isprime;
        for (i = 2; i < 50; i++) {
            isprime = true;
            // Проверить делится ли число без остатка            for (j = 2; j < i; j++)
                // если число делится без остатка значит оно простое            if ((i % j) == 0) isprime = false;
            if (isprime)
                System.out.println(i + " is prime.");
        }
    }
}

понедельник, 3 августа 2015 г.


Ключевые слова в Java.



Ввод с клавиатуры.

Изучая сегодня ввод с клавиатуры, рассматривал следующую программу:

class KbIn {
    public static void main(String args[])
        throws java.io.IOException {
            char ch;
        System.out.println("Press a key followed by ENTER: ");
        // Ввод символа с клавиатуры       
 ch = (char) System.in.read(); // Получить значение типа char        System.out.println("Your key is: " + ch);
        }
    }

Если ввести с клавиатуры символ, то программа, обработав запрос, выведет на экран символ, который мы ввели. Но если ввести несколько символов подряд, то программа выводит на экран только первый символ, а все остальные "съедает". Пока не понятно почему, в пояснениях к примеру тоже нет ответа на этот вопрос.

Начало.


С чего бы начать... Примерно на 23 году жизни я задумался над тем, насколько рационально я растрачиваю свою жизнь, чего я добился за эти 23 года, и что мог бы иметь, если бы жил по-другому. Таким образом я пришёл к выводу, который впоследствии определил моё будущее направление в жизни.

Итак я начал изучать язык программирования Java. Почему именно на этот язык пал мой выбор? Ответ очень прост: друг посоветовал. По-началу я даже не задумывался над тем почему Java. Почему не C, C++, C# или множество других языковых платформ, таких как Python, Delphi, а именно Java. Позже, когда я начал читать различные статьи в интернете, я сделал вывод, быть может ошибочный, что Java является отличным языком для разработки программ на разные платформы под управлением различных операционных систем и в будущем Java станет языком № 1 для разработки абсолютно "всего" - "от корпоративной архитектуры до Internet of Things (IoT)." - oracle о Java.

Самое сложное вначале - это подобрать правильную литературу или ресурс по изучению языка. Такую, которая была бы понятна, проста и в то же время могла бы вас заинтересовать и чему-либо научить. Начал я, как наверняка и многие, с популярного сайта о Java JavaRush. Ресурс по-началу захватывает, но позже, где то через 5-6 часов работы с сайтом я начал терять суть повествования, не понимать многие примеры, а доступного описания ситуации почему было сделано именно так, а не иначе я не увидел. Может быть не старался как того надо было, но суть в том, что мне пришлось искать другой источник знаний. Следующим вариантом ресурса для изучения Java стал блог на YouTube и сайт DevColibri. Поработав какое - то время с этими ресурсами, было принято решение по поиску нового источника знаний. Причин, по которым не стал изучать Java по DevColibri уже не помню, может не хватило усидчивости, может быть вернусь когда то к этому ресурсу. Позже через какой-то промежуток застоя, когда дело с Javой казалось не движется, я решил попробовать поискать книги по этому языку. Недолгие поиски привели меня к списку основных книг по Javе, которые как утверждает интернет должен прочитать каждый начинающий программист Java. Итак вот список этих книг:

1) Head First Java авторов Kathy Sierra and Bert Bates.
2) Java, A Beginner's Guide автора Herbert Schildt.
3) Test Driven Development автора Kent Beck.

Я начал с Шильдта. Начинается всё очень просто. Автор рассказывает о программирование в целом, после углубляется в непосредственно ООП (Объектно Ориентированное Программирование) коим является Java. И постепенно переходит к самому языку. Перевод лёгок для восприятия. Примеры не сложные, иногда с ними можно экспериментировать, дополнять код и прочее. За месяц изучения, а изучаю Java я только на работе (так как дома времени нет - маленький ребёнок и жена) дошёл до 90 страницы. Больше 90% текста понятно. На вопросы представленные в конце каждой главы для самопроверки получалось ответить. Изучаем по этой книге дальше.

Что касается среды разработки, то я использую Intellij IDEA от компании JetBRAINS. "Эклипс" не пробовал, да и не хочется пробовать, сравнивать, так как Intellij IDEA полностью подходит по всем параметрам: удобство, интерфейс, горячие клавиши и т.д.

На этом "начало" можно закончить. В блоге хочется описывать успехи и достижения, интересные детали обучения, чтобы потом, когда будет достаточно опыта и когда можно будет по праву называть себя Java Development интересно было бы посмотреть, с чего всё начиналось (как-то так).