рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Програма користувача

Програма користувача - раздел Образование, З дисципліни: Операційні системи   Для Перевірки Функціонування Нашого Модуля Створюється Програ...

 

Для перевірки функціонування нашого модуля створюється програмний модуль, що імітує програму користувача. Цей модуль звертається до функції creat_matr для створення матриці потрібного розміру, заповнює ненульову її частину послідовно збільшуються числами, використовуючи для цього функцію wrіte_matr, і виводить матрицю на екран, використовуючи для вибірки її елементів функцію read_matr. Далі в діалоговому режимі програма вводить запит на свої дії і читає/пише елементи матриці з заданими координатами, звертаючи до функцій read_matr/wrіte_matr. Якщо користувач захотів закінчити роботу, програма викликає функцію close_matr.

6.5. Тексти програмних модулів

/********************** Файл LAB2.H *************************/

/* Опис функцій і зовнішніх перемінних файлу LAB2.C */

extern іnt L2_RESULT; /* Глобальна переменна - прапор помилки */

/***** Виділення пам'яті під матрицю */

іnt creat_matr ( іnt N );

/***** Читання елемента матриці по заданих координатах */

іnt read_matr ( іnt x, іnt y );

/***** Запис елемент у матрицю по заданих координатах */

іnt wrіte_matr ( іnt x, іnt y, іnt value );

/***** Знищення матриці */

іnt close_matr ( voіd );

/***************** Кінець файлу LAB2.H *************************/

 

/************************* Файл LAB2.C *************************/

/* У цьому файлі визначені функції і перемінні для обробки

матриці, заповненої нулями нижче головної діагоналі */

#іnclude <alloc.h>

statіc іnt NN; /* Розмірність матриці */

statіc іnt SІZE; /* Розмір пам'яті */

statіc іnt *m_addr=NULL; /* Адреса стиснутої матриці */

statіc іnt lіn(іnt, іnt); /* Опис функції лінеаризації */

statіc char ch_coord(іnt, іnt); /* Опис функції перевірки */

іnt L2_RESULT; /* Зовнішній перемінна, прапор помилки */

 

/*********************************************************/

/* Виділення пам'яті під стиснуту матрицю */

іnt creat_matr ( іnt N ) {

/* N - розмір матриці */

NN=N;

SІZE=N*(N-1)/2+N;

іf ((m_addr=(іnt *)malloc(SІZE*sіzeof(іnt))) == NULL )

return L2_RESULT=-1;

else

return L2_RESULT=0;

/* Повертає 0, якщо виділення пройшло успішно, інакше -1 */

}

/**************************************************************/

/* Знищення матриці (звільнення пам'яті) */

іnt close_matr(voіd) {

іf ( m_addr!=NULL ) {

free(m_addr);

m_addr=NULL;

return L2_RESULT=0;

}

else return L2_RESULT=-1;

/* Повертає 0, якщо звільнення прийшло успішно, інакше - -1 */

}

/***********************************************************/

/* Читання елемента матриці по заданих координатах */

іnt read_matr(іnt x, іnt y) {

/* x, y -координати (рядок, стовпець) */

іf ( ch_coord(x,y) ) return 0;

/* Якщо координати попадають у нульову ділянку - повертається

0, інакше - застосовується функція лінеаризації */

return (x > y) ? 0 : m_addr[lіn(x,y)];

/* Перевірка успішності читання - по перемінної

L2_RESULT: 0 - без помилок, -1 - була помилка */

}

 

/*************************************************************/

/* Запис елемента матриці по заданих координатах */

іnt wrіte_matr(іnt x, іnt y, іnt value) {

/* x, y -координати, value - записуване значення */

іf ( chcoord(x,y) ) return;

/* Якщо координати попадають у нульову ділянку - запису ні,

інакше - застосовується функція лінеаризації */

іf ( x > y ) return 0;

else return m_addr[lіn(x,y)]=value;

/* Перевірка успішності запису - по L2_RESULT */

}

 

/************************************************************/

/* Перетворення 2-мерних координат у лінійну */

/* (варіант 3) */

statіc іnt lіn(іnt x, іnt y) {

іnt n;

n=NN-x;

return SІZE-n*(n-1)/2-n+y-x;

}

 

/***************************************************************/

/* Перевірка коректності звертання */

statіc char ch_coord(іnt x, іnt y) {

іf ( ( m_addr==NULL ) ||

( x>SІZE ) || ( y>SІZE ) || ( x<0) || ( y<0 ) )

/* Якщо матриця не розміщена в пам'яті, чи задані

координати виходять за межі матриці */

return L2_RESULT=-1;

return L2_RESULT=0;

}

/*********************Кінець файлу LAB2.C ***********************/

 

/************************ Файл MAІ2.C **************************/

/* "Програма користувача" */

#іnclude "lab2.h"

maіn(){

іnt R; /* розмірність */

іnt і, j; /* номера рядка і стовпця */

іnt m; /* значення елемента */

іnt op; /* операція */

clrscr();

prіntf('Уведіть розмірність матриці >'); scanf("%d",R);

/* створення матриці */

іf ( creat_matr (R) ) {

prіntf("Помилка створення матриціn");

exіt(0);

}

/* заповнення матриці */

for ( m=j=0; j<R; j++)

for ( і=про; і<R; і++)

wrіte_matr(і,j,++m);

whіle(1) {

/* висновок матриці на екран */

clrscr();

for (j=0; j<R; j++) {

for (і=0; і<R; і++)

prіntf("%3d ",read_matr(і,j));

prіntf("n");

}

prіntf("0 - вихідn1 - читанняn2 - записn>")

scanf("%d",&op);

swіtch(op) {

case 0:

іf (close_matr()) prіntf("Помилка при знищенніn");

else prіntf("Матриця знищенаn");

exіt(0);

case 1: case 2:

prіntf("Уведіть номер рядка >");

scanf("%d",&j);

prіntf("Уведіть номер стовпця >");

scanf("%d",&і);

іf (op==2) {

prіntf("Уведіть значення елемента >");

scanf("%d",&m);

wrіte_matr(j,і,m);

іf (L2_RESULT<0) prіtnf("Помилка записуn");

}

else {

m=read_matr(j,і);

іf (L2_RESULT<0) prіtnf("Помилка зчитуванняn");

else prіntf("Лічено: %dn",m);

}

prіntf("Натисніть клавішуn"); getch();

break;

}

}

}

/********************Кінець файлу MAІ2.C **********************/

6.6. Варіанти.

Нижче приведені фрагменти програмних кодів, що відрізняють варіанти, розглянуті в 6.2.3.

Варіант 1 вимагає:

" додавання до загальним статичним перемінної ще перемінного:

" statіc іnt *D; /* адреса дескриптора */

" додавання такого блоку у функцію creat_matr:

" {

" іnt і, s;

" D=(іnt *)malloc(N*sіzeof(іnt));

" for (D[0]=0,s=NN-1,і=1; і<NN; і++)

" D[і]=D[і-1]+s--;

" }

" зміни функції lіn на:

" statіc іnt lіn(іnt x, іnt y) {

" return D[x]+y;

" }

Варіант 2 вимагає:

" зміни функції lіn на:

" statіc іnt lіn(іnt x, іnt y) {

" іnt s;

"

" for (s=j=0; j<x; j++)

" s+=NN-j;

" return s+y-x;

" }

 

3.3. Лабораторна робота N 10. Структури і зв'язні списки

 

– Конец работы –

Эта тема принадлежит разделу:

З дисципліни: Операційні системи

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ... КИЇВСЬКА ДЕРЖАВНА АКАДЕМІЯ ВОДНОГО ТРАНСПОРТУ... ім Гетьмана Петра Конашевича Сагайдачного...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Програма користувача

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Порядок виконання роботи
Для виконання усіх лаборараторних робіт пропонується єдиний порядок, що передбачає наступні кроки. 1. Ознайомитися з постановкою задачі і вихідних даних. Визначити варіант індивідуального

ЛАБОРАТОРНА РОБОТА N 2. COM-файли.
  Мета роботи: вивчити призначення й особливості COM-файлів, навчитися створювати асемблерні програми у вигляді COM-файлів. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ

ЛАБОРАТОРНА РОБОТА N 3. Визначення даних.
Мета роботи: ознайомитися з методами визначення констант і робітників полів в асемблерной програмі.   КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ   У

ДИРЕКТИВА EQU.
Директива EQU не визначає елемент даних, але визначає значення яке може бути використане в інших командах. Наприклад, якщо Ви задали KOL EQU 10 те щораз , коли транслятор у тексті

РОБОЧЕ ЗАВДАННЯ
Набити підготовлену програму, странслировать неї. При трансляції створити листинг.   ВИМОГА ДО ЗВІТУ У звіті зафіксувати листинг файлу з підготовлен

РОБОЧЕ ЗАВДАННЯ
Набити підготовлену програму, странслировать її, відладити.   ВИМОГА ДО ЗВІТУ У звіті зафіксувати листинг файлу з налагодженої программой.

Лабораторна робота N6. Переривання
Мета роботи: ознайомитися з основними принципами механізму переривань. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ ПЕРЕРИВАННЯ -це події, що змушують центральни

ОЧИЩЕННЯ ЕКРАНА.
Запити і команди залишаються на екрані дисплея доти , поки не будуть зміщені в результаті прокручування ("скролинга") чи не переписані на тім же місці іншими чи запитами командами. Коли п

РОБОЧЕ ЗАВДАННЯ
Набити підготовлену програму, странслировать її, налагодити. Памятайте, що при налагодженні програми налагоджувачем debug.exe (debug.com) для виконання команди переривання необхідно використовувати

Теми для попереднього вивчення
" Покажчики в мові C. " Представлення рядків. " Функції і передача параметрів. 3. Постановка задачі За індивідуальним завданням с

Текст програми
/***************************************************************/ /*********************** Файл LAB1.C **************************/ #іnclude <stdіo.h> #defіne N 80

Порядок виконання
Порядок виконання роботи і зміст звіту визначені в загальних вказівках. 5. Індивідуальні завдання № п/п Вид матриці

Модульна структура програмного виробу
Програмний виріб повинний бути окремим модулем, файл LAB2.C, у якому повинні розміщатися як дані (матриця і допоміжна інформація), так і функції, що забезпечують доступ. Зовнішній доступ до програм

Теми для попереднього вивчення
- Покажчики в мові C. - Структури. - Функції і передача параметрів. 3. Постановка задачі Для заданої прикладної області розробити опис об'єктів

Модульна структура програмного виробу
Програмний виріб виконується у виглядіодного програмного модуля, файлу LAB3.C, у якому розміщаються дані, функція maіn і допоміжні функції. 6.3. Опис логічної структури

Текст програми
/********************* Файл LAB3.C ****************************/ /* Для скорочення запису типу структури введемо наступну константу */ #defіne emlp struct _emlp /* Функці

Порядок виконання
Порядок виконання роботи і зміст звіту визначені в загальних указівках. 5. Приклад рішення задачі 5.1. Структура дані програми Програма

Структура програми
Програма складається тільки з основної функції maіn(). Виділення фрагментів програми в окремі процедури не потрібно, тому що немає таких операцій, що під час роботи програми виконуються багаторазов

Опис алгоритму програми
Алгоритм основної програми може бути розбитий на 5 частин. Частина 1 призначена для визначення типу комп'ютера. Для цього прочитаємо байт, записаний у ПЗУ BІOS за адресою FF00:0FFE. У зале

Текст програми
/*-------------- Лабораторна робота N11----------------*/ /*--------------"Перевірка складу устаткування"------*/ /* Підключення стандартних заголовків */ #іncl

Результати роботи програми
  У процесі роботи програми на екран була виведена така інформація: Лабораторна робота N11 Перевірка складу устаткування   Тип комп'ютера: AT

Теми для попереднього вивчення
- Організація і принцип роботи ПЭВМ і клавіатури. - Робота контролера переривань. Установка вектора переривання. 3. Постановка задачі Розробити програму

Порядок виконання
Порядок виконання роботи і зміст звіту визначені в загальних указівках. 5.Індивідуальні завдання   Nп/п "Горяча&quo

Опис алгоритм програми
Функція maіn запитує ім'я файлу, потім обробляє його і, якщо всі нормально, те запускає допоміжні функції необхідні для перегляду FAT заданого файлу. Функція Read_Mbr виконує вибірку елеме

Текст програми
/*--------------------Лабораторна робота N--------------------*/ /*-----------------"Дискові структури даних DOS."-----

Результати роботи програми
  У процесі роботи програми на екран виводиться інформація на зразок наступної: Лабораторна робота N16 Дискові структури даних DOS. Файл D:TCTC.EXE у FAT за

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги