Методичні вказівки до виконання контрольної роботи 3 дисципліни \"інформаційні мережі\" для студентів напряму підготовки 040302 icon

Методичні вказівки до виконання контрольної роботи 3 дисципліни "інформаційні мережі" для студентів напряму підготовки 040302




НазваМетодичні вказівки до виконання контрольної роботи 3 дисципліни "інформаційні мережі" для студентів напряму підготовки 040302
Дата22.05.2013
Розмір147 Kb.
ТипМетодичні вказівки



Міністерство освіти і науки, молоді та спорту України

Сумський державний університет


3488 МЕТОДИЧНІ ВКАЗІВКИ

ДО ВИКОНАННЯ КОНТРОЛЬНОЇ РОБОТИ

3 ДИСЦИПЛІНИ “ІНФОРМАЦІЙНІ МЕРЕЖІ”

ДЛЯ СТУДЕНТІВ НАПРЯМУ ПІДГОТОВКИ 040302

ДЕННОЇ ФОРМИ НАВЧАННЯ


Суми

Сумський державний університет

2013

Методичні вказівки до виконання контрольної роботи з дисципліни “Інформаційні мережі” /укладач М. С. Бабій. – Суми : Сумський державний університет, 2013. – 27 с.


Кафедра комп’ютерних наук


ЗМІСТ


C.

1 Варіанти завдань на контрольну роботу . . . . . . . . . 4

2 Базова програма для передачі даних на сервер . . . . . 6

2.1 Серверна програма . . . . . . . . . . . . . . . . . . 6

2.2 Клієнтська програма . . . . . . . . . . . . . . . . . 10

3 Програма для обміну даними . . . . . . . . . . . . . . 14

3.1 Доповнення до базової програми . . . . . . . . . . 14

3.1 Приклад програми . . . . . . . . . . . . . . . . . . 15

Список літератури . . . . . . . . . . . . . . . . . . . . . 19


1 Варіанти завдань на контрольну роботу


В середовищі Visual C++ написати клієнтську і серверну програми для обміну інформацією через сокети.

Варіанти обміну.



Кліент посилає серверу


Сервер повертає кліенту

1

число


підтвердження прийому

2

три числа


суму цих чисел

3

три числа


максимальне з цих чисел

4

три числа


мінімальне з цих чисел

5

три числа


середнє арифметичне цих чисел

6

матрицю [3×3]


суму елементів матриці

7

матрицю [3×3]

максимальний елемент матриці

8

матрицю [3×3]

мінімальний елемент матриці

9

матрицю [3×3]

середнє арифметичне елементів матриці

10

матрицю [3×3]

суму позитивних элементів матриці

11

матрицю [3×3]

суму негативних елементів матриці

12

матрицю [3×3]

суму діагональних елементів матриці

13

рядок з декількох слів


кількість слів в рядку




14

рядок з декількох слів


кількість символів в рядку

15

рядок з декількох слів


кількість пробілів в рядку

16

рядок з декількох слів


кількість букв в рядку

17

рядок з декількох слів



кількість цифр в рядку

18

рядок з декількох слів


підтвердження наявності в рядку слова start

19

рядок з декількох слів


перше слово рядка

20

рядок з декількох слів


останнє слово рядка

21

рядок з декількох слів


кількість символів “s” в рядку

22

рядок з декількох слів


підтвердження наявності крапки “.” в кінці рядка


2 Базова програма для передачі даних на сервер


Для організації міжмашинної взаємодії побудуємо клієнт-серверний додаток, який буде складатися з клієнтської і серверної частин. Працювати він зможе як у межах одного, так і двох комп'ютерів. З'єднання між клієнтською і серверною частинами буде відбуватися за протоколом TCP/IP. Якщо у вас тільки один комп'ютер, то за адресу сервера клієнт може взяти адресу 127.0.0.1. Ця адреса завжди показує на свій комп'ютер, що зручно при налагодженні мережних додатків.


2.1 Серверна програма


Виберемо тип проекту Visual C++ | MFC | MFC Application, дамо проекту ім’я Serv, і виберемо тип додатка Dialog based. На кроці Advanced Features включимо підтримку Windows Sockets. Елементи Use Unicode libraries, About box, ActiveX Controls і Common Control Manifest можна відключити.

Розмістимо на діалоговому вікні одну кнопку з ідентифікатором IDC_LISTEN і заголовком Listen і один Edit з ідентифікатором IDC_DATA. При натисканні на кнопку Listen сервер почне слухати мережу. Після того, як клієнт приєднається до нашого сервера і відправить деякі дані, вони з'являться в нашому Edіt. Для простоти після з'єднання тільки клієнт зможе відправляти дані. Якщо ви захочете відправляти дані також і із сервера, то вам доведеться додати в серверну частину нашої програми код, аналогічний кодові клієнтської частини, яку ми розглянемо в розділі 3.2.

Після розміщення всіх елементів наша програма буде виглядати приблизно так:




Далі пунктом Add Variable контекстного меню елемента Edit припишемо цьому елементу змінну m_sData типу CEdit.

Приступимо безпосередньо до написання коду. Пунктом контекстного меню Add | Class на вкладці Class View створимо новий MFC клас CMySocket як нащадок класу CSocket.

Додамо в клас CMySocket (файл MySocket.h) змінну типу покажчик на CServDlg:

public:

CServDlg* m_pDlg; .

У цій змінній буде зберігатися покажчик на наше діалогове вікно. Оскільки ми тут використовуємо клас CServDlg, то необхідно додати рядок

class CServDlg;

безпосередньо перед оголошенням класу CMySocket.

Далі ми повинні додати метод для завдання значення змінній m_pDlg. Назвемо його SetParentDlg:

void SetParentDlg(CServDlg *pDlg);

Реалізація методу (файл MySocket.cpp) буде така

void CMySocket::SetParentDlg(CServDlg *pDlg)

{

m_pDlg=pDlg;

}

Тепер нам потрібно в нашому класі написати дві віртуальні функції – OnAccept і OnReceive з заголовками:

virtual void OnAccept (int nErrorCode) ;

virtual void OnReceive (int nErrorCode) ; .

Перша буде викликатися, коли наш сокет, який прослуховує мережу, одержить запит на з'єднання від клієнтської сторони. Друга – при одержанні даних від клієнта. Фунції додамо за допомогою пункту Add | Add function контекстного меню класу CMySocket на вкладці Class View.

В одержані заготовки для функцій додамо такий код:

void CMySocket::OnAccept (int nErrorCode)

{

AfxMessageBox("Есть соединение");

m_pDlg->OnAccept();

CSocket::OnAccept(nErrorCode);

}

void CMySocket::OnReceive(int nErrorCode)

{

AfxMessageBox("Данные получены");

m_pDlg->OnReceive();

CSocket::OnReceive(nErrorCode);

}

У цих двох фрагментах ми після показу МеssаgeBох викликаємо однойменні функції OnAccept() і OnReceive() нашого діалогового вікна. Виклик виконаємо за допомогою змінної m_pDlg, в якій і зберігається покажчик на головне вікно. Ці функції діалогового вікна у нас поки що не написані. Чому код з обробки краще писати у класі діалогового вікна, а не в класі сокета? Тому що дані, як правило, пересилаються саме діалоговому вікну для відображення і подальшої обробки, а не нашому сокету. Але обробку можна робити й у класі сокета. Оскільки ми в цьому фрагменті використовуємо змінну m_pDlg, то перед реалізацією методів у файлі MySocket.cpp пишемо рядок

#include "ServDlg.h" .

Тепер займемося класом діалогового вікна. Для початку в файлі ServDlg.h задамо дві змінні типу CMySocket:

#include "MySocket.h"

. . .

class CServerDlg : public CDialog

{

. . .

public:

CMySocket m_pListenSocket;

CMySocket m_pConnectSocket;

. . .

Як бачимо, сокетів у нас два. Перший (m_pListenSocket) прослуховує мережу. Коли серверна частина нашого додатка починає працювати, саме він приймає на заданому порту запит від клієнта. Як тільки від клієнта надійде запит, m_pListenSocket переведе з'єднання на сокет m_pConnectSocket, який буде займатися передачею даних, а сам буде продовжувати слухати далі.

У методі OnInitDialog за допомогою SetParentDlg задамо значення для змінної m_pDlg в сокетах:

BOOL CServDlg::OnInitDialog()

{

CDialog::OnInitDialog();

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

m_pListenSocket.SetParentDlg(this);

m_pConnectSocket.SetParentDlg(this);

m_pListenSocket.Create(2000); // 2000 порт

return TRUE;

}

У результаті змінна m_pDlg буде показувати на поточне діалогове вікно.

Далі додаємо методи OnAccept і OnReceive. Реалізація методів має вигляд

void CServDlg::OnAccept ()

{

m_pListenSocket.Accept(m_pConnectSocket);

}


void CServDlg::OnReceive ()

{

char *pBuf=new char[1025];

int n=m_pConnectSocket.Receive(pBuf, 1024);

pBuf[n]=NULL;

m_sData.SetWindowTextA(pBuf);

UpdateData(FALSE);

}

Тепер залишилося написати код для кнопки Listen. Саме при натисканні на цю кнопку сокет m_pListenSocket починає слухати мережу. Створимо функцію обробки для кнопки і додамо в неї такий код:

void CServDlg::OnListen()

{

m_pListenSocket.Listen();

}

Написання сервера закінчено.


2.2 Клієнтська програма


Тепер напишемо клієнтський додаток. Назвемо проект Clnt і виберемо тип додатка Dialog based. Як і при побудові сервера включимо підтримку Windows Sockets, необов’язкові елементи відключимо.

У діалоговому вікні розмістимо на формі дві кнопки і елемент Еdit. Для кнопок задамо ідентифікатори IDC_CONNECT і IDC_SEND, а для Edit – IDC_DATA. Властивість Caption для кнопок установимо в Connect і Send відповідно. За першою кнопкою наш клієнт буде з'єднуватися із сервером, за другою – відправляти дані, введені користувачем у Edit. Наша форма буде виглядати приблизно так:





Елементу Edit припишемо за допомогою ClassWizard змінну m_sData типу CEdit.

Тепер приступаємо безпосередньо до написання коду. Додамо в наш проект клас CMySocket. Предком цього класу виберемо клас CSocket точно так, як і для серверної частини. Цей клас повинен містити покажчик на діалогове вікно. Для створення такого покажчика додамо відповідну змінну в public-секцію нашого класу:

public:

CClntDlg* m_pDlg; .

Оскільки ми використовуємо клас CClntDlg, то додамо рядок

class CClntDlg;

перед оголошенням класу CMySocket.

Як і для серверної частини, додамо в клас CMySocket метод, у якому для змінної m_pDlg буде задаватися конкретне значення:

void CMySocket::SetParentDlg(CClntDlg *pDlg)

{

m_pDlg=pDlg;

}

Тепер додамо в файлі ClntDlg.h в діалоговий клас CClntDlg змінну, у якій буде зберігатися екземпляр класу CMySocket:

#include "MySocket.h"

. . .

class CClntDlg : public CDialog

{

public:

CMySocket m_pConnectSocket;

Як і для сервера тут записано відповідний include.

Додамо такий код у метод OnInitDialog класу CClntDlg:

BOOL CClntDlg::OnInitDialog()

{

. . .

// TODO: Add extra initialization here

m_pConnectSocket.SetParentDlg(this);

m_pConnectSocket.Create();

. . .

}

У цьому коді ми записуємо в змінну m_pDlg класу CMySocket адресу клієнтського діалогового вікна.

Додамо далі код, що буде виконуватися при натисканні на кнопки з заголовками Connect і Send:

void CClntDlg::OnConnect()

{

m_pConnectSocket.Connect("127.0.0.1", 2000);

}

void CClntDlg::OnSend()

{

CHAR str[80];

DWORD lstr;

UpdateData(TRUE);

m_sData.GetWindowText(str,80);

lstr=m_sData.GetWindowTextLength();

m_pConnectSocket.Send(str, lstr);

}

Написання клієнта закінчено.

3 Програма для обміну даними

3.1 Доповнення до базової програми . .

В першу чергу клієнтському сокету слід надати можливість одержувати інформацію від сервера. Для цього додамо до клієнтського класу CMySocket функцію OnReceive, наприклад таку:

void CMySocket::OnReceive(int nErrorCode)

{

AfxMessageBox("Ответ получен");

m_pDlg->OnReceive();

CSocket::OnReceive(nErrorCode);

}

Функція OnReceive() класу CClntDlg, яка відображає одержану інформацію, може мати вигляд

void::OnReceive ()

{

char *pBuf=new char[1025];

int n=m_pConnectSocket.Receive(pBuf, 1024);

pBuf[n]=NULL;

m_sData.SetWindowTextA(pBuf);

UpdateData(FALSE);

}

Серверна програма після одержання інформації повинна виконати її обробку, замінити в буфері одержану інформацію результатом її обробки і відправити вміст буфера клієнту. Відповідна функція OnReceive() класу CservDlg може мати вигляд

void CServDlg::OnReceive ()

{

char *pBuf=new char[1025];

DWORD lstr=10;

int n=m_pConnectSocket.Receive(pBuf, 1024);

pBuf[n]=NULL;

m_sData.SetWindowTextA(pBuf);

UpdateData(FALSE);

// Обробка одержаної інформації

// і запис її в буфер pBuf

m_pConnectSocket.Send(pBuf, lstr);

}


3.2 Приклад програми


Наведемо приклад клієнтської програми, яка посилає серверу матрицю дійсних чисел розміром 3×3. Сервер повертає клієнту правий нижній елемент матриці, округлений до двох цифр після коми. Для зручності матрицю будемо передавати по рядках у вигляді одного рядка десяткових чисел.

^ Файл CMySocket.h

#pragma once

class CClntDlg;

class CMySocket : public CSocket

{

public:

CMySocket();

virtual ~CMySocket();

CClntDlg* m_pDlg;

void CMySocket::SetParentDlg(CClntDlg *pDlg);

virtual void OnReceive (int nErrorCode);

};


^ Файл CMySocket.cpp

#include "stdafx.h"

#include "Clnt.h"

#include "MySocket.h"

#include "ClntDlg.h"


CMySocket::CMySocket()

{

}


CMySocket::~CMySocket()

{

}


void CMySocket::SetParentDlg(CClntDlg *pDlg)

{

m_pDlg=pDlg;

}


void CMySocket::OnReceive(int nErrorCode)

{

AfxMessageBox("Answer is received");

m_pDlg->OnReceive();

CSocket::OnReceive(nErrorCode);

}


^ Файл ClntDlg.h

#pragma once

#include "afxwin.h"

#include "MySocket.h"


class CClntDlg : public CDialog

{

public:

CClntDlg(CWnd* pParent = NULL);

enum { IDD = IDD_CLNT_DIALOG };

protected:

virtual void DoDataExchange(CDataExchange* pDX);

protected:

HICON m_hIcon;

virtual BOOL OnInitDialog();

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

DECLARE_MESSAGE_MAP()

public:

CEdit m_sData;

CMySocket m_pConnectSocket;

afx_msg void OnConnect();

afx_msg void OnSend();

void CClntDlg::OnReceive();

};


^ Файл ClntDlg.cpp

#include "stdafx.h"

#include "Clnt.h"

#include "ClntDlg.h"


#ifdef _DEBUG

#define new DEBUG_NEW

#endif


CClntDlg::CClntDlg(CWnd* pParent /*=NULL*/)

: CDialog(CClntDlg::IDD, pParent)

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}


void CClntDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_DATA, m_sData);

}


BEGIN_MESSAGE_MAP(CClntDlg, CDialog)

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

//}}AFX_MSG_MAP

ON_BN_CLICKED(IDC_CONNECT, &CClntDlg::OnConnect)

ON_BN_CLICKED(IDC_SEND, &CClntDlg::OnSend)

END_MESSAGE_MAP()


BOOL CClntDlg::OnInitDialog()

{

CDialog::OnInitDialog();

SetIcon(m_hIcon, TRUE);

SetIcon(m_hIcon, FALSE);

// TODO: Add extra initialization here

m_pConnectSocket.SetParentDlg(this);

m_pConnectSocket.Create();

return TRUE;

}


void CClntDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this);

SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0);

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}


HCURSOR CClntDlg::OnQueryDragIcon()

{

return static_cast(m_hIcon);

}


void CClntDlg::OnConnect()

{

m_pConnectSocket.Connect("127.0.0.1", 2000);

}


void CClntDlg::OnSend()

{

CHAR str[80];

DWORD lstr;

UpdateData(TRUE);

m_sData.GetWindowText(str,80);

lstr=m_sData.GetWindowTextLength();

m_pConnectSocket.Send(str, lstr);

}


void CClntDlg::OnReceive ()

{

char *pBuf=new char[1025];

int n=m_pConnectSocket.Receive(pBuf, 1024);

pBuf[n]=NULL;

m_sData.SetWindowTextA(pBuf);

UpdateData(FALSE);

}


Серверна програма має вигляд.


^ Файл CMySocket.h

#pragma once


class CServDlg;

class CMySocket : public CSocket

{

public:

CMySocket();

virtual ~CMySocket();

CServDlg* m_pDlg;

void SetParentDlg(CServDlg *pDlg);

virtual void OnAccept(int nErrorCode);

virtual void OnReceive(int nErrorCode);

};


^ Файл CMySocket.cpp

#include "stdafx.h"

#include "Serv.h"

#include "MySocket.h"

#include "ServDlg.h"


CMySocket::CMySocket()

{

}


CMySocket::~CMySocket()

{

}


void CMySocket::SetParentDlg(CServDlg *pDlg)

{

m_pDlg=pDlg;

}


void CMySocket::OnAccept(int nErrorCode)

{

AfxMessageBox("Connection is installed");

m_pDlg->OnAccept();

CSocket::OnAccept(nErrorCode);

}


void CMySocket::OnReceive(int nErrorCode)

{

AfxMessageBox("Data is received");

m_pDlg->OnReceive();

CSocket::OnReceive(nErrorCode);

}


^ Файл ServDlg.h

#pragma once

#include "afxwin.h"

#include "MySocket.h"


class CServDlg : public CDialog

{

public:

CServDlg(CWnd* pParent = NULL);

enum { IDD = IDD_SERV_DIALOG };

protected:

virtual void DoDataExchange(CDataExchange* pDX);

protected:

HICON m_hIcon;

virtual BOOL OnInitDialog();

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

DECLARE_MESSAGE_MAP()

public:

double mas[3][3];

CEdit m_sData;

CMySocket m_pListenSocket;

CMySocket m_pConnectSocket;

void OnAccept();

void OnReceive();

afx_msg void OnListen();

};


^ Файл ServDlg.cpp

#include "stdafx.h"

#include

#include "Serv.h"

#include "ServDlg.h"


#ifdef _DEBUG

#define new DEBUG_NEW

#endif


CServDlg::CServDlg(CWnd* pParent /*=NULL*/)

: CDialog(CServDlg::IDD, pParent)

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}


void CServDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_DATA, m_sData);

}


BEGIN_MESSAGE_MAP(CServDlg, CDialog)

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

//}}AFX_MSG_MAP

ON_BN_CLICKED(IDC_LISTEN, &CServDlg::OnListen)

END_MESSAGE_MAP()


BOOL CServDlg::OnInitDialog()

{

CDialog::OnInitDialog();

SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE);


// TODO: Add extra initialization here

m_pListenSocket.SetParentDlg(this);

m_pConnectSocket.SetParentDlg(this);

m_pListenSocket.Create(2000); // 2000 port

return TRUE

}


void CServDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this);

SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0);

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

HCURSOR CServDlg::OnQueryDragIcon()

{

return static_cast(m_hIcon);

}


void CServDlg::OnAccept ()

{

m_pListenSocket.Accept(m_pConnectSocket);

}


void CServDlg::OnReceive ()

{

int i, j;

char *pBuf=new char[1025];

char *S;

char *next_token=NULL;

DWORD lstr=10;

int n=m_pConnectSocket.Receive(pBuf, 1024);

pBuf[n]=NULL;

m_sData.SetWindowTextA(pBuf);

UpdateData(FALSE);

S=strtok_s (pBuf," ",&next_token);

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

for (j=0; j<3; j++)

{ mas[i][j]=atof(S);

S=strtok_s (NULL," ",&next_token); }

_gcvt_s(pBuf,10,mas[2][2],3);

m_pConnectSocket.Send(pBuf, lstr);

}

void CServDlg::OnListen()

{

m_pListenSocket.Listen();

}


Наведемо приклад переданої інформації.





Одержана відповідь має вигляд.




^ СПИСОК ЛІТЕРАТУРИ


Основна література


  1. Microsoft Corporation. Компьютерные сети. Сертификация Network+: Учебный курс. – М.: Русская редакция, 2002. – 704 с.

  2. Олифер В.Г. Компьютерные сети. Принципы, технологии, протоколы. – СПб.: Питер, 2003. – 864 с.

  3. Хортон А. Visual C++ 2008. Базовый курс. – СПб.: “Диалектика”, 2009. – 1280 с.


Література видавництва СумДУ


  1. Бабій М.С. Локальні мережі ЕОМ: навчальний посібник. – Суми: СумДУ, 1999. – 64 с.

5 Методичні вказівки до виконання лабораторних робіт з дисципліни “Комп’ютерні мережі” /Укладач М.С.Бабій. – Суми: Вид-во СумДУ, 2010. – 24 с.


Навчальне видання


^ МЕТОДИЧНІ ВКАЗІВКИ

ДО ВИКОНАННЯ КОНТРОЛЬНОЇ РОБОТИ

3 ДИСЦИПЛІНИ “ІНФОРМАЦІЙНІ МЕРЕЖІ”

ДЛЯ СТУДЕНТІВ НАПРЯМУ ПІДГОТОВКИ 040302

ДЕННОЇ ФОРМИ НАВЧАННЯ


Відповідальний за випуск Д. В. Великодний

Редактор С. М. Симоненко

Комп’ютерне верстання М. С. Бабій


Підписано до друку 14.02.2013 .

Формат 60х84/16. Ум. друк. арк. 1,63. Обл.-вид. арк. 1,22. Тираж 50 пр.


Видавець і виготовлювач

Сумський державний університет,

вул. Римського-Корсакова, 2, м. Суми, 40007

Свідоцтво суб’єкта видавничої справи ДК № 3062 від 17.12.2007.



Схожі:

Методичні вказівки до виконання контрольної роботи 3 дисципліни \"інформаційні мережі\" для студентів напряму підготовки 040302 iconМ. В. Кадничанський методичні вказівки до самостійної роботи та виконання контрольної роботи з дисципліни
Методичні вказівки до самостійної роботи та виконання контрольної роботи з дисципліни «Економіко-математичні моделі в управлінні...
Методичні вказівки до виконання контрольної роботи 3 дисципліни \"інформаційні мережі\" для студентів напряму підготовки 040302 iconМіністерство освіти І науки, молоді та спорту україни харківська національна академія міського господарства І. Т. Карпалюк Методичні вказівки для виконання контрольної роботи з курсу «Комп’ютерні мережі та телекомунікації»
Методичні вказівки для виконання контрольної роботи з курсу «Комп’ютерні мережі та телекомунікації» (для студентів 2 курсу заочної...
Методичні вказівки до виконання контрольної роботи 3 дисципліни \"інформаційні мережі\" для студентів напряму підготовки 040302 iconТ. Г. Молодченко Н. Ю. Мущинська Методичні вказівки для виконання контрольної роботи з дисципліни
Методичні вказівки для виконання контрольної роботи з дисципліни „Управління проектами” для студентів 5 курсу заочної форми навчання...
Методичні вказівки до виконання контрольної роботи 3 дисципліни \"інформаційні мережі\" для студентів напряму підготовки 040302 iconВ.Є. Жуков методичні вказівки
Методичні вказівки до виконання розрахунково-графічної роботи з дисципліни «Інформаційні мережі» для студентів 4 курсу заочної форми...
Методичні вказівки до виконання контрольної роботи 3 дисципліни \"інформаційні мережі\" для студентів напряму підготовки 040302 iconТ.І. Методичні вказівки до виконання контрольної роботи з дисципліни
Методичні вказівки до виконання контрольної роботи з дисципліни «Економіка І організація діяльності будівельного підприємства» (для...
Методичні вказівки до виконання контрольної роботи 3 дисципліни \"інформаційні мережі\" для студентів напряму підготовки 040302 iconО. О. Жигло методичні вказівки до виконання контрольної роботи з дисципліни «психологія»
Методичні вказівки до виконання контрольної роботи з дисципліни «Психологія» (для студентів 4 курсу заочної форми навчання напряму...
Методичні вказівки до виконання контрольної роботи 3 дисципліни \"інформаційні мережі\" для студентів напряму підготовки 040302 iconО. О. Жигло методичні вказівки до виконання контрольної роботи з дисципліни «психологія»
Методичні вказівки до виконання контрольної роботи з дисципліни «Психологія» (для студентів 1 курсу заочної форми навчання напряму...
Методичні вказівки до виконання контрольної роботи 3 дисципліни \"інформаційні мережі\" для студентів напряму підготовки 040302 iconГ. Г. Фесенко Завдання та методичні вказівки до виконання контрольної роботи з навчальної дисципліни
Завдання та методичні вказівки до виконання контрольної роботи з навчальної дисципліни «Психологія управління» (для студентів 5 курсу...
Методичні вказівки до виконання контрольної роботи 3 дисципліни \"інформаційні мережі\" для студентів напряму підготовки 040302 iconМіністерство освіти І науки, молоді та спорту україни
Методичні вказівки до виконання розрахунково-графічної роботи з дисципліни “Інформаційні мережі” для студентів 4 курсу заочної форми...
Методичні вказівки до виконання контрольної роботи 3 дисципліни \"інформаційні мережі\" для студентів напряму підготовки 040302 iconМетодичні рекомендації студентам-заочникам щодо виконання контрольної роботи з дисципліни
Методичні вказівки щодо виконання контрольної роботи з навчальної дисципліни “Маркетинг” для студентів заочної форми навчання з напряму...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи