- •Лабораторная работа 1. Разветвляющийся вычислительный процесс
- •Консольные приложения в c#
- •Технология разработки программ на языке высокого уровня Этапы разработки программ на языке высокого уровня
- •Виды вычислительных процессов
- •Разветвляющийся вычислительный процесс Алгоритмы разветвляющихся процессов
- •Программа на языке c#. Элементы языка Язык c#
- •Все операторы языка с# могут быть условно разделены на следующие категории:
- •Платформа .Net и visual studio 2008
- •Создание консольного приложения
- •Указание. Окружности, имеющие уравнения
- •А) являются концентрическими, если их центры совпадают
Виды вычислительных процессов
Существуют следующие виды вычислительных процессов:
Линейный процесс - последовательное размещение шагов.
Разветвляющийся процесс - в зависимости от условия нужно выполнять либо одно, либо другое действие. В алгоритме используются конструкции
ЕСЛИ условие ТО
Действия
ИНАЧЕ
Действия
ЕСЛИ ВСЕ
В качестве действий может стоять проверка другого условия . Чтобы избежать вложенных условия, используется конструкция ВЫБОР. Она позволяет иметь несколько ветвей для проверки равенства переменной одному из многих значений. Такая конструкция имеет вид:
ВЫБОР ПО переменная
Значение_1: Действия
Значение_2: Действия
Значение_n: Действия
*: Действия
ВЫБОР ВСЕ
* означает, что переменная не равна ни одному значению.
Циклический процесс - это такой процесс, в котором некоторая последовательность действий выполняется несколько раз до тех пор, пока выполняются некоторые условия. В алгоритме используется конструкция
ПОКА условие ВЫПОЛНИТЬ
Действия
ПОКА ВСЕ
Все задачи являются комбинацией этих трех видов процессов.
В дальнейшем будут приведены примеры решения задачи для различных видов вычислительных процессов.
Разветвляющийся вычислительный процесс Алгоритмы разветвляющихся процессов
Пример алгоритма разветвляющегося процесса
Студенты Иванов и Петров за время практики заработали определенную сумму. Кто из них заработал большую сумму? Определить средний заработок.
Таблица спецификаций:
Входные величины |
Выходные величины |
|||||
Имя |
Назначение |
Диапазон |
Имя |
Назначе-ние |
Диапазон |
|
X |
Сумма, заработанная Ивановым |
Действии- тельное число >0 |
M |
Средний заработок |
Действи- тельное число>0 |
|
Y |
Сумма, заработанная Петровым |
Действии- тельное число >0 |
S |
Сообщение о соотношении заработка |
Текст |
|
Словесное описание алгоритма:
1. Ввод Х и У.
2. M=(X+Y)/2
3. ЕСЛИ Х>У ТО
3.1.S=“Иванов заработал больше“.
3.2. Переход к п. 5
ЕСЛИ ВСЕ
4. ЕСЛИ У>Х ТО
4.1. S=“Петров заработал больше“
4.2. Переход к п. 5
ИНАЧЕ
4.3. S=“Они заработали поровну“
ЕСЛИ ВСЕ
5.Вывод S и M
Тесты:
Номер теста |
Назначение теста |
Входные данные |
Выходные данные |
1 |
Заработок Иванова больше, чем заработок Петрова |
X=200 Y=100 |
M=150 S=Иванов заработал больше |
2 |
Заработок Петрова больше, чем заработок Иванова |
X=100 Y=200 |
M=150 S=Петров заработал больше |
3 |
Заработки равны |
X=200 Y=200 |
M=200 S=Они заработали поровну |
Программа на языке c#. Элементы языка Язык c#
Язык С# является одним из тех, которые можно использовать для создания приложений. Он эволюционировал из языков С и C++ и был создан Microsoft специально для работы с платформой .NET. Благодаря тому, что язык С# разрабатывался недавно, в его состав вошли многие из наилучших функциональных возможностей других языков, но без присущих им проблем.
Продемонстрируем пример создания простого консольного приложения, то есть такого, которое не предусматривает применение графических окон, благодаря чему в них не нужно заботиться ни о кнопках, ни о меню, ни о взаимодействии с курсором мыши и т.п. Вместо этого оно запускается в окне командной строки.
Создав новое консольное приложение, мы увидим в окне кода строки
namespace ConsoleApplicationl
{class Program
{static void Main(string[] args)
{} } }
и вставим строки, которые выделим жирным шрифтом
namespace ConsoleApplicationl
{class Program
{static void Main(string[] args)
{// Вывод текста на экран
Console.WriteLine(“The first app in Beginning C# Programming!”) ;
Console.ReadKey();
}}}
Здесь вставлено два комментария – неисполняемые тексты – и два оператора – вывод текста и ожидание нажатия клавиши для того, чтобы результат не исчез, и можно было его увидеть.
Структура программы
Программа представляет собой последовательность операций, манипулирующих данными. Код на С# состоит из ряда операторов, каждый из которых оканчивается символом точка с запятой. С# является языком с блочной структурой, то есть все операторы относятся к какому-то блоку кода. В каждом блоке, который отделяется от остальной части кода с помощью фигурных скобок ({ и }), может содержаться любое количество операторов или вообще ни одного. Блоки кода также могут и вкладываться один в другой, то есть одни блоки могут содержать в себе другие блоки,
Комментарии
Комментарий – неисполняемая часть программного кода; используется для внесения пояснений и начинается с //
Переменные
В переменные можно помещать данные и затем при необходимости либо извлекать их оттуда, либо проверять их наличие. Переменные бывают разных типов. Чтобы использовать переменные, их нужно объявлять. Это означает, что им необходимо назначать имя и тип. После объявления их можно начинать использовать в качестве единиц хранения для данных того типа, для хранения которого они предназначены согласно объявлению.
В синтаксисе С# объявление переменных осуществляется указанием типа и имени переменной: <тип> <имя>;
При попытке использовать переменную, которая не была объявлена, код не будет компилироваться. При попытке использовать переменную без присваивания ей значения тоже будет возникать ошибка. Имена переменных состоят из латинских букв и цифр, начиная с буквы. Малые и большие буквы считаются различными символами.
Основные типы переменных:
int – целое число;
float – действительное число;
bool – булевское значение, принимающее значения true (истина) и false (ложь);
char – одиночный символ;
string – последовательность символов.
В С# 3.0 появилось новое ключевое слово var, которое можно использовать в качестве альтернативного варианта, то есть вместо ключевого слова, показывающего имя типа:
var varName = значение;
Здесь переменная varName неявным образом приводится к типу значение. Обратите внимание, что никакого типа с именем var не существует. В строке кода
var myVar = 5;
под my Var подразумевается переменная типа int, а не переменная типа var.
Этот момент является чрезвычайно важным. Использование var не означает объявления переменной без типа или даже переменной с типом, который может изменяться. Если бы это было так, язык С# не являлся бы более строго типизированным.
Это означает лишь то, что ответственным за определение типа переменной назначается компилятор.
При невозможности определить тип той переменной, которая была объявлена с использованием var, компилятор не будет компилировать код. Поэтому объявлять переменную с применением var и при этом не инициализировать ее нельзя, поскольку в таком случае у компилятора не будет значения, которое он смог бы использовать для определения типа этой переменной. То есть следующий код не скомпилируется:
var myVar;
Пример программного кода с объявлением переменных, присваиванием им значений и выводом на экран:
int mylnteger=17;
string myString = "mylnteger is";
Console.WriteLine("{0} {1}.", myString, mylnteger); Console.ReadKey(); Переменным присваиваются два фиксированных значения констант с помощью операции присваивания. При присваивании строковых значений строки обязательно должны заключаться в двойные кавычки.
Оператор вывода строки кроме выводимого текста содержит указание переменных. Внутри скобок содержатся два элемента:
строка, подлежащая выводу;
список разделенных запятыми переменных, значения которых должны вставляться в выходную строку.
Строка представляет собой шаблон, в который вставляется содержимое переменных. Каждый набор фигурных скобок в строке является меткой-заполнителем, на месте которой во время выполнения будет находиться содержимое одной из указанных в перечне переменных. Каждая метка-заполнитель (или строка форматирования) представляется в виде заключенного в фигурные скобки целого числа. Отсчет этих целых начинается с нуля и затем просто увеличивается на 1. Общее количество меток-заполнителей должно соответствовать количеству переменных, указываемых в разделенном запятыми списке следом за строкой.
Выражения
Комбинация знаков операций и операндов, результатом которой является определенное значение, называется выражением. Знаки операций определяют действия, которые должны быть выполнены над операндами. Каждый операнд в выражении может быть выражением. Значение выражения зависит от расположения знаков операций и круглых скобок в выражении, а также от приоритета выполнения операций.
В языке С# присваивание также является выражением, и значением такого выражения является величина, которая присваивается. Например, x=a+b;
Операнд - это константа, идентификатор или вызов функции.
Вызов функций состоит из имени функции, за которым следует необязательный список выражений в круглых скобках:
идентификатор (список выражений)
Выражения со знаками операций могут участвовать в выражениях как операнды. Выражения со знаками операций могут быть унарными (с одним операндом), бинарными (с двумя операндами) и тернарными (с тремя операндами).
Унарное выражение состоит из операнда и предшествующего ему знака унарной операции и имеет следующий формат: знак унарной операции операнд
Бинарное выражение состоит из двух операндов, разделенных знаком бинарной операции: операнд1 знак бинарной операции операнд2.
Тернарное выражение состоит из трех операндов, разделенных знаками тернарной операции (?) и (:), и имеет формат:
операнд1 ? операнд2 : операнд3 .
Операции
В языке С# имеются следующие унарные операции:
- унарный минус;
++ увеличение (инкремент);
-- уменьшение (декремент);
Операции увеличения и уменьшения увеличивают или уменьшают значение операнда на единицу.
int t=1, s=2, z, f;
z=(t++)*5;
Вначале происходит умножение t*5, а затем увеличение t. В результате получится z=5, t=2.
Бинарные операции
Операция умножения (*) выполняет умножение операндов.
Тип произведения i и f преобразуется к типу float, затем результат присваивается переменной g.
Операция деления (/) выполняет деление первого операнда на второй. Если две целые величины не делятся нацело, то результат округляется в сторону нуля.
При попытке деления на ноль выдается сообщение во время выполнения.
Операция остаток от деления (%) дает остаток от деления первого операнда на второй. Знак результата совпадает со знаком делимого. Если второй операнд равен нулю, то выдается сообщение.
Операция вычитания (-) вычитает второй операнд из первого.
Операция простого присваивания используется для замены значения левого операнда, значением правого операнда. Левый операнд операции присваивания должен быть идентификатором целого и действительного типов.
Кроме простого присваивания, имеется целая группа операций присваивания, которые объединяют простое присваивание с одной из бинарных операций. Такие операции называются составными операциями присваивания и имеют вид:
операнд-1 бинарная операция = операнд-2
Составное присваивание эквивалентно следующему простому присваиванию:
операнд-1 = операнд-1 бинарная операция операнд-2
Бинарная операция + для строк означает сцепление двух строк и присвоение результата третье1й строке.
Пример использования арифметических операций.
float firstNumber, secondNumber;
Console.WriteLine("Введите число:");
firstNumber = Convert.ToSingle(Console.ReadLine());
Console.WriteLine("Введите еще одно число:");
secondNumber = Convert.ToSingle(Console.ReadLine());
Console.WriteLine("Сумма {0} и {1} равна {2}.", firstNumber,
secondNumber, firstNumber + secondNumber);
Console.WriteLine("Результат вычитания {0} из {1} равен {2}.",
secondNumber, firstNumber, firstNumber - secondNumber);
Console.WriteLine("Произведение {0} и {1} равно {2}.", firstNumber,
secondNumber, firstNumber * secondNumber);
Console.WriteLine("Результат деления {0} на {1} равен {2}.",
firstNumber, secondNumber, firstNumber / secondNumber);
Console.WriteLine("Остаток от деления {0} на {1} равен {2}.",
firstNumber, secondNumber, firstNumber % secondNumber);
Console.ReadKey();
Сначала объявляются переменные, в которых должны сохраняться вводимые числа:
Для ввода чисел к результату получаемой Console. ReadLine () строки применяется команда Convert. ToSingle () для преобразования ее в число float. Это число затем присваивается объявленной ранее переменной firstNumber:
Подобным образом вводится второе число, и результат присваивается второй переменной.
