Лабораторная работа циклы. Поволжский государственный университет телекоммуникаций и информатики
Скачать 3.57 Mb.
|
Пример. Создать программу взаимных преобразований типов численных дан- ных в соответствии с вариантом. Листинг программы using System; namespace ConsoleChisloTip { class Program { static void Main() { Console .WriteLine( "Преобразуем int в дугие целые типы" ); int i = 200; // Целое типа int Int16 i1 = ( Int16 )i; // int => int16 Int32 i2 = i; // int => int32 Int64 i3 = i; // int => int64 Byte i4 = ( Byte )i; // int => Byte sbyte i5 = ( sbyte )i; // int => sbyte Console .WriteLine(); Console .WriteLine( "Типы {0,8}{1,8}{2,8}{3,8}{4,8}{5,8}" , "int" , "Int16" , "Int32" , "Int64" , "Byte" , "sbyte" ); Console .WriteLine( "Значения {0,8}{1,8}{2,8}{3,8}{4,8}{5,8}" , i, i1, i2, i3, i4, i5); Console .WriteLine( "Байты {0,8}{1,8}{2,8}{3,8}{4,8}{5,8}" , sizeof ( int ), sizeof ( Int16 ), sizeof ( Int32 ), sizeof ( Int64 ), sizeof ( byte ), sizeof ( sbyte )); 23 Console .WriteLine(); // Пропуск строки Console .WriteLine( "Нажмите любую клавишу" ); Console .WriteLine(); Console .ReadKey(); // Пауза Console .WriteLine(); Console .WriteLine( "Преобразуем int в типы с плавающей точкой" ); Console .WriteLine(); double d = i; // int => double Single s = i; // int => Single Console .WriteLine( "Типы {0,8}{1,8}{2,8}" , "int" , "double" , "Single" ); Console .WriteLine( "Значения {0,8}{1,8}{2,8}" , i, d, s); Console .WriteLine( "Байты {0,8}{1,8}{2,8}" , sizeof ( int ), sizeof ( double ), sizeof ( Single )); Console .WriteLine(); Console .WriteLine( "Нажмите любую клавишу" ); Console .ReadKey(); Console .WriteLine(); Console .WriteLine( "Преобразуем double в Single и int" ); d = 25.34; // Число типа double Console .WriteLine(); i = ( int )d; // double => int s = ( Single )d; // double => Single Console .WriteLine( "Типы {0,8}{1,8}{2,8}" , "int" , "double" , "Single" ); Console .WriteLine( "Значения {0,8}{1,8}{2,8}" , i, d, s); Console .WriteLine( "Байты {0,8}{1,8}{2,8}" , sizeof ( int ), sizeof ( double ), sizeof ( Single )); Console .WriteLine(); Console .WriteLine( "Нажмите любую клавишу" ); Console .ReadKey(); } } } Стартовые числа Start. Значение int_1 выбрано таким, чтобы оно умещалось в формате выбранного типа, но выходило за пределы типа sbyte. Объявлены переменные для каждого вида чисел. 24 25 3. Строковые и символьные типы в языке C# Предмет исследований Структура программы на языкеC#. Задание констант, переменных. Типы строкых и символьных типов. Организация ввода-вывода строковых данных. Контрольные вопросы Алфавит языка C#, операции, идентификаторы. 1. Структура программы. 2. Переменные. Их объявление. 3. Символьный тип: char. 4. Строковыq тип string. 5. Совместимость типов при присвоениях. 6. Назначение форматирования чисел. 7. Стандартные форматы. G формат – общий. F формат - c фиксированной 8. точкой. N формат – числовой. E формат – научный. C формат – денеж- ный. P формат – процентный. D формат – десятичный. Нестандартные форматы. Форматы с символами E+0 и E-0. формат с 9. символом 0. формат с символом #. Формат с символом точка. Формат с символом запятая. Формат с символом %. 3.1. Взаимные преобразования Создать консольную программу взаимных преобразований строковых и сим- вольных типов. Она должна отображать фамилию студента строкой и добав- лять к строке символ. 26 Пример. Создать программу взаимных преобразований строковых и символь- ных типов. Она должна отображать строку Фамилия строками разного типа и добавлять к строке символ восклицательного знака ( ! ). Листинг программы using System; namespace ConsoleChar { class Program { static void Main() { string Фамилия; char Символ; Фамилия = "Акчурин"; // тип string Символ = '!'; // тип char Console.WriteLine(Фамилия + Символ); Console.WriteLine(); // Пропуск строки Console.WriteLine("Нажмите Enter"); Console.ReadLine(); // Пауза } } } Это результат его прогона: 27 3.2. Стандартное форматирование Создать консольную программу выода целого и вещественного чисел в стан- дартных форматах. Варианты к заданию. Целое число – номер зачетной точки, вещественное – номер зачетной книжки с 4-мя последними цифрами в дробной части. Пример. Создать консольную программу вывода целого 123456789 и веще- ственного -12.345678956789 чисел в стандартных форматах. Листинг программы using System; namespace ChislaFormatStand { class Program { static void Main() { double d = -12.345678956789; int i = 123456789; Console .Write( "Число c плавающей точкой " ); Console .WriteLine(d); Console .WriteLine(); Console .Write( "G формат - общий " ); Console .WriteLine( "{0,8:G}" , d); Console .Write( "F формат - c фикс. точкой " ); Console .WriteLine( "{0,8:F}" , d); Console .Write( "N формат - числовой " ); Console .WriteLine( "{0,8:N}" , d); Console .Write( "E формат - научный " ); Console .WriteLine( "{0,8:E}" , d); Console .Write( "C формат - денежный " ); Console .WriteLine( "{0,8:C}" , d); 28 Console .Write( "P формат - процентный " ); Console .WriteLine( "{0,8:P}" , d); Console .WriteLine(); Console .Write( "Число целое " ); Console .WriteLine(i); Console .WriteLine(); Console .Write( "D формат - десятичный " ); Console .WriteLine( "{0,8:D}" , i); Console .Write( "C формат - денежный " ); Console .WriteLine( "{0,8:C}" , i); Console .Write( "P формат - процентный " ); Console .WriteLine( "{0,8:P}" , i); Console .Write( "X формат - 16-ричный " ); Console .WriteLine( "{0,8:X}" , i); Console .WriteLine(); Console .WriteLine( "Нажмите любую клавишу" ); Console .ReadKey(); } } } Это результат его прогона: 29 3.3. Нестандартное форматирование Создать консольную программу вывода вещественного числа в нестандарт- ных форматах. Варианты к заданию. Вещественное число со знаком минус, целая и лробная части – номер зачетной книжки. Пример. Создать консольную программу вывода в нестандартных форматах числа (-12345.678956789). Листинг программы using System; namespace ChislaFormatNestand { class Program { static void Main() { double d = -12345.678956789; Console .Write( "Число c плавающей точкой " ); Console .WriteLine(d); Console .WriteLine(); Console .Write( "формат с символами E+0 " ); Console .WriteLine( "{0:000E+000}" , d); Console .Write( "формат с символами E-0 " ); Console .WriteLine( "{0:000E-000}" , d); Console .Write( "формат с символом 0 " ); Console .WriteLine( "{0:000}" , d); Console .Write( "формат с символом # " ); Console .WriteLine( "{0:###}" , d); Console .Write( "Формат с символом точка " ); Console .WriteLine( "{0:###.000}" , d); Console .Write( "Формат с символом запятая " ); Console .WriteLine( "{0:###,000}" , d); Console .Write( "Формат с символом % " ); Console .WriteLine( "{0:###.000%}" , d); Console .WriteLine(); Console .WriteLine( "Нажмите любую клавишу" ); Console .ReadKey(); } } } 30 Это результат его прогона: 31 4. Тип DateTime в языке C# Предмет исследований Структура программы на языкеC#. Задание констант, переменных. Тип DateTime. Компонент DateTimePicker. Программа решения задачи в виде консольного приложения. Программа решения задачи в виде Windows приложения. Контрольные вопросы Алфавит языка C#, операции, идентификаторы. 1. Структура программы. 2. Переменные. Их объявление. 3. Тип DateTime. Назначение 4. Компонент DateTimePicker. 5. Совместимость типов при присвоениях. 6. 4.1. Консольное приложение Создать консольное приложение для работы с типом DateTime. Оно должно запрашивать дату и время рождения студента, выводить текущие дату/время, запрашивать желаемое время дальнейшего обучения, выводить дату/время и день недели конца обучения. Варианты к заданиям. Индивидуальные данные студента. Пример. Листинг программы using System; namespace ConsoleDateTime { class Program { static void Main() { string d1, s, f; Console.WriteLine("Введите Вашу фамилию"); f = Console.ReadLine(); Console.WriteLine(); Console.WriteLine("Введите дату рождения дд.мм.гггг"); 32 d1 = Console.ReadLine(); DateTime dt1 = Convert.ToDateTime(d1); Console.WriteLine(); Console.WriteLine("Ваша фамилия - " + f); Console.WriteLine(); Console.WriteLine("Вы рождены"); Console.WriteLine(dt1); DateTime dt2 = DateTime.Now; Console.WriteLine(); Console.WriteLine("Сегодня"); Console.WriteLine(dt2); Console.WriteLine(); int i = (dt2.Year - dt1.Year) * 365; Console.WriteLine("Вы прожили " + i + " дней"); Console.WriteLine(); Console.WriteLine("Сколько дней еще хотите учиться?"); s = Console.ReadLine(); dt2 = dt2.AddDays(Convert.ToInt32(s)); Console.WriteLine(); Console.WriteLine("Вы станете умным " + dt2); Console.WriteLine(); Console.WriteLine("Это будет " + dt2.DayOfWeek); Console.WriteLine(); Console.WriteLine("Если не все поняли, подучите английский"); Console.WriteLine(); Console.WriteLine("Нажмите любую клавишу"); Console.ReadKey(); } } } 33 4.2. Windows Forms приложение Создать Windows Forms приложение для работы с типом DateTime. Оно долж- но запрашивать дату и время рождения студента, выводить текущие да- ту/время, запрашивать желаемое время дальнейшего обучения, выводить да- ту/время и день недели конца обучения. Варианты к заданиям. Индивидуальные данные студента. Пример. Активизируем ИСР, выбираем создание Windows приложения. В форму заносим компоненты: 2 компонента dateTimePicker, один для отображения текущей даты, второй для редпктирования даты рождения. 5 компонентов label для размещения поясняющих текстов. 2 компонента TextBox для ввода данных. Компонент listBox для вывода данныхю 34 Компонент button (кнопка) для запуска обработчика события. Компонентам назначаем свойства, используя окно свойств ИСР. Итог: Двойным щелчком по кнопке инициируем в редакторе кода шаблон обработчи- ка события, в который заносим программу. Листинг программы using System; using System.Windows.Forms; namespace WindowsFormsDateTime { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { 35 string f = textBox1.Text; int c = Convert.ToInt32(textBox2.Text); int c1 = Convert.ToInt32(textBox3.Text); dateTimePicker2.MaxDate = DateTime.Now; DateTime dt1 = dateTimePicker2.Value; DateTime dt2 = DateTime.Now; int d = (dt2.Year - dt1.Year)*365; string s = "Вы " + f; listBox1.Items.Add(s); s = Convert.ToString(d); s = "Вы прожили " + s + " дней"; listBox1.Items.Add(s); s = Convert.ToString(c1); s = "Вы хотите учиться еще " + s + " дней"; listBox1.Items.Add(s); dt1 = dt1.AddDays(c1); s = "Вы станете очень умным " + dt1; listBox1.Items.Add(s); s = Convert.ToString(dt1.DayOfWeek); s = "Это будет в " + s; listBox1.Items.Add(s); s = "Если не все поняли, подучите английский"; listBox1.Items.Add(s); } } } Далее окна формы на этапах прогона: Сначала стартовое Окно. Затем окно при редактирваии компонента DateTimePicker2. В нем нужно установить год, Затем из списка вызвать коллекцию календарей месяцев, в ней выбрать календарь нужного месяца, в котором выбрать день. Затем заполнить поля формы. Час рождения должен быть от 0 до 24. Нажатие кнопки Принять приводит к обработке данных и формирование итогов в компоненте LictBox1. 36 37 38 5. Линейные структуры Предмет исследований Запись констант, переменных, стандартных функций. Правила записи арифметических выражений. Арифметические операторы присваивания. Разработка алгоритма решения в соответствии с заданием. Составление программы решения задачи в виде консольного приложения. Контрольные вопросы Алфавит языка C#. 1. Операции. 2. Идентификаторы. 3. Типы данных. 4. Структура программы консольного приложения. 5. Где описываются константы, переменные и типы данных? 6. Стандартные функции. 7. Операторы присваивания. 8. Пустая и составная инструкция. 9. Процедуры ввода Read и ReadLine. 10. Процедуры вывода Write и WriteLine. 11. Последовательность действий при выполнении оператора присваивания. 12. Приоритетность выполнения операций в выражениях. 13. Как организовать пропуск одной, двух строк при выводе? 14. Задание. Вычислить значения переменных в соответствии с вариантами зада- ния. Вывести значения вводимых исходных данных и результаты, сопровож- дая их вывод именами выводимых переменных. Задание выполнить в виде консольного приложения. 39 40 Пример. Вычислить при x = 2.1, y = 0.59, z = -4.8 значения a и b, используя формулы: Листинг программы using System; namespace ConsoleLineStr { class Program { static void Main() { double x =2.1, y =0.59, z = -4.8, a =0, b = 0; // Переменные типа double a = y * Math .Pow( Math .Tan(x * x), 3); // Вычисляем a a += Math .Sqrt(z * z / (y * y + x * x)); Console .WriteLine( "Результаты" ); Console .WriteLine(); Console .Write( "a=" ); // Вывод a Console .WriteLine(a.ToString()); b = Math .Log(y + x * x); // Вычисляем b b += Math .Pow( Math .Sin(z / x), 2); Console .Write( "b=" ); // Вывод b Console .WriteLine(b.ToString()); Console .WriteLine(); Console .WriteLine( "Нажмите любую клавишу" ); Console .ReadKey(); // Пауза } } } Внимание. При вводе данных в консоли разделитель целой и дробнй части вещественного числа – запятая. 41 42 6. Ветвления Предмет исследований Условная и безусловная передача управления; Вычислительные процессы с разветвляющейся структурой. Разработать алгоритмы решения в соответствии с заданием. Составить программы решения задач. Контрольные вопросы Какие структуры вычислительных процессов Вы знаете? 1. Как организовать разветвление вычислений? 2. Ветвление if... else. 3. Вложенные ветвления. 4. Инструкция выбора switch. 5. Фраза case. 6. Зачем во фразе case применяется оператор break? 7. 6.1. Ветвление if; else Вычислить значения функции по варианту задания. Вывести значения исход- ных данных и полученные результаты, сопровождая их именами переменных. Значения аргумента взять из указанного диапазона так, чтобы протестировать все ветви программы. Проект – консольное приложение. 43 44 Пример. Вычислить при y=1.3, x=[0.. 2.1] с шагом 0.3 значения функции a. Ре- зультат вывести в виде таблицы. Проект – консольное приложение. Блок-схема алгоритма представлена на рисунке. Для организации цикла вве- дены следующие переменные: xs - начальное значение, xk - конечное значе- ние dx - шаг изменения аргумента x. Листинг программы using System; namespace ConsoleConditional_If { class Program { static void Main() { // Переменные типа double double a = 0, x = 0, xs = 0, xk = 2.1, dx = 0.3, y = 1.3; Console .WriteLine( " Таблица a(x)" ); // Заголовок for (x = xs; (x <= xk); x = x + dx) // Начало цикла { if (y * x < 1) // Первое ветвление a = Math .Exp(-y * x) * Math .Cos(y * x); else if (y * x == 1) // Вложенное ветвление a = Math .Cos(y * x + 1); else if (y * x > 1) // Вложенное ветвление a = y * x + 1; Console .WriteLine( "x = {0,3} a = {1}" ,x,a); } Console .WriteLine(); Console .WriteLine( "Нажмите любую клавишу" ); Console .ReadKey(); // Пауза Консоль перед закрытием программы: 45 6.2. Выбор switch; case Вывести сообщения для подтверждения имени пользователя с использовани- ем инструкции выбора switch. Проект – консольное приложение. Пример. Вывести сообщения о номере пользователя с номерами от 1 до 3. Проект – консольное приложение. Пользователя просят ввести свой номер. Для каждого из известных пользователей выводится подтвердение его имени. Для пользователя с неизвестным номером сообщается, что он новичок. Листинг программы using System; namespace ConsoleConditionalSwitch { class Program { static void Main() { int user = 1; Console.Write("Ваш номер = "); user = Convert.ToInt32(Console.ReadLine()); switch (user) { case 1: Console.WriteLine("Здравствуйте Userl"); break; case 2: Console.WriteLine("Здравствуйте User2"); break; case 3: Console.WriteLine("Здравствуйте User3"); break; default: Console.WriteLine("Здравствуйте новичок"); break; 46 } Console.WriteLine("Нажмите любую клавишу"); Console.ReadKey(); // Пауза } } } |