Информатика и программирование - часть 1
.pdfМИНОБРНАУКИ РОССИИ Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
Д.В. Ковалев
ПРОГРАММИРОВАНИЕ
Часть 1.
(учебно-методическое пособие для студентов экономического факультета)
Ростов-на-Дону
2011-2012 гг.
НАУЧНЫЙ РЕДАКТОР: Д.Э.Н., ПРОФ. МАТВЕЕВА Л.Г.
СОСТАВИТЕЛИ: ПРЕПОДАВАТЕЛЬ КОВАЛЕВ Д.В.
Печатается по решению кафедры прикладной информатики в экономике (протокол №10
от 22.03.2012 года).
АННОТАЦИЯ Материал рассчитан на пользователей различных уровней подготовки, работающих
с системой разработки приложений Visual Studio 2010. В систематизированном виде изложены методы разработки программного обеспечения с применением языка программирования C#.
Для студентов экономического факультета специальностей «Прикладная информатика в экономике» и «Бизнес-информатика».
Оглавление |
|
Простые типы данных. ...................................................................................................... |
4 |
Арифметические операции .............................................................................................. |
5 |
Стандартные математические функции. ........................................................................ |
6 |
Логические операторы. .................................................................................................... |
6 |
Программы с линейной структурой................................................................................. |
6 |
Операторы ввода............................................................................................................... |
7 |
Задачи для самостоятельной работы .............................................................................. |
7 |
Условный оператор. Оператор многозначного ветвления ............................................ |
9 |
Оператор if......................................................................................................................... |
9 |
Оператор switch............................................................................................................... |
11 |
Задачи для самостоятельной работы ............................................................................ |
12 |
Операторы повтора.......................................................................................................... |
15 |
Оператор for .................................................................................................................... |
15 |
Циклы While .................................................................................................................... |
16 |
Задачи для самостоятельной работы ............................................................................ |
17 |
Функции и процедуры..................................................................................................... |
18 |
Рекурсивные функции .................................................................................................... |
20 |
Использование генератора случайных чисел............................................................... |
21 |
Задачи для самостоятельной работы ............................................................................ |
21 |
Массивы............................................................................................................................ |
23 |
Динамические массивы .................................................................................................. |
25 |
Многомерные массивы................................................................................................... |
25 |
Список задач.................................................................................................................... |
27 |
Символьный тип данных................................................................................................. |
31 |
Статические методы и свойства класса Char ............................................................... |
31 |
Объявление строк. Конструкторы класса string........................................................... |
32 |
Операции над строками.................................................................................................. |
33 |
Строковые константы..................................................................................................... |
34 |
Статические свойства и методы класса String ............................................................. |
35 |
Задачи для самостоятельной работы ............................................................................ |
35 |
Список литературы.......................................................................................................... |
38 |
Простые типы данных.
С# является жестко типизированным языком. При его использовании вы должны объявлять тип каждого объекта, который создаете (например, целые числа, числа с плавающей точкой, строки, окна, кнопки, и т. д.), и компилятор поможет избежать ошибок, связанных с присвоением переменным значений только того типа, который им соответствует. Тип объекта указывает компилятору размер объекта (например, объект типа int занимает в памяти 4 байта) и его свойства (например, форма может быть видима и невидима, и т.д.). Подобно языкам C++ и Java, C# подразделяет типы на два вида:
встроенные типы, которые определены в языке, и определяемые пользователем типы,
которые выбирает программист.
С# также подразделяет типы на две другие категории: размерные и ссылочные.
Основное различие между ними — это способ, которым их значения сохраняются в памяти. Размерные типы сохраняют свое фактическое значение в стеке. Ссылочные типы хранят в стеке лишь адрес объекта, а сам объект сохраняется в куче. Куча — основная память программ, доступ к которой осуществляется на много медленнее чем к стеку. Если вы работаете с очень большими объектами, то сохранение их в куче имеет много преимуществ.
Язык С# предоставляет программисту широкий спектр встроенных типов, которые соответствуют CLS (Common Language Specification) и отображаются на основные типы платформы .NET. Это гарантирует, что объекты, созданные на С#, могут успешно использоваться наряду с объектами, созданными на любом другом языке программирования, поддерживающем .NET CLS (например, VB.NET).
Каждый тип имеет строго заданный для него размер, который не может изменяться.
В отличие от языка C++, в С# тип int всегда занимает 4 байта, потому что отображается к
Int32 в .NET CLS. Представленная ниже таблица содержит список всех встроенных типов,
предлагаемых С#.
|
Краткое |
|
Тип |
|
Размер |
|
Диапазон |
|
|
|
|
|
|
|
|||||
|
имя |
|
|
|
(бит) |
|
|
|
|
|
byte |
|
Целое число без знака |
|
8 |
|
От 0 до 255 |
|
|
sbyte |
|
Целое число со знаком |
8 |
|
От -128 до 127 |
|
|||
|
int |
|
Целое число со знаком |
|
32 |
|
От |
-2 147 483 648 |
до |
|
|
|
|
|
|
|
2 147 483 647 |
|
|
uint |
|
Целое число без знака |
32 |
|
От 0 до 4 294 967 295 |
|
|||
|
short |
|
Целое число со знаком |
|
16 |
|
От -32 768 до 32 767 |
|
|
ushort |
|
Целое число без знака |
16 |
|
От 0 до 65 535 |
|
|||
|
long |
|
Целое число со знаком |
|
64 |
|
От -922 337 203 685 477 508 |
до |
|
|
|
|
|
|
|
|
922 337 203 685 477 507 |
|
|
ulong |
|
Целое число без знака |
64 |
|
От |
0 |
до |
||
|
|
|
|
|
|
18 446 744 073 709 551 615 |
|
float |
|
Число |
одинарной |
точности |
с |
|
32 |
От -3,402 823e38 до 3,402 823e38 |
|
|
|
плавающей запятой |
|
|
|
|
|
|
|
double |
|
Число двойной точности с плавающей |
64 |
От -1,797 693 134 862 32e308 до |
|
||||
|
|
запятой |
|
|
|
|
|
1,797 693 134 862 32e308 |
|
char |
|
Одиночный знак Юникода |
|
|
16 |
Знаки Юникода в тексте |
|
||
bool |
|
Логический тип |
|
|
|
8 |
true или false |
|
|
object |
|
Базовый тип для всех остальных типов |
|
|
|
|
|
||
string |
|
Последовательность знаков |
|
|
|
|
|
||
decimal |
|
Точный дробный или целочисленный, |
|
128 |
От ±1,0 Ч 10e−28 до ±7,9 Ч 10e28 |
|
|||
|
|
который |
может |
представлять |
|
|
|
|
десятичные числа с 29 значащими цифрами.
Арифметические операции
Различают 5 операций, выполняющих арифметические действия над числами.
Выполнение первых трёх операций очевидно и не требует пояснения. Операция деления зависит от типа данных. Если тип данных, участвующих в операции,
вещественный, то результат получится по правилам деления с целой и дробной частью.
Если тип целый, то результатом деления также является целое число.
Деление по модулю возможно только для целых чисел. Оно обеспечивает получение остатка от деления двух целых чисел. Например, в результате операции 15 % 4
получится число 3. Таким образом, пара операций / и % обеспечивает для целых чисел специфическую возможность: можно получить и целую часть, и остаток от деления.
Арифметические операции можно объединять вместе с операцией присваивания,
записывая две операции в виде одной. Это так называемая сокращённая форма записи.
Например:
a = a + b; a+=b;
Карифметическим операциям относятся две специфические операции – инкремент
идекремент. Эти операции позволяют изменять значения переменных на 1. Инкремент –
увеличивает, обозначается знаком ++. Декремент – уменьшает, обозначается знаком --.
a++; b--;
Стандартные математические функции.
Math.Abs(x) |
Модуль числа |
Math.Exp(x) |
Вычисляется е в степени х |
Math.Floor(x) |
Возвращает наибольшее целое число, которое меньше или равно |
|
указанному числу. |
Math.Log(x) |
Натуральный логарифм числа х |
Math.Log10(x) |
Десятичный логарифм числа х. |
Math.Pow(B,E) |
Возводит B в степень E |
Math.Round(x) |
Округляет значение до ближайшего целого или указанного |
|
количества десятичных знаков |
Math.Truncate(x) |
Вычисляет целую часть числа |
Math.Ceiling(x) |
Возвращает наименьшее целое число, которое больше или равно |
|
заданному числу. |
Math.PI |
Число 3,1415... |
Math.E |
Число 2,7128... |
Math.Sin(x) |
Синус в радианах |
Math.Cos(x) |
Косинус в радианах |
Math.Atan(x) |
Арктангенс в радианах |
Math.Sqrt(x) |
Квадратный корень числа х. |
Логические операторы.
Логические операторы применимы только к значениям типа Boolean. Их значением
так же являются величины типа Boolean.
Операция |
|
|
Оператор |
Пример использования |
Отрицание |
|
|
! |
A = !B; |
Конъюнкция (логическое И, логическое |
& |
A = B&C; |
||
умножение). |
|
|
&& |
X= Z&&Y; |
Дизъюнкция |
(логическое |
ИЛИ, |
| |
A = B | C |
логическое сложение). |
|
|| |
A = B || C |
Операторы && и || отличаются от операторов & и | вычислением второго операнда по необходимости.
Программы с линейной структурой.
Программы с линейной структурой являются простейшими и используются, как правило, для реализации простых вычислений по формуле. В программах с линейной структурой инструкции выполняются последовательно.
Оператор_1; Оператор_2;
…
Оператор_N;
Состав операторов языка C#, их синтаксис и семантика унаследованы от языка
С++.
С помощью фигурных скобок (операторных скобок) несколько операторов языка
(возможно, перемежаемых объявлениями) можно объединить в единую синтаксическую
конструкцию, называемую блоком или составным оператором:
{
оператор_1;
...
оператор_n;
}
Операторы ввода
Для того чтобы получить данные, вводимые пользователем вручную (то есть с
консоли), применяются команды
<строковая переменная>=Console.ReadLine()
Для того чтобы преобразовать к нужному типу данных используется объект
Convert
<переменная целого типа> = Convert.ToInt32(<строковая переменная>); <переменная действ типа> = Convert.ToDouble(<строковая переменная>); <переменная логического типа> = Convert.ToBoolean(<строковая переменная>); <переменная целого типа> = Convert.ToByte(<строковая переменная>); <переменная символьного типа> = Convert.ToChar(<строковая переменная>); <переменная целого типа> = Convert.ToInt64(<строковая переменная>);
Пример
Int32 x; Double y; string s; s = Console.ReadLine();
x = Convert.ToInt32(s);
//без промежуточной строковой переменной y = Convert.ToDouble(Console.ReadLine());
Типы вводимых значений должны совпадать с типами указанных переменных,
иначе возникает ошибка. Поэтому нужно внимательно следить за правильностью
вводимых данных.
Для того, чтобы обеспечить ожидание ввода любой клавиши в конце программы
используют
Console.ReadKey();
Задачи для самостоятельной работы
Дан радиус окружности, подсчитать длину окружности.
Дан радиус окружности, подсчитать площадь круга.
Дан прямоугольный треугольник с катетами a и b. Найти гипотенузу c.
Дана сторона равностороннего треугольника. Найти площадь этого треугольника.
Дан произвольный треугольник. Известны стороны a и b и угол между ними. Найти третью сторону c.
Дан произвольный треугольник со сторонами a, b и c. Найти площадь треугольника.
Вычислить объём шара радиуса R.
Найти среднее арифметическое и среднее геометрическое трёх заданных чисел.
Найти расстояние между двумя точками с данными координатами.
По ребру найти площадь грани, площадь боковой поверхности и объём куба.
Вычислить периметр и площадь правильного 10-угольника, вписанного в окружность заданного радиуса.
Для заданного целого числа а напечатать следующую таблицу: a
a3 a6 a6 a3 a
Даны два действительных числа a и b. Получить их сумму, разность и произведение.
Даны два действительных положительных числа. Найти среднеарифметическое и среднегеометрическое этих чисел (или их модулей).
Даны катеты прямоугольного треугольника. Найти его гипотенузу и площадь.
Смешано V1 литров воды температуры t1 и V2 литров воды температуры t2. Найти объём и температуру образовавшейся смеси.
Определить периметр правильного n-угольника, описанного около окружности радиуса r.
Даны гипотенуза и катет прямоугольного треугольника. Найти катет и радиус вписанной окружности.
Найти сумму членов арифметической прогрессии по данным значениям: a, d, n.
Треугольник задан длинами сторон. Найти:
длины высот;
длины биссектрис;
длины медиан;
радиусы вписанной и описанной окружностей.
Вычислить расстояние между двумя точками с координатами x1,y1 и x2,y2.
Треугольник задан координатами своих вершин. Найти периметр и площадь треугольника.
Дано действительное число х. Получить целую часть х; затем число х, округлённое до ближайшего целого; затем число без дробных цифр.
Даны действительные числа x,y. Вычислить расстояние от точки плоскости с координатами (x,y) до границы квадрата с вершинами:
(-0.5,-0.5),(-0.5,0.5),(0.5,0.5),(0.5,-0.5);
(0,0),(0,1),(1,1),(1,0).
Имеется в виду минимум расстояний от данной точки до точек квадрата.
Даны целые (либо вещественные) числа x1, y1, x2, y2, x3, y3. Известно, что точки с вершинами (x1, y1), (x2, y2),(x3, y3) являются тремя вершинами некоторого прямоугольника. Найти координаты четвёртой вершины.
Условный оператор. Оператор многозначного ветвления
При описании разветвляющихся процессов обычно используют понятие условного и безусловного перехода. Если в программе требуется нарушить порядок выполнения операторов без предварительных проверок каких-либо условий, переход называется безусловным.
Однако современный стиль программирования предполагает как можно более редкое применение безусловного перехода, а еще лучше - полный отказ от него.
Условный оператор IF предназначен для изменения порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Он предписывает выполнять некоторое действие только в том случае, когда выполняется заданное условие.
Это условие записывается в виде логического выражения, а действие, которое нужно выполнить, задается в виде последовательности операторов.
Как в С++ и других языках программирования, в языке C# для выбора одной из нескольких возможностей используются две конструкции - if и switch.
Оператор if
Условный оператор if используется для разветвления процесса вычислений на два направления. Структурная схема оператора приведена ниже:
Начало
Начало
Выражение
Истина |
Выражение |
Ложь |
Истина
Оператор 2
Оператор 1
Оператор 1
Ложь
Конец
Конец
Формат оператора:
if (логическое_выражение) оператор_1; [else оператор_2]
Сначала вычисляется логическое выражение. Если оно имеет значение true,
выполняется первый оператор, иначе — второй. После этого управление передается на оператор, следующий за условным. Ветвь else может отсутствовать.
Какие особенности синтаксиса следует отметить? Выражения if должны заключаться в круглые скобки и быть булевого типа. Точнее, выражения должны давать значения true или false. По правилам синтаксиса языка C#, then-ветвь оператора следует сразу за круглой скобкой без ключевого слова then, типичного для большинства языков программирования. Каждый из операторов может быть блоком - в частности, if-
оператором. Поэтому возможна и такая конструкция:
if(выражение1) if(выражение2) if(выражение3) ...
Ветви else и if, позволяющие организовать выбор из многих возможностей, могут отсутствовать. Может быть опущена и заключительная else-ветвь. В этом случае краткая форма оператора if задает альтернативный выбор - делать или не делать - выполнять или не выполнять then-оператор.
Семантика оператора if проста и понятна. Выражения if проверяются в порядке их написания. Как только получено значение true, проверка прекращается и выполняется оператор (это может быть блок), который следует за выражением, получившим значение true. С завершением этого оператора завершается и оператор if. Ветвь else, если она есть,
относится к ближайшему открытому if.
В то случае, когда необходимо выполнить несколько операторов применяют операторные скобки: