Лабораторная работа 1 Выполнение простой программы. Организация ввода и вывода данных Цель задания Организация ввода и вывода данных
Скачать 468.55 Kb.
|
1 2 Лабораторная работа №1Выполнение простой программы. Организация ввода и вывода данных1. Цель задания:Организация ввода и вывода данных. Вычисление выражений простых типов с использованием стандартной библиотеки Math для вычисления математических функций. Организация тестирования программы с проверкой достаточности тестов. 2. Теоретические сведения2.1. Общая характеристика платформы MSDNПлатформа MSDN (Microsoft.Net) предназначена для разработки и исполнения приложений различных типов: автономное консольное приложение с использованием текстового интерфейса пользователя; автономное Windows-приложение с использованием графического интерфейса пользователя; библиотека классов, которые предназначены для использования в других приложениях; Web-приложение, доступ к которому выполняется через браузер и которое по запросу формирует Web-страницу и отправляет ее клиенту по сети; Web-сервис – компонент, методы которого могут вызываться через Интернет. Приложение может выполняться в режиме управляемого кода или небезопасного кода. В первом случае исходный код должен быть переведен на специально разработанный для платформы промежуточный язык MSIL (MS Common Intermediate Language). Язык CIL по синтаксису и мнемонике напоминает язык ассемблера. Его можно рассматривать как ассемблер виртуальной машины .NET. В то же время язык CIL содержит некоторые достаточно высокоуровневые конструкции, повышающие его уровень по сравнению с ассемблером для любой реально существующей машины, и писать код непосредственно на CIL легче, чем на ассемблере для реальных машин. Поэтому его можно рассматривать как своеобразный «высокоуровневый ассемблер». Для исполнения кода на промежуточном языке приложения используется специальная программная компонента платформы – общеязыковая среда исполнения CLR (Common Language Runtime) — «общеязыковая исполняющая среда» — компонент пакета Microsoft .NET Framework, виртуальная машина, исполняющий программы, написанные на .NET-совместимых языках программирования. CLR интерпретирует и исполняет код на языке MCIL, а также предоставляет MSIL-программам (а следовательно, и программам, написанным на языках высокого уровня, поддерживающих .NET Framework) доступ к библиотекам классов .NET Framework, или так называемой .NET FCL ( Framework Class Library). Одной из основных идей Microsoft .NET является совместимость программных частей, написанных на разных языках. Например, служба, написанная на C++ для Microsoft .NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на C# можно написать класс, наследованный от класса, написанного на Visual Basic .NET, а исключение, созданное методом, написанным на C#, может быть перехвачено и обработано в Delphi. Каждая библиотека (сборка) в .NET имеет сведения о своей версии, что позволяет устранить возможные конфликты между разными версиями сборок. Во втором случае исходный код должен быть переведен на язык машинных команд. Машинный код исполняется непосредственно под управлением операционной системы. Основные преимущества платформы проявляются в режиме управляемого кода. Этот режим принят по умолчанию. Все сказанное в дальнейшем относится к этому режиму. Рисунок 1. Трансляция исходных модулей на язык MSIL Исходные модули транслируются на промежуточный язык MSIL, как показано на Рисунке 1. Код на промежуточном языке рассматривается средой исполнения CLR как исполняемый модуль. Среда исполнения представляет собой программу, надстроенную над операционной системой Windows и выполняемую под ее управлением. C другой стороны, среда исполнения представляет собой функциональный аналог ЭВМ, - виртуальную машину, в которой выполняются программы на промежуточном языке. При вызове метода среда исполнения активизирует транслятор CLR, который переводит код метода с промежуточного языка в машинный код и сохраняет его в памяти. При повторном вызове метода повторная трансляция не выполняется, используется машинный код, сохраненный в памяти. За счет такого подхода достигается эффективность, соизмеримая с эффективностью неуправляемого кода и экономия расхода основной памяти за счет перевода в машинный код не всей программы, а только тех методов, которые были реально вызваны в процессе выполнения программы. Таким образом, каркас платформы образуют две компоненты, показанные на Рис.5: Статическая компонента – базовая библиотека классов, содержащая обширный набор готовых к использованию программных компонент на промежуточном языке. Базовая библиотека классов является общей для всех языков программирования, поддерживаемых в платформе. Динамическая компонента – общеязыковая среда исполнения (CLR). Указанные компоненты являются обязательными для исполнения программ на промежуточном языке MSIL в случае использования на ЭВМ операционных систем Windows. В перспективных операционных системах семейства Windows предполагается включение базовой библиотеки классов и средств исполнения в состав операционной системы. Интегрированная среда разработки MS Visual Studio.NET представляет собой программную компоненту, поддерживающую процесс разработки программ. Возможности интегрированной среды для приложений на всех языках примерно равноценны, но в наибольшей степени возможности среды раскрываются при разработке программ на языке С#. С помощью средств MS Visual Studio.NET выполняется редактирование исходного кода, выполнение приложения в отладочном режиме, визуальное отображение логической структуры приложения, выдачи справочной информации по самой среде, платформе и языкам программирования, что является традиционным для большинства интегрированных сред. Рисунок 2. Интегрированная среда разработки MS Visual Studio.NET Особенностью MS Visual Studio.NET является возможность автоматической генерации исходного кода по визуальному представлению диаграммы классов в нотации UML и наоборот, построение визуального представления диаграммы классов по исходному коду программы. В MS Visual Studio.NET может быть интегрировано специализированное инструментальное средство Rational XDE, ориентированное на решение задач анализа и проектирования программ на языке C# на основе объектно-ориентированного подхода, в результате чего возможности среды по анализу, проектированию и документированию существенно расширяются. Приложение в процессе разработки называют проектом. Проект логически объединяет все необходимые для создания приложения файлы, папки и прочие ресурсы. Типовая структура консольного приложения с некоторыми упрощениями приведена на Рисунке 3. Описание структуры проекта хранится в специальном файле с расширением csproj. Несколько проектов логически могут быть объединены в одно решение. Структура решения хранится в файле с расширением sln. С помощью инспектора решения Solution Explorer, входящего в состав интегрированной среды можно просматривать логическую структуру всех проектов, включенных в решение и выполнять операции по изменению логической структуры решения и проектов. Рисунок 3 Типовая структура консольного приложения 2.2. Консольные приложенияСреда Visual Studio.NET работает на платформе Windows и ориентирована на создание Windows- и веб-приложений, однако разработчики предусмотрели работу с консольными приложениями. При запуске консольного приложения операционная система создает так называемое консольное окно, через которое идет весь ввод-вывод программы. Внешне это напоминает работу в операционной системе в режиме командной строки, когда ввод-вывод представляет собой поток символов. Консольные приложения наилучшим образом подходят для изучения языка, так как в них не используется множество стандартных объектов, необходимых для создания графического интерфейса. 2.3.Структура программы на С#С# — объектно-ориентированный язык, поэтому написанная на нем программа представляет собой совокупность взаимодействующих между собой классов. Описание класса начинается с ключевого слова class, за которым следуют его имя и далее в фигурных скобках — список элементов класса (его данных и функций, называемых также методами). Каждое приложение должно содержать метод Main — с него начинается выполнение программы. Все методы описываются по единым правилам. Упрощенный синтаксис метода: [ спецификаторы ] тип имя_метода ( [ параметры ] ) { тело метода: действия, выполняемые методом } Директива using System разрешает использовать имена стандартных классов из пространства имен System непосредственно (без указания имени пространства). Ключевое слово namespace создает для проекта собственное пространство имен. //подключаем пространство имен System using System; //пространство имен namespace App { //класс class Program { //метод static void Main(string[] args) { // текст программы } } } 2.4. Элементы языка C#Алфавит языка который включает прописные и строчные латинские буквы и знак подчеркивания; арабские цифры от 0 до 9; специальные знаки “{},| []()+-/%*.\’:;&?<>=!#^ пробельные символы (пробел, символ табуляции, символы перехода на новую строку). Из символов формируются лексемы языка: Идентификаторы – имена объектов. В идентификаторе могут быть использованы латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, PROG1, prog1 и Prog1 – три различных идентификатора. Первым символом должна быть буква или знак подчеркивания (но не цифра). Пробелы в идентификаторах не допускаются. В идентификаторах С# разрешается использовать помимо латинских букв буквы национальных алфавитов, например, Массив – разрешенный идентификатор. Ключевые (зарезервированные) слова – это слова, которые имеют специальное значение для компилятора. Их нельзя использовать в качестве идентификаторов. Можно использовать ключевые слова в качестве идентификаторов, если поставить перед ними @, например, @if – разрешенный идентификатор. Знаки операций – это один или несколько символов, определяющих действие над операндами. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в этой операции операндов. Константы – это неизменяемые величины. Существуют логические, целые, вещественные, символьные и строковые константы. Компилятор выделяет константу в качестве лексемы (элементарной конструкции) и относит ее к одному из типов по ее внешнему виду. Разделители – скобки, точка, запятая пробельные символы. 2.5. Константы в C#Константа – это лексема, представляющая изображение фиксированного числового, строкового или символьного значения. Константы делятся на 5 групп: логические; целые; вещественные (с плавающей точкой); символьные; строковые. Компилятор выделяет лексему и относит ее к той или другой группе, а затем внутри группы к определенному типу по ее форме записи в тексте программы и по числовому значению. Целые константы могут быть десятичными и шестнадцатеричными. Таблица 1. Целые константы
Вещественные константы могут иметь две формы представления: с фиксированной точкой и с плавающей точкой. Таблица 2. Вещественные константы
Символьная константа – представляет собой любой символ в кодировке Unicode. Символьные константы записываются в одной из четырех форм: «обычный» символ, имеющий графическое представление (кроме апострофа и символа перевода строки), — 'А', '5', '*', 'ю' ; управляющая последовательность — '\0', '\n'; символ в виде шестнадцатеричного кода — '\xF', '\х74'; символ в виде escape-последовательности Unicode — '\uA81B'. Последовательности, начинающиеся со знака \, называются управляющими, они используются: для представления символов, не имеющих графического отображения, например: \a – звуковой сигнал, \b – возврат на один шаг, \n – перевод строки, \t – горизонтальная табуляция; \0 – нуль-символ. для представления символов: \ , ’ , ? , ” ( \\, \’ ,\? ,\” ); для представления символов с помощью шестнадцатеричных кодов (\х73, \0хF5). Escape-последовательности Unicode служат для представления символа в кодировке Unicode с помощью его кода в шестнадцатеричном виде с префиксом \u или \U. Строковая константа – это последовательность символов, заключенная в кавычки. Внутри строк также могут использоваться управляющие символы. Например: ”\nНовая строка”, ”\nНовый курс\”Алгоритмические языки программирования\””. В С# введен второй вид строковых констант – дословные литералы (verbatim strings). Эти литералы предваряются символом @, который отключает обработку управляющих последовательностей и позволяет получать строки в том виде, в котором они записаны. @”Новый курс “Алгоритмические языки программирования”” 2.6. Типы данных в C#Тип данных однозначно определяет: внутреннее представление данных, а следовательно, и множество их возможных значений; допустимые действия над данными (операции и функции). Типы данных можно классифицировать по различным признакам. По структуре типы C# можно разделить на простые и структурированные. К простым типам относят типы, которые характеризуются одним значением. По тому, кем создан тип данных, выделяют встроенные и пользовательские типы данных. Встроенные типы данных уже существуют в языке, пользовательские типы создаются программистом (классы). По тому, в какой момент выделяется память под переменные данного типа, выделяют статические и динамические данные. Под статические переменные память выделяется в процессе компиляции программы, под динамические данные память выделяется во время выполнения программы с помощью специальных операций (new). По способу хранения выделяют типы-значения и типы-ссылки. Переменные типов-значений представляют собой последовательность байтов в памяти, необходимый объем памяти выделяет компилятор. Переменная ссылочного типа хранит адрес, по которому расположены данные, сами данные хранятся в динамической памяти. Таблица 3. Встроенные типы данных С#
2.7. ПеременныеПеременная в C# – именованная область памяти, в которой хранятся данные определенного типа. У переменной есть имя и значение. Имя служит для обращения к области памяти, в которой хранится значение. Перед использованием любая переменная должна быть описана. Имя переменной должно соответствовать правилам, по которым формируются идентификаторы C#, отражать смысл хранимой величины и быть легко распознаваемым. Тип переменной выбирается исходя из диапазона и требуемой точности представления данных. int a; float x; 2.8. ОперацииВ соответствии с количеством операндов, которые используются в операциях они делятся на унарные (один операнд), бинарные (два операнда) и тернарную (три операнда).
Приоритеты операций.
2.9. ВыраженияИз констант, переменных, разделителей и знаков операций можно конструировать выражения. Каждое выражение представляет собой правило вычисления нового значения. Каждое выражение состоит из одного или нескольких операндов, символов операций и ограничителей. Если выражение формирует целое или вещественное число, то оно называется арифметическим. Пара арифметических выражений, объединенная операцией сравнения, называется отношением. Если отношение имеет ненулевое значение, то оно – истинно, иначе – ложно. 2.10. Ввод и вывод данныхЛюбая программа при вводе исходных данных и выводе результатов взаимодействует с внешними устройствами. Совокупность стандартных устройств ввода и вывода, то есть клавиатуры и экрана, называется консолью. В языке С#, как и во многих других, нет операторов ввода и вывода. Вместо них для обмена с внешними устройствами применяются стандартные объекты. Для работы с консолью в С# применяется класс Console, определенный в пространстве имен System. В этом классе определены методы: Console.Write(форматная строка, [параметры]); Console.WriteLine(форматная строка, [параметры]); где форматная строка – это строковая константа, в которой содержится текст для вывода, параметры – это переменные, значения которых будут при выводе подставлены в форматную строку. Методы отличаются друг от друга тем, что метод WriteLine() выполняет переход на следующую строку после вывода форматной строки. int x=10, y=15; Console.WriteLine(”x={0},\ny={1}”,x,y}; int x=10, y=15; Console.WriteLine(”x=”+x}; Console.WriteLine(”y=”+y}; int x=10, y=15; Console.Write(”x=”+x+”\n”}; Console.Write(”y=”+y+”\n”}; При вводе данных с клавиатуры используются методы Console.Read() и Console.ReadLine(). В классе Console определены методы ввода строки и отдельного символа, но нет методов, которые позволяют непосредственно считывать с клавиатуры числа. Ввод числовых данных выполняется в два этапа: Символы, представляющие собой число, вводятся с клавиатуры в строковую переменную. Выполняется преобразование из строки в переменную соответствующего типа. string buf; Console.WriteLine(”Введите значение переменной”); buf=Console.ReadLine(); int x=int.Parse(buf);//преобразует строку в целое число 2.11. Использование математических функцийВ выражениях часто используются математические функции, например синус или возведение в степень. Они реализованы в классе Math, определенном в пространстве имен System. Таблица 4 Основные поля и методы класса Math
1 2 |