Пояснительная записка. разработка программного обеспечения на языке высокого уровня c#
Скачать 1.59 Mb.
|
Разветвляющиеся алгоритмыЦель: Изучение операторов ветвления в C#, получение практических навыков их использования для реализации разветвляющихся алгоритмов. Теоретические сведения Для организации условного ветвления, язык С# унаследовал от С и С++ конструкцию if…else. Ее синтаксис должен быть интуитивно понятен для любого, кто программировал на процедурных языках: if (условие) оператор (операторы) else оператор (операторы) Если по каждому из условий нужно выполнить более одного оператора, эти операторы должны быть объединены в блок с помощью фигурных скобок. Стоит обратить внимание, что в отличие от языков С и С++, в С# условный оператор if может работать только с булевскими выражениями, но не с произвольными значениями вроде -1 и 0. Задание Вычислить и вывести на экран значение функции F при различных значениях x. Значения a, b, c ввести с клавиатуры. Значение x менять в заданном диапазоне с заданным шагом в цикле. F = Решение На рисунке 7 представлена схема алгоритма. Рисунок 7 - Схема алгоритма Листинг (исходный код программы) using System; namespace _2 { class Program { static double ReadDouble(string name) { Console.Write($"{name} = "); return double.Parse(Console.ReadLine().Replace(".", ",")); } static void Main(string[] args) { double a = ReadDouble("a"); double b = ReadDouble("b"); double c = ReadDouble("c"); double x0 = ReadDouble("x0"); double x1 = ReadDouble("x1"); double h = ReadDouble("h"); double f; while (x0 <= x1) { if (x0 - 1 < 0 && b - c != 0) f = a * Math.Pow(x0, 2) + b; else if (x0 - 1 > 0 && b + x0 == 0) f = (x0 - a) / x0; else f = x0 / c; Console.WriteLine("x = {0}, F = {1}", x0, f); x0 += h; } Console.Read(); } } } Результат работы программы Результаты работы программы представлены на рисунке 8. Рисунок 8 – Результаты работы программы Одномерные массивыЦель: изучить способы описания одномерных массивов в языке программирования C# и методы работы с ними. Теоретические сведения Массив представляет собой совокупность переменных одного типа с общим для обращения к ним именем. В С# массивы могут быть как одномерными, так и многомерными. Массивы служат самым разным целям, поскольку они предоставляют удобные средства для объединения связанных вместе переменных. Массивами в С# можно пользоваться практически так же, как и в других языках программирования. Тем не менее у них имеется одна особенность: они реализованы в виде объектов. Для того чтобы воспользоваться массивом в программе, требуется двухэтапная процедура, поскольку в С# массивы реализованы в виде объектов. Во-первых, необходимо объявить переменную, которая может обращаться к массиву. И во-вторых, нужно создать экземпляр массива, используя оператор new. Реализация в С# массивов в виде объектов дает целый ряд преимуществ. Одно из них заключается в том, что с каждым массивом связано свойство Length, содержащее число элементов, из которых может состоять массив. Следовательно, у каждого массива имеется специальное свойство, позволяющее определить его длину. Когда запрашивается длина многомерного массива, то возвращается общее число элементов, из которых может состоять массив. Благодаря наличию у массивов свойства Length операции с массивами во многих алгоритмах становятся более простыми, а значит, и более надежными. Задание В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) количество элементов массива, лежащих в диапазоне от А до В; 2) сумму элементов массива, расположенных после максимального элемента. Упорядочить элементы массива по убыванию модулей элементов. Решение Листинг (исходный код программы) using System; namespace _3 { class Program { static void Main(string[] args) { Console.Write("Введите размер массива N: "); int n = Convert.ToInt32(Console.ReadLine()); int[] mas = new int[n]; Random rand = new Random(DateTime.Now.Millisecond); Console.WriteLine("Генерируем массив: "); for (int i = 0; i < n; ++i) { mas[i] = rand.Next(20) - rand.Next(20); Console.Write("{0} ", mas[i]); } Console.WriteLine(); Console.Write("Введите A: "); int A = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите B: "); int B = Convert.ToInt32(Console.ReadLine()); int cnt = 0; for (int i = 0; i < n; ++i) if (mas[i] >= A && mas[i] <= B) cnt++; Console.WriteLine("Количество элементов массива, лежащих в диапазоне от А до В: {0}", cnt); int max = mas[0], maxIndex = 0; for (int i = 0; i < n; ++i) { if (mas[i] >= max) { max = mas[i]; maxIndex = i; } } Console.WriteLine("Максимальный элемент: {0}", max); int s = 0; for (int i = maxIndex + 1; i < n; ++i) s += mas[i]; Console.WriteLine("Сумма элементов, расположенных после максимального элемента: {0}", s); bool needSort = true; for (int i = 0; i < n; ++i) { if (!needSort) break; needSort = false; for (int j = 0; j < n - 1; ++j) { if (Math.Abs(mas[j]) < Math.Abs(mas[j + 1])) { int tmp = mas[j]; mas[j] = mas[j + 1]; mas[j + 1] = tmp; needSort = true; } } } Console.WriteLine("Массив, упорядоченный по убыванию модулей элементов: "); for (int i = 0; i < n; ++i) Console.Write("{0} ", mas[i]); Console.Read(); } } } Результат работы программы Рисунок 9 – Результаты работы программы |