ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«Московский технический университет связи и информатики»
Курсовая работа
по дисциплине
“Кроссплатформенные технологии программирования”
Варианты заданий: Лабораторная 1 - A
Лабораторная 2 - A
Лабораторная 3 - B
Лабораторная 4 - B
Лабораторная 5 - B
Лабораторная 6 - A
Лабораторная работа №1 Тема: Программирование циклических вычислительных процессов Задание:
Для функции составить программу построения таблицы значений функции при изменении аргумента от A = −5 до B = 5 с шагом H = 0,1. Значения A, B и H объявить как константы.
В каждой строке выводить значение аргумента и соответствующее ему значение функции в форматированном виде с 4 знаками после запятой. Кроме того, в конце таблицы нужно напечатать отдельной строкой значение, которое требуется вычислить в соответствии с индивидуальным вариантом.
Вариант A4: Среднее арифметическое таких значений функции, которые больше числа М. М вписать в консоле.
Код программы:
import kotlin.math.*
// функция для вычисления значения f(x)
fun f1(x: Double): Double {
return x * exp(x) + 2 * sin(x) - sqrt(abs(x.pow(3.0) - x.pow(2.0)))
}
fun main() {
// объявления переменных
val A = -5.0
val B = 5.0
val H = 0.1
var sum = 0.0
var count = 0
var y = 0.0
var x = A
// ввод данных
print("Введите M: ")
var M = readLine()!!.toDouble()
// вычисления
while(x <= B){
y = f1(x)
println("x = ${"%.2f".format(x)} , y = ${"%.4f".format(y)}")
if(y > M){
sum += y
count ++
}
x += H
}
// вывод результата
println("Среднее арифметическое таких значений функции, которые больше числа $M = ${"%.4f".format(sum / count)}")
}
Результат выполнения программы:
Вывод:
В данной лабораторной работе я научился разрабатывать циклические вычислительные выражения, научился командам ввода и вывода значений, научился созданию вычислительных функций, научился использованию встроенной библиотеки для математических операций (kotlin.math.*).
Лабораторная работа №2
Тема: Проверка попадания точки в область на плоскости
Задание
Для функции из лабораторной работы № 1 составить программу построения таблицы значений функции, состоящую из n строк при изменении аргумента от A до B. В каждой строке таблицы выводить значение аргумента x и соответствующее ему значение функции y в форматированном виде с 4 знаками после запятой. В конце таблицы вывести отдельной строкой среднее арифметическое всех значений функции. Кроме того, программа должна определить, сколько точек с координатами (x, y) из полученной таблицы попадает внутрь области, ограниченной фигурой, соответствующей индивидуальному заданию.
Вариант: A4. (-10, -9), (-10, 3), (2, 3), (2, -9).
Код программы:
import kotlin.math.*
// функция для вычисления значения f(x)
fun f2(x: Double): Double {
return x * exp(x) + 2 * sin(x) - sqrt(abs(x.pow(3.0) - x.pow(2.0)))
}
fun main() {
// объявления переменных
val A = -5.0
val B = 5.0
var sum = 0.0
var count = 0
var y = 0.0
var x = A
// ввод данных
print("Введите n: ")
var n = readLine()!!.toInt()
val H: Double = (B - A) / (n - 1);
// вычисления
for(i in 0..n-1){
y = f2(x)
println("x = ${"%.2f".format(x)} , y = ${"%.4f".format(y)}")
sum += y
if(x >= -10 && x <= 2 && y <= 4 && y >= -9)
count ++
x += H
}
// вывод результата
println("Среднее арифметическое всех значений ${"%.4f".format(sum / n)}")
println("Количество попадающих точек = $count")
}
Результат выполнения программы:
Вывод
В данной лабораторной работе я научился разрабатывать циклические вычислительные выражения, преобразованию введенных значений в числа, форматированию выводимого значения.
Лабораторная работа №3
Тема: Числовые и функциональные ряды
Задание:
Для бесконечного числового ряд
члены которого вычисляются по формуле, соответствующей индивидуальному варианту, вычислить приближенную сумму двумя способами: сумму первых 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
var z = -1
for(i in 1..n){
sum += z * n / (n * n * n - n).toDouble()
z *= -1
}
return sum
}
// функция для вычисления sum2
fun Sum2(eps:Double):Double
{
var sum = 0.0
var z = -1
var n = 1
var elem = 0.0
do{
elem = z * n / (n * n * n - n).toDouble()
sum += elem
n++
z *= -1
} while(abs(elem) > eps)
return sum
}
fun main(){
// ввод данных
print("Введите n = ")
val n = readLine()!!.toInt()
print("Введите eps = ")
val eps = readLine()!!.toDouble()
// вывод результата
println("Sum1 = %.4f".format(Sum1(n)))
println("Sum2 = %.4f".format(Sum2(eps)))
}
Результат выполнения программы:
Вывод
В данной лабораторной работе я научился разрабатывать циклические вычислительные выражения с помощью конструкции do while и цикла for, вычислил сумму первых n членов ряда, и сумму с точностью до eps.
Лабораторная работа №4
Тема: Вычисление характеристик числовых последовательностей
Задание:
Последовательность данных не всегда нужно сохранять в памяти. Поэтому нужно уметь обрабатывать последовательность по мере поступления ее элементов: при чтении файла, при вводе некоторых данных с клавиатуры и т.д.
Пусть имеется последовательность произвольных целых ненулевых чисел, завершающаяся числом 0 (число 0 в последовательность не входит). Количество элементов в последовательности заранее неизвестно, поэтому в данной работе использовать массивы (статические и динамические) нельзя.
Вариант B4: Найти значение наибольшего элемента и его порядковый номер среди всех элементов, имеющих в своем составе цифру 3.