
- •Основы информационной культуры
- •2. Техническая база информационной технологии
- •2.1 Представление информации в эвм
- •2.2 Системы счисления
- •2.3 Форматы чисел в эвм
- •2.4 Представление символьной информации
- •Программное обеспечение Вычислительной системы
- •Архивация данных
- •Концепция Visual Basic
- •Основное меню
- •Объекты управления
- •Форма (Form)
- •Командная кнопка (CommandButton)
- •Метка (Label)
- •Текстовое окно (TextBox)
- •Типы данных
- •Переменные и константы
- •Область видимости переменных и констант
- •Выражения
- •Стандартные функции
- •Программирование линейных вычислительных процессов
- •Программирование разветвляющихся вычислительных процессов
- •Программирование циклических вычислительных процессов
- •Итерационные циклы
- •Добавление изображений в форму
- •Массивы
- •Поиск в массиве элементов, удовлетворяющих заданным условиям
- •Группировка объектов
- •Создание меню
- •Ввод информации с использованием переключателей и флажков проверки
- •Процедуры и функции
- •Информационно вычислительные сети
- •Базовая модель взаимодействия открытых сетей
- •Топология ивс
- •Сетевое по. (спо)
- •Глобальная компьютерная сеть Internet. Основы функционирования Интернет.
- •Структура Интернет
- •Адресация в сетях.
- •Адресация в Интернет
- •Основные службы Интернет
- •Многоуровневое представление средств сетевого взаимодействия.
- •Коммуникационные службы
- •Прямое общение в Интернет
- •Отложенное общение в Интернет
- •Информационные службы.
- •Поиск информации в Интернет.
Программирование циклических вычислительных процессов
Циклическим называется процесс, предусматривающий многократное выполнение одной и той же группы действий с различными значениями переменных, участвующих в этой последовательности действий.
Цикл позволяет существенно сократить объем программы за счет многократного выполнения циклического участка, записанного один раз.
Обычно ЦВП содержит 4 части:
1). Подготовка к выполнению цикла – задание начальных значений переменных, участвующих в вычислениях и управляющих работой цикла.
2). Выполнение тела цикла (группы повторяющихся операторов).
3). Подготовка к повторению цикла – изменение значений переменных, управляющих циклом.
4). Проверка условий окончания цикла – по результатам проверки принимается решение о возврате к началу цикла для его повторения или о выходе из цикла.
Различают циклы с проверкой предусловия, когда проверка условия окончания цикла производится перед очередным повторением цикла, и циклы с проверкой постусловия, когда проверка условия окончания цикла производится после очередного его повторения.
Блок-схема цикла Блок-схема цикла
с предусловием с постусловием
Для организации циклов в программном коде могут быть использованы операторы If, Do …Loop и For …Next.
Оператор For…Next
Используется для организации циклов с известным числом повторений.
Синтаксис:
For Имя_переменной = m1 To m2 [Step h]
Оператор 1
Оператор 2
…
Оператор n
Next Имя_переменной ,где
Имя_переменной – переменная, которую определяет программист в качестве счетчика цикла,
m1 – число, задающее начальное значение счетчика;
m2 – конечное значение счетчика,
Step – ключевое слово, используемое для задания шага изменения счетчика цикла, необязательный элемент, если шаг = 1,
h – число, задающее шаг изменения счетчика цикла, т. е. значение, на которое увеличивается (если шаг >0) или уменьшается (если шаг <0)значение счетчика после каждого выполнения тела цикла,
Next – конец цикла.
В строке с оператором For сначала счетчику цикла присваивается начальное значение m1 и оно сравнивается с конечным значением m2. Если шаг >0 и значение счетчика > m2, то цикл ни разу не выполняется и управление передается оператору, следующему за словом Next, т. е. происходит выход из цикла. Если же значение счетчика < или = m2, то выполняется тело цикла, затем изменяется значение счетчика на величину шага и происходит возврат на строку с оператором For. Здесь текущее значение счетчика сравнивается с m2:
если оно > m2 и шаг > 0, то происходит выход из цикла;
если шаг < 0, то цикл выполняется пока значение счетчика > или = m2, выход из цикла – при значении счетчика < m2;
Если шаг = 1, то ключевое слово Step можно не писать и шаг не указывать.
Примеры.
1). For i=1 to 10 2). For i=1 to 10 step 2
… …
next i next i
3). For j=12 to 1 step -1 …
next i
В
блок-схеме цикл с оператором For
изображается следующим образом:
Из цикла с оператором For возможен досрочный выход с использованием оператора Exit For.
Задача 1
Требуется вычислить сумму 10 значений функции f (x) = x + sin x при значениях аргумента х, изменяющихся от начального значения хнач = 1 с шагом Δх = 0,1 т. е. вычислить сумму
при хнач
= 1 и Δх = 0,1.
Составим алгоритм решения задачи, который строится по принципу накопления суммы, т. е. каждое вычисленное значение функции f(xi) добавляется к сумме предыдущих значений:
S = S + f(xi), где f(xi) = xi + sin xi
Введем переменные:
S сумма значений функции
x значение аргумента
dx шаг изменения аргумента
i счетчик цикла
Зададим начальные значения переменных
i=0, S=0 присвоим
x=1, dx=0.1 введем с клавиатуры
Вычисляем 1-е значение функции при х = 1
f(x)=f(1)
--Добавляем вычисленное значение к сумме
S=S+f(1)
--Изменяем значение х
х=х+dx
--Увеличиваем значение счетчика на 1
i=i+1
--Проверяем число вычисленных значений:
i<10? Да
Вычисляем 2-е значение функции: f(x)= f(1,1)
--Добавляем вычисленное значение к сумме: S=S+f(1,1)
--Изменяем значение х: х=х+dx x=1,2
--Увеличиваем значение счетчика на 1: i=i+1 i=2
--i<10? Да
Вычисляем 3-е значение функции: f(x)= f(1,2)
-- и т. д….
10. Вычисляем 10-е значение функции: f(x)= f(1,9)
--Добавляем вычисленное значение к сумме: S=S+f(1,9)
--Изменяем значение х: х=х+dx x=2
--Увеличиваем значение счетчика на 1: i=i+1 i=10
--i<10? Нет, i=10
Вычисление закончено. Выводим на экран значение суммы S.
В пунктах 1 – 10 выполняются одни и те же действия с различными значениями переменных. Их можно оформить в виде цикла.
Блок-схема алгоритма
Напишем программный код процедуры для вычисления суммы.
Private Sub btnOption_Click()
Dim x, dx, S as single, i as byte
x=Val(txtX.Text)
dx=Val(txtdX.Text)
S=0
i=0
For i=1 to 10
S=S+x+sin(x)
X=x+dx
Next i
txtS.Text=Str(S)
End Sub
Оператор Do…Loop
Оператор организует цикл с условием, т. е. цикл с неизвестным заранее числом повторений цикла.
Он имеет 4 формы записи.
а) цикл с предусловием б) цикл с постусловием
D
Do
оператор 1
оператор 2
…
оператор m
Loop
While
Условие
делать пока истина
оператор 1
оператор 2
…
оператор m
Loop
Условие – это логическое выражение, имеющее значение «истина» или «ложь». Такие циклы выполняются пока Условие имеет значение «истина». Когда Условие принимает значение «ложь», происходит выход из цикла и выполняется оператор, следующий за циклом.
Вместо слова While можно использовать служебное слово Until (пока не):
в) цикл с предусловием г) цикл с постусловием
D
Do
оператор 1
оператор 2
…
оператор m
Loop
Until
Условие
делать пока не истина
оператор 1
оператор 2
…
оператор m
Loop
Эти циклы выполняются пока Условие имеет значение «не истина», т. е. «ложно». Выход из цикла происходит, когда Условие будет иметь значение «истина».
В циклах с предусловием условие выхода из цикла проверяется перед выполнением тела цикла, поэтому тело цикла может не выполниться ни разу. В циклах с постусловием тело цикла всегда выполнится хотя бы один раз, так как проверка условия окончания цикла происходит после выполнения тела цикла.
Возможен досрочный выход из цикла, не дожидаясь выполнения условия выхода. Для этого используется оператор Exit Do.
Р
ассмотрим
несколько вариантов алгоритма решения
задачи нахождения суммы 10 значений
функции, используя для организации
цикла различные формы оператора Do…Loop.
а) Do While …Loop
Блок-схема:
Программный код процедуры вычисления суммы.
Private Sub btnOption_Click()
Dim x, dx, S as single, i as byte
x=Val(txtX.Text)
dx=Val(txtdX.Text)
S=0
i=0
Do While i< 10
S=S+x+sin(x)
x=x+dx
i=i+1
Loop
txtS.Text=Str(S)
End Sub
b) Do …Loop While
Блок-схема: Программный код:
Private
Sub btnOption_Click() Dim
x, dx, S as single, i as byte
x=Val(txtX.Text)
dx=Val(txtdX.Text) S=0 i=0 Do S=S+x+sin(x) x=x+dx i=i+1
Loop While
i< 10
txtS.Text=Str(S) End
Sub
в) Do Until…Loop
Блок-схема та же как в случае а), отличается только условием:
Фрагмент программного кода:
…
Do Until i>= 10
S=S+x+sin(x)
x=x+dx
i=i+1
Loop
…
Задача 2
Вычислить произведение 10 значений функции f(x)=x+sinx при значениях аргументах, изменяющихся от начального значения х = хнач с шагом = dx, т. е. вычислить произведение P:
при х = хнач
и шагом dx
Для вычисления произведения используем рекуррентное выражение Р=Р*f(xi), где f(xi) = xi+sinxi
Начальное значение Р возьмем равным 1. Алгоритм аналогичен алгоритму для вычисления суммы.
Фрагмент программного кода:
…
Р=1
i=0
Do
P=P*(x+sin(x))
x=x+dx
i=i+1
Loop Until i >= 10
…
Бесконечные циклы
При неверном программировании цикла могут быть допущены ошибки, которые приводят к бесконечному выполнению цикла (зацикливание). Например, к бесконечному циклу приведут следующие ошибки.
--пропуск оператора, в котором изменяется значение переменной, входящей в условие окончания цикла:
i=0
Do While i<5 ‘в теле цикла пропущена строка i=i+1
y=x+5
x=x+dx
Loop
-- переменная, входящая в условие окончания цикла, никогда не примет значения, при котором происходит выход из цикла:
n=100
Do While n<=100
y=x+sin(x)
x=x+dx
n=n-1
Loop
--размещение оператора для изменения переменной цикла внутри оператора If.
Вложенные циклы
Внутри цикла могут располагаться другие циклы, называемые по отношению к нему вложенными. Количество вложенных циклов ограничивается памятью компьютера. При создании вложенных циклов необходимо соблюдать следующие правила:
- внешний цикл не может закрываться внутри вложенного цикла;
- внешние циклы закрываются после закрытия вложенных циклов;
- нельзя передавать управление из внешнего цикла внутрь вложенного, передача управления из внешнего цикла может быть только на начало вложенного;
внешний и вложенные циклы должны быть организованы по разным переменным (счетчикам).
П
римеры
вложенных циклов:
Задача 3 Табулирование функции.
Вычислить таблицу
значений функции f(x)=sinx
для
,
шаг изменения аргумента – dx.
Вывести таблицу на экран.
Таблицу выведем на форму при щелчке на командной кнопке Start. Для вывода таблицы используем метод Print, который позволяет выводить значения x и y в определенные позиции строк на форме. для этого используют функции Tab(n) и Spc(m).
n - аргумент функции Tab(n) – это номер позиции в строке, начиная с которой выводится следующее за функцией выражение. Например,
Form1.Print Tab(8); “x=”;
Функция Spc(m) позволяет вывести m пробелов перед выводом следующего за ней выражения. Например,
Form1.Print Tab(8); “x”; Spc(7); “y”
Блок-схема:
Программный код:
Private Sub btnStart_Click()
Dim x,y, a, b, dx, S as single
a=Val(txta.Text)
b=Val(txtb.Text)
dx=Val(txtdX.Text)
Form1.Print Tab(8); “x”; Spc(7); “y”
x=a
Do While x <= b
y=sin(x)
Form1.Print Tab(6); x; Tab(12; y
x=x+dx
Loop
End Sub