VIP STUDY сегодня – это учебный центр, репетиторы которого проводят консультации по написанию самостоятельных работ, таких как:
  • Дипломы
  • Курсовые
  • Рефераты
  • Отчеты по практике
  • Диссертации
Узнать цену

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

Внимание: Акция! Курсовая работа, Реферат или Отчет по практике за 10 рублей!
Только в текущем месяце у Вас есть шанс получить курсовую работу, реферат или отчет по практике за 10 рублей по вашим требованиям и методичке!
Все, что необходимо - это закрепить заявку (внести аванс) за консультацию по написанию предстоящей дипломной работе, ВКР или магистерской диссертации.
Нет ничего страшного, если дипломная работа, магистерская диссертация или диплом ВКР будет защищаться не в этом году.
Вы можете оформить заявку в рамках акции уже сегодня и как только получите задание на дипломную работу, сообщить нам об этом. Оплаченная сумма будет заморожена на необходимый вам период.
В бланке заказа в поле "Дополнительная информация" следует указать "Курсовая, реферат или отчет за 10 рублей"
Не упустите шанс сэкономить несколько тысяч рублей!
Подробности у специалистов нашей компании.
Код работы: K012029
Тема: Разработка программного обеспечения в среде C изучение программных языков и навыков программирования
Содержание
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ОБРАЗОВАНИЯ

«КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

ОТДЕЛЕНИЕ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ЭНЕРГЕТИЧЕСКИХ СИСТЕМ



Кафедра автоматизации и управления

Специальность: 15.03.04 Автоматизация технологически процессов и производств



Курсовая работа

Разработка программного обеспечения в среде C#





Студент 2 курса

Группа 2151113

«__»________2017г.                      _____________(Д. В. Васильев)



Научный руководитель

к.т.н., доцент

«__»________2017г.                               ______________(И.П.Балабанов)



Рецензент

к.т.н., доцент

	«__»______ 2017 г.                          ______________(Р.Р.Зиятдинов) 



Набережные Челны

2017г.

Министерство образования и науки РФ Набережночелнинский институт (филиал) Федерального Государственного автономного образовательного учреждения высшего  «КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

Согласовано                                                                  Утверждаю

Руководитель курсового                                              Зав. кафедрой АиУ 

проекта

Балабанов И.П./_____Симонова Л.А./_____

          «    »________2017 г.                                                    «    »________2017 г.



Факультетинформационных технологий и энергетических систем

Кафедраавтоматизации и управления

Специальность15.03.04 автоматизация технологических процессов и производств 



ТЕХНИЧЕСКОЕ ЗАДАНИЕ

На курсовую работу



Студенту Набиуллину Ильназу Ильгизовичугруппы2151113



1. НАИМЕНОВАНИЕ И ОБЛАСТЬ ПРИМЕНЕНИЯ



1.1.  Наименование: разработка программного обеспечения в среде C#

1.2. Краткая характеристика области применения: предназначена для решения широкого спектра задач, и в первую очередь- в быстро развивающейся области создания приложений.



2. ЦЕЛИ И НАЗНАЧЕНИЕ РАЗРАБОТКИ



2.1. Цель разработки: изучение программных языков и навыков программирования

2.2.Назначение разработки:развитие пространственного мышления и внимательности



3. ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ

3.1. Задание: Показать график перемещения по оси Y и узнать максимальное и минимальное перемещение через txt-файл.

3.2. Системное требование:ОС семейства Windows 9х/NT/2000/XP/Server 2003/Server2008/Vista/7. 

3.3.Требования к программному обеспечению среды разработки:бесплатная среда программирования; язык программирования высокого уровня;используется стандартной компоненты ОС.





Принял к исполнению Набиуллин И.И. студент гр. 2151113 __________ «___»________20__г.

 (подпись)




Календарный план

№

Наименование этапов курсовой работы

Срок

выполнения этапов работы

Примечание

		1

Выбор программного обеспечения.

с 17.02.2017 по 20.03.2017



2

Проработка технического задания, корректировка календарного плана.

с 20.03.2017 по 27.03.2017



3

Ознакомление с заданием. Разбор задания.

с 27.03.2017 по04.04.2017



4

Работа над 1 главой: Теоретическая часть (работа с литературой. Ориентация в выборе необходимых источников).

с 04.04.2017 по 11.04.2017



5

Оформление 1 главы.

с 11.04.2017 по 18.04.2017



6

Работа над 2 главой: Решение постановки задач

с 18.04.2017 по 05.05.2017



7

Работа над введением и заключением курсовой работы.

с 05.05.2017 по 12.05.2017



8

Оформление курсовой работы.

с 12.05.2017по 20.05.2017



9

Подготовка к защите курсовой работы

с 20.05.2017 по 25.05.2017



10

Распечатывание и подшивание курсовой работы







Студент гр._______________________________________/__________________________

(подпись)

Руководитель КР__________________________________/__________________________

 (подпись)

Дата выдачи задания 26.02.2017

Задания принял к исполнению 26.02.2017

























ОТЗЫВРУКОВОДИТЕЛЯ КУРСОВОЙ РАБОТЫ

Тема курсовой работы Продольное перемещение по оси Y

Автор (студент/ка) Набиуллин Ильназ Ильгизович

Факультет информационных технологий и энергетических систем

Кафедра автоматизации и управления

Специальность 15.03.04 автоматизация технологических процессов и производств 

СпециализацияАвтоматизация технологических процессов и производств в машиностроение

Руководитель Балабанов И.П., ФГАОУ ВПО КФУ, доцент каф. АиУ, к.т.н.

(Фамилия И.О., место работы, должность, ученое звание, степень)

Оценка соответствия требованиям ФГОС/ГОС подготовленности автора курсовой работы 

Требования к профессиональной подготовке

Соот-ветствует

В основном соответст-вует

Не соот-ветствует

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







Устанавливать приоритеты и методы решения поставленных задач(проблем)







Владеть компьютерными методами сбора, хранения и обработки (редактирования) информации,применяемой в сфере профессиональной деятельности







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







Уметь рационально планировать время выполнения работы, определять грамотную последовательность и объем операций и решений при выполнении поставленной задачи







Уметь объективно оценивать полученные результаты расчетов и вычислений







Уметь анализировать полученные результаты интерпретации экспериментальных данных







Знать методы системного анализа







Уметь осуществлять деятельность в кооперации с коллегами, находить компромисс при совместной деятельности







Уметь делать самостоятельные обоснованные и достоверные выводы из проделан-ной работы







Уметь пользоваться научной литературой профессиональной направленности











Отмеченные достоинства  _________________________________________________________

Отмеченные недостатки ___________________________________________________________

Заключение _____________________________________________________________________

Руководитель____________ «__»_________20__г.

подпись



ОТЗЫВРЕЦЕНЗЕНТА КУРСОВОЙ РАБОТЫ

Автор (студент/ка) Набиуллин Ильназ Ильгизович

Факультет информационных технологий и энергетических систем

Кафедра автоматизации и управления

Специальность 15.03.04 автоматизация технологических процессов и производств 

СпециализацияАвтоматизация технологических процессов и производств 

Наименование работы Разработка программного обеспечения в среде C#

РецензентЗиятдинов Р.Р.., ФГАОУ ВПО КФУ, доцент каф. АиУ, к.т.н.

(Фамилия И.О., место работы, должность, ученое звание, степень)



Оценка курсовой работы

№

п/п

Показатели 

5

4

3

2

*

1

Актуальность тематики работы











2

Степень полноты обзора состояния опроса и корректность постановки задачи











3

Уровень и корректность использования в работе методов исследований, математического моделирования, расчетов











4

Степень комплексности работы, применение в ней знаний общепрофессио-нальных и специальных дисциплин 











5

Ясность, четкость, последовательность о обоснованность изложения











6

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











7

Качество оформления (общий уровень грамотности, стиль изложения, качество иллюстрации, соответствие требованиям стандартов)











8

Объем и качество выполнения графического материала, его соответствие тексту











9

Основать и доказательность выводов работы











10

Оригинальность и новизна полученных результатов, научно-исследовательских или производственно-технических решений











«*» не оценивается(трудно оценить)

Отмеченные достоинства____________________________________________________

__________________________________________________________________________

Отмеченные недостатки (вопросы)____________________________________________

__________________________________________________________________________

Заключение:представленная на рецензию работа может быть оценена на «_______»

Рецензент ______________                                                           «__»____________20__г.

                                подпись





Содержание



	Введение	7

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

		1.1.	Операторы языка С#	8

		1.2.	Циклы	12

		1.3.	Массивы	16

		1.4.	Станки	21

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

	Заключение	30

	СПИСОК ЛИТЕРАТУРЫ	31

	Приложения	32





















Введение



На сегодняшний момент язык программирования C# один из самых мощных, быстро развивающихся и востребованных языков в ИТ-отрасли. В настоящий момент на нем пишутся самые различные приложения: от небольших десктопных программок до крупных веб-порталов и веб-сервисов, обслуживающих ежедневно миллионы пользователей.

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

По сравнению с другими языками C# достаточно молодой, но в то же время он уже прошел большой путь. Первая версия языка вышла вместе с релизом Microsoft Visual Studio .NET в феврале 2002 года. Текущей версией языка является версия C# 7.0, которая вышла в 7 марта 2017 года вместе с Visual Studio 2017.

C# является языком с Си-подобным синтаксисом и близок в этом отношении к C++ и Java. Поэтому, если вы знакомы с одним из этих языков, то овладеть C# будет легче.

C# является объектно-ориентированным и в этом плане много перенял у Java и С++. Например, C# поддерживает полиморфизм, наследование, перегрузку операторов, статическую типизацию. Объектно-ориентированный подход позволяет решить задачи по построению крупных, но в тоже время гибких, масштабируемых и расширяемых приложений. И C# продолжает активно развиваться, и с каждой новой версией появляется все больше интересных функциональностей, как, например, лямбды, динамическое связывание, асинхронные методы и т.д.

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

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

Объектами исследования настоящей курсовой работы являются методы и технологии разработки программных продуктов.











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

Операторы языка С# 

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

Обычно для перечислений (enum) разрешены все операции, применимые к целочисленным типам (например, ==, !=, <, >, & и |).

В данных разделах перечислены операторы C# в порядке убывания приоритета. Операторы в каждом разделе совместно используют один и тот же уровень приоритета.

Основные операторы

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

x.y — доступ к членам.

x?.y — доступ к членам с проверкой NULL. Возвращает значение null, если левый операнд имеет значение null.

x?.[y] — доступ к индексам, определяемый условием NULL. Возвращает значение null, если левый операнд имеет значение null.

f(x) — вызов функции.

a[x] — индексирование агрегатного объекта.

x++ — постфиксный инкремент. Возвращает значение x и затем обновляет расположение хранения значением x, которое увеличено на единицу (обычно добавляется целочисленное значение 1).

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

new – создание экземпляра типа.

typeof — возвращает объект System.Type, представляющий операнд.

checked — включает проверку на переполнение при выполнении операций с целыми числами.

unchecked — отключает проверку на переполнение при выполнении операций с целыми числами. Это поведение установлено для компилятора по умолчанию.

default(T) — возвращает инициализированное значение по умолчанию типа T, значение null для ссылочных типов, нуль для числовых типов и члены, или заполняет нулями/значениями null члены типа структуры.

delegate — объявляет и возвращает экземпляр делегата.

sizeof — возвращает размер в байтах для типа операнда.

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

	

Унарные операторы

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

+x — возвращает значение x.

-x — числовое отрицание.

!x — логическое отрицание.

~x — поразрядное дополнение.

++x — префиксный инкремент. Возвращает значение x после обновления расположения хранения значением x, которое увеличено на единицу (обычно добавляется целочисленное значение 1).

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

(T)x — приведение типов.

awaitTask — ожидание выполнения .

&x — получение адреса.

*x — разыменование.

Мультипликативные операторы

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

x * y — умножение.

x / y — деление. Если операнды имеют целые числа, результатом является целочисленное значение, усеченное в сторону нуля (например, -7 / 2 is -3).

x % y — остаток от деления. Если операнды имеют целые числа, это возвращает остаток от деления x на y. Если q = x / y и r = x % y, то x = q * y + r.

Аддитивные операторы

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

x + y — сложение.

x – y — вычитание.

Операторы сдвига

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

x << y — сдвиг битов влево и заполнение правого бита нулем.

x >> y — сдвиг битов вправо. Если левым операндом является int или long, затем левые биты заполняются битом знака. Если левым операндом является uint или ulong, затем левые биты заполняются нулем.

Относительные операторы и операторы тестирования типа

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

x < y — меньше чем (возвращает true, если x меньше y).

x > — больше чем (возвращает true, если x больше y).

x <= y – меньше или равно

x >= y – больше или равно.

is — совместимость типов. Возвращает значение true, если вычисленный левый операнд может быть приведен к типу, указанному в правом операнде (статический тип).

as — преобразование типов. Возвращает левый операнд, приведенный к типу, заданному правым операндом (статический тип), но as возвращает null, где (T)x вызывает исключение.

Операторы равенства

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

x == y — тождество. По умолчанию для ссылочных типов, отличных от string, этот оператор возвращает равенство ссылок (проверка удостоверения). Однако типы могут перегрузить ==, поэтому если планируется проверять удостоверения, лучше использовать метод ReferenceEquals для object.

x != y — неравенство. См. примечание для ==. Если тип перегружает ==, то его необходимо перегрузить !=.

Оператор логического И

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

x & y — логическая или битовая операция И. В общем случае разрешено использовать с целочисленными типами и типами enum.

Оператор логического исключающего ИЛИ

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

x ^ y — логическая или битовая операция исключающего ИЛИ. Обычно их можно использовать с целочисленными типами и типами enum.



Оператор логического ИЛИ

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

x | y – логическая или битовая операция ИЛИ. В общем случае разрешено использовать с целочисленными типами и типами enum.

Условный оператор И

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

x && y — логическое И. Если первый операнд имеет значение false, то C# не вычисляет второй операнд.

Условный оператор ИЛИ

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

x || y — логическое ИЛИ. Если первый операнд имеет значение true, то C# не вычисляет второй операнд.

Оператор объединения с NULL

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

x?? y — возвращает x, если значение отличается от null; в противном случае возвращает y.

Условный оператор

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

t ? x : y — если тест t имеет значение true, вычисляет и возвращает x, в противном случае вычисляет и возвращает y.

Назначение и лямбда-операторы

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

x = y — назначение.

x += y — инкремент. Добавьте значение y к значению x, сохраните результат в x и возвратите новое значение. Если x назначает event, то y должен быть соответствующей функцией, которую C# добавляет в качестве обработчика событий.

x -= y — декремент. Вычтите значение y из значения x, сохраните результат в x и возвратите новое значение. Если x назначает event, то y должен быть соответствующей функцией, которую C# удаляет в качестве обработчика событий.

x *= y — назначение с умножением. Умножьте значение y на значение x, сохраните результат в x и возвратите новое значение.

x /= y — назначение с делением. Разделите значение x на значение y, сохраните результат в x и возвратите новое значение.

x %= y — назначение остатка от деления. Разделите значение x на значение y, сохраните остаток в x и возвратите новое значение.

x &= y — назначение с операцией И. Выполните операцию И для значения y и значения x, сохраните результат в x и возвратите новое значение.

x |= y — назначение с операцией ИЛИ. Выполните операцию ИЛИ для значения y и значения x, сохраните результат в x и возвратите новое значение.

x ^= y — назначение с операцией исключающего ИЛИ. Выполните операцию исключающего ИЛИ для значения y и значения x, сохраните результат в x и возвратите новое значение.

x <<= — назначение со сдвигом влево. Сдвиньте значение x влево на y позиций, сохраните результат в x и возвратите новое значение.

x >>= y — назначение со сдвигом вправо. Сдвиньте значение x вправо на y позиций, сохраните результат в x и возвратите новое значение.

=> — объявление лямбда-выражения.





Циклы

Циклы служат для многократного повторения некоторого фрагмента кода.

В Си-шарп есть четыре оператора циклов: for, while, do-while, foreach.

Цикл for

Этот цикл используется тогда, когда наперед известно, сколько повторений нужно сделать. Он имеет следующую структуру:

for (инициализация счетчика; условие продолжения; итерация) 

{

   //блок кода, который будет повторяться

}



Пример программы, которая выводит на экран числа 0, 1, 2, 3, 4:

static void Main(string[] args)

{

   for (int i = 0; i < 5; i++) // циклвыполнится 5 раз

{

      Console.WriteLine(i);

   }

}

Сначала происходит создание и инициализация счетчика, i=0. Дальше идет проверка условия ( i < 5), если результат будет «истина», то дальше выполняется блок кода в теле цикла. В конце итерации происходит изменение значения счетчика (в данном примере увеличение на единицу). После этого вновь происходит проверка условия и так далее. Когда условие будет «ложь», цикл работу завершит.



Пример программы, которая находит и выводит на экран сумму элементов массива:



static void Main(string[] args)

{

   int[] numbers = { 4, 7, 1, 23, 43 };

   int s = 0;

   for (int i = 0; i < numbers.Length; i++)

   {

      s += numbers[i];

   }

   Console.WriteLine(s);

Console.ReadKey();

}

Пример цикла for, когда счетчик уменьшается после каждой итерации:



for (int i = 5; i > 0; i--) //выполнится 5 раз

{

   Console.WriteLine(i);

}

Счетчик можно изменять не только на единицу. Пример программы, которая выводит чётные числа (по число 50):



for (int i = 0; i <= 50; i+=2) //выполнится 26 раз

{

   Console.WriteLine(i);

}

Цикл while

Слово while переводится, как «пока», что хорошо его характеризует. Он продолжает выполнятся до тех пор, пока «истинно» некоторое условие. Он имеет такую структуру:



while (условие продолжения)

{

   //блок кода, который будет повторяться

}

Сначала проверяется условие, а дальше выполняется блок кода.



Пример той же программы, которая выводит на экран числа 0, 1, 2, 3, 4:



int i = 0;

while (i < 5)

{

   Console.WriteLine(i);

i++;

}

Цикл может выполнятся «вечно», если задать всегда истинное условие:



while (true)

{

   Console.WriteLine("Вечныйцикл");

}

Цикл do-while

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



do

{

//блок кода, который будет повторяться

}

while (условие продолжения);



Пример программы, которая не завершит работу, пока с клавиатуры не введут число 5:



static void Main(string[] args)

{

   int number;

   do

   {

      Console.WriteLine("Введитечисло 5");

      number = Convert.ToInt32(Console.ReadLine());

}

   while (number != 5); 

}

О цикле foreach мы поговорим в отдельном уроке.



Оператор break



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



Пример программы, которая проверяет, есть ли в массиве число кратное 13-ти. Найдя такое число, нет смысла дальше проверять остальные элементы массива, и здесь мы используем оператор break:



static void Main(string[] args)

{

   int[] numbers = { 4, 7, 13, 20, 33, 23, 54 };

   bool b = false;

   for (int i = 0; i < numbers.Length; i++)

   {

      if (numbers[i] % 13 == 0)

      {

         b = true;

break;

      }

   }

   Console.WriteLine(b ? "В массиве есть число кратное 13" : "В массиве нет числа кратного 13");

   Console.ReadKey();

}



Оператор continue

Данный оператор позволяет перейти к следующей итерации, не завершив до конца текущую.



Пример программы, которая находит сумму нечетных элементов массива:



static void Main(string[] args)

{

   int[] numbers = { 4, 7, 13, 20, 33, 23, 54 };

   int s = 0;

   for (int i = 0; i < numbers.Length; i++)

{

      if (numbers[i] % 2 == 0)

         continue; //переход к следующей итерации

s += numbers[i];

      }

   Console.WriteLine(s);

Console.ReadKey();

}

Массивы

Одномерные и многомерные числовые массивы

Массивом называют упорядоченную совокупность элементов одного типа. Каждый элемент массива имеет индексы, определяющие порядок элементов. Индексы задаются целочисленным типом. Число индексов характеризует размерность массива. Если конечное значение задано константным выражением, то число элементов массива известно в момент его объявления и ему может быть выделена память ещё на этапе трансляции. Такие массивы называются статическими. Если же конечное значение зависят от переменной, то такой массив называют динамическим, поскольку память ему может быть отведена только динамически в процессе выполнения программы, когда становятся известными значения соответствующих переменных. Массиву, как правило, выделяется непрерывная область памяти.

В языке C# каждый индекс изменяется в диапазоне от 0 до некоторого конечного значения. Массивы в языке C# являются настоящими динамическими массивами. Как следствие этого, массивы относятся к ссылочным типам, память им отводится динамически в "куче". Массивы могут быть одномерными и многомерными.

Объявление одномерного массива выглядит следующим образом:



<тип>[] <объявители>;



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



int[] a, b, c;



Чаще всего при объявлении массива используется имя с инициализацией. И опять-таки, как и в случае простых переменных, могут быть два варианта инициализации. В первом случае инициализация является явной и задаётся константным массивом. Вот пример:



double[] x = {5.5, 6.6, 7.7};



Следуя синтаксису, элементы константного массива следует заключать в фигурные скобки. Если массив инициализируется константным массивом, то в динамической памяти создаётся константный массив с заданными значениями, с которым и связывается ссылка.



Во втором случае создание массива выполняется с помощью операции new. Вот пример:



int[] d = new int[5];



Здесь объявлен динамический целочисленный массив, в котором будут храниться 5 целых чисел. Массив создаётся в динамической памяти, его элементы получают начальные нулевые значения, и ссылка связывается с этим массивом.



Как обычно задаются элементы массива, если они не заданы при инициализации? Они либо вычисляются, либо вводятся пользователем. Рассмотрим пример работы с массивами:



view plaincopy to clipboardprint?

// объявляются три одномерных массива A,B,C  

int[] A = new int[5], B= new int[5], C= new int[5];  

// заполняется данными с клавиатуры массив A  

for(int i = 0; i < 5; i++) A[i] = int.Parse(Console.ReadLine());  

// вычисляютсяэлементымассива C  

for(int i = 0; i < 5; i++) C[i] = A[i] + B[i];  

// объявление массива с явной инициализацией  

int[] x ={5.5, 6.6, 7.7};  

// объявление массивов с отложенной инициализацией  

int[] u, v;  

u = new int[3];  

for(int i = 0; i < 3; i++) u[i] = i + 1;  

// v = {1,2,3}; // присваивание константного массива недопустимо!  

v = new int[4];   

v = u; // допустимое присваивание – массивы одного класса  

int [,] w = new int[3,5];  

// v = w; // недопустимое присваивание: объекты разных классов  

На что следует обратить внимание, анализируя этот текст:



Показаны разные способы объявления массивов. В начале объявляются одномерные массивы A, B и C. Значения элементов этих трёх массивов имеют один и тот же тип int. То, что они имеют одинаковое число элементов, произошло по воле программиста, а не диктовалось требованиями языка. Значения в массив А вводились, а в массив B - нет, но сложение элементов корректно, потому что при объявлении элементы массива B получили нулевые значения.

Массив x объявлен с явной инициализацией. Число и значения его элементов определяется константным массивом.

Массивы u и v объявлены с отложенной инициализацией. В последующих операторах массив u инициализируется в объектном стиле – его элементы получают значения в цикле.

Обратите внимание на закомментированный оператор присваивания! В отличие от инициализации, использовать константный массив в правой части оператора присваивания недопустимо. Эта попытка приводит к ошибке, поскольку v - это ссылка, и ей нельзя присвоить константный массив. А вот ссылку присвоить можно. Что происходит в операторе присваивания v = u? Это корректное ссылочное присваивание: хотя u и v имеют разное число элементов, но они являются объектами одного класса – оба массива целочисленные. В результате присваивания память, отведённая массиву v, освободится, ею займется теперь сборщик мусора. Обе ссылки u и v будут теперь указывать на один и тот же массив, так что изменение элемента одного массива немедленно отразится на другом массиве. Имена u и v становятся синонимами (или псевдонимами друг друга…).

Далее определяется двумерный массив w и делается попытка выполнить оператор присваивания v = w. Это ссылочное присваивание некорректно, поскольку объекты w и v - разных классов (разноразмерные массивы) и для них не выполняется требуемое для присваивания согласование по типу.

В вышеприведённых примерах объявлялись статические массивы, поскольку нижняя граница равна нулю по определению, а верхняя всегда задавалась в этих примерах константой. Вспомним, что в C# все массивы, независимо от того, каким выражением описывается граница, рассматриваются как динамические, и память для них распределяется в "куче". Чисто синтаксически нет существенной разницы в объявлении статических и динамических массивов. Выражение, задающее границу изменения индексов, в динамическом случае содержит переменные. Единственное требование – значения переменных должны быть определены в момент объявления! Это ограничение в C# выполняется автоматически, поскольку хорошо известно, насколько требовательно C# контролирует инициализацию переменных. Рассмотрим пример:



view plaincopy to clipboardprint?

// объявление динамического массива A1  

Console.WriteLine("Введите число элементов массива A1");  

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

int[] A1 = new int[size];  

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



Теперь можно рассмотреть особый вид оператора цикла – оператор foreach. Его синтаксис:



foreach(тип идентификатор in массив) оператор



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



В приведённом ниже примере показана работа с трёхмерным массивом. Массив создаётся с использованием циклов типа for, а при нахождении суммы его элементов, минимального и максимального значения используется цикл foreach:



view plaincopy to clipboardprint?

int [,,] arr3d = new int[10, 10, 10];  

for(int i = 0; i < 10; i++)  

   for(int j = 0; j < 10; j++)  

      for(int k = 0; k < 10; k++)  

         arr3d[i, j, k] = int.Parse(Console.ReadLine());  

long sum = 0;  

int min = arr3d[0, 0, 0], max = arr3d[0, 0, 0];  

foreach(int item in arr3d)  

{  

   sum += item;  

   if(item > max) max = item;  

   else if (item < min) min = item;  

}  

Console.WriteLine("sum = {0}, min = {1}, max = {2}",   

sum, min, max);  

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

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



<тип>[, ... ,] <объявители>;



Число запятых, увеличенное на единицу, и задаёт размерность массива. Что касается объявителей, то всё, что сказано для одномерных массивов, справедливо и для многомерных. Можно лишь отметить, что хотя явная инициализация с использованием многомерных константных массивов возможна, но применяется редко из-за громоздкости такой структуры. Проще инициализацию реализовать программно, но иногда она всё же применяется. Вот пр.......................
Для получения полной версии работы нажмите на кнопку "Узнать цену"
Узнать цену Каталог работ

Похожие работы:

Отзывы

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

Далее
Узнать цену Вашем городе
Выбор города
Принимаем к оплате
Информация
Экспресс-оплата услуг

Если у Вас недостаточно времени для личного визита, то Вы можете оформить заказ через форму Бланк заявки, а оплатить наши услуги в салонах связи Евросеть, Связной и др., через любого кассира в любом городе РФ. Время зачисления платежа 5 минут! Также возможна онлайн оплата.

Сезон скидок -20%!

Мы рады сообщить, что до конца текущего месяца действует скидка 20% по промокоду Скидка20%