Файл: Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 923
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Рис. 1.16. Фрагмент работы программы, использующей символы Unicode
Вывод греческих букв на метку label1 и в диалоговое окно MessageBox можно осуществить, например, таким путем. В текст программы через буфер обмена вставляем греческие буквы из текстового редактора MS Word. Поскольку по умолчанию Visual Studio 2010 сохраняет cs-файлы в формате Unicode, в принципе таким образом можно программировать вывод греческих букв и других символов на форму и на другие элементы управления.
Более технологично пойти другим путем, а именно будем вставлять подобные символы с помощью функции convert.ToChar, а на вход этой функции будем подавать номер символа в таблице Unicode. В этом случае, даже если cs-файл будет сохранен в традиционной для Блокнота кодировке ANSI, программа будет работать корректно. Номер символа в таблице Unicode легко выяснить, выбрав в редакторе MS Word пункты меню Вставка | Символ. Здесь в таблице следует найти, этот символ и соответствующий ему код знака в шестнадцатеричном представлении. Чтобы перевести шестнадцатеричное представление в десятичное, следует перед шестнадцатеричным числом поставить 0х. Например, после выполнения оператора n = 0хЗВ2 в переменной n будет записано десятичное число 946. На этом месте в таблице Unicode расположена греческая буква β.
Именно таким образом запрограммирована данная задача (листинг 1.9).
Листинг 1.9. Использование символов Unicode
// Программа демонстрирует возможность вывода в текстовую метку, а также
// в диалоговое окно MessageBox греческих букв. Программа приглашает
//пользователя ввести радиус R, чтобы вычислить длину окружности
using System;
using System.Windows.Forms;
IIдругие директивы using удалены, поскольку они не используются
//в данной программе
namespace Unico
{
public partial class Form1 : Form
{
public Form1()
{ // Инициализация нового экземпляра класса System.Windows.Forms.Form InitializeComponent();
base.Font = new System.Drawing.Font("Times New Roman", 12.0F);
base.Text = "Греческие буквы"; button1.Text = "Вычислить";
// бета = 2 x Пи x R
Label1.Text = string.Format(
"Найдем длину окружности:\n {0} = 2{1}{2}{1}R,\nгде {2} = {3}",
Convert.ToChar(0x3B2), Convert.ToChar(0x2219),
// 0=бета 1 - точка
Convert.ToChar(ОхЗСО), Math. PI) ;
// 2 - Пи 3 - число Пи
label2.Text = "Введите радиус R:";
textBox1.Clear() ;
}
private void button1_Click(object sender, EventArgs e)
{ // Проверка - число ли введено:
Single R; // - радиус
bool Число_ли = Single.TryParse(textBox1.Text, System.Globalization.NumberStyles.Number,
System.Globalization.NumberFormatlnfo.Currentlnfo, out R);
if (Число_ли == false)
{
MessageBox.Show("Следует вводить числа!", "Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error); return;
}
Single beta = 2 * (Single)Math.PI * R;
// 0x3B2 - греческая буква бета
MessageBox.Show(String.Format("Длина окружности {0} = {1:F4}",
Convert.ToChar(0x3B2), beta), "Греческая буква");
}
}
} I
Как видно из программного кода, сразу после вызова процедуры InitializeComponent мы задали шрифт Times New Roman, 12 пунктов для формы, этот шрифт будет распространяться на все элементы управления на форме, т. е. натекстовое поле, метку и командную кнопку. Далее, используя метод string.Format, инициализировали свойство Text метки label1. Различные шестнадцатеричные номера соответствуют греческим буквам и арифметической операции "умножить", в инициализации строки участвует также константа π = 3,14. Ее болев точное значение получаем из Math.PI. Escape-последовательность "\n" используем для переноса текста на новую строку. Так называемый перевод каретки можно осуществить также спомощью строки NewLine из перечисления Environment.
Обрабатывая событие button1_click (щелчок на кнопке), мы проверяем с помощью метода TryParse, число ли введено в текстовое поле. Если пользователь ввел число (true), то метод TryParse возвращает значение радиуса R. При вычислении длины окружности beta приводим значение константы Math.PI из типа Double к типу Single посредством неявного преобразования. После вычисления длины окружности beta выводим ее значение вместе с греческой буквой β— Convert.ToChar(0хЗВ2) В диалоговое окно MessageBox. Здесь используем метод string.Format. Выражение "{0:F4}" означает, что значение переменной beta следует выводить по фиксированному формату с четырьмя знаками после запятой.
Данная программа будет корректно отображать греческие буквы, даже если от крыть файл Form1.cs текстовым редактором Блокнот и сохранить его в кодировке ANSI. Убедиться в работоспособности программы можно, открыв решение Unico.sln в папке Unico.
ГЛАВА 2 Программирование консольных приложений
Пример 11. Ввод и вывод в консольном приложении
Иногда, например, для научных расчетов, требуется организовать какой-нибудь самый простой ввод данных, выполнить, может быть, весьма сложную математическую обработку введенных данных и оперативно вывести на экран результат вычислений.
Такая же ситуация возникает тогда, когда большая программа отлаживается по частям. И для отладки вычислительной части совершенно не важен сервис при вводе данных.
Можно по-разному организовать такую программу, в том числе программируя так называемое консольное приложение(от англ. console— пульт управления) Под консолью обычно подразумевают экран компьютера и клавиатуру.
Для примера напишем консольное приложение, которое приглашает пользователя ввести два числа, складывает их и выводит результат вычислений на консоль.
Для этого запускаем Visual С# 2010, далее создаем новый проект (New Project) выбираем шаблон С# Console Application, задаем имя решения (Name) — Сумма, После щелчка на кнопке ОК попадаем сразу на вкладку программного кода (рис. 2.1).
Рис. 2.1. Вкладка программного кода
Как видите, здесь управляющая среда Visual Studio 2010 приготовила несколько строк программного кода. При запуске консольного или Windows-приложения С# метод Main () является первым вызываемым методом. В фигурных скобках после Main() мы вставим собственный программный код (листинг 2.1).
Листинг 2.1. Ввод и вывод данных в консольном приложении
// Эта программа складывает два числа и выводит сумму на консоль using System;. using System.Text;
// Другие директивы using удалены, поскольку они не используются
// в данной программе
namespace Сумма
{
class Program
{
static void Main(string[] args)
{ // Задаем строку заголовка консоли:
Console.Title = "Складываю два числа:";
Console.BackgroundColor = ConsoleColor.Cyan; // - цвет фона
Console.ForegroundColor = ConsoleColor.Black; // - цвет текста
Console.Clear();
Console.WriteLine("Введите первое слагаемое:");
String Строка = Console.ReadLine();
Single X, Y, Z;
X = Single.Parse(Строка) ; // - преобразование строковой переменной в число Console.WriteLine("Введите второе слагаемое:");
Строка = Console.ReadLine();
Y = Single.Parse(Строка);
Z = X + Y;
Console.WriteLine("Сумма = {0} + {1} = {2}", X, Y, Z) ;
// Звуковой сигнал частотой 1000 Гц и длительностью 0.5 секунд:
Console.Веер(1000, 500);
// Приостановить выполнение программы до нажатия какой-нибудь клавиши: Console.ReadKey();
}
}
}
Итак, в данной программе Main () — это стартовая точка, с которой начинается ее выполнение. Обычно консольное приложение выполняется в окне на черном фоне. Чтобы как-то украсить традиционно черное окно консольного приложения, установим цвет фона окна BackgroundColor сине-зеленым (Cyan), а цвет символов, выводимых на консоль, черным (Black). Выводим строки в окно консоли методом WriteLine, а для считывания строки символов, вводимых пользователем, используем метод ReadLine. Далее объявляем три переменных типа single для соответственно первого числа, второго и значения суммы. Тип данных single применяется тогда, когда число, записанное в переменную, может иметь целую и дробную части. Переменная типа single занимает 4 байта. Для преобразования строки символов, введенных пользователем в числовое значение, используем метод Parse.
После вычисления суммы необходимо вывести результат вычислений из оперативной памяти на экран. Для этого воспользуемся форматированным выводом в фигурных скобках метода WriteLine объекта Console:
Console.WriteLine("Сумма = {0} + {1} = {2}", X, Y, Z)
Затем выдаем звуковой сигнал Веер, символизирующий об окончании процедуры и выводе на экран результатов вычислений. Последняя строка в программе Console.ReadKey(); предназначена для приостановки выполнения программы до нажатия какой-нибудь клавиши. Если не добавить эту строку, окно с командной строкой сразу исчезнет и пользователь не сможет увидеть вывод результатов выполнения. Программа написана. Нажмите клавишу <F5>, чтобы увидеть результат. Фрагмент работы данной программы представлен на рис. 2.2.
При организации научных расчетов или в ситуации, когда необходимо отладить расчетную часть большой программы, когда сервис при вводе данных вообще не имеет значения, можно просто присваивать значения переменным при их объявлении. Очень технологичным является вариант, когда данные записываются в текстовый файл с помощью, например, Блокнота (
notepad.exe), а в программе предусмотрено чтение текстового файла в оперативную память.
Рис. 2.2. Фрагмент работы консольного приложения
Убедиться в работоспособности программы можно, открыв решение CyMMa.sln в папке Сумма.
Пример 12. Вывод на консоль таблицы чисел с помощью форматирования строк
Пользуясь тем, что шрифт вывода на консоль является моноширным, т. е. каждый выводимый символ (например, точка и заглавная буква "Ш") имеет одинаковую ширину, в данном примере покажем, как путем форматирования строк можно
вывести таблицу в окно консоли. В этой программе выведем в таблицу извлеченный квадратный корень в цикле от нуля до десяти. Для этого запустим Visual Studio 2010, закажем новый проект шаблона С# Console Application, зададим имя
решения (Name) — ТаблКорней и на вкладке программного кода введем программный код, представленный в листинге 2.2.
Листинг 2.2. Вывод таблицы извлечения квадратного корня на консоль
// Консольное приложение задает цвета и заголовок консоли, а затем выводит
// таблицу извлечения квадратного корня от нуля до десяти using System;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace ТаблКорней
{
class Program
{
static void Main(string[] args)
{
Console.BackgroundColor = ConsoleColor.Cyan;
Console.ForegroundColor = ConsoleColor.Black;
Console.Title = "Таблица"; Console.Clear();
Console.WriteLine("Число Корень");
for (double i = 0; i <= 10; i++)
{
Console.WriteLine("{0,4} {1,8:F4}", i, Math.Sqrt(i));
}
Console.ReadKey();
}
}
}
Как видно из программного кода, в пошаговом цикле for для вывода строк используется метод WriteLine, на вход которого подают строку в определенном формате. Причем форматирование производится по тем же правилам, что и в очень часто используемом методе string. Format, предназначенном для обработки строк. Использованный формат "{0,4} {i,8:F4}" означает: взять нулевой выводимый элемент, т.е. счетчик цикла i, и записать его с выравниванием вправо в четырех столбцах, после чего взять первый выводимый элемент, т. е. значение квадратного корня из i, и записать его с выравниванием вправо в следующих восьми столбцах в формате с фиксированной точкой и четырьмя десятичными знаками после запятой. В результате работы данной программы получим таблицу извлечения квадратного корня (рис. 2.3).