Читайте также:
|
|
Завдання на ЛР:
Написати програму для роботи з структурами.
Основні операції:
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 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Циклічний оператор із перевіркою умови закінчення | | | Інтерфейс програми |