Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика и программирование - часть 1

.pdf
Скачиваний:
75
Добавлен:
13.02.2015
Размер:
1.12 Mб
Скачать

МИНОБРНАУКИ РОССИИ Федеральное государственное автономное образовательное учреждение

высшего профессионального образования

«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

Д.В. Ковалев

ПРОГРАММИРОВАНИЕ

Часть 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.

В то случае, когда необходимо выполнить несколько операторов применяют операторные скобки: