Программирование на языке высокого уровня Лекция 1. Введение в программирование на C#. Условный оператор. Типы данных. Цикл for. Кафедра АСОИУ ОмГТУ, 2012 Богатов Р.Н.
Что такое программирование? Программировать умеют все! Даже моя жена Софья. Знаменитая программа Софьи, которую копируют чаще всего: (Называется «Банановый хлеб») 1.Смешать: 1/3 ст. подсолнечного масла 1/4 ст. воды 1 ст. сахара 2.Добавить 2-3 размятых банана 3.По желанию добавить 1-2 взбитых яйца 4.Отдельно смешать сухими: 2 ст. муки 1 ч.л. соды 1/2 ч.л. соли 1/2 ч.л. корицы ванилин 5.Все смешать и выпекать, пока не покоричневеет 1.Смешать: 1/3 ст. подсолнечного масла 1/4 ст. воды 1 ст. сахара 2.Добавить 2-3 размятых банана 3.По желанию добавить 1-2 взбитых яйца 4.Отдельно смешать сухими: 2 ст. муки 1 ч.л. соды 1/2 ч.л. соли 1/2 ч.л. корицы ванилин 5.Все смешать и выпекать, пока не покоричневеет
// исходные данные double a, b, alpha; a = 10.5; b = 9.78; alpha = Math.PI/3; // вычисления double c; c = Math.Sqrt(a*a + b*b - 2*a*b*Math.Cos(alpha)); // исходные данные double a, b, alpha; a = 10.5; b = 9.78; alpha = Math.PI/3; // вычисления double c; c = Math.Sqrt(a*a + b*b - 2*a*b*Math.Cos(alpha)); К делу! Пример программы на C# // исходные данные double a, b, alpha; a = Convert.ToDouble(textBox1.Text); b = Convert.ToDouble(textBox2.Text); alpha = Convert.ToDouble(textBox3.Text); // вычисления double c; c = Math.Sqrt(a*a + b*b - 2*a*b*Math.Cos(alpha)); // вывод результата label5.Text = Convert.ToString(c); // исходные данные double a, b, alpha; a = Convert.ToDouble(textBox1.Text); b = Convert.ToDouble(textBox2.Text); alpha = Convert.ToDouble(textBox3.Text); // вычисления double c; c = Math.Sqrt(a*a + b*b - 2*a*b*Math.Cos(alpha)); // вывод результата label5.Text = Convert.ToString(c);
Условный оператор if if (x < 0) сделать-то-то; if (x < 0) сделать-то-то; if (x < 0) сделать-то-то; else сделать-другое; if (x < 0) сделать-то-то; else сделать-другое; if (x < 0) { сделать-одно; сделать-второе; сделать-что-то-ещё; } if (x < 0) { сделать-одно; сделать-второе; сделать-что-то-ещё; } if (x < 0) { сделать-одно; сделать-второе; } else { сделать-другое; и-ещё-кое-что; } if (x < 0) { сделать-одно; сделать-второе; } else { сделать-другое; и-ещё-кое-что; }
Решение квадратного уравнения // исходные данные double a, b, c; a = Convert.ToDouble(textBox1.Text); b = Convert.ToDouble(textBox2.Text); c = Convert.ToDouble(textBox3.Text); // вычисления double D = b*b - 4*a*c; if (D < 0) { // вывод результата label6.Text = "???"; label8.Text = "???"; MessageBox.Show("Нет вещественных корней!"); } else { double x1, x2; x1 = (-b - Math.Sqrt(D))/2/a; x2 = (-b + Math.Sqrt(D))/2/a; // вывод результата label6.Text = Convert.ToString(x1); label8.Text = Convert.ToString(x2); } // исходные данные double a, b, c; a = Convert.ToDouble(textBox1.Text); b = Convert.ToDouble(textBox2.Text); c = Convert.ToDouble(textBox3.Text); // вычисления double D = b*b - 4*a*c; if (D < 0) { // вывод результата label6.Text = "???"; label8.Text = "???"; MessageBox.Show("Нет вещественных корней!"); } else { double x1, x2; x1 = (-b - Math.Sqrt(D))/2/a; x2 = (-b + Math.Sqrt(D))/2/a; // вывод результата label6.Text = Convert.ToString(x1); label8.Text = Convert.ToString(x2); }
Встроенные типы данных C# ТипДиапазон значений Размер (байт) sbyte-128 … 1271 byte0 … 2551 short … ushort0 … int … uint0 … long … ulong0 … float±1,5· … ±3,4·10 +38, точность – 7 разрядов4 double±5,0· … ±1,7· , точность – 16 разрядов8 decimal±1· … ±7,9·10 +28, точность – 28 разрядов1616 booltrue или false1 char0 … (код символа)2
Цикл с заданным числом повторений for (int i = 1; i
Задачи на циклы: табуляция функции double x, y; // n - требуемое количество точек for (int i = 0; i < n; i++) { x = Math.PI * i / (n-1); y = Math.Sin(x); textBox1.Text = textBox1.Text + "x = " + x + ", y = " + y + "\r\n"; } double x, y; // n - требуемое количество точек for (int i = 0; i < n; i++) { x = Math.PI * i / (n-1); y = Math.Sin(x); textBox1.Text = textBox1.Text + "x = " + x + ", y = " + y + "\r\n"; }
double x, y, ymax = -1e300; // n - требуемое количество точек for (int i = 0; i < n; i++) { x = *i/(n-1); // всегда в интервале [-0.5; 1.5] y = x*x*x - x*x - x; textBox1.Text = textBox1.Text + "x = " + x + ", y = " + y + "\r\n"; if (y > ymax) ymax = y; } label3.Text = Convert.ToString(ymax); double x, y, ymax = -1e300; // n - требуемое количество точек for (int i = 0; i < n; i++) { x = *i/(n-1); // всегда в интервале [-0.5; 1.5] y = x*x*x - x*x - x; textBox1.Text = textBox1.Text + "x = " + x + ", y = " + y + "\r\n"; if (y > ymax) ymax = y; } label3.Text = Convert.ToString(ymax); Задачи на циклы: поиск минимума/максимума double x, y; double ymax = double.NegativeInfinity, xbest = double.NaN; // n - требуемое количество точек for (int i = 0; i < n; i++) { x = *i/(n-1); // всегда в интервале [-0.5; 1.5] y = x*x*x - x*x - x; textBox1.Text = textBox1.Text + "x = " + x + ", y = " + y + "\r\n"; if (y > ymax) { ymax = y; xbest = x; } label3.Text = Convert.ToString(ymax); label5.Text = Convert.ToString(xbest); double x, y; double ymax = double.NegativeInfinity, xbest = double.NaN; // n - требуемое количество точек for (int i = 0; i < n; i++) { x = *i/(n-1); // всегда в интервале [-0.5; 1.5] y = x*x*x - x*x - x; textBox1.Text = textBox1.Text + "x = " + x + ", y = " + y + "\r\n"; if (y > ymax) { ymax = y; xbest = x; } label3.Text = Convert.ToString(ymax); label5.Text = Convert.ToString(xbest);
У листа бумаги a×b отрезают по углам четыре квадрата со стороной h. Полученную крестообразную выкройку сворачивают в коробочку (параллелепипед). При каком h коробочка будет иметь максимальный объём? Задача про коробочку. Численное решение double dh = a/2/9999; double V, h, Vmax = 0, hbest = 0; for (int i = 0; i < 10000; i++) { h = dh * i; V = (a-2*h)*(b-2*h)*h; if (V > Vmax) { Vmax = V; hbest = h; } label3.Text = Convert.ToString(Vmax); label5.Text = Convert.ToString(hbest); double dh = a/2/9999; double V, h, Vmax = 0, hbest = 0; for (int i = 0; i < 10000; i++) { h = dh * i; V = (a-2*h)*(b-2*h)*h; if (V > Vmax) { Vmax = V; hbest = h; } label3.Text = Convert.ToString(Vmax); label5.Text = Convert.ToString(hbest);
Домашнее задание
Бонус Самостоятельно написать на C# какую-нибудь программу и выслать исполнимый модуль на адрес Требования: программа должна отличаться от задач, разбираемых на лекциях или практических занятиях и заданных на дом программа должна сообщать ФИО и группу автора