Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Этап. Разработка пользовательского интерфейса 5 страница




 

2.10.1 Циклы с параметром For … Next

Структура цикла:

For Параметр_Цикла = Начальное_Значение To Конечное_Значение

[Step Шаг]

Операторы

[Exit For]

Next [Параметр_Цикла]

где For – ключевое слово VBA (от), обозначающее начало цикла;

Параметр_цикла – переменная, определенная в качестве счетчика цикла;

Начальное_Значение – число, задающее начальное значение параметра цикла;

To – ключевое слово VBA (до), разделяющее

Начальное_значение и Конечное_Знаение;

Конечное_Значение – число, задающее значение параметра цикла,

при котором цикл завершается;

Step – ключевое слово VBA (шаг), используемое для

задания шага цикла, необязательный аргумент;

Шаг – число, задающее шаг цикла, т.е. значение, на которое

увеличивается (или уменьшается) значение параметра

цикла на каждом шаге. Это число может быть

отрицательным;

Exit For – оператор досрочного выхода из цикла (необязательный);

Next – ключевое слово VBA (следующий), обозначающее

конец цикла.

Работа цикла:

Шаг 1 Сначала определяется параметр цикла, а также вычисляются и запоминаются начальное и конечное значения этой переменной.

Шаг 2 Параметру цикла присваивается начальное значение.

Шаг 3 Начальное значение параметра цикла сравнивается с конечным значением.

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

Шаг 4 Выполняется тело цикла.

Шаг 5 После выполнения тела цикла происходит присваивание параметру цикла следующего значения. Переход к шагу 3.

Примечание.

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

Пример 1.

For I = 0 To 10 Step 2 (Значение I будет увеличиваться на 2)

2 Цикл For … Next может быть прерван досрочно при достижении какого либо условия. Для этого в нужном месте цикла нужно поместить оператор Exit For.

Пример 2.

Dim S As Integer

Dim j As Integer

S = 2

For j = 1 To 10

S = S + j

If S > 6 Then

Exit For (Выход из цикла, если значение S > 6)

End If

Next j

MsgBox (S)

2.10.2 Циклы с условием (итерационные)

 

Если какое-то действие (несколько действий) необходимо выполнить много раз, но заранее неизвестно сколько раз и это зависит от какого-то условия, то тогда следует воспользоваться циклом с предусловием или с постусловием.

В VBA есть два основных цикла DO … LOOP – с условием, вводимым ключевым словом While, и с условием, вводимым ключевым словом Until. Оба они могут быть с предусловием или с постусловием.

Синтаксис:

Цикл с предусловием Цикл с постусловием
Do While | Until <условие> <Тело цикла> Loop Do <Тело цикла> Loop While | Until <условие>

где Do – ключевое слово (делать);

While – ключевое слово (пока);

Until – ключевое слово (до тех пор пока);

Loop – ключевое слово, указывающее на окончание цикла;

<условие> – логическое выражение, истинность которого проверяется

в начале каждого выполнения тела цикла;

<тело_цикла> – произвольная последовательность операторов;

Конструкция Do … While читается: делать пока выполняется условие. В конструкции Do … While для увеличения шага следует писать специальный оператор, т.к. в ней в отличие от конструкции For, не делается это автоматически.

Конструкция Do … Until читается:делать до тех пор, пока не будет выполнено условие. В конструкции Do … Until для увеличения шага следует писать специальный оператор, т.к. в ней в отличие от конструкции For, не делается это автоматически.

Условие, записанное после ключевого слова Until, проверяется в конце каждой итерации (после выполнения тела цикла). Обратить внимание, что оно работает здесь не совсем так, как в цикле While. Если условие является истинным (True), то выполнение цикла завершается. Если условие не выполняется (является ложным – False), то вновь выполняется тело цикла.

Пример 1.

Постановка задачи. Вычислить сумму конечного ряда с помощью подпрограммы-процедуры.

Технология выполнения задания:

1 Исходные данные: i Î Z

Результат: S Î R.

2 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл с предусловием While:

Sub summa()

Dim S As Integer

Dim i As Integer

S = 0

i = 1

Do While i <= 10

S = S + i ^ 2

i = i + 1

Loop

MsgBox (S)

End Sub

3 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл с предусловием Until:

Sub summa()

Dim S As Integer

Dim i As Integer

S = 0

i = 1

Do Until i > 10

S = S + i ^ 2

i = i + 1

Loop

MsgBox (S)

End Sub

4 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл с постусловием While:

Sub summa()

Dim S As Integer

Dim i As Integer

S = 0

i = 1

Do

S = S + i ^ 2

i = i + 1

Loop While i <= 10

MsgBox (S)

End Sub

5 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл с постусловием Until:

Sub summa()

Dim S As Integer

Dim i As Integer

S = 0

i = 1

Do

S = S + i ^ 2

i = i + 1

Loop Until i > 10

MsgBox (S)

End Sub

 

Лабораторная работа № 4

Программирование алгоритмов циклической структуры

Цель: приобретение навыков программирования алгоритмов циклической структуры с помощью подпрограммы-процедуры, позволяющую вычислять сумму (произведение) конечного ряда с помощью операторов цикла с параметром, с предусловием, с постусловием. Индивидуальные варианты лабораторной работы № 4 представлены в таблицах 19, 20 (2 часа).

 

Таблица 19

№ В Варианты индивидуальных заданий
Разработать подпрограмму процедуру, вычисляющую сумму (произведение) конечного ряда
 
 
 
 
 
 
 
 
 
 
     

 

 

Продолжение таблицы 19

 
 
 
 
 
 
 
 
 
 

 

Таблица 20

№ В Варианты индивидуальных заданий
Разработать экономическую пользовательскую процедуру
  Вычислить 5 значений уровня цен на автомобили на рынке, если объем денежной массы остается неизменным. P=M*V/Q где P - уровень цен; M - объем денежной массы; V - скорость обращения денег; Q - количество обращающегося товара.

 

Продолжение таблицы 20

  Мы положили в банк 10000 р. на 5 лет при ставке 10% в год. Текущая стоимость составляет 10000 р. Вычислить ежегодную прибыль FV=PV*(1+R)^N где FV - прибыль; PV - текущая стоимость; R - ставка процента; N - число лет.
  Рассчитать реальную заработную плату VP по формуле VP=VN/P. Если уровень цен P меняется от P1 до P2, шаг изменения уровня цен = 1. где Р1 - начальный уровень цен; P2 - конечный уровень цен; VP - заработная плата; VN - номинальная заработная плата; Р - уровень цен.
  Рассчитать какой доход получит владелец акции, купив ее по рыночной цене P, если рыночная цена изменяется на 300 денежных единиц каждый год, а дивиденд на акцию фиксирован. Доход на акцию рассчитывается по формуле: ДОХОД = ДИВИДЕНД*100/РЫНОЧНАЯ ЦЕНА АКЦИИ
  Начислить сумму износа по объекту основных средств за 6 месяцев, если дана первоначальная стоимость объекта, годовая норма в %, используя формулу: износ за 1 месяц = первонач.стоимость*норму годовую/12 мес т.е. I = S * N/12 где I - сумма износа за месяц; S - первоначальная стоимость; N - норма годовая (8.9%).
  Оформлен депозитный вклад в банке на сумму 5 млн.р. при ставке (R) 10% в год. Составить программу, вычисляющую будущую стоимость вклада (FV), если известно, что текущая стоимость (PV) составляет 10 млн. р., а число лет, на которые оформлен вклад равно 5.
  В 1626 г индейцы продали о.Манхеттен за 20$. Если бы эти деньги были помещены в банк под 4% в год, то какова была бы стоимость капитала в 1996 г?
  Выявление зависимости экономической ситуации от величины Спроса (С) и Предложения (P), по формуле: C = F*Q, P = F*S где F - коэффициент функциональной зависимости; Q, S – цена.

 

 

Продолжение таблицы 20

  Рассчитать темпы роста безработицы с A года по B год и в целом за данный период по формулам: C = (D-E)/D*100, F=D-J/D*100 где C - темп роста безработицы в A+I+1 году; D - индекс безработицы в A+I+1 году; E - индекс безработицы в A+I году; F - на сколько выросла безработица в период с A по B годы, где A = 1990 год, B = 1993 год.
  В фирме работают 20 человек, каждый из них получает разную зарплату: 5 из них получают 800.000 рублей, 7 из них получают 500.000 рублей, 8 из них получают 300.000 рублей, нужно вы числить среднюю зарплату всех рабочих, по формуле: P = K/N где P - средняя зарплата рабочих, K - количество получаемых денег; N - количество людей получающих деньги.
  Определить рыночную стоимость облигаций по формуле PV = сумма (I = 1.. N) P/(1+ R) где PV - рыночная стоимость облигации; P – доход; R - процент от облигаций; N - количество лет.
  Как будет меняться прибыль предприятия при изменении цены за единицу продукции, если объём выпускаемой продукции и себестоимость за единицу продукции останутся неизменными: объём выпуска - 1500 ед.; себестоимость за единицу продукции – 1004; начальное значение цены – 140; конечное значение цены – 200; шаг изменения цены – 20.
  Вычислить среднемесячный уровень безработицы в течении года,используя формулу: уровень безработицы = среднемесячная численность безработных /численность рабочей силы Учитывая, что численность рабочей силы растет, увеличиваясь каждый раз на 2 процента.
  Пенсионерка положила в банк в январе 1995 года 500 тыс.р. Сколько она возьмет через полгода (18 месяцев), если банк начисляет 5 процентов в месяц?

 

Продолжение таблицы 20

  Вычислить доход на акцию предприятия, учитывая, что дивиденд на акцию изменяется в течение некоторого времени с [DN, DK] с шагом H. Y = ((D*D+1)/D)*100% где D – дивиденд.
  Вычислить среднегодовую стоимость (Сс) оборудования за период с момента окончания планового срока лизингового соглашения до полной амортизации оборудования на начало года по формуле Сс = (Сн+Ск)/2*Т где Сн - стоимость оборудования на начало года; Ск - стоимость оборудования на конец года; Т - период с момента окончания планового срока лизингового соглашения до полной амортизации оборудования.
  Цех располагает 50 ткацкими станками, из которых 30 работают в течение 20 лет. 12 в течение 6 лет, 8 в течение 6 лет. Вычислить средний возраст оборудования.
  Вычислить процентные деньги с N рублей за t дней по формуле: A = N*P%*t/100%*360 где A - процентные деньги; t - число дней; P - ставка процента.
  Списан автомобиль грузоподъемностью до 2 тонн. Первоначальная стоимость автомобиля составляла 10000 рублей, норма амортизации за месяц составляла 1.4% в месяц. Вычислить сумму амортизации на автомобиль за любой месяц первых пяти лет по формуле: S = P*N*K/100% где К - количество месяцев; P - цена машины; N - норма амортизации; S - сумма амортизации.
  Вычислить средний возраст оборудования, вычисляемый по отношению общей суммы лет фактической эксплуатации всех машин f к количеству единиц этого оборудования м, где t-средний возраст оборудования, лет.

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

2.11.1 Табулирование функции одной переменной

 

Постановка задачи. На отрезке [a,b] с шагом h протабулировать функцию f(x)=x2+Ln|x| и вывести на печать значения этой функции.

Технология выполнения задания:

 
 

 

 


Для решения задачи в области определения функции вводится сетка – совокупность точек {x0,x1,x2, …, xi}, где x0 = а, x1= x0+h, …, xi = xi-1+h, xn = b.

Тогда задача сводится к вычислению функции f в точках xi, то есть нужно вычислить f(x0), f(x1), …, f(xi), f(xn).

I вариант

1 Введем обозначения:

хn, xk – границы отрезка;

h – шаг;

х – точка;

f – значение функции в точке.

2 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл For:

Sub primer()

Dim x As Single

Dim xn As Single

Dim xk As Single

Dim h As Single

Dim f As Single

xn = InputBox("xn=", xn)

xk = InputBox("xk=", xk)

h = InputBox("h=", h)

For x = xn To xk Step h

f = x ^ 2 + Log(Abs(x))

f = Format(f, "##.####")

x = Format(x, "##.##")

Debug.Print " x= " & x & " f= " & f

Next x

End Sub

II вариант

1 Введем обозначения:

хn, xk – границы отрезка;

h – шаг;

х – точка;

f – значение функции в точке.

2 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя итерационный цикл:

Sub primer ()

Dim x As Single

Dim xn As Single

Dim xk As Single

Dim f As Single

Dim h As Single

xn = InputBox("xn=", xn)

xk = InputBox("xk=", xk)

h = InputBox("h=", h)

x = xn

Do

f = x^2+log(ABS(x))

Debug.Print "x= " & x & " f= " & f

x = x + h

Loop While x <= xk

End Sub

 

2.11.2 Табулирование функции двух переменных (вложенные циклы)

 

Постановка задачи. На интервале xn≤x≤xk с шагом Δх, для каждого у из интервала уn≤y≤yk с шагом Δу вычислить значение функции z=x2+ln|y|.

Технология выполнения задания:

 
 

 

 


Для решения задачи в области определения функции вводится разностная сетка {хi, yi}, где x0 = xn, x1 = x0+hx, …, xi = xi-1+hx, …, xn=xk; y0 = yn, y1 = y0+hy, …, yj = yj-1+hy, …, ym=yk.

- количество узлов сетки по оси х,

- количество узлов сетки по оси y.

Тогда задача сводится к вычислению функции z в точках xi и yj, то есть z(xi,yj), то есть z(xi,yj)=x2+ln|y|, где i=1,2,… n, j=1,2, … m.

I вариант:

1 Введем обозначения:

х,y – координаты узла сетки;

f – значение функции в нем;

хn, xk,yn,yk – границы отрезка;

hх,hy – шаги сетки.

2 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл For:

Sub primer()

Dim x As Single

Dim xn As Single

Dim xk As Single

Dim yn As Single

Dim yk As Single

Dim f As Single

Dim hx As Single

Dim hy As Single

xn = InputBox("xn=", xn)

xk = InputBox("xk=", xk)

yn = InputBox("yn=", yn)

yk = InputBox("yk=", yk)

hx = InputBox("hx=", hx)

hy = InputBox("hy=", hy)

For y = yn To yk Step hy

For x = xn To xk Step hx

f = x^2+log(ABS(у))

Debug.Print "x= " & x & " y= " & y & " f= " & f

Next x

Next y

End Sub

II вариант

1 Введем обозначения:

х,y – координаты узла сетки;

f – значение функции в нем;

хn, xk,yn,yk – границы отрезка;

hх,hy – шаги сетки.

2 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя итерационный цикл:

Sub primer ()

Dim x As Single

Dim xn As Single

Dim xk As Single

Dim yn As Single

Dim yk As Single

Dim f As Single

Dim hx As Single

Dim hy As Single

xn = InputBox("xn=", xn)

xk = InputBox("xk=", xk)

yn = InputBox("yn=", yn)

yk = InputBox("yk=", yk)

hx = InputBox("hx=", hx)

hy = InputBox("hy=", hy)

y = yn

Do

x = xn

Do While x <= xk

f = x^2+log(ABS(x))

Debug.Print "x= " & x & " y= " & y & " f= " & f

x = x + hx

Loop

y = y + hy

Loop Until y > yk

End Sub

Лабораторная работа № 5

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

Цель: приобретение навыков программирования вычисления значений функции вида y=f(x) на промежутке [a,b] с шагом h и z=f(x,y) на промежутке [a,b] и [c,d] с шагом hx и hy с помощью пользовательской подпрограммы-процедуры. Индивидуальные варианты лабораторной работы № 5 представлены в таблице 21 (2 часа).

Таблица 21

№ В Варианты индивидуальных заданий
Разработать пользовательскую процедуру вычисления значения выражения
  Вычислить 7 значений функций , где начальное значение а=0.14х, шаг а=0.22

Продолжение таблицы 21

  На интервале и с шагом и протабулировать функцию
  Для каждого при всех с шагом вычислить , х=0.792
  На интервале с шагом протабулировать функцию
  На интервале с шагом для каждого «b» из интервала с шагом протабулировать функцию
  Для каждого с шагом при всех вычислить , причём, если , , иначе
  На интервале с шагом определить количество отрицательных значений функции , где а=0.8х, b=2.2х
  Для каждого с шагом вычислить по 6 значений функции , где начальное значение , а шаг
  На интервале протабулировать функцию , причём шаг , где , х=0.44
  Для каждого с шагом при всех , вычислить , причём, если , то , иначе , х=0.087

 

 

Продолжение таблицы 21

  На интервале с шагом протабулировать функцию где х=0.881, а=0.96, в=1.44
  Для каждого с шагом вычислить по 4 значения , где начальное значение , а шаг , х=1.44
  На интервале с шагом для которого из интервала с шагом протабулировать функции , , а1=0.74, b1=1.56, а2=0.22, b2=0.88, х=0.567
  На интервале протабулировать функцию , причём, если , то , иначе , х= 0.416
  Для каждого с шагом вычислить по 4 значения , где начальное значение z=0.2, а шаг
  На интервале с шагом протабулировать функцию: где ; х=0.14
  На интервале с шагом для каждого z из интервала с шагом протабулировать функции ; х=1.15

Продолжение таблицы 21





Поделиться с друзьями:


Дата добавления: 2016-10-07; Мы поможем в написании ваших работ!; просмотров: 730 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Чтобы получился студенческий борщ, его нужно варить также как и домашний, только без мяса и развести водой 1:10 © Неизвестно
==> читать все изречения...

2457 - | 2338 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.