· <выр1>, <выр2>, <выр3> - арифметические (не комплексные) выражения, перечисленные через запятую. Последнее выражение может отсутствовать. Значение первого выражения указывает начальное значение счетчика цикла, значение второго выражения -- конечное, а значение третьего -- шаг счетчика цикла. Если третье выражение отсутствует, то шаг счетчика цикла равен единице.
Пример. В результате выполнения группы операторов
SUM = 0.0
DO I=1,15
SUM = SUM + I
ENDDO
значение переменной SUM станет равным сумме 1+2+3+...+15 т.е. 140.
Операторы тела цикла могут не выполняться ни разу, если начальное значение счетчика цикла превосходит конечное, а шаг счетчика положителен, либо, при отрицательном шаге, если начальное значение счетчика цикла меньше конечного.
Простые правила, которые НЕОБХОДИМО запомнить !!! :
Если в цикле суммирование, то сумматор перед циклом надо обнулить = 0.
Если в цикле умножение, то произведение перед циклом надо =1 .
Задание: Решите задачу 1204. - использовать цикл с перебором
Обратите внимание и проверьте свои программы: Вывод заголовка программы должен предшествовать основной РАБОТЕ программы
В отличии от предыдущей задачи в этой задаче точно известно сколько всего чисел в последовательности. Поэтому используется Цикл С ПЕРЕБОРОМ.
4. Вложенные Циклы DO и работа отладчика
Разбор работы программы MARKI.FOR (загрузите программу)
Простая задача:
Купить на 5 рублей 20 марок достоинством по 40, 20 и 5 копеек (должна быть хоть одна марка каждого типа).
Напечатать все возможные варианты покупки.
Если таких вариантов нет, то вывести строчку: No solution
Ищем не эффективное, но простое решение.
N_40, N_20, N_5 – обозначают колличество марок, купленных по 40, 20 и 5 копеек.
Марок каждого типа может быть от 1 до 20 (по условию их >=1 и <=20).
Поэтому переберём все возможные варианты (составим ВСЕ ВОЗМОЖНЫЕ комбинации), когда количество марок по 40, 20 и 5 копеек меняется от 1 до 20 (для этого используем три вложенных цикла DO – END DO)
Т.е. сформируются комбинации вида
N_40 N_20 N_5
1 1 1 - комбинация в которой купили по 1 марке по 40, 20 и 5 копеек.
1 1 2
. . .
. . .
20 20 20 - комбинация в которой купили по 20 марок по 40, 20 и 5 копеек.
Затем, отберем из этих комбинаций те, которые удовлетворяют условиям задачи: число марок = 20, стоимость марок = 5 руб. (для этого используем два вложенных «блочных» оператора IF)
Это типичная задача:
организовали перебор пространства всевозможных решений, а затем отобрали те решения, которые удовлетворяют условию задачи.
Для отслеживания варианта отсутствия решений вводится переменная Nosolution=1
Если мы найдём хоть одно решение, то значение этой переменной станет 0. После окончания работы всех циклов мы анализируем значение Nosolution и печатаем “ No solution “, если решений нет.
Обратите внимание Вам следует чётко показать структуру записи оперераторов:
Начало и конец «блочных» операторов DO – END DO и IF - END IF выровнены по вертикали,
Всё что находится внутри блока смещено относительно этой линии не менее, чем на 2 позиции и тоже выровнено по вертикали.
Так же пустые строки служат для выявления структуры программы: Заголовок – Начало программы- Описания – Тело программы – Вывод результатов – Конец программы
Проверьте работоспособность программы:
1. Компиляция
2. Компоновка
3. Запуск
Отладка
Установить курсор на строку MARKS=20 и
набрать Build: Start DEBUG ^ Run to Cursor (CTRL-F10)
(отладку начинаем с исполняемых операторов, т.е установив курсор на исполняемую инструкцию!!! , чтобы пропустить часть ассемблерных команд, связанных с заданием размещения программы в памяти, выделения памяти под переменные и т.д.)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.