Технология программирования

3 курс 1 семестр
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 857
Стаж: 5 лет 8 месяцев
Откуда: Вологодская область
Поблагодарили: 37 раз
Контактная информация:

Технология программирования

Сообщение Артём Мамзиков »

Архив 400руб
Содержимое архива
Содержимое архива
Содержимое архива
учеб. Павловская Т.А.
Программирование на языке высокого уровня С#
Л.Р. № 2 ; 3. страница 372
Вариант по журналу 1-1, 2-2, 20-20, 21-1, 22-2.
Выполнить лабораторные работы №2, 3 из учебника Павловской Т. А. «Программирование на языке высокого уровня C#». Номер варианта номер студента по журналу. В ЗЭВ-22у студенты с номерами 21 и 22 делают варианты 1 и 2 соответственно.

Вариант 10 готовый

Лабораторная работа №2
Разветвляющиеся вычислительные процессы

Задание 1. Вычисление значения функции
Написать программу, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика. Параметр R вводится с клавиатуры.
1
1
Рисунок 1 – График функции

Ход выполнения работы:
1. Разбиваем функцию на отрезки:
при -10<=X<-6 Y = 2-sqrt(R*R – (X+8)*(X+8))
при -6<=X<-4 Y = 2;
при -4<=X<2 Y = X / 2;
при 2<=X<=4 Y = 3 – X ;
2. Запускаем Microsoft Visual C# 2010 Express, создаем проект «Консольное Приложение»
3. Листинг приложения на C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace z1
{
class Program
{
static double f(double x,double R)
{
if (x >= -10 && x < -6) return (2-Math.Sqrt(R * R - Math.Pow((x + 8), 2)));
else if (x >= -6 && x < -4) return 2;
else if (x >= -4 && x < 2) return -1.0 / 2.0 * x;
else if (x >= 2 && x <= 4) return x-3.0;
else return 0;
}
static void Main(string[] args)
{
Console.Write("Введите R(по чертежу радиус равен 2):");
double R = Double.Parse(Console.ReadLine());
Console.Write("Введите X:");
double x = Double.Parse(Console.ReadLine());
Console.WriteLine("X={0:f2}\tF(x)={1:f2}",x,f(x,R));
Console.ReadLine();
}
}
}

4. После написания кода приложения, проводим отладку.
2
2
Рисунок 2 – Результат работы приложения

Задание 2. Попадание точки в заштрихованную область.
Написать программу, которая определяет, попадает ли точка с заданными координатами в область, закрашенную на рисунке серым цветом. Результат работы программы вывести в виде текстового сообщения.
3 - texnolog prog3.jpg
3 - texnolog prog3.jpg (9.29 КБ) 3844 просмотра
Рисунок 3 – Область функции

Ход выполнения работы:
1. Запускаем Microsoft Visual C# 2010 Express, создаем проект «Консольное Приложение».
2. Листинг приложения на C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace z2
{
class Program
{
static void Main(string[] args)
{

Console.Write("Введите R(радиус окружности):");
double r = Double.Parse(Console.ReadLine());
Console.Write("Введите A(половина ширины прямоугольника):");
double a = Double.Parse(Console.ReadLine());
Console.Write("Введите B(половина высоты прямоугольника):");
double b = Double.Parse(Console.ReadLine());

Console.Write("Введите координату X выстрела:");
double x = Double.Parse(Console.ReadLine());
Console.Write("Введите координату Y выстрела:");
double y = Double.Parse(Console.ReadLine());

if (y <= 0 && Math.Pow(x, 2) + Math.Pow(y, 2) <= r * r && x <= 0 && y >= -b && x >= -a) Console.WriteLine("Выстрел попал в область окружности ниже оси абсцисс левее оси ординат, в прямоугольнике");
else if (y >= 0 && Math.Pow(x, 2) + Math.Pow(y, 2) >= r * r && x >= 0 && y <= b && x <= a) Console.WriteLine("Выстрел попал в область вне окружности выше оси абсцисс правее оси ординат, в прямоугольнике.");
else Console.WriteLine("Выстрел не попал не в одну из заданных областей.");
Console.WriteLine();

Console.ReadLine();
}
}
}

3. После написания кода приложения, проводим отладку.
4
4
Рисунок 4 – Результат работы приложения

Лабораторная работа №3
Организация циклов

Задание 1. Таблица значений функции.
Вычислить и вывести на экран в виде таблицы значения функции, заданной графически (см. задание 1 лабораторной работы 2), на интервале от хнач до хкон с шагом dх. Интервал и шаг задать таким образом, чтобы проверить все ветви программы. Таблицу снабдить заголовком и шапкой.

Ход выполнения работы:
1. Запускаем Microsoft Visual C# 2010 Express, создаем проект Консольное приложение.
2. Листинг приложения на C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace z1
{
class Program
{
static double f(double x, double R)
{
if (x >= -10 && x < -6) return (2 - Math.Sqrt(R * R - Math.Pow((x + 8), 2)));
else if (x >= -6 && x < -4) return 2;
else if (x >= -4 && x < 2) return -1.0 / 2.0 * x;
else if (x >= 2 && x <= 4) return x - 3.0;
else return 0;
}
static void Main(string[] args)
{
Console.Write("Введите R(по чертежу радиус равен 2):");
double R = Double.Parse(Console.ReadLine());
Console.Write("Введите X0(Левая граница):");
double x0 = Double.Parse(Console.ReadLine());
Console.Write("Введите X1(Правая граница):");
double x1 = Double.Parse(Console.ReadLine());
Console.Write("Введите шаг:");
double dx = Double.Parse(Console.ReadLine());

Console.WriteLine("X\tY\t");
for (double x = x0; x <= x1; x += dx)
{
Console.WriteLine("{0:f2}\t{1:f2}",x,f(x,R));
}
Console.ReadLine();
}
}
}


3. После написания кода приложения, проводим отладку.
5
5
Рисунок 5 – Результат работы приложения

Задание 2. Серия выстрелов по мишени.
Для десяти выстрелов, координаты которых задаются с клавиатуры, вывести текстовые сообщения о попадании в мишень из задания 2 лабораторной работы 2.
Ход выполнения работы:
1. Запускаем Microsoft Visual C# 2010 Express, создаем проект Консольное приложение.
2. Листинг приложения на C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace z2
{
class Program
{
static void Main(string[] args)
{
Console.Write("Введите R(радиус окружности):");
double r = Double.Parse(Console.ReadLine());
Console.Write("Введите A(половина ширины прямоугольника):");
double a = Double.Parse(Console.ReadLine());
Console.Write("Введите B(половина высоты прямоугольника):");
double b = Double.Parse(Console.ReadLine());

Console.WriteLine("Производим выстрелы:");
for (int i = 1; i <= 10; i++)
{
Console.Write("Введите координату X выстрела №" + i + ":");
double x = Double.Parse(Console.ReadLine());
Console.Write("Введите координату Y выстрела №" + i + ":");
double y = Double.Parse(Console.ReadLine());

if (y <= 0 && Math.Pow(x, 2) + Math.Pow(y, 2) <= r * r && x <= 0 && y >= -b && x>= -a) Console.WriteLine("Выстрел попал в область окружности ниже оси абсцисс левее оси ординат, в прямоугольнике");
else if (y >= 0 && Math.Pow(x, 2) + Math.Pow(y, 2) >= r * r && x >= 0 && y <= b && x <= a) Console.WriteLine("Выстрел попал в область вне окружности выше оси абсцисс правее оси ординат, в прямоугольнике.");
else Console.WriteLine("Выстрел не попал не в одну из заданных областей.");
Console.WriteLine();
}
Console.ReadLine();
}
}
}
3. После написания кода приложения, проводим отладку.
6
6
Рисунок 6 – Результат работы приложения

Задание 3. Ряды Тейлора.
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от хнач, до хкон с шагом dх с точностью е. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.
7 - texnolog prog7.jpg
7 - texnolog prog7.jpg (9.26 КБ) 3844 просмотра
Рисунок 7 – Ряд Тейлора
Ход выполнения работы:
1. Запускаем Microsoft Visual C# 2010 Express, создаем проект Консольное приложение.
2. Листинг приложения на C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace z3
{
class Program
{
static double f(double x, double eps)
{
double chisl = x;
int n = 0;
double elem = chisl / (2 * n + 1);
double sum = elem;
while (Math.Abs(elem) >= eps)
{
n = n + 1;
chisl = chisl *x * x;
elem = chisl / (2.0 * n + 1);
sum = sum + elem;
}
return sum;
}

static void Main(string[] args)
{
double x0, x1;
do{
Console.Write("Введите X0(Левая граница):");
x0 = Double.Parse(Console.ReadLine());
Console.Write("Введите X1(Правая граница):");
x1 = Double.Parse(Console.ReadLine());
} while (Math.Abs(x1) >= 1 || Math.Abs(x0) >= 1);

Console.Write("Введите шаг:");
double dx = Double.Parse(Console.ReadLine());

Console.Write("Введите точность(напр. 0.0001):");
double eps = Double.Parse(Console.ReadLine());


Console.WriteLine("Табулирование функции в интервале от {0:f2} до {1:f2}", x0, x1);

Console.WriteLine("X\t\tY\t\tArth(x)");
for (double x = x0; x <= x1; x += dx)
{
Console.WriteLine("{0:f4}\t\t{1:f6}\t{2:f6}", x, f(x, eps), Arth(x));
}
Console.ReadLine();
}
static double Arth(double x) { return f(x, 1E-10); }
}
}

3. После написания кода приложения, проводим отладку.
8
8
Рисунок 8 – Результат работы приложения

Список использованной литературы
1. Павловская Т.А., C#. Программирование на языке высокого уровня. Учебник для вузов, СПб.: Питер, 2009. – 432с.:ил.
количество слов: 803

Вернуться в «Технология программирования»