Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodicheskoe_posobie_VGKS_po_S.docx
Скачиваний:
49
Добавлен:
13.02.2016
Размер:
433.75 Кб
Скачать

Лабораторная работа 4 Строки. Модальные формы пользователя

Цель работы.

Изучить формирование программ с использованием строк. Научиться создавать формы с использованием модальных форм.

План занятия.

Изучить теоретические сведения формирования программы на С#.

По приведенному листингу программы разработать на Visual Studio программу и отладить ее. Составить программу по индивидуальному заданию.

Краткие теоретические сведения.

Строки.

Существует два типа строк: String и StringBuilder.

Отличия:

  1. string является неизменяемым типом данного. Это значит, что при любой модификации создается в памяти новая копия, а старая сбрасывается в «мусор».

В связи с этим в string можно только прочитать отдельный символ:

a=”пример”;

c=a[2]; // в с будет буква ‘и’

но нельзя

a[2]=’a’;

StringBuilder является полноправным объектом и при модификации строки это делается именно в этой памяти, а не в копии:

a=”пример”;

c=a[2]; // в c будет буква ‘и’

a[2]=’a’ // буква ‘и’ заменится на ‘а’!

Объект StringBuilder можно наследовать в отличие от string.

С точки зрения работы эти два типа практически одинаковы.

string

Инициализация выполняется КОНСТРУКТОРОМ. Перегруженным конструктором называется конструктор с различным синтаксисом инициализации. Приведем характерные ситуации инициализации строки string:

  1. string s; // размер строки не определен и зависит от того, что ей потом будет присвоено;

  1. string s = “пример”; // аналогично первому, только задается начальное значение

  2. string s = new string(20); //длина строки устанавливается в 20 символов

  3. string s = new string(‘+’,20); // аналогично третьему, только строка заполняется всеми знаками «+»

  4. string s = new string(а); //аналогично 2, только начальная строка берется из массива символов а => char[ ]

Операции над строками

+ ( сцепление строк)

“abc” + “def” // будет “abcdef”

[ ] (обращение к символу строки)

D=A[2] // в D будет записан 3-й символ строки A

Методы и свойства string

Length – (свойство) текущая длина строки в символах: S.Length;

S.Substring(3) – выделение подстроки начиная с 4 символа и до конца строки;

S.Substring(5,3) – выделение подстроки длиной 3 символа, начиная с шестого символа.

Пример:

St = s.Substring(3).Remove(12,2)

По этому примеру из строки s выделяется подстрока начиная с 4 символа и уже в этой подстроке удаляется 2 символа начиная с 13.

Часть методов класса string являются статическими, т. е. независимыми от экземпляра. Если метод статический, то к нему надо обращаться через указание класса String:

String.Join(“!”, mas); // для статического метода нет экземпляра!

StringBuilder

Инициализация возможна только с использованием new:

  1. StringBuilder s = new StringBuilder( ); //создается пустая строка длиной 16 байт;

  2. StringBuilder s = new StringBuilder(100); //создается пустая строка длиной 100 символов;

  3. StringBuilder s = new StringBuilder(“abc”); //создается строка «abc» длиной 3 cимвола;

  4. StringBuilder s = new StringBuilder(“abc”, 100);

  5. StringBuilder s = new StringBuilder(“фапр”,1,3,100); // создается строка длиной 100 символов, в которую записывается начальная строка “апр”

Пример метода s.AppendFormat:

а=1; b=1;

StringBuilder s = new StringBuilder(“s=”);

s.AppendFormat (“{0} и m={1}”,a,b);

Порядок выполнения работы.

Создайте две формы:

FORM2 FORM1

Воспроизведите коды программ.

// PROGRAM

using System;

using System.Collections.Generic;

using System.Linq;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

static class Program

{

/// <summary>

/// Главная точка входа для приложения.

/// </summary>

[STAThread]

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Form1 f1=new Form1();

Form2 f2 = new Form2();

DialogResult ss=f1.ShowDialog();

if(ss==DialogResult.OK) f2.textBox1.Text = f1.textBox1.Text;

f2.ShowDialog();

}

}

}

// FORM1

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

{

public Form1()

{

InitializeComponent();

}

private void button2_Click(object sender, EventArgs e)

{

this.DialogResult=DialogResult.OK;

}

private void button1_Click(object sender, EventArgs e)

{

double x, y; string st;

x = Convert.ToDouble(textBox1.Text);

y = Math.Sin(x);

st = String.Format("{0,4:0.##}",y);

textBox2.Text = st;

}

}}

// FORM2

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 Form2 : Form

{

public Form2()

{

InitializeComponent();

}

private void button2_Click(object sender, EventArgs e)

{

this.Close();

}

private void button1_Click(object sender, EventArgs e)

{

double x, y; string st;

x = Convert.ToDouble(textBox1.Text);

y = Math.Sin(x)+4.5;

st = String.Format("{0,4:0.##}", y);

textBox2.Text = st;

}

}

}

Индивидуальное задание.

Из файла прочитайте строку текста на кириллице. В строке текста замените все буквы м на цифры 2. Получившуюся строку выведите в файл. Задание выполните для string и StringBuilder.

Содержание отчета.

Представить отлаженную программу по индивидуальному заданию.

Литература.

Павловская Т.А. С#, Программирование на языке высокого уровня. – М., СПб: Питер, 2010, с.139-148

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]