Загрузил DАRlK 10

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

реклама
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ
ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«УФИМСКИЙ УНИВЕРСИТЕТ НАУКИ И ТЕХНОЛОГИЙ»
СТЕРЛИТАМАКСКИЙ ФИЛИАЛ
Факультет математики и информационных технологий
Кафедра прикладной информатики и программирования
Курсовая работа
Программирование циклических операций на C#
Выполнил: студент 2 курса
факультета математики и
информационных технологий
очно-заочной
формы
обучения
группы OZSИБ21
Марданов Р.И.
Научный руководитель:
д.ф.-м.н., профессор
Хусаинов И. Г.
Стерлитамак 2024
СОДЕРЖАНИЕ
СОДЕРЖАНИЕ ....................................................................................................... 2
ВВЕДЕНИЕ .............................................................................................................. 3
ГЛАВА 1. СОЗДАНИЕ ЯЗЫКА С# ...................................................................... 4
1.1 История развития языка ................................................................................... 4
1.2 Особенности языка............................................................................................ 5
1.3 Стандартизация С# ............................................................................................ 6
1.4 Общая информация по версиям ....................................................................... 7
1.5 Преимущества и недостатки языка ................................................................. 9
1.6 Реализация C# .................................................................................................. 10
1.7 Роль платформы .NET..................................................................................... 10
ГЛАВА 2. ИСПОЛЬЗОВАНИЕ ЦИКЛОВ НА С# ............................................. 12
2.1 Описание и работа for/foreach/await foreach ................................................. 12
Оператор FOR выполняет оператор или блок операторов, пока определенное
логическое выражение равно значению true. ..................................................... 12
2.2 Описание do и while ........................................................................................ 14
2.3 Операторы перехода и инструмент LINQ .................................................... 14
2.4
Бесконечный цикл for .................................................................................. 15
ГЛАВА 3. ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ ЦИКЛОВ НА С# ........................ 16
3.1 Использование циклов for/foreach/await foreach. ......................................... 16
3.2 Использования цикла while и do/while.......................................................... 20
3.3 Использования LINQ в коде........................................................................... 21
ЗАКЛЮЧЕНИЕ ..................................................................................................... 23
СПИСОК ЛИТЕРАТУРЫ..................................................................................... 24
ВВЕДЕНИЕ
В современном мире программирование является одним из наиболее
востребованных навыков. Язык программирования C# широко используется
для создания различных приложений, включая программы с циклическими
операциями. Кроме того, язык программирования C# предоставляет
различные инструменты для реализации циклических операций, позволяя
разработчикам создавать мощные и эффективные алгоритмы.
Циклические операции играют важную роль в разработке программ,
так как позволяют выполнять повторяющиеся действия определенное
количество раз или до тех пор, пока выполняется определенное условие. В
языке программирования C# для реализации циклических операций
используются различные конструкции, такие как циклы for, while и do/while.
Оптимизация циклических операций включает в себя использование
эффективных
алгоритмов,
минимизацию
числа
итераций,
избегание
избыточных вычислений внутри циклов.
Циклические операции широко применяются в различных областях
программирования, таких как обработка данных, создание игр, вебразработка и многие другие. Умение эффективно работать с циклическими
операциями является важным навыком для разработчика на C#.
ГЛАВА 1. СОЗДАНИЕ ЯЗЫКА С#
1.1 История развития языка
Язык программирования С# был разработан в 1993—2001 годах
группой инженеров компании Microsoft под руководством Андерса
Хейлсберга и Скотта Вильтаумота как язык разработки приложений для
платформы Microsoft.
К 2000 году у Microsoft были готовы промышленные версии новых
технологий и решений для обмена сообщениями и данными, а также для
создания Internet-приложений. Была выпущена и новая платформа для
разработки под новые решения — .NET. В ней объединились сразу несколько
языков программирования, что было в новинку для того времени.
Ещё одним новшеством платформы .NET была технология активных
серверных страниц ASP.NET (Active Server Page). С её помощью можно было
относительно быстро разработать веб-приложения, взаимодействующие с
базами
данных.
Специально
для
ASP.NET
был
создан
язык
программирования C#. Да и сама ASP.NET была полностью написана на нём.
C# (произносится си шарп) — объектно-ориентированный язык
программирования общего назначения. Разработан в 1998—2001 годах
группой инженеров компании Microsoft под руководством Андерса
Хейлсберга и Скотта Вильтаумота как язык разработки приложений для
платформы Microsoft .NET Framework и .NET Core. Впоследствии был
стандартизирован как ECMA-334 и ISO/IEC 23270.
C# относится к семье языков с C-подобным синтаксисом, из них его
синтаксис наиболее близок к C++ и Java. Язык имеет статическую
типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе
операторов явного и неявного приведения типа), делегаты, атрибуты,
события, переменные, свойства, обобщённые типы и методы, итераторы,
анонимные
функции
с
поддержкой
комментарии в формате XML.
замыканий,
LINQ,
исключения,
Переняв многое от своих предшественников — языков C++, Delphi,
Модула, Smalltalk и, в особенности, Java — С#, опираясь на практику их
использования, исключает некоторые модели, зарекомендовавшие себя как
проблематичные при разработке программных систем, например, C# в
отличие от C++ не поддерживает множественное наследование классов
(между тем допускается множественная реализация интерфейсов).
1.2 Особенности языка
С# разрабатывался как язык программирования прикладного уровня
для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR.
Это касается, прежде всего, системы типов С#, которая отражает BCL.
Присутствие
или
отсутствие
тех
или
иных
выразительных
особенностей языка диктуется тем, может ли конкретная языковая
особенность быть транслирована в соответствующие конструкции CLR. Так,
с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#;
подобного взаимодействия следует ожидать и в дальнейшем (однако, эта
закономерность была нарушена с выходом C# 3.0, представляющего собой
расширения языка, не опирающиеся на расширения платформы .NET). CLR
предоставляет С#, как и всем другим .NET-ориентированным языкам, многие
возможности, которых лишены «классические» языки программирования.
Например, сборка мусора не реализована в самом C#, а производится CLR
для программ, написанных на C# точно так же, как это делается для
программ на VB.NET, J# и др.
Название «Си шарп» (от англ. sharp — диез) происходит от буквенной
музыкальной нотации, где латинской букве C соответствует нота До, а знак
диез (англ. sharp) означает повышение соответствующего ноте звука на
полутон, что аналогично названию языка C++, где «++» обозначает
инкремент переменной. Название также является игрой с цепочкой C → C++
→ C++++(C#), так как символ «#» можно представить состоящим из 4 знаков
«+».
Из-за технических ограничений на отображение (стандартные шрифты,
браузеры и т. д.), а также из-за того, что знак диеза # не представлен на
стандартной
клавиатуре
компьютера,
при
записи
имени
языка
программирования используют знак решётки (#). Это соглашение отражено в
Спецификации языка C# ECMA-334[10]. Тем не менее, на практике
(например,
при
размещении
рекламы
и
коробочном
дизайне[11]),
«Майкрософт» использует знак диеза.
Названия языков программирования не принято переводить, поэтому
язык называют, используя транскрипцию, — «Си шарп».
1.3 Стандартизация С#
C# стандартизирован в ECMA (ECMA-334) и ISO (ISO/IEC 23270).
Известно как минимум о трёх независимых реализациях C#,
базирующихся на этой спецификации и находящихся в настоящее время на
различных стадиях разработки:
- Mono, начата компанией Ximian, продолжена её покупателем и
преемником Novell, а затем Xamarin.
- dotGNU и Portable.NET, разрабатываемые Free Software Foundation.
1.4 Общая информация по версиям
Таблица 1.
Версия
С#2.0
С#3.0
С#4.0
С#5.0
С#6.0
С#7.0
Нововведения




































Частичные типы
Обобщённые типы (generics)
Итераторы и ключевое слово yield
Анонимные методы
Оператор null-объединения
Nullable-типы
Запросы, интегрированные в язык (LINQ)
Инициализаторы объектов и коллекций
Лямбда-выражения
Деревья выражений
Неявная типизация и ключевое слово var
Анонимные типы
Методы расширения
Автоматические свойства
Динамическое связывание и ключевое слово dynamic
Именованные и опциональные аргументы
Обобщенная к вариантность и контрвариантность
Библиотека TPL, концепция задач и классы Task, Parallel
Класс MemoryCache
Классы параллельных коллекций
Шаблон TAP
Асинхронные методы async и await
Сведения о вызывающем объекте
Компилятор как сервис
Импорт членов статических типов в пространство имён
Фильтры исключений
await в блоках catch/finally
Инициализаторы автосвойств
Автосвойства только для чтения
null-условные операции (?. и ?[])
Интерполяция строк
Оператор nameof
Инициализатор словаря
Функции сжатые до выражений
out-переменные
Сопоставление с шаблоном








Шаблоны с is
Шаблоны и выражение switch
Кортежи
Распаковка кортежей (деконструкторы)
Локальные функции
Улучшения литералов
Локальные переменные и возвращаемые значения по ссылке
Расширение списка типов, возвращаемых асинхронными
методами
 Больше членов класса в виде выражений
 throw выражения
С#8.0
С#9.0
С#10.0

























Члены только для чтения
Члены интерфейса по умолчанию
Улучшения сопоставления шаблонов
Объявления using
Статические локальные функции
Удаляемые ссылочные структуры
Ссылочные типы, допускающие значение NULL
Асинхронные потоки
Индексы и диапазоны
Присваивание объединения со значением NULL
Неуправляемые сконструированные типы
Выражения stackalloc во вложенных выражениях
Больше членов класса в виде выражений
Улучшения интерполированных строк
Оператор объединения с null (??)
Пустые параметры для лямбда-выражений
Native Int: nint, nuint
Дизъюнктное объединение
Добавлено with-выражения
новый модификатор initonly
Добавление role="alert" атрибуты сообщений
Обновления Counter компонент для добавления role="status"
Замена ul в NavBar компонент для nav
Новое название кнопки переключения NavBar
Переход к использованию более семантической разметки
1.5 Преимущества и недостатки языка
У «шарпа» выделяют много преимуществ:
 Поддержка подавляющего большинства продуктов Microsoft
 Бесплатность ряда инструментов для небольших компаний и некоторых
индивидуальных разработчиков — Visual Studio, облако Azure, Windows
Server, Parallels Desktop для Mac Pro и др.
 Типы данных имеют фиксированный размер (32-битный int и 64-битный
long), что повышает «мобильность» языка и упрощает программирование,
так как вы всегда знаете точно, с чем вы имеете дело.
 Автоматическая «сборка мусора» Это значит, что нам в большинстве
случаев не придётся заботиться об освобождении памяти.
Вышеупомянутая общеязыковая среда CLR сама вызовет сборщик мусора
и очистит память.
 Большое количество «синтаксического «сахара» — специальных
конструкций, разработанных для понимания и написания кода. Они не
имеют значения при компиляции.
 Низкий порог вхождения. Синтаксис C# имеет много схожего с другими
языками программирования, благодаря чему облегчается переход для
программистов. Язык C# часто признают наиболее понятным и
подходящим для новичков.
 С помощью Xamarin на C# можно писать программы и приложения для
таких операционных систем, как iOS, Android, MacOS и Linux;
Но есть у C# и некоторые недостатки:
 Приоритетная ориентированность на платформу Windows;
 Язык бесплатен только для небольших фирм, индивидуальных
программистов, стартапов и учащихся . Крупной компании покупка
лицензионной версии этого языка обойдётся в круглую сумму.
1.6 Реализация C#
Существует несколько реализаций C#:
 Компилятор Roslyn c открытым исходным кодом
 Реализация C# в виде компилятора csc.exe включена в состав .NET
Framework (включая .NET Micro Framework, .NET Compact Framework и
его реализации под Silverlight и Windows Phone 7).
 В составе проекта Rotor (Shared Source Common Language Infrastructure)
компании Microsoft.
 Проект Mono включает в себя реализацию C# с открытым исходным
кодом.
 Проект DotGNU также включает компилятор C# с открытым кодом.
 DotNetAnywhere[22] — ориентированная на встраиваемые системы
реализация CLR, поддерживает практически всю спецификацию C# 2.0.
1.7 Роль платформы .NET
Когда говорят C#, нередко имеют в виду технологии платформы .NET
(Windows Forms, WPF, ASP.NET, Xamarin). И наоборот, когда говорят .NET,
нередко имеют в виду C#. Однако, хотя эти понятия связаны, отождествлять
их неверно. Язык C# был создан специально для работы с фреймворком
.NET, однако само понятие .NET несколько шире.
Когда-то Билл Гейтс сказал, что .NET — это лучшее, что сделала
компания Microsoft. У него есть весомые основания так считать. Фреймворк
.NET представляет мощную платформу для создания приложений. Вот его
киллер-фичи:

Поддержка нескольких языков. В основе .NET — общеязыковая
среда исполнения Common Language Runtime (CLR), благодаря чему
платформа поддерживает несколько языков: наряду с C# это VB.NET,
C++, F#, а также различные диалекты других языков, привязанные к
.NET, например, Delphi.NET. Код на любом из этих языков
компилируется в сборку на общем языке CIL (Common Intermediate
Language) — своего рода ассемблер платформы .NET. Поэтому можно
сделать отдельные модули одного приложения на разных языках.

Мощная библиотека классов. .NET представляет единую для всех
поддерживаемых языков библиотеку классов. Какое бы приложение
мы ни собирались писать на C# — текстовый редактор, чат или
сложный веб-сайт — так или иначе мы задействуем библиотеку
классов .NET.

Разнообразие технологий. Общеязыковая среда исполнения CLR и
базовая библиотека классов — это основа для целого стека технологий,
которые разработчики могут задействовать при создании разных
приложений. Например, для баз данных в этом стеке имеется
технология ADO.NET и Entity Framework Core. Для графических
приложений с насыщенным интерфейсом — технологии WPF и UWP.
Для более простых графических приложений — Windows Forms. Для
разработки мобильных приложений — Xamarin. Для создания вебсайтов — ASP.NET и т.д.
1.8 .NET Framework и .NET Core
.NET долгое время развивался под названием .NET Framework —
преимущественно как платформа для Windows. Но с 2019 она больше не
развивается — последней версией этой платформы стала .NET Framework
4.8.
В 2014 Microsoft начал выпускать альтернативную платформу — .NET
Core, которая должна была вобрать в себя все возможности устаревшего
.NET Framework и добавить новую функциональность. Поэтому следует
различать .NET Framework, который предназначен преимущественно для
Windows, и кроссплатформенный .NET Core.
ГЛАВА 2. ИСПОЛЬЗОВАНИЕ ЦИКЛОВ НА С#
2.1 Описание и работа for/foreach/await foreach
Оператор FOR выполняет оператор или блок операторов, пока
определенное логическое выражение равно значению true.
1. В цикле for три переменные: счетчик, условие и итератор.
2. Объявление счетчика происходит в самом начале и лишь раз. Обычно он
инициализируется сразу после объявления.
3. Затем проверяется условие. Условие — булево выражение. То есть,
возвращает true или false.
4. Если условие определяется как true:
• Выполняются инструкции внутри цикла.
• После этого инициализируется итератор — обычно изменяется
значение этой переменной.
• Условие проверяется снова.
• Процесс повторяется до тех пор, пока условие не будет определено
как false.
5. Если условие определится как false, цикл завершается.
Рис 1. Блок-схема работы цикла FOR.
Оператор FOREACH выполняет оператор или блок операторов для
каждого элемента в экземпляре типа, который реализует интерфейс
System.Collections.IEnumerable.
Оператор foreach не ограничен этими типами. Его можно использовать
с экземпляром любого типа, который удовлетворяет следующим
условиям:
Тип имеет открытый метод без параметров GetEnumerator. Этот
GetEnumerator метод может быть методом расширения типа.
тип возвращаемого значения метода GetEnumerator должен содержать
открытое свойство Current и открытый метод MoveNext без параметров с
типом возвращаемого значения bool.
Инструкцию
AWAIT
FOREACH
можно
использовать
для
использования асинхронного потока данных, то есть типа коллекции,
реализующего IAsyncEnumerable<T> интерфейс. Каждую итерацию цикла
можно
приостановить,
пока
будет
осуществляться
асинхронное
извлечение следующего элемента. В следующем примере показано
использование оператора await foreach. Оператор await foreach можно
также использовать с экземпляром любого типа, который удовлетворяет
следующим условиям:
Тип имеет открытый метод без параметров GetAsyncEnumerator. Этот
метод может быть методом расширения типа.
Тип возвращаемого значения метода GetAsyncEnumerator имеет
открытое
свойство
Current
и
открытый
метод
без
параметров
MoveNextAsync, тип возвращаемого значения которого — Task<bool>,
ValueTask<bool> или любой другой подтверждающий ожидание тип,
метод ожидания которого GetResult возвращает значение bool.
Элементы потока по умолчанию обрабатываются в захваченном
контексте. Чтобы отключить захват контекста, используйте метод
расширения TaskAsyncEnumerableExtensions.ConfigureAwait.
Дополнительные сведения о контекстах синхронизации и захвате
текущего контекста см. в статье Использование асинхронного шаблона.
2.2 Описание do и while
Оператор DO выполняет оператор или блок операторов, пока
определенное логическое выражение равно значению true. Так как это
выражение оценивается после каждого выполнения цикла, цикл do
выполняется один или несколько раз. Цикл do отличается от while цикла,
который выполняется нулевым или более раз.
Оператор WHILE выполняет оператор или блок операторов, пока
определенное логическое выражение равно значению true. Так как это
выражение оценивается перед каждым выполнением цикла, цикл while
выполняется ноль или несколько раз. Цикл while отличается от do цикла,
который выполняется один или несколько раз.
2.3 Операторы перехода и инструмент LINQ
Язык C# предоставляет специальные операторы для прерывания
выполнения всего цикла и для принудительного завершения текущей
итерации с переходом к следующей. Первую задачу решает оператор
break. Если в программе используется несколько вложенных циклов, то
при использованиии break, выход будет выполнен только из того цикла,
где этот оператор был вызван. Оператор continue принудительно
завершает текущую итерацию цикла и переходит к следующей. При этом
для цикла while и do/while происходит переход к условному выражению, а
в цикле for сначала вычисляется итерационное выражение, а затем
проверяется условие.
Существует более удобный инструмент для работы с коллекциями –
это язык запросов LINQ. Этой технологии будет посвящен отдельный
урок, здесь же мы разберем несколько примеров работы с LINQ для того,
чтобы показать некоторые из его возможностей и заинтересовать вас на
дальнейшее
изучение
этого
инструмента.
Вначале
нами
будут
рассмотрены некоторые из методов расширения последовательностей,
которые предоставляет пространство имен System.Linq, после этого будет
приведен пример, демонстрирующий работу с языком LINQ.
Ниже представлены два примера, первый – это вариант реализации
некоторого алгоритма с использованием циклов, второй – этот же
алгоритм, но решение построено с помощью LINQ.
2.4 Бесконечный цикл for
Бесконечный цикл – это цикл, который продолжает выполняться
бесконечно, его условие выхода не принимает выражение False хотя бы в
одном случае или условие выхода не определено. Алгоритм будет работать
вечно или до прерывания внешним событием.
Пример написания бесконечного цикла:
ГЛАВА 3. ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ ЦИКЛОВ НА С#
3.1 Использование циклов for/foreach/await foreach.
Оператор FOR выполняет оператор или блок операторов, пока
определенное логическое выражение равно значению true. В следующем
примере показана инструкция for, выполняющая тело пока целочисленный
счетчик меньше трех:
for (int i = 0; i < 3; i++)
{
Console.Write(i);
}
// Output:
// 012
Если переменная цикла не объявлена в разделе инициализатора, в
разделе инициализатора можно также использовать ноль или более
выражений из предыдущего списка. В следующем примере показано
несколько менее распространенных вариантов использования разделов
инициализатора и итератора: присваивание значения внешней переменной
цикла в разделе инициализатора, вызов метода в разделах инициализатора и
итератора и изменение значения двух переменных в разделе итератора.
int i;
int j = 3;
for (i = 0, Console.WriteLine($"Start: i={i}, j={j}"); i < j; i++, j--,
Console.WriteLine($"Step: i={i}, j={j}"))
{
//...
}
// Output:
// Start: i=0, j=3
// Step: i=1, j=2
// Step: i=2, j=1
Цикл FOR имеет следующий синтаксис:
for (инициализация счетчика; условие; итератор)
{
// оператор (набор операторов)
}
Инициализатор – это выражение, вычисляемое перед выполнением тела
цикла. Обычно здесь инициализируется локальная переменная, которая
будет использоваться как счетчик.
Условие – это выражение, которое проверяется перед каждой новой
итерацией цикла. Если значение выражения равно true, то будет
выполнено тело цикла, если false – произойдет выход из цикла и
выполнится следующая за ним инструкция.
Итератор – это выражение, вычисляемое после каждой итерации.
Обычно здесь происходит изменение локальной переменной, объявленной
в инициализаторе.
Перечисленные выражения: инициализатор, условие и итератор
разделяются символом “точка с запятой”. Цикл for удобно использовать,
когда известно количество повторений. Пример работы с циклом for:
for (int i = 0; i < 3; i++) {
console.writeline(“Квадрат числа i ” + i*i);
В нем мы инициализируем локальную переменную значением 0, затем
проверяем, что переменная меньше трех, выполняем тело цикла –
выводим в консоль значение числа i в квадрате. На каждой итерации
прибавляем к переменной i значение 1, снова проверяем условие и
выполняем тело цикла, и так, до тех пор, пока условие (i < 3) будет
истинным.
Пример кода с использованием FOREACHE:
List<int> fibNumbers = [0, 1, 1, 2, 3, 5, 8, 13];
foreach (int element in fibNumbers)
{
Console.Write($"{element} ");
}
// Output:
// 0 1 1 2 3 5 8 13
Оператор FOREACH не ограничен этими типами. Его можно
использовать
с
экземпляром
любого
типа,
который
удовлетворяет
следующим условиям:
Тип имеет открытый метод без параметров GetEnumerator. Этот
GetEnumerator метод может быть методом расширения типа.
тип возвращаемого значения метода GetEnumerator должен содержать
открытое свойство Current и открытый метод MoveNext без параметров с
типом возвращаемого значения bool.
В следующем примере показано использование оператора foreach с
экземпляром типа System.Span<T>, который не реализует интерфейс:
Span<int> numbers = [3, 14, 15, 92, 6];
foreach (int number in numbers)
{
Console.Write($"{number} ");
}
// Output:
// 3 14 15 92 6
Если свойство перечислителя Current возвращает возвращаемое
значение ссылки (ref T где T тип элемента коллекции), можно объявить
переменную итерации с refref readonly модификатором, как показано в
следующем примере:
Span<int> storage = stackalloc int[10];
int num = 0;
foreach (ref int item in storage)
{
item = num++;
}
foreach (ref readonly var item in storage)
{
Console.Write($"{item} ");
}
// Output:
// 0 1 2 3 4 5 6 7 8 9
Если исходная коллекция инструкции foreach пуста, тело оператора
foreach не выполняется и пропускается. Если оператор foreach применяется к
null, возникает исключение NullReferenceException.
Пример использования await foreache
await foreach (var item in GenerateSequenceAsync())
{
Console.WriteLine(item);
}
Оператор
AWAIT
FOREACH
можно
также
использовать
с
экземпляром любого типа, который удовлетворяет следующим условиям:
Тип имеет открытый метод без параметров GetAsyncEnumerator. Этот
метод может быть методом расширения типа.
Тип возвращаемого значения метода GetAsyncEnumerator имеет
открытое
свойство
Current
и
открытый
метод
без
параметров
MoveNextAsync, тип возвращаемого значения которого — Task<bool>,
ValueTask<bool> или любой другой подтверждающий ожидание тип, метод
ожидания которого GetResult возвращает значение bool.
Элементы потока по умолчанию обрабатываются в захваченном
контексте.
Чтобы
отключить
расширения
захват
контекста,
используйте
метод
TaskAsyncEnumerableExtensions.ConfigureAwait.
Дополнительные сведения о контекстах синхронизации и захвате текущего
контекста см. в статье Использование асинхронного шаблона, основанного на
задачах. Дополнительные сведения об асинхронных потоках см. в
руководстве по асинхронным потокам.
3.2 Использования цикла while и do/while
В C# цикл while имеет следующую конструкцию:
while (условие)
{
// Тело цикла
}
В этом цикле проверяется условие, и если оно истинно, то выполняется
набор операторов внутри тела цикла. Обязательно убедитесь, что изменяете
переменную, от которой зависит условие, иначе цикл станет бесконечным,
если, конечно, это не является целью. Пример работы с циклом while:
int i = 0;
int number = 3;
while(i <= number) {
Console.WriteLine("Итерация цикла номер " + i);
i++;
}
Console.ReadKey();
Цикл do/while имеет следующий синтаксис:
do {
//Тело цикла
} while (условие);
Отличие do/while заключается в том, что проверка условия происходит
после тела цикла, что приводит к тому, что вне зависимости от условия цикл
выполнится хотя бы один раз.
Пример работы с циклом do/while:
int j = 0;
int number2 = 3;
do
{
Console.WriteLine("Итерация цикла номер " + j);
j++;
} while (j > number2);
Console.ReadKey();
}
3.3 Использования LINQ в коде
Пример без LINQ:
Обратимся к ранее созданному массиву nums, извлечем из него только
четные элементы и возведем их в квадрат, полученные значения поместим в
новый массив evenSq:
var evenSq = new List<int>();
foreach (var n in nums)
{
if (n % 2 == 0)
{
evenSq.Add(n * n);
}
}
Выполним туже операцию с помощью LINQ:
evenSq = nums
.Where(v => v % 2 == 0)
.Select(v => v * v)
.ToList();
С помощью методов расширения из System.Linq можно выполнять над
коллекциями
операции
фильтрации,
преобразования,
группировки,
агрегирования, формирования коллекций и т.д. Рассмотрим некоторые из
этих возможностей.
ЗАКЛЮЧЕНИЕ
В ходе изучения программирования циклических операций на языке
C#, мы ознакомились с основными конструкциями циклов, такими как for,
while и do/while, и исследовали их применение в различных сценариях
программирования. Разработчики, использующие C#, получают возможность
создавать эффективные и гибкие алгоритмы благодаря богатому набору
инструментов для работы с циклическими конструкциями.
Важным аспектом курсовой работы было изучение циклических
операций, направленных на повышение производительности программного
кода. Процесс анализа лучших практик программирования циклических
конструкций и их применение в реальных сценариях разработки также
оказался важным шагом для обогащения навыков разработчика на языке C#.
Полученные знания обеспечат не только уверенное владение циклическими
операциями, но и улучшат качество и читаемость кода.
В заключение можно отметить, что понимание и эффективное
применение циклических операций в C# являются неотъемлемой частью
навыков современного программиста. Оптимальное использование циклов
способствует созданию производительных и надежных программных
решений, что является ключевым фактором в успешной разработке
программного обеспечения.
СПИСОК ЛИТЕРАТУРЫ
1. Адам, Фримен ASP.NET 4.5 с примерами на C# 5.0 для профессионалов /
Фримен
Адам.
М.:
-
Диалектика
Вильямс, 2021.
/
- 2792 c.
2. Албахари, Джозеф C# 3.0. Справочник / Джозеф Албахари , Бен Албахари.
-
М.:
БХВ-Петербург, 2021.
-
944
c.
3. Биллиг, В. А. Основы программирования на С# / В.А. Биллиг. - М.:
Интернет-университет информационных технологий, Бином. Лаборатория
знаний, 2021.
-
488
c.
4. Вагнер, Билл С# Эффективное программирование / Билл Вагнер. - М.:
ЛОРИ, 2021.
-
320
c.
5. Ватсон, Б. С# 4.0 на примерах (C# 4.0. How-To) / Б. Ватсон. - М.: БХВПетербург, 2021.
-
608
c.
6. Гриффитс, Иэн Программирование на C# 5.0 / Иэн Гриффитс. - М.:
Эксмо, 2018.
- 1679 c.
7. Гэри, Маклин Холл Адаптивный код на C#. Проектирование классов и
интерфейсов, шаблоны и принципы SOLID / Гэри Маклин Холл. - М.:
Вильямс, 2021.
-
432
c.
8. Дейтел, П. Как программировать на Visual C# 2012 / П. Дейтел. - М.:
Питер, 2018.
- 2180 c.
9. Джеффри, Рихтер WinRT. Программирование на C# для профессионалов /
Рихтер
Джеффри.
-
М.:
Диалектика
/
Вильямс, 2018.
- 1679 c.
10. Джон, Скит C#. Программирование для профессионалов / Скит Джон. М.:
Диалектика
Вильямс, 2017.
/
- 2530 c.
11. Кариев, Ч. А. Разработка Windows-приложений на основе Visual C# (+
CD-ROM) / Ч.А. Кариев. - М.: Интернет-университет информационных
технологий,
Бином.
Лаборатория
знаний, 2018.
-
768
c.
12. Климов, А. C#. Советы программистам / А. Климов. - М.: БХВПетербург, 2018.
-
544
c.
13. Культин, Н. С# в задачах и примерах / Н. Культин. - М.: БХВ-
Петербург, 2020.
- 1293 c.
14. Лотка, Р. C# и CSLA .NET Framework. Разработка бизнес-объектов / Р.
Лотка.
М.:
-
Диалектика
/
Вильямс, 2017.
- 555 c.
15. Майо, Джо C#Builder. Быстрый старт (+ дискета) / Джо Майо. - М.:
Бином-Пресс, 2021.
-
384
c.
16. Мэтью, Мак-Дональд WPF: Windows Presentation Foundation в .NET 4.5 с
примерами на C# 5.0 для профессионалов / Мак-Дональд Мэтью. - М.:
Диалектика
Вильямс, 2017.
/
- 1100 c.
17. Нейгел, Кристиан C# 4.0 и платформа .NET 4 для профессионалов (+ CDROM) / Кристиан Нейгел и др. - М.: Вильямс, 2020. - 1440 c.
18. Нейгел, Кристиан C# 5.0 и платформа .NET 4.5 для профессионалов /
Кристиан
Нейгел
и
др.
-
М.:
Вильямс, 2020.
-
1440
c.
19. Пахомов, Борис С# для начинающих / Борис Пахомов. - М.: БХВПетербург, 2017.
- 2271 c.
20. Петцольд, Чарльз Эспозито Д. Программирование для Microsoft Windows
8. Разработка приложений для Windows 8 на HTML5 и JavaScript (комплект
из 2 книг) / Петцольд Чарльз , Эспозито Д., Ф. Эспозито. - М.: Питер, 2021. 492
c.
21. Прайс, Джейсон Visual C# 2.0. Полное руководство / Джейсон Прайс ,
Майк Гандэрлой. - М.: Век +, Корона-Век, Энтроп, 2019. - 736 c.
22. Рихтер, Джеффри CLR via C#. Программирование на платформе
Microsoft.NET Framework 4.5 на языке C# / Джеффри Рихтер. - М.:
Питер, 2018.
-
896
c.
23. Сафонов, В. О. Параметризованные типы данных. История, теория,
реализация и применение / В.О. Сафонов. - М.: Издательство СанктПетербургского
университета, 2020.
-
116
c.
24. Секунов, Н. Самоучитель C# / Н. Секунов. - М.: БХВ-Петербург, 2017. 576
c.
25. Смоленцев, Н. К. MATLAB. Программирование на Visual С#, Borland
JBuilder, VBA (+ CD-ROM) / Н.К. Смоленцев. - М.: ДМК Пресс, 2018. - 456 c.
26. Сфер, Чак C# 2008 для "чайников" / Чак Сфер , Стефан Рэнди Дэвис, Чак
Сфер.
-
М.:
Вильямс, 2020.
-
592
c.
27. Фленов, М.Е. Библия C# (+ CD-ROM) / М.Е. Фленов. - М.: БХВПетербург, 2017.
- 1230 c.
28. Фленов, Михаил Библия C# / Михаил Фленов. - М.: БХВ-Петербург, 2021.
-
560
c.
29. Фленов, Михаил Библия С# / Михаил Фленов. - М.: БХВ-Петербург, 2019.
-
544
c.
30. Шилдт, Герберт C# 2.0. Полное руководство / Герберт Шилдт. - М.:
ЭКОМ Паблишерз, 2017. - 976 c.
Скачать