4277

Вычисление арифметических выражений

Лабораторная работа

Информатика, кибернетика и программирование

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

Русский

2012-11-15

327 KB

70 чел.

1. Цель работы

Освоить ввод/вывод чисел в С#;

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

научиться пользоваться встроенной справочной системой С# на примере математических функций;

научиться анализировать сообщения об ошибках С#.

2. Содержание работы

2.1. Арифметические выражения

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

Для программирования вычисления этого выражения на С# необходимо:

  1.  Записать его в виде, пригодном для программирования, заменяя:
    •  дроби на операции деления;
    •  операцию возведения в степень - операциями последовательного умножения;
    •  стандартные математические функции - их обозначениями в С# (с использованием справочной системы если необходимо).

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

а)  a=((b+c)*(b+c)-1.25)/(c-2)/Math.Sqrt(b-5);

б)  a=((b+c)*(b+c)-1.25)/((c-2)*Math.Sqrt(b-5));

  1.  Позаботиться об описании исходных данных и их вводе. В данном выражении для вычисления a необходимы значения переменных b и c, которые могут быть как целыми (int), так и действительными (double). В любом случае для ввода b и c необходимо использовать стандартный метод ReadLine() класса Console. Этот метод вводит символьную строку, которую затем необходимо преобразовать в значение нужного типа, воспользовавшись методами ToInt32() или ToDouble() класса Convert:

int b =  Convert.ToInt32(Console.ReadLine());

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

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

int b, c;    // объявление переменных

// текст, запрашивающий ввод значений         

Console.Write("b = ");

// ввод, преобразование и присваивание    

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

Console.Write("c = ");

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

  1.  Позаботиться об описании результата вычислений (в нашем случае - переменная a)и его выводе на экран. Для вывода на экран числовых и символьных значений используется стандартный метод WriteLine() класса Console:

Console.WriteLine("a = " + a);

Этот метод выводит на консоль текстовую строку, получаемую сцеплением строковой константы "a = " и числового значения переменной a, которое перед выводом автоматически преобразуется в текстовую строку. Сцепление текстовых строк производится с помощью операции «+».

  1.  Если теперь объединить все вышеописанное вместе, получится следующая программа:


2.2. Проверка значений введенных данных

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

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

  •  Контроль корректности ввода числовой информации с клавиатуры (с помощью методов класса Convert);
  •  Контроль принадлежности введенных данных области допустимых значений (с помощью условного оператора if()).

Методы класса Convert выполняют преобразование введенной пользователем символьной строки в необходимый для работы программы тип данных. Если выполнить нужное преобразование невозможно (обычно из-за ошибки пользователя при вводе), возникает исключительная ситуация и программа аварийно заканчивается:

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

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

if(<Проверяемое условие>)

{

Console.WriteLine(“Ошибка при вводе значения А!”);

}

else

{

// Остальные операторы программы

}

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

2.3. Получение контекстной помощи

Справочная система С# содержит (на английском или русском языке в зависимости от используемой версии) достаточно большое количество справочной информации:

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

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

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

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

 

Рис. 1. Экран помощи для метода Math.Abs().

2.4. Выполнение блок-схем алгоритмов

Начиная со второй лабораторной работы и до последней в отчет должны включаться описания алгоритма программы в виде:

  •  Блок-схемы (вторая и третья работы)
  •  Псевдокода (все остальные работы)

Требования к выполнению алгоритма в виде псевдокода изложены в указаниях к работе №4.

Блок-схемы алгоритмов в отчете могут выполняться:

  •  От руки как обыкновенный чертеж;
  •  С помощью встроенного графического редактора MS Word;
  •  С помощью специальных графических редакторов (например, MS Visio).

При выполнении блок-схемы от руки необходимо учесть следующее:

  •  Рекомендуется использовать двойные тетрадные листы в клетку;
  •  Существуют специальные линейки для блок-схем, которые сильно облегчают их изображение.
  •  Размеры блоков должны быть кратны друг другу (то же самое относится к графическим редакторам) – смотри таблицу 1.

Таблица 1.

Основные элементы блок-схем

Изображение и

Размеры

Назначение

Комментарии

1

Начало и завершение программы

  •  Таких блоков в алгоритме должно быть ровно два – «Начало» и «Конец»
  •  а – произвольный размер (например, две клетки или 1 см.)

2

Обмен данными (вод и вывод)

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

3

Ветвление          (условие)

  •  Оба выхода блока обязательно должны быть подписаны («Да» и «Нет», «+» и «-», 1 и 0)
  •  Места для надписи внутри блока немного, поэтому нужно коротко записать смысл логического выражения, например: «точка внутри круга» или «элемент найден» и т.п.

4

Вычисление (преобразование данных)

  •  Если выражение (формула) очень большая, то ее можно записать в другом месте отчета (например, в задании), пронумеровать, а в блоке написать «Вычисление х по формуле (1)»

5

Переходы между блоками

  •  Используются, если невозможно провести соединительные линии без пересечений или блок-схема не умещается на одной странице
  •  Все блоки алгоритма нумеруются (обычно в левом верхнем углу)
  •  Для переходов между блоками на одной странице используются блоки (6) и (7)
  •  Для перехода с одной страницы на другую используются блоки (10) и (15)

2.4.1. Выполнение блок-схем в Microsoft Word

Блок схема выполняется с помощью панели инструментов встроенного графического редактора MS Word [2]. Для включения этой панели необходимо найти кнопку (Рисование) и нажать её. Панель редактора появится в нижней части окна Word. Для рисования используются следующие элементы:

  •  Автофигуры (кнопка в левой части панели), раздел "Блок-схема".
  •  Автофигуры, раздел "Соединительные линии".

Автофигуры, имеющиеся в разделе "Блок-схема", реализуют все стандартные блоки, приведённые в табл. 1. Например, блок «Начало и завершение программы» реализуется элементом «Знак завершения» раздела «Блок-схема». Для вставки любой автофигуры необходимо:

  •  Выбрать её в разделе "Блок-схема" с помощью мыши.
  •  Установить курсор мыши в то место документа, где примерно должна находиться фигура.
  •  Нажать и удерживая левую кнопку мыши, "растянуть" фигуру, придав ей желаемый размер.
  •  Отпустить левую кнопку мыши и снова нажать её внутри фигуры (или на её контуре), чтобы курсор принял вид , и, удерживая левую кнопку, переместить фигуру в необходимое место.
  •  Нажав правую кнопку мыши внутри фигуры, выбрать из появившегося меню команду "Добавить текст". Появится текстовый курсор и возможность ввести необходимую надпись.
  •  Для форматирования шрифта рекомендуется выделить всю автофигуру щелчком на её границе (текстовый курсор должен исчезнуть), а затем установить требуемый шрифт. Рекомендуется использовать шрифт размером 12 или 10 пунктов так, чтобы надпись помещалась внутри поля.
  •  Если в блок-схеме есть несколько однотипных блоков, то рекомендуется нарисовать первый их них, выделить его, скопировать в буфер обмена, а затем вставить его столько раз, сколько необходимо, и отредактировать текст внутри блоков.

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

Разрешается не рисовать стрелки на линиях, если управление передаётся сверху вниз и слева направо. В противоположных случаях наличие стрелок обязательно. Стрелки пересекаться не должны!

2.4.2. Выполнение блок-схем в Microsoft Visio

Программа Microsoft Visio [3] предназначена для выполнения схем, диаграмм и технических иллюстраций. Последняя на сегодняшний день версия этой программы имеет название Microsoft Visio 2005. Инструменты для рисования в Visio очень похожи на аналогичные средства в MS Word, однако они более специализированы и удобны.

Для создания схемы алгоритма (рис. 2) в Visio необходимо выполнить следующие действия:

  1.  Запустить Microsoft Visio. После старта программы (а также при создании нового документа) на экране появляется диалог, позволяющий выбрать тип схемы. От этого выбора зависит набор стандартных элементов, которые могут быть использованы при рисовании. Visio содержит большое количество наборов элементов, позволяющих рисовать схемы любого типа, от простейших организационных диаграмм до планов помещений и географических карт. Для построения схемы алгоритма следует выбрать тип Basic Flowchart, расположенный на странице Flowchart. Схемы этого типа содержат фигуры, такие как прямоугольник, овал, ромб и параллелепипед, соединённые линиями со стрелками. После того, как будет создан новый документ, на экране появится рабочая область документа, и палитра стандартных элементов, расположенная слева.
  2.  Расположить на рабочей области документа необходимые элементы. Для этого достаточно выбрать элемент на палитре и перенести его на рабочую область, в то место, где ему следует находиться. Далее, следует нанести надписи на каждом элементе. Для этого достаточно дважды щёлкнуть на нём мышью и ввести текст надписи.
  3.  Провести соединительные линии. Особенностью Visio является наличие такого инструмента как соединение (Connector tool). Линии, проведённые этим инструментом, могут быть привязаны своим началом и концом к элементам. При перемещении или изменении размеров элементов, соединительные линии будут также изменять своё положение, сохраняя целостность схемы. Для проведения соединительных линий нужно:
  •  выбрать Connector tool на панели инструментов в верхней части экрана;
  •  навести курсор мыши на элемент, из которого будет выходить линия (при этом элемент будет выделяться красной рамкой);
  •  нажать на кнопку мыши и вести курсор до другого элемента, не отпуская кнопку.
  1.  Подправить размеры элементов, если в них не помещается текст надписи и выровнять схему так, чтобы она выглядела красиво. Проверить всю схему ещё раз.
  2.  Выделить все элементы схемы, выбрав в меню Edit пункт Select All (или нажав Ctrl+A), и скопировать их в буфер обмена. Затем можно будет перейти в MS Word и вставить получившуюся схему в отчёт.

3. Задание на выполнение работы

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

4. Выполнение работы

  1.  Получить вариант задания у преподавателя.
  2.  Записать выражение, заданное в полученном варианте в виде, пригодном для программирования:
  •  добавить скобки, если нужно;
  •  уточнить имена стандартных методов, для чего использовать контекстную помощь.
  1.  Написать программу, выполняющую
  •  ввод исходных данных;
  •  расчёт по заданной формуле;
  •  вывод результатов расчёта;
  1.  Запустить Visual С#, создать новый проект консольного приложения, набрать программу и сохранить проект на жёсткий диск.
  2.  Скомпилировать программу F6, не запуская её на выполнение. При получении предупреждений или ошибок, записать их для последующего помещения в отчёт в следующем виде (Таблица 2):

Исходный текст программы (с ошибками), строки пронумеровать:

1 using System;

2 namespace Lab2

3 {

    ...

n } 

Таблица 2: Ошибки

Номер строки

Текст сообщения

Перевод текста сообщения

Причина ошибки

Для студентов, использующих русифицированную версию Visual C#, перевод текста сообщения не нужен.

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

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

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

  1.  Программу без ошибок сохранить в отдельный файл, выполнив команду File → Save Program.cs As... и запустить на выполнение Сtrl+F5. Программу выполнить не менее трёх раз, для различных исходных данных, дающих:
  •  верный результат без ошибок,
  •  арифметическую ошибку (например, деление на ноль),
  •  ошибку области определения функции.

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

  1.  Изменить программу, добавив в неё проверку исходных данных и выполнить её ещё раз для данных, обработка которых приводила к ошибке. Результаты поместить в отчет.

5. Содержание отчета

Отчет по работе должен содержать:

  •  Цель работы
  •  Вариант задания на выполнение работы (исходная формула)
  •  Та же формула, записанная в виде, пригодном для программирования
  •  Алгоритм программы в виде блок-схемы, содержащей проверку исходных данных
  •  Исходный текст программы без ошибок и без проверки вводимых данных
  •  Результаты выполнения программы без проверки исходных данных (с ошибками времени выполнения)
  •  Исходный текст программы с проверкой исходных данных
  •  Результаты выполнения программы с проверкой исходных данных

6. Требования к работе

  1.  Приведенное выше содержание отчета достаточно для выполнения задания уровня сложности 1. Для повышения уровня сложности задания (и балла за его выполнения) к вышеперечисленному необходимо добавить (и объяснить на защите) следующие элементы:
  •  Уровень 2: Копию экрана помощи по любому стандартному методу класса Math, использованному при вычислении выражения.
  •  Уровень 3: Исходный текст программы с ошибками. Таблицу с сообщениями компилятора и результатом их анализа (не менее 5-ти различных ошибок).
  •  Уровень 4 – Самостоятельное изучение: Использование аргументов командной строки (параметров функции Main), для ввода исходных данных для вычисления арифметического выражения.
  •  Уровень 5 – Самостоятельное изучение: Обработку ошибок ввода исходных данных с помощью стандартных средств обработки исключительных ситуаций С#.
  1.  Требования по каждому критерию оценки:
    1.   Точное выполнение полученного задания с учетом выбранного уровня сложности.
    2.   Включение в отчет всех материалов, указанных в приведенных выше описаниях уровней сложности. При этом выбор студентом определенного уровня сложности означает, что он использует в программе и включает в отчет элементы выбранного и всех предыдущих уровней.
    3.  Обратить внимание на аккуратность оформления блок-схемы, особенно при выполнении вручную. Не должно быть непомеченных выходов у блоков проверки условия (Да / Нет), не должно выть «висячих ссылок». Постарайтесь разместить блок-схему на одной странице. Рекомендации по оформлению блок-схемы имеются на сайте по адресу:

http://borisov.znanie-invest.ru/index.php/2009/09/08/63/

  1.   Описание алгоритма должно предусматривать все ситуации, когда в программе может произойти ошибка выполнения (кроме ввода нечисловых данных).
    1.   Качество исходного текста программы определяется корректностью записи условий по анализу исходных данных, а также полнотой и корректностью сообщений, выдаваемых при вводе некорректных значений. Пользователь программы должен понять, почему введенные данные не могут быть обработаны, и что в них  необходимо изменить. Единственной рекомендуемой конструкцией для реализации ветвления является условный оператор (if-else).
    2.   Данная работа реализует ввод и обработку исходных данных, поэтому анализ надежности программы при вводе различных данных является обязательным. Максимальная оценка по данному пункту начисляется только при условии получения результата по формуле или осмысленного сообщения программы при вводе любых числовых данных. За пропуск каждой ситуации, где выполнение программы окажется невозможным, студент получает замечание по данному критерию.
    3.   В данной работе необходимо добавлять в программу операторы ввода-вывода и условия для проверки введенных данных. Необходимо соблюдать уровень вложенности условных операторов. Имена переменных, используемых для вычисления арифметического выражения, в данной работе не имеют принципиального значения и могут быть сохранены такими же, как и в исходной формуле.

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

  1.  Ишкова Э.А. С#. Начала программирования. – М.: «Бином-Пресс», 2007. – 336 с.

2. Калерда Б. Использование Microsoft Word 2002. – М: Вильямс, 2002. - 832 с.

3. Рыжиков Ю.И. Решение научно-технических задач на персональном компьютере. – Спб.: КОРОНА, 2002. – 272 с.


8. Варианты выполнения работы

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.   
  11.   
  12.   
  13.   
  14.   
  15.   
  16.   
  17.   
  18.  
  19.  
  20.  
  21.  
  22.  
  23.   
  24.   
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  


3a

Начало

a

Ввод N

2a

3a

N < 10

Да

Нет

3a

2a

a

X = X + 1

2a

6

7

10

15

Рис. 2. Блок-схема, созданная в

MS Visio

  1.  

 

А также другие работы, которые могут Вас заинтересовать

6809. Базова VLAN Конфігурація 572 KB
  Базова VLAN Конфігурація Діаграма топології Таблиця адрес Пристрій (Ім'я хоста) Інтерфейс IP адрес Маска підмережі Шлюз по замовчуванню S1 VLAN 99 172.17.99.11 255.255.255.0 N/A S2 VLAN....
6810. Параметрична ідентифікація параметрів з використанням функцій чутливості 116.93 KB
  Параметрична ідентифікація параметрів з використанням функцій чутливості. Для математичної моделі коливання трьох мас, які поєднані між собою пружинами з відповідними жорсткостями, і відомої функції спостереження координат моделі потрі...
6811. Data manipulation in SQL Oracle 110 KB
  Data manipulation in SQL Oracle Purpose of the lab To study SQL Oracle possibilities in inserting, updating and deleting rows in a tables. To acquire practical skills in inserting, updating and deleting rows in a tables by using SQ...
6812. Манипулирование данными в SQL Oracle 121 KB
  Манипулирование данными в SQLOracle Цели лабораторной работы Изучить возможности SQL Oracle по вставке, обновлению и удалению строк в таблице. Приобрести практический опыт по вставке, обновлению и удалению строк в таблице с и...
6813. Опрацювання текстової інформації в MS-Word. Форматування та друк тексту 421 KB
  Опрацювання текстової інформації в MS-Word. Форматування та друк тексту Мета: удосконалити навички щодо створення та збереження документів та їх копій у текстовому редакторі Word, навички щодо редагування і форматування тестів. Теоретичні відомості ...
6814. Обработка результатов многократных равноточных наблюдений при прямых измерениях 318.5 KB
  Обработка результатов многократных равноточных наблюдений при прямых измерениях. Цель работы: изучить порядок обработки результатов многократных наблюдений при прямых измерениях приобрести навыки стандартной обработки результатов наблюдений, оценки...
6815. Сценарій під мереж 1 200 KB
  CNA Exploration Routing Protocols and Concepts: Introduction to Dynamic Routing Protocols Activity 3.5.2: Subnetting Scenario 1 Сценарій під мереж 1 Мета навчання Після завершення цієї лабораторної роботи ви зможете: Визначити нео...
6816. Предложение SELECT в SQL Oracle. Основные возможности 283 KB
  Предложение SELECT в SQL Oracle. Основные возможности Цели лабораторной работы Изучить основные возможности SQL Oracle по поиску данных в таблицах базы данных. Приобрести практический опыт по поиску данных в таблицах базы данных с...
6817. The SELECT statement in SQL Oracle. Basic features 287 KB
  The SELECT statement in SQL Oracle. Basic features Purpose of the lab To study general SQL Oracle possibilities in searching data in database tables. To acquire practical skills in searching data in database tables by using SQL*Plu...