МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего образования «Ижевский государственный технический университет имени М.Т.Калашникова» (ФГБОУ ВО «ИжГТУ имени М.Т.Калашникова») Институт непрерывного профессионального образования Отчет по лабораторной работе №4 по дисциплине «Программные средства информации» на тему «Операторы цикла Do и While» Выполнил студент группы 4-03-3 Куликов М. Д. Проверил Бендер С. А. д. к. ПМИ Ижевск 2020 Постановка задачи. 3 вариант. Напишите 5 вариантов программы для цикла Do с проверкой условия в начале и в конце и для цикла while и until. Пользователь вводит целое число, надо посчитать сколько раз в десятичном представлении встречается цифра 1. Теоретические сведения Оператор цикла позволяет выполнить группу операторов несколько раз в соответствии с заданными условиями повтора. Существует несколько видов операторов цикла: 1. 2. 3. 4. Do…Loop While…Wend For…Next For Each…Next Синтаксис оператора Do…Loop следующий: 1) Первый вариант – проверка условия в начале цикла Do [{While | Untile} <условие>] [<операторы >] [Exit Do] [<операторы >] Loop 2) Второй вариант – проверка условия в начале цикла Do [<операторы >] [Exit Do] [<операторы >] Loop [{While | Untile} <условие>] Где: Условие – логическое выражение, которое имеет значение истина(True) или ложь (False); значение условия Null то же, что и False; Для While(англ. пока) выполнение цикла продолжается пока условие истинно, Для Untile (англ. До) – выход из цикла, когда условие истинно; Операторы – один или несколько операторов, выполнение которых повторяется, пока условие после While истинно (True) или условие после Untile ложно (False); Exit Do – может использоваться, как альтернативный выход из цикла (на следующую строку программы после Loop); Любое количество Exit Do может быть помещено внутри цикла. Обычно эта команда используется с вычисляемым логическим выражением оператора If… Then. Синтаксис оператора цикла While...Wend следующий: While <условие> [<операторы>] Wend Выполнение операторов цикла повторяется, пока <условие> истинно (True). Решение задачи На языке VBS написаны 5 программ: Они выполняют одну задачу, соответственно операторы идентичны. В строке “if x mod 10 = 1 then Y = Y + 1” стоит оператор условия If который проверяет равен ли остаток от деления заданного числа на 10 единице, и если это так, то прибавляет к счетчику Y единицу. В строке “x = x \ 10” заданное пользователем число делиться на 10, тем самым происходит переход к следующему разряду. 1)x = InputBox ( " " ) y=0 do until x = 0 if x mod 10 = 1 then Y = Y + 1 x = x \ 10 loop MsgBox Y&" edinic" В данной программе был использован оператор Do…Loop в вариации Untile. Условие проверяется в начале цикла. 2)x = InputBox ( " " ) y=0 Do If x mod 10 = 1 then Y = Y + 1 x = x \ 10 loop while x > 0 MsgBox Y&" edinic" В данной программе был использован оператор Do…Loop в вариации while. Условие проверяется в конце цикла. 3)X = InputBox ( " " ) y=0 while x > 0 If X mod 10 = 1 then Y = Y + 1 x = x \ 10 wend MsgBox Y&" edinic" В данной программе был использован оператор While…wend. Выполнение операторов повторяется пока условие верно. 4)x = InputBox ( " " ) y=0 do while x > 0 If x mod 10 = 1 then Y = Y + 1 x = x \ 10 loop MsgBox Y&" edinic" В данной программе был использован оператор Do…Loop в вариации While. Условие проверяется в начале цикла. 5) x = InputBox ( " " ) y=0 do If x mod 10 = 1 then Y = Y + 1 x = x \ 10 loop until x = 0 MsgBox Y&" edinic" В данной программе был использован оператор Do…Loop в вариации Untile. Условие проверяется в конце цикла. Результат работы программы: Рисунок 1. Программа запрашивает у пользователя число. Рисунок 2. Программа выдает количество единиц в разрядах введенного пользователем числа