Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Совершенный код. Мастер-класс - Макконнелл С.

Макконнелл С. Совершенный код. Мастер-класс — М.: Русская редакция, 2005. — 896 c.
ISBN: 5-469-00822-3
Скачать (прямая ссылка): soversheniykodmasterklass2005.djvu
Предыдущая << 1 .. 184 185 186 187 188 189 < 190 > 191 192 193 194 195 196 .. 426 >> Следующая

премию для группы лиц. Вам нужен цикл, который будет брать
ставку для каждого человека из списка и добавлять ее к общей
сумме. Вот что нужно сделать.
Во-первых, в комментариях напишите шаги, которые должно
выполнять тело цикла. Легче записать, что необходимо сделать,
когда вы не думаете о деталях синтаксиса, индексах цикла,
массива и т. п.
Шаг 1: Создание цикла изнутри наружу (псевдокод)
- Получить ставку из таблицы.
- Добавить ставку к общей сумме.
Во-вторых, замените комментарии в теле цикла на код, насколько
это возможно без фактического написания всего цикла. В данном
случае возьмите ставку для одного лица и добавьте ее к сумме.
Используйте реальные данные, а не абстракции.
Шаг 2: Создание цикла изнутри наружу (псевдокод)
г- table еще не использует индексов.
4>rate = table[ ]
totalRate = totalRate + rate
Пример предполагает, что table - это массив, содержащий данные
о ставках. Сначала вам не надо беспокоиться об индексах
массива, rate - это переменная, в которой хранится ставка,
выбранная из таблицы ставок. Соответственно totalRate
- переменная, содержащая сумму всех ставок.
Далее добавьте индексы к массиву table:
Шаг 3: Создание цикла изнутри наружу (псевдокод)
rate = table[ census.Age ][ census.Gender ] totalRate =
totalRate + rate
Доступ к элементам массива осуществляется в зависимости от
возраста и пола, поэтому censusAge и census.Gender служат для
индексации массива. Пример пред-
ГЛАВА 16 Циклы 379
полагает, что census - это структура, содержащая сведения о
людях из рассчитываемой группы.
Следующий шаг - построение цикла вокруг существующих
выражений. Поскольку цикл должен вычислять ставки для каждого
человека из группы, индекс должен перечислять всех членов
группы.
Шаг 4: Создание цикла изнутри наружу (псевдокод)
For person = firstPerson to lastPerson
rate = tablet census.Age, census.Gender ] totalRate =
totalRate + rate End For
Все, что вы должны сделать, - это поместить цикл for вокруг
существующего кода и добавить к нему пару begin-end.
Напоследок убедитесь, что переменные, использующие индекс
цикла person, написаны правильно. В данном случае переменная
census изменяется вместе с person, поэтому ее следует
корректно проиндексировать.
Шаг 5: Создание цикла изнутри наружу (псевдокод)
For person = firstPerson to lastPerson
rate = tablet censusf person ].Age, censusf person ].Gender
]
totalRate = totalRate + rate End For
И, наконец, напишите необходимую инициализацию. В этом примере
нужно инициализировать переменную totalRate.
Последний шаг Создание цикла изнутри наружу (псевдокод)
totalRate = О
For person = firstPerson to lastPerson
rate = table[ censusf person ].Age, census[ person ].Gender
]
totalRate = totalRate + rate End For
Если вы хотите добавить еще один цикл вокруг цикла person,
продолжайте таким же образом. Вы не должны жестко
придерживаться этого порядка. Идея в том, чтобы начать с чего-
то определенного, думать только об одной задаче в каждый
момент времени и строить цикл из простых компонентов.
Предпринимайте маленькие, понятные шаги, постепенно обобщая и
усложняя цикл. Таким образом, вы минимизируете количество
кода, на котором необходимо одновременно сосредоточиваться и,
следовательно, уменьшите вероятность ошибки.
16.4. Соответствие между циклами и массивами
Циклы и массивы часто связаны друг с другом. Зачастую цикл 0
тШ1"
создается для манипуляций с массивами, и счетчики цикла шт между
тмт и тст- один к одному соответствуют индексам массива. Так,
следу- вами см, также раздел 10.7. ющие индексы циклов for
соответствуют индексам массива:
380 ЧАСТЬ IV Операторы
Пример умножения массивов (Java)
for ( int row = 0; row < maxRows; row++ ) {
for ( int column = 0; column < maxCols; column++ ) {
product[ row ][ column ] = a[ row ][ column ] * b[ row ][
column ];

В языке Java цикл для таких операций с массивами необходим. Но
стоит заметить, что циклические структуры и массивы не
обязательно должны использоваться вместе. Некоторые языки,
особенно APL и Fortran 90 и более поздние, предоставляют
операции с массивами, исключающие необходимость применять
такие циклы, как только что продемонстрированные. Вот так
выглядит фрагмент кода на APL, выполняющий ту же операцию:
Пример умножения массивов (APL)
product <- а х b
Вариант на APL проще и менее подвержен ошибкам. Он использует
только три операнда, тогда как фрагмент на Java - 17. Он не
содержит переменных цикла, индексов массива или управляющих
структур, которые можно некорректно закодировать.
Из этих примеров следует, что частично программирование
направлено на решение задачи, а частично - на решение этой
задачи на определенном языке. Выбранный вами язык существенно
влияет на получаемый результат.
I
Контрольный список: циклы
ftttp://ce2e.com/1616
Выбор и создание цикла
? Используется ли цикл while вместо цикла for, если он
больше подходит?
? Создавался ли цикл изнутри наружу?
Предыдущая << 1 .. 184 185 186 187 188 189 < 190 > 191 192 193 194 195 196 .. 426 >> Следующая