Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

ЛР 2. Складні типи даних C# : структури

Читайте также:
  1. I. Аналіз структури та динаміка податкових надходжень до Зведеного бюджету України
  2. Алгоритм 4. Транспонування бази даних
  3. База даних користувача
  4. Введення даних груп барвників. Для фарбування бавовняних тканин потрібно ввести такі групи барвників: прямі, активні, кубові, сірчисті, пігменти.
  5. Введення-виведення типізованих даних
  6. Введення/вивід даних
  7. Використання бази даних.

Завдання на ЛР:

Написати програму для роботи з структурами.

Основні операції:

1. Формування списка

2. Відображення списка

3. Збереження списка у файлі

4. Завантаження файла у список

 

Варіанти завдань

Варіант Список Додаткова операція
  Список співроботніків Додавання записів
  Список студентів групи Видаління записів
  Ведомість успішністі Вставка записів
  Список абонентів Пошук записів
  Ведомість зарплатні Сортування записів за окладом
  Список викладачів Додавання записів
  Список літератури Видаління записів
  План роботи Вставка записів
  Розклад занять Сортування записів за часом заняття
  Програма телепередач Пошук записів
  Список мааршрутів Додавання записів
  Список сайтів Видаління записів
  Плей-лист Вставка записів
  Список магазинів Пошук записів
  Список навчальних закладів Пошук записів
  Список кафедр Додавання записів
  Список факультетів Видаління записів
  Щоденнік Вставка записів
  Розклад сессії Сортування записів за датою
  Список класів C# Пошук записів

 

Передбачити:

відображення меню програми;

вибір пунктів меню;

введення даних із клавіатури;

відображення необхідних даних та повідомлень.

Інтерфейс програми

Відомості з теорії

Структури

Структури є особливим різновидом класів. У багатьох мовах програмування

структури використовуються як контейнери безлічі пойменованих даних різного типу.

У С# роль структур не обмежується тільки цим.

У С# структури також можуть зберігати дані різних типів. У цьому сенсі вони подібні

до перерахувань, але визначають константи різних типів. Крім того, на відміну від

перерахувань, значення даних (полів) структур можна перевизначати в ході роботи

програми. У С# структури окрім полів можуть містити методи і

конструктори, перенавантажувати операції і реалізовувати інтерфейси.

Все це робить структури схожими на класи, але з наступними обмеженнями:

структури не можуть мати батьків у вигляді класів або інших структур,

але можуть реалізовувати інтерфейси;

неявним батьком будь-якої структури, як і всього останнього в CTS, є клас object,

тому в структурі діють всі методи цього класу;

структура не може мати спадкоємців, тобто її не можна оголосити з модифікатором

abstract або sealed;

на відміну від класів, структури відносяться до значущих типів.

Остання обставина дуже важлива: значущі типи розміщуються в стеку, тому доступ

до структур реалізується швидше, ніж до екземплярів класу (об'єктам). Звідси можна

зробити такий вивід: якщо у класу відносно небагато полів, але в програмі передбачається використовувати безліч його об'єктів, корисно реалізувати такий клас як структуру

(якщо, зрозуміло, семантика класу дозволяє це).

Оголошення структури має такий вигляд:

[ атрибути ][ модифікатори ] struct імя_структури [: спісок_інтерфейсов ] { тело_структури }

Оголошення структури схоже з оголошенням класу - при двох відмінностях:

замість зарезервованого слова class використовується зарезервоване слово struct, а замість батьківського класу указується необов'язковий список інтерфейсів.

Всі стандартні значущі типи CTS реалізовані у вигляді структур.

Приклад оголошення структури:

[Serializable]

public struct Person

{

public int num;

public string name;

public string adres;

public string phone;

}

Як і будь-який інший клас, структура забезпечується замовчуваним конструктором

без параметрів. На відміну від класів, цей конструктор не можна перекрити.

Його призначення - виділити структурі необхідну пам'ять в стеку.

Для попереднього прикладу допустимі такі оператори:

Person per; // Неявний виклик конструктора

per.num = 1; // Тепер можна заповнювати поля

per.name = “ Бондарчук А.О.”;

Неявний виклик замовчуваного конструктора не приводить до ініціалізації полів

структури. Для ініціалізації полів замовчуваними значеннями потрібно задати конструктор при оголошенні структури і викликати його явно:

Person per = new Person ();

Приклади операцій з структурами:

Person[] list = new Person[10]; // оголошення масива структур(списка)

// Формування списка (n – розмір списка)

for (int i = 0; i < n; i++)

{

Console.Write(" Номер ");

s = Console.ReadLine();

lst[i].num = int.Parse(s);

Console.Write(" Прiзвище " + lst[i].num.ToString() + " ");

s = Console.ReadLine();

lst[i].name = s;

Console.Write(" Адреса " + (i + 1).ToString() + " ");

s = Console.ReadLine();

lst[i].adres = s;

Console.Write(" Телефон " + (i + 1).ToString() + " ");

s = Console.ReadLine();

lst[i].phone = s;

}

// Видображення списка

for (int i = 0; i < n; i++)

{

Console.WriteLine(" " + lst[i].num.ToString() + " " + lst[i].name +

" " + lst[i].adres + " " + lst[i].phone);

}

// Сортування спмска

private static void Sort(Person[] m, int n)

{

int i, j, k;

Person X;

for (i = 0; i < n; i++)

{

k = i; X = m[i];

for (j = i + 1; j < n; j++)

if (m[j].P < X.P)

{

k = j;

X = m[j];

}

m[k] = m[i];

m[i] = X;

}

}

 

// Простори имен для роботи із файлами

using System.Xml;

using System.Runtime.Serialization.Formatters.Binary;

using System.IO;

// Збереження списка у файлі

static void Save_List(Person[] lst, int n, string fname)

{

Person[] items = new Person[n];

for (int i = 0; i < n; i++) items[i] = lst[i];

FileStream fs = new FileStream(fname, FileMode.Create);

BinaryFormatter sf = new BinaryFormatter();

sf.Serialize(fs, items);

fs.Close();

Console.WriteLine(" Файл "+fname + " створений");

}

// Завантаження списка з файла

static int LoadList(ref Person[] lst,string fname)

{

FileStream fs = new FileStream(fname, FileMode.Open);

BinaryFormatter sf = new BinaryFormatter();

lst = (Person[])sf.Deserialize(fs);

fs.Close();

Console.WriteLine(" Файл " + fname + " завантажений");

int n = lst.Count();

View_List(lst, n);

return n;

}

 

ЛР 3. Функції C#

Завдання на ЛР:

1. Написати програму обчислення значень функцій:

Бібліотечні функції

sin(x)

cos(x)

exp(x)

Функція користувача f(x)

Варіант Функція Примітки
  y = sin(x)/x y(0) = 1
  y = n! n >= 0, y(0) = 1
  y = 2n n >= 0
  z = xy y >= 0
  y = ax2+bx+c  
  y = ∑aixi, i = 0.. n y = a0 + a1x + a2x2 +…
  y = 2n n <= 0
  z = xy y <= 0
  y = tg x  
  y = ctg x  
  y = xe-x  
  y = Min(a,b)  
  y = Max(a,b)  
  y = MinMax (a,b,c)  
  y = MinMaxMidle (a,b,c)  
  Swap(V1,V2) Обмін значень якщо V1<V2
  Sign(V) Визначення знаку V
  y = log10 x x > 0
  y = log2 x x > 0
  y = 1 - e-x  

 

2. Передбачити:

опис функції f(x);

відображення меню програми;

вибір пунктів меню;

введення даних із клавіатури;

відображення необхідних даних та повідомлень.


Дата добавления: 2015-10-31; просмотров: 179 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Циклічний оператор із перевіркою умови закінчення| Інтерфейс програми

mybiblioteka.su - 2015-2024 год. (0.015 сек.)