БИЛЕТ №1

Дисциплина «Объектно-ориентированное программирование»

1.Принципы и этапы ООП

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

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

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

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

Основное «+» ООП – сокращение межмодульных вызовов и уменьшение объемов инфы, передаваемой м/у модулями, по сравнению с модульным программир-ем.

НЕ нашли? Не то? Что вы ищете?

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

этапы разработки в ООП:

1. Анализ: максимально полное описание задачи. На этом этапе вып-ся анализ предмет. обл. задачи, объектная декомпозиция

2. Проектирование. Различают логич. и физич. проектирование. Логич. проект-ние закл-ся в разр-ке стр-ры классов. Физич. проектир-е вкл. объединение описаний классов в модули, выбор схемы их подключения (динамич. или статич. компоновка), опред-ние способов вз-вия с оборуд-ем, с О. С. или др. П. О., обеспечение синхронизации процессов для sys ||-ной обр-ки.

3. Эволюция – процесс поэтапной реализации подключения классов к проекту.

4. Модификация – процесс добавления новых функцион-х возм-ей или изменение сущ-ющих св-в в sys

Дисциплина «Операционные системы»

2. Основные команды MS-DOS по работе с дисками, файлами и директориями. Порядок загрузки MS-DOS и WINDOWS-9x.

Основные команды MS-DOS по работе с дисками, файлами и директориями

Команды в MS-DOS: COMMAND.COM-командный процессор, который содержит внешние команды. ٭bat.-содержит набор команд ОС (команды: внутренние и внешние). 1.

Команды DOS для работы с каталогами

Смена текущего каталога

cd [дисковод:][путь]

Просмотр каталога

dir [дисковод:][путь\][имя-файла] [параметры]

Параметры:

/p - поэкранный вывод;

/w - вывод в широком формате;

/s - оглавление указанного в команде каталога и всех его подкаталогов;

/b - только имена файлов без заголовочных и итоговых сведений;

/aтрибут - сведения о файлах, имеющих указанные атрибуты.

Сортировки:

/on - по имени;

/oe - по расширению;

/od - по времени;

/og - сначала выводить сведения о подкаталогах;

Примеры:

dir - оглавление текущего каталога

dir *.exe - сведения обо всех файлах. exe текущего каталога

dir с:\*.exe /s - сведения обо всех файлах. exe на диске с:

Вывод оглавления в файл или на принтер:

dir > prn - вывести оглавление текущего каталога на принтер;

dir c:\*.txt > txtfiles. txt - создать в файле txtfiles. txt список всех файлов с расширением .txt, находящихся в корневом каталоге диска c:.

Создание каталога

Формат команды:

md [дисковод:][путь\]имя-каталога

Удаление каталога

Удаление пустого каталога

rd [дисковод:][путь\]имя-каталога

Удаление каталога со всем содержимым

deltree [/y] имя-файла-или-каталога

Переименование каталога

move [дисковод:][путь\]имя-каталога новое-имя-каталога

Установка списка каталогов для поиска выполняемых программ

Формат команды:

path [дисковод:][путь\]имя-каталога [; [дисковод:][путь\]имя-каталога]

Примеры:

path c:\exe; c:\exe\program; d:\msdos

Команды DOS для работы с файлами

Создание текстовых файлов

copy con work. txt - создать в текущем каталоге текстовый файл work. txt.

Удаление файлов

del имя-файла

Переименование файлов

ren имя-файла1 имя-файла2

Копирование файлов

copy имя-файла1 имя-файла2

copy x. txt z. txt - скопировать файл x. txt в текущий каталог с именем z. txt;

copy a:\*.* - cкопировать все файлы из корневого каталога диска а: в текущий

Соединение (конкатенация) файлов

Формат команды:

copy имя-файла [+имя-файла]…[имя файла]

Перемещение файлов в другой каталог

Формат команды:

move [/y] имя-файла имя-каталога

move [/y] имя-файла [дисковод:][путь]новое-имя-файла

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

move *.doc d:\ - переместить файлы с расширением doc из текущего каталога в корневой каталог диска d:;

Вывод файла на экран

type t1.doc - вывод на экран файла type t1.doc из текущего каталога.

Команда копирования xcopy

Формат команды:

xcopy имя-файла-или-каталога [имя-файла-или-каталога]…[параметры]

Преимущества команды xcopy:

работает быстрее, чем copy;

позволяет копировать файлы из всех подкаталогов указанного каталога;

позволяет выборочное копирование файлов, в зависимости от значения атрибута «архивировать» или даты файла.

Примеры:

xcopy *.* a:\ /s /e - копирование всех файлов и подкаталогов текущего каталога в корневой каталог и соответствующие подкаталоги диска а: (создание архивной копии файлов текущего каталога);

Команды DOS для работы с дисками

Смена текущего дисковода

С: - установить текущим диск с:;

Форматирование дискет

format дисковод: [параметры]

Параметры:

/s - создать системный диск;

/v:метка - задание метки диска;

/u - безусловное форматирование с уничтожением имеющихся данных;

/q - быстрая очистка без контроля наличия сбойных участков.

format a: /u - безусловное форматирование дискеты а:;

format a: /q - очистка дискеты;

format a: /s - форматировать дискету и сделать ее системной.

Перенос на диск системных файлов DOS

sys a: - перенести на диск а: системные файлы из корневого каталога текущего диска.

Порядок загрузки MS-DOS и WINDOWS-9x.

Состав и порядок загрузки ОС MS-DOS, Windows

Канонический состав ОС MS-DOS.

1. BIOS- Базовая система ввода-вывода, низкоуровневые обработчики прерываний. Тестирование аппаратных компонентов компа

2. BR-начальный загрузчик (находится в нулевом секторе системного диска) для нахождения системных файлов, в нулевом секторе диска. Отыскивание сист файла

3. IO. SYS-файл (сист. Файл для организации связи с внешними устр.) в корневом каталоге

4. MS-DOS-файл (остальные обработчики прерываний) в корневом каталоге

5. -командный процессор(анализ синтаксиса команд, выполнение внутр команд, загрузка и выгрузка внешних команд и исполняемых файлов), в любом месте корнев. Катал. Сист. Диска. Autoexec. bat-содержит команды для формирования конфигурации для выполняемой задачи.

6. Внешние команды (в виде исполн. команды. ехе )

7. Драйверы.

Отличие Windows от Ms-Dos: Обработчики прерываний в IO. SYS Файл MSDOS. SYS (обычные текстовый файл) размер его не менее 1024 байтов, содержит некоторые секции, например, сущ-ет секция Option, в которой есть параметр Bootgui=1(можно поменять на 0). Далее обработка передается (проверяет конфигурацию компьютера, если да) - > загрузчик ядра KRNL386.EXE(управление памятью, ФС, сетью, загрузка и выгрузка прог)(KRNL32.DLL)-> User. EXE(управление окнами, вв, выв)(User32.DLL)->GDI. EXE(управление графикой) (GDI32.DLL).

Дисциплина «Программирование на языке высокого уровня»

3. Создать динамический целочисленный массив. Размер массива вводится с клавиатуры. Массив заполняется случайными числами, сортируется методом вставок и выводится на экран.

#include<stdio. h>

#include<stdlib. h>

#include<conio. h>

void main(){

clrscr();

randomize();

int Size, I=0,J=0,R=0;

printf("Input massive size: ");

scanf("%i",&Size);

int *Mass = new int[Size];

printf("Massive:\n");

for (I=1; I<=Size; I++)

{

Mass[I]=random(100);

printf("%i ",Mass[I]);

}

for (I=2; I<=Size; I++)

{

R=Mass[I];

J=I-1;

while ((J>=1) && (R<Mass[J]))

{

Mass[J+1]=Mass[J]; J--;

}

Mass[J+1]=R;

}

printf("\nSorted Massive:\n");

for (I=1; I<=Size; I++)

printf("%i ",Mass[I]);

delete Mass;

getch();

}

БИЛЕТ №2

Дисциплина «Объектно-ориентированное программирование»

1.  Понятие класса. Реализация методов класса.

Ответ:

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

Определение класса в C++

class ИМЯ

{

public:

переменные и методы достыпные всем, включая конструкторы и деструкторы

private:

переменные и методы дост. только самому классу

protected:

пер. и м. дост. классу и его потомкам

};

Дисциплина «СУБД»

2 .Основные операции с записями таблиц в языке FoxPro.

Запись – понумерованная совок-ть д-х, содержащая по одному уникальному представителю из всех.

При работе с записями в FoxPro применяются след. ф-ции:

APPEND BLANK - Добавляет одну или несколько записей в конец таблицы.

BROWSE - Откр-ет окно просмотра и выводит записи из текущ или указан. табл.

Определение активной записи:

GOTO №записи; GO TOP – 1я актив. запись, GO BOTTOMпослед-я запись.

Перемещение относит-но какой-то записи на какое-то кол-во записей:

SKIP [кол-во записей], число м. б. либо «+» - вперед по табл, «-» - назад по табл.

Для активной записи используем команду:

REPLACE имя поля WITH выражение – присваиваем для активной записи какому-то полю какое-то значение.

RECCOUNT() – возвращает число записей в активной табл.

DELETE - Помечает записи на удаление.

RECALL – снять пометку на удаление.

PACK - Окончательно удаляет все записи, помеч-ные на удаление в текущ. табл.

ZAP – все записи удаляются, а остается заголовок.

LOCETE FOR выражение – для поиска записи в каком-то поле или наборе полей и есть выражение по котрому ищется. Просматриваются все записи подряд, если найдена, то устанавливается указатель. Для продолжения поиска использ-ся CONTINUE.

SEEK выражение - Просматривает индексированную таблицу в поисках первого вхождения записи, ключ индекса которой возвращает логическое значение, указывающее, насколько успешным был поиск. SET NEAR ON|OFF – если записи не найдены, то указатель устанавл-ся возле близкой к ней записи, либо в конец таблицы.

SEEK() - Просматривает индексированную таблицу в поисках первого вхождения записи, ключ индекса которой возвращает логическое значение, указывающее, насколько успешным был поиск. Возвращает логическое значение "истина" .T., если запись найдена.

FOUND() - Возвращает значение "истина" (.T.) в случае успешного выполнения команды LOCATE или SEEK.

SORT TO имя новой таблицы ON имя поля – сортировка.

SET DELETED ON|OFF - Определяет, будет ли Visual FoxPro обрабатывать записи, помеченные на удаление, и будут ли они доступны для использования в других командах.

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

CLOSE ALL - Закрывает все открытые базы данных, таблицы, индексы во всех рабочих областях и выбирает рабочую область.

Дисциплина «Операционные системы»

3. Загрузить WINDOWS. Создать на диске A: директории L1 и L2.

Создать файл A:\L1\w. txt, содержащий в кратком виде сведения о директории D:\WINDOWS\COMMAND. Создать файл A:\f. bat, выполняющий следующие действия:

1. Анализ наличия файла A:\L1\w. txt.

Если файл A:\L1\w. txt существует:

1.1 вывод содержимого файла A:\L1\w. txt на экран.

1.2 копирование файла A:\L1\w. txt в файл A:\L2\r. txt.

1.3 удаление файла A:\L1\w. txt.

Если файл A:\L1\w. txt не существует:

1.4 вывод сообщения об отсутствии файла на экран

2. Пауза.

В командной строке пишем:

dir D:\Windows\Command /w > A:\L1\w. txt

Создаем текстовый файл f. bat:

If exist a:\L1\w. txt goto m1

If not exist a:\L1\w. txt echo file net

:m1

type a:\L1\w. txt

copy a:\L1\w. txt a:\L2\r. txt

del a:\L1\w. txt

pause

БИЛЕТ №3

Дисциплина «Программирование на ЯВУ»

1. Ввод и вывод с использованием различных методов в С++

Для отображения вывода на экран используется cout. Выходной поток cout позволяет вам выводить символы и числа.

Один символ: cout << a;

Несколько символов: cout << a << b << c << d;

/n или endl - Символ новой строки

/r - Возврат каретки (не перевод строки)

/t - Символ горизонтальной табуляции

/v - Символ вертикальной табуляции

Модификаторы dec, oct и hex позволяют программам выводить значения в десятичном, восьмеричном и шестнадцатеричном виде

cout << "Восьмеричный: " << oct << 11 <<endl;

cout << "Шестнадцатеричный: " << hex<<11 << endl;

cout << "Десятичный: " << dec << 11<<endl;

При этом, когда используется один из модификаторов, он будет оставаться в силе до тех пор, пока программа не закончится или пока не будет использован другой модификатор.

модификатор setw (установка ширины)

cout << "Мое любимое число равно" << setw(3) << 1001 << endl;

Для выполнения ввода с клавиатуры используется оператор cin

cin >> number;

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

В С++ для форматированного ввода/вывода используются команды printf(вывод), scanf(ввод).

printf(модификатор, значение);

scanf(модификатор, значение)

Предусмотрены следующие управляющие символы:

“\n” – возврат каретки (переход на новую строку)

“%i” – вывод значения в целом формате

“%li” - вывод значения в формате longint (длинное целое)

“%f” - вывод значения в вещественном формате float

“%o” – вывод в 8-ричном формате

“%X” – вывод в 16-ричном формате большими буквами

“%x” – вывод в 16-ричном формате маленькими буквами

Дисциплина «СУБД»

2 . Реализация цикла и развилки в языках SQL и FoxPro.

FoxPro: В VFP существуют несколько видов циклов:

Циклы с предусловием это циклы, выполняющиеся до тех пор, пока условие выполнения истинно. Такой цикл строится такой конструкцией:

DO WHILE условие

<тело цикла>

ENDDO

Цикл со счетчиком это цикл, в котором происходит последовательное наращивание (или уменьшение) какого либо значения, то есть его перечисление. Например,

FOR I = nMin TO nMax STEP nStep

< тело цикла>

ENDFOR

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

Приведем пример использования этого цикла. Создается массив и затем последовательно выводятся его элементы оператором (?) :

DIMENSION cMyArray(3)

cMyArray[1] = 'A'

cMyArray[2] = 'B'

cMyArray[3] = 'C'

FOR EACH cMyVar IN cMyArray

? cMyVar

ENDFOR

Во всех циклах можно прервать выполнение цикла оператором EXIT или прекратить выполнение текущей итерации (перейти на следующую итерацию) с помощью команды LOOP.

SQL: С помощью конструкции WHILE…BREAK & CONTINUE организуются циклы, причем это единственный тип циклов, поддерживаемый в SQL:

WHILE условие

<блок команд>

[BREAK]

<блок команд>

[CONTINUE]

Цикл можно принудительно остановить, если в его теле выполнить команду BREAK. Если же нужно начать цикл заново, не дожидаясь выполнения всех команд в теле цикла, необходимо выполнить команду CONTINUE.

Для ветвления предусмотрена конструкция CASE…END.

Например:

CASE

WHEN price <5 THEN ‘эконом’

WHEN price >5 THEN ‘бизнес’

END

Дисциплина «ООП »

3. Создать 3 вложенных класса для решения квадратного уравнения.

Решить квадратное уравнение способом вложенных классов, для этого рассмотрим 3 класса:

1 класс – поля a, b,c; метод Vvod.

2 класс – поля x1,x2.

3 класс – объект первого класса, объект второго класса, методы calc и display (не применять механизм наследования).

#include <iostream. h>

#include <conio. h>

#include <math. h>

class kvur

{

class dat

{

public: int a, b,c;

float d;

void diskr(void)

{

d=b*b-4*a*c;

}

};

class calc

{

public: float x1,x2;

dat vv;

void vvod()

{

cout<<"Введите а, b,c"<<endl;

cin>>vv. a>>vv. b>>vv. c;

}

void reshenie()

{

vv. diskr();

if (vv. d>=0)

{

x1=(-vv. b+sqrt(vv. d))/(2*vv. a);

x2=(-vv. b-sqrt(vv. d))/(2*vv. a);

}

if (vv. d<0)

{

cout<<"Решения нет"<<endl;

}

}

};

public:

calc calc1;

void vvod();

void reshenie();

void display();

};

void kvur::vvod(void){calc1.vvod();}

void kvur::reshenie(void){calc1.reshenie();} void kvur::display(void)

{ if (calc1.vv. d>=0) {cout<<"x1="<<calc1.x1<<endl;

cout<<"x2="<<calc1.x2<<endl;} }

void main() { clrscr(); kvur kv1; kv1.vvod(); kv1.reshenie();

kv1.display(); getch();}

БИЛЕТ №4

Дисциплина «ООП»

1. Полиморфизм в Turbo-Pascal. Создание библиотеки классов в Turbo-Pascal

Полиморфизм в Turbo-Pascal

TP реализует механизмы простого и сложного полиморфизма.

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

Сложный полиморфизм. При сложном полим-зме конкретный аспект полиморфного метода также опред-ся типом объекта, для к-рого он вызван, но только не на этапе компиляции, а на этапе выполнения проги (позднее связывание). Полиморфные методы для к-рых применяется позднее связывание наз-ся вирт-ми. Для описания вирт-х методов испол-ется служеб. слово virtual:

Procedure <имя метода>(<список параметров>); virtual;

Function <имя метода>(<список параметров>):<тип функции>;virtual;

При использовании вирт-х методов должны выполнятся след. правила:

1) Если в нек-ром классе метод описан как вирт-ный, то все производные классы, включающие метод с тем же именем, должны описать этот метод как вирт-ый.

2) Порядок расположения, кол-во и типы формальных параметров в одноименных вирт-х методах должны оставаться неизменными.

3) Класс, содержащий вирт-ые методы, д. включать спец-ый статический метод – конструктор. Для этого метода слово Procedure в объявлении и реализации должно быть заменено словом Constructor.

Создание библиотеки классов в Turbo-Pascal

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

Стр-ра модуля с описанием класса:

Unit <имя модуля>;

Interface {интерфейсный раздел}

Type <имя класса> = Object

Private <скрытые поля>;

Public <доступные поля>;

Private <скрытые методы>;

Public <доступные методы>;

End;

//Var <объявление экспортируемых объектов класса>

Implementation {раздел реализаций}

{Реализация методов}

//Begin {раздел инициализации}

//<вызов экспортируемых объектов класса>

End.

Созданный interface скомпилировать и будет *.tpu. USES имя модуля.

Дисциплина «Операционные системы»

2. Файловая система FAT. Области на диске. Содержание областей. Структура дескрипторов FAT16 и FAT32.

Разновидности FAT системы: FAT, FAT12, FAT16, FAT32, VFAT (вирт. ф. с.). для работы с ф. с. надо сначала отформатировать диск. При форматир-ии диск разбивается на дорожки- часть поверх-ти огранич-ая двумя концентрич-ми окружностями. Размер дорожки опред-ется размером головки. Если есть несколько дисков, объед-ых в пакет, то у них есть цилиндр. Цилиндр-это совокуп-ть всех дорожек одного радиуса на различ-х пластинах одного пакета. Дорожки разбиваются на сектора-1.часть дорожки размером 512 байт(ближе к центру плотность записи больше);2.наименьшая единица адресуемого дискового прост-ва. При работе с памятью каждая дорожка имеет одинак-ое кол-во секторов независимо от радиуса дорожки. Происходит разбиение диска на обл-ти и объединение секторов в кластеры. Кластер-совок-ть смежных секторов; Кластеры так же нумеруются. Потом организуются обл-ти. Области, на к-ые разбивается диск:

1.BR(BOOT RECORD)-обл-ть начального загрузчика(в 0 секторе), содержит сведения о диске, прогу нач-ого загрузчика;

2.FAT(FILE ALLOCATION TABLE)(с 1-18 секторах)-обл-ть (таблица) распределения ф-лов-содержит инф-цию о размещении ф-лов на диске.

3.RD(ROOT DIRECTORY)обл-ть корневого каталога(с19-32)-сод-жит дескрипторы ф-лов. Занимает 1 кластер, не может сод-жать больше чем 512 дескрипторов. Устанавливается ограничение в FAT16 и FAT12 кол-ва ф-лов в корневом каталоге. Каждый дескриптор занимает 32 байта и разбит на 8 полей:1.имя ф-ла(директории)-длина 8 байт(8 символов);2.расширение-3 байта;3.аттрибуты-1 байт;4.резерв-10;5.время последней записи-2;6.дата послед. записи-2;7.№ началного кластера-2;8-длина ф-ла-4.

4.DA(DATA AREA)-область данных.

Атрибуты-длина хар-к ф-ла. Под атрибут выделяется 1 байт. Атрибуты ф-ла (каталога)

1

1

1

1

1

1

Резерв, не исп-ся в Fat-сис; арх. ф-л; директор-я; метка тома; сист-ый; скрытый; чтение

a.  Структура дескрипторов FAT16 и FAT32.

Отличие FAT32 от FAT16. Структура дескриптора FAT для длинного имени.

Отличие FAT32 от FAT16:

1. каждый блок FAT32 табл. Занимает не 2, а 4 байта;

2. адрес нач. кластера в дескрипторе занимает не 2, а 4 б;

3. Загрузочная запись содержит не 1 сектор, а 2 сектора, т. е. кроме min-но необходимых сведен. о носителе(нач. загрузчике), там еще дублируются некот. данные о FAT и RD для безопасности;

4. копия загрузочной записи в 16 секторе;

5.обл. корн. каталога не является жестко привязанной сразу за FAT, а расположена в некот. месте DA, сведения о RD содержаться в BR, след-но, снимается ограничение на кол-во ф-лов в RD, т. к. RD не ограничен строго в размерах.

Поля в дескрипторе ф. с. FAT32(размер дескр.=32):1. Имя ф-ла=8 байт; 2. Расширение=3; 3. Атрибут=1; 4. Резерв=2; 5. Время создания ф-ла или директории=2; 6. Дата создания=2; 7. Дата посл-го доступа=2; 8. Старшее слово №ра нач. кластера=2; 9. Время посл-ей записи=2; 10. Дата послед. Записи=2; 11.младшее слово №ра нач. класт=2; 12.размер ф-ла=4.

Длинные имена(>8).Работает виртуальная ФС.

1. Генерируется короткое имя==6 первых символов, записывается в дескриптор

2. ОС занимает столько дескрипторов, сколько необходимо для записи длинного имени.

Дисциплина «СУБД »

3. Загрузить SQL-Server. Загрузить Enterprise Manager. Создать базу данных BDA. Создать хранимую процедуру pra, выполняющую следующие операции:

1. Создание таблицы ta, содержащей 3 поля

Назначение колонки

Тип данных

Фамилия

Дата рождения

Рост

char

datetime

numeric

2. Ввод одной записи

CREATE PROCEDURE Pra AS

Begin

CREATE TABLE ta

(Fio CHAR(50),

Birthday Datetime,

Rost Numeric)

INSERT INTO ta (Fio, Birthday, Rost) Values ('Dmitry', '02.26.1983', 174)

end

GO

Exec pra

БИЛЕТ №5

Дисциплина «ООП»

1.Определение класса в С++. Вложение классов в С++

В С++ так же как и в других языках прог-ия, класс - это структурный тип, используемый для описания нек-рого множ-ва объектов предмет. обл-ти, имеющих общие св-ва и поведение. Он опис-ется след обр.:

class <имя класса> {

private: <внутренние (недоступные) компоненты класса >;

protected: <защищенные компоненты класса>;

public: <общие (доступные) компоненты класса>;

методы};

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

Компоненты класса, объявленные в секции protected, наз-ются защищ-ми. Они доступны компонентным ф-циям не только данного класса, но и его потомков. Компоненты класса, объявленные в секции public, наз-ются общими. Они доступны за пределами класса в любом месте проги

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

<тип функции> <имя класса>:: <имя функции> ( <список параметров> )

{<тело компонентной функции> }

Вложение классов в С++

Иногда возникает необходимость объявление одного класса внутри др-го. Такой класс наз-ся вложенным. Влож-й класс находится в обл-ти действия класса, внутри к-рого он объявлен. Соответ-но, объекты этого класса могут использ-ться как компоненты внешнего класса.

Пример вложение классов:

Class figura {

Class point //вложенный вспомогательный класс

{ int x, y

public:

int getx(){return x};

int gety(){return y};}

//поля и методы класса figura

int p;

public:

void setfigura()}

Дисциплина «Операционные системы»

2. Структура жесткого диска для файловой системы FAT. Структура главной загрузочной записи.

Логическая организация жесткого диска. Физ. координаты жесткого диска-трехмерные. Параметры:

1.с-№ цилиндра;

2. h-№ головки;

3. S-№ сектора. По адресу 0-0-1 находится важный сектор-Master Boot Record(MBR)-главная загрузочная запись.

Содержит 3 эл-та:

1. NSB(non system boot)-внесистемный загрузчик, предназначен для определения, с какого раздела н/загрузить ОС;

2.TPD(partition table)-табл. разделов диска;

3. Сигнатура AA55h завершения MBR.

TPD содержит 4 эл-та. Каждый из эл-тов содержит 16 байт, след-но, вся табл. занимает 64 байта. Каждый эл-т содержит свед-я о разделах, на к-ые может быть разбит жест. диск. Т. о. всего разделов на диске может быть 4.

Разделы могут быть: 1. Первичным-может занимать только один лог. диск; 2. Расширенный-может быть разбит на произвольное кол-во лог. дисков. Каждый раздел может быть активным, но только один из 4-х. Для Windows и Ms-dos доступны только 2 раздела из 4-х. С активного диска происходит загрузка системы.

Структура разделов:

MBR

BR

FAT

RD

DA

Табл. лог. дисков

BR

FAT

RD

DA

Табл. лог. дисков

BR

FAT

RD

DA

Загрузка ОС: считывается содержимое MBR-определяется раздел, к-ый явл-ся активным, считывает загруз. системы. ОС обращается к актив. разделу и загружается система с актив раздела. Менеджер загрузки меняет глав. загр. запись, помещает там указатель на самого себя, передается управление менеджеру. Можно назначить люб. из акт. разделов. Т. о. процесс загрузки сост. из:1.работы глав. загр-ой записи, передающей упр-ие актив. разделу или менеджеру.2.загрузка выбран

Дисциплина «Программирование на ЯВУ »

3. Двумерный массив A(20,10) заполняется случайными целыми числами. В массив В(10) записываются суммы по столбцам массива А.

#include<stdio. h>

#include<stdlib. h>

#include<conio. h>

void main()

{

clrscr();

randomize();

int A[20][10]={0};

int B[20]={0};

int I, J;

printf("Massiv A(20,10): ");

for (I=0; I<20; I++)

{

printf("\n");

for (J=0; J<10; J++)

{

A[I][J]=random(90)+10;

printf("%i ",A[I][J]);

}

}

for (I=0; I<10; I++)

for (J=0; J<20; J++)

B[I]+=A[J][I];

printf("\nMassiv B(10):\n");

for (I=0; I<10; I++)

printf("%i ",B[I]);

getch();

}
БИЛЕТ №6

Дисциплина «ООП»

1.  Конструкторы и деструкторы. Наследование в С++

Констр-ры и дестр-ры предст-ют соб. спец-ные методы класса, к-рые вызываются автоматически соотв-но при создании и уничтож. объектов класса.

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

Дестр-ры. для разрушения параметров класса, т. е. для освобождения опер. памяти. Имя дестр-ра совпадает с именем класса, в начале к-рого стоит символ «~» - (префикс тильда). Класс м. иметь только один дестр-р или не иметь ни одного. Дестр-р вызывается неявно, автоматически, как только объект класса уничтожается.

10. Наследование в С++

Наследование – это один из механизмов объектно-ориентированного программирования. стоит сказать, что в C++ есть некоторые особенности в возможностях этого механизма.

При помощи этого механизма строится иерархия классов. Но стоит с осторожностью оперировать им.

В C++ наследование:

Открытое (public) наследование. Все члены базового класса становятся членами класса-наследника (как интерфейс, так и реализация).

Закрытое (private). все члены с модификатором public наследуются с модификатором private.

Защищенное (protected) наследование – очень редко встречающийся на практике вид наследования. При protected-наследовании все члены с модификатором public наследуются с модификатором protected (т. е. все открытые члены базового класса становятся защищенными членами класса-наследника).

Дисциплина “Архитектура вычислительных систем и сетей”

2.  Классификация вычислительных систем по Флинну.

В 1966 году М. Флинном (Flynn) был предложен чрезвычайно удобный подход к классификации архитектур вычислительных систем. В основу было положено понятие потока, под которым понимается последовательность элементов, команд или данных, обрабатываемая процессором. SISD, SIMD, MISD, MIMD.

1) SISD -охватывает все однопроцессорные и одномашинные варианты систем. Все ЭВМ с классич-ой арх-рой попадают в этот класс. Здесь параллельность обеспечивается путем совмещения выполнения действий отд-ми блоками АЛ устр-в, а также параллельной работой устр-в ввода/вывода инф-ции и процессора.

2) Конвейерная векторная обработка.(MISD – множественный поток команд при одиночном потоке данных). Основу конвейерной обработки сост-ет раздельное выполнение некот-ой операции в неск-ко этапов с передачей дан-х от одного этапа к следующему. Произв-ть при этом возрастает благодаря тому, что одновременно на различных ступенях конвейера выполняются неск-ко операций. Конвейеризация эффективна только тогда, когда загрузка конвейера близка к полной, а скорость подачи новых операндов соответ-ет max-ной произв-ти конвейера. Главн. принцип вычислений на векторной машине состоит в выполнении некот-ой элементарной операции или их комбинации, к-рые должны повторно применяться к некот-му блоку дан-х. Таким операциям в исход. проге соответ-ют небольшие компактные циклы.

3) Машины типа SIMD. В этом случае ПК имеет N идентичных процессоров, N потоков данных и один поток команд. Кажд. процессор обладает собственной локальной памятью. Процессоры интерпретируют адреса данных либо как локальные адреса собственной памяти, либо как глобальные адреса, модифицированные добавлением локального базового адреса. Процессоры получают команды от одного центрального контроллера команд и работают синхронно, т. е. на кажд. шаге все процессоры выполняют одну и ту же команду над данными из собственной локальной памяти.

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

4) Машины типа MIMD. Машины этого типа имеют N процессоров, независимо исполняющих N потоков команд и обрабатывающих N потоков данных. Кажд. процессор функционирует под управлением собственного потока команд, т. е. одновременно могут выполняться неск-ко программ.

Исходя из организации памяти, различают след-щие типы ||-ных арх-р:

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

б) Компьютеры с общей (разделяемой) памятью. Все процессоры совместно обращаются к общей памяти ч/з шину или иерархию шин.

в) Компьютеры с виртуальной общей (разделяемой) памятью. Общая память как таковая отсут-ет. Кажд. процессор имеет собств. локал. память и м. обращаться к локальной памяти др-х процессоров, используя "глобальный адрес". Если "глоб. адрес" указывает не на локал. память, то доступ к памяти реализуется с пом. сообщений, пересылаемых по коммуникационной сети.

Дисциплина «Операционные системы»

1 Загрузить MS-DOS. Создать системную дискету

2. Перенести на дискету системные файлы.

3. Создать файл A:\config. sys, обеспечивающий выполнение операций:

3.1. Загрузка менеджера расширенной памяти himem. sys.

3.2. Загрузка драйвера emm386.exe с возможностью эмулирования дополнительной памяти.

3.3. Загрузка модулей MS-DOS в верхнюю и старшую память.

4. Оpганизация 20 буфеpов

В сеансе MS-DOS: format a: /s

Copy c:\dos a:\dos

Edit

Пишем текст:

Device=a:\dos\himem. sys

Device=a:\dos\emm386.exe ram

Dos=high, umb

Buffers=20

Сохраняем на диске а: под именем config. sys.

БИЛЕТ №7

Дисциплина «ООП»

1.Виртуальное наследование. Полиморфизм в С++

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

Рассмотрим следующую иерархию классов:

class Animal

{

public:

virtual void eat(); // Метод определяется для данного класса

};

class Mammal : public Animal

{

public:

virtual Color getHairColor();

};

class WingedAnimal : public Animal

{

public:

virtual void flap();

};

class Bat : public Mammal, public WingedAnimal {}; //<--- обратите внимание, что метод eat() не переопределен в Bat

Bat bat;

Что происходит при вызове метода bat. eat()?

В вышеприведенном коде вызов bat. eat() является неоднозначным. Он может относиться как к Bat::WingedAnimal::Animal::eat() так и к Bat::Mammal::Animal::eat(). И у каждого наследника (WingedAnimal, Mammal) метод eat() определен по-своему. Проблема в том, что семантика традиционного множественного наследования не соответствует моделируемой им реальности. Такая ситуация обычно именуется «ромбическое наследование» и представляет из себя проблему, которую призвано решить виртуальное наследование.

]Представление класса

Решение

Мы можем переопределить наши классы следующим образом:

class Animal

{

public:

virtual void eat();

};

class Mammal : public virtual Animal // <--- обратите внимание на ключевое слово virtual

{

public:

virtual Color getHairColor();

};

class WingedAnimal : public virtual Animal // <--- обратите внимание на ключевое слово virtual

{

public:

virtual void flap();

};

class Bat : public Mammal, public WingedAnimal {};

Теперь, часть Animal объекта класса Bat::WingedAnimal та же самая, что и часть Animal, которая используется в Bat::Mammal, и можно сказать, что Bat имеет в своем представлении только одну часть Animal и вызов Bat::eat() становится однозначным.

Виртуальное наследование реализуется через добавление указателей на виртуальную таблицу в классы Mammal и WingedAnimal.

Дисциплина “Архитектура вычислительных систем и сетей”

2. Многомашинные вычислительные системы

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

Работа любой ММС определяется двумя главными компонентами: высокоскоростным механизмом связи процессоров и системным программным обеспечением. В состав средств связи входят программные модули, которые занимаются распределением вычислительной нагрузки, синхронизацией вычислений и реконфигурацией системы. Если происходит отказ одного из компьютеров комплекса, его задачи могут быть автоматически переназначены и выполнены на другом компе. Если в состав ММС входят неск-ко контроллеров внешних устройств, то в случае отказа одного из них, другие контроллеры автоматически подхватывают его работу. Т. о., достигается высокая отказоустойчивость комплекса в целом.

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

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

Дисциплина «Операционные системы»

3. Загрузить DISKEDIT. Определить адрес (в координатах сектор:смещение)

1. Атрибута директории A:\C

2. Первого байта имени файла A:\C\amap. zrc

3. Первого байта первого из дескрипторов, содержащих длинное имя файла A:\K\.txt

4. Определить № начального кластера файла A:\K\.txt

путь C:\SYS\NT7

Объект®дискА

1)Объект ®Каталог®С

На точку-F2 (где 10-сектор, смещение);

2) Наводим курсор на amap-F2 (смотрим сектор, смещение первого байта имени);

3) Объект ®Каталог®К

подводим к длинному имени®F2(сектор, смещение рожи);

4)F4-назад, на короткое имя-смотрим номер кластера.

БИЛЕТ №8

Дисциплина «ООП»

1. Дружественные функции и классы. Шаблонные функции. Шаблонные классы (параметризованные классы)

В отличие от перегрузки ф-ции, при к-рой для каждой сигнатуры создаётся своя ф-ция, шаблон семейства ф-ций определяется один раз, но это описание содержит параметры.

template <class T>T имя ф-ции (Т арг1, Т арг2, ... Т аргn)

<тело функции>

Каждый формальный параметр обозначается ключевым словом class, за к-рым следует имя параметра (идентиф-тор).

template <class Т>Т max (Т x, Т y) {return(x>y)?x:y;}

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

15. Шаблонные классы (параметризованные классы)

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

template<class T> class ИМЯ

{

<описание класса>

}

В списке параметров шаблона могут присутствовать как параметры, определяющие тип, так и параметры, для к-рых этот тип фиксирован.

Дисциплина “СУБД”

2. Модели данных. Реляционные базы данных. Отношение. Свойства отношения.

Ядром любой БД явл-ся модель дан-х. Модель дан-х предст-ет соб. множ-во структур дан-х, ограничений целостности и операций манипулирования данными. С пом. модели дан-х м. б. представлены объекты предметной области и взаимосвязи м/у ними.

1. Иерархическая модель. Некоторая древовидная стр-ра (каталоги), где каждому узлу соответ-ет один сегмент – поименованная запись, к-рая сод-жит набор полей данных. Для такой модели хар-но отношение «один ко многим» 1:N, других отношений нет. Одной из наиболее популярных иерархических СУБД была Information Management System (IMS), FOCUS, ОКА, МИРИС.

2. Сетевая модель. Для каждого сегмента может сущ-ть неск-ко вышестоящих и неск-ко подчиненных, а, след-но, хар-ны отношения: «многие ко многим» N:N. При этом направление и хар-р связи не явл-ся очевидным, и поэтому использ-ся система указателей для определения сегмента и связи м/у ними. IDMS, Total и Adabas.

«+»: эффективное использ-е памяти, нет жесткой стр-ры, повышается оперативность работы. «-»: высокая сложность модели, невозмож-ть произвольного установления набора связи.

3. Реляционная основывается на понятии отношение. Отнош-е – это таблица, в к-рой наглядно хран-ся свед-ния об объектах. В таблице есть строки и столбцы. Строка – это кортеж, а столбец – атрибут. Если св-ва объектов не укладываются в одну табл., то созд-ется неск-ко таблиц, м/у к-рыми устанавливается связь м/у табл.

«+»: простота и понятность, таблицы хранятся в отд-х файлах, к-рыми м. оперировать.

«-»: отсут-вие стандарт-х средств идентиф-ции отд-х записей, сложность описания иерарх-х и сетевых связей. FoxPro, Dbase, Clipper, Paradox.

4. Постреляционная. Есть одно св-во – неделимость д-х. В ячейках неделимые данные. Фамилия сост-т из букв, если разделить на ячейки, то потеряем смысл (св-во) объекта, след-но, св-во неделимость данных. Значение ячеек может сущ-вовать из подзначений, из ссылок на др. значение, след-но, св-во неделимости не сущ-ет. Ограничение на кол-во полей нет. «+»: вместо многих таблиц создаем одну, для обощения и наглядного представления инфы. «-»: сложность обеспечение целостности и непротиворечивости данных. UNIVERS

5. Многомерная модель – вместо таблиц использ-ся многокубовые таблицы (многомерные гиперкубы) (oracle, orion, express) «+»: эффективность обработки больших объемов данных, связанных с временем. «-»: если использ-ся эта модель для обычных операций (для хранения инфы), то возникает множ-во проблем.

6. Объектно-ориентированная модель. Идея – повышение уровня абстракции. Мы оперируем объектами, к-рые сод-ат данные, св-ва и методы. По стр-ре похожа на иерарх-кую, в качестве сегмента выступает объект. Это упрощает работу с этой модель. «+»: возмож-ть отображения инфы о сложности связи. «-»: достаточно высокая сложность, получается отрыв внутреннего представления от внешнего. POET, IRIS.

Основой современных систем, применяющих базы данных, явл-ся реляц-ая модель дан-х. В этой модели дан-е, представляющие инфу о предмет. обл-ти, организованы в виде двухмерных таблиц, называемых отношениями..

Отношение — это таблица. Верхняя строка таблицы-отношения наз-ется заголовком отношения. Термины отнош-е и таб. л обычно употреб-ются как синонимы.

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

Отношения реляц-ой БД обладают след. св-вами:

1.В отношении нет одинаковых кортежей.

2. Кортежи не упорядочены (сверху вниз). Одно и то же отношение м. б. изображено разными таблицами, в к-рых строки идут в различном порядке.

3. Атрибуты не упорядочены (слева направо).

4. Все значения атрибутов атомарны.

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

Дисциплина «Программирование на ЯВУ»

3.Создать структуру состоящую из полей:

Строковые fio, dr.

Целочисленные voz( возраст),kurs(курс), group(группа).

Определить массив anketa типа созданной структуры. Организовать ввод данных с последующим форматированным выводом на экран.

#include<stdio. h>

#include<conio. h>

#include<iostream. h>

struct Struct

{

char Fio[80];

char Dr[20];

int Voz, Kurs, Group;

};

void main()

{

clrscr();

int Num;

printf("Input number of students: (0-Exit): ");

scanf("%i",&Num);

Struct *Anketa = new Struct[Num];

for (int I=1; I<=Num; I++)

{

printf("Student #%i\n",I);

printf("Enter FIO: ");

cin >> Anketa[I].Fio;

printf("Enter DR: ");

cin >> Anketa[I].Dr;

printf("Enter age: ");

cin >> Anketa[I].Voz;

printf("Enter kurs: ");

cin >> Anketa[I].Kurs;

printf("Enter group: ");

cin >> Anketa[I].Group;

clrscr();

}

for (I=1; I<=Num; I++)

{

printf("Anketaudent #%i\n",I);

printf("FIO: %s\n",Anketa[I].Fio);

printf("DR: %s\n",Anketa[I].Dr);

printf("Age: %i\n",Anketa[I].Voz);

printf("Kurs: %i\n",Anketa[I].Kurs);

printf("Group: %i\n",Anketa[I].Group);

printf("Press any key.\n");

getch();

clrscr();

};

delete Anketa;

printf("Press any key to exit.");

getch();

}

БИЛЕТ №9

Дисциплина «Программирование на ЯВУ»

1.  Базовые типы данных в С++. Структуры данных в С++. Операторы присваивания. Циклы, ветвление, выбор в С++

Базовые типы данных в С++. Структуры данных в С++.

Int – целое; shortint – короткое целое; unsigned – беззнаковое(только положит и 0); signed – знаковое; float, double– вещественное; bool – логич. перем. (true или false); char – символьный; void – «пустой»(применяется обычно при описании функций и аргументов).

В С++ реализованы след. структуры: структуры, массивы, перечисления, объединения, классы, списки. Для реализации применяются как статические, так и динам. методы. Строка символов опред. как динам. массив символов. Динам. данные помечаются звездой: char *a. В С++ определен перечисляемый тип, который имеет след синтаксис:

Enum имя

{перечисление;}

Для работы с этим типом необходимо задать перем. после создания этого типа.

В С++ также реализован тип «запись». Для создания простых записей есть спец. Директива struct, которая позволяет создать простые структуры и вложенные структуры, состоящие из простых структур.

Struct имя_стр-ры

{тип поле;

тип поле; }

Для работы со стр-рой необх. описать переем. типа этой стр-ры: var_struct L. Аналогично создаются структуры объединения:

Union имя_объедин

{тип поле1;

тип поле2;}

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

Class имя_класса

{поля;

методы;}

3. Операторы присваивания.

В С++ оператор присваивания выглядит след. обр.:

А = В. Существуют также след. структуры:

S+=5 (аналогична S=S+5 в ТР);

S-=5(вычитание);

S/=5(деление);

S*=5(умножение);

S>>=2(сдвиг вправо);

S<<=2(сдвиг влево).

4. Циклы, ветвление, выбор в С++

1. for (i=1; i<10; i++)

{тело}

2.while(условие)

{тело цикла}

3. do

{тело цикла}

while(условие)

4. if (условие)

{тело цикла}

5. switch(r)

case 1: {серия1; break}

case 2: {серия2; break}

default:{операторы;}

Дисциплина “СУБД”

2. Инструкции DDL и DML. Структура запроса на выборку.

Выражение — это комбинация символов и операторов, которая получает на вход скалярную величину, а на выходе дает другую величину или исполняет какое-то действие. В Transact-SQL выражения делятся на 3 типа: DDL, DCL и DML.

DDL (Data Definition Language) — используются для создания объектов в базе данных. Основные представители данного класса: CREATE — создание объектов, ALTER — изменение объектов, DROP — удаление объектов.

DCL (Data Control Language) — предназначены для назначения прав на объекты базы данных. Основные представители данного класса: GRANT — разрешение на объект, DENY — запрет на объект, REVOKE — отмена разрешений и запретов на объект.

DML (Data Manipulation Language) — используются для запросов и изменения данных. Основные представители данного класса: SELECT — выборка данных, INSERT — вставка данных, UPDATE — изменение данных, DELETE — удаление данных.

Пример:

USE TestDatabase

-- Использование DDL

CREATE TABLE TempUsers (UserID int, UserName nvarchar(40), DepartmentID int)

GO

-- Использование DCL

GRANT SELECT ON Users TO public

GO

-- Использование DML

SELECT UserID, UserName + ' ' + UserSurname AS [User Full Name] FROM Users

GO

-- Использование DDL

DROP TABLE TempUsers

GO

Оператор SELECT (выбрать) языка SQL явл-ся самым важным и самым часто используемым оператором. Он предназначен для выборки инфы из таблиц БД. Упрощенный синтаксис оператора SELECT выглядит след. обр.

SELECT [DISTINCT|ALL] <список атрибутов>

FROM <список таблиц>

[WHERE условие выбора]

[GROUP BY col]

[HAVING условие]

[UNION запрос]

[ORDER BY order_list];

Ключ. сл. SELECT сообщает БД, что данное предложение явл-ся запросом на извлечение инфы. После слова SELECT ч/з запятую перечисляются наименования полей (список атрибутов), содержимое к-рых запрашивается. Обязательным ключ-м сл. в предложении-запросе SELECT явл-ся слово FROM (из). Оно сопровождается пробелом и затем именем таблицы используемой в качестве источника инфы. Любой SQL-запрос должен заканчиваться символом «;» (точка с запятой). Например:

SELECT NAME, SURNAME

FROM STUDENT;

Дисциплина «ООП»

3.Создать 3 класса с использованием множественного наследования для решения квадратного уравнения в С++

БИЛЕТ №10

Дисциплина «Программирование на ЯВУ»

1.  Функции, возвращающие и не возвращающие значения.

Структура ф-ии:

Тип_ф-ии имя_ф-ии (тип_арг арг)

{ тело функции }

Ф-ии С++ делятся на 2 группы: возвр. знач.(аналог конструкции function в ТР) и ф-ии не возвр. знач.( аналог конструкции procedure в ТР).

Для возврата значения вызвавшей ф-ии исп. оператор return.

int sum(int a, int b)

{int result;

result= a+b;

return(result); }

В данном случае слово int, появляющееся перед именем ф-ии, указывает тип возвращаемого значения ф-ии. Когда прога встречает оператор return, она возвращает заданное значение и завершает выполнение ф-ии, возвращая управление вызвавшей программе.

Если ф-ия не возвр. значение, необходимо перед именем ф-ии поставить тип void.

void sum(int a, int b)

Если в ф-ии не возвр. встречается опреатор return; это означает, что оператор просто завершает выполнение ф-и. Если операторы появляются в ф-ии после оператора return они не будут выполняться.

Дисциплина “СУБД”

2. Подзапросы. Формы и типы. Порядок выполнения.

SQL позволяет использовать одни запросы внутри др-х запросов, т. е. вкладывать запросы друг в друга. Вложенный подзапрос - это подзапрос, заключенный в круглые скобки и вложенный в WHERE фразу предложения SELECT или других предложений, использующих WHERE фразу. Предположим, известна фамилия студента («Петров»), но неизвестно значение поля STUDENT_ID для него. Чтобы извлечь данные обо всех оценках этого студента, можно записать след. запрос:

SELECT *

FROM EXAM_MARKS

WHERE STUDENT_ID =

(SELECT STUDENT_ID

FROM STUDENT SURNAME = 'Петров');

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

Сущ-ют простые и коррелированные вложенные подзапросы. Они включаются в WHERE фразу с пом. условий IN, EXISTS или одного из условий сравнения ( = | <> | < | <= | > | >= ). Простые вложенные подзапросы обрабатываются системой "снизу вверх". Первым обрабатывается вложенный подзапрос самого нижнего ур-я. Множ-во значений, полученное в рез-те его выполнения, использ-ся при реализации подзапроса более высокого ур-ня и т. д.

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

Дисциплина «ООП»

3. Создать 3 класса с использованием простого наследования с полиморфным методом print(), который печатает значения полей классов.

#include <stdio. h>

#include <stdlib. h>

#include <conio. h>

#include <math. h>

#include <iostream. h>

class C1

{

public:

int a;

void Print();

C1() {a=20;}

};

class C2:public C1

{

private:

int c;

public:

float b;

void Print();

C2() {c=25; b=5,6;}

};

class C3:public C2

{

private:

int d;

public:

void Print();

C3() {d=87;}

};

void C1::Print()

{

printf("Print() of Class #1\n");

cout<<"pole classa1 a="<<a<<endl;

};

void C2::Print()

{

printf("\nPrint() of Class #2\n");

cout <<"pole private c="<<c<<endl;

cout <<"pole pablic b="<<b<<endl;

};

void C3::Print()

{

printf("\nPrint() of Class #3\n");

cout <<"pole private d="<<d<<endl;

};

void main()

{

clrscr();

C3 Tmp3;

C2 Tmp2;

C1 Tmp1;

Tmp1.Print();

Tmp2.Print();

Tmp3.Print();

getch();

}

БИЛЕТ №11

Дисциплина «Программирование на ЯВУ»

1.  Запись данных в файл. Алгоритм записи данных в файл. Чтение данных из файлов.

Дисциплина “СУБД”

2. Инструкции по созданию, модификации и удаления баз данных и таблиц

Создание объектов БД осущ-ется с пом. операторов языка определения дан-х (DDL). Таблицы БД создаются с пом. команды CREATE TABLE. Эта команда создает пустую таблицу, т. е. таблицу, не имеющую строк. Значения в эту таблицу вводятся с пом. команды INSERT. Команда CREATE TABLE определяет имя таблицы и множ-во поименованных столбцов в указанном порядке. Для кажд. столбца д. б. определен тип и размер. Каждая создаваемая таблица должна иметь, по крайней мере, один столбец. Синтаксис команды CREATE TABLE имеет след. вид:

CREATE TABLE <table-name >

( <column name > <data type>[(<size>)],

<column name > <data type> [(<size>)] ... );

Порядок столбцов в таблице опред-ется порядком, в к-ром они указаны. Типы дан-х: bigint, int, smallint, bit, decimal, numeric, money, float, real, datetime, char, varchar, text, и т. п.

Для модификации стр-ры и параметров сущ-вующей табл. использ-ся команда ALTER TABLE. Синтаксис команды для добавления столбцов в таблицу имеет вид:

ALTER TABLE <table name> ADD <column name>

<data type> <size>;

По этой команде для сущ-ющих в таблице строк добавляется новый столбец, в к-рый заносится NULL-значение.

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

ALTER TABLE < table name > MODIFY < column name >

<data type> <size>;

Чтобы удалить сущ-вующую таблицу, необх-мо предварительно удалить все данные из этой таблицы, т. е. сделать ее пустой. Таблица, имеющая строки, не м. б. удалена. Синтаксис команды, осущ-ющей удаление пустой таблицы, имеет след. вид: DROP TABLE < table name >;

insert into <таблица> [(столбец1, столбец2, ..)] values (зн1, зн2)

update <табл> set столбец1=зн1, столб2=зн2, ... [where <условие>] – без where меняются все записи.

delete from <табл> [where <условие>] - без where все записи удаляются

Дисциплина «ООП»

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

#include <stdio. h>

#include <stdlib. h>

#include <conio. h>

#include <iostream. h>

template <class T> class Vector

{

T *Data;

int Size;

public: void Fill();

void Print();

Vector(int);

~Vector() {delete[] Data;}

T& operator[](int i) {return Data[i];}

}; //выделение осн-ых операторов класса

template <class T> Vector<T>::Vector(int N)

{

Data = new T[N];

Size = N;

};//выд-ь память для n зн-й, Т-любой тип шаблона

template <class T> void Vector<T>::Fill()

{

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

Data[i]=random(100)+.05;

};

template <class T> void Vector<T>::Print()

{

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

cout << Data[i] << " "; cout << "\n";

};

void main()

{

clrscr();

randomize();

Vector<int> I(10);

Vector<float> F(10);

Vector<char> C(10);

I. Fill();

I. Print();

F. Fill();

F. Print();

C. Fill();

C. Print();

getch();

}

БИЛЕТ №12

Дисциплина «Программирование на ЯВУ»

1.  Строки. Функции работы со строками.(С++)

В С++ нет типа string как в ТР или Delphi, строка рассматривается как массив символов. Он объявляется статически, (т. е. с заранее определенным кол-вом символов) либо динам.: char *a. В С++ имеется богатая библиотека для работы со строками: string. h.

Функции работы со строками:

Strcpy(S1,S2) – копирует строку S2 в S1

Strcat(S1,S2) – присоединяет строку S2 к строке S1

Strchr(‘c’,S) – возвращает позицию первого вхождения символа ‘c’ в строку S.

Strlen(S) – возвращает длину строки

Strncat(n,S1,S2) – присоединяет заданное кол-во символов строки S2 в строку S1.

Strncpy(n,S1,S2) - копирует заданное кол-во символов строки S2 в строку S1.

Strstr(S1,S2) - отыскивает место первого вхождения строки S2 в строку S1

StrUpr(S) – преобразует строчные символы в заглавные

StrLwr(S) – преобразует заглавные символы в строчные

Isalpha(S) – возвращает true, если символ явл. буквой

Isalnum(c) – возвр. true, если символ явл. буквой или цифрой

Iscnctrl(c) - возвр. true, если символ явл. управляющим символом.

Isdigit(с) – возвр. true, если символ явл. десятичной цифрой

Isgraph(c) - возвр. true, если символ явл. печатаемым символом (код 33 – 126)

Isspace(c) - возвр. true, если нажат пробел

Isupper(c) - возвр. true, если прописная буква

Isascii(c) - возвр. true, если код символа <=127

Toascii(c) - возвр. код символа, если он >127

Totower(c) – преобразует прописную букву в строчную

Дисциплина “СУБД”

2. Нормальные формы баз данных. Проектирование баз данных методом нормальных форм.

Процесс проектирования БД с использованием метода нормальных форм является итерационным и заключается в последовательном переводе отношений из первой нормальной формы в нормальные формы более высокого порядка по определенным правилам.

Выделяют следующую последовательность нормальных форм:

• первая нормальная форма (1НФ);

• вторая нормальная форма (2НФ);

• третья нормальная форма (ЗНФ);

• нормальная форма Бойса-Кодда (БКНФ);

• четвертая нормальная форма (4НФ);

• пятая нормальная форма (5НФ).

1. Отношение находится в 1НФ, если все его атрибуты являются простыми

Основной операцией метода является операция проекции.

Эта частичная зависимость от ключа приводит к следующему:

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

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

Для устранения частичной зависимости и перевода отношения в 2НФ необходимо, используя операцию проекции, разложить его на несколько отношений следующим образом:

• построить проекцию без атрибутов, находящихся в частичной функциональной зависимости от первичного ключа;

• построить проекции на части составного первичного ключа и атрибуты, зависящие от этих частей. В результате получим два отношения R1 и R2 в 2НФ.

3. Отношение находится в 3НФ, если оно находится в 2НФ и каждый неключевой атрибут нетранзетивно зависит от первичного ключа.

4. Отношение находится в том случае, когда существует многозначная зависимость А-> В, а все остальные атрибуты отношения функционально зависят от А.

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

Дисциплина «Операционные системы»

3. Создать файл A:\autoexec. bat, обеспечивающий выполнение операций:

1. Загрузка русификатора . (Путь доступа

C:\SYS\DRV).

2. Загрузка NC. (Путь доступа C:\SYS\NC3).

C:\sys\drv\

C:\sys\nc3\nc. exe

Сохраняем на диске а: под именем autoexec. bat.

Все!!! Нажимаем ctrl+alt+del (загружаем с дискетки).

БИЛЕТ №13

Дисциплина «Программирование на ЯВУ»

1.  Управляющие символы в командах printf, scanf.

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

Функция printf() имеет прототип в файле stdio. h
int printf(char *управляющая строка, ...);

В случае успеха функция printf() возвращает число выведенных символов.

Спецификаторы формата:

Символ

%d

целое десятичное число

%i

целое десятичное число

%e

десятичное число в виде x. xx e+xx

%E

десятичное число в виде x. xx E+xx

%f

десятичное число с плавающей запятой xx. xxxx

%F

десятичное число с плавающей запятой xx. xxxx

%g

%f или %e, что короче

%G

%F или %E, что короче

%o

восьмеричное число

%s

строка символов

%u

беззнаковое десятичное число

%x

шестнадцатеричное число

%X

шестнадцатеричное число

%%

символ %

Кроме того, к командам формата могут быть применены модификаторы l и h.

%ld

печать long int

%hu

печать short unsigned

%Lf

печать long double

В спецификаторе формата, после символа % может быть указана точность (число цифр после запятой). Точность задаётся следующим образом: %.n<код формата>. Где n - число цифр после запятой

Кроме спецификаторов формата данных в управляющей строке могут находиться управляющие символы:

\n

Новая строка, перевод строки

\t

Горизонтальная табуляция

\"

Двойная кавычка

\'

Апостроф

\\

Обратная косая черта

\0

Нулевой символ, нулевой байт

\?

Знак вопроса

Функция стандартного ввода scanf()

Функция scanf() - функция форматированного ввода. С её помощью вы можете вводить данные со стандартного устройства ввода (клавиатуры). Вводимыми данными могут быть целые числа, числа с плавающей запятой, символы, строки и указатели.

Для ввода данных с помощью функции scanf(), ей в качестве параметров нужно передавать адреса переменных, а не сами переменные. Чтобы получить адрес переменной, нужно поставить перед именем переменной знак &(амперсанд). Знак & означает взятие адреса.

ДисциплинаАрхитектура вычислительных систем и сетей

2.  Многопроцессорные вычислительные системы

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

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

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

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

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

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

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

Дисциплина “СУБД”

3.  Загрузить SQL-Server. Загрузить Enterprise Manager. Создать базу данных BDE. В созданную базу импортировать из файла C:\RP\ete. xls таблицу tc. Создать хранимую процедуру pre, выполняющую удаление одной строки. Потенциальный ключ таблицы содержит поле INN (ИНН поставщика). Для идентификации строки предусмотреть наличие в процедуре необходимого параметра.

БИЛЕТ №14

Дисциплина «Программирование на ЯВУ»

1.Функции преобразования типов. Математические функции С++.

Функции преобразования типов в С++ хранятся в библиотеке stdlib. h.

Atof(c) – преобр. строку цифр в веществ. число

Atoi(c) – преобр. строку цифр в число целого типа

Atol(c) - преобр. строку цифр в число типа long

Ecvt(c) – преобр. число с плав. точкой типа double в строку символов, десятичная точка и знак числа не вкл. в строку, они возвр. отдельно.

Fcvt(c) – аналогично, число типа float

Itoa(c) – преобр. число в строку символов

Ltoa(c) – преобр. число типа long в строку символов

Strtod(c) – преобр. строку символов в число плавающей точкой типа double

Strtol(c) – преобр. строку символов в число типа long.

Strtoul(c) – преобр. строку символов в число типа unsigned long

Ultoa(c) – преобр. число типа unsigned long в строку символов

Математические функции С++ хранятся в библиотеке math. h.

Abs(x) – модуль, где х – целое

Fabs(x) – модуль, где х – веществ.

Atan(x) - арктангенс

Sin(x) cos(x) – синус, косинус

Sinh(x) cosh(x) - синус, косинус гиперболические

Tan(x) tanh(x) – тангенс, тангенс гиперболический

Exp(x) – е^х

Log(x) Log10(x) – натуральный логарифм(основание е), десятичный логарифм

Sqrt(x) - корень

Pow(x,y) – x^y

X wod Y – остаток от деления x на y

Floor(x) – ближайшее целое <=x

Ceil(x) – ближайшее целое >=x

В языке C++ существует четыре разновидности приведения типа. Все четыре типа записываются в виде

xxx_cast<type_to>(expression_from)

Например:

y = static_cast<signed short>(65534); // будет присвоено -2

Громоздкие ключевые слова являются напоминанием программисту, что приведение типа чревато проблемами.

static_cast

Назначение: Приведение типа по обычным правилам, когда компилятор отказывается привести его автоматически.

string s = static_cast<string>("qqq"); // аналогично string s = string("qqq");

string s = (string)"qqq"; // синтаксис Си тоже работает

dynamic_cast

Назначение: Проводит преобразование типа, предварительно убедившись (с помощью RTTI), что объект expression_from в действительности является объектом типа type_to. Если нет: для указателей возвращает NULL, для ссылок устанавливает аварийную ситуацию std::bad_cast.

Ограничения на expression_from: выражение должно быть ссылкой или указателем на объект с хотя бы одной виртуальной функцией.

Ограничения на type_to: ссылка или указатель на дочерний по отношению к expression_from тип.

reinterpret_cast

Назначение: Участок памяти рассматривается как объект другого типа.

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

Ограничения на type_to: для порядкового типа или указателя — порядковый тип или указатель. Для ссылки — ссылка.

ДисциплинаАрхитектура вычислительных систем и сетей”

2.  Системы с конвейерной обработкой данных

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

- система выполняет повторяющуюся операцию;

- эта операция может быть разделена на независимые части, степень перекрытия которых невелика;

- трудоемкость подопераций примерно одинакова.  

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

Конвейерная вычислительная система(MISD-машина).

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

Конвейерная обработка широко use-ется в современных МПрах

Дисциплина “СУБД”

3. Загрузить SQL-Server. Загрузить Enterprise Manager. Создать базу данных BDG. В созданную базу импортировать из файла C:\RP\etg. xls таблицу tb. Создать хранимую процедуру pfg, выполняющую обновление значение поля N_DOK (№ документа) одной строки. Потенциальный ключ таблицы содержит поле KOD_DOK (Код документа). Для идентификации строки предусмотреть наличие в процедуре необходимого параметра.

CREATE PROCEDURE Pfg(@kod_dok char(8)) AS

Begin

UPDATE tb SET N_DOK = N_DOK + 5

WHERE KOD_DOK = @kod_dok

end

GO

exec pfg

БИЛЕТ №15

Дисциплина «Программирование на ЯВУ»

1.  Перегрузка функций.

Структура ф-ии:

Тип_ф-ии имя_ф-ии (тип_арг арг)

{ тело функции

}

При определении ф-ии нужно указать тип возвращаемого ф-ей значения, а также кол-во параметров и тип каждого из них. Чтобы избежать дублирования ф-ий, С++ позволяет определять несколько ф-ий с одним и тем же именем. В процессе компиляции С++ принимает во внимание кол-во и тип аргументов, используемых каждой ф-ей, а затем вызывает именно требуемую ф-ию. Предоставление компилятору выбора среди неск. Ф-ий наз-ся перегрузкой.

include <iostream. h>

int sum(int a, int b)

{ return(a+b); }

int sum(int a, int b, int c)

{ return(a+b+c); }

void main(void)

{ cout<<”23+45=”<<sum(23,45)<<endl;

cout<<”23+45+56=”<<sum(23,45,56)<<endl; }

ДисциплинаАрхитектура вычислительных систем и сетей

2.  Матричные вычислительные системы

Наиболее распространенными из систем, класса: один поток команд - множество потоков данных (SIМD), являются матричные системы, которые лучше всего приспособлены для решения задач, характеризующихся параллелизмом независимых объектов или данных. Организация систем подобного типа на первый взгляд достаточно проста. Они имеют общее управляющее устройство, генерирующее поток команд и большое число процессорных элементов, работающих параллельно и обрабатывающих каждая свой поток данных. Таким образом, производительность системы оказывается равной сумме производительностей всех процессорных элементов. Однако на практике, чтобы обеспечить достаточную эффективность системы при решении широкого круга задач необходимо организовать связи между процессорными элементами с тем, чтобы наиболее полно загрузить их работой. Именно характер связей между процессорными элементами и определяет разные свойства системы. Одним из первых матричных процессоров был SОLОМОN.

Рис.4.5. Структура матричной вычислительной системы "SOLOMON"

Система SОLOМОN содержит 1024 процессорных элемента, соединены в виде матрицы: 32х32. Каждый процессорный элемент матрицы включает в себя процессор, обеспечивающий выполнение последовательных поразрядных арифметических и логических операций, а также оперативное ЗУ, емкостью 16 Кбайт. Длина слова - переменная от 1 до 128 разрядов. Разрядность слов устанавливается программно. По каналам связи от устройства управления передаются команды и общие константы. В процессорном элементе используется, так называемая, много модальная логика, которая позволяет каждому процессорному элементу выполнять или не выполнять общую операцию в зависимости от значений обрабатываемых данных. В каждый момент все активные процессорные элементы выполняют одну и ту же операцию над данными, хранящимися в собственной памяти и имеющими один и тот же адрес.

Дисциплина “СУБД”

3. Загрузить SQL-Server. Загрузить Enterprise Manager. Создать базу данных BDK. В созданную базу импортировать из файла C:\RP\etk. xls таблицы ta и tb. Потенциальный ключ для таблицы tb - поле KOD_DOK (Код документа). Внешний ключ для таблицы ta - поле KOD_DOK (Код документа). Создать представление vk, которое содержит поля NAIM (Наименование), C_ED (Цена за единицу при покупке) из таблицы ta, INN (ИНН поставщика) из таблицы tb. Представление должно содержать сведения о товарах, приобретенных у поставщика, ИНН которого .