Автор работы: Пользователь скрыл имя, 02 Ноября 2011 в 21:39, реферат
описание прикладной информатики
32
Предполагается, что вводимые значения обрабатываются по мере их ввода и не сохраняются в массиве. То есть должны будем применять те же алгоритмы, что и при решении задач группы Series
Для поиска минимального значения необходимо определить эталон – переменную, которой заранее присваивается некоторое значение, например, значение первого из элементов последовательности. Далее, каждый новый элемент последовательности сравнивается с эталоном, и если он оказывается меньше эталона, то эталон изменяется и становится равным этому элементу. Поиск продолжается, пока не будут просмотрены все элементы последовательности.
Схему описанного алгоритма можно представить в виде следующих инструкций:
1. Объявить переменные
2. Ввести N
3. Ввести первый элемент в переменную x
4. Определить эталон min=x
5. Для i от 2 до N
5.1.
Ввод следующего числа в
5.2. Если x<min, то min=x
Конец-для
6. Вывести значение min
А если требуется определить также и номер минимального элемента, то кроме переменной-эталона min (которая по-прежнему используется для сравнения) необходимо завести еще переменную для сохранения номера того элемента, который замещает эталон (назовем эту переменную nommin).
Схема примет вид:
1. Объявить переменные
2. Ввести N
3. Ввести первый элемент в переменную x
4. Определить эталон min=x, nommin=1
5. Для i от 2 до N
5.1.
Ввод следующего числа в
5.2. Если x<min, то min=x и nommin=i
Конец-для
6. Вывести значения min и nommin
Если среди чисел могут быть совпадающие значения, то может быть поставлена задача нахождения номера первого или последнего из минимальных значений.
При поиске номера первого по порядку минимального элемента выполняется сравнение как в приведенном выше алгоритме, то есть x < min.
Если ищется номер последнего по порядку минимального элемента, то выполняется сравнение вида x <= min .
33
В некоторых задачах требуется найти минимум или максимум среди чисел, удовлетворяющих определенному условию. В этом случае переменные min/max (предназначенные для хранения эталона) нельзя инициализировать значением первого элемента исходного набора, так как этот элемент может не удовлетворять дополнительным условиям.
Проще всего инициализировать переменную min значением, которое заведомо больше всех элементов исходного набора, а переменную max – значением, которое заведомо меньше этих элементов.
В этой задаче нужно использовать переменную-счетчик для хранения количества найденных минимумов. Этот счетчик необходимо корректировать в двух ситуациях: при изменении значения переменной min (содержащей значение наименьшего элемента из уже просмотренных) и при появлении элемента, значение которого совпадает с текущим значением min.
31
Для
возможности генерации
Для примера создайте приложение, содержащее только модуль с процедурой Main, следующего содержания:
Module Module1
Sub Main()
Dim r As New Random, d As Integer
Dim a, b As Integer
a = -20 : b = 20
For i As Integer = 1 To 10
d = r.Next(a, b)
Debug.Print(d)
Next
End Sub
End Module
30
Sub GetD(ByVal prompt As String, ByRef x As Double)
x = CDbl(InputBox(prompt))
Debug.Print(prompt & x)
End Sub
Sub GetN(ByVal prompt As String, ByRef x As Integer)
x = CInt(InputBox(prompt))
Debug.Print(prompt & x)
End Sub
Sub Put(ByVal prompt As String, ByRef x As Double)
Debug.Print(prompt & x)
End Sub
В окне InputBox всегда имеются только две кнопки управления: ОК и Cancel. Кнопка ОК подтверждает ввод данных, кнопка Cancel — закрывает диалоговое окно без ввода данных.
Функция
InputBox возвращает строку, введенную пользователем.
При нажатии кнопки Cancel возвращается
пустая строка. Так как функция возвращает
строку символов, то при вводе числовых
данных нужно позаботится о преобразовании
их из строкового представления в числовое.
Для этого используются специальные стандартные
функции преобразования: CByte(), Cint(), CLng()
— для преобразования к целочисленным
типам Byte, Integer, Long соответственно; CSng(),
CDbl() — для преобразования к типам Single
и Double для вещественных чисел; можно использовать
функцию Val(), которая любые нечисловые
символы воспринимает как ноль, а строку
преобразует в соответствии с типом переменной,
которой присваивается значение.
29
Тело цикла – последовательность действий (операторов), выполняемых при каждом повторении цикла.
Цикл называется простым, если в теле цикла не содержится циклических действий. Если среди операторов тела цикла содержатся циклические операторы, то такой цикл называется сложным, или вложенным.
Цикл, содержащий в себе другой цикл, называется внешним, а содержащийся в нем – внутренним. При одном повторении внешнего цикла тело внутреннего цикла повторяется столько раз, какова кратность внутреннего цикла. Поэтому необходимо все действия, независящие от параметров внутреннего цикла выносить во внешний цикл.
Внутренний цикл должен полностью содержаться во внешнем.
Изобразим схематически правильную структуру вложенных циклов.
For i=1 to n
...
For j= 1 to m
...
Next j
...
Next
i
Не могут быть так скомбинированы
операторы циклов и/или условные операторы,
чтобы они пересекались друг с другом.
Например, следующим образом:
Метод детализации
Сначала запишем словесно действия, которые необходимо выполнить во внешнем цикле, опуская детали. Затем детализируем действия, заменяя их операторами языка.
Рассмотрим ту же самую задачу.
Ввод N
Ввод K
S = 0
Для i от 1 до N
Вычислить P = iK
S = S + P
Конец-для
Вывод S
Остается переписать программу, заменяя словесные инструкции операторами языка.
28
Тело цикла – последовательность действий (операторов), выполняемых при каждом повторении цикла.
Цикл называется простым, если в теле цикла не содержится циклических действий. Если среди операторов тела цикла содержатся циклические операторы, то такой цикл называется сложным, или вложенным.
Цикл, содержащий в себе другой цикл, называется внешним, а содержащийся в нем – внутренним. При одном повторении внешнего цикла тело внутреннего цикла повторяется столько раз, какова кратность внутреннего цикла. Поэтому необходимо все действия, независящие от параметров внутреннего цикла выносить во внешний цикл.
Внутренний цикл должен полностью содержаться во внешнем.
Изобразим схематически правильную структуру вложенных циклов.
For i=1 to n
...
For j= 1 to m
...
Next j
...
Next
i
Не могут быть так скомбинированы
операторы циклов и/или условные
операторы, чтобы они пересекались
друг с другом. Например, следующим
образом:
Метод окаймления
В этом методе вначале реализуется внутренний цикл, а затем он окаймляется внешним.
Идея метода состоит в том, что рассматривается тело внешнего цикла для некоторого параметра внешнего цикла, имеющего фиксированное значение. И составляется внутренний цикл, реализующий действия, которые необходимо выполнить для этого фиксированного значения параметра внешнего цикла. После этого реализованный фрагмент заключается во внешний цикл.
Этот метод реализует разработку алгоритма «снизу – вверх».
Задача 1 (For36. Даны целые положительные числа N и K. Найти сумму
S = 1K + 2K + … + NK.
Чтобы избежать целочисленного переполнения, вычислять слагаемые этой суммы с помощью вещественной переменной и выводить результат как вещественное число.