C# Программирование на языке высокого уровня. Среда разработки Microsoft Visual Studio.NET

Объектно-ориентированная технология создания программ. Среда разработки Visual Studio.NET. Особенности среды Microsoft Visual Studio 2010. Приложения C# для расчетов по формулам, консольный ввод-вывод. Форматирование значений данных. Программы с циклами.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 11.09.2014

C# Программирование на языке высокого уровня. Среда разработки Microsoft Visual Studio.NET

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ

ПРАВИЛА ВЫПОЛНЕНИЯ РАБОТ

ЛАБОРАТОРНАЯ РАБОТА № 1

ЛАБОРАТОРНАЯ РАБОТА № 2

ЛАБОРАТОРНАЯ РАБОТА № 3

ЛАБОРАТОРНАЯ РАБОТА № 4

ЛАБОРАТОРНАЯ РАБОТА № 5

ЛАБОРАТОРНАЯ РАБОТА № 6

ЛАБОРАТОРНАЯ РАБОТА № 7

ЛИТЕРАТУРА

ВВЕДЕНИЕ.

Платформа .NET

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

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

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

• компилятор, с помощью которого программа переводится с языка, на котором она написана, в машинные коды;

• средства отладки и запуска программ;

• общие библиотеки, содержащие многократно используемые элементы программ;

• справочную систему и другие элементы.

Платформа .NET (произносится «дот нэт») включает не только среду разработки для нескольких языков программирования, называемую Visual Studio.NET, но и множество других средств, например, механизмы поддержки баз данных, электронной почты и коммерции необходимых для интенсификации труда программиста.

Важнейшими задачами при создании программ в настоящее время становятся:

• переносимость - возможность выполнения на различных типах компьютеров;

• безопасность - невозможность несанкционированных действий;

• надежность - способность выполнять необходимые действия в определённых условиях.

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

• межъязыковое взаимодействие - возможность применять одновременно несколько языков программирования. Платформа .NET позволяет успешно решать все эти задачи.

Для обеспечения переносимости компиляторы, входящие в состав платформы, переводят программу не в машинные коды, а в промежуточный язык MSIL (Microsoft Intermediate Language), или просто IL), который не содержит команд, зависящих от языка, операционной системы и типа компьютера. Программа на этом языке выполняется не самостоятельно, а под управлением системы, которая называется общеязыковой средой выполнения (Common Language Runtime, CLR).

Среда CLR может быть реализована для любой операционной системы. При выполнении программы CLR вызывает так называемый JIT-компилятор, переводящий код с языка IL в машинные команды конкретного процессора, которые немедленно выполняются. JIT означает «just in time», что можно перевести как «во время», то есть компилируются только те части программы, которые требуется выполнить в данный момент. Каждая часть программы компилируется один раз и сохраняется в памяти для дальнейшего использования.

Схема выполнения программы при использовании платформы .NET приведена на рис. 1.

Рис. 1. Схема выполнения программы в .NET

Компилятор в качестве результата своего выполнения создает так называемую сборку - файл с расширением ехе или dll, который содержит код на языке IL и метаданные. Метаданные представляют собой сведения об объектах, используемых в программе, а также сведения о самой сборке. Они позволяют организовать межъязыковое взаимодействие, обеспечивают безопасность и облегчают развертывание приложений, то есть установку программ на компьютеры пользователей.

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

Платформа .NET содержит огромную библиотеку классов, которые можно использовать при программировании на любом языке .NET. Её изучение - трудоёмкая, но необходимая задача.

Платформа .NET рассчитана на объектно-ориентированную технологию создания программ, поэтому прежде чем начинать изучение языка С#, необходимо познакомиться с основными понятиями объектно-ориентированного программирования (ООП).

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

При создании объектно-ориентированной программы предметная область представляется в виде совокупности объектов. Выполнение программы состоит в том, что объекты обмениваются сообщениями. Это позволяет использовать при программировании понятия, более адекватно отражающие предметную область.

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

Важным свойством объекта является его обособленность. Детали реализации объекта, то есть внутренние структуры данных и алгоритмы их обработки, скрыты от пользователя объекта и недоступны для непреднамеренных изменений. Объект используется через его интерфейс - совокупность правил доступа.

Скрытие деталей реализации называется инкапсуляцией (от слова «капсула»). Таким образом, объект является «черным ящиком», замкнутым по отношению к внешнему миру. Это позволяет представить программу в укрупненном виде - на уровне объектов и их взаимосвязей, а следовательно, управлять большим объемом информации и успешно отлаживать сложные программы.

Сказанное можно сформулировать более кратко и строго: объект - это инкапсулированная абстракция с четко определенным интерфейсом.

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

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

Наследование является мощнейшим инструментом ООП и применяется для следующих взаимосвязанных целей:

исключения из программы повторяющихся фрагментов кода;

упрощения модификации программы;

упрощения создания новых программ на основе существующих.

Благодаря наследованию появляется возможность использовать объекты, исходный код которых недоступен, но в которые требуется внести изменения. Наследование позволяет создавать иерархии объектов. Иерархия представляется в виде дерева, в котором более общие объекты располагаются ближе к корню, а более специализированные - на ветвях и листьях. Наследование облегчает использование библиотек объектов, поскольку программист может взять за основу объекты, разработанные кем-то другим, и создать наследников с требуемыми свойствами.

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

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

Итак, объект это «инкапсуляция множества операций (методов), доступных для внешних вызовов, и состояния, запоминающего результаты выполнения указанных операций».

Достоинства ООП:

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

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

возможность многократного использования кода за счет наследования;

сравнительно простая возможность модификации программ;

возможность создания и использования библиотек объектов.

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

Для представления объектов в языках С#, Java, С++, Delphi и др. используется понятие класс, аналогичное обыденному смыслу этого слова в контексте «класс членистоногих», «класс млекопитающих», «класс задач» и т. п. Класс является обобщенным понятием, определяющим характеристики и поведение некоторого множества конкретных объектов этого класса, называемых экземплярами класса. В последнее время в класс часто добавляется третья составляющая - события, на которые может реагировать объект класса.

Все классы библиотеки .NET, а также все классы, которые создает программист в среде .NET, имеют одного общего предка - класс object и организованы в единую иерархическую структуру. Внутри нее классы логически сгруппированы в так называемые пространства имен, которые служат для упорядочивания имен. Пространства имен могут быть вложенными, их идея аналогична знакомой вам иерархической структуре каталогов на компьютере.

Обычно в одно пространство имен объединяют взаимосвязанные классы. Например, пространство System.Net содержит классы, относящиеся к передаче данных по сети, System.Windows . Forms - элементы графического интерфейса пользователя, такие как формы, кнопки и т. д. Имя каждого пространства имен представляет собой неделимую сущность, однозначно его определяющую.

Среда Visual Studio.NET

Среда разработки Visual Studio.NET предоставляет мощные и удобные средства написания, корректировки, компиляции, отладки и запуска приложений, использующих .NET-совместимые языки. Корпорация Microsoft включила в платформу средства разработки для четырех языков: С#, VB.NET, С++ и J#.

Платформа .NET является открытой средой. Это значит, что компиляторы для нее могут поставляться и сторонними разработчиками. К настоящему времени разработаны десятки компиляторов для .NET, например, Ada, COBOL, Delphi, Eiffel, Fortran, Lisp, Obe- ron, Perl и Python.

Приложение в процессе разработки называется проектом. Проект объединяет все необходимое для создания приложения: файлы, папки, ссылки и прочие ресурсы. Среда Visual Studio.NET позволяет создавать проекты различных типов, например:

Windows-приложение использует элементы интерфейса Windows, включая формы, кнопки, флажки и пр.;

консольное приложение выполняет вывод «на консоль», то есть в окно командного процессора;

библиотека классов объединяет классы, которые предназначены для использования в других приложениях;

веб-сервис - компонент, методы которого могут вызываться через Интернет.

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

Знакомство со средой Microsoft Visual Studio 2010 (язык С#).

Microsoft Visual Studio 2010 доступна в следующих вариантах:

Express - бесплатная среда разработки, включающая только базовый набор возможностей и библиотек;

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

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

Ultimate - наиболее полное издание Visual Studio, включающие все доступные инструменты для написания, тестирования, отладки и анализа программ, а также дополнительные инструменты для работы с базами данных и проектирования архитектуры ПО.

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

После щелчка на кнопке OK среда создаст решение и проект с указанным именем.

В верхней части экрана располагается главное меню (с разделами Файл, Правка, Вид и т. д.) и панели инструментов. Панелей инструментов в среде великое множество, и если включить их все, они займут половину экрана. При создании проекта необходимо указать язык C# и тип проекта.

В верхней правой части экрана располагается окно управления проектом. Обозреватель решении (если оно не отображается, следует воспользоваться командой Вид * Обозреватель решении главного меню). В окне перечислены все ресурсы, входящие в проект: ссылки на библиотеку, и информация о сборке и файл с исходным текстом класса (Classl.cs). В этом же окне можно увидеть и другую информацию, если перейти на вкладку Командный обозреватель, ярлычок которой находится в верхней части окна. На этой вкладке представлен список всех классов, входящих в приложение, их элементов и предков. С помощью проводника Windows можно увидеть какие файлы создала среда для поддержки проекта. На заданном диске появилась папка с указанным именем, содержащая несколько других файлов и вложенных папок. Среди них - файл проекта (с расширением csproj), файл решения (с расширением sln) и файл с кодом класса (Classl.cs).

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

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

Заготовка консольной программы

Рассмотрим каждую строку заготовки программы (пример 1). Не надо пытаться сразу понять абсолютно все, что в ней написано. Цель - изучить принципы работы в оболочке, а не досконально разобраться в программе.

Пример 1. Заготовка консольной программы

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

namespace ConsoleApplication1

{

/// <summary>

/// Summary description for Classl. /// </summary>

class Classl

{

/// <summary>

/// The main entry point for the application. /// </summary>

static void Main(string[] args)

{

//

// TODO: Add code to start application

// here //

}

}

}

Директива using System разрешает использовать имена стандартных классов из пространства имен System непосредственно (без указания имени пространства).

Директивы :

using System.Collections.Generic;

using System.Linq;

using System.Text;

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

Ключевое слово namespace создает для проекта собственное пространство имен, названное по умолчанию ConsoleApplicationl. Это сделано для того, чтобы можно было давать программным объектам имена, не заботясь о том, что они могут совпасть с именами в других пространствах имен.

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

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

В нашей заготовке программы всего один класс, которому по умолчанию задано имя Class. Описание класса начинается с ключевого слова class, за которым следуют его имя и далее в фигурных скобках - список элементов класса (его данных и функций, называемых также методами).

ВНИМАНИЕ!!! Фигурные скобки являются важным элементом синтаксиса. Каждой открывающей скобке соответствует своя закрывающая, которая обычно располагается ниже по тексту с тем же отступом. Эти скобки ограничивают блок, внутри которого могут располагаться другие блоки, вложенные в него, как матрешки. Блок может применяться в любом месте, где допускается отдельный оператор.

В данном случае внутри класса только один элемент - метод Main. Каждое приложение должно содержать метод Main - с него начинается выполнение программы. Все методы описываются по единым правилам.

Упрощенный синтаксис метода:

[ спецификаторы ] тип имя_метода ( [ параметры ] )

{

тело метода: действия, выполняемые методом

}

Наряду с понятием «метод» часто используется другое - функция-член класса. Метод является частным случаем функции - законченного фрагмента кода, который можно вызвать по имени.

Среда поместила внутрь метода Main комментарий:

// TODO: Add code to start application here

Это означает: «Добавьте сюда свой код, выполняемый при запуске приложения». Добавим после строк комментария (но не в той же строке!) строку

Console.WriteLine("BceM привет!!!");

Здесь Console - это имя стандартного класса из пространства имен System. Его метод WriteLine выводит на экран заданный в кавычках текст. Как видите, для обращения к методу класса используется конструкция

имя_класса.имя_метода.

Если вы не сделали ошибку в первом же слове, то сразу после ввода с клавиатуры следом за словом Console символа точки среда выведет подсказку, содержащую список всех доступных элементов класса Console. Выбор нужного имени выполняется либо мышью, либо клавишами управления курсором, либо вводом одного или нескольких начальных символов имени. При нажатии клавиши Enter выбранное имя появляется в тексте программы.

Не стоит пренебрегать возможностью автоматического ввода - это убережет от опечаток и сэкономит время. Если подсказка не появляется, это свидетельствует об ошибке в имени или в месте рас - положения в программе вводимого текста.

Программа должна приобрести вид, приведенный в Примере 2. Обратите внимание на то, что после внесения изменений около имени файла на ярлычке в верхней части окна редактора появился символ * - это означает, что текст, сохраненный на диске, и текст, представленный в окне редактора, не совпадают. Для сохранения файла воспользуйтесь командой Файл * Сохранить главного меню или кнопкой Save на панели инструментов (текстовый курсор должен при этом находиться в окне редактора). Впрочем, при выходе из программы среда сохранит исходный текст самостоятельно.

Запуск программы

Самый простой способ запустить программу - нажать клавишу F5 (или выбрать в меню команду Отладка * Начать отладку). Если программа написана без ошибок, то фраза

Всем привет! ! !

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

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

ПРАВИЛА ВЫПОЛНЕНИЯ РАБОТ

При выполнении лабораторных работ студент обязан.

1. Заранее (дома) подготовиться к лабораторной работе. Для этого необходимо:

- изучить теоретическую часть к лабораторной работе, изложенную в методических указаниях (целесообразно использовать лекции и указанную в них литературу);

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

- оформить отчет по лабораторной работе по следующим правилам.

Правила оформления отчёта.

Отчёт оформляется на листах формата А4, строго рукописно и включает в себя:

- титульный лист, с указанием учебного заведения (Хмельницький національний університет), кафедры ( кафедра: “Кафедри прикладної математики і соціальної інформатики”), номера лабораторной работы, её названия, варианта, ФИО и группы студента, ФИО преподавателя и настоящего года;

- теоретическую часть (краткий конспект, минимум две страницы);

- текст задания (строго по тексту методических указаний);

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

- исходные данные, данные для тестирования программы;

- место, оставленное для записи результатов, полученных на занятии с помощью ПК.

2. Представить подготовленный отчёт преподавателю.

3. Получить у преподавателя доступ к ПК и выполнить на нём своё задание.

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

5. Защитить лабораторную работу.

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

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

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

ЛАБОРАТОРНАЯ РАБОТА № 1

Приложения C# для расчетов по формулам, консольный ввод-вывод.

1. Краткие теоретические сведения Типы данных

Язык C# имеет набор встроенных типов, которые рассматриваются как псевдонимы типов в пространстве имен System. Например, тип string - это псевдоним типа System.String, а тип int - псевдоним типа System.Int32. Все встроенные типы подразделены на группы: целочисленные типы; вещественные типы; логический тип; символьные типы; объектный тип (object). Описание типов приведено в таблице 1.1.

Таблиця 1.1

Тип даних

Ключове слово

Псевдонім класу бібліотеки NET

Опис

Розмір (байт)

Логічний

bool

System.Boolean

-

-

Цілий

Int

Shot

Byte

Sbyte

Long

System.Int32

System.Int16

System.Byte

System.SByte

System.Int64

зі знаком

зі знаком

без знаку

зі знаком

зі знаком

32

16

8

8

64

Дійсний

Float

Double

System.Single

System.Double

7 цифр

15 цифр

32

64

Рядковий символьний

String

Char

System.String

System. Char

Рядок символів Unicode

-

16

Будь-який тип

object

System.Object

Об'єктний

-

Иерархия классов NET Framework имеет один общий корень - класс System.Object. Все типы разделяются на две категории: размерные типы и ссылочные типы.

При создании переменной размерного типа под нее в стеке выделяется определенный объем памяти, соответствующий типу этой переменной. При передаче такой переменной в качестве параметра выполняется передача значения, а не ссылки на него. Значение размерного типа не может быть равным null. К размерным типам, например, относятся целочисленные и вещественные типы, структуры.

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

Структура приложения на языке С#.

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

Интегрированная среда проектирования Visual Studio позволяет для создания проектов на разных языках программирования использовать различные инструментальные средства проектирования (например, Microsoft Visual Basic, Microsoft Visual C#).

Любое приложение на языке C#, разрабатываемое в среде проектирования Visual Studio, реализуется как отдельный проект. Приложение на языке С# может состоять из нескольких модулей. Каждый модуль C# может содержать код нескольких классов (при создании приложения в среде Visual Studio.NET каждый класс С# автоматически помещается в отдельный модуль - файл с расширением cs).

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

Точкой входа в программу на языке C# является метод Main. Этот метод может записываться как без параметров, так и с одним параметром типа string - указателем на массив строк, который содержит значения параметров, введенных при запуске программы. В отличие от списка параметров, задаваемых при запуске С-прило- жения, список параметров С#-приложения не содержит в качестве первого параметра имя самого приложения. Код метода указывается внутри фигурных скобок:

static void Main(string[] args)

{

}

Ключевое слово static определяет, что метод Main является статическим методом, вызываемым без создания экземпляра объекта типа класса, в котором этот метод определен. Метод, не возвращающий никакого значения, указывается с ключевым словом void. Однако метод Main может возвращать значение типа int.

Пример 1. Вывод сообщения на консоль.

static void Main()

{

Console.WriteLine("Уpa!\n Сегодня \"Информатика\"!!!");

}

Замечание. Для отладки можно использовать команду меню Debug\Start Without Debugging. На экране появится окно с результатом исполнения. Обратите внимание на надпись в конце программы: Press any key to continue, которая не была предусмотрена. При нажатии любой клавиши окно закрывается. Это результат срабатывания встроенной разработчиками компилятора функции «остановки экрана» для того, чтобы можно было бы сколь угодно долго его рассматривать.

Можно использовать команду Debug\Start Debugging, но тогда окно закроется и мы не сможем рассмотреть искомый результат. Для того чтобы обойти это неудобство, следует при разработке программы предусмотреть собственную остановку экрана. Для этого используется команда Console.Read();

Константы

Это неизменяемые в процессе выполнения программы величины.

Целые константы - наиболее распространенный тип int. Это целое число, которое может быть отрицательным, положительным или нулем -12, 5, 0 (все целые со знаком 32 бита). Их можно записывать с суффиксом -12L (длинное целое 64 бита), 5u (целое без знака 8 бит)

Вещественные константы с фиксированной точкой. При записи константы типа float(32 бита) необходимо, чтобы за значением шел суффикс символ f или F 1.2, -1.234, при записи константы типа double (64 бита) можно записать суффикс «d» или «D», но это не является обязательным условием: 1234.5678, 12.3d. Дробная часть отделяется от целой части точкой.

Вещественные константы с плавающей точкой. При записи константы типа float(32 бита) необходимо, чтобы за значением шел суффикс символ f или F: 1.2E-3f (число 0.0012), при записи константы типа double (64 бита) -1.34E5 (число -134000) наличие суффикса не требуется.

Символьные константы. Символьная константа char может представлять собой 16-битный символ Unicode ('a') или управляющие символы (возврат каретки ('\r'), перевод страницы ('\f'), горизонтальную табуляцию ('\t'), и другие), заключенный в апострофы.

Строковые константы - это последовательность символов, заключенная в кавычки, или константы string. Строка, состоящая из символов, например "Уpa!\n Сегодня \"Информатика\"!!!"

Логическая константа. Задается одним из двух значений true («истина») или false («ложь»). Используется в C# в логических выражениях, операторах условного перехода.

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

const float p = 3.14159f

Переменные

Переменная - именованная область памяти, для хранения данных определенного типа. При выполнении программы значение переменной величины можно изменять. Все переменные должны быть описаны явно, при описании переменной задается ее значение и тип. При объявлении переменной может быть задано начальное значение.

Имя переменной может содержать буквы, цифры и символ подчеркивания. Прописные и строчные буквы различаются. Например, переменные Long, LONG, long - три разных переменные.

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

Правильные имена переменных: MaxLen, iMaxLen, Max_Len

Неправильные имена переменных: 2Len, Le#

Примеры описания переменных:

int a = -14; // числовая целая 32 бита

float c = -0.00151f; // числовая вещественная 32

// бита

double i = 1234.56789; // числовая вещественная 64

// бита

bool l = false; // логическая 16 бит

string name = "Petrov"; // строковая

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

Примеры выражений:

2 * 2 + 1 полученное значение 5

1 / 2 - 3 полученное значение -3

1 / 2 - 3 полученное значение -2.5

Присвоение значения переменной представляет оператор присваивания (знаки основных операций приведены в таблице 1.2) : y = 2*x*x + 3*x - 1.

В этом примере сначала производятся вычисления правой части оператора присваивания « = », а затем полученное значение присваивается переменной у. Для текстовых данных выражение можно записать в следующем виде:

string kaf = "Кафедра" + "ПМиСИ";

В этом примере строки по правую сторону от оператора присваивания объединяются, чтобы получить строку "Кафедра + ПМиСИ", которая затем присваивается переменной kaf.

Таблица 1.2 Знаки операций

Знак операции

Название

+

Сложение

-

Вычитание

*

Умножение

/

Деление

%

Остаток от деления

Если в арифметических выражениях используются целые числа, то результатом вычислений будет целое число, и любой остаток от деления будет отброшен. Для получения остатка можно использовать соответствующую операцию %, например 10 % 3 возвращает остаток от целочисленного деления, равный 1.

Когда в арифметических выражениях используются числа с плавающей точкой, то результатом деления 10f / 3f будет число 3,333333.

Математические функции

С# содержит большое количество встроенных математических функций, которые реализованы в классе Math пространства имен System.

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

Замечание. Использование нескольких функций с одним и тем же именем, но с различными типами параметров, называется перегрузкой функции. Например, функция Math.Abs(), вычисляющая модуль числа, имеет 7 перегруженных версий: double Math.Abs (double x), float Math.Abs (float x), int Math.Abs(int x), и т. д. (таблица 1.3)

Таблица 1.3 Математические функции

Название

Описание

1.

Math.Abs(вираз)

Модуль

2.

Math.Ceiling(вираз)

Округление до большего целого

3.

Math.Cos ( вираз )

Косинус

4.

Math.E

Число е

5.

Math.Exp(вираз)

Экспонента

6.

Math.Floor(вираз)

Округление до меньшего целого

7.

Math.Log(вираз)

Натуральный логарифм

8.

Math.Log10(вираз)

Десятичный логарифм

9.

Math.Max(вираз1, вираз2)

Максимум ив двух

значений

10.

Math.Min (вираз1, вираз2)

Минимум из двух значений

11.

Math.PI

Число

12.

Math.Pow(вираз1, вираз2)

Возведение в степень

13.

Math.Roundl(вираз)

Простое округление

Math.Round(вираз,число)

Округление до заданного

числа цифр

14.

Math.Sign(вираз)

Знак числа

15.

Math.Sin(вираз)

Синус

16.

Math.Sqrt(вираз)

Квадратный корень

17.

Math.Tan (вираз)

Тангенс

Пример 2. Вычислить значения функции при х = 2,5

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

namespace ConsoleApplication1

{

class Example2 // начало описания класса

// Example2

{

static void Main()

{

double p = 3.14159; double x = 2.5;

double y = Math.Cos(p * x)/(1 + x*x);

Console.WriteLine();

Console.WriteLine(" x = {0} \t y = {1} ",x, y);

}

}

}

Эта программа выводит следующее окно с результатом.

Замечание. Функция Console.WriteLine() выводит на экран пустую строку. Это сделано для более комфортной работы

Организация ввода-вывода данных.

Программа при вводе данных и выводе результатов взаимодействует с внешними устройствами. Совокупность стандартных устройств ввода (клавиатура) и вывода (экран) называется консолью. В языке С# нет операторов ввода и вывода. Вместо них для обмена данными с внешними устройствами используются специальные объекты. В частности, для работы с консолью используется стандартный класс Console, определенный в пространстве имен System.

Ввод данных

Для ввода данных обычно используется метод ReadLine, реализованный в классе Console. Особенностью данного метода является то, что в качестве результата он возвращает строку (string).

Пример:

static void Main()

{

string s = Console.ReadLine(); Console.WriteLine(s);

}

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

Пример:

static void Main()

{

string s = Console.ReadLine();

int x = int.Parse(s); // преобразование строки в

// число

Console.WriteLine(x);

}

Или сокращенный вариант:

static void Main()

{

//преобразование введенной строки в число

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

Console.WriteLine(x);

}

Для преобразования строкового представления целого числа в тип int мы используем метод int.Parse(), который реализован для всех числовых типов данных. Таким образом, если нам потребуется преобразовать строковое представление в вещественное, мы можем воспользоваться методом float.Parse() или double. Parse(). В случае, если соответствующее преобразование выполнить невозможно, то выполнение программы прерывается и генерируется исключение System.FormatExeption (входная строка имела неверный формат).

Вывод данных

В приведенных выше примерах мы уже рассматривали метод WriteLine, реализованный в классе Console, который позволяет организовывать вывод данных на экран. Однако существует несколько способов применения данного метода (таблица 1.4):

Таблица 1.4. Способы вывода

Console.WriteLine(x);

на экран выводится значение идентификатора х

Console.WriteLine("x=" + x +"y=" + y);

на экран выводится строка, образованная последовательным слиянием строки "х=", значения х, строки "у=" и значения у

Console.WriteLine ("x={0} y={1}", x, y);

на экран выводится строка, формат которой задан первым аргументом метода, при этом вместо параметра {0} выводится значение х, а вместо {1} - значение

программа формула цикл форматирование

Если использовать при выводе вместо метода WriteLine метод Write, вывод будет выполняться без перевода строки.

Использование управляющих последовательностей.

\n

Перевод строки

\'

Апостроф

\r

Возврат каретки

\”

Кавычки

Таблица 1.5. Управляющие символы

Вид

Наименование

Вид

Наименование

\a

Звуковой сигнал

\t

Горизонтальная табуляция

\b

Возврат на шаг назад

\v

Вертикальная табуляция

\f

Перевод страницы

\\

Обратная косая черта

Управляющей последовательностью называют определенный символ, предваряемый обратной косой чертой. Данная совокупность символов интерпретируется как одиночный символ и используется для представления кодов символов, не имеющих графического обозначения (например, символа перевода курсора на новую строку) или символов, имеющих специальное обозначение в символьных и строковых константах (например, апостроф). Рассмотрим управляющие символы (таблица 1.5):

Пример 3. Вывести сообщение о версии установленной операционной системы, текущую дату и время.

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

namespace ConsoleApplicationl

{

class Program

{

static void Main(string[] args)

{

// вывести версию операционной системы

OperatingSystem os = System.Environment.OSVersion;

Console.WriteLine("Platform: {0}",os.Platform);

System.Console.WriteLine("The current date and time is

" + System.DateTime.Now);

// дата и время System.Console.ReadLine();

}

}

}

Пример 4. Использование консольного ввода для вычисления значений функции

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

namespace lab0

{

class Program

{

static void Main(string[] args)

{

System.Console.WriteLine("The current date and time is

" + System.DateTime.Now);

double pi = 3.14159;

Console.WriteLine("Input x =\r");

double x = Convert.ToDouble(Console.ReadLine());

double y = Math.Cos(pi * x)/(1 + x*x);

Console.WriteLine(" x = {0} \t y = {1} ",x,y);

Console.ReadKey();

}

}

}

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

Задание 1. Напишите процедуру, выводящую сообщение о версии установленной операционной системы, текущей даты и времени (пример 3).

Задание 2. Составить процедуру для выполнения расчетов функции, значения задавать в диалоге с использованием метода Console.ReadLine() (пример 4) см. таблицу 1.6;

Таблица 1.6

Bap.

Функция

X

У

1

0,31

2,5

-0,0049

2

arcsin(cos px)

-0,75

1,2

-0,018

3

2,23

3,2

-0,018

4

-0,35

1,5

-1,318

5

0,40

1,5

0,016

6

2,26

1,2

0,235

7

2,09

1,7

0,920

8

-0,26

0,25

-0,0049

9

-0,61

0,5

-0,012

10

0,97

-0,5

-0,0024

11

2,81

1,25

0,253

12

2,03

1,7

1,043

13

1,97

0,7

0,0017

14

0,96

1,23

-0,528

15

1,32

-0,5

0,307

16

-0,71

0,7

0,0252

17

-0,73

1,53

-4,197

18

2,15

1,2

-1,485

19

0,62

1,1

-0,0082

20

2,07

1,35

-0,1699

21

0,69

1,15

0,0038

22

1,28

0,23

-0,0009

23

-0,63

1,35

6,0827

24

1,78

2,3

0,0064

25

0,23

1,4

-0,0021

26

-0,23

0,96

-1,0396

27

1,83

-0,5

0,2601

28

0,47

1,2

-0,0073

29

0,66

-0,5

-0,0001

30

0,71

1,4

-0,0012

ЛАБОРАТОРНАЯ РАБОТА № 2

Ввод-вывод информации, с использованием файлов. Форматирование значений данных.

1. Краткие теоретические сведения

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

Управление форматом числовых данных

Пусть в программе определена переменная типа int с именем

value:

int value = 250;

До этого момента переменные выводились следующим образом:

System.Console.WriteLine ("value =" + value);

Результат вывода: value = 250

Можно вывести значение value, используя требуемое число позиций (например 5):

System.Console.WriteLine("value = {0, 5}", value);

Первое число в фигурных скобках означает номер переменной - это 0, что соответствует первой переменной value в списке метода System.Console.WriteLine(). Второе число в фигурных скобках означает количество позиций, отведенное для отображения переменной. В данном примере оно равно 5. При выводе переменной длина ее представления будет дополнена пробелами слева. Если количество позиций меньше чем число знаков переменной, то оно будет выведено без форматирования.

Можно задать форматирование для вывода каждой переменной:

int a = -12;

int b = 20;

System.Console.WriteLine("a = {0, 4}, b = {1, 3}", a, b);

Результат вывода: a = -12, b = 20

Форматированный вывод чисел с плавающей точкой немного более сложный. Предположим, определена переменная типа double с именем

myDouble:

double myDouble = 1234.56789;

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

System.Console.WriteLine("myDouble = {0, 10:f3}"; myDouble);

Символы f3 в этом примере означают, что значение выводится как число с плавающей точкой (символ f) , в дробной части будет выведено три цифры.

Точно такое же форматирование можно применять для типов float и decimal. Например:

float myFloat = 1234.56789f;

System.Console.Write("myFloat ={0, 0:f3}"myFloat);

decimal myDecimal = 1234.56789m;

System.Console.Write("myDecimal = {0, 10:f3}", myDecimal);

Результат вывода:

myFloat = 1234.568;

myDecimal 1234.568;

В списке аргументов методов WriteLine или Write задается строка вида {n, w: спецификатор k} - где n определяет номер идентификатора из списка аргументов метода WriteLine, спецификатор - определяет формат данных, w - целая константа без знака, задает количество символов (длину поля), a k - количество позиций для дробной части значения идентификатора.

Для каждого типа данных существует своя форма представления. Данные сведены в таблицу 2.1.

Таблица 2.1

Тип данных

Форма

Целые

W

Числовые

Вещественные с фиксированной точностью

W:Fk

Вещественные в экспоненциальном формате

W:Ek

Логические

W

Символьные

W

Символы форматирования F, E (другие символы форматирования приведены в табл. 2.2) - определяют тип и характеристики объектов ввода-вывода. Параметр w - целая константа без знака, задает количество символов (длину поля), отводимых для ввода- вывода объекта. Параметр k - целая константа без знака определяет для числовых данных:

количество позиций, для цифр в дробной части числа (форма F);

количество позиций для цифр, в дробной части мантиссы числа (форма E или G).

Таблица 2.2

Символ

Формат

Значение

C или c

Денежный. По умолчанию ставит знак р. Изменить его можно с помощь объекта NumberFormatInfo

Задается количество десятичных разрядов.

D или d

Целочисленный (используется только с целыми числами)

Задается минимальное количество цифр. При необходимости результат дополняется начальными нулями

E или e

Экспоненциальное представление чисел

Задается количество символов после запятой. По умолчанию используется 6

F или f

Представление чисел с фиксированной точкой

Задается количество символов после запятой

G или g

Общий формат (или экспоненциальный, или с фиксированной точкой)

Задается количество символов после запятой. По умолчанию выводится целая часть

N или n

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

Задается количество символов после запятой. По умолчанию - 2, если число целое, то ставятся нули

X или x

Шестнадцатеричный формат

P или p

Процентный

В качестве спецификаторов могут использоваться следующие значения:

Пример 1. Форматированный вывод данных различного типа.

public static void Main()

{

int a = -14;

float c = -0.00151f;

double i = 1234.56789;

bool l=false;

string name="Petrov";

System.Console.WriteLine("name = {0, 6}, l = {1, 4}", name,l);

System.Console.WriteLine("a ={0, 4}, c = {1,10:f5}, i =

{1,20:e8}", a,c,i);

System.Console.WriteLine(" ");

System.Console.WriteLine(" Для выхода нажмите на Enter");

System.Console.ReadLine();

}

Пример 2. Ввод в диалоге и форматированный вывод данных различного типа.

public static void Main()

{

int a; // = -14;

float c; // = -0.00151f;

double i; // = 1234.56789;

bool l; // = false;

string name; //="Petrov";

Console.WriteLine("Input фамилию ");

name = Console.ReadLine();

Console.WriteLine("Input a");

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

Console.WriteLine("Input c");

c = Convert.ToSingle(Console.ReadLine());

Console.WriteLine("Input i");

i = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("Input l");

l = Convert.ToBoolean(Console.ReadLine());

System.Console.WriteLine(" Результаты форматирования \n

name = {0, 6}, l = {1, 4}", name,l);

System.Console.WriteLine("a ={0, 4}, c = {1,10:f5},

i = {2,20:e8}", a,c,i);

System.Console.WriteLine(" ");

System.Console.WriteLine("Для выхода нажмите на Enter");

System.Console.ReadLine();

}

Организация ввода вывода с использованием файлов

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

На самом низком уровне иерархии потоков ввода-вывода находятся потоки, оперирующие байтами. Это объясняется тем, что многие устройства при выполнении операций ввода-вывода ориентированы на байты. Однако для человека привычнее оперировать символами, поэтому разработаны символьные потоки, которые фактически представляют собой оболочки, выполняющие преобразование байтовых потоков в символьные и наоборот. Кроме этого, реализованы потоки для работы с int-, double-, short- значениями, которые также представляют оболочку для байтовых потоков, но работают не с самими значениями, а с их внутренним представлением в виде двоичных кодов.

Центральную часть потоковой С#-системы занимает класс Stream пространства имен System.IO. Класс Stream представляет байтовый поток и является базовым для всех остальных потоковых классов. Чтобы создать символьный поток нужно поместить объект класса Stream (например, FileStream) "внутрь" объекта класса StreamWriter или объекта класса StreamReader. В этом случае байтовый поток будет автоматически преобразовываться в символьный.

Класс StreamWriter предназначен для организации выходного символьного потока. Этот класс содержит несколько конструкторов. Так, например, создать экземпляр класса StreamWriter можно следующим образом:

StreamWriter fileOut = new StreamWriter(new FileStream("text.txt",

FileMode.Create, FileAccess.Write));

Эта версия конструктора позволяет ограничить доступ только чтением или только записью:

FileStream(string filename, FileMode mode, FileAccess how)

где:

1. параметры filename и mode имеют то же назначение, что и в предыдущей версии конструктора;

2. параметр how, определяет способ доступа к файлу и может принимать одно из значений, определенных перечислением FileAccess:

FileAccess.Read - только чтение;

FileAccess.Write - только запись;

FileAccess.ReadWrite - и чтение, и запись.

Другой вид конструктора позволяет открыть поток сразу через обращения к файлу:

StreamWriter(string name),

где параметр name определяет имя открываемого файла.

Например, обратиться к данному конструктору можно следующим образом:

StreamWriter fileOut = new StreamWriter("c:\temp\t.txt");

И еще один вариант конструктора StreamWriter:

StreamWriter(string name, bool appendFlag),

где параметр name определяет имя открываемого файла; параметр appendFlag может принимать значение true - если нужно добавлять данные в конец файла, или false - если файл необходимо перезаписать. Например:

StreamWriter fileOut=new StreamWriter("t.txt", true);

Теперь для записи данных в поток fileOut можно обратиться к методу WriteLine. Это можно сделать следующим образом:

fileOut.WriteLine("test");

В данном случае в конец файла t.txt будет дописано слово test.

Класс StreamReader предназначен для организации входного символьного потока. Один из его конструкторов выглядит следующим образом:

StreamReader(Stream stream),

где параметр stream определяет имя уже открытого байтового потока. Этот конструктор генерирует исключение типа ArgumentException, если поток stream не открыт для ввода.




Подобные документы

  • Средства интегрированной среды Microsoft Visual Studio, предоставляемые программисту для реализации программ на языке С++. Особенности стиля написания программ. Типовые приемы и методы создания и отладки программ. Листинги программ и их тестирование.

    лабораторная работа [814,3 K], добавлен 26.05.2013

  • Разработка игры "Угадай персонажа", ее суть и содержание. Запоминание новых персонажей и вопросов, коррекция базы данных. Использование языка программирования С++ и среды разработки Microsoft Visual Studio 2010. Алгоритмы и методы, структура программы.

    курсовая работа [571,9 K], добавлен 14.07.2012

  • Создание программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С# средствами Microsoft Visual Studio 2010. Построение алгоритма реализации. Определение математического аппарата, применение его в задаче.

    курсовая работа [500,4 K], добавлен 13.01.2015

  • Microsoft Visual C++ и среда программирования Microsoft Developer Studio 6.0. Решение интеллектуальной задачи на компьютере. Построение алгоритма кодирования на Visual C++. Алгоритм решения задачи. Описание программы "Sort". Инструкции пользователя.

    курсовая работа [46,0 K], добавлен 27.11.2007

  • Введение в Microsoft Visual Studio. Диалоговое окно "Восстановленные файлы" интегрированной среды разработки. Веб-обозреватель интегрированной среды разработки. Диалоговое окно "Проверка подлинности прокси-сервера". Сохранение и восстановление файлов.

    реферат [22,0 K], добавлен 29.05.2013

  • Требования к MS Office 2007. Набор средств разработки Visual Studio Tools for Office как альтернатива VBA. Разработка СУБД на базе MS Access. Разработка надстройки "Электронные компоненты" для PowerPoint на языке C# в среде MS Visual Studio 2010.

    дипломная работа [5,2 M], добавлен 03.05.2013

  • Изучение особенностей проектирования прикладных программ с помощь средств Visual Studio 2010 на языке C#. Расчет конического соединения, конусного градиента, усилия для разрыва соединения и требуемой силы сжатия. Реализация и тестирование программы.

    курсовая работа [1,7 M], добавлен 19.02.2013

  • Разработка программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С средствами Microsoft Visual Studio 2010. Построение алгоритма реализации. Класс программы, инструкция по использованию программы.

    курсовая работа [1,0 M], добавлен 26.12.2013

  • Общие сведения о работе программы в среде программирования Microsoft Visual Studio 2008, на языке программирования C++. Ее функциональное назначение. Инсталляция и выполнение программы. Разработанные меню и интерфейсы. Алгоритм программного обеспечения.

    курсовая работа [585,5 K], добавлен 24.03.2009

  • Создание программы, реализующей игру "Линии". Среда разработки программы, описание ее общего вида. Основные алгоритмы программы. Реализация программы в среде разработки Microsoft Visual Studio 2008 на языке объектно-ориентированного программирования С++.

    курсовая работа [639,0 K], добавлен 16.03.2012