1. Составить программу вычисления значений функции на заданном отрезке (табл. 1) с использованием оператора цикла For. Next.
№ вари-анта | Функция | Пере-менная a | Диапазон изменения аргумента | Шаг |
1 | 2,5 | 5° | ||
2 | 2,0 | 10° | ||
3 | 5,45 | 14° | ||
4 | 0,12 | 9° | ||
5 | 8,45 | 10° | ||
6 | 4,8 | 15° | ||
7 | 1,57 | 10° | ||
8 | 1,5 | 5° | ||
9 | 0,25 | 25° | ||
10 | 8° | |||
11 | 0,5p | 6° | ||
12 | 0,4p | 3° | ||
13 | 0,123 | 5° | ||
14 | 1,25 | 4° | ||
15 | 1,25 | 6° |
Все вычисления проводить в радианах. По полученной таблице значений x, y построить график y = f (x) функции в тетради.
Word табуляция
2. Составить таблицу аргументов и значений составной функции
в интервале изменения аргумента х от -2 до 2 с шагом 0,1
3. Функция задана как дискретная последовательность членов ряда:
Вычислить первые десять членов этой последовательности.
Вычисление суммы и произведения
1. Составить программу вычисления суммы
б) нечетных чисел;
2. Составить программу вычисления суммы геометрической прогрессии :
Результат проверить по формуле геометрической прогрессии .
3. Составить программу вычисления суммы квадратов всех натуральных двузначных чисел, кратных трем.
4. Составить программу вычисления степени с натуральным показателем по формуле . Значения a и n выбрать произвольно. Результат проверить с помощью оператора Бейсика для вычисления степени Y=A ^ N.
5. Составить программу вычисления приближенного значения функции y = sin x, используя равенство
при х =0,5. Для контроля вывести на печать значение sin x.
Итерационные циклы
1. Вычислить сумму членов для следующего ряда с точностью до члена ряда, меньшего e (табл. 2).
№ вари-анта | Ряд | Точность e |
1 | ||
2 | ||
3 | ||
4 | ||
5 | ||
6 | ||
7 |
При решении задачи воспользоваться циклом Do Until. Loop для четных вариантов и Do. Loop While для нечетных вариантов.
2. Вычислить наибольшее положительное число n, удовлетворяющее условию
3. Составить программу вычисления таблицы значений функции
на отрезке с шагом для b =-1,5 и a, изменяющейся от 0,7 до 1,2 с шагом 0,1.
4. Вычислить сумму Результат проверить с помощью оператора при том же значении аргумента х.
Примечание. При решении данной задачи необходимо применить вложенный цикл: внешний цикл – для нахождения суммы, внутренний – для вычисления факториала.
Табулирование функции и построение графика в Excel
5. Последовательность степенного ряда задана формулой ее n -го числа , где q = 0,4. Составить программу вычисления суммы членов указанного убывающего степенного ряда и определить номер n, начиная с которого можно считать, что n -ый член ряда , с точностью до .
6. Написать программу вычисления суммы членов бесконечного числового ряда
с погрешностью e= . Определить количество членов ряда.
7. Написать программу вычисления суммы членов бесконечного функционального ряда
для х =0,5 с погрешностью e= .
Контрольные вопросы
1 Что такое цикл? Какие существуют способы организации цикла в программе?
2. В чем состоят преимущества использования операторов цикла в программе?
3. Указать последовательность действий, выполняемых при организации циклических участков с заданным числом повторений.
4. Чем отличаются циклы с предусловием и с постусловием?
5. Циклы ДО и ПОКА, различие между ними.
6. Какие данные необходимы для организации цикла? Что такое управляющая переменная цикла (параметр цикла)?
7. Перечислить возможные способы организации цикла с заданным числом повторений в языке VBA.
8. Перечислить возможные способы организации цикла с заранее неизвестным числом повторений в языке VBA.
9. Приведите словесный алгоритм табулирования функции.
10. Перечислить действия при решении задач на накопление суммы.
11. Перечислить действия при решении задач на нахождение произведения.
12. Каким принимается начальное значение суммы при вычислении суммы ряда и почему?
13. Перечислить действия, реализуемые для организации цикла с несколькими одновременно изменяющимися параметрами.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Лабораторная работа «Табулирование функции одной переменной» Составить программу табулирования функции одной переменной с постоянно изменяющимся аргументом
Библиотека Ирины Эланс, основана как общедоступная библиотека в интернете. Онлайн-библиотеке академических ресурсов от Ирины Эланс доверяют студенты со всей России.
Библиотека Ирины Эланс
Полное или частичное копирование материалов разрешается только с указанием активной ссылки на сайт:
Ирина Эланс открыла библиотеку в 2007 году.
Источник: student-files.ru
Составить программу табуляции функции
write (‘ Нажмите Enter. ‘);
reset (input); readln;
writeln (‘ Таблица выведена ‘);
reset ( input ); readln ;
Как видно из примера, основной порядок действий — такой же, как в предыдущей задаче. Так как экран консоли по умолчанию содержит всего 25 строк, с помощью переменной n мы дополнительно контролируем число уже выведенных строк и делаем по заполнении экрана паузу до нажатия пользователем клавиши Enter .
Разумеется, другие изученные нами виды циклов также могут применяться при табулировании. Рассмотрим в качестве примера следующую задачу.
Известна стоимость единицы товара. Составить таблицу стоимости 1, 2, . K единиц товара, значение K вводится.
Так как число единиц товара — заведомо целое, при программировании задачи будет удобен цикл for :
writeln (‘Стоимость единицы товара:’);
writeln (‘Количество единиц товара:’);
Здесь для простоты мы исключили сделанные в предыдущем примере проверки. Стоимость единицы товара обозначена t , переменная i необходима для перебора возможных значений единиц товара в цикле for . Поскольку счетчик цикла for автоматически меняется с шагом 1, а оператором writeln можно выводить не только значения переменных, но и выражения, основной цикл программы состоит из одного оператора и не нуждается в операторных скобках.
11.2. Алгоритм организации счетчика
Этот алгоритм применяется, когда требуется подсчитать количество элементов данных, отвечающих какому-либо условию или условиям. В общем виде алгоритм описывается следующим образом:
1. в разделе var описать переменную целочисленного типа, с помощью которой будет вестись подсчет;
2. до цикла присвоить ей начальное значение 0 ;
3. в теле цикла, если очередной элемент данных отвечает условию подсчета, увеличить эту переменную на 1 оператором вида k:=k+1; .
Необходимость присваивания начальных значений на шаге 2 этого и последующих алгоритмов связана с тем, что после описания в разделе var значение переменной еще не определено. «Пока мы не начали подсчитывать количество, оно равно нулю» — этот очевидный для человека факт не очевиден для компьютера! Поэтому любой переменной, которая может изменяться в теле цикла, необходимо присвоить до цикла начальное значение, что и делает оператор вида k:=0; .
Рассматриваемый нами алгоритм очень часто встречается в самых различных задачах, поэтому для «быстрой» записи операции по увеличению счетчика (она называется инкремент) или его уменьшению (декремент) существуют специальные стандартные процедуры:
Inc ( X , N ); — увеличивает значение переменной.
Здесь параметр X — переменная порядкового типа, а N — переменная или выражение целочисленного типа. Значение X увеличивается на 1 , если параметр N не определен, или на N , если параметр N определен, то есть Inc ( X ); соответствует X := X +1; , а Inc ( X , N ); соответствует X := X + N ; .
Dec ( X , N ); — уменьшает значение переменной.
Параметр X — также переменная порядкового типа, N — целочисленное значение или выражение. Значение X уменьшается на 1 , если параметр N не определен, или на N , если параметр N определен, то есть Dec ( X ); соответствует X := X -1; , а Dec ( X , N ); соответствует X := X — N ; .
С помощью Inc и Dec генерируется более оптимизированный код, особенно полезный в сложных циклах. Возможно, мы будем использовать их не во всех примерах, но вам советую о них не забывать.
В качестве примера реализации алгоритма рассмотрим следующую задачу.
Последовательность z ( i ) задана соотношениями , i =1,2. 100. Найти количество элементов последовательности, больших значения 0.5.
Обозначив искомое количество за k , составим программу:
for i:=1 to 100 do begin
if i mod 2 = 0 then z:=sqr(i)*cos(i)
if z>0.5 then inc(k);
writeln (‘Количество=’, k );
Так как шаг по переменной i равен 1 , в программе использован цикл for , для проверки того, является ли значение i четным, использована операция mod .
В следующей задаче займемся обработкой данных по мере их ввода пользователем.
Известны оценки за экзамен по информатике для группы из n студентов, 2≤ n ≤25. Оценить количественную и качественную успеваемость группы по формулам:
, , где k 1 — количество «троек», «четверок» и «пятерок», k 2 — количество только «четверок» и «пятерок».
Для ввода текущей оценки используем целочисленную переменную a , в качестве счетчика цикла for введем переменную i («номер студента»), остальные величины описаны в условии задачи. При вводе значения n и очередного значения a для простоты не будем контролировать корректность вводимых данных.
writeln (‘Введите количество студентов:’);
for i:=1 to n do begin
write (‘Введите оценку ‘,i,’ студента:’);
if a>2 then begin
if a>3 then inc(k2);
(‘Качественная успеваемость =’,ykach:6:2);
reset ( input ); readln ;
11.3. Алгоритмы накопления суммы и произведения
Данные алгоритмы применяются, когда требуется сложить или перемножить выбранные данные. В общем виде эти широко применяемые алгоритмы можно описать так:
1. для подсчета каждой суммы или произведения описать по одной переменной того же типа, что суммируемые или перемножаемые данные;
2. до цикла переменной-сумме присвоить начальное значение 0 , а произведению — значение 1 ;
3. в теле цикла, если очередной элемент данных t отвечает условию суммирования или перемножения, сумма накапливается оператором вида s := s + t ; , а произведение — оператором вида p := p * t ;
Очевидно, почему начальное значение произведения — 1 , а не 0 . После оператора p :=0; оператор p := p * t ; , расположенный в теле цикла, будет возвращать только нули.
Рассмотрим типовую задачу. Для функции , найти арифметическое среднее ее положительных значений и произведение ненулевых значений.
Для поиска арифметического среднего необходимо сначала найти сумму s и количество k положительных значений функции. Составим следующую программу:
else if x>0 then f:=sin(sqr(x))
if f>0 then begin
(‘Среднее положительных =’,s:10:6);
reset ( input ); readln ;
В следующей задаче также применяется алгоритм накопления суммы.
Требуется написать программу, имитирующую работу кассового аппарата: пользователь в цикле вводит цену очередного товара или 0 для завершения ввода, программа суммирует цены. По завершении цикла ввода программа начисляет скидку с общей стоимости товара по правилам: скидки нет, если общая стоимость покупки — менее 10000 руб.; скидка равна 5%, если общая стоимость — от 10000 до 20000 руб.; скидка равна 7%, если общая стоимость — свыше 20000 руб. После начисления скидки выводится окончательная стоимость покупки.
Обозначив общую стоимость покупки s , а цену очередного товара — t , напишем следующую программу:
writeln (‘Введите стоимость товара или ‘
‘0 для завершения ввода:’);
writeln (‘Ошибка! Повторите ввод’);
if t=0 then break;
на случай, если есть копейки>
t:=round (t*100) / 100;
writeln (‘Стоимость без скидки:’,s:8:2);
if s>20000 then s:=s-s*0.07
else if s>10000 then s:=s-s*0.05;
writeln (‘Стоимость со скидкой:’,s:8:2);
writeln (‘Спасибо за покупку!’);
reset (input); readln;
Тип данных real выбран для s и t не случайно — выбор integer ограничил бы диапазон обрабатываемых значений и не позволил в удобном виде ввести копейки. Проверки корректности ввода, делаемые программой, знакомы по предыдущим примерам и поэтому не закомментированы.
Источник: nickolay.info