1718

Алгоритмизация и программирование циклических алгоритмов

Контрольная

Информатика, кибернетика и программирование

Оператор цикла с предусловием While Wend. Повторяющаяся последовательность действий (в программе операторов). Оператор цикла For Next. Форматирование значений данных. Табулирование функций.

Русский

2013-01-06

112.5 KB

29 чел.

Алгоритмизация и программирование циклических алгоритмов

Циклическим называется алгоритм, в котором некоторая последовательность действий может выполняться несколько раз в зависимости от заданного условия. Повторяющаяся последовательность действий (в программе операторов) называется телом цикла. Условие, от которого зависит число повторений цикла, включает в себя, по крайней мере, одну переменную, которая называется параметром цикла. Параметр цикла должен обязательно изменяться в теле цикла. Циклические алгоритмы реализуются в программе с помощью операторов цикла. В VBA есть 3 оператора цикла (While, Do, For), которые имеют несколько разновидностей.

  1.  Оператор цикла с предусловием WhileWend

В программе:

While <условие> - заголовок цикла

<тело цикла>

Wend

Для записи условий используются логические выражения.

Выполнение оператора:

Устанавливается начальное значение параметра цикла. Вычисляется значение логического выражения в условии, если его значение true, то выполняются операторы в теле цикла и опять вычисляется значение логического выражения. До тех пор, пока значение логического выражения true выполняются операторы тела цикла. Как только значение логического выражения станет false, происходит выход из цикла и переход к следующему за While оператору.

Если перед первым выполнением цикла значение логического выражения false, то тело цикла не выполняется ни разу. При использовании оператора While необходимо правильно устанавливать начальное значение и изменение параметра цикла, иначе цикл может выполняться бесконечно. Для выхода из зациклившейся программы нужно нажать клавиши : Ctrl + Pause\Break (или ESC), в появившемся окне прерывания программы следует выбрать End.

Пример1. Вывести целые числа от 1 до 20, их квадраты и кубы в первые 3 столбца таблицы на рабочем листе.

i – число, которое нужно вывести, и номер строки, в которую нужно вывести число.

i=1

While i<=20

Cells(i,1)=i

Cells(i,2)=i^2

Cells(i,3)=i^3

i=i+1

Wend

Любой циклический алгоритм можно реализовать с помощью цикла While.

  1.  Оператор цикла ForNext

Цикл ForNext – частный случай цикла с предусловием. Существуют две формы цикла For:

 iнач<=iкон ∆i>0

 iнач >=iкон ∆i<0

For i = iнач To iкон [ Step ∆i ] – заголовок цикла

 <тело цикла>

Next i

Если параметр Step не указывается, то предполагается шаг изменения параметра цикла равный 1.

При выполнении оператора For все операторы тела цикла повторяются для всех значений параметра цикла от iнач до iкон с шагом i. Если i>0, то значение параметра цикла увеличивается от iнач до iкон. При i<0 уменьшается от iнач до iкон.

Если в первой форме iнач > iкон, а во втором iнач < iкон, то тело цикла не выполняется ни разу. Если iнач = iкон, то тело цикла выполняется один раз.

Если i<0, то тип переменной не может быть Byte.

Особенности цикла For:

  1.  Установка начального, конечного значения и шага изменения параметра цикла выполняется автоматически в соответствии с заголовком цикла. Их нельзя изменять в теле цикла.
  2.  Не рекомендуется использовать значение параметра цикла после выхода из цикла. Оно может быть не определено.
  3.  Цикл For используется тогда, когда число повторений цикла можно определить до начала выполнения цикла.

- число повторений цикла.

Количество повторений цикла:

For i = 2 To 20 Step 2 10

For i = 2 To 20 Step -2 0

For i = 2 To 2 Step -2 1

For i = 20 To 2 Step -2 10

For i = 20 To 2 Step 2 0

For i = 2 To 2 Step -2 1

For i = 2 To 2 Step 0 бесконечно

Пример. Вывести числа от 1 до 20 в первый столбец таблицы, а в обратном порядке от 20 до 1 – во второй.

For i=1 To 20 Step1

Cells(i,1) = i

Next i

For i=20 To 1 Step -1

Cells(21-i,2) = i

Next i

  1.  Форматирование значений данных

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

Синтаксис функции:

Format (<выражение>, <формат>), 

где <выражение> – арифметическое выражение или дата,

<формат> – это именованный или определенный пользователем формат.

Предопределенные или именованные форматы:

  •  LongDate, ShortDate – длинный и короткий формат даты в соответствии с установками этих форматов в ОС Windows;
  •  Currency – денежный формат, формат числа с разделителем тысяч, двумя десятичными разрядами и знаком денежной единицы (по умолчанию р.);
  •  Fixed – формат числа с двумя десятичными разрядами и хотя бы одним разрядом в целой части числа;
  •  Percent – процентный формат, число умножается на 100 и добавляется знак %.

Разделители тысяч (пробел) и целой и дробной части (,) устанавливаются в ОС Windows.

Примеры:

  •  MsgBox Format (#2/10/09# , ”LongDate”) → 10 февраля 2009
  •  MsgBox Format (#2/10/09# , ”ShortDate”) → 10.02.2009

a=1234.5

  •  MsgBox Format (a,”Currency”) → 1 234,50 р.
  •  MsgBox Format (a,” Fixed”) → 1234,50
  •  pr=0.25
  •  MsgBox Format (pr,” Percent”) → 25%

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

Символы-заполнители:

0 – отображает цифру, если она есть в этой позиции и 0, если ее нет;

# – отображает цифру, если она есть в этой позиции, если ее нет, не отображает ничего, аналогичен 0, но не отображает начальные и конечные пробелы;

. – отображает разделитель целой и дробной части в указанной позиции;

, – отображает разделитель тысяч в указанной позиции;

% – число умножается на 100 и добавляется знак %;

$ – отображает знак денежной единицы (р.) в указанной позиции.

Примеры:

a=1234.5

  •  MsgBox Format (a , ”00000.00”) → 01234,50
  •  MsgBox Format (a , ”#####.##”) → 1234,5
  •  MsgBox Format (a, ”0.00”) → 1234,50
  •  MsgBox Format (a, ”#,###.0#$”) → 1 234,5 p.

pr=0.25

  •  MsgBox Format (pr, ”#.00%”) → 25,00%

При выводе в ячейки рабочего листа числовых данных для их форматирования устанавливаются значения различных свойств ячейки или диапазона. Для установки числовых форматов используется свойство NumberFormat. Формат задается с помощью строки из символов-заполнителей.

Cells(1,1) = a

Cells(1,1) . NumberFormat = ’’0.0#%’’

Range (’’A1:A7’’) . NumberFormat = ’’0.00$’’

Можно при выводе в ячейки использовать функцию Format, но тогда число будет выведено в ячейке как строка.

Cells(1,1) = Format (pr,” Percent”)

Табулирование функций

Табулирование функции – это вычисление значений функции для ряда значений аргумента. Аргумент может быть задан в виде набора произвольных значений (массива) или в виде набора чисел от некоторого начального значения до конечного значения с фиксированным шагом.

Результаты табулирования функции обычно выводятся в таблицу.

y=x2

x= (-1,8,4,0,-3.5)

x=-1, -0.5,0,0.5,1….3 xнач=-1; xкон=3, ∆x=0.5

Задача. Вычислить значение функции y = f(x) для значений аргумента xнач, xнач + ∆x, xнач + 2 ∆x, ..., xкон. Результаты вывести в таблицу вида:

Таблица значений функции

 xнач = xкон = шаг x =

 № п/п

 X

Y

1

2

 xнач

 xнач + ∆x

xкон

 f (xнач)

 f (xнач + ∆ x )

f (xкон)

Таблица используемых переменных

Имя переменной в задаче

Имя переменной

в программе

Тип

переменной

Комментарий

xнач

xкон

∆х

х

у

-

хn

хk

dx

x

y

i

Real

Real

Real

Real

Real

byte

нач. значение аргумента, исх дан

кон. значение аргумента, исх дан

шаг изменения аргумента, исх дан

аргумент функции, промежут. рез.

значение функции, результат

№ строки, промежут. результат


Графическая схема алгоритма
:

Текст процедуры:

Sub Tabul()

' Вывод данных на рабочий лист

' Табулирование функции

Dim xn As Single, xk As Single, dx As Single, x As Single, y As Single

Dim i As Byte

xn = InputBox("Введите Xнач", "Ввод исходных данных")

 xk = InputBox("Введите Xкон", "Ввод исходных данных")

dx = InputBox("Введите шаг X", "Ввод исходных данных")

Cells.Clear

Range("A1") = "Таблица значений функции"

 Range("A2") = "Xнач=" & xn

Cells(2, 2) = "Xкон=" & xk

Cells(2, 3) = "Шаг X=" & dx

Cells(4, 1) = " N п/п "

Cells(4, 2) = " X "

Cells(4, 3) = " Y "

i = 1

x=xn

While x<=xk

y = 2 * Sqr(x) + 1

Cells(i + 4, 1) = i

Cells(i + 4, 2) = x

Cells(i + 4, 2).NumberFormat = "0.00"

Cells(i + 4, 3) = y

Cells(i + 4, 3).NumberFormat = "0.000"

x=x+dx

i = i + 1

 Wend

 End Sub 

Можно использовать и оператор цикла For:

For x = xn To xk Step dx

 --------------

Next x

Не записываются операторы x=xn и x=x+dx

Тесты:

  1.  k=[(xкон-xнач)/∆x] +1 - количество строк таблицы
  2.  вычислить значение функции для нескольких значений х


 

А также другие работы, которые могут Вас заинтересовать

1240. Особенности использования Microsoft Word 664 KB
  Понятие электронного офиса. Текстовый процессор Microsoft Word. Перемещение по документу. Редактирование текста и расстановка переноса. Создание оглавлений. Работа с редактором формул и редактором картинок.
1241. Теория маркетинга 664 KB
  Сущность маркетинга и эволюция его концепции. Жизненный цикл товара. Товарный знак и знак обслуживания. Регистрация товарного знака. Варианты организации маркетинговой деятельности. Основные понятия, сущность и история развития паблик рилейшнз.
1242. Административное право, ответы к экзамену 1.31 MB
  Понятие и правовое регулирование в административном праве. Понятие и основные черты административно-правовых отношений. Административно-правовые гарантии реализации прав граждан. Обращения граждан. Основные принципы построения и функционирования системы государственной службы: понятие, система и виды.
1243. Информационные системы в экономике 438 KB
  Объективность процесса информатизации, направления ее развития. Основные понятия экономической информатики. Информационный бизнес, рынок, менеджмент. Структура и схема функционально-позадачных информационных систем. Основные направления в развитии инфокоммуникационных технологий. Этапы компьютерного решения экономических задач.
1244. Шпаргалка по логике: Ответы на экзаменационные билеты 531.08 KB
  МЫШЛЕНИЕ КАК ПРЕДМЕТ ЛОГИКИ. ВЗАИМОСВЯЗЬ ЛОГИКИ И ЯЗЫКА. ОСОБЕННОСТИ ЛОГИЧЕСКИХ ЗАКОНОВ И ИХ СВЯЗЬ С ПРИНЦИПАМИ МЫШЛЕНИЯ. ЗАКОН ИСКЛЮЧЕННОГО ТРЕТЬЕГО. ПОНЯТИЕ КАК ФОРМА МЫШЛЕНИЯ. ОБОБЩЕНИЕ И ОГРАНИЧЕНИЕ ПОНЯТИЯ. ОПРЕДЕЛЕНИЕ ПОНЯТИЯ КАК ЛОГИЧЕСКАЯ ОПЕРАЦИЯ.
1245. Место и роль Фонда социального страхования РФ в обеспечении социальной защиты населения 626 KB
  Сущность и особенности функционирования фонда социального страхования РФ. Понятие, функции и принципы социальной защиты населения. Роль Фонда социального страхования в системе социальной защиты населения. Анализ деятельности фонда социального страхования РФ (на примере калужского регионального отделения).
1246. Право собственности в гражданском праве 389.5 KB
  Понятие и содержание права собственности по законодательству РФ. Проблема соотношения видов и форм права собственности. Классификации собственности на виды. Первоначальные и производные основания приобретения права собственности. Проблема определения момента приобретения права собственности на выморочное имущество (коллизии судебной практики).
1247. Проектирование одноцепной ВЛ 110 кВ ПС Березники 883.5 KB
  Определение расчетных климатических условий. Электрический расчет проводов. Определение единичных нагрузок на провод АС 150/24. Определение единичных нагрузок на трос ТК – 50. Поддерживающее неизолированное крепление для троса ТК – 50 (с заземлением) для ВЛ 110 кВ. Схема дополнительного заземления для промежуточных железобетонных опор. Определение срока монтажа ВЛ.
1248. Проектування токарно-револьверного верстата 761.5 KB
  Вибір компонування і визначення основних технічних характеристик верстата і приводів. Вибір базової моделі й обґрунтування принципової конструкції верстата. Проектний розрахунок приводу у автоматизованій системі PRIVOD. Розрахунок кількості зубів шестерень привода та оцінювання точності кінематичного розрахунку. Проектний розрахунок міцності деталей та механізмів привода головного руху.