Тема 1. Простые вычисления в С#. Структура программы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема 1. Простые вычисления в С#. Структура программы



Оглавление

Введение. 6

Тема 1. Простые вычисления в С#. Структура программы.. 7

Теоретический материал. 7

Практические задачи. 9

Вопросы для контроля знаний. 12

Задачи для самостоятельного решения. 12

Тема 2. 12

Оператор выбора в C#. 12

Теоретический материал. 12

Практические задачи. 14

Вопросы для контроля знаний. 15

Задачи для самостоятельного решения. 16

Тема 3. 16

Реализация циклических алгоритмов. 16

Теоретический материал. 16

Практические задачи. 17

Вопросы для контроля знаний. 22

Задачи для самостоятельной работы.. 22

Контрольная работа №1. 22

Тема 4. 24

Одномерные массивы.. 24

Теоретический материал. 24

Практические задачи. 26

Вопросы для контроля знаний. 29

Задачи для самостоятельного решения. 29

Тема 5. Двумерные массивы.. 30

Теоретический материал. 30

Практические задания. 31

Вопросы для контроля знаний. 33

Задачи для самостоятельного решения. 33

Тема 6. Сортировка массивов. 34

Теоретическая часть. 34

Практические задания. 36

Вопросы для контроля знаний. 39

Задания для самостоятельной работы.. 39

Контрольная работа №2 ………………………………………………………...38

Тема 7. Структуры.. 42

Теоретический материал. 42

Практические задачи. 43

Вопросы для контроля знаний. 47

Задачи для самостоятельного решения. 47

Тема 8. Строки. 48

Теоретический материал. 48

Практические задания. 49

Вопросы для контроля. 53

Задания для самостоятельной работы.. 53

Тема 9. Файлы.. 54

Теоретический материал. 54

Практические задания. 55

Вопросы для контроля знаний. 58

Задания для самостоятельной работы.. 58

Контрольная работа №3. 59

Тема 10. Создание приложений Windows.Forms. 61

Теоретический материал. 61

Практические задачи. 62

Вопросы для контроля знаний. 74

Задачи для самостоятельного решения. 74

Тема 11. Использование Windows Forms для решения задач. 75

Теоретический материал. 75

Практические задачи. 75

Вопросы для контроля знаний. 79

Задачи для самостоятельного решения. 79

Тема 12. Работа с файлами. Элемент MenuStrip. 80

Теоретический материал. 80

Способы использования элемента управления MenuStrip: 81

Практические задачи. 81

Вопросы для контроля знаний. 84

Задачи для самостоятельного решения. 84

Контрольная работа №4. 85

Итоговая работа. 86

Глоссарий. 88

Вопросы для отчета. 89

Задачи повышенной сложности. 90

Список литературы.. 92

Информационные сетевые ресурсы.. 92

 

 

Введение

В современном обществе предъявляются повышенные требования к качеству разработки программных продуктов. Приложения должны быть не только удовлетворять требованиям заказчика, но и быть удобными и понятными конкретному пользователю. Несмотря на некую абстрактность определения «Качество ПО», любой программный продукт должен обладать такими характеристиками, как функциональность, надежность, удобство использования, эффективность. При этом язык программирования является инструментом, с помощью которого программисты «выражают свои мысли» через конкретный язык программирования соответственно требованиям заказчика.

В данном пособии рассматриваются аспекты решения задач на языке С# –­ современном, объектно-ориентированном языке, который может применяться для разработки самых разнообразные приложений. Он появился в 2000году в компании Microsoft и являются частью технологии.NET. Изучая данный язык, можно освоить современные подходы к созданию программных систем и технологии организации работ в процессе разработке программного обеспечения.

Язык программирования С# изучается студентами в рамках дисциплины «Высокоуровневые методы информатики и программирования».

В результате изучения данной дисциплины студент должен з нать:

- типы данных и способы задания структур данных на одном из современных высокоуровневых языков программирования;

- способы реализации основных алгоритмических конструкций, функций, процедур и модулей на одном из современных высокоуровневых языков программирования;

- базовые алгоритмы и стратегии решения прикладных задач в области информационно-коммуникационных технологий;

уметь:

- анализировать предметную область и формализовать условия прикладных задач;

– разрабатывать эффективные алгоритмы и программы с использованием современных технологий программирования;

– решать типовые задачи проектирования и разработки всех видов интерфейса с использованием современных технологий программирования;

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

В учебно-методическом пособии рассматриваются основы языка С#: простые вычисления, массивы, строки, файлы и особенности разработки приложений в Windows.Forms. Каждая тема содержит краткий теоретический материал, задачи с решением, а также материалы для контроля знаний. Для дополнительной работы студентам предлагается перечень олимпиадные задач по программированию и тематика индивидуальных проектов.

Теоретический материал

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

Приведем основные типы данных в языке C# с указанием диапазонов и размеров. В таблице 1 представлены типы данных.

Таблица 1

Целые типы в C#

Тип Диапазон Размер
sbyte От -128 до 127 8-разрядное знаковое целое число
byte От 0 до 255 8-разрядное целое число без знака
char от U+0000 до U+ffff 16-разрядный символ Юникода
short От -32768 до 32767 16-разрядное знаковое целое число
ushort От 0 до 65535 16-разрядное целое число без знака
Целочисленное значение. От -2 147 483 648 до 2 147 483 647 32-разрядное знаковое целое число
uint От 0 до 4 294 967 295 32-разрядное целое число без знака
long От -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 64-разрядное целое число со знаком
ulong От 0 до 18 446 744 073 709 551 615 64-разрядное целое число без знака
float От ±1,5e−45 до ±3,4e38 7 знаков
double От ±5,0e−324 до ±1,7e308 15-16 знаков
decimal (От -7,9 x 1028 до 7,9 x 1028) / (100–28) 28–29 значащих цифр
bool Может принимать два значения true, false  

Основные операторы в C# представлены в таблице 2.

Таблица 2

Основные операторы языка C#

Оператор Описание
+ Сложение
Вычитание
* Умножение
/ Деление
– – Инкремент (уменьшение на единицу)
++ Декремент (увеличение на единицу)
< Меньше
> Больше
<= Меньше или равно
>= Больше или равно
== Равно
!= Не равно
& Логическое «И»
| Логическое «ИЛИ»

В некоторых случаях возникает необходимость задавать числа в программе случайным образом. Для этого в языке C# предусмотрен класс Random. Сначала нам необходимо создать объект для генерации случайных чисел:

Random rand = new Random();

После этого получаем случайное число:

r = rand.Next(a, b);

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

Кроме того, в С# используются унарные, бинарные и тернарные операторы. Унарный оператор работает только с одним операндом на входе, т.е. только с одной переменной, бинарный – с двумя
тернарный – с тремя.

int a = 0;

a++; // "++" - унарный оператор (унарный, работаем с одной переменной)

int b = 1;

int c = a + b // "+" - бинарный оператор сложения (бинарный, потому что использует значения двух переменных a и b)

Тернарный оператор (?) представляет собой условный оператор и часто используется вместо определенных видов конструкций if-then-else.

Общая форма этого оператора:

Выражение1? Выражение2: Выражение3;

Значение выражения? определяется следующим образом. На первом этапе вычисляется Выражение1. Если оно истинно, то вычисляется Выражение2, а полученный результат определяет значение всего выражения? в целом. Если же Выражение1 оказывается ложным, то вычисляется Выражение3, и его значение становится общим для всего выражения?

  int b, c; c = -10; b = c >= 0? c: c*c;

В данном случае число -10 является отрицательным, поэтому выполняется выражение 3. Результатом программы является число 100.

Рассмотрим подробнее работу с Visual Studio 2013.

1. Запускаем Visual Studio 2013 (рис. 1).

Рисунок 1. Ярлык Visual Studio

 

2. Создаем проект (рис. 2).

 

Рисунок 2. Создание проекта

 

3. Выбираем необходимый язык программирования и тип создаваемого приложения (рис. 3).

Рисунок 3. Выбор языка программирования и типа приложения

 

В результате откроется окно программы (рис. 4).

Рисунок 4. Окно программы

 

Курсор указывает положение основного программного кода.

Практические задачи

1. Объявить две переменных, одну – целого типа, другую – вещественного. Начальные значения переменных задать равными 100. Вывести исходные значения переменных. Вывести пустую строку. Разделить значения обеих переменных на 3, сохранить результат в те же переменные и вывести результаты.

Код программы представлен на рисунке 5, а результат выполнения программы ­ на рисунке 6.

Рисунок 5. Код программы

Рисунок 6. Результат выполнения программы

2.Дан прямоугольный треугольник с катетами а=5, b=7. Найти площадь треугольника, s. Используя теорему Пифагора, найти длину гипотенузы, с.

Код программы представлен на рисунке 7, а результат выполнения программы на рисунке 8.

Рисунок 7. Код программы

Рисунок 8. Результат выполнения программы

3. Найти произведение цифр целого трехзначного числа.

Код программы представлен на рисунке 9, а результат выполнения программы на рисунке 10.

Рисунок 9. Код программы

Рисунок 10. Результат выполнения программы

4. Задать три случайных числа в разных диапазонах. Вычислить их сумму.

Код программы представлен на рисунке 11, а результат выполнения программы на рисунке 12.

Рисунок 11. Код программы

Рисунок 12. Результат выполнения программы

Вопросы для контроля знаний

1. Перечислите основные типы данных в C#.

2. Какие функции выполняют операторы декремент и инкремент?

3. Как обозначается оператор не равно в C#?

4. Каким образом осуществляется генерация случайных чисел в C#?

Задачи для самостоятельного решения

1. Найти сумму чисел двузначного целого числа.

2. Задать случайным образом четыре целых числа. Найти сумму первых двух и разность вторых двух чисел.

3. Ввести два числа. Найти их сумму, разность, произведение и частное.

4. Дана сумма в рублях. Перевести данную сумму в чешскую крону.

5. Рассчитать месячные выплаты (m) и суммарную выплату (s) по кредиту. О кредите известно, что он составляет n рублей, берется на y лет, под p процентов.

6. По введенным пользователем координатам двух точек вывести уравнение прямой, проходящей через эти точки.

7. Определить стоимость набора конфет, в который входят:

«Красная шапочка» ­– 200 г.

«Алые паруса» – 150 г.

«Чародейка» –1 00 г.,

если известна стоимость этих конфет за 1 кг.

8. На борту самолета, летящего по маршруту Москва – Париж, находится Х пассажиров. Три четверти пассажиров имеют билеты второго класса, все остальные – первого. Билет первого класса стоит В рублей. Билет первого класса в 2,5 раза больше стоимости билета второго класса. Сколько денег получила авиакомпания при продажи билетов на этот рейс?

9. Хозяин хочет оклеить обоями комнату. Длина стен равна А метрам, а высота В метрам. Рулон обоев имеет длину L метров и ширину S метров. Сколько будут стоить обои для всей стены, сколько потребуется рулонов обоев, если стоимость одного рулона К рублей.

10. Даны два числа, если первое число больше второго – найти их сумму, иначе - разность. Затем увеличьте полученное значение на 1. Для решения данной задачи используйте унарный и тернарный операторы.

 

Тема 2. Оператор выбора в C#

Теоретический материал

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

if (условие)

оператор;

else

оператор;

В качестве условия могут выступать различные операторы.

Для оформления нескольких условий используются операторы логического выражения: ||, &&. Знак || – это логическое ИЛИ, то есть если хотя-бы одно из условии истинно, то действие выполняется.

Знак && – это логическое И, то есть если хотя-бы одно из условий ложно, программный код не выполняется.

Кроме того, в операторе if могут применяться сложные выражения и он может содержать операторы else, обеспечивая выполнение более сложных условий.

if (условие)

оператор;

else if (условие)

оператор;

else if (условие)

оператор;

else

оператор;

При этом количество else if не ограничено.

Несколько операторов заключаются в операторные скобки {}.

if (условие)

{

оператор 1;

оператор 2;

оператор 3;

}

else

оператор 4

Вторым оператором выбора в С# является оператор switch, который обеспечивает многонаправленное ветвление программы.

switch(выражение) {

case константа1:

последовательность операторов

break;

case константа2:

последовательность операторов

break;

case константаЗ:

последовательность операторов

break;

default:

последовательность операторов

break;

}

Практические задачи

1. Пользователь вводит с клавиатуры три различных числа. Найти максимальное число (рис. 13, 14).

Рисунок 13. Оператор выбора в C#

 

 

Рисунок 14. Результат выполнения программы

2. Найти стоимость покупки с учетом скидки, если известно, что скидка 2% предоставляется, если стоимость варьируется от 10000 до 20000 и 5% – если стоимость покупки больше 20000. В противном случае скидка не предоставляется (рис. 15, 16).

Рисунок 15. Реализация оператора выбора else if

 

Рисунок 16. Результат выполнения программы

 

3. Написать программу, вычисляющую стоимость покупки с учетом почтового перевода в зависимости от кода города. (Москва(905) – 0 руб. Ростов(194) – 200 руб. Краснодар(491) – 250 руб. Киров(800) – 260 руб. (рис. 17, 18).

Рисунок 17. Реализация оператора switch

 

Рисунок 18. Результат выполнения программы

Вопросы для контроля знаний

1. Что такое полное и неполное ветвление?

2. Изобразите графически оператор выбора.

3. Что такое операторы отношения и как они обозначаются в языке С#?

4. Есть ли различие между операторами логического выражения: ||, && и |, &? В чем это различие выражается? Приведите примеры.

5. Приведите примеры реализации оператора выбора для решения задач Вашей профессиональной деятельности.

6. Для решения каких задач используется оператор switch? Приведите примеры.

Задачи для самостоятельного решения

1. Вычислите значение функции

2. В финал конкурса лучшего по профессии «Специалист электронного офиса» вышли трое: Иванов А.А., Петров С.С., Сидоров М.Л. Соревнования проходили в три тура. Иванов в первом туре набрал M1 баллов, во втором – N1, в третьем – P1. Петров – соответственно M2, N2, P2. Сидоров – M3, N3, P3. Составьте программу, определяющую, сколько баллов набрал победитель.

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

4. Пользователь вводит денежную сумму k от 1 до 99 рублей. Составьте программу, которая, в зависимости от значения k (от 1 до 99), введенного вами, напечатает фразу: «k рублей» «k рубль», «k рубля».

5. Напишите программу, которая анализирует человека по возрасту и относит к одной из четырех групп: дошкольник, ученик, работник, пенсионер. Возраст человека вводится с клавиатуры.

6. Определить попадает ли точка с координатами x,y в заданную область (рис. 19).

Рисунок 19. Заданная область

7. Написать программу, в которой пользователю по введенному году рождения выводится знак зодиака по восточному календарю.

8. Придумать и реализовать задачу, в которой используется оператор switch.

Теоретический материал

Цикл – алгоритмическая конструкция, которая предполагает неоднократное выполнение одних и тех же действий.

Выделяют следующие виды циклов:

- цикл с параметром;

- цикл с предусловием (цикл пока);

- цикл с постусловием (цикл до).

Рассмотрим способы задания каждого вида циклов в С#.

Цикл с параметром (for)

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

for (int i = <начальная граница интервала>; i <= <конечная граница интервала>; i++)

{

<Операторы>;

 

}

Цикл с предусловием

Оператор while выполняет оператор или блок операторов, пока условие не примет ложное значение.

while (условие)

{

<операторы>;

}

Цикл с постусловием

Оператор do повторно выполняет оператор или блок операторов, пока определенное выражение не примет ложное значение. Тело цикла должно быть заключено в фигурные скобки, {}, если оно не состоит из одной инструкции. В этом случае фигурные скобки необязательны.

do

{

<операторы>;

} while (условие);

Цикл foreach

Цикл foreach служит для циклического обращения к элементам, представляющим собой группу объектов. Ниже приведена общая форма оператора цикла foreach:

foreach (тип имя_переменной_цикла in коллекция)

оператор;

 

Практические задачи

1. Вычислить сумму четных чисел от 1 до 100. Код программы представлен на рисунке 20, а результат выполнения программы на рисунке 21.

Рисунок 20. Алгоритм решения задачи  
Рисунок 21. Результат выполнения программы

 

2. Вычислить n!(рис. 22, 23).

Примечание: n! – факториал числа n, то есть произведение всех натуральных чисел от 1 до n.

Рисунок 22. Алгоритм решения задачи   Рисунок 23. Результат выполнения программы

 

3. Вычислить значение суммы членов бесконечного ряда (рис. 24, 25).

при x = 0.1 с точностью до члена ряда с модулем, меньшим E= 0.00001.

 
Рисунок 24. Алгоритм решения задачи  

Рисунок 25. Код выполнения программы

4. Вычислить сумму чисел от -10 до 10 с шагом 0,2 (рис. 26, 27).

Рисунок 26. Алгоритм решения задачи

Рисунок 27. Результат выполнения программы

5. В первый день легкоатлет пробегает расстояние равное 1000 м. Каждый последующий день расстояние, пробегаемое спортсменом увеличивается на 10%. К какому дню легкоатлет пробежит суммарное расстояние не менее 10000 м. (рис. 28, 29).

Рисунок 28. Алгоритм решения задачи

Рисунок 29. Результат выполнения программы

6. Вычислять сумму чисел, вводимых с клавиатуры до тех пор, пока не будет введен ноль (рис. 30, 31).

  Рисунок 30. Код программы  

Рисунок 31. Результат выполнения программы

Вопросы для контроля знаний

1. В каких случаях применяется алгоритмическая конструкция «цикл»?

2. В каких случаях применяется цикл с параметром?

3. Каким образом задается цикл с параметром?

4. В каких случаях применяется цикл с предусловием?

5. Каким образом задается цикл с предусловием?

6. В каких случаях используется цикл с постусловием?

7. Каким образом задается цикл с постусловием?

Задачи для самостоятельной работы

1. Вывести кубы чисел от 1 до 10.

2. Составить программу вычисления значения выражения y=1+1/2+1/3+... +1/20.

3. Составить таблицу значений функции у = sin х отрезке [0;3.14] с шагом 0,1.

4. Сумма S рублей положена в сбербанк, при этом ежегодный прирост составляет Р% и считается непрерывным. Определить, через сколько лет первоначальная сумма увеличится в N раз

5. Составить программу планирования закупки товара в магазине на сумму, не превышающую заданную величину.

6. В 1993 году численность населения города составляла 50000 человек. Вывести в виде таблицы значение численности населения города вплоть до 2016 года, при условии, что ежегодный прирост населения составлял 5%.

Контрольная работа №1

Вариант 1

1) Даны целые числа a, b, c. Если a ≤ b ≤ c, то все числа заменить их квадратами.

2) Найти произведение чисел от 1 до 10 с шагом 0,5.

3) Пользователь вводит числа a и b. Написать калькулятор, который вычисляет сумму, разность и произведение данных чисел.

Вариант 2

1) Создать форму для нахождения площади треугольника, квадрата и прямоугольника.

2) Найти произведение четных чисел от 20 до 30.

3) Перевести n радиан в градусы.

Вариант 3

1) С помощью оператора варианта решите следующую задачу. Пользователь вводит символ и ему выдается сообщение: «это русская буква», «это английская буква».

2) Найти количество четных чисел в диапазоне от 0 до 40.

3) Найти площадь ромба, если известны длина стороны и угол между ними.

Вариант 4

1) Требуется написать программу, определяющую по координатам точки, в какой четверти она находится.

2) Найти сумму

3) Найти площадь треугольника по формуле Герона, если известны длины трех его сторон.

Вариант 5

1) Дана прямоугольная (декартова) система координат, в которой две перпендикулярные оси делят плоскость на четверти. В первую четверть попадают точки, у которых обе координаты (x и y) больше нуля. Во вторую: x < 0, y > 0; третью: x < 0, y < 0; четвертую: x > 0, y < 0.

2) Найти сумму

3) Найти остаток от деления на 10 числа, введенного пользователем с клавиатуры.

Вариант 6

1) Имеется прямоугольник со сторонами a и b. Определить попадает ли туда точки с координатами x1, у1 и x2, y2 соответственно.

2) Найти сумму

3) Найти сумму четных чисел четырехзначного числа.

Вариант 7

1) Создать форму для нахождения длины гипотенузы прямоугольного треугольника и для расчета его площади.

2) В диапазоне от 0 до 10 вывести все числа кратные 3.

3) Выделить первую и третью цифру в трехзначном числе.

Вариант 8

1) Создать калькулятор для перевода величины угла из радиан в градусы и для расчета синуса, косинуса и тангенса угла.

2) Найти сумму n2+(n+1)2+(n+2)2+(n+3)2+…..+(n+n)2

3) Перевести n рублей в евро, Йены и кроны соответственно курсу на сегодняшний день.

Вариант 9

1) По коду города вывести его название (например 3433 - Екатеринбург).

2) Найти сумму натуральных четных чисел от 0 до n.

3) Вычислить площадь круга, если известен его диаметр.

Вариант 10

1) Найти значение выражения

2) Найти сумму n натуральных чисел, вводимых с клавиатуры.

3) Выделить каждую цифру в двухзначном числе. Число вводится с клавиатуры.

Вариант 11

1) Определите, можно ли по трем сторонам построить треугольник.

2) Вывести значения квадратного корня n натуральных чисел, вводимых с клавиатуры.

3) Найти значение выражения y(x)=sin(x)+cos(x)-10. Значение x вводится с клавиатуры.

Вариант12

1) Найдите максимальное из четырех чисел.

2) Вывести таблицу кубов n натуральных чисел.

3) Найти площадь треугольника, если известны длины двух его сторон и угол между ними.

Тема 4. Одномерные массивы

Теоретический материал

Массив – это множество значений, которыми можно оперировать как группой. Каждый элемент или значение в массиве является отдельной переменной. С ней можно обращаться, как с обычной переменной, но так как эти переменные собраны в массив, их также можно трактовать как общность.

Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива).

Порядковый номер элемента массива 0 1 2 3 4
Элемент массива 1 2 15 -7 8

Число индексов характеризует размерность массива. Каждый индекс изменяется в некотором диапазоне [a,b]. В рассматриваемом примере - диапазон [0,4]. Диапазон [a,b] называется граничной парой, a – нижней границей, b – верхней границей индекса. Границы массива в С# строго соблюдаются. Если границы массива не достигаются или же превышаются, то возникает ошибка при выполнении.

В языке C#, как и во многих других языках, индексы задаются целочисленным типом. При объявлении массива границы задаются выражениями. Если все границы заданы константными выражениями, то число элементов массива известно в момент его объявления и ему может быть выделена память еще на этапе трансляции. Такие массивы называются статическими. Если же выражения, задающие границы, зависят от переменных, то такие массивы называются динамическими, поскольку память им может быть отведена только динамически в процессе выполнения программы, когда становятся известными значения соответствующих переменных. Массиву, как правило, выделяется непрерывная область памяти.

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

Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным. Количество индексов элементов массива определяет размерность массива. По этом признаку массивы делятся на одномерные (линейные), двумерные, трёхмерные и т.д.

В С# массивы реализованы в виде объектов, следовательно, необходимо объявить переменную, которая может обращаться к массиву. Затем нужно создать экземпляр массива, используя оператор new. Так, для объявления одномерного массива обычно применяется следующая общая форма:

тип[] имя_массива = new типэлементов[размер]

Тип определяет тип составляющих элементов массив, размер определяет число элементов массива.

Например:

int[] А = new int[10];

 

В данном случае создаем массив типа int, который составляется из десяти элементов и связывается с переменной ссылки на массив, именуемой А. В ней хранится ссылка на область памяти, выделяемой для массива оператором new. Эта область памяти должна быть достаточно большой, чтобы в ней могли храниться десять элементов массива типа int.

Второй способ задания массива:

double[] В = {1, 2, 5, 1.36, 4.5};

В этом случае задается массив В из пяти вещественных чисел.

Реализация в С# массивов в виде объектов позволяет использовать свойство Length, содержащее число элементов, из которых может состоять массив. Таком образом, у каждого массива имеется специальное свойство, позволяющее определить его длину.

Кроме того, при работе с массивами мы можем использовать оператор цикла foreach. Когда цикл начинается, первый элемент массива выбирается и присваивается переменной цикла. На каждом последующем шаге итерации выбирается следующий элемент массива, который сохраняется в переменной цикла. Цикл завершается, когда все элементы массива окажутся выбранными. Следовательно, оператор foreach циклически опрашивает массив по отдельным его элементам от начала до конца. При этом переменная цикла в операторе foreach используется только для чтения. Это означает, что, присваивая этой переменной новое значение, нельзя изменить содержимое массива.

Над элементами массивами чаще всего выполняются такие действия, как

1) поиск значений;

2) сортировка элементов в порядке возрастания или убывания;

3) подсчет элементов в массиве, удовлетворяющих заданному условию.

Сумму элементов массива можно подсчитать по формуле S=S+A[i] первоначально задав S =0.

Количество элементов массива можно подсчитать по формуле К = К +1, первоначально задав К =0.

Произведение элементов массива можно подсчитать по формуле , первоначально задав P = 1.

Практические задачи

1. Задать массив из n элементов. Пользователь вводит элементы с клавиатуры (рис. 32-36).

Рисунок 32. Ввод элементов массива с клавиатуры и вывод их на экран

 

Найти сумму, произведение и количество четных элементов массива

Рисунок 33. Нахождение суммы, произведения и количества

 

Найти максимальный элемент массива

Рисунок 34. Поиск максимума

 

Заменить все элементы в диапазоне от 5 до 8 на ноль и вывести новый массив.

Рисунок 35. Замена элементов

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

 

2. Задать массив случайных чисел из 10 элементов в диапазоне от 0 до 10 (рис. 37-39).

 

Рисунок 37. Двумерный массив. Ввод и вывод элементов

 

Сформировать из него новый массив, элементы которого кратны 3.

Рисунок 38. Создание нового массива

 

Рисунок 39. Результат выполнения программы

 

3. Задать массив и найти сумму пяти элементов массива. Для решения данной задачи воспользоваться командами break и foreach (рис. 40-41).

 

Рисунок 40. Использование команд break, foreach

 

Рисунок 41. Результат выполнения программы

Вопросы для контроля знаний

1. Что такое массив? Чем одномерный массив отличается от двумерного?

2. Какие операции можно выполнять над элементами массива. Приведите примеры.

3. В чем особенность массивов в С#?

4. Что такое размерность массива?

5. Как найти сумму и произведение элементов массива?

6. В чем различие между статическими и динамическими массивами?

7. Какие преимущества в C# дает представление массива виде объектов?

Задачи для самостоятельного решения

1. Дан массив целых положительных чисел. Найти произведение только тех чисел, которые больше заданного числа М. Если таких нет, то выдать сообщение об этом.

2. Дан целочисленный массив с количеством элементов n. «Сожмите» массив, выбросив из него каждый второй элемент.

3. Задан массив с количеством элементов N. Сформируйте два массива: в первый включите элементы исходного массива с чётными номерами, а во второй – с нечётными.

4. В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования.

5. Найти сумму максимального и минимального элементов массива. Элементы заданы случайным образом.

6. Найти среднее арифметическое четных элементов массива.

7. Задать массив случайных чисел. Найти количество элементов больше 5, но меньше 10.

Тема 5. Двумерные массивы

Теоретический материал

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

В следующей строке кода объявляется двумерный массив integer размерами 10×20.

int[,] a = new int[10, 20];

Обратите особое внимание на объявление этого массива. Как видите, обе его разме­рности разделяются запятой. В первой части этого объявления синтаксическое обозначение

[,]

означает, что создается двумерный массив.

Для доступа к элементу двумерного массива следует указать оба индекса, разделив их запятой. Например, в следующей строке кода элементу массива a, находящемуся на пересечении 3 строки и 5 столбца, присваивается значение 10.

a[3, 5] = 10;

Для матриц с одинаковыми размерностями необходимо ввести понятие главной и побочной диагонали.

Для главной диагонали выполняется следующее соотношение:

i = j

Рисунок 42. Главная диагональ

 

Для побочной диагонали выполняется следующее соотношение:

i = n – j +1

Рисунок 43. Побочная диагональ

n – размерность массива;

i, j – индексы элементов массива по строкам и столбцам соответственно.

Практические задания



Поделиться:


Последнее изменение этой страницы: 2017-01-26; просмотров: 3687; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.29.145 (0.323 с.)