Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Линейное программирование.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
375 Кб
Скачать
☆

Создание проекта в Microsoft Visual Studio

В данных методических указаниях при выполнении лабораторных работ используется IDE Microsoft Visual Studio 2012 Professional версии 11.0.61030.00 Обновление 4.

Для того чтобы создать проект, необходимо в главном меню нажать File (Файл), затем навести курсор на пункт меню New (Создать) и в выпадающем списке выбрать Project (Проект), как показано на рисунке 1.

Рисунок 1 – Открытие окна для создания проекта

После выбора элемента выпадающего списка Project (Проект) откроется окно создания проекта. В боковом меню выбираем раздел Installed (Установленные), далее Templates (Шаблоны), язык Visual C#, затем категорию Windows и в центральном окне выбираем Console Application (Консольное приложение). Задаём имя проекта, имя решения меняется автоматически. Так же можно изменить расположение проекта, нажав на кнопкуBrowse (Обзор). Для завершения процедуры создания проекта нажмите кнопку ОК (рисунок 2).

Рисунок 2 – Окно создания проекта

После создания проекта в основном рабочем окне Visual Studio автоматически откроется файл Program.cs, исходный код которого представлен ниже.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace LinearApp

{

classProgram

{

staticvoid Main(string[] args)

{

}

}

}

Директива using позволяет подключить необходимые библиотеки, в данном случае указан стандартный набор генерируемый самой IDE. Для написания простых линейных программ достаточно использовать using System, а остальные можно убрать. Затем идёт ключевое слово «namespace» (пространство имен) с именем LinearApp, указываемое при создании проекта, и ключевое слово «class» с именем Program. Обсуждение данных ключевых слов выходит за рамки данного материала.

Функция Main является точкой начала выполнения программы. При запуске приложения Main является первой вызываемой функцией. Написание простых линейных программ в ней и происходит.

Основные понятия языка программирования c#

Все тексты на языке пишутся с помощью его алфавита.

Алфавит C# включает: буквы (латинские и национальных алфавитов) и символ подчёркивания(_),который употребляется наряду с буквами; цифры; специальные символы, например +, *, { и &; пробельные символы (пробел и символы табуляции); символы перевода строки.

Из символов составляются более крупные строительные блоки: лексемы, директивы препроцессора и комментарии.

Лексема (token) — это минимальная единица языка, имеющая самостоятельный смысл. Существуют следующие виды лексем: имена (идентификаторы); ключевые слова; знаки операций; разделители; литералы (константы).

Комментарии предназначены для записи пояснений к программе и формирования документации.

Однострочный комментарий начинается с двух символов прямой косой черты (//) и заканчивается символом перехода на новую строку, многострочный заключается между символами-скобками /* и */ и может занимать часть строки, целую строку или несколько строк. Комментарии не вкладываются друг в друга.

Выражение задаёт правило вычисления некоторого значения.

Имена, или идентификаторы, служат для того, чтобы обращаться к программным объектам и различать их, то есть идентифицировать. В идентификаторе могут использоваться буквы, цифры и символ подчёркивания. Первым символом идентификатора может быть буква или знак подчёркивания, но не цифра. Длина идентификатора не ограничена. Пробелы внутри имён не допускаются.

Идентификатор создаётся на этапе объявления переменной (метода, типа и т. п.), после этого его можно использовать в последующих операторах программы. При выборе идентификатора необходимо следить, чтобы он не совпадал с ключевыми словами.

Знак операции — это один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются. Например, в выраженииa += b знак += является знаком операции, а a и b — операндами. Символы, составляющие знак операций, могут быть как специальными, например, &&, | и <, так и буквенными, такими как as или new.

Операции делятся на  унарные,  бинарные  и  тернарную  по количеству участвующих в них операндов. Один и тот же знак может интерпретироваться по-разному в зависимости от контекста.

Разделители используются для разделения или, наоборот, группирования элементов. Примеры разделителей: скобки, точка, запятая. 

Литералами, или константами, называют неизменяемые величины. В C# есть логические, целые, вещественные, символьные и строковые константы, а также константа null.

Переменная — это именованная область памяти, предназначенная для хранения данных определённого типа. Во время выполнения программы значение переменной можно изменять. Все переменные, используемые в программе, должны быть описаны явным образом. При описании для каждой переменной задаются её имя и тип.

Пример описания целой переменной с именем a и вещественной переменной x:

int a; float x;

Тип определяет множество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций, которые применимы к нему.

Линейной называется программа, все операторы которой выполняются последовательно в том порядке, в котором они записаны.

При написании линейных программ часто приходится использовать математические функции. Они реализованы в классе Math пространства имён System. Кроме этого в классе имеется два полезных поля: число π и число е.Основные методы и поля приведены в таблице 1.

Таблица 1 – Основные методы и поля класса Math

Имя

Описание

Пояснение

Abs

Модуль

|x| записывается как Abs(x)

Acos

Арккосинус

Acos(doublex) – угол задаётся в радианах

Asin

Арксинус

Asin(doublex)

Atan

Арктангенс

Atan(doublex)

Atan2

Арктангенс

Atan2(doublex, doubley) – возвращает угол, тангенс которого есть результат деления yна x

BigMul

Произведение

BigMul(int x, int y)

Ceiling

Округление до ближайшего целого

Ceiling(double x)

Продолжение таблицы 1

Cos

Косинус

Cos(double x)

Cosh

Гиперболический косинус

Cosh(double x)

DivRem

Деление и остаток

DivRem(x,y,rem)

E

Число е

2,71828182845905

Exp

Экспонента

Exp(x) – e, возведённое в указанную степень

Floor

Округление до меньшего целого

Floor(double x)

IEEERemainder

Остаток от деления

IEEERemainder(double x, double y) – возвращает остатокотделения x/y

Log

Натуральный логарифм

Log(x) – возвращает логарифм указанного числа в системе счисления с указанным основанием Logex

Log10

Десятичный логарифм

Log10(x) – возвращает логарифм с основанием 10 указанного числа Log10x

Max

Максимум из двух чисел

Max(x,y)

Min

Минимум из двух чисел

Min(x,y)

PI

Значение числа π

3,14159265358979

Pow

Возведение в степень

Pow(x,y) – возведение числа xв степень y

Round

Округление

Round(3.1) – результат «3», Round(3.8) – результат «4»

Sign

Знак числа

Sign(x) – возвращает значение, определяющее знак десятичного числа (-1; 0 или 1)

Sin

Синус

Sin(double x)

Sinh

Гиперболический синус

Sinh(double x)

Sqrt

Квадратный корень

Sqrt(x) – возвращает квадратный корень из указанного числа

Tan

Тангенс

Tan(double x)

Tanh

Гиперболический тангенс

Tanh(double x)

Пример №1. Вычисление значения выражения по формуле.

Задание: Необходимо разработать программу вычисляющую значение выражения по следующей формуле: .

Исходный код программы:

using System;

namespace LinearApp

{

Class Program

{

staticvoid Main(string[] args)

{

double x, y, result = 0;

Console.WriteLine("Введите x");

x = Double.Parse(Console.ReadLine());

Console.WriteLine("Введите y");

y = Double.Parse(Console.ReadLine());

result = Math.Pow(x, 1 / 5) + Math.Log10(Math.Abs(Math.Tan(y*y)-Math.Cos(Math.Pow(x, 1/Math.Tan(y)))));

Console.WriteLine("Результат: " + result);

Console.ReadKey();

}

}

}

Результат работы программы LinearApp представлен на рисунке 3.

Введите x

3,2

Введите y

4,7

Введите z

11,5

Результат: 0,632312423178021

Рисунок 3 – Результат работы программы LinearApp

В первой строке тела функции Main объявляются и инициализируются значениями четыре переменные вещественного типа. Затем, используя функцию WriteLine(), выводим на экран сообщение с просьбой ввода одной из переменных. Далее необходимо сохранить введённое значение. Для этого используется функция ReadLine(), но так как результатом работы этой функции является строка, необходимо сделать преобразование. Функция Parse() позволяет конвертировать (преобразовать) значение в нужный тип, указываемый перед ней (Double.Parse()).

Для того чтобы записать формулу, используется ключевое слово «Math» и через точку указывается функция, например Pow, которая позволяет вычислять значения со степенью. Сначала указывается число, которое необходимо возвести в степень (х), затем сама степень. По аналогии не трудно разобраться с остальными функциями. Все вычисления сохраняем в переменную result и выводим её на экран, используя уже знакомую функцию WriteLine(). По умолчанию, при запуске программы, окно консоли сразу закроется после вычислений, чтобы этого не допустить, необходимо воспользоваться функцией Readkey().

Пример №2. Решение задачи.

Задание: Вычислить периметр и площадь квадрата. Параметры фигуры ввести с клавиатуры.

Исходный код программы:

using System;

namespace LinearAppTwo

{

class Program

{

static void Main(string[] args)

{

double sideSquare, perimeter, area = 0;

Console.WriteLine("Введите сторону квадрата:");

sideSquare = Double.Parse(Console.ReadLine());

perimeter = 4 * sideSquare;

area = Math.Pow(sideSquare, 2);

Console.WriteLine("Периметр = " + perimeter + " , площадь = " + area);

Console.ReadKey();

}

}

}

Результат работы программы LinearAppTwo представлен на рисунке 4.

Введите сторону квадрата:

4

Периметр = 16 , площадь = 16

Рисунок 4 – Результат работы программы LinearAppTwo

В первой строке функции Main объявляются и инициализируются значением ноль три переменные вещественного типа: sideSquare (хранения стороны квадрата), perimeter (хранение периметра квадрата), area(хранение площади квадрата). Затем на консоль выводится сообщение с просьбой ввода стороны квадрата, после чего оно сохраняется в переменную sideSquare. Далее по известным формулам вычисляется сначала периметр, а затем площадь квадрата. В данном примере площадь вычисляется при помощи функции возведения в степень Pow. Результат выводится на экран при помощи знакомой функции WriteLine(), а затем осуществляется задержка экрана функцией Readkey().

Пример №3. Составить линейную программу, печатающую значение true, если указанное высказывание является истинным, и false – в противном случае.

Задание: Написать программу, определяющую равны ли площади двух равносторонних треугольников.

Исходный код программы:

using System;

namespace LinearAppThree

{

class Program

{

static void Main(string[] args)

{

double sideFirstTriangle, sideSecondTriangle, areaFirstTriangle, areaSecondTriangle = 0;

Console.Write("Введите сторону первого треугольника: ");

sideFirstTriangle = Double.Parse(Console.ReadLine());

Console.Write("Введите сторону второго треугольника: ");

sideSecondTriangle = Double.Parse(Console.ReadLine());

areaFirstTriangle = (Math.Sqrt(3) / 4) * Math.Pow(sideFirstTriangle, 2);

Console.Write("Площадь первого треугольника = " + areaFirstTriangle + "\n");

areaSecondTriangle = (Math.Sqrt(3) / 4) * Math.Pow(sideSecondTriangle, 2);

Console.Write("Площадь второго треугольника = " + areaSecondTriangle + "\n");

if (areaFirstTriangle == areaSecondTriangle)

{

Console.Write("Результат = True");

}

else

{

Console.Write("Результат = False");

}

Console.ReadKey();

}

}

}

Два результата работы программы LinearAppThree представлены на рисунках 5 и 6.

Введите сторону первого треугольника: 5

В ведите сторону второго треугольника: 5

Площадь первого треугольника = 10,8253175473055

Площадь второго треугольника = 10,8253175473055

Результат = True

Рисунок 5 – результат работы программы true

Введите сторону первого треугольника: 3

Введите сторону второго треугольника: 6

Площадь первого треугольника = 3,89711431702997

Площадь второго треугольника = 15,5884572681199

Результат = False

Рисунок 6 – результат работы программы false

Основная часть программы похожа на две предыдущие и не нуждается в комментариях. После вывода на экран результатов подсчёта площадей двух равносторонних треугольников задаётся условие, при помощи ключевого слова if. Двойное равно указывает на то, что происходит сравнение двух значений переменных. Если значение переменной areaFirstTriangle равно значению переменной areaSecondTriangle, то на экран выводится сообщение «Результат = True», иначе выводится сообщение «Результат = False».

При выполнении лабораторной работы студенту необходимо решить все задания и оформить отчёт в Word.

Варианты заданий для студентов определяет преподаватель.