- Лабораторная работа Тема. Программирование циклических алгоритмов
- Лабораторная работа № 3 Тема: «Программирование циклических вычислительных процессов»
- Пример 3.1. Вычислить значение функции s(X), пользователь вводит значение х
- Лабораторная работа №1 Тема: Программирование циклических вычислительных процессов Задание:
- Код программы:
- Код программы:
Лабораторная работа Тема. Программирование циклических алгоритмов
Цель работы: изучить инструментальные средства организации циклических вычислительных процессов; овладеть практическими навыками работы с циклами.
Операторы организации циклов
Циклическими называются алгоритмы, которые предусматривают многократное повторение действий в одной и той же последовательно сти по одним и тем же математическим зависимостям, но при различ ных значениях некоторых специально изменяемых величин.
Различают два вида циклов – цикл с заданным числом повторений (детерминированный) и цикл, число повторений которого заведомо неизвестно (итерационный).
Для организации циклических алгоритмов в языке Object Pascal используются 3 вида операторов:
for – оператор цикла с управляющим параметром;
while – оператор цикла с предварительным условием;
repeat – оператор цикла с последующим условием.
Оператор for используют для организации детерминированных циклов, если шаг изменения параметра цикла равен 1 или –1. Операторы while , repeat используются для организации итерационных циклов и в случае детерминированных циклов с шагом изменения параметра отличным от 1 и –1.
Оператор for состоит из заголовка и тела цикла. Он может быть представлен в двух форматах:
for счетчик>:=n2 downto n 1 do оператор>; где счетчик> – параметр цикла (переменная порядкового типа); n 1, n 2 – начальное и конечное значения параметра цикла; оператор> – простой или составной оператор, образующий тело цикла.
Первый формат организует увеличение на 1, второй -уменьшение на 1.
Ниже в качестве примера приведен фрагмент программы вычис ления суммы квадратов натуральных чисел от 1 до 10.
for i:=1 to 10 do s:=s + i*i;
Общий вид оператора while :
while do оператор>;
Выполняется оператор следующим образом. Вначале проверяет ся и пока оно истинно повторяется , стоящий после зарезервированного слова do . Выход из цикла происхо дит, когда становится ложным. Если при первом вычис лении окажется ложным, то оператор цикла не выполнится ни разу.
Если в цикле нужно выполнить не один оператор, а несколько, то их следует заключить в операторные скобки begin . end , то есть использовать составной оператор.
Пример вычисления суммы квадратов натуральных чисел от 1 до 10 с использованием оператора while будет выглядеть следующим образом.
Оператор repeat
Общий вид оператора repeat .
Выполняется оператор repeat следующим образом. В начале выполняется группа операторов – оператор_1>, , . . Затем проверяется условие, если оно ложно, то снова выполняется «тело» цикла. Если же условие истинно, то происходит выход из цикла. Так как условие прекращения цикла проверяется в конце цикла, то операторы, образующие тело цикла, выполняются, по крайней мере, один раз.
Рассмотренный выше пример вычисления суммы квадратов на-туральных чисел от 1 до 10 с использованием оператора repeat бу-дет выглядеть следующим образом.
3.1. Пример создания приложения
Задание. Создать Windows -приложение, реализующее следую-щую задачу: даны натуральное число n и действительное x. Вычислить сумму членов ряда
3.1.1. Размещение компонентов на Форме
Один из возможных вариантов панели интерфейса создаваемого приложения показан на рисунке 1.7.
Компонент SpinEdit находится на странице Samples Палитры компонентов.
Для задания переменной n удобно использовать компонент SpinEdit . Компонент SpinEdit предназначен для отображения и редактирования целого числа. Установите для компонента SpinEdit 1 значения свойств: MinValue =1, MaxValue =15 .
Лабораторная работа № 3 Тема: «Программирование циклических вычислительных процессов»
Цель работы – изучить циклические операторы while, do-while, for.
Теоретические сведения
Цикл — многократное выполнение одних и тех же операторов при различных значениях промежуточных данных. Число повторений может быть задано в явной или неявной формах. Для организации повторений в языке Cи используются три различных оператора цикла.
3.1. Оператор цикла с предусловием
Оператор цикла с предусловием (while) организует повторение операторов кода цикла до тех пор, пока выражение истинно (не равно 0), если выражение = 0 (ложно) при первом входе, то код цикла не выполнится ни разу. Если код цикла состоит более чем из одного оператора, то организуется блок.
3.2. Оператор цикла с постусловием
Оператор цикла с постусловием (do while) организует повторение кода цикла до тех пор, пока выполнится выражение истинно, после чего управление передается следующему за циклом оператору. Данный оператор гарантирует выполнение кода цикла хотя бы один раз.
3.3. Оператор с предусловием и коррекцией
for (выражение 1; выражение 2; выражение 3)
где выражение 1 – начальное значение параметра цикла; выражение 2 – проверка условия на продолжение цикла; выражение 3 – изменение (коррекция) параметра цикла.
Вначале вычисляется выражение 1, затем проверяется выражение 2, если оно – истинно, то выполняется код цикла, затем производится коррекция в выражении 3, и так до тех пор, пока выражение 2 не примет значение «ложь».
Досрочный выход из операторов цикла выполняет оператор break, а оператор continue выполняет передачу управления в головной оператор цикла.
Пример 3.1. Вычислить значение функции s(X), пользователь вводит значение х
.
Лабораторная работа №1 Тема: Программирование циклических вычислительных процессов Задание:
Для функции составить программу построения таблицы значений функции при изменении аргумента от A = −5 до B = 5 с шагом H = 0,1. Значения A, B и H объявить как константы.
В каждой строке выводить значение аргумента и соответствующее ему значение функции в форматированном виде с 4 знаками после запятой. Кроме того, в конце таблицы нужно напечатать отдельной строкой значение, которое требуется вычислить в соответствии с индивидуальным вариантом.
Вариант A4: Среднее арифметическое таких значений функции, которые больше числа М. М вписать в консоле.
Код программы:
import kotlin.math.*
// функция для вычисления значения f(x)
return x * exp(x) + 2 * sin(x) — sqrt(abs(x.pow(3.0) — x.pow(2.0)))
// объявления переменных
println(«Среднее арифметическое таких значений функции, которые больше числа $M = $<"%.4f".format(sum / count)>«)
Результат выполнения программы:
В данной лабораторной работе я научился разрабатывать циклические вычислительные выражения, научился командам ввода и вывода значений, научился созданию вычислительных функций, научился использованию встроенной библиотеки для математических операций (kotlin.math.*).
Тема: Проверка попадания точки в область на плоскости
Для функции из лабораторной работы № 1 составить программу построения таблицы значений функции, состоящую из n строк при изменении аргумента от A до B. В каждой строке таблицы выводить значение аргумента x и соответствующее ему значение функции y в форматированном виде с 4 знаками после запятой. В конце таблицы вывести отдельной строкой среднее арифметическое всех значений функции. Кроме того, программа должна определить, сколько точек с координатами (x, y) из полученной таблицы попадает внутрь области, ограниченной фигурой, соответствующей индивидуальному заданию.
Вариант: A4. (-10, -9), (-10, 3), (2, 3), (2, -9).
Код программы:
// функция для вычисления значения f(x)
return x * exp(x) + 2 * sin(x) — sqrt(abs(x.pow(3.0) — x.pow(2.0)))
// объявления переменных
println(«Среднее арифметическое всех значений $<"%.4f".format(sum / n)>«)
println(«Количество попадающих точек = $count»)
Результат выполнения программы:
В данной лабораторной работе я научился разрабатывать циклические вычислительные выражения, преобразованию введенных значений в числа, форматированию выводимого значения.
Тема: Числовые и функциональные ряды
Для бесконечного числового ряд
члены которого вычисляются по формуле, соответствующей индивидуальному варианту, вычислить приближенную сумму двумя способами: сумму первых n членов ряда и сумму с точностью до eps (эпсилон) в двух разных функциях
double Sum1(int n); double Sum2(double eps).
Запрещается использование функции pow() и условных операторов «if» и «? : ».
Вариант
import kotlin.math.abs
// функция для вычисления sum1
fun Sum1(n:Int):Double
var sum = 0.0
for(i in 1..n)
sum += z * n / (n * n * n — n).toDouble()
// функция для вычисления sum2
fun Sum2(eps:Double):Double
var sum = 0.0
var elem = 0.0
elem = z * n / (n * n * n — n).toDouble()
> while(abs(elem) > eps)
print(«Введите n Введите eps Sum1 = %.4f».format(Sum1(n)))
println(«Sum2 = %.4f».format(Sum2(eps)))
Результат выполнения программы:
В данной лабораторной работе я научился разрабатывать циклические вычислительные выражения с помощью конструкции do while и цикла for, вычислил сумму первых n членов ряда, и сумму с точностью до eps.
Тема: Вычисление характеристик числовых последовательностей
Последовательность данных не всегда нужно сохранять в памяти. Поэтому нужно уметь обрабатывать последовательность по мере поступления ее элементов: при чтении файла, при вводе некоторых данных с клавиатуры и т.д.
Пусть имеется последовательность произвольных целых ненулевых чисел, завершающаяся числом 0 (число 0 в последовательность не входит). Количество элементов в последовательности заранее неизвестно, поэтому в данной работе использовать массивы (статические и динамические) нельзя.
Вариант B4: Найти значение наибольшего элемента и его порядковый номер среди всех элементов, имеющих в своем составе цифру 3.