Назад | Начало урока | Вперед
Содержание

Глава 3

"Типы и методы"

Задачи из главы 3

3.1 Большая диаграмма. Нарисуйте диаграмму моделирования и диаграмму вызова (как на рис 3.3) для программы LargeTemperatureTable из примера 3.6

3.2 Участники марафона. Существует пять основных кандидатов на участие в марафоне, который проводится в Саванне. Они приехали из Англии, Германии, Италии, Испании и Норвегии. Организаторам гонок должна быть представлена инф о каждом бегуне: имя, страна, возраст и лучший результат, показанный участником до настоящего времени (в часах и минутах).

- создайте класс, описывающий участника марафона. Вы можете использовать класс Time для представления лучшего показателя времени. Обычно время пробега составляет около двух часов.

- напишите короткую программу, чтобы проверить, правильно ли созданы пять объектов упомянутого выше класса для бегунов.

- Теперь напишите программу Race, которая создаст объекты для бегунов, сгенерирует случайным образом время пробега для каждого из них, а затем выведет список бегунов с подробными их описаниями, включая результаты пробега и лучший показатель (Используйте для этого метод Math.min).

Хотя на данном этапе мы не можем с легкостью вычислить победителя пробега, мы вернемся к этой задаче в гл 4.

3.3 Контроль веса.

Два друга на протяжении нескольких недель пытались сбросить вес. У первого начальный вес составлял 100 кг, а объем талии - 98 см. Параметры второго - 85 кг и 95 см. Каждую неделю они фиксировали свои параметры и вычисляли, у кого эти показатели уменьшились значительнее.

- разработайте и запрограммируйте класс для записи значений веса человека и его талии.
- проверьте как работает этот класс, создав объекты для двух людей.
- Напишите программу, которая в течении 6 недель раз в неделю будет генерировать новые значения веса и объема талии. Значения эти должны с небольшими отклонениями соответствовать текущим (например: текущий вес плюс-минус 1,5 кг, текущий объем талии плюс-минус 2 см). Введите новые значения и сохраните их в объектах. Следует так же выводить инф о том, кто из двоих друзей сбросил больший вес в каждом случае.
- вычисляйте каждый раз общее значение сброшенного веса. В завершение выведите данные об общем сброшенном весе у двух людей.

3.4 Часовые пояса. Компания, занимающаяся электронной коммерцией и расположенная в Лондоне, Великобритания, имеет клиентов в разных точках мира. Иногда ее сотрудникам приходится оформлять заказы по телефону. В таких случаях необходимо знать, какое время сейчас в определенном часовом поясе. Лондон работает по всеобщему времени (ВВ). Выведите таблицу со значениями времени от 0:00 до 23:00 для городов Ванкувер(-8 часов от ВВ), Нью-Иорк (-5 часов), Кейптаун (+2) и Сидней(+10). Используйте класс Time для вычисления значений времени в других часовых поясах.

3.5 Преобразования. Модифицируйте программу из примера 3.3 так, чтобы она выполняла преобразование миль в километры ( 1 миля - 1,6 км), а так же долларов в грацы (51 = G0,45).

3.6 Другие таблицы. Программу, которую мы использовали для печати таблицы преобразований, модифицируйте так, чтобы она позволяла выводить на печать таблицы для выполнения других преобразований, например:

- градусов Цельсия в Градусы Фаренгейта
- миль в километры
- литров в галлоны
- долларов в национальную валюту

Для выполнения преобразований используйте типизированные методы

3.7 Голосование. В административный совет входят три директора, за каждым из которых закреплен переключатель с положением Да/Нет. Когда производится голосование, загорается лампочка, если большинство проголосовали "За". Цепь, которая обеспечивает ее включение, можно представить в виде булевой функции:

L = a&(b|c)|b&c

Напишите программу, которая выводит таблицу, содержащую альтернативные значения да/нет для a, b и c, а так же значения L, используя метода, возвращающий булево значение.

3.8 Точное время. Перед проведением марафона было условлено, что время будет фиксироваться с точностью до доли секунды. Дополните класс Time так, чтобы он учитывал значение в секундах и долях секунды (вы можете использовать переменную, имеющую тип double). Протестируйте класс с помощью небольшой программы.

3.9 Зеленые бутылки. Походная песня, которая может быть продолжена, начинается такими строками:

На стене висело десять зеленых бутылок,
Десять зеленых бутылок висело на стене,
Но если одна зеленая бутылка случайно упадет,
То девять зеленых бутылок останутся висеть на стене.
На стене висело девять зеленых бутылок,
Девять зеленых бутылок висело на стене,
Но если одна зеленая бутылка случайно упадет,
То восемь зеленых бутылок останутся висеть на стене.
и тд.
На стене висела одна зеленая бутылка,
Одна зеленая бутылка висела на стене,
Но если одна зеленая бутылка случайно упадет,
На стене не останется ни одной зеленой бутылки.

Используя обратные вложенные циклы, рассмотренные в разделе 3.2, составьте алгоритм для вывода такой песенки, начиная с момента, когда осталось 5 бутылок.

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

3.11 Наглядные таблицы. Таблица преобразований в пример 3.6 является не очень удобной, поскольку значения увеличиваются по горизонтали, а не по вертикали. Подумайте как изменить программу так, чтобы значения увеличивались по вертикали.

3.12 Расписание. Удобно иметь под рукой бланк расписания, где можно фиксировать время проведения лекций. Напишите программу, которая выодила бы на печать расписание, в верхней строке которого перечислены дни недели, а слева (сверху вниз) указаны значения времени от 8.00 до 15.00.

3.13 Гистограмма. Проверьте, сможете ли вы создать класс на основе примера 3.4, который включает методы, рисующие линию и ось, и может быть вызван для вывода гистограммы, базирующейся на разных данных. Протестируйте его на следующих примерах:

а) генерирование случайных чисел, которые соответствуют значениям температур для данного месяца (от 10 до 30 градусов Цельсия).

б) установка соответствия между значениями функции sin x и значениями температур от 0 до 90 градусов Цельсия.

3.14 Дни рождения. Вероятность того, что у двух людей из группы, состоящей из n человек, совпадают дни рождения составляет:

Подсказка

Напишите программу, которая определяет такую вероятность и выводит соответствующее значения для групп из 2-х и 60-ти человек. Создайте таблицу значений n и p(n), исходя из того, что n принимает значения от 10 до 50. Если вы выполнили задание 3.13, нанесите на гистограмму значения для групп из 10, 20 ... 50 человек.

3.15 Цифровой треугольник. Напишите программу, которая использует операторы for, а так же print/println для вывода на экран следующего треугольника. Выведите количество линий пять (как показано ниже)

1
22
333
4444
55555

Измените программу так, чтобы в треугольнике все числа выравнивались по центру. В результате мы получим треугольник Паскаля.

1
22
333
4444
55555

3.16 Ряды Фибоначчи. Так называются ряды чисел, в которых каждое последующее число является суммой двух предыдущих:

1 1 2 3 5 8 13 21 34 55

Напишите программу, выводящую на экран первые 50 значений ряда. Используя вложенные циклы измените программу так, чтобы она выводила только каждое третье число. Какую закономерность вы заметили?

3.17 Таблица умножения. Давным-давно на обложках тетрадей печаталась таблица умножения. Напишите программу, которая использует подходящие методы и параметры для печати всех 12 таблиц умножения.

3.18 Выпускники. Добавьте к классу Child из программы о детском саде (задача 2.8) метод, который возвращает значение, указывающее, выпускается ли ребенок из детского сада в этом году. Решите, где должно быть объявлено значение года и как должен осуществляться доступ к нему: как к константе в главной программе, которая передается в качестве параметра, как к статической переменной в классе или иначе.

3.19 Манускрипт. Измените программу из примера 2.10 ("Книга") так, чтобы класс записывал количество страниц манускрипта, и добавьте метод для вычисления окончательного количества страниц, принимая во внимание редукцию на 80%. Проверьте класс с помощью программы-теста, которая создает 15 глав со сгенерированным случайным образом количеством страниц от 20 до 50.

3.20 Шахматная доска. Напишите программу, создающую изображение шахматной доски, большую часть которой составляет метод paint с двумя вложенными циклами и двумя вызовами метода fillRect.

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


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz