Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая КТП.docx
Скачиваний:
5
Добавлен:
23.12.2022
Размер:
977.37 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«Московский технический университет связи и информатики»

Курсовая работа

по дисциплине

“Кроссплатформенные технологии программирования”

Варианты заданий: Лабораторная 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.