Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Ограничения при использовании структур
Поля структур не могут инициализироваться при объявлении. Для структур запрещено объявление конструктора по умолчанию (его предоставляет среда). При этом поля структуры инициализируются значениями по умолчанию. Для структур могут быть заданы параметризированные конструкторы, при этом в теле такого конструктора должны быть проинициализированы все поля структуры, иначе компилятор вернет ошибку. Объекты структур можно создавать без использования оператора new, хотя при попытке его немедленного использования компилятор сообщит об ошибке. Структура не может иметь деструктор. struct firstStructure { public int field1 = 10; // Ошибка public double field2; public string field3;
public firstStructure() // Ошибка { field1 = 0; field2 = 2.5; field3 = “Это моя первая структура” }
public firstStructure(double x) // Ошибка { field2 = x; }
}
static void Main() { firstStructure S1; Console.Write(S1.field1); // Ошибка, поле не проинициализировано S1.field1 = 10 Console.Write(S1.field1); // 10 firstStructure S2 = new firstStructure();// Вызов системного конструктора по умолчанию Console.Write(S1.field1); // 0 }
Практический пример
Рассмотрим пример структуры, содержащей сведения о сотрудниках предприятия: табельный номер, фамилия, имя, отчество, возраст, пол, домашний адрес.
public struct PData { public long TabNom; public string Surname; public string Firstname; public string Lastname; public byte Age; public string Pol; public string Adress; }
static PData InputData() { PData s; Console.WriteLine("Введите поля новой записи:"); Console.Write("Табельный номер:"); s.TabNom = Convert.ToUInt32(Console.ReadLine()); Console.Write("Фамилия:\t"); s.Surname = Console.ReadLine(); Console.Write("Имя:\t\t"); s.Firstname = Console.ReadLine(); Console.Write("Отчество:\t"); s.Lastname = Console.ReadLine(); Console.Write("Возраст (лет):\t"); s.Age = Convert.ToByte(Console.ReadLine()); Console.Write("Пол (М/Ж):\t"); do s.Pol = Console.ReadLine(); while ((s.Pol!=”М”)&&(s.Pol!=”Ж”)) Console.Write("Адрес:\t\t"); s.Adress = Console.ReadLine(); Console.WriteLine(); return s; }
void Main() { int n = 35; PData [] d = new PData[n]; for(int i=0;i<n;i++) d[i] = InputData(); }
Рассмотрим пример организации цикла, в теле которого осуществляется ввод новой записи и сохранение ее в файл. Признаком прекращения дальнейшего ввода служит нажатие клавиши «минус». Блок-схема метода Main() показана на рис. 5.
Рисунок 5. Блок-схема метода обработки структуры данных
Команда для чтения юникода нажатой клавиши и его явное преобразование в ASCII-код (аргумент true метода ReadKey подавляет вывод на консоль символа нажатой клавиши, возвращаемого свойством KeyChar этого метода):
byte n = Convert.ToByte(Console.ReadKey(true).KeyChar);
ASCII-коды некоторых функциональных клавиш: TAB 9 ENTER 13 ESC 27 SPASE 32
Задание
1. Составить программу на языке C# для обработки данных с помощью статических структур. В программе предусмотреть: создание структурного типа PData для хранения заданного набора данных (см. табл. 11) и объявление структурной переменной типа PData; создание файла данных с расширением. txt; имя которого следует предварительно запросить с клавиатуры; создание пользовательской функции static PData InputData() для инициализации структурной переменной данными, введенными с клавиатуры (перед вводом очищать консоль); создание пользовательской функции static void SaveData(PData s, StreamWriter fs) для добавления записи s в файл, представленный потоком fs; NB: Запись должна выводиться в одну строку в виде значений полей (без подписей), разделенных пробелами или символами табуляции. организацию цикла для выполнения заданного запроса действий пользователя (см. табл. 11), а также ввода новой записи (вызов функции InputData) и сохранения ее в файл (вызов функции SaveData); вывод сообщения о полном имени файла с данными и о количестве сохраненных в него записей. 2. Разработать модульный тест для ручного тестирования функции SaveData с сохранением результатов проверки корректности работы функции в файл test.log. Код теста оформить в виде пользовательской функции UnitTest(string s, string source_file_name). 3. Разработать блок-схемы алгоритмов метода Main, функций InputData и SaveData. 4. В отчете представить: листинг программы, листинг метода тестирования, блок-схемы алгоритмов, распечатку полученного файла данных, выводы по работе.
Таблица 11. Варианты индивидуальных заданий
Лабораторная работа №8
Тема: Использование классов.
Цель: изучение понятия класса, конструктора, деструктора и метода, а также особенностей организации программы с использованием классов.
Теоретические положения Уровни доступа В языке C# доступ для членов класса регулируется несколькими способами:
Доступом по умолчанию является private.
Доступ для классов верхнего уровня (классов, не вложенных в другие классы) ограничивается модификаторами internal и public (по умолчанию: internal). Модификатор доступа, должен появляться перед каждым отдельным полем или методом (иначе данный элемент будет иметь уровень доступа private).
Поля класса могут иметь модификатор readonly, который означает, что значение данной переменной класса может либо быть задано сразу, либо в конструкторе (см. ниже), и в дальнейшем ее значение изменяться не может.
|
|||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-09-26; просмотров: 96; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.251.154 (0.009 с.) |