- •Напишите программу реализации системной функции CreateConsoleScreenBuffer
- •Классификация:
- •Система контекстной помощи
- •По модели данных[править | править вики-текст]
- •По степени распределённости[править | править вики-текст]
- •Основные сведения[править | править вики-текст]
- •Ассоциации[править | править вики-текст]
- •Агрегация[править | править вики-текст]
- •Композиция[править | править вики-текст]
- •Обобщение (наследование)[править | править вики-текст]
- •Реализация[править | править вики-текст]
- •Зависимость[править | править вики-текст]
- •Уточнения отношений[править | править вики-текст]
- •Уровни схемы базы данных[править | править вики-текст]
- •Иды требований по характеру[править | править вики-текст]
- •Источники требований[править | править вики-текст]
- •Вид и состав требований тз[править | править вики-текст]
- •Напишите программу реализации системной функции CreateConsoleScreenBuffer
- •9. Экономическая часть проекта
- •9.1. Технико-экономический анализ и оценка показателей экономической эффективности проекта.
- •9.2. Расчёт себестоимости электроэнергии
- •Развитие языков программирования и средств разработки
- •Напишите программу реализации системной функции CreateConsoleScreenBuffer
- •Анализ требований к проекту
- •Проектирование
- •Реализация
- •Тестирование продукта
- •Внедрение и поддержка
- •По целям исследований
- •По особенностям представления
- •Свойства парадигм программирования
- •Инициализация объектов данных[править | править вики-текст]
- •Программирование арифметических операций[править | править вики-текст]
- •Циклы[править | править вики-текст]
- •Инвариантные фрагменты кода[править | править вики-текст]
Система контекстной помощи
Основные типы помощи пользователям программных средств: - контекстно-независимая помощь, реализованная либо в виде статических руководств, либо в виде обучающих систем. Статические руководства, в свою очередь, могут быть представлены в виде онлайновой помощи и реализованы с помощью различных средств (Microsoft Winhelp, Microsoft Compressed HTML Help, HTML Help 2.0, AP Help 1.0). Однако, стоимость поддержки систем помощи, выполненных в виде статических руководств, является отдельной сложной задачей, так как при изменении программного средства также необходимо обновлять и систему помощи. - контекстно-зависимая помощь, реализованная в некоторых моделеориентированных средствах (CTTE, TWIW, CACTUS, FUSE, UIDE). Имеет ряд преимуществ перед контекстно-независимой помощью, основными из которых являются ее автоматическая генерация и использование текущего состояния при формировании ответов на вопросы пользователей, однако, основным недостатком является невозможность ее расширения. Создание таких систем является очень дорогой и трудоемкой задачей. Принцип работы
С каждым вопросом пользователя, на который он может получить ответ, связан алгоритм, который генерирует ответ на поставленный вопрос. Входными данными для каждого алгоритма является текущее состояние, в котором находится пользователь, а также информация о задачах, решенных им на предыдущих шагах. Пользователь взаимодействует с системой помощи через «интерфейс помощи», содержащий вопросы, на которые пользователь может получить ответы. Ответ дается пользователю в виде списка задач и текстовой информации, объясняющей, что необходимо сделать с этими задачами. Технология разработки системы контекстно-зависимой помощи:
1. Разработать модель задач, отражающую логическую структуру программного средства. 2. Произвести интеграцию системы помощи в код программного средства. Интеграция системы помощи в программное средство производится путем пометки графических элементов пользовательского интерфейса аннотациями (специальными комментариями, предназначенными длякомпилятора), что полностью исключает изменение логики кода. 3.Создать анимационные обучающие ролики. Интерактивные обучающие ролики представляют собой набор действий, автоматически выполняемых системой помощи в прикладной программе. Ролики не выполняют задачи пользователя, они только эмулируют выполнение этих задач.
АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №24
по специальности 5B0704 - Вычислительная техника и программное обеспечение
Заполнить двумерный массив случайными числами от 10 до 99. Посчитать сумму элементов отдельно в каждой строке и определить номер строки, в которой эта сумма максимальна.
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
const int MatrixSize = 7;
int ourMatrix[MatrixSize][MatrixSize] = {};
int rowSum[MatrixSize] = {}; // для записи сумм в строках
int numMaxRow = 0; // номер строки с максимальной суммой
srand(time(NULL));
for (int rowNum = 0; rowNum < MatrixSize; rowNum++)
{
cout << " | ";
for (int columnNum = 0; columnNum < MatrixSize; columnNum++)
{
ourMatrix[rowNum][columnNum] = 10 + rand() % 91;
cout << setw(4) << ourMatrix[rowNum][columnNum] << " ";
}
cout << "|" << endl;
}
// подсчет суммы отдельно в каждой строке
for (int rowNum = 0; rowNum < MatrixSize; rowNum++)
{
for (int columnNum = 0; columnNum < MatrixSize; columnNum++)
{
rowSum[rowNum] += ourMatrix[rowNum][columnNum];
}
}
cout << "\nСумма по строкам!\n";
for (int i = 0; i < MatrixSize; i++)
{
cout << i + 1 << "-я строка: " << rowSum[i] << endl;
}
for (int i = 1; i < MatrixSize; i++)
{
if (rowSum[i] > rowSum[numMaxRow])
{
numMaxRow = i + 1;
}
}
cout << "Строка, сумма элементов которой максимальна: " << numMaxRow;
cout << endl << endl;
return 0;
}
Напишите программу реализации системной функции OpenWaitableTimer
#include <process.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#define HOUR (8) // время, когда срабатывает будильник (только часы)
#define RINGS (10) // сколько раз пикать
HANDLE hTerminateEvent ;
// callback функция таймера
VOID CALLBACK TimerAPCProc(LPVOID, DWORD, DWORD)
{
Beep(1000,500); // звоним!
};
// функция потока
unsigned __stdcall ThreadFunc(void *)
{
HANDLE hDayTimer = CreateWaitableTimer(NULL,FALSE,NULL);
HANDLE hAlarmTimer = CreateWaitableTimer(NULL,FALSE,NULL);
HANDLE h[2]; // мы будем ждать эти объекты
h[0] = hTerminateEvent; h[1] = hDayTimer;
int iRingCount=0; // число "звонков"
int iFlag;
DWORD dw;
// немного помучаемся со временем,
//т.к. таймер принимает его только в формате FILETIME
LARGE_INTEGER liDueTime, liAllDay;
liDueTime.QuadPart=0;
// сутки в 100-наносекундных интервалах = 10000000 * 60 * 60 * 24 = 0xC92A69C000
liAllDay.QuadPart = 0xC9;
liAllDay.QuadPart=liAllDay.QuadPart << 32;
liAllDay.QuadPart |= 0x2A69C000;
SYSTEMTIME st;
GetLocalTime(&st); // узнаем текущую дату/время
iFlag = st.wHour > HOUR; // если назначенный час еще не наступил,
//то ставим будильник на сегодня, иначе - на завтра
st.wHour = HOUR;
st.wMinute = 0;
st.wSecond =0;
FILETIME ft;
SystemTimeToFileTime( &st, &ft);
if (iFlag)
((LARGE_INTEGER *)&ft)->QuadPart =
((LARGE_INTEGER *)&ft)->QuadPart +liAllDay.QuadPart ;
LocalFileTimeToFileTime(&ft,&ft);
// Устанавливаем таймер,
// он будет срабатывать раз в сутки (24*60*60*1000ms),
// начиная со следующего "часа пик" - HOUR
SetWaitableTimer(hDayTimer, (LARGE_INTEGER *) &ft, 24*60*60000, 0, 0, 0);
do {
dw = WaitForMultipleObjectsEx(2,h,FALSE,INFINITE,TRUE);
if (dw == WAIT_OBJECT_0 +1) // сработал hDayTimer
{
// Устанавливаем таймер, он будет вызывать callback ф-ию раз в секунду,
// начнет с текущего момента
SetWaitableTimer(hAlarmTimer, &liDueTime, 1000, TimerAPCProc, NULL, 0);
iRingCount=0;
}
if (dw == WAIT_IO_COMPLETION) // закончила работать callback ф-ия
{
iRingCount++;
if (iRingCount==RINGS)
CancelWaitableTimer(hAlarmTimer);
}
}while (dw!= WAIT_OBJECT_0); // пока не сработало hTerminateEvent крутимся в цикле
// закрывае handles, выходим
CancelWaitableTimer(hDayTimer);
CancelWaitableTimer(hAlarmTimer);
CloseHandle(hDayTimer);
CloseHandle(hAlarmTimer);
_endthreadex( 0 );
return 0;
};
int main(int argc, char* argv[])
{
// это событие показывае потоку когда надо завершаться
hTerminateEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
unsigned uThreadID;
HANDLE hThread;
// создаем поток
hThread = (HANDLE)_beginthreadex( NULL, 0, &ThreadFunc, 0, 0,&uThreadID);
puts("Press any key to exit.");
// ждем any key от пользователя для завершения программы
getch();
// выставляем событие
SetEvent(hTerminateEvent);
// ждем завершения потока
WaitForSingleObject(hThread, INFINITE );
// закрываем handle
CloseHandle( hThread );
return 0;
}
Написать запрос, устанавливающий ранг сотрудников компании, обслуживающих покупателей (salesperson_id в таблице customer) по суммам продаж «их» покупателям – за все годы продаж. Максимальной сумме продаж будет соответствовать ранг «1», следующей за максимальной – ранг
select distinct lpad(' ', (LEVEL-1)*3) || LEVEL || ' ' || salary podchin
FROM employees
start with salary =(select max(salary) from employees)
connect by prior (select min(salary) from employees) = (select max(salary) from employees);
Реализовать представленные в таблице функции (Y,Z) с помощью микросхемы мультиплексора (74153).
X2
X1
X0
Y
Z
X2
X1
X0
Y
Z
0
0
0
0
1
1
0
0
0
1
0
0
1
0
1
1
0
1
1
0
0
1
0
1
0
1
1
0
1
1
0
1
1
0
0
1
1
1
1
0
Реляционная модель данных.
Реляционная модель данных.
Реляционная модель данных (РМД) — логическая модель данных, прикладная теория построения баз данных, которая является приложением к задачам обработки данных таких разделов математики как теории множеств и логика первого порядка.
На реляционной модели данных строятся реляционные базы данных.
Реляционная модель данных включает следующие компоненты:
Структурный аспект (составляющая) — данные в базе данных представляют собой набор отношений.
Аспект (составляющая) целостности — отношения (таблицы) отвечают определенным условиям целостности. РМД поддерживает декларативные ограничения целостности уровня домена (типа данных), уровня отношения и уровня базы данных.
Аспект (составляющая) обработки (манипулирования) — РМД поддерживает операторы манипулирования отношениями (реляционная алгебра, реляционное исчисление).
Кроме того, в состав реляционной модели данных включают теорию нормализации.
Термин «реляционный» означает, что теория основана на математическом понятии отношение (relation). В качестве неформального синонима термину «отношение» часто встречается слово таблица. Необходимо помнить, что «таблица» есть понятие нестрогое и неформальное и часто означает не «отношение» как абстрактное понятие, а визуальное представление отношения на бумаге или экране. Некорректное и нестрогое использование термина «таблица» вместо термина «отношение» нередко приводит к недопониманию. Наиболее частая ошибка состоит в рассуждениях о том, что РМД имеет дело с «плоскими», или «двумерными» таблицами, тогда как таковыми могут быть только визуальные представления таблиц. Отношения же являются абстракциями, и не могут быть ни «плоскими», ни «неплоскими».
АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №25
по специальности 5B0704 - Вычислительная техника и программное обеспечение
Дана квадратная матрица найти сумму элементов главной диагонали.
Напишите программу реализации системной функции CreateNamedPipe
#include "stdafx.h"
#include "windows.h"
#include "iostream.h"
void main()
{ HANDLE hp;
hp=CreateNamedPipe("\\\\.\\pipe\\ipctest",PIPE_ACCESS_OUTBOUND,
PIPE_TYPE_BYTE | PIPE_NOWAIT,1,0,0,NMPWAIT_USE_DEFAULT_WAIT,NULL);
if (hp!=INVALID_HANDLE_VALUE)
{ int i;
cin >> i; }
else cout << "ошибка в изменение название pipe " << endl;
Создать запрос, который извлекает номер отдела, код должности, сгруппированные по этим двум столбцам суммы зарплат, но также и промежуточные итоги, общую сумму зарплаты по отделам.
Реализовать представленные в таблице функции (Y,Z) с помощью микросхемы мультиплексора (74153).
X2
X1
X0
Y
Z
X2
X1
X0
Y
Z
0
0
0
0
1
1
0
0
0
0
0
0
1
1
1
1
0
1
1
1
0
1
0
1
1
1
1
0
1
1
0
1
1
1
0
1
1
1
0
0
Инсталляция и установка программных систем – проблемы, пути решения, инструменты.
Установка программного обеспечения, инсталляция — процесс установки программного обеспечения на компьютер конечного пользователя. Выполняется особой программой (пакетным менеджером), присутствующей в операционной системе (например, RPM, APT или dpkg в Linux, Установщик Windows в Microsoft Windows), или же входящим в состав самого программного обеспечения средством установки. В операционной системе GNU очень распространено использование системы GNU toolchain и её аналогов для компиляции программного обеспечения непосредственно перед установкой.
Установка вручную — установка выполняется без установщика или со значительным количеством операций, вручную выполняемых пользователем.
«Тихая» установка — установка, в процессе которой не отображаются сообщения или окна. «„Тихая“ установка» не является синонимом «автоматическая установка», хотя часто ошибочно используется в этом значении.
Автоматическая установка — установка, которая выполняется без вмешательства со стороны пользователя, исключая, конечно, сам процесс её запуска. Процесс установки иногда требует взаимодействия с пользователем, который управляет процессом установки, делая выбор: принимая пользовательское соглашение, настраивая параметры, указывая пароли и так далее. В графических средах могут использоваться инсталляторы, которые предоставляют так называемого Мастера установки, однако и они зачастую предоставляют параметры командной строки, позволяющие выполнить полностью автоматическую установку.
Самостоятельная установка — установка, которая не требует начального запуска процесса. Например, Vodafone Mobile Connect USB Modem, который устанавливается с USB-порта компьютера при подключении к нему без необходимости в ручном запуске.
Удалённая установка — установка, которая выполняется без использования монитора, подсоединённого к компьютеру пользователя (в частности, выполняемая накомпьютере без видеовыхода вообще). Это может быть контролируемая установка с другой машины, соединенной через локальную сеть или посредствомпоследовательного кабеля. Автоматическая и удалённая установки являются обычными операциями, выполняемыми системными администраторами.
«Чистая» установка — установка, выполняемая в отсутствие таких факторов, которые могут изменяться от программы к программе. Ввиду сложности типичной установки, имеется множество факторов, влияющих на её успешный исход. В частности, файлы, оставшиеся от предыдущей установки этой же программы, или нестабильное состояние операционной системы могут привести к неправильной установке и работе программы.
Непосредственная установка — установка программы, выполняемая с её копии на жестком диске (называемой flat copy), а не с самого оригинального носителя (обычно компакт- или DVD-диск). Это может быть полезным в ситуациях, когда целевая машина не способна справиться с произвольным доступом для чтения соптических дисководов во время выполнения задач, вызывающих большую загрузку процессора, как, например, при установке программ.
АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №26
по специальности 5B0704 - Вычислительная техника и программное обеспечение
Ввести с клавиатуры вещественную матрицу размерностью 5x5. Определить: сумму положительных элементов в четных строках; номера столбцов, не содержащих отрицательных элементов.
const x=5,y=5; int i,j,n; float sum=0, massiv[x][y]; //описание массива cout<<"Введите massiv[5][5]\n"; for(i=0;i<x;i++) //ввод массива for(j=0;j<y;j++) cin>>massiv[i][j]; cout<<"massiv[5][5]\n"; for(i=0;i<x;i++) //вывод массива {cout<<"\n"; for(j=0;j<y;j++) cout<<' '<<massiv[i][j];} for(i=1;i<x;i=i+2) { for(j=0;j<y;j++) {if(massiv[i][j]>0) {sum=massiv[i][j]+sum;} } } cout<<"\n Summa="<<sum; for(int j=0;j<y;j++) {n=0; for(int i=0;i<x;i++) if (massiv[i][j]>0) { n++; if(n==5) cout<<"\Столбец "<<j+1; } }
Напишите программу реализации системной функции CopyFile
#include "stdafx.h"
#include "windows.h"
#include "iostream"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
CopyFile(L"C:\\1.txt",L"C:\\2.txt",true);
cout<<"all done\n";
return 0;}
В вузы на очную форму обучения принимаются абитуриенты моложе 35 лет. Создайте триггер, позволяющий контролировать возраст студента при выполнении зачисления студента (ввода данных в таблицу People).
create or replace trigger abitmoloje35
before update or insert of abit_datarozhd on people
for each row
begin
IF NOT :NEW.abit_datarozhd>('31/12/1980')
then
raise_application_error (-20203,'Abiturient doljen byt moloje 35');
end if; end;
Реализовать представленные в таблице функции (Y,Z) с помощью микросхемы мультиплексора (74153).
|
|
Модель данных "сущность–связь".
Модель сущность-связь (ER-модель) (англ. entity-relationship model, ERM) — модель данных, позволяющая описывать концептуальные схемы предметной области.
ER-модель используется при высокоуровневом (концептуальном) проектировании баз данных. С её помощью можно выделить ключевые сущности и обозначить связи, которые могут устанавливаться между этими сущностями.
Во время проектирования баз данных происходит преобразование ER-модели в конкретную схему базы данных на основе выбранной модели данных (реляционной,объектной, сетевой или др.).
ER-модель представляет собой формальную конструкцию, которая сама по себе не предписывает никаких графических средств её визуализации. В качестве стандартной графической нотации, с помощью которой можно визуализировать ER-модель, была предложена диаграмма сущность-связь (ER-диаграмма)(англ. entity-relationship diagram, ERD).
сущность изображается в виде прямоугольника, содержащего её имя, выражаемое существительным.[5] Имя сущности должно быть уникальным в рамках одной модели. При этом, имя сущности — это имя типа, а не конкретного экземпляра данного типа. Экземпляром сущности называется конкретный представитель данной сущности.
Связь изображается линией, которая связывает две сущности, участвующие в отношении. Степень конца связи указывается графически, множественность связи изображается в виде «вилки» на конце связи. Модальность связи так же изображается графически — необязательность связи помечается кружком на конце связи. Именование обычно выражается одним глаголом[5] в изъявительном наклонении настоящего времени: «Имеет», «Принадлежит» и т. д.; или глаголом с поясняющими словами: «Включает в себя», и т.п. Наименование может быть одно для всей связи или два для каждого из концов связи. Во втором случае, название левого конца связи указывается над линией связи, а правого – под линией. Каждое из названий располагаются рядом с сущностью, к которой оно относится.
Атрибуты сущности записываются внутри прямоугольника, изображающего сущность и выражаются существительным в единственном числе (возможно, с уточняющими словами). Среди атрибутов выделяется ключ сущности — неизбыточный набор атрибутов, значения которых в совокупности являются уникальными для каждого экземпляра сущности
АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №27
по специальности 5B0704 - Вычислительная техника и программное обеспечение
Ввести с клавиатуры вещественную матрицу размерностью 5x5. Определить: сумму положительных элементов в нечетных строках; количество строк, не содержащих ни одного нулевого элемента;
const x=5,y=5; int i,j,st=0,n; float sum=0, massiv[x][y]; //описание массива cout<<"Введите massiv[5][5]\n"; for(i=0;i<x;i++) //ввод массива for(j=0;j<y;j++) cin>>massiv[i][j]; cout<<"massiv[5][5]\n"; for(i=0;i<x;i++) //вывод массива {cout<<"\n"; for(j=0;j<y;j++) cout<<' '<<massiv[i][j];} for(i=0;i<x;i=i+2) { for(j=0;j<y;j++) {if(massiv[i][j]>0) {sum=massiv[i][j]+sum;} } } cout<<"\n Summa="<<sum<<'\n'; for(int i=0;i<x;i++) {n=0; for(int j=0;j<y;j++) if (massiv[i][j]>0) { n++; if(n==5)st++; } } cout<<"\Kol-vo stolb "<<st;
Напишите программу реализации системной функции CopyMemory
VOID CopyMemory (
PVOID Destination, // адрес области назначения
CONST VOID *Source, // адрес исходной области
SIZE_T Length // длина блока памяти
Эта функция копирует блок памяти, длина в байтах и базовый адрес которого задаются соответственно параметрами Length и source в область памяти по адресу Destination. Отметим, что результат выполнения функции соруметогу непредсказуем, если исходный и результирующий блоки памяти перекрываются.
Листинг. Инициализаций и копирование блоков виртуальной памяти
#include <windows.h>
#include <iostream.h>
int mainO
{BYTE *a, *b; // указатели на блоки памяти
const int size = 1000; // размерность массива // распределяем виртуальную память
а = (BYTE*)VirtualAlloc (NULL, size, MEM_COMMIT, PAGE_READWRITE) ;
if(!a)
{cout « "Virtual allocation failed." << endl;
return GetLastError(); }
b= (BYTE*)VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE);
if(!b)
{ cout « "Virtual allocation failed." « endl;
return GetLastError(); } // инициализируем символом X
FillMemory(a, size, 'X'); // копируем блок А в блок В
CopyMemory(b, a, size); // распечатываем результат
cout « **b[10] = " « b[10] « endl;
// освобождаем виртуальную память
if (!VirtualFree(a, 0, MEM_RELEASE))
{ cout « "Memory release failed." « endl;
return GetLastError(); }
return 0; }
Теоретически в БД можно ошибочно внести оценку студенту по предмету, который он не изучает вовсе. Задача: разработать триггер, контролирующий (сумму) количество сданных предметов, которые не должны превышать количество предметов изучаемых группой студента (таблицы Evolution и Subject) с информацией о предметах изучаемых студентами(таблица Study).
Реализовать представленные в таблице функции (Y,Z) с помощью микросхемы дешифратора (74138).
X2
X1
X0
Y
Z
X2
X1
X0
Y
Z
0
0
0
1
0
1
0
0
0
0
0
0
1
1
1
1
0
1
1
0
0
1
0
1
1
1
1
0
0
1
0
1
1
0
0
1
1
1
0
0
Оптимизация программных продуктов – методы и инструменты.
Оптимизация программных продуктов – методы и инструменты.
Оптимизация программы - это процесс построения по исходной программе эквивалентной программы, обладающей лучшими характеристиками времени работы и/или объема занимаемой ОП.
Сегментация программы. Программу, подлежащую оптимизации следует разделить на подпрограммы и ответить на 3 вопроса:
какой процент общего времени использует каждая подпрограмма
насколько в % отношении оптимизируется каждая подпрограмма
сколько человеко-часов необходимо для достижения этой цели
Время работы подпрограммы. Необходимо установить фактическое время работы каждой подпрограммы. Если это невозможно, применяется другой подход. Он заключается в подсчете количества операторов в подпрограммах по распечатке. Операторы, включенные в тело цикла, учитываются многократно. В первую очередь необходимо оптимизировать подпрограмму, которая используется больше других.
Пример:
Процент общего улучшения программы. После того, как определен % общего времени, используемый подпрограммой ,следует оценить ее возможное улучшение.
Необходимые
усилия.
Для каждой подпрограммы
можно вычислить следующий
коэффициент:
Подпрограммы
с самым высоким коэффициентом
оптимизируются в первую очередь.
При
оптимизации вручную, существует 2
подхода:
"чистка"
"перепрограммирование"
АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №28
по специальности 5B0704 - Вычислительная техника и программное обеспечение
Ввести с клавиатуры вещественную матрицу размерностью 5x5. Определить:сумму положительных элементов в четных столбцах; количество столбцов, не содержащих ни одного нулевого элемента;
const x=5,y=5; int i,j,st=0,n; float sum=0, massiv[x][y]; //описание массива cout<<"Введите massiv[5][5]\n"; for(i=0;i<x;i++) //ввод массива for(j=0;j<y;j++) cin>>massiv[i][j]; cout<<"massiv[5][5]\n"; for(i=0;i<x;i++) //вывод массива {cout<<"\n"; for(j=0;j<y;j++) cout<<' '<<massiv[i][j];} for(j=1;j<x;j=j+2) { for(i=0;i<y;i++) {if(massiv[i][j]>0) {sum=massiv[i][j]+sum;} } } cout<<"\n Summa="<<sum<<'\n'; for(int j=0;j<y;j++) {n=0; for(int i=0;i<x;i++) if (massiv[i][j]>0 || massiv[i][j]<0) { n++; if(n==5)st++; } } cout<<"\Kol-vo stolb "<<st;
Напишите программу реализации системной функции CopySid
#define _WIN32_WINNT 0x0500
#define UNICODE
#ifdef UNICODE
#define _UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <sddl.h>
void main(void){
wchar_t UserName[256];
int MaxUserNameLength = 256;
SID Sid[1024];
PSID pSid;
LPTSTR StringSid;
DWORD SidSize=1024;
SID_NAME_USE SidType;
LPTSTR DomainName=NULL;
DWORD DomainNameSize=16; // длина имени домена
HANDLE hHeap;
hHeap = GetProcessHeap();
pSid = &Sid[0];
GetUserName(UserName, &MaxUserNameLength); // получаем имя пользователя
DomainName = (LPTSTR)HeapAlloc(hHeap,0,DomainNameSize * sizeof(TCHAR));
LookupAccountName(
NULL, // локальный компьютер
UserName, pSid, &SidSize, DomainName,&DomainNameSize,&SidType);
if (!ConvertSidToStringSid(pSid, &StringSid)) /* память для строки выделяет сама функция */
printf("Convert SID to string SID failed.");
wprintf(L"StringSid %s\n", StringSid);
LocalFree(StringSid);
HeapFree(hHeap,0,DomainName);}
Создать триггер, который бы журналировал действия определенного пользователя БД, производимые над какой-либо таблицей в определенный промежуток времени.
CREATE OR REPLACE TRIGGER audit_emp_values
AFTER DELETE OR INSERT OR UPDATаE ON employees
FOR EACH ROW
BEGIN
INSERT INTO audit_emp(user_name,time_stamp,id,
old_last_name,new_last_name,old_title,
new_title,old_salary,new_salary)
VALUES(USER,SYSDATE,:OLD.employee_id,
:OLD.last_name,:NEW.last_name,:OLD.job_id,
:NEW.job_id,:OLD.salary,:NEW.salary);
END;
Реализовать представленные в таблице функции (Y,Z) с помощью микросхемы дешифратора (74138).
X2
X1
X0
Y
Z
X2
X1
X0
Y
Z
0
0
0
0
1
1
0
0
0
1
0
0
1
0
1
1
0
1
1
0
0
1
0
1
1
1
1
0
1
0
0
1
1
1
0
1
1
1
0
0
Информационный поиск. Модели поиска. Стратегии поиска.
Информационный поиск. Модели поиска. Стратегии поиска
Информацио́нный по́иск (англ. information retrieval) — процесс поиска неструктурированной документальной информации, удовлетворяющей информационные потребности[1], и наука об этом поиске.
Строго говоря, проблема поиска документа, отвечающего тем или иным критериям, возникает в любом хранилище данных, содержащем более одного документа. Очевидно, что решение этой проблемы так или иначе замыкается на те способы, которые применяются при создании систем хранения. Можно указать два основных способа: использование иерархической модели; использование гипертекстовой модели. Использование иерархической модели подразумевает многоуровневую рубрикацию информационных ресурсов. Для выбора пути к нужному документу используются описания, составленные службой поддержки данной системы. Гипертекстовая модель позволяет связывать документы ссылками, которые располагаются непосредственно в тексте. Эти две модели имеют очевидные недостатки. Так как и многоуровневая рубрикация, и простановка ссылок выполняется высококвалифицированными специалистами, объем обработанных таким образом документов не может быть очень большим. По этой же причине страдает актуальность описания массива документов. Помимо этого связанные документы ограничены какой-либо одной предметной областью, о которой, к тому же, у пользователя системы может быть иное представление, чем у составителя рубрикатора. И наконец, для нахождения необходимого документа пользователю таких систем потребуется просмотреть множество документов, полезной информацией в которых будут только ссылки на другие ресурсы. Эти проблемы становятся особенно острыми при больших объемах информации, высокой скорости их обновления и высокой разнородности потребностей пользователей. Помочь в решении этих проблем призваны информационно-поисковые системы (ИПС). Такие системы, однажды созданные, могут работать автономно. Принцип их взаимодействия с пользователем заключается в выдаче списка указателей на документы, удовлетворяющие запросу. Этот список может быть отсортирован по релевантности (степени соответствия документа запросу). Таким образом, ИПС может обеспечить очень быстрый поиск необходимого документа - при том, что от пользователя требуется лишь ввести запрос. Первые информационно-поисковые системы были созданы достаточно давно. Большинство открытий в этой области приходится на 70-е и 80-е годы. Сейчас, с развитием Интернета, количество пользователей этих систем исчисляется миллионами, а в скором будущем будет исчисляться миллиардами. Так же стремительно растет количество документов, хранящихся в Интернете, что ставит все более сложные задачи перед разработчиками ИПС.
Точность и полнота поиска зависят не только от характеристик самой ИПС, но и от того, как создается запрос. Идеальный запрос может быть составлен пользователем, в полном объеме знакомым с той предметной областью, которая его интересует, а также с используемой ИПС. Но такому пользователю ИПС, очевидно, не нужна. Остальные же пользователи вынуждены довольствоваться или низкой точностью поиска, или низкой полнотой. Для повышения качества поиска можно использовать различные методы. Наиболее употребляемый из них - использование логических операторов AND, OR, NOT. Использование логических операторов - довольно простой способ повысить релевантность выдаваемых документов, но он имеет и свои недостатки. Главный из них - плохая масштабируемость. Применение оператора AND может сильно сузить выдачу, а оператора OR - сильно расширить. Степень точности и полноты поиска зависит от того, насколько общие термины использовались при формулировке запроса. Может быть неверным использование как наиболее общих терминов (возрастает уровень информационного шума), так и слишком специфичных терминов (снижается полнота поиска). Использование слишком специфичных терминов может быть чревато еще и тем, что в словаре ИПС этого термина может не оказаться. В общем виде процедура поиска является процедурой итеративной, то есть за этапом выдачи результатов поиска следует коррекция запроса, поиск по этому запросу и т. д. Схематично такая процедура показана на рис. 12.2. Коррекция запроса происходит исходя из количества полученных документов и их релевантности, и может выполняться как пользователем, так и самой информационно-поисковой системой.
АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №29
по специальности 5B0704 - Вычислительная техника и программное обеспечение
Ввести с клавиатуры вещественную матрицу размерностью 5x5. Определить: сумму положительных элементов в нечетных столбцах; количество столбцов, содержащих хотя бы один нулевой элемент;
const x=5,y=5; int i,j,n=0;; float sum=0, massiv[x][y]; //описание массива cout<<"Введите massiv[5][5]\n"; for(i=0;i<x;i++) //ввод массива for(j=0;j<y;j++) cin>>massiv[i][j]; cout<<"massiv[5][5]\n"; for(i=0;i<x;i++) //вывод массива {cout<<"\n"; for(j=0;j<y;j++) cout<<' '<<massiv[i][j];} for(j=0;j<x;j=j+2) { for(i=0;i<y;i++) {if(massiv[i][j]>0) {sum=massiv[i][j]+sum;} } } cout<<"\n Summa="<<sum<<'\n'; for(int j=0;j<y;j++) { for(int i=0;i<x;i++) if (massiv[i][j]==0) { n++;break; } } cout<<"\Kol-vo stolb "<<n;
Напишите программу реализации системной функции GetStdHandle
#include <vcl\vcl.h>
#pragma hdrstop
#include "WriteLnU.h"
#pragma resource "*.dfm"
TForm1 *Form1; // The WriteLn function.
void WriteLn(String text)
{ static HANDLE handle;
if (!handle) {
AllocConsole();
handle = GetStdHandle(STD_OUTPUT_HANDLE); }
text += "\n";
WriteConsole(handle,
text.c_str(), text.Length(), 0, 0);}
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{}
void __fastcall
TForm1::Button1Click(TObject *Sender)
{ for (int i=0;i<20;i++) {
Application->ProcessMessages();
WriteLn("Iteration: " + String(i));
Sleep(100); }}
Теоретически в БД можно ошибочно ввести стипендию студенту, который закрыл сессию с удовлетворительными оценками. Задача: разработать триггер, контролирующий оценки, полученные студентом, и наличие его стипендии.
Реализовать представленные в таблице функции (Y,Z) с помощью микросхемы дешифратора (74138).
X2
X1
X0
Y
Z
X2
X1
X0
Y
Z
0
0
0
0
1
1
0
0
0
1
0
0
1
0
1
1
0
1
1
0
0
1
0
1
0
1
1
0
1
1
0
1
1
0
0
1
1
1
1
0
Сравнения возможностей объектных языков программирования.
Visual Studio 2008
Решения Visual Studio Tools for Office можно создавать как на языке Visual Basic, так и на C#. Объектная модель Microsoft Office разработана для применения с языком Microsoft Visual Basic для приложений (VBA). Благодаря этому разработчики, использующие язык Visual Basic, могут свободно работать с объектами, предоставляемыми в приложениях Microsoft Office. При использовании C# доступные ссылки отличаются от применяемых в объектной модели Microsoft Office. Существуют различия между основными возможностями программирования для Office и управляемым кодом, написанным на Visual Basic и C#.
В следующей таблице показаны основные различия в использовании языков Visual Basic и C# при разработке решений Office.
Функциональная возможность |
Описание |
Поддержка Visual Basic |
Поддержка C# |
Необязательные параметры |
Во многих методах Microsoft Office предусмотрены необязательные параметры. Если параметру не передается значение, используется установленное для него значение по умолчанию. |
В Visual Basic поддерживаются необязательные параметры. |
В C# необязательные параметры не поддерживаются. Это означает, что необходимо передавать значения для всех параметров. Дополнительные сведения см. в разделе Общие сведения о необязательных параметрах в решениях Office. |
Передача параметров по ссылке |
В большинстве основных сборок взаимодействия Microsoft Office необязательные параметры могут передаваться по значению. Однако в некоторых таких сборках необязательные параметры, принимающие ссылочные типы, должны передаваться по ссылке. Дополнительные сведения о параметрах типов значений и ссылочных типов см. в разделах Передача аргументов по значению или по ссылке (для Visual Basic) и Передача параметров (Руководство по программированию в C#). |
Дополнительных действий для передачи параметров по ссылке не требуется. При необходимости компилятор Visual Basic автоматически передает параметры по ссылке. |
Необязательные параметры, которые содержатся в некоторых основных сборках взаимодействия (например для приложения Word) и принимают ссылочные типы, должны передаваться с использованием зарезервированного слова ref. В этом случае передается переменная, содержащая фактическое значение. |
Параметризованные свойства |
Некоторые свойства принимают параметры и используются в качестве функций, доступных только для чтения. |
В Visual Basic поддерживаются свойства, принимающие параметры. |
В C# для получения и установки значения свойства, принимающего параметры, необходимо использовать методы доступа get и set соответственно. |
Позднее связывание |
Позднее связывание подразумевает определение свойств объектов во время выполнения вместо приведения переменных к типу объекта во время разработки. |
Чтобы
реализовать позднее связывание в
Visual Basic, для оператора |
В C# позднее связывание не выполняется непосредственно. Однако можно использовать типы из пространства имен System.Reflection, чтобы определить доступные члены указанного типа и выполнить тип позднего связывания. |
Индексы массива |
В приложениях Microsoft Office нижняя граница коллекций начинается с 1. В Visual Basic и Visual C# по умолчанию используются массивы, в которых индекс начинается с 0. Дополнительные сведения см. в разделах Массивы (Руководство по программированию на C#) и Обзор массивов в Visual Basic. |
Для обращения к элементу коллекции в объектной модели приложения Microsoft Office следует использовать индекс 1, а не 0. |
Для обращения к элементу коллекции в объектной модели приложения Microsoft Office следует использовать индекс 1, а не 0. |
АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №30
по специальности 5B0704 - Вычислительная техника и программное обеспечение
Ввести с клавиатуры вещественную матрицу размерностью 5x5. Определить: сумму отрицательных элементов в четных строках; произведение элементов в тех строках, которые не содержат отрицательных элементов
const x=5,y=5; int i,j; float sum=0, massiv[x][y],st=0; //описание массива cout<<RUS("Введите massiv[5][5]\n"); for(i=0;i<x;i++) //ввод массива for(j=0;j<y;j++) cin>>massiv[i][j]; cout<<"massiv[5][5]\n"; for(i=0;i<x;i++) //вывод массива {cout<<"\n"; for(j=0;j<y;j++) cout<<' '<<massiv[i][j];} for(j=1;j<x;j=j+2) { for(i=0;i<y;i++) {if(massiv[i][j]<0) {sum=massiv[i][j]+sum;} } } cout<<"\n Summa="<<sum<<'\n'; for(int i=0;i<x;i++) { for(int j=0;j<y;j++) if (massiv[i][j]<0) { for(int j=0;j<y;j++) st=massiv[i][j]+st;break; } } cout<<"\Summa "<<st;
Напишите программу реализации системной функции GetThreadPriority
#include <windows.h>
#include <iostream>
using namespace std;
DWORD WINAPI thread_proc( LPVOID lpParameter )
{ return 0;}
int main()
{ HANDLE hThread;
DWORD priority_class, thread_priority;
hThread = CreateThread( NULL, 0, thread_proc, NULL, CREATE_SUSPENDED, NULL );
SetThreadPriority( hThread, THREAD_PRIORITY_HIGHEST );
thread_priority = GetThreadPriority( hThread );
priority_class = GetPriorityClass( GetCurrentProcess() );
switch ( priority_class ) {
case NORMAL_PRIORITY_CLASS:
thread_priority += 8;
break;
default:
cout << "???\n"; }
cout << "thread_piority: " << thread_priority << endl;
return 0;}
Создать функцию, возвращающую количество студентов в конкретной группе и возвращающую количество грантников на конкретной специальности.
CREATE OR REPLACE FUNCTION get_count
(v_id students.group_id%TYPE) RETURN NUMBER IS
v_count number;
BEGIN
SELECT count(student_id)
INTO v_count
FROM students
WHERE group_id = v_id;
RETURN v_count;
END get_count;
begin
get_count(150);
end;
execute dbms_output.put_line(get_count(10));
Реализовать представленные в таблице функции (Y,Z) с помощью микросхемы дешифратора (74138).
X2
X1
X0
Y
Z
X2
X1
X0
Y
Z
0
0
0
0
1
1
0
0
0
0
0
0
1
1
1
1
0
1
1
1
0
1
0
1
1
1
1
0
1
1
0
1
1
1
0
1
1
1
0
0
Rational Rose – инструмент логического проектирования программ.
Rational Rose Enterprise предоставляет набор функций, управляемых моделью, для разработки целого ряда приложений, в том числе на языках Ada, ANSI C++, C++, CORBA, Java, Java EE, Visual C++ и Visual Basic. Это программное обеспечение позволяет ускорить разработку таких приложений благодаря созданию кода на основе визуальных моделей с использованием UML (Unified Modeling Language).
Rational Rose Enterprise предлагает общий инструмент моделирования и язык для упрощения рабочей среды и возможности более быстрого создания качественного программного обеспечения.
Моделирование самых распространенных приложений — предоставляет функции визуального моделирования для разработки приложений многих типов.
Разработка веб-приложений — предлагает инструменты XML и веб-моделирования веб-приложений.
Интеграция проектирования и разработки приложений — унифицирует работу коллектив проекта путем предоставления общих средств выполнения и нотации модели UML.
АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №31
по специальности 5B0704 - Вычислительная техника и программное обеспечение
Ввести с клавиатуры вещественную матрицу размерностью 5x5. Определить: сумму отрицательных элементов в нечетных строках; сумму элементов в тех столбцах, которые не содержат отрицательных элементов.
const x=5,y=5; int i,j,n=0;; float sum=0, massiv[x][y],st=0; //описание массива cout<<"Введите massiv[5][5]\n"; for(i=0;i<x;i++) //ввод массива for(j=0;j<y;j++) cin>>massiv[i][j]; cout<<"massiv[5][5]\n"; for(i=0;i<x;i++) //вывод массива {cout<<"\n"; for(j=0;j<y;j++) cout<<' '<<massiv[i][j];} for(i=0;i<x;i=i+2) { for(j=0;j<y;j++) {if(massiv[i][j]<0) {sum=massiv[i][j]+sum;} } } cout<<"\n Summa="<<sum<<'\n'; for(int j=0;j<x;j++) {n=0; for(int i=0;i<y;i++) if (massiv[i][j]>0) { n++; if(n==5) {for(int j=0;j<y;j++) st=massiv[i][j]+st; } } } cout<<"\Summa "<<st;
Напишите программу реализации системной функции GetThreadPriorityBoost
# include <windows.h>
#include <conio.h>
int main()
{ HANDLE hProcess, hThread;
BOOL bPriorityBoost;
// получаем псевдодескриптор текущего процесса
hProcess = GetCurrentProcess();
// узнаем режим динамического повышения приоритетов для процесса
if (!GetProcessPriorityBoost(hProcess, &bPriorityBoost))
Процессы в Windows
_cputs("Get process priority boost failed.\n");
_cputs("Press any key to exit.\n");
_getch();
return GetLastError(); }
_cprintf("The process priority boost = %d.\n"/ bPriorityBoost);
// выключаем режим динамического повышения приоритетов для процесса
if (ISetProcessPriorityBoost(hProcess, TRUE))
{ _cputs("Set process priority boost failed.\n");
_cputs("Press any key to exit.\n");
_getch();
return GetLastError(); } // получаем псевдодескриптор текущего потока
hThread = GetCurrentThread() ; // узнаем режим динамического повышения приоритетов для потока
if (IGetThreadPriorityBoost(hThread, &bPriorityBoost))
{ cputs("Get process priority boost failed.\n");
_cputs("Press any key to exit.Xn");
_getch();
return GetLastError(); }
_cprintf("The thread priority boost = %d.\n"/ bPriorityBoost);
// включаем режим динамического повышения приоритетов для потока
if (ISetThreadPriorityBoost(hThread, FALSE))
{ cputs("Set process priority boost failed.\n");
_cputs("Press any key to exit.\n");
_getch();
return GetLastError(); }
_cputs("Press any key to exit.\n");
_getch();
return 0;
Выведите фамилию, должность и дату начала работы всех служащих, нанятых в период с 20 февраля 1998 г. и 1 мая 1998 г. Отсортируйте данные в порядке возрастания даты найма.
select LAST_NAME, JOB_ID, format(HIRE_DATE,"Medium Date") as `HIRE DATE` from EMPLOYEES where HIRE_DATE between CDate('20/02/1998') and CDate('01/05/1998') order by HIRE_DATE asc;
Реализовать представленные в таблице функции (Y,Z) с помощью микросхемы дешифратора (74138).
X2
X1
X0
Y
Z
X2
X1
X0
Y
Z
0
0
0
0
1
1
0
0
1
0
0
0
1
1
0
1
0
1
1
1
0
1
0
0
1
1
1
0
1
1
0
1
1
1
0
1
1
1
0
1
Сравнение возможностей пакетов программирования баз данных.
АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №32
по специальности 5B0704 - Вычислительная техника и программное обеспечение
Ввести с клавиатуры вещественную матрицу размерностью 5x5. Определить: сумму отрицательных элементов в четных столбцах; сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
const x=5,y=5; int i,j; float sum=0, massiv[x][y],st=0; //описание массива cout<<RUS("Введите massiv[5][5]\n"); for(i=0;i<x;i++) //ввод массива for(j=0;j<y;j++) cin>>massiv[i][j]; cout<<"massiv[5][5]\n"; for(i=0;i<x;i++) //вывод массива {cout<<"\n"; for(j=0;j<y;j++) cout<<' '<<massiv[i][j];} for(j=1;j<x;j=j+2) { for(i=0;i<y;i++) {if(massiv[i][j]<0) {sum=massiv[i][j]+sum;} } } cout<<"\n Summa="<<sum<<'\n'; for(int i=0;i<x;i++) { for(int j=0;j<y;j++) if (massiv[i][j]<0) { for(int j=0;j<y;j++) st=massiv[i][j]+st;break; } } cout<<"\Summa "<<st;
Напишите программу реализации системной функции GetTokenInformation
BOOL GetTokeninformation(
HANDLE TokenHandle, // дескриптор маркера доступа
TOKEN_INFORMATION_CLASS TokenlnformationClass, // тип информации
LPVOID Tokenlnformation, // указатель на буфер для информации
DWORD TokenInformationLength, // длина буфера
PDWORD ReturnLength // требуемая длина буфера );
В случае удачного завершения функция вернет ненулевое значение, а в случае неудачи — false. Код ошибки в случае неудачного завершения функции можно получить посредством вызова функции GetLastError. Параметры функции GetTokeninf ormation имеют следующее назначение. Параметр TokenHandie должен содержать дескриптор маркера доступа, из которого извлекается информация. Причем этот дескриптор должен быть открыт в режиме token_query_source, если извлекается информация об источнике маркера доступа и в режиме token_query для извлечения информации другого типа.
Параметр Tokeninformationciass должен содержать одно из значений перечисления типа token_information_class, которое указывает, какую информацию из маркера доступа должна вернуть функция. Перечисление типа
token_information_class определено следующим образом:
typedef enum _TOKEN_INFORMATION_CLASS {
TokenUser = 1, // информация о пользователе
TokenGroups, // информация о группах, связанных с маркером доступа
TokenPrivileges, // информация о привилегиях
TokenOwner, // информация о владельце объекта по умолчанию
TokenPrimaryGroup, // информация о первичной группе владельца
// объекта по умолчанию
TokenDefaultDacl, // информация о списке DACL объекта по умолчанию
TokenSource, // источник маркера доступа
TokenType, // тип маркера доступа
TokenlmpersonationLevel, // уровень замещения маркера доступа
Tokenstatistics, // статистика
TokenRestrictedSids, // список ограничивающих идентификаторов
// безопасности
TokenSessionld // идентификатор сессии
} TOKEN_INFORMATION_CLASS, * PTOKEN_INFORMATION_CLASS ;
Параметр Tokeninformation должен указывать на буфер, в который функция поместит информацию, извлекаемую из маркера доступа. В зависимости от значения, заданного параметром Tokeninformationciass, информация о маркере доступа записана в структурном виде или имеет значение некоторого перечислимого типа. Ниже приведено соответствие значений перечислимой константы типа token_information_class и типов, используемых для представления соответствующей информации о маркере доступа:
□ TokenUser — tokenjjser;
□ TokenGroups — token_groups;
□ TokenPrivileges — token_privileges;
□ TokenOwner — token_owner;
□ TokenPrimaryGroup — token_primary_group;
□ TokenDefaultDacl — token_default_dacl;
□ TokenSource — token_source;
□ TokenType — token_type;
□ TokenlmpersonationLevel — security_impersonation_level;
□ TokenStatistics — token_statistics;
П TokenRestrictedSids — token_groups;
□ TokenSessionld — dword.
В параметре Tokeninformation может быть также установлено значение null. В этом случае функция запишет по адресу, заданному последним параметром, необходимую длину буфера. Параметр TokeninformationLength должен содержать длину буфера, на который указывает параметр Tokeninformation. Если в параметре
Tokeninformation установлено значение null, to в параметре
TokeninformationLength должно быть установлено значение 0.
В параметре ReturnLength должен быть установлен адрес двойного слова, в которое функция вернет требуемую длину буфера, если в параметре Tokeninformation установлено значение null или заданная длина буфера недостаточна для записи требуемой информации
Запросите фамилии, должности и оклады всех служащих, работающих в должности представителей продаж (sales representative) или биржевым маклером (stock clerk), оклады которых не равны $2,500, $3,500 или $7000.
select LAST_NAME,JOB_ID,SALARY from EMPLOYEES where (JOB_ID='SA_REP' or JOB_ID='ST_CLERK') and SALARY not in (2500,3500,7000);
Построить схему двоичного счетчика с модулем счета 20010 на основе микросхем счетчика (7493) и привести соответствующие пояснения к выполненным соединениям в схеме.
|
UML – средства описания проекта на логической стадии разработки.
UML – средства описания проекта на логической стадии разработки
UML (англ. Unified Modeling Language — унифицированный язык моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения. UML является языком широкого профиля, это — открытый стандарт, использующий графические обозначения для создания абстрактной модели системы, называемой UML-моделью. UML был создан для определения, визуализации, проектирования и документирования, в основном, программных систем. UML не является языком программирования, но на основании UML-моделей возможна генерация кода.
Использование UML не ограничивается моделированием программного обеспечения. Его также используют для моделирования бизнес-процессов, системного проектирования и отображения организационных структур.
UML позволяет также разработчикам программного обеспечения достигнуть соглашения в графических обозначениях для представления общих понятий (таких как класс, компонент, обобщение (англ. generalization), агрегация (англ. aggregation) и поведение) и больше сконцентрироваться на проектировании и архитектуре.
АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №33
по специальности 5B0704 - Вычислительная техника и программное обеспечение
В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить: номер максимального по модулю элемента массива; сумму элементов массива, расположенных после первого положительного элемента.
const int N=10;
int i,k,s=0;
float massiv[N]; //Описание массива
cout<<"Введите 10 целых чисел\n";
for(i=0;i<N;i++)
cin>>massiv[i]; //Ввод массива
for(i=0;i<N;i++) //Вывод массива
cout<<"\n massiv["<<i<<"] = "<<massiv[i]; //Вывод массива
k=fabs(massiv[0]);
for(i=0; i<N; i++)
{
if(fabs(massiv[i])>k)
k=i+1;
}
cout<<"\n Max="<<k<<'\n';
for(i=0; i<N; i++)
{
if(massiv[i]>0)
{
for(i=i+1; i<N; i++)
s+=massiv[i];
break;
}
}
cout<<"Summa="<<s;
Напишите программу реализации системной функции GetTrusteeForm
Функция GetTrusteeForm имеет следующий прототип!
TRUSTEE_FORM GetTrusteeForm (
PTRUSTEE pTrustee // указатель на структуру TRUSTEE );
Единственным параметром этой функции является указатель на структуру типа trustee, форму которой вернет функция. Функция возвращает одно из значений перечисления типа trustee_form.
ФуНКЦИЯ GetTrusteeType Имеет следующий ПроТОТИП!
TRUSTEE_TYPE Ge tTrus teeType(
PTRUSTEE pTrustee // указатель на структуру TRUSTEE );
Единственным параметром этой функции является указатель на структуру типа trustee, тип которой вернет функция. Функция возвращает одно из значений перечисления типа trustee_type.
Выведите фамилии служащих (первая буква каждой фамилии должна быть заглавной, а остальные - строчными) и длину каждой фамилии для тех служащих, фамилия которых начинается с символа J, A или M. Присвойте соответствующие заголовки столбцам. Отсортируйте результаты по фамилии.
SELECT UPPER (LPAD (last_name, 1)) || LOWER(SUBSTR (last_name, 2))
FROM employees;
SELECT UPPER (SUBSTR (last_name, 1, 1)) || LOWER(SUBSTR (last_name, 2)) "Name", LENGTH (last_name) "Length"
FROM employees
WHERE last_name LIKE 'J%'
OR last_name LIKE 'A%'
OR last_name LIKE 'M%'
ORDER BY last_name;
Построить схему двоичного счетчика с модулем счета 15510 на основе микросхем счетчика (7493) и привести соответствующие пояснения к выполненным соединениям в схеме.
Сравнение возможностей систем управления базы данных.
Сравнение возможностей систем управления базы данных
Систе́ма управле́ния ба́зами да́нных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных[1].
управление данными во внешней памяти (на дисках);
управление данными в оперативной памяти с использованием дискового кэша;
журнализация изменений, резервное копирование и восстановление базы данных после сбоев;
поддержка языков БД (язык определения данных, язык манипулирования данными).
Обычно современная СУБД содержит следующие компоненты:
ядро, которое отвечает за управление данными во внешней и оперативной памяти и журнализацию,
процессор языка базы данных, обеспечивающий оптимизацию запросов на извлечение и изменение данных и создание, как правило, машинно-независимого исполняемого внутреннего кода,
подсистему поддержки времени исполнения, которая интерпретирует программы манипуляции данными, создающие пользовательский интерфейс с СУБД
а также сервисные программы (внешние утилиты), обеспечивающие ряд дополнительных возможностей по обслуживанию информационной системы.
