Программирование циклических вычислительных процессов. Методичка табулирование и программирование функций Программирование циклических вычислительных процессов vba
В программировании часто встречаются задачи, требующие многократного выполнения одной и той же группы операторов программы с разными значениями их операндов. Такие процессы называются циклическими или просто циклами. Группа циклически повторяющихся операторов образует так называемое тело цикла , которое может быть представлено как простым, так и составным выражением. Однократное выполнение тела цикла будем называть итерацией .
Телу цикла в программе всегда предшествует заголовок цикла , содержащий обозначение оператора цикла и выражение, определяющее (прямо или косвенно) количество итераций. Заметим, что тело цикла является операндом оператора цикла, следовательно, заголовок и тело цикла составляют неделимую структурную единицу программы. В дальнейшем, используя термин "оператор цикла ", будем иметь в виду и заголовок, и тело цикла.
Для организации циклов во всех системах программирования существуют специализированные операторы циклов , применение которых избавляет программиста от необходимости программировать циклы "вручную". MathCAD поддерживает два вида таких операторов – цикл с предопределением For (называемый также циклом со счетчиком ) и цикл с предусловием While . Описание структуры этих операторов приведено в таблице 5.
5.4.1 Оператор For
Этот оператор следует использовать в тех случаях, когда количество итераций предопределено, то есть известно заранее.
Заголовок цикла этого оператора (правый операнд) содержит переменную, называемую параметром (или счетчиком) цикла , и список значений этого параметра. Число элементов списка определяет и количество итераций – при выполнении каждой итерации параметр цикла получает очередное значение из списка, заданного в заголовке.
Параметр цикла имеет статус внутренней переменной программы и обладает всеми ее свойствами (описанными в параграфе 5.1.4). Как правило, параметр цикла используется в правой части выражений, входящих в состав тела цикла, хотя формально и не запрещено использование его в левой части выражений (то есть слева от оператора локального определения "f"). При этом следует помнить, что если параметр был изменен в теле цикла, его измененное значение будет действовать лишь до конца текущей итерации, так как перед началом следующей итерации параметр все равно получит очередное значение из списка, указанного в заголовке цикла.
Формально допускается вообще не использовать параметр цикла в выражениях тела цикла – в этом случае список значений параметра не играет никакой роли - существенна лишь длина этого списка, определяющая число (возможно бессмысленных) итераций.
По завершению последней итерации будет выполняться оператор программы, следующий после оператора цикла. При этом переменная, использованная в качестве параметра завершенного цикла, сохраняет значение, которое она имела в последней реально выполненной итерации[*]. Заметим, что это значение не всегда совпадает с последним значением из списка, заданного в заголовке цикла, так как возможен "досрочный" выход из цикла при срабатывании оператора Break , включенного в тело цикла.
Список значений параметра цикла записывается в заголовке цикла после символа "Î ", обозначающего принадлежность множеству (этот символ не требуется вводить "вручную" – он будет автоматически отображен при вводе оператора For ). MathCAD допускает использование трех форм записи этого списка: прямое перечисление – элементы списка явно указываются через запятую, параметр получает значения из списка в порядке их следования; в стиле ранжированной переменной – элементы списка образуют соответствующий арифметический ряд; массив – элементы списка последовательно получают значения элементов массива в порядке следования их индексов (сначала – столбцы слева направо, затем – строки сверху вниз).
Три программы, приведенные на рисунке 21, иллюстрируют различные варианты использования оператора For .
Программа Fact(n) вычисляет факториал числа n . Оператор цикла в этой программе входит в состав составного выражения, которое, в свою очередь, является операндом условного оператора Otherwise . Параметр цикла k получает значения из целочисленного арифметического ряда.
Программа Ch(V,N,p) обрабатывает входной вектор V , заменяя в нем на значение p те элементы, индексы которых заданы элементами второго входного вектора N . В этом примере список значений параметра цикла i задан множеством элементов вектора N . Заметим, что обе эти программы осуществляют входной контроль данных и блокируют выполнение основного алгоритма в случае, если фактические аргументы программы заданы некорректно.
Программа L(M,z) , приведенная в примере в ), сопровождается подробными комментариями и не требует пояснений. Эта программа иллюстрирует возможность использования нескольких операторов цикла, один из которых включен в число операторов тела другого. Использование вложенных циклов - типичный прием, используемый для обработки многомерных массивов.
Рисунок 21 – Примеры программирования циклов For
Рисунок 22 иллюстрирует использование операторов Break и Continue в теле цикла. Как правило, эти операторы сами являются операндами условных операторов If или Otherwise .
Оператор Break ("прервать") прерывает выполнение цикла и передает управление оператору, следующему после прерванного оператора цикла. Заметим, что если оператором Break прерван вложенный цикл , выполнение внешнего цикла будет продолжено.
Оператор Continue ("продолжить") действует иначе – он прерывает только текущую итерацию цикла и передает управление заголовку этого цикла, после чего выполнение цикла продолжается со следующей итерации (если, конечно, прерванная итерация не была последней).
Оператор Break допускается использовать и вне тела цикла. В этом случае прерывается выполнение всей подпрограммы, и возвращается результат вычисления последнего фактически выполненного ее выражения.
Рисунок 22 – Примеры использования операторов Break и Continue
Функция SumN(V) суммирует только те элементы вектора, которые содержат скалярные данные числового типа, а остальные элементы пропускаются. Функция Inverse(V) формирует вектор, элементы которого – значения, обратные значениям соответствующих элементов исходного вектора. При этом, если очередной элемент содержит число "0" или не является скаляром числового типа, цикл прерывается . Заметим, что оператор Break в последнем примере не прерывает работы программы, а передает управление оператору Return , следующему непосредственно после оператора For .
5.4.3 Оператор While
В отличие от оператора For , заголовок оператора While (в переводе - "пока ") не содержит явных указаний на количество итераций – он содержит логическое выражение , значение которого автоматически вычисляется перед началом выполнения каждой очередной итерации[†]. Пока это выражение "истинно", итерации цикла будут продолжаться; как только после завершения очередной итерации выражение станет "ложным", следующая итерация цикла выполнена не будет, и управление получит оператор программы, следующий после оператора While .
Очевидно, что если в заголовок цикла поместить тождественно ложное логическое выражение, этот цикл не выполнит ни одной своей итерации, а если это выражение тождественно истинно, цикл будет бесконечным (последнюю ситуацию называют зацикливанием программы). Для того, чтобы избежать подобных ситуаций, в число операндов логического выражения должны быть включены одна или более переменных, изменяющих свои значения в теле цикла таким образом, чтобы цикл был конечным (для предотвращения зацикливания могут использоваться и другие средства – например, принудительный выход из цикла оператором Break ).
Примеры использования оператора While приведены на рисунке 23. Приведены три варианта решения одной и той же задачи: каждая из программ F0 , F1 и F2 возвращает индекс первого из элементов исходного вектора V , превосходящего заданное значение z .
Первая программа (пример а ) прибавляет единицу к счетчику k в теле цикла While до тех пор, пока очередной k -й элемент исходного вектора не превысит заданного значения z . После этого цикл завершается, и программа возвращает последнее измененное значение переменной k , которое и является решением задачи. Отметим, что в отличие от цикла For , счетчик k здесь необходимо обрабатывать отдельными операторами: инициализировать (то есть присваивать ему начальное значение) перед оператором цикла и изменять его значение в теле цикла.
Нетрудно заметить, что вариант а ) программы имеет существенный недостаток: он не предотвращает зацикливания программы в случае, когда задача не имеет решения, то есть когда параметр z превышает значение самого большого элемента вектора V . В этом примере зацикливания в такой ситуации реально не произойдет – но это заслуга не нашей программы, а системы MathCAD, которая проконтролирует выход индекса вектора V за пределы допустимых значений и выдаст сообщение об ошибке.
Свободным от этого недостатка является вариант б ) программы, в котором тело цикла содержит дополнительную проверку допустимости очередного значения индекса и принудительно прерывает цикл оператором Break в соответствующей ситуации с выдачей текстового сообщения.
Возможно, наиболее эффективным вариантом решения этой задачи является вариант в ), который вообще не использует оператор While . В этой программе переменная k использована только для соблюдения "чистоты стиля" – чтобы исключить обработку параметра цикла i вне оператора For .
Рисунок 23 – Примеры программирования циклов While
Задание №2
Программирование ветвящихся вычислительных процессов
Цель работы
Получить навыки программирования ветвящихся вычислительных процессов. Изучить условные операторы, переменные логического типа, логические отношения и операции.
Пусть на плоскости x, y задана область D. Требуется определить «попадает» ли точка с координатами (x, y) в область D или нет. Если попадает, то необходимо вычислить функцию и переменной M, значение которой является признаком «попадания» или «непопадания», присвоить значение M=1. В противном случае вычислить и положить M=2.
Ход работы
Алгоритм решения поставленной задачи:
1. Выписать область D и выписать функции и
2. Записать уравнения, определяющие границы области
3. Подготовить 7 точек, чтобы часть точек находилась внутри D, а часть- вне ее.
4. Написать программу для выполнения поставленной задачи.
5. Для выбранных точек получить и записать результаты счета.
f 1= tg(x)/e y f 2 =
(x>0 и y>0 и X**2+Y**2<=9) или (x<0 и y>0 и y<=x+4) или (x<0 и y<0 и x>(-4) и y>(-2))
то точка принадлежит области D
1)(1;1)
2)(3;3)
3)(-1;2)
4)(-5;2)
5)(-2;-1)
6)(-5;-3)
Fortran | MathCAD | ||||||
x | y | z | m | c | z | m | c |
0.1573E+01 | T | 1.573 | |||||
0.0751E+01 | F | 0.751 | |||||
-1 | -0.1211E+01 | T | -1.211 | ||||
-5 | 0.083E+01 | F | 0.83 | ||||
-2 | -1 | 0. 394E+01 | T | 3.94 | |||
-5 | -3 | 0.0282E+01 | F | 0.282 | |||
-3 | 0. 0271E+01 | F | 0.271 |
PRINT *,"X=?,Y=?";READ *,X,Y
C=(x>0..and. y>0..and.X**2+Y**2<=9).or.(x<0..and.y>0..and.y<=x+4).or.(x<0..and.y<0..and.x>(-4).and.y>(-2))
PRINT 2,X,Y,Z,C,M
2 FORMAT ("X=",F7.3,3X,"Y=",F7.3,3X,"Z=",E11.4,3X,"C=",L2,3X,"M=",I2/)
END PROGRAM LAB2
FUNCTION F1(X,Y)
F1=tan(x)/exp(x)**y
FUNCTION F2(X,Y)
F2= (sqrt(sin(2*x+3*y)**2)**1./3.)
print*,"a,b,c=?";read "(2F7.3)",a,b,c
q=a>b.and.a a w=b>a.and.b b e=c>a.and.c c 28.,558.,345. 345.0000 Задание №3
Программирование циклических вычислительных процессов
Цель работы Получить навыки программирования циклических вычислительных процессов. Изучить циклы с шагом и циклы с условием. 1. Записать расчетные формулы для вычисления слагаемого и конечной суммы 2. Составить алгоритм вычисления с заданной точностью суммы конечного числа членов ряда в указанном диапазоне изменения параметра x с заданным шагом. Для получения шага диапазон изменения x разделить на 10. 3. Составить программу решения задачи. В программе для каждого значения x предусмотреть вычисление как приближенной, так и точной суммы соответствующего ряда y по приведенной в таблице формуле. точное значения суммы ряда, а также количество просуммированных членов. Ход работы 1. Задать x0-начало цикла и xл-конец цикла 2. Задаем шаг h по формуле 4. Составить программу решения задач рекуррентным способом 5. Построить таблицу полученных данных Формула ряда: Формула точного вычисления суммы: π/4 1. x0= π/10 xk=9 π/10 3. real:: a,b,c,eps,h,s,x,x0,xk,y,p b=(sin*(x)*(2*n)-1+sin*((2*n-1)*x))/4*n-2 if(abs(a) print 2,x,s,y,n; write(1,2)x,s,y,n end do 2 format("x=",f6.3,3x,"s=",e10.3,3x,"y=",e10.3,3x,"n=",i5) end program lab3 Цель работы:
Изучить циклические операторы for, while, do – while, научиться составлять и программировать циклические алгоритмы. Краткие теоретические сведения
Операторы циклов применяют, когда надо повторить некоторые действия (операторы и операции) несколько раз, и такие участки алгоритмов называют циклами. Оператор цикла for
Основная форма оператора цикла for имеет вид for (выражение_1; выражение_2; выражение_3)
оператор;
где выражение_1
– начальное значения параметра цикла; выражение_2
– проверка условия на продолжение цикла; выражение_3
– изменение параметра цикла (коррекция); оператор
– простой или составной оператор языка С. Схема работы оператора следующая: только один раз вначале вычисляется выражение_1, затем проверяется выражение_2, и если оно - «истина», то выполняется циклический участок программы, затем производится коррекция параметра, и так до тех пор, пока выражение_2 не примет значение «ложь». Например:
for (k=1; k<5; k++) printf(“\n %d”, k); В результате выполнения этого оператора печатаются в столбик цифры от 1 до 4. В качестве параметра цикла можно использовать переменную любого базового типа. Например:
for(ch=’a’; ch<=’z’; ch++) // Вывод на экран букв printf(“ %c”,ch); // латинского алфавита Необходимо тщательно контролировать структуру циклов for в программе, чтобы не получился бесконечный цикл (из которого нет выхода). Например
: for(k=10; k>6;k++) printf(“бесконечный цикл \n”); Выйти из цикла
досрочно можно следующими способами: По дополнительному условию; Используя следующие операторы: break;
- выход из цикла, в котором находится break, управление передается на первый после цикла выполняемый оператор; exit(int Kod);
- выход из программы; return;
- выход из функции; С помощью оператора безусловного перехода goto <метка>;
Досрочное завершение текущего циклического шага
возможно при помощи дополнительного условия или оператора continue
, который прерывает выполнение текущего шага цикла, т.е. пропускает операторы оставшейся части цикла и передает управление в головной оператор цикла для коррекции параметра и проверки условия. Передавать управление извне внутрь цикла запрещается. Любое из выражений цикла for в круглых скобках может отсутствовать, но символ «;» опускать нельзя. Например
: for(; i<3; i++) puts(“Hello!”); Циклические операторы while и do–while
Основная форма циклического оператора while
: While (условие)
оператор;
где оператор
Цикл выполняется до тех пор, пока условие принимает значение «истина», т.е. выражение в скобках возвращает ненулевой результат. Это цикл с предусловием – сначала проверяется условие, затем выполняется оператор. Поэтому цикл while не выполнится ни разу, если изначально результат вычисления условия будет равен 0. Основная форма оператора do – while
: оператор;
while (условие);
где оператор
– это простой, составной или пустой оператор. Оператор do
–while
– оператор цикла с постусловием, т.е. сначала выполняется оператор, а затем проверяется условие на истинность. Так как в цикле do–while условие проверяется в конце цикла, то цикл будет выполнен хотя бы один раз. В циклах типа while и do–while допустимы те же способы досрочного выхода из цикла и досрочное завершение текущего шага цикла, как и в операторе for, но в последнем случае в отличие от цикла for управление передается на проверку условия. Для предотвращения бесконечного цикла внутри циклов while и do–while нужно предусмотреть изменение переменных, входящих в условие. Например:
for (i=1;i<=300;i++) // Печать целых чисел, кратных 5 if (i%5!=0) continue; printf(“%5d”,i); Примеры бесконечных циклов: оператор; 2) while(число_не_0) // Всегда истинно! оператор; оператор; while(число_не_0); // Всегда истинно! Среди операторов цикла обязательно должно быть условие выхода. Вложенные циклы
В случае вложенных циклов один цикл находится внутри другого, например: for(i=nn;i for(j=mn;j оператор; где оператор
– это простой, составной или пустой оператор. Внутренний цикл будет выполняться для каждого значения параметра i, удовлетворяющего условию внешнего цикла. Пример:
for(i=1;i<10;i++) // Печать таблицы умножения for(j=1;j<4;j++) printf(“\n %d*%d=%2d”, i, j, i*j); printf(“\n”); Пример использования оператора for
Вычислить . На печать программа должна выводить промежуточные и окончательный результаты. Текст программы может иметь вид #include #include puts(“ Введите N”); scanf(“%d”,&N); for (s=0, k=1; k<=N; k++) // В заголовке цикла можно выпол- { // нять и двойное присваивание printf(" \n k=%d s=%f ", k, s); printf("\n ОТВЕТ: s=%f, Press any key...",s); Варианты индивидуальных заданий
Составить программу для определения таблицы значений функции у
в произвольном диапазоне [a
,b
] изменения аргумента х
с произвольным шагом h
. Значения a, b, h
вводятся с клавиатуры. Таблица должна содержать следующие столбцы: порядковый номер, значение аргумента x
, значение функции, сообщение о возрастании или убывании функции, разность двух соседних значений функции. Определить максимальное и минимальное значения функции. 1. a=-p; b=p; h=0,4. 2. a=0,7; b=1,8; h=0,1. 3. a=-0,5; b=2,5; h=0,2. 4. a=-0,9; b=2,7; h=0,3. 5. a=-2; b=0,8; h=0,2. 6. a=-1,9; b=2,7; h=0,3. 7. a=-0,4p; b=0,4p; h=0,5. 8. a=-0,3p; b=1,3p; h= p/10. 9. a=-p/2; b= p/2; h=p/10. 10. a=-3; b=3; h=0,5. Нажав на кнопку "Скачать архив", вы скачаете нужный вам файл совершенно бесплатно. Чтобы скачать архив с документом, в поле, расположенное ниже, впишите пятизначное число и нажмите кнопку "Скачать архив" Составление отчетной ведомости "Магазины" в Excel 2013. Работа с таблицами семейства Microsoft Office. Построение круговой диаграммы и гистограммы, графиков. Разработка процедур для табулирования функций. Программирование функций пользователя на VBA. курсовая работа , добавлен 03.04.2014 Пакет Microsoft Office. Электронная таблица MS Excel. Создание экранной формы и ввод данных. Формулы и функции. Пояснение пользовательских функций MS Excel. Физическая постановка задач. Задание граничных условий для допустимых значений переменных. курсовая работа , добавлен 07.06.2015 Особенности использования встроенных функций Microsoft Excel. Создание таблиц, их заполнение данными, построение графиков. Применение математических формул для выполнения запросов с помощью пакетов прикладных программ. Технические требования к компьютеру. курсовая работа , добавлен 25.04.2013 Организация файлов и доступ к ним. Файловые операции. Программирование с использованием встроенных функций ввода-вывода; линейных, разветвляющихся и циклических вычислительных процессов с использованием If-else, оператора выбора Case; массивов и матриц. курсовая работа , добавлен 24.05.2014 Процессор электронных таблиц Microsoft Excel - прикладная программа, предназначенная для автоматизации процесса обработки экономической информации, представленной в виде таблиц; применение формул и функций для производства расчетов; построение графиков. реферат , добавлен 03.02.2013 Программирование вычислительных процессов на языке FORTRAN для обеспечения взаимодействия системы "Человек-Производство-Природа". Использование массивов для составления циклов подсчета уровня экологического загрязнения, затрат на переработку отходов. курсовая работа , добавлен 30.05.2014 Создание приложения, которое будет производить построение графиков функций по заданному математическому выражению. Разработка программы "Генератор математических функций". Создание мастера функций для ввода математического выражения, тестирование. дипломная работа , добавлен 16.02.2016 Начинающему программисту будет просто разобраться в них, на обобщенном примере. Причем важно понимать, что во всех языках программирования существуют способы реализации циклов. С понятием цикл мы встречаемся не только в программировании. Во многих областях нашей жизни существуют циклы. К примеру – круговорот воды в природе, это естественный цикл в нашей жизни. А теперь рассмотрим общие правила и понятия используемые в вычислительных циклах. x
S(x)
y
0.314
0.324
0.785
0.565
0.622
0.785
0.817
0.979
0.785
1.068
1.404
0.785
1.319
1.43
0.785
1.57
-19.257
0.785
1.821
-533.961
0.785
2.072
-8.624E+3
0.785
2.324
-9.986E+4
0.785
2.575
-8.928E+5
0.785
2.826
-6.477E+6
0.785
Перед скачиванием данного файла вспомните о тех хороших рефератах, контрольных, курсовых, дипломных работах, статьях и других документах, которые лежат невостребованными в вашем компьютере. Это ваш труд, он должен участвовать в развитии общества и приносить пользу людям. Найдите эти работы и отправьте в базу знаний.
Мы и все студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будем вам очень благодарны.Подобные документы
В программировании мы часто сталкиваемся с задачами, в которых встречается процессы, которые повторяются.
Поэтому мы должны знать и уметь пользоваться таким понятием как «циклические вычислительные процессы
».Что же такое цикл в программировании?
Цикл – в программировании называется многократное повторение одних и тех же действий или вычислений, но по одним и тес же зависимостям с различными значениями переменных.Этапы циклического процесса
В общем случае цикл должен быть реализован за 4 этапа:
В pascal существует 3 оператора цикла, которые могут реализовать любую алгоритмически – циклическую структуру
:
Задание начального значения параметру и переменной цикла.
Параметр цикла
– эта величина, которая считает число шагов цикла (число повторений цикла).
Переменная цикла
– это величина, которая изменяет свое значение на каждом этапе цикла.
Инициализация
– это задание начальных значений параметру и переменной цикла.
Это многократное повторение действие в цикле или вычислений по одним и тем же математическим зависимостям с разными значениями переменных.
Это проверка условия на продолжение или начало цикла.
Подробно их мы рассмотрим в следующих статья.