Задание #1. Знакомство с языком Java

На этой неделе начнем изучение основ синтаксиса языка Java с решения нескольких простых программных проблем. Вы также научитесь использовать компилятор Java и виртуальную машину Java для запуска ваших программ. Ниже приведено описание задач, которые вам необходимо решить:

Простые числа

Простые числа часто встречаются в задачах по программированию и наш курс не исключение! Для начала вы должны сделать программу, которая находит и печатает все простые числа меньше 100. Эта задача даст вам возможность попрактиковаться в написании циклов и функций на языке Java.

Создайте файл Primes.java, и в этом файле создайте класс как этот:

/**
 * TODO:  Комментарии, описывающие ваш класс
 */
public class Primes {
    /**
     * TODO:  Комментарии, описывающие этот метод 
     */
    public static void main(String[] args) {
        // TODO:  здесь напишите свой код
    }
}

После создания файла вы можете откомпилировать и запустить программу, но конечно пока еще рано делать это. Сначала надо добавить нужный код.

Внутри класса, после метода main(), добавьте функцию isPrime(int n) которая определяет, является ли число простым. Можно считать, что входное значение n всегда больше 2. Сигнатура этой функции будет такой:

public static boolean isPrime(int n) {
    // TODO:  ваша реализация функции
}

Вы можете реализовать этот метод так, как считаете нужным, но довольно просто сделать это с помощью цикла for который перебирает все значения,  начиная с 2 до (но, не включая) n, проверяя, делится ли n нацело на это значение. Это можно проверить с помощью оператора деления по модулю %; например, 17 % 7 равно 3, а 16 % 4 равно 0. Если какое либо значение нацело делит аргумент n, return false; если такое значение не найдено, то аргумент это простое число:  return true. (Оператор return в языке Java завершает исполнение метода и возвращает значение вызывающей программе.)

После того как этот метод написан, вы можете добавить в метод  main() другой цикл, который перебирает числа от  2 до 100, включительно, печатая числа которые isPrime() определяет как простые.

Откомпилируйте программу и проверьте корректность ее работы! В сети Интернет можно найти много таблиц простых чисел, так что проверить результат работы программы будет несложно.

Так же там где это указано в заготовке программы добавьте комментарии описывающие назначение класса и каждого из методов класса. Очень важно вставлять такие комментарии в свои программы.

Палиндромы

Вторая ваша программа должна определять является ли строка палиндромом. Есть несколько способов решения этой задачи, но мы выберем тот, который позволит вам познакомится на практике со свойствами языка Java, которые обсуждались на первой лекции.

Для этой программы, вы должны создать класс с именем Palindrome, в файле Palindrome.java. На этот раз можете начать с такого исходного текста:

/**
 * TODO:  Комментарии с описанием класса
 */
public class Palindrome {
    /**
     * TODO:  Комментарии с описанием метода
     */
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            String s = args[i];

            // TODO:  определить палиндром ли это и вывести на консоль
            // результат.  Поместите s в двойные кавычки при выводе
            // на консоль.
        }
    }
}

Как и раньше вы можете сразу откомпилировать и запустить эту программу, хотя в таком виде она не покажет ничего интересного.

Ваша первая задача заключается в том, чтобы создать метод, переставляющий в обратном порядке символы в строке. Сигнатура у метода должна быть такая: public static String reverseString(String s)

Вы можете реализовать этот метод, используя локальную переменную, которая в начале инициализируется как пустая строка "", и затем к ней добавляются символы входной строки в обратном порядке Объект. String имеет метод length() который возвращает длину строки, и метод charAt(int index) который возвращает символ в указанной позиции. Индекс должен меняться от 0 до size - 1. Например:

String s = "pizzeria";
System.out.println(s.length());   // печатает 8
System.out.println(s.charAt(5));  // печатает r

Можете использовать  оператор соединения строк +, или составной оператор присвоения += если вам так больше нравится.

Закончив реализацию метода reverseString(), можете создать другой метод public static boolean isPalindrome(String s). Эти методы нужны для того чтобы сделать перестановку символов строки s, а затем сравнить ее с исходной строкой. Для проверки равенства строк String s (или любых других объектов Java), можно использовать метод equals(Object). Например:

String s1 = "hello";
String s2 = "Hello";
String s3 = "hello";
s1.equals(s2);  // равно false
s1.equals(s3);  // равно true

Не используйте оператор == для сравнения строк! Этот оператор выполняет совсем другое сравнение в языке Java, о чем мы поговорим в следующей лекции.

Когда закончите писать свой код, откомпилируйте и проверьте вашу программу! На этот раз передайте программе входные параметры через командную строку, вот так:

java Palindrome madam racecar apple kayak song noon

Ваша программа должна вывести в ответ является ли палиндромом каждое из указанных слов. Как и раньше добавьте комментарии содержащие описание класса и всех методов в программе.

Все готово!

Выполнив работу, отправьте файлы .java в moodle для проверки! Не надо отсылать файлы .class.

Дополнительное задание!

Если у вас появилось желание усовершенствовать вашу программу, сделайте преобразование строк в нижний регистр и фильтрацию знаков препинания перед сравнением строк. Есть много фраз палиндромов и будет неплохо добавить в вашу программу возможность их определения. Например: "Was it a rat I saw?" Or, "Able was I, ere I saw Elba."

Для идентификации символов пунктуации, букв или пробела, Java имеет много полезных методов в классе java.lang.Character. Можете познакомиться с этими методами в  документации Java API. Эти методы вызываются так: Character.isLetter(someChar)

Если вы добавите к своей программе возможность анализировать фразы, ее придется запускать немного иначе. Вы должны заключать фразы в командной строке в двойные кавычки:

java Palindrome "A man, a plan, a canal -- Panama!"

За выполнение дополнительного задания вы получите дополнительные баллы, но только в случае если программа будет работать корректно. Для вас это хорошая возможность попрактиковаться в написании программ на языке Java.


Copyright (C) 2015, California Institute of Technology. All rights reserved.