- •В.А. Новиков Объектно-ориентированное программирование в с#
- •Минск ● вгкс
- •Лабораторная работа 1 Константы, переменные, выражения. Визуальные элементы: кнопка и текстовое поле
- •Лабораторная работа 2 Операторы управления. Визуальные элементы: маскированное поле и установка цвета
- •Лабораторная работа 3 Ввод – вывод на консоль. Визуализация через файлы. Независимый переключатель и шрифты
- •Лабораторная работа 4 Строки. Модальные формы пользователя
- •Лабораторная работа 5 Массивы. Зависимый переключатель
- •Лабораторная 6 Перечисление. Немодальные формы пользователя
- •Лабораторная 7 Регулярные выражения. Таймер
- •Лабораторная работа 8 Прототипы-данные. Визуальный элемент выпадающий список
- •Лабораторная работа 9 Подпрограммы. Визуальный элемент список. Отработка событий клавиатуры
- •Лабораторная работа 10 Обработка исключительных ситуаций. Визуальный элемент закладка tabControl
- •Лабораторная работа 11 Переопределение операций. Закладка TabStrip
- •Лабораторная работа 12 Работа с файлами. Всплывающая подсказка
- •Лабораторная работа 13 Структуры. Перетаскивание элемента на форме
- •Лабораторная работа 14 Построение графиков через Excel. Объект Drawning
- •Содержание
Лабораторная работа 3 Ввод – вывод на консоль. Визуализация через файлы. Независимый переключатель и шрифты
Цель работы.
Изучить формирование программ с вводом-выводом на консоль и через файлы. Научиться создавать формы с использованием визуального элемента независимый переключатель. Научиться изменять шрифты визуальных элементов.
План занятия.
Изучить теоретические сведения формирования программы на С#.
По приведенному листингу программы разработать на Visual Studio программу и отладить ее. Составить программу по индивидуальному заданию.
Краткие теоретические сведения.
Процедуры консольного ввода-вывода:
Console.Read()
Console.Readline()
Console.Write(“выводимая строка”)
Console.Writeline(“выводимая строка”))
Пример программы:
Вычислить выражение y = sin(x):
float x,y;
Console.Write(“x = “); x=Convert.ToDouble(Console.Readline());
y = Math.Sin(x);
Console.Write(“y = {0}“,y);
Элементы визуализации результатов через файлы.
Используем два файла текстового типа: один для хранения вводимых данных и другой для результата: r.txt и w.txt.
Эти файлы должны располагаться там, где находится и программный файл .exe. Для работы с файлами необходимо:
1. Объявить переменную типа файл в виде:
а) для файла r.txt:
StreamReader fr=new StremReader (“r.txt”,Encoding.GetEncoding(1251));
б) Для файла w.txt:
StreamWriter fw=new StremWriter (“w.txt”,false,
Encoding.GetEncoding(1251));
2. Из файла fr прочитать исходные данные.
Предложим, что для переменной x в файле r.txt записано:
ЦЕНА= 5
Читаем:
sr=fr.ReadLine; //читается sr=”ЦЕНА= 5”; // переменная sr типа string sr;
string[] buf; //Создаем массив строк
buf=sr.Split(‘=’); // В buf заносятся элементы разбитые по знаку =, т. е.
// buf[0]=”цена” и buf[1]=5
fr. Close; // закрывается файл
3) Вычисляется выражение :
x=Convert. ToDouble(buf[1]);
y=Math.Sin(x);
4) в файл fw записывается результат:
fw.WriteLine(sr); // исходные данные
fw.WriteLine(“прибыль={0}, y); //ответ
м
Форматирование строк при выводе на консоль и в файлы.
Синтаксис:
Console.Write (“y={0.5:F.2} x={1.##.##}”, x,y);
В фигурных скобках записывается формат вывода для переменных x и y.
Синтаксис элемента форматирования в {}
{n[.m[:спецификатор[.число]]}
n –номер переменной , начиная с 0 (в приведенном примере это 0 для x и 1 для y);
m – минимальная ширина поля в символах; если длина числа больше, то будет больше символов .
cпецификатор:
С –валюта, у нас к числу будет добавляться буква Р (рубль);
Х –шеснадцатеричное;
D – дробное двойной точности;
F – дробное;
число – число дробных знаков в D и F;
В качестве спецификатора может использоваться шаблон из 0 или # в виде 0#.##
0 – любая цифра, в том числе и 0, если ноль десятков
# – любая цифра кроме незначащего 0 // 5.2 – по шаблону выше будет 05.2
// .0052 – по шаблону выше будет 00.0052
Модальные стандартные окна.
Позволяют на экран выдавать сообщения.
Все модальные окна вызываются одинаково:
MessageBox (параметры);
Вид модального окна зависит от параметров. Существует более 30 видов этих параметров (найти их самостоятельно).
double x=0.5;
MessageBox.Show (“x=”+Convert.ToString(x));
Директивы препроцессора.
Директивы препроцессора позволяют перед компиляцией убирать и добавлять часть кода. Это практически всегда необходимо при отладке программы. Управление операторами препроцессора определяется с использованием символов. Символ – это логические переменные. Логическая переменная, например DEBUG принимает true, если она установлена оператором:
#define DEBUG
и значение false, если она установлена оператором
#undef DEBUG
Операторы #define и #undef записываются самыми первыми (можно за комментариями, если они есть).
Пример:
#define DEBUG
class Example 1
{public statiс void Main ()
{int i=5, k;
k=6*i;
#if DEBUG
MessageBox(“k=”+(string)k);
#endif
}}
Оператор препроцессора #if
# if символ 1
текст c#
#elif символ 2
текст c#
#elif символ 3
текст c#
#else
текст c#
#endif
Порядок выполнения работы.
// ШРИФТЫ ChexBox и установка цветов
//FORM
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
bool RD, GR, BL;
Color COLR_T, COLR_B;
public Form1()
{
InitializeComponent();
COLR_T = label1.ForeColor;
COLR_B = textBox2.BackColor;
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
switch (checkBox2.Checked)
{
case true: GR= true; break;
case false: GR = false; break;
}
}
private void button1_Click(object sender, EventArgs e)
{
fontDialog1.ShowDialog();
this.label1.Font = fontDialog1.Font;
textBox2.Text = fontDialog1.Font.Size.ToString();
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
switch (checkBox1.Checked)
{
case true: RD = true; break;
case false: RD = false; break;
}
}
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
switch (checkBox3.Checked)
{
case true: BL = true; break;
case false: BL = false; break;
}
}
private void label1_MouseHover(object sender, EventArgs e)
{
int CCCR,CCCG,CCCB;
if (!RD) CCCR = COLR_T.R; else CCCR = 255;
if (!GR) CCCG = COLR_T.G; else CCCG = 255;
if (!BL) CCCB = COLR_T.B; else CCCB = 255;
this.label1.ForeColor = System.Drawing.Color.FromArgb(CCCR,CCCG,CCCB);
}}}
Индивидуальное задание.
Составьте программу ввода из текстового файла значений переменных а, b, c, которые в файле записаны в формате:
a=5.1; b=7.9; c=6.8;
Вычислите выражение:
Выведите в файл результат в виде Y=6.7.
Содержание отчета.
Представить отлаженную программу по индивидуальному заданию.
Литература.
Павловская Т.А. С#, Программирование на языке высокого уровня. – М., СПб: Питер, 2010, с.262-263