Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры госы.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
10.34 Mб
Скачать
  1. Классификация:

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ

АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №15

по специальности 5B0704 - Вычислительная техника и программное обеспечение

  1. Напишите функцию, которая вставляет пробел после каждой точки в строку, полученную ей в виде параметра.

#include<conio.h>

#include<stdio.h>

int n=33;

char str[]="Fuc...k you.Bitch www.deneg.net.";

int i,j,n_temp=0,k;

void main()

{

 clrscr();

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

     {

      if (str[i] == '.')

        {

         i++;

         for (j=n;j>=i;j--)

             str[j]=str[j-1];

         str[i++]=' ';

         n++;

         i--;

        }

     }

 getch();

}

  1. Напишите программу реализации системной функции CreateDirectory

#include "stdafx.h"

#include "windows.h"

#include "iostream.h"

#define SIZE_BUF 4096

void main()

{ ENUM_SERVICE_STATUS Status[SIZE_BUF];

DWORD Size = sizeof(Status);

DWORD Needed = 0;

DWORD Return = 0;

DWORD Handle = 0;

SC_HANDLE Manager;

Manager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);

if (Manager!=NULL)

{ if (EnumServicesStatus(Manager,SERVICE_WIN32,SERVICE_ACTIVE,

(LPENUM_SERVICE_STATUS)&Status,Size,&Needed,&Return,&Handle))

{ for (unsigned int x=0; x < Return; x++)

cout << Status[x].lpServiceName << endl;}

else cout << "Error Open Manager " << endl;}

else cout << "Error enum Services" << endl;}

  1. Получите номер отдела, фамилию и должность для каждого служащего, работающего в административном департаменте (Executive).

select department_id, last_name, job_id

from employees

where department_id in (SELECT department_id

FROM departments where department_name='Executive')

  1. Реализовать представленную в таблице функцию (Y) с помощью логических элементов И-НЕ.

X2

X1

X0

Y

X2

X1

X0

Y

0

0

0

1

1

0

0

0

0

0

1

1

1

0

1

0

0

1

0

1

1

1

0

1

0

1

1

0

1

1

1

0

  1. Этап выработки требований к программе - методы и инструменты.

Требования к программному обеспечению — совокупность утверждений относительно атрибутов, свойств или качеств программной системы, подлежащей реализации. Создаются в процессе разработки требований к программному обеспечению, в результате анализа требований.

Требования могут выражаться в виде текстовых утверждений и графических моделей.

В классическом техническом подходе совокупность требований используется на стадии проектирования программного обеспечения (ПО). Требования также используются в процессе проверки ПО, так как тесты основываются на определённых требованиях.

Этапу разработки требований, возможно, предшествовало технико-экономическое обоснование, или концептуальная фаза анализа проекта. Фаза разработки требований может быть разбита на выявление требований (сбор, понимание, рассмотрение и выяснение потребностей заинтересованных лиц), анализ (проверка целостности и законченности), спецификация (документирование требований) и проверка правильности.

  • Бизнес-требования — определяют назначение ПО, описываются в документе о видении (vision) и границах проекта (scope).

  • Пользовательские требования — определяют набор пользовательских задач, которые должна решать программа, а также способы (сценарии) их решения в системе. Пользовательские требования могут выражаться в виде фраз утверждений, в виде способов применения (use case), пользовательских историй (user story), сценариев взаимодействия (scenario).

  • Функциональные требования — охватывают предполагаемое поведение системы, определяя действия, которые система способна выполнять[источник не указан 966 дней]. Описывается в системной спецификации (англ. system requirement specification, SRS).

  • Интервью, опросы, анкетирование

  • Мозговой штурм, семинар

  • Наблюдение за производственной деятельностью, «фотографирование» рабочего дня

  • Анализ нормативной документации

  • Анализ моделей деятельности

  • Анализ конкурентных продуктов

  • Анализ статистики использования предыдущих версий системы

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ

АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №16

по специальности 5B0704 - Вычислительная техника и программное обеспечение

  1. Напишите программу, которая по дате, введенной с клавиатуры в формате ХХ.ХХ.ХХ выводит число, название месяца и год. Например, по дате 20.01.2004 следует вывести 20 января 2004 г.

#include<conio.h>

#include<stdio.h>

int ch,mon,ye;

void main()

{

 clrscr();

 scanf("%d.%d.%d",&ch,&mon,&ye);

 switch (mon)

 {

  case 1 :   printf("%d January %d",ch,ye);   break;

  case 2 :   printf("%d February %d",ch,ye);  break;

  case 3 :   printf("%d Marth %d",ch,ye);     break;

  case 4 :   printf("%d April %d",ch,ye);     break;

  case 5 :   printf("%d May %d",ch,ye);       break;

  case 6 :   printf("%d June %d",ch,ye);      break;

  case 7 :   printf("%d July %d",ch,ye);      break;

  case 8 :   printf("%d August %d",ch,ye);    break;

  case 9 :   printf("%d September %d",ch,ye); break;

  case 10:   printf("%d October %d",ch,ye);   break;

  case 11:   printf("%d November %d",ch,ye);  break;

  case 12:   printf("%d December %d",ch,ye);  break;

  default: printf("\rThe month is not right");

  getch(); return;        }

 getch();

}

  1. Напишите программу реализации системной функции CreateFile

#include <windows.h>

#include <stdio.h>

HANDLE hFile;

hFile = CreateFile(TEXT("myfile.txt"), // открываемый файл формат тхт

GENERIC_READ, // открываем для чтения

FILE_SHARE_READ, // для совместного чтения

NULL, // защита по умолчанию

OPEN_EXISTING, // только существующий файл

FILE_ATTRIBUTE_NORMAL, // обычный файл

NULL); // атрибутов шаблона нет

if (hFile == INVALID_HANDLE_VALUE)

{ printf("Could not open file (error %d)\n", GetLastError());

return 0;}

  1. Создайте запрос для вывода фамилии, номера отдела и оклада всех служащих, чей номер отдела и оклад совпадают с номером отдела и окладом любого служащего, зарабатывающего комиссионные.

select e.department_id as "Department", e.last_name as "Employee", f.last_name as "collegue"

from EMPLOYEES e join employees f

on (e.department_id=f.department_id)

where e.employee_id<>f.employee_id

order by e.department_id, e.last_name,f.last_name;

  1. Реализовать представленную в таблице функцию (Y) с помощью логических элементов ИЛИ-НЕ.

    X2

    X1

    X0

    Y

    X2

    X1

    X0

    Y

    0

    0

    0

    0

    1

    0

    0

    0

    0

    0

    1

    1

    1

    0

    1

    0

    0

    1

    0

    1

    1

    1

    0

    1

    0

    1

    1

    0

    1

    1

    1

    0

  2. Базы данных. Основные понятия.

Под базой данных (БД) понимают хранилище структурированных данных, при этом данные должны быть непротиворечивы, минимально избыточны и целостны.

Реляционные БД представляют связанную между собой совокупность таблиц-сущностей базы данных (ТБД). Связь между таблицами может находить свое отражение в структуре данных, а может только подразумеваться, то есть присутствовать на неформализованном уровне. Каждая таблица БД представляется как совокупность строк и столбцов, где строки соответствуют экземпляру объекта, конкретному событию или явлению, а столбцы - атрибутам (признакам, характеристикам, параметрам) объекта, события, явления.

При практической разработке БД таблицы-сущности зовутся таблицами, строки-экземпляры - записями, столбцы-атрибуты - полями ТБД.

Одно из важнейших достоинств реляционных баз данных состоит в том, что можно хранить логически сгруппированные данные в разных таблицах и задавать связи между ними, объединяя их в единую базу. Такая организация данных позволяет уменьшить избыточность хранимых данных, упрощает их ввод и организацию запросов и отчетов.

В каждой таблице БД может существовать первичный ключ. Под первичным ключом понимают поле или набор полей, однозначно (уникально) идентифицирующих запись. Первичный ключ должен быть минимально достаточным: в нем не должно быть полей, удаление которых из первичного ключа не отразится на его уникальности.

Между двумя или более таблицами базы данных могут существовать отношения подчиненности. Отношения подчиненности определяют, что для каждой записи главной таблицы {master,называемой еще родительской} может существовать одна или несколько записей в подчиненной таблице {detailназываемой еще дочерней}.

Существует три разновидности связей между таблицами базы данных:

-        «один-ко-многим»,

-        «один-к-одному»,

-        «многие-ко-многим».

Отношение «один-ко-многим» имеет место, когда одной записи родительской таблицы может соответствовать несколько записей в дочерней таблице.

Отношение «один-к-одному» имеет место, когда одной записи в родительской таблице соответствует одна запись в дочерней таблице.

Отношение «многие-ко-многим» имеет место, когда:

а) записи в родительской таблице может соответствовать больше одной записи в дочерней таблице;

б) записи в дочерней таблице может соответствовать больше одной записи в родительской таблице.

Первая нормальная форма (1НФ) требует, чтобы каждое поле таблицы БД:

·         было неделимым;

·         не содержало повторяющихся групп.

Вторая нормальная форма (2НФ) требует, чтобы все поля таблицы зависели от первичного ключа, то есть, чтобы первичный ключ однозначно определял запись и не был избыточен. Те поля, которые зависят только от части первичного ключа, должны быть выделены в составе отдельных таблиц.

Третья нормальная форма (ЗНФ) требует, чтобы значение любого поля таблицы, не входящего в первичный ключ, не зависело от значения другого поля, не входящего в первичный ключ.

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ

АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №17

по специальности 5B0704 - Вычислительная техника и программное обеспечение

  1. В заданном массиве чисел найти наибольшую длину цепочки подряд идущих элементов, расположенных по убыванию.

#include<stdio.h>

 #include<conio.h>

 int a[]={5,4,3,2,0,4,5,6,8,7,2,1}; //одномерный массив

 int k,l,i;

 int n=sizeof(a)/sizeof(int); //Количество элементов в массиве

 void main()

 {

 clrscr(); //Очистка экрана

 k=1;

 l=k;

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

   if(a[i]>a[i+1])

     {

     k++;

     if(l<k) l=k;

     }

   else k=1;

 printf("The Array:\n");

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

 if(i!=n-1)

   printf("%d,",a[i]);

 else

   printf("%d.\n",a[i]);

 printf("The lagest lenth of ZEPOCHKA of elements's PO UBIVANIIY %d.",l);

 getch();

 }

  1. Напишите программу реализации системной функции CreateFileMapping

#include <stdio.h>

#include <windows.h>

int main(int argc, char **argv)

{char szPipe[64];

DWORD dwNumber = 0;

DWORD dwType = REG_DWORD;

DWORD dwSize = sizeof(DWORD);

DWORD dw = GetLastError();

HANDLE hToken, hToken2;

PGENERIC_MAPPING pGeneric;

SECURITY_ATTRIBUTES sa;

DWORD dwAccessDesired;

PACL pACL = NULL;

PSECURITY_DESCRIPTOR pSD = NULL;

STARTUPINFO si;

PROCESS_INFORMATION pi;

if (argc != 2) {fprintf(stderr, “Usage: %s <progname>\n”, argv[0]);

return 1;}

memset(&si,0,sizeof(si));

sprintf(szPipe, “\\\\.\\pipe\\GetSys”);

// create named pipe”\\.\pipe\GetSys”

HANDLE hPipe = 0;

hPipe = CreateNamedPipe (szPipe, PIPE_ACCESS_DUPLEX,

PIPE_TYPE_MESSAGE|PIPE_WAIT, 2, 0, 0, 0, NULL);

if (hPipe == INVALID_HANDLE_VALUE) {

printf (“Failed to create named pipe:\n %s\n”, szPipe);

return 2;}

printf(“Created Named Pipe: \\\\.\\pipe\\GetSys\n”);

// initialize security descriptor to obtain client application

// privileges

pSD = (PSECURITY_DESCRIPTOR)

LocalAlloc(LPTR,SECURITY_DESCRIPTOR_MIN_LENGTH);

InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION);

SetSecurityDescriptorDacl(pSD,TRUE, pACL, FALSE);

sa.nLength = sizeof (SECURITY_ATTRIBUTES);

sa.lpSecurityDescriptor = pSD;

sa.bInheritHandle = FALSE;

printf(“Waiting for connection…\n”);

// wait for client connect

ConnectNamedPipe (hPipe, NULL);

printf(“Impersonate…\n”);

// impersonate client

if (!ImpersonateNamedPipeClient (hPipe)) {

printf (“Failed to impersonate the named pipe.\n”);

CloseHandle(hPipe);

return 3;}

printf(“Open Thread Token…\n”);

// obtain maximum rights with TOKEN_ALL_ACCESS

if (!OpenThreadToken(GetCurrentThread(),

TOKEN_ALL_ACCESS, TRUE, &hToken )) {

if (hToken != INVALID_HANDLE_VALUE) {

printf(“GetLastError: %u\n”, dw);

CloseHandle(hToken);

return 4;}}

printf(“Duplicating Token…\n”);

// obtain TOKEN_DUBLICATE privilege

if(DuplicateTokenEx(hToken,MAXIMUM_ALLOWED,

&sa,SecurityImpersonation,

TokenPrimary, &hToken2) == 0) {

printf(“error in duplicate token\n”);

printf(“GetLastError: %u\n”, dw);

return 5;}

// fill pGeneric structure

pGeneric = new GENERIC_MAPPING;

pGeneric->GenericRead=FILE_GENERIC_READ;

pGeneric->GenericWrite=FILE_GENERIC_WRITE;

pGeneric->GenericExecute=FILE_GENERIC_EXECUTE;

pGeneric->GenericAll=FILE_ALL_ACCESS;

MapGenericMask( &dwAccessDesired, pGeneric );

dwSize = 256;

char szUser[256];

GetUserName(szUser, &dwSize);

printf (“Impersonating: %s\n”, szUser);

ZeroMemory( &si, sizeof(STARTUPINFO));

si.cb = sizeof(si);

si.lpDesktop = NULL;

si.dwFlags = STARTF_USESHOWWINDOW;

si.wShowWindow = SW_SHOW;

printf(“Creating New Process %s\n”, argv[1]);

// create new process as user

if(!CreateProcessAsUser(hToken2,NULL, argv[1], &sa,

&sa,true, NORMAL_PRIORITY_CLASS |

CREATE_NEW_CONSOLE,NULL,NULL,&si, &pi)) {

printf(“GetLastError: %d\n”, GetLastError());}

// wait process to complete and exit

WaitForSingleObject(pi.hProcess,INFINITE);

CloseHandle(hPipe);

return 0;}

  1. Выведите фамилию, номер отдела и оклад всех служащих, чей оклад и комиссионные совпадают с окладом и комиссионными любого служащего, работающего в LOCATION_ID = 1700.

SELECT e.last_name, d.department_name, e.salary

FROM employees e, departments d

WHERE e.department_id=d.department_id

AND (salary, NVL(commission_pct,0)) IN

(SELECT salary, NVL(commission_pct,0)

FROM employees e, departments d

WHERE e.department_id=d.department_id

AND d.location_id=1700;

Или:

SELECT e.last_name, d.department_id, e.salary

FROM employees e, departments d

WHERE e.department_id=d.department_id

AND (salary, NVL(commission_pct,0)) IN

(SELECT salary, NVL(commission_pct,0)

FROM employees e, departments d

WHERE e.department_id=d.department_id

AND d.location_id=1700;

  1. Реализовать представленную в таблице функцию (Y) с помощью логических элементов И-НЕ.

    X2

    X1

    X0

    Y

    X2

    X1

    X0

    Y

    0

    0

    0

    0

    1

    0

    0

    0

    0

    0

    1

    1

    1

    0

    1

    0

    0

    1

    0

    1

    1

    1

    0

    1

    0

    1

    1

    0

    1

    1

    1

    0

  2. Парадигмы связывания и видимости объектов – глобальные и локальные, статические и динамические, внутренние и внешние - методы и инструменты реализации.

Парадигма программирования — это совокупность подходов, методов, стратегий, идей и понятий, определяющая стиль написания программ.

Парадигма программирования в современной индустрии программирования очень часто определяется набором инструментов программиста (язык программирования и операционная система).

Парадигма программирования представляет (и определяет) то, как программист видит выполнение программы. Например, в объектно-ориентированном программировании программист рассматривает программу как набор взаимодействующих объектов, тогда как в функциональном программировании программа представляется в виде цепочки вычисления функций.

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ

АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №18

по специальности 5B0704 - Вычислительная техника и программное обеспечение

  1. Из заданного натурального числа n удалить все четные цифры.

#include<stdio.h>

 #include<conio.h>

 #include<math.h>

 

 int  n=10;

 int k;

 int ost,i;

 

 void main()

 {

 clrscr();

 printf("%d\n",n);

    k=0;i=0;

    while(n!=0)

      {

       ost=n%10;

       n=(n-n%10)/10;

       if(ost%2==1)

             {

              k=k+ost*pow(10,i);

              i++;

             }

      }

 printf("%d",k);

 getch();

 }

  1. Напишите программу реализации системной функции CreateIoCompletionPort

#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;}

  1. Создайте запрос для вывода фамилии, даты найма и оклада всех служащих, которые получают такой же оклад и такие же комиссионные, как Kochhar.

SELECT last_name, hire_date, salary

FROM employees

WHERE (salary, NVL(commission_pct,0)) IN

(SELECT salary, NVL(commission_pct,0)

FROM employees

WHERE last_name=’Kochhar’)

AND last_name!= ’Kochhar’

  1. Реализовать представленную в таблице функцию (Y) с помощью логических элементов ИЛИ-НЕ.

    X2

    X1

    X0

    Y

    X2

    X1

    X0

    Y

    0

    0

    0

    1

    1

    0

    0

    0

    0

    0

    1

    0

    1

    0

    1

    0

    0

    1

    0

    1

    1

    1

    0

    1

    0

    1

    1

    0

    1

    1

    1

    1

  2. Целостность и защита данных. Структуры БД.

Целостность и защита данных. Структуры БД

Иерархическая структура базы данных Это древовидная структура представления информации. Ее особенность в том, что каждый узел на более низком уровне имеет связь только с одним узлом на более высоком уровне. Посмотрим, например, на фрагмент иерархической структуры базы данных "Институт":

Из структуры понятно, что на одной кафедре может работать несколько преподавателей. Такая связь называется "один ко многим" (одна кафедра - много преподавателей). Но если мы попытаемся добавить в эту структуру группы студентов, то нам понадобится связь "многие ко многим": 

(один преподаватель может работать со многими группами, а одна группа может учиться у многих преподавателей), а такой связи в иерархической структуре быть не может (т.к. связь может быть только с одним узлом на более высоком уровне). Это основной недостаток подобной структуры базы данных. Сетевая структура базы данных По сути, это расширение иерархической структуры. Все то же самое, но существует связь "многие ко многим". Сетевая структура базы данных позволяет нам добавить группы в наш пример. Недостатком сетевой модели является сложность разработки серьезных приложений. Реляционная структура базы данных Все данные представлены в виде простых таблиц, разбитых на строки и столбцы, на пересечении которых расположены данные. Подробно об этом мы будем говорить в следующих уроках, здесь же хочется отметить, что эта структура стала настоящим прорывом в развитии баз данных. Объектно-ориентированные и гибридные базы данных В объектно-ориентированных базах данных данные хранятся в виде объектов, что очень удобно. Но на сегодняшний день такие БД еще распространенны, т.к. уступают в производительности реляционным. Гибридные БД совмещают в себе возможности реляционных и объектно-ориентированных, поэтому их часто называют объектно-реляционными. Примером такой СУБД является Oracle, начиная с восьмой версии. Несомненно, такие БД будут развиваться в будущем, но пока первенство остается за реляционными структурами. Поэтому именно их мы и будем изучать в последующих уроках.  Защита данных – это организационные, программные и технические методы и средства, направленные на удовлетворение ограничений, установленных для типов данных или экземпляров типов данных в системах обработки данных (ГОСТ 20886-85).

Защита данных включает предупреждение случайного или несанкционированного доступа к данным, их изменения или разрушения со стороны пользователей или при сбоях аппаратуры. Реализация защиты включает:

  • контроль достоверности данных с помощью ограничений целостности;

  • обеспечение безопасности данных (физической целостности данных);

  • обеспечение секретности данных.

Типы ограничений целостности в языке SQL:

  1. Уникальность значения первичного ключа (PRIMARY KEY).

  2. Уникальность ключевого поля или комбинации значений ключевых полей:

UNIQUE(A),

где A – один или несколько атрибутов, указанных через запятую.

(1,2 – явные структурные ограничения целостности.)

3. Обязательность/необязательность значения (NOT NULL / NULL).

4. Задание диапазона значений атрибута Field:

CHECK(field BETWEEN min_value AND max_value)

5. Задание взаимоотношений между значениями атрибутов Field1 и Field2:

CHECK (field1 @ field2),

где @ – оператор отношения (например, знак ">").

6. Задание списка возможных значений (констант) для атрибута Field:

CHECK (field IN (value1, value2,…, valueN)).

7. Определение формата атрибута Field (даты, числа и др.). Например:

CHECK (field LIKE '_ _ _-_ _-_ _') -- формат телефонного номера

8. Определение домена атрибута на основе значений другого атрибута: множество значений некоторого атрибута отношения является подмножеством значений другого атрибута этого или другого отношения (внешний ключ, FOREIGN KEY).

(3.-8. – явные ограничения целостности на значения данных.)

9. Ограничения на обновление данных (например, каждое следующее значение атрибута должно быть больше предыдущего). В SQL напрямую не реализуется, требует использования специальных возможностей СУБД (триггеров).

10. Ограничения на параллельное выполнение операций (механизм транзакций) и проверка ограничений целостности после окончания внесения взаимосвязанных изменений.

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ

АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №19

по специальности 5B0704 - Вычислительная техника и программное обеспечение

  1. Напишите функцию поиска подстроки в строке.

int posfor(char*s,char*sub)

{

 int ls=strlen(s);

 int lsub=strlen(sub);

 int iold; //переменная, являющаяся здесь позицией sub в s

  printf("Мы имеем строку: %s\n",s);

  printf("И подстроку: %s\n",sub);

 int i=0,i1=0; //i-элемент строки s; i1-элемент строки sub

 for (;i<=ls && i1<lsub;) //пока не просмотрится вся строка s и sub, будут

     {                    //выполняться след. действия

      if (s[i]==sub[i1])  //если найдены одинаковые элементы

         {

          iold=i;i1++;i++;//позиции iold присваивается значение позиции на

         }//которой элементы совпали; i и i1 (элементы s и sub) увел. на 1

      else//если одинаковые элементы не найдены

         {//выплоняется следующий цикл

          if (s[i]<sub[i1] || s[i]>sub[i1])//если элементы не совпдают

             {

              if (i1>0)//и если в это время позиция просмотра строки sub не 0

                 {

                  i1=0;//позиция просмотра строки sub принимает 0 значение

                 }

              else//если же в это время позиция просмотра строки sub - 0

                  i++;//тогда позиция строки s увеличивается на единицу

             }; //это нужно для того, чтобы: если *непервый* элемент строки

         }; //sub не совпадёт с каким-либо элементом строки s, то вдруг *первый*

     } //элемент sub совпадёт с ним. Поэтому i1 присваевается значение 0.

 iold=i-lsub+1;//iold присваевается значение первого совпадения элементов

  if (i==ls+1 && i1<lsub)//если промотрена вся s, в то время как i1 просмотрен

       {

       printf("Такого символа нет в данной строке\n");//не до конца

       return -1;}

  else//если всё в порядке

      { printf("Подстрока входит в строку в первый раз начиная с %d позиции\n",iold);

      return iold;}

}

2. Напишите программу реализации системной функции CreateMailslot

#include "stdafx.h"

#include "windows.h"

#include "iostream.h"

void main()

{ HANDLE hsl=NULL;

hsl= CreateMailslot("\\\\.\\mailslot\\hello",0,MAILSLOT_WAIT_FOREVER,NULL);

if (hsl!=INVALID_HANDLE_VALUE)

{cout << "изменение успешно внесены" << endl;

3.Ставить студентам оценки за различные виды работ(практика, контрольная, семестровая, курсовой проект, экзамен) по различным предметам и найти неуспевающих студентов.

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));

4.Реализовать представленную в таблице функцию (Y) с помощью логических элементов И-НЕ.

X2

X1

X0

Y

X2

X1

X0

Y

0

0

0

1

1

0

0

0

0

0

1

0

1

0

1

0

0

1

0

1

1

1

0

1

0

1

1

0

1

1

1

1

5.Понятие концептуальной, логической, физической структуры БД.

Понятие концептуальной, логической, физической структуры БД.

Концептуальное (инфологическое) проектирование[править | править вики-текст]

Концептуальное (инфологическое) проектирование — построение семантической модели предметной области, то есть информационной модели наиболее высокого уровня абстракции. Такая модель создаётся без ориентации на какую-либо конкретную СУБД и модель данных. Термины «семантическая модель», «концептуальная модель» и «инфологическая модель» являются синонимами. Кроме того, в этом контексте равноправно могут использоваться слова «модель базы данных» и «модель предметной области» (например, «концептуальная модель базы данных» и «концептуальная модель предметной области»), поскольку такая модель является как образом реальности, так и образом проектируемой базы данных для этой реальности.

Конкретный вид и содержание концептуальной модели базы данных определяется выбранным для этого формальным аппаратом. Обычно используются графические нотации, подобные ER-диаграммам.

Чаще всего концептуальная модель базы данных включает в себя:

  • описание информационных объектов или понятий предметной области и связей между ними.

  • описание ограничений целостности, т.е. требований к допустимым значениям данных и к связям между ними.

Логическое (даталогическое) проектирование[править | править вики-текст]

Логическое (даталогическое) проектирование — создание схемы базы данных на основе конкретной модели данных, например, реляционной модели данных. Для реляционной модели данных даталогическая модель — набор схем отношений, обычно с указанием первичных ключей, а также «связей» между отношениями, представляющих собой внешние ключи.

Преобразование концептуальной модели в логическую модель, как правило, осуществляется по формальным правилам. Этот этап может быть в значительной степени автоматизирован.

На этапе логического проектирования учитывается специфика конкретной модели данных, но может не учитываться специфика конкретной СУБД.

Физическое проектирование[править | править вики-текст]

Физическое проектирование — создание схемы базы данных для конкретной СУБД. Специфика конкретной СУБД может включать в себя ограничения на именование объектов базы данных, ограничения на поддерживаемые типы данных и т.п. Кроме того, специфика конкретной СУБД при физическом проектировании включает выбор решений, связанных с физической средой хранения данных (выбор методов управления дисковой памятью, разделение БД по файлам и устройствам, методов доступа к данным), создание индексов и т.д.

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ

АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №20

по специальности 5B0704 - Вычислительная техника и программное обеспечение

  1. Напишите функцию вставки подстроки в строку.

//vstavka stroki sub

char *strins(char *sub, char *s, int p)

{

        int ls = strlen(s);

  int lsub = strlen(sub);

  char *res = new char[ls+lsub+1];

  int j=0;

  int i=0;

  if (p>ls)

    p=ls;

  while (res[i] = s[i])

    i++;

  //sdvigaem elementy v rese

  for (i=ls; i>=p; i--)

    res[i+lsub] = s[i];

  //vstavlyaem sub in res

  for (i=p; j<lsub; )

    res[i++] = sub[j++];

  return res;

}

  1. Напишите программу реализации системной функции OpenProcessToken

#include <windows.h>

#include <stdio.h>

#pragma hdrstop

void main()

{HANDLE hToken;

LUID setcbnameValue;

TOKEN_PRIVILEGES tkp;

DWORD errcod;

LPVOID lpMsgBuf;

LPCTSTR msgptr;

UCHAR InfoBuffer[1000];

PTOKEN_PRIVILEGES ptgPrivileges = (PTOKEN_PRIVILEGES) InfoBuffer;

DWORD dwInfoBufferSize;

DWORD dwPrivilegeNameSize;

DWORD dwDisplayNameSize;

UCHAR ucPrivilegeName[500];

UCHAR ucDisplayName[500];

DWORD dwLangId;

UINT i;

if ( ! OpenProcessToken( GetCurrentProcess(),

TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )

{ puts( "OpenProcessToken" );

return; }

GetTokenInformation( hToken, TokenPrivileges, InfoBuffer,

sizeof InfoBuffer, &dwInfoBufferSize);

printf( "Account privileges: \n\n" );

for( i = 0; i < ptgPrivileges->PrivilegeCount; i ++ )

{ dwPrivilegeNameSize = sizeof ucPrivilegeName;

dwDisplayNameSize = sizeof ucDisplayName;

LookupPrivilegeName( NULL, &ptgPrivileges->Privileges[i].Luid,

(char *)ucPrivilegeName, &dwPrivilegeNameSize );

LookupPrivilegeDisplayName( NULL, (char *)ucPrivilegeName,

(char *)ucDisplayName, &dwDisplayNameSize, &dwLangId );

printf( "%s (%s)\n", ucPrivilegeName, ucDisplayName);}}

  1. Выведите сведения о тех сотрудниках (номер сотрудника, фамилию и номер отдела), кто проживает в городах, начинающихся на T.

select employee_id, last_name, department_id

FROM employees

WHERE department_id IN (SELECT department_id

FROM departments

WHERE location_id IN

(SELECT location_id

FROM locations

WHERE city LIKE 'T%'));

  1. Реализовать представленную в таблице функцию (Y) с помощью логических элементов ИЛИ-НЕ.

    X2

    X1

    X0

    Y

    X2

    X1

    X0

    Y

    0

    0

    0

    1

    1

    0

    0

    0

    0

    0

    1

    1

    1

    0

    1

    1

    0

    1

    0

    1

    1

    1

    0

    0

    0

    1

    1

    0

    1

    1

    1

    0

  2. Диаграмма последовательностей: определение, структура, состав, пример.

Диаграмма последовательности (англ. sequence diagram) — диаграмма, на которой показано взаимодействие объектов (обмен между ними сигналами и сообщениями), упорядоченное по времени, с отражением продолжительности обработки и последовательности их проявления. Используется в языке UML.

Основными элементами диаграммы последовательности являются обозначения объектов(прямоугольники с названиями объектов), вертикальные "линии жизни"(англ. lifeline), отображающие течение времени, прямоугольники, отражающие деятельность объекта или исполнение им определенной функции (прямоугольники на пунктирной "линии жизни"), и стрелки, показывающие обмен сигналами или сообщениями между объектами.

На данной диаграмме объекты располагаются слева направо.

Диаграмма последовательности (англ. sequence diagram) — диаграмма, на которой показано взаимодействие объектов (обмен между ними сигналами и сообщениями), упорядоченное по времени, с отражением продолжительности обработки и последовательности их проявления. Используется в языке UML.

Основными элементами диаграммы последовательности являются обозначения объектов(прямоугольники с названиями объектов), вертикальные "линии жизни"(англ. lifeline), отображающие течение времени, прямоугольники, отражающие деятельность объекта или исполнение им определенной функции (прямоугольники на пунктирной "линии жизни"), и стрелки, показывающие обмен сигналами или сообщениями между объектами.

На данной диаграмме объекты располагаются слева направо.

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ

АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №21

по специальности 5B0704 - Вычислительная техника и программное обеспечение

  1. Определить самое длинное слово в тексте. Разделители между словами- символы точка, запятая, точка с запятой, пробел.

#include<conio.h>

#include<stdio.h>

char text[]="In a year instead of the promised Morrowind the company Bethesda released Battlespiare, a primitive 3D-action based on Daggerfall engine.";

int i,kol,max=0,x=0,m;

int n=sizeof(text)/sizeof(char);

void main()

{

clrscr();

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

    {

     if (text[i] == ' ' || text[i] == ',' || text[i] == '.')

        {

         if (x >= max)

            {

             if(x > max)

               {

                kol=1;

                m=i-x;

               }

             else

                kol++;

             max=x;

            }

         x=0;

        }

     else

         x++;

    }

if (x > max)

   {

    max = x;

    kol++;

   }

printf("Lenth = %d; Kol = %d;\n",max,kol);

for (i=m;i<max+m;i++)

     printf ("%c",text[i]);

getch();

}

  1. Напишите программу реализации системной функции OpenSCManager

VOID SvcInstall()

{ SC_HANDLE schSCManager;

SC_HANDLE schService;

TCHAR szPath[MAX_PATH];

if( !GetModuleFileName( "", szPath, MAX_PATH ) )

{ printf("установка сервиса отменена(%d)\n", GetLastError());

return; }

schSCManager = OpenSCManager(

SC_MANAGER_ALL_ACCESS);

if (NULL == schSCManager)

{ printf("OpenSCManager не доступен (%d)\n", GetLastError());

return; }

schService = CreateService(

if (schService == NULL)

{ printf("сервис не установлен(%d)\n", GetLastError());

CloseServiceHandle(schSCManager);

return; }

else printf("сервис установлен\n");

CloseServiceHandle(schService);

CloseServiceHandle(schSCManager);}

  1. Найдите всех сотрудников, у которых нет руководителей с использованием оператора NOT EXISTS

select * from employees e where not exists (select * from employees where employee_id=e.manager_id)

  1. Реализовать представленную в таблице функцию (Y) с помощью логических элементов И-НЕ.

    X2

    X1

    X0

    Y

    X2

    X1

    X0

    Y

    0

    0

    0

    0

    1

    0

    0

    0

    0

    0

    1

    0

    1

    0

    1

    1

    0

    1

    0

    1

    1

    1

    0

    1

    0

    1

    1

    1

    1

    1

    1

    0

  2. Современное программирование – базовые понятия и инструменты.

Программи́рование — процесс создания компьютерных программ.В настоящее время существуют множество языков программирования: как достаточно универсальных, так и очень специфических. Многие программисты старались и стараются придумать свой язык обладающий теми или иными преимуществами. Можно лишь условно разделить языки по определенным критериям. Например, по типу решаемых задач (язык системного или прикладного назначения), по степени ориентации на решение узкого круга задач (проблемно-ориентированные или универсальные).Широкое распространение получили объектно-ориентированные языки программирования (ООП), на которых легче реализовать большие и сложные проекты. Их отличие от языков высокого уровня заключается в возможности отстранения от алгоритма выполнения программы. С помощью таких языков разработчик как бы оперирует виртуальными объектами.Программирование основывается на использовании языков программирования, на которых записывается программа. В настоящее время активно используются интегрированные среды разработки, включающие в свой состав также редактор для ввода и редактирования текстов программ, отладчики (т. н. дебаггеры) для поиска и устранения ошибок, трансляторы с различных языков программирования, компоновщики для сборки программы из нескольких модулей и другие служебные модули.Большая часть работы программистов связана с написанием исходного кода, тестированием и отладкой программ на одном из языков программирования. Исходные тексты и исполняемые файлы программ являются объектами авторского права и являются интеллектуальной собственностью их авторов и правообладателей.Различные языки программирования поддерживают различные стили программирования (парадигмы программирования). Отчасти искусство программирования состоит в том, чтобы выбрать язык программирования, наиболее полно подходящий для решения поставленной задачи. Разные языки требуют от программиста различного уровня внимания к деталям при реализации алгоритма, результатом чего часто бывает компромисс между простотой и производительностью (или междувременем программиста и временем пользователя).Единственный язык, напрямую выполняемый ЭВМ — это машинный язык (также называемый машинным кодом и языком машинных команд). Изначально все программы писались в машинном коде, но сейчас этого практически уже не делается. Вместо этого программисты пишут исходный код на том или ином языке программирования, затем, используя компилятор, транслируют его в один или несколько этапов в машинный код, готовый к исполнению на целевом процессоре, или в промежуточное представление, которое может быть исполнено специальным интерпретатором — виртуальной машиной. Но это справедливо только для языков высокого уровня. Если требуется полный низкоуровневый контроль над системой на уровне машинных команд и отдельных ячеек памяти, программы пишут на языке ассемблера, мнемонические инструкции которого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора ЭВМ (по этой причине трансляторы с языков ассемблера получаются алгоритмически простейшими трансляторами).В некоторых языках вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины», также называемый байт-кодом (byte-code). Такой подход применяется в Forth, некоторых реализациях LispJavaPerlPython, языках для .NET Framework.

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ

АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №22

по специальности 5B0704 - Вычислительная техника и программное обеспечение

  1. Заданы моменты начала и конца некоторого промежутка времени в часах, минутах и секундах (в пределах одних суток). Найти продолжительность этого промежутка в тех же единицах измерения

#include<conio.h>

#include<stdio.h>

unsigned long h1=12,m1=57,s1=59;

unsigned long h2=12,m2=58,s2=0;

unsigned long hr=0,mr=0,sr;

unsigned long rt1,rt2;

void main()

{

 clrscr();

 m1 *= 60;

 h1 *= 1440;

 m2 *= 60;

 h2 *= 1440;

 rt1 = h1+m1+s1;

 rt2 = h2+m2+s2;

 sr=rt2-rt1;

 while (sr>60)

       {

        sr-=60;

        mr++;

       }

 while (mr>60)

       {

        mr-=60;

        hr++;

       }

 printf("%lu.%lu.%lu",hr,mr,sr);

 getch();

}

  1. Напишите программу реализации системной функции OpenService

BOOL DeleteSampleService()

{ schService = OpenService(

schSCManager, // база данных SCManager

TEXT("Sample_Srv"), // имя службы

DELETE); // однако требует доступа DELETE

if (schService == NULL)

{ printf("OpenService failed (%d)\n", GetLastError());

return FALSE; }

if (!DeleteService(schService) )

{ printf("DeleteService failed (%d)\n", GetLastError());

return FALSE; }

else printf("DeleteService succeeded\n");

CloseServiceHandle(schService);

return TRUE;}

  1. Создайте скрипт-файл loademp.sql для интерактивной загрузки строк в таблицу MY_EMPLOYEE. Соедините первую букву имени с семью первыми буквами фамилии для получения идентификатора пользователя для данного служащего.

SET ECHO OFF

SET VERIFY OFF

INSERT INTO my_employee

VALUES (&p_id, '&p_last_name', '&p_first_name',

lower(substr('&p_first_name', 1, 1)||

substr('&p_last_name', 1, 7)), &p_salary);

SET VERIFY ON

SET ECHO ON

  1. Реализовать представленные в таблице функции (Y,Z) с помощью микросхемы мультиплексора (74153).

    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

  2. Понятие модели данных.

Модель данных — это абстрактное, самодостаточное, логическое определение объектов, операторов и прочих элементов, в совокупности составляющих абстрактную машину доступа к данным, с которой взаимодействует пользователь. Эти объекты позволяют моделировать структуру данных, а операторы — поведение данных

В классической теории баз данных, модель данных есть формальная теория представления и обработки данных в системе управления базами данных (СУБД), которая включает, по меньшей мере, три аспекта:

1) аспект структуры: методы описания типов и логических структур данных в базе данных;

2) аспект манипуляции: методы манипулирования данными;

3) аспект целостности: методы описания и поддержки целостности базы данных.

Аспект структуры определяет, что из себя логически представляет база данных, аспект манипуляции определяет способы перехода между состояниями базы данных (то есть способы модификации данных) и способы извлечения данных из базы данных, аспект целостности определяет средства описаний корректных состоянийбазы данных.

Каждая БД и СУБД строится на основе некоторой явной или неявной модели данных. Все СУБД, построенные на одной и той же модели данных, относят к одному типу. Например, основой реляционных СУБД является реляционная модель данных, сетевых СУБД — сетевая модель данных, иерархических СУБД — иерархическая модель данных и т.д.

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ

АТТЕСТАЦИОННЫЙ ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ №23

по специальности 5B0704 - Вычислительная техника и программное обеспечение

  1. Объявить двумерный массив и заполнить его построчно с клавиатуры. После заполнения – показать заполненную матрицу на экран и посчитать сумму элементов отдельно в каждом столбце и каждой строке.

#include <iostream>

#include <iomanip>

using namespace std;

 

int main()

{

setlocale(LC_ALL, "rus");

 

const int MatrixSize = 3;

 

int ourMatrix[MatrixSize][MatrixSize] = {};

int rowSum[MatrixSize] = {}; // для записи суммы по строкам

int columnSum[MatrixSize] = {}; // ... по столбцам

 

cout << "Заполните матрицу " << MatrixSize << 'х' << MatrixSize << " числами построчно.\n";

for (int rowNum = 0; rowNum < MatrixSize; rowNum++)

{

for (int columnNum = 0; columnNum < MatrixSize; columnNum++)

{

cout << rowNum + 1 << "-я строка ";

cout << columnNum + 1 << "-й столбец: ";

cin >> ourMatrix[rowNum][columnNum];

}

cout << endl;

}

 

// вывод на экран + подсчет суммы

for (int rowNum = 0; rowNum < MatrixSize; rowNum++)

{

cout << " | ";

for (int columnNum = 0; columnNum < MatrixSize; columnNum++)

{

cout << setw(4) << ourMatrix[rowNum][columnNum] << "  ";

rowSum[rowNum] += ourMatrix[rowNum][columnNum];

columnSum[rowNum] += ourMatrix[columnNum][rowNum];

}

cout << "|" << endl;

}

 

cout << "\nСумма по строкам!\n";

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

{

cout << i + 1 << "-я строка: " << rowSum[i] << endl;

}

 

cout << "\nСумма по столбцам!\n";

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

{

cout << i + 1 << "-й столбец: " << columnSum[i] << endl;

}

return 0;

}

  1. Напишите программу реализации системной функции OpenThreadToken

#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;}

  1. Создайте представление DEPT50, содержащее номер служащего, фамилию служащего и номер отдела всех служащих отдела 50. Назовите столбцы представления EMPNO, EMPLOYEE, DEPTNO. Запретите операцию перевода служащего в другой отдел (кроме 50) через представление.

CREATE VIEW dept50 AS

SELECT employee_id empno, last_name employee,

department_id deptno

FROM employees

WHERE department_id = 50

WITH CHECK OPTION CONSTRAINT emp_dept_50;

  1. Реализовать представленные в таблице функции (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

1

1

1

0

1

0

0

1

1

1

0

1

1

1

0

0

  1. Построение контекстной помощи – средства и методики.