logo
C# Программирование на языке высокого уровня. Среда разработки Microsoft Visual Studio.NET

ЛАБОРАТОРНАЯ РАБОТА № 1

Приложения C# для расчетов по формулам, консольный ввод-вывод.

1. Краткие теоретические сведения Типы данных

Язык C# имеет набор встроенных типов, которые рассматриваются как псевдонимы типов в пространстве имен System. Например, тип string - это псевдоним типа System.String, а тип int - псевдоним типа System.Int32. Все встроенные типы подразделены на группы: целочисленные типы; вещественные типы; логический тип; символьные типы; объектный тип (object). Описание типов приведено в таблице 1.1.

Таблиця 1.1

Тип даних

Ключове слово

Псевдонім класу бібліотеки NET

Опис

Розмір (байт)

Логічний

bool

System.Boolean

-

-

Цілий

Int

Shot

Byte

Sbyte

Long

System.Int32

System.Int16

System.Byte

System.SByte

System.Int64

зі знаком

зі знаком

без знаку

зі знаком

зі знаком

32

16

8

8

64

Дійсний

Float

Double

System.Single

System.Double

7 цифр

15 цифр

32

64

Рядковий символьний

String

Char

System.String

System. Char

Рядок символів Unicode

-

16

Будь-який тип

object

System.Object

Обєктний

-

Иерархия классов NET Framework имеет один общий корень - класс System.Object. Все типы разделяются на две категории: размерные типы и ссылочные типы.

При создании переменной размерного типа под нее в стеке выделяется определенный объем памяти, соответствующий типу этой переменной. При передаче такой переменной в качестве параметра выполняется передача значения, а не ссылки на него. Значение размерного типа не может быть равным null. К размерным типам, например, относятся целочисленные и вещественные типы, структуры.

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

Структура приложения на языке С#.

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

Интегрированная среда проектирования Visual Studio позволяет для создания проектов на разных языках программирования использовать различные инструментальные средства проектирования (например, Microsoft Visual Basic, Microsoft Visual C#).

Любое приложение на языке C#, разрабатываемое в среде проектирования Visual Studio, реализуется как отдельный проект. Приложение на языке С# может состоять из нескольких модулей. Каждый модуль C# может содержать код нескольких классов (при создании приложения в среде Visual Studio.NET каждый класс С# автоматически помещается в отдельный модуль - файл с расширением cs).

Для консольного приложения один из классов, реализуемых модулем, должен содержать метод Main. В языке C# нет аппарата заголовочных файлов, используемого в языке С++, поэтому код модуля должен содержать как объявление, так и реализацию класса. По умолчанию весь код класса, представляющего консольное приложение, заключается в одно пространство имен, одноименное с именем приложения.

Точкой входа в программу на языке C# является метод Main. Этот метод может записываться как без параметров, так и с одним параметром типа string - указателем на массив строк, который содержит значения параметров, введенных при запуске программы. В отличие от списка параметров, задаваемых при запуске С-прило- жения, список параметров С#-приложения не содержит в качестве первого параметра имя самого приложения. Код метода указывается внутри фигурных скобок:

static void Main(string[] args)

{

}

Ключевое слово static определяет, что метод Main является статическим методом, вызываемым без создания экземпляра объекта типа класса, в котором этот метод определен. Метод, не возвращающий никакого значения, указывается с ключевым словом void. Однако метод Main может возвращать значение типа int.

Пример 1. Вывод сообщения на консоль.

static void Main()

{

Console.WriteLine("Уpa! Сегодня "Информатика"!!!");

}

Замечание. Для отладки можно использовать команду меню DebugStart Without Debugging. На экране появится окно с результатом исполнения. Обратите внимание на надпись в конце программы: Press any key to continue, которая не была предусмотрена. При нажатии любой клавиши окно закрывается. Это результат срабатывания встроенной разработчиками компилятора функции «остановки экрана» для того, чтобы можно было бы сколь угодно долго его рассматривать.

Можно использовать команду DebugStart Debugging, но тогда окно закроется и мы не сможем рассмотреть искомый результат. Для того чтобы обойти это неудобство, следует при разработке программы предусмотреть собственную остановку экрана. Для этого используется команда Console.Read();

Константы

Это неизменяемые в процессе выполнения программы величины.

Целые константы - наиболее распространенный тип int. Это целое число, которое может быть отрицательным, положительным или нулем -12, 5, 0 (все целые со знаком 32 бита). Их можно записывать с суффиксом -12L (длинное целое 64 бита), 5u (целое без знака 8 бит)

Вещественные константы с фиксированной точкой. При записи константы типа float(32 бита) необходимо, чтобы за значением шел суффикс символ f или F 1.2, -1.234, при записи константы типа double (64 бита) можно записать суффикс «d» или «D», но это не является обязательным условием: 1234.5678, 12.3d. Дробная часть отделяется от целой части точкой.

Вещественные константы с плавающей точкой. При записи константы типа float(32 бита) необходимо, чтобы за значением шел суффикс символ f или F: 1.2E-3f (число 0.0012), при записи константы типа double (64 бита) -1.34E5 (число -134000) наличие суффикса не требуется.

Символьные константы. Символьная константа char может представлять собой 16-битный символ Unicode (a) или управляющие символы (возврат каретки ( ), перевод страницы (f), горизонтальную табуляцию ( ), и другие), заключенный в апострофы.

Строковые константы - это последовательность символов, заключенная в кавычки, или константы string. Строка, состоящая из символов, например "Уpa! Сегодня "Информатика"!!!"

Логическая константа. Задается одним из двух значений true («истина») или false («ложь»). Используется в C# в логических выражениях, операторах условного перехода.

Именованные константы. Применяются для того, чтобы вместо значений констант, использовать в программе их имена, например константа р вещественная одинарной точности

const float p = 3.14159f

Переменные

Переменная - именованная область памяти, для хранения данных определенного типа. При выполнении программы значение переменной величины можно изменять. Все переменные должны быть описаны явно, при описании переменной задается ее значение и тип. При объявлении переменной может быть задано начальное значение.

Имя переменной может содержать буквы, цифры и символ подчеркивания. Прописные и строчные буквы различаются. Например, переменные Long, LONG, long - три разных переменные.

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

Правильные имена переменных: MaxLen, iMaxLen, Max_Len

Неправильные имена переменных: 2Len, Le#

Примеры описания переменных:

int a = -14; // числовая целая 32 бита

float c = -0.00151f; // числовая вещественная 32

// бита

double i = 1234.56789; // числовая вещественная 64

// бита

bool l = false; // логическая 16 бит

string name = "Petrov"; // строковая

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

Примеры выражений:

2 * 2 + 1 полученное значение 5

1 / 2 - 3 полученное значение -3

1 / 2 - 3 полученное значение -2.5

Присвоение значения переменной представляет оператор присваивания (знаки основных операций приведены в таблице 1.2) : y = 2*x*x + 3*x - 1.

В этом примере сначала производятся вычисления правой части оператора присваивания « = », а затем полученное значение присваивается переменной у. Для текстовых данных выражение можно записать в следующем виде:

string kaf = "Кафедра" + "ПМиСИ";

В этом примере строки по правую сторону от оператора присваивания объединяются, чтобы получить строку "Кафедра + ПМиСИ", которая затем присваивается переменной kaf.

Таблица 1.2 Знаки операций

Знак операции

Название

+

Сложение

-

Вычитание

*

Умножение

/

Деление

%

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

Если в арифметических выражениях используются целые числа, то результатом вычислений будет целое число, и любой остаток от деления будет отброшен. Для получения остатка можно использовать соответствующую операцию %, например 10 % 3 возвращает остаток от целочисленного деления, равный 1.

Когда в арифметических выражениях используются числа с плавающей точкой, то результатом деления 10f / 3f будет число 3,333333.

Математические функции

С# содержит большое количество встроенных математических функций, которые реализованы в классе Math пространства имен System.

Рассмотрим краткое описание некоторых математических функций, подробнее с ними можно познакомиться в справочной системе VS или технической документации. Особое внимание следует обратить на типы операндов и результатов, т. к. каждая функция может иметь несколько перегруженных версий.

Замечание. Использование нескольких функций с одним и тем же именем, но с различными типами параметров, называется перегрузкой функции. Например, функция Math.Abs(), вычисляющая модуль числа, имеет 7 перегруженных версий: double Math.Abs (double x), float Math.Abs (float x), int Math.Abs(int x), и т. д. (таблица 1.3)

Таблица 1.3 Математические функции

Название

Описание

1.

Math.Abs(вираз)

Модуль

2.

Math.Ceiling(вираз)

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

3.

Math.Cos ( вираз )

Косинус

4.

Math.E

Число е

5.

Math.Exp(вираз)

Экспонента

6.

Math.Floor(вираз)

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

7.

Math.Log(вираз)

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

8.

Math.Log10(вираз)

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

9.

Math.Max(вираз1, вираз2)

Максимум ив двух

значений

10.

Math.Min (вираз1, вираз2)

Минимум из двух значений

11.

Math.PI

Число

12.

Math.Pow(вираз1, вираз2)

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

13.

Math.Roundl(вираз)

Простое округление

Math.Round(вираз,число)

Округление до заданного

числа цифр

14.

Math.Sign(вираз)

Знак числа

15.

Math.Sin(вираз)

Синус

16.

Math.Sqrt(вираз)

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

17.

Math.Tan (вираз)

Тангенс

Пример 2. Вычислить значения функции при х = 2,5

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

namespace ConsoleApplication1

{

class Example2 // начало описания класса

// Example2

{

static void Main()

{

double p = 3.14159; double x = 2.5;

double y = Math.Cos(p * x)/(1 + x*x);

Console.WriteLine();

Console.WriteLine(" x = {0} y = {1} ",x, y);

}

}

}

Эта программа выводит следующее окно с результатом.

Замечание. Функция Console.WriteLine() выводит на экран пустую строку. Это сделано для более комфортной работы

Организация ввода-вывода данных.

Программа при вводе данных и выводе результатов взаимодействует с внешними устройствами. Совокупность стандартных устройств ввода (клавиатура) и вывода (экран) называется консолью. В языке С# нет операторов ввода и вывода. Вместо них для обмена данными с внешними устройствами используются специальные объекты. В частности, для работы с консолью используется стандартный класс Console, определенный в пространстве имен System.

Ввод данных

Для ввода данных обычно используется метод ReadLine, реализованный в классе Console. Особенностью данного метода является то, что в качестве результата он возвращает строку (string).

Пример:

static void Main()

{

string s = Console.ReadLine(); Console.WriteLine(s);

}

Для того чтобы получить числовое значение необходимо вое - пользоваться преобразованием данных.

Пример:

static void Main()

{

string s = Console.ReadLine();

int x = int.Parse(s); // преобразование строки в

// число

Console.WriteLine(x);

}

Или сокращенный вариант:

static void Main()

{

//преобразование введенной строки в число

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

Console.WriteLine(x);

}

Для преобразования строкового представления целого числа в тип int мы используем метод int.Parse(), который реализован для всех числовых типов данных. Таким образом, если нам потребуется преобразовать строковое представление в вещественное, мы можем воспользоваться методом float.Parse() или double. Parse(). В случае, если соответствующее преобразование выполнить невозможно, то выполнение программы прерывается и генерируется исключение System.FormatExeption (входная строка имела неверный формат).

Вывод данных

В приведенных выше примерах мы уже рассматривали метод WriteLine, реализованный в классе Console, который позволяет организовывать вывод данных на экран. Однако существует несколько способов применения данного метода (таблица 1.4):

Таблица 1.4. Способы вывода

Console.WriteLine(x);

на экран выводится значение идентификатора х

Console.WriteLine("x=" + x +"y=" + y);

на экран выводится строка, образованная последовательным слиянием строки "х=", значения х, строки "у=" и значения у

Console.WriteLine ("x={0} y={1}", x, y);

на экран выводится строка, формат которой задан первым аргументом метода, при этом вместо параметра {0} выводится значение х, а вместо {1} - значение

программа формула цикл форматирование

Если использовать при выводе вместо метода WriteLine метод Write, вывод будет выполняться без перевода строки.

Использование управляющих последовательностей.

Перевод строки

Апостроф

Возврат каретки

Кавычки

Таблица 1.5. Управляющие символы

Вид

Наименование

Вид

Наименование

a

Звуковой сигнал

Горизонтальная табуляция



Возврат на шаг назад

v

Вертикальная табуляция

f

Перевод страницы

Обратная косая черта

Управляющей последовательностью называют определенный символ, предваряемый обратной косой чертой. Данная совокупность символов интерпретируется как одиночный символ и используется для представления кодов символов, не имеющих графического обозначения (например, символа перевода курсора на новую строку) или символов, имеющих специальное обозначение в символьных и строковых константах (например, апостроф). Рассмотрим управляющие символы (таблица 1.5):

Пример 3. Вывести сообщение о версии установленной операционной системы, текущую дату и время.

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

namespace ConsoleApplicationl

{

class Program

{

static void Main(string[] args)

{

// вывести версию операционной системы

OperatingSystem os = System.Environment.OSVersion;

Console.WriteLine("Platform: {0}",os.Platform);

System.Console.WriteLine("The current date and time is

" + System.DateTime.Now);

// дата и время System.Console.ReadLine();

}

}

}

Пример 4. Использование консольного ввода для вычисления значений функции

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

namespace lab0

{

class Program

{

static void Main(string[] args)

{

System.Console.WriteLine("The current date and time is

" + System.DateTime.Now);

double pi = 3.14159;

Console.WriteLine("Input x = ");

double x = Convert.ToDouble(Console.ReadLine());

double y = Math.Cos(pi * x)/(1 + x*x);

Console.WriteLine(" x = {0} y = {1} ",x,y);

Console.ReadKey();

}

}

}

2. Практическая часть

Задание 1. Напишите процедуру, выводящую сообщение о версии установленной операционной системы, текущей даты и времени (пример 3).

Задание 2. Составить процедуру для выполнения расчетов функции, значения задавать в диалоге с использованием метода Console.ReadLine() (пример 4) см. таблицу 1.6;

Таблица 1.6

Bap.

Функция

X

У

1

0,31

2,5

-0,0049

2

arcsin(cos px)

-0,75

1,2

-0,018

3

2,23

3,2

-0,018

4

-0,35

1,5

-1,318

5

0,40

1,5

0,016

6

2,26

1,2

0,235

7

2,09

1,7

0,920

8

-0,26

0,25

-0,0049

9

-0,61

0,5

-0,012

10

0,97

-0,5

-0,0024

11

2,81

1,25

0,253

12

2,03

1,7

1,043

13

1,97

0,7

0,0017

14

0,96

1,23

-0,528

15

1,32

-0,5

0,307

16

-0,71

0,7

0,0252

17

-0,73

1,53

-4,197

18

2,15

1,2

-1,485

19

0,62

1,1

-0,0082

20

2,07

1,35

-0,1699

21

0,69

1,15

0,0038

22

1,28

0,23

-0,0009

23

-0,63

1,35

6,0827

24

1,78

2,3

0,0064

25

0,23

1,4

-0,0021

26

-0,23

0,96

-1,0396

27

1,83

-0,5

0,2601

28

0,47

1,2

-0,0073

29

0,66

-0,5

-0,0001

30

0,71

1,4

-0,0012