Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Алгоритмы циклической структуры ⇐ ПредыдущаяСтр 5 из 5
Наиболее сложным типом вычислительного процесса является циклический алгоритм. Циклы возникают тогда, когда необходимо многократно повторять какие-либо действия. Число повторений в любом цикле должно быть конечным. Существуют циклы, в которых число повторений заранее известно (счетные циклы). В итерационных циклах количество повторений заранее неизвестно, выход из них осуществляется по достижению заданных условий. Рассмотрим несколько примеров циклических процессов. Задача 5. Найти конечную сумму S=1+1/2+1/3+….+1/n. Введем следующие обозначения. Переменная i – номер слагаемого данной суммы. Само слагаемое имеет вид 1/i. Необходимо просмотреть все номера, начиная с первого и заканчивая последним номером n, и каждое слагаемое прибавить к S. Предлагается следующая схема алгоритма нахождения S. Рис.5. Схема алгоритма решения задачи 5.
Поясним схему. Блоки 3, 4, 5 служат для организации цикла. С их помощью задается количество повторений цикла. Переменная i называется переменной цикла или счетчиком цикла. В блоке 3 задается начальное значение счетчика цикла, а в блоке 6 – шаг изменения счетчика цикла. В блоке 4 осуществляется проверка на конец циклических вычислений. Обнуление суммы S в блоке 2 необходимо для того, чтобы при первом вхождении в блок 5 действие S+1/i было однозначно определено.
Программа на Паскале: Program Prim_5; {заголовок программы} Var I, N: Integer; {блок описания данных} S: Real; Begin {начало операторов программы} Read(N); {ввод значения N с клавиатуры} S: =0; {обнуление суммы} For I: =1 To N Do {оператор цикла} S: =S+1/I; {циклическое действие} Writeln('S=', S: 6: 2) {вывод результата} End. {конец программы}
Алгоритм на Бэйсике: 10 Input N% 20 S=0 30 For I%=1 To N% 40 S=S+1/I% 50 Next I% 60 Print (" S="; S) 70 End
Можно записать и так: 10 Input N 20 S=0 30 For I=1 To N 40 S=S+1/I 50 Next I 60 Print (" S="; S) 70 End Результаты будут одинаковы при одном и том же значении N. В этой задаче можно не указывать тип переменных, так как счетчик цикла I может принимать только целые значения. Задача 6. Дан массив чисел D=(d1, d2,.., dn). Найти dср по формуле dср= (d1+d2+..+dn)/n. Решение этого примера похоже на решение примера 5. Сначала введем исходные данные d1, d2,.., dn и найдем их сумму S. Разделив S на n, получим dср. и выведем результат и исходные данные. Схема алгоритма решения задачи 6: Рис.6. Схема алгоритма решения задачи 6 Программа на Паскале:
Program Prim_6; {заголовок программы} Const M=100; Var I, N: Integer; {блок описания данных} S, DSR: Real; D: Array[1..M] of Real; Begin {начало операторов программы} Read(N); {ввод значения N ≤ 100 с клавиатуры} For I: =1 To N Do {оператор цикла} Read(D[I]); {Ввод значений Di} S: =0; {обнуление суммы} For I: =1 To N Do {оператор цикла} S: =S+D[I]; {нахождение суммы Di} DSR: =S/N; {нахождение среднего диаметра DSR} Writeln('DSR=', DSR: 6: 2) {вывод результата} End. {конец программы}
Программа на Бейсике: 10 Input N 20 Dim D(N) 30 For I=1 to N 40 Input D(I) 50 Next I 60 S=0 70 For I=1 To N 80 S=S+D(I) 90 Next I 100 DSR=S/N 110 Print (" DSR="; DSR) 120 End Задача 7. Даны массив целых чисел X=(x1, x2,.., xn) и целое число Z. Найти количество чисел xi, которые равны Z. Схема алгоритма решения задачи 7: Рис.7. Схема алгоритма решения задачи 7 Искомое количество элементов массива Х, равных числу Z, обозначим K. До начала просмотра элементов K=0. Просматривая по порядку все элементы массива, будем сравнивать их с числом Z. Как только будет обнаружен очередной элемент, который равен Z, значение переменной K увеличивается на 1. Программы записываются так: Program Prim_7; {заголовок программы} Const M=100; Var I, N, K, Z: Integer; {блок описания данных} X: Array[1..M] of Integer; Begin {начало операторов программы} Read(N); {ввод значения N ≤ 100 с клавиатуры} For I: =1 To N Do {оператор цикла} Read(X[I]); {Ввод значений Xi} Read(Z); {Ввод значения Z} K: =0; {обнуление K} For I: =1 To N Do {оператор цикла} If X[I]=Z Then {проверка условия} K: =K+1; {нахождение количества К} Writeln('K=', K: 6) {вывод результата} End. {конец программы}
10 Input N, Z 20 Dim X(N) 30 For I=1 To N 40 Input X(I) 50 Next I 60 K=0 70 For I=1 To N 80 If X(I)=Z Then K=K+1 90 Next I 100 Print (" K="; K) 110 End
2. Используемая литература и источники: 1. Симонович С.В. и др. Информатика. Базовый курс. - СПб.: Питер, 2003.- 640с. 2. Информатика: Метод.указания к выполнению лаб.раб. для спец. 260400, 260500. Часть I. /Сост. Ледак Л.П. – Йошкар-Ола: МарГТУ, 1997.-48с. 3. Информатика: Метод.указания к выполнению лаб.раб. для спец. 260400, 260500. Часть II. /Сост. Ледак Л.П. – Йошкар-Ола: МарГТУ, 1997.-48с. В авторской редакции Компьютерная верстка Юшкин В.Н.
Подписано в печать Формат 60× 84 1/16. Усл. печ. л. 2, 0. Тираж 50. Заказ ИПК ФГБОУ ВО Волгоградский ГАУ «Нива» 400002, Волгоград, Университетский пр-т, 26.
|
Последнее изменение этой страницы: 2017-05-05; Просмотров: 161; Нарушение авторского права страницы