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.  вычислить значение функции для нескольких значений х


 

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

14654. ИССЛЕДОВАНИЕ ТОЧНОСТИ ТЕХНОЛОГИЧЕСКОГО ПРОЦЕССА ИЗГОТОВЛЕНИЯ ДЕТАЛИ 355.5 KB
  Лабораторная работа №1 по курсу Надёжность технических и программных средств ИССЛЕДОВАНИЕ ТОЧНОСТИ ТЕХНОЛОГИЧЕСКОГО ПРОЦЕССА ИЗГОТОВЛЕНИЯ ДЕТАЛИ 1. Цель работы. Целью этой работы является ознакомление с практическим использованием положений теории ...
14655. ОПРЕДЕЛЕНИЕ ЭДС КОМПЕНСАЦИОННЫМ СПОСОБОМ 47 KB
  Определение эдс компенсационным способом I. Определение эдс неизвестного элемента Ех. Собрать цепь по схеме соблюдая полярность подключения источников ключи разомкнуты: Рис.1 Определите участок на котором происходит компенсация. После проверки...
14656. Определение утечек холодильного агента 39.5 KB
  Лабораторная работа: Определение утечек холодильного агента Цель работы Углубление знаний по курсу путем изучения способов обнаруженияутечек холодильных агентов и получения навыков их определения. Правила техники безопасности Запрещается: в...
14657. ОПРЕДЕЛЕНИЕ ПАРАМЕТРОВ ВЛАЖНОГО ВОЗДУХА 282.5 KB
  Лабораторная работа №1 на тему: ОПРЕДЕЛЕНИЕ ПАРАМЕТРОВ ВЛАЖНОГО ВОЗДУХА 1. ЦЕЛЬ РАБОТЫ Научиться определять параметры влажного воздуха: с помощью психрометров Августа и Ассмана; с помощью i d диаграммы влажного воздуха; расчётными методами. 2....
14658. Определение износа основных деталей компрессоров 95.5 KB
  Лабораторная работа: Определение износа основных деталей компрессоров I Общие положения Цель занятий Получить и закрепить навыки по определению износа основныхдеталей компрессоров и сравнить его с допустимыми нормами износа этихчастей определить
14659. Практические навыки работы с микропроцессором Intel 80х86 68 KB
  Вариант №2 Лабораторная работа №1. Цель работы: приобрести практические навыки работы с микропроцессором Intel 80х86 изучить возможности устройства Intel 80х86 практически освоить режимы его работы. № п/п 1ое слагаемое ...
14660. Изучение арифметических команд и команд пересылки данных 68 KB
  Рузанов И.В. 3922 Вариант №1 Лабораторная работа №1. Цель работы: приобрести практические навыки работы с микропроцессором Intel 80х86 изучить возможности устройства Intel 80х86 практически освоить режимы его работы. № п/п 1ое слаг
14661. Организация условных переходов 50 KB
  Вариант №5 Часть вторая. Лабораторная работа 1 Организация условных переходов Из имеющегося массива чисел осуществить выборку тех которые имеют четное число единиц. № вар. Исходный массив 5 ...
14662. Монтаж малой холодильной установки 79 KB
  Отчет по лабораторной работе №3 на тему: Монтаж малой холодильной установки Место работы Лаборатория холодильных установок Оборудование и материалы Холодильная машина ФАК 1.5 батареи ИРСН терморегулируюший вентиль ТРВ2М медные трубки гайки набор монтаж