- •Дисциплина «Системное программирование» Теоретические вопросы
- •Операционные системы: история
- •Системные вызовы управления терминалом
- •Операционные системы: назначение и основные функции
- •Управление процессами в операционных системах
- •Конкуренция процессов
- •Базовые примитивы доступа к файлам
- •Файлы с несколькими именами
- •Каталоги, файловые системы и специальные файлы
- •Базовые примитивы для работы с процессами.
- •Обработка сигналов в unix Нормальное и аварийное завершение
- •Примитивы межпроцессного взаимодействия: программные каналы.
- •Дополнительные средства межпроцессного взаимодействия в unix.
- •14. Напишите аналог команды ls –l
- •15. Напишите «часы», выдающие текущее время каждые 3 секунды
- •16. Напишите программу, которая ожидает ввода с клавиатуры в течение 10 секунд.Если ничего не введено – печатает «Нет ввода», иначе – «Спасибо».
- •17. Используя файловую систему /proc, получите информацию об открытых всеми процессами файлах
- •18. Напишите функцию mysleep(n), задерживающую выполнение программы на n секунд.
- •19. Составьте программу вывода строк файла в инверсном отображении
- •20. Создайте аналог команды df
- •21. Напишите программу создания и записи образов дискет
- •22. Напишите функции включения и выключения режима эхо-отображения набираемых на клавиатуре символов
- •23. Напишите программу для запуска команды ls в качестве дочернего процесса
- •24. Создайте два процесса, взаимодействующих через программный канал.
- •25.Создайте аналог команды sync
- •Понятие алгоритма. Свойства, способы задания, основные структуры алгоритма. Понятие о структурном подходе к разработке алгоритма.
- •Алгоритмическая структура цикл. Типы циклов. Способы управления циклами. Итерационные циклы. Простые и вложенные циклы.
- •Типы данных в языке Паскаль. Действия над ними. Стандартные типы данных и типы пользователя.
- •Операторы циклов в языке Паскаль. Примеры использования.
- •Цикл с предусловием
- •5.Условный оператор и оператор выбора вариантов в языке Паскаль. Структурная схема. Примеры использования.
- •6 Структурные типы данных. Массивы. Записи, вариантные, вложенные.
- •7.Обработка строковых данных в Паскале. Особенности использования.
- •8.Процедуры и функции в Паскале. Особенности использования.
- •Стандартные файлы и файлы пользователя в Паскале. Типы файлов. Процедуры и функции для работы с файлами.
- •10.Прямая и косвенная рекурсия. Особенности использования.
- •11.Структура языка Паскаль. Структура программ на языке Паскаль.
- •Модульное программирование. Стандартные модули. Назначение и использование.
- •Образцы решений задач
- •1. Написать программу для вычисления функции:
- •2. Сформировать двухмерный массив, состоящий из n X n элементов.
- •5. Задан текст s. Сколько раз в тексте встречается заданное слово (слова разделены пробелами)
- •Дисциплина «Основы баз данных и знаний»
- •1. Архитектура бд. Понятие 3-вой архитектуры бд. Ее преимущества. Внешний уровень. Концептуальный уровень. Внутренний уровень.
- •2. Классификация моделей данных.
- •3. Иерархическая модель. Преимущества и недостатки иерархических структур.
- •4. Сетевая модель данных.
- •5. Реляционная модель данных.
- •6. Нормализация. Пять нормальных форм.
- •7. Физические модели бд.
- •8. Файловые структуры. Файлы прямого доступа. Файлы последовательного доступа.
- •9. Индексные файлы. Индексно-прямые файлы. Индексно-последовательные файлы.
- •10. Распределенные субд. Распределенная обработка данных. Параллельные субд.
- •11. Преимущества и недостатки сурбд.
- •12 Правил Дейта для сурбд.
- •12. Объектно-ориентированные субд. Требования к оосубд.
- •13. Объектно-реляционные субд.
- •14. Структура языка sql.
- •15. Типы данных языка sql.
- •16. Создание схем, бд, таблиц операторами языка sql.
- •17. Индексация в субд. Типы индексов. Создание и удаление индекса операторами языка sql.
- •18. Редактирование данных в таблице бд операторами языка sql.
- •19. Построение запросов операторами языка sql.
- •20. Понятие агрегирующих функций.
- •21. Объединение таблиц. Построение многотабличных запросов операторами языка sql.
- •22. Субд Access. Понятия таблицы, запроса, формы, отчета, макроса.
- •Примеры решений задач
- •Дисциплина «Организация и функционирование эвм»
- •Характеристики жесткого диска.
- •2.Структура дискового сектора. Коды исправления ошибок ecc.
- •3.Назначение коэффициента чередования секторов и коэффициента перекоса головки.
- •4.Сравнительная характеристика интерфейсов жестких дисков.
- •5.Позиционирование магнитной головки. Виды сервосистем.
- •6.Кэширование диска. Виды кэша. (Кэш считывания, кэш со сквозной записью, кэш с отложенной записью и элеваторный кэш).
- •7.Форматирование жесткого диска. Физическое форматирование. Организация разделов на жестком диске.
- •8.Логическое форматирование. Таблица размещения файлов, ее виды.
- •9. Основная оперативная память. Динамическая память, принцип действия запоминающих ячеек. Архитектура динамической памяти, виды сигналов.
- •Типы динамической памяти. Асинхронная, синхронная память.
- •Модули памяти. Организация банков памяти.
- •12.Статическая память, ее разновидности. Кэш-память. Первичный и вторичный кэш.
- •13.Энергонезависимая память, типы памяти. Флэш-память.
- •14.Логическая структура памяти пэвм.
- •15.Сравнительная характеристика видов оптических дисков.
- •16.Сравнительная характеристика видов мониторов.
- •17.Текстовый и графический режим работы монитора. Формирование цвета.
- •18.Сравнительная характеристика видов принтеров.
- •«Теория автоматического управления»
- •Классификация сау
- •Связь входа и выхода. Способы построения моделей. Переходная функция и импульсная характеристика.
- •Типовые звенья линейных систем (усилитель, апериодическое звено, интегрирующее звено, колебательное звено, звено запаздывания).
- •4. Типовые звенья линейных систем (усилитель, апериодическое звено, интегрирующее звено, колебательное звено, звено запаздывания).
- •5. Частотные характеристики. Понятие лачх и лфчх.
- •6. Логарифмические частотные характеристики типовых линейных звеньев.
- •7. Структурные схемы и правила их преобразования.
- •8. Требования к системам автоматического управления (перечислить). Понятие точности управления.
- •9. Частотные критерии устойчивости. Критерий Найквиста.
- •10. Алгебраические критерии устойчивости. Критерий Гурвица. Критерий Вишнеградского.
- •11. Оценка качества системы. Запасы устойчивости.
- •12. Синтез регуляторов. Задачи синтеза
- •13. Синтез линейны непрерывных сау. Коррекция сау
- •14. Разновидности и свойства сау в зависимости от параметров синтеза.
- •15. Приведение задач тау к нулевым начальным условиям. Линеаризация математического описания системы.
- •16. Математические модели. Способы их построения. Линейность и нелиней-ность систем и моделей.
- •17. Преобразование произвольного сигнала линейным звеном
- •18. Интегральные оценки качества переходных процессов: линейные, квадра-тичные.
- •19. Типовые линейные законы регулирования. Виды регуляторов.
- •20. Расчет оптимальных параметров настройки регуляторов.
- •8.Характеристическое уравнение замкнутой системы
ООП
Задачи
1. Вычислите значение функции в зависимости от заданного условия.
#include<stdio.h>
#include <conio>
#include <math.h>
void main ()
{
float a,b,y;
printf("a="); scanf("%f",&a);
printf("b="); scanf("%f",&b);
if (a>b) y=pow(sin(a/b),2)+pow(fabs(a),3); else if (a==b) y=-sqrt(fabs(a))+tan(b); else y=sqrt(pow(a,4)+pow(b,4));
printf("%5.3f",y);
getch();
}
2. Составить программу, которая запрашивает порядковый номер месяца и выводит на экранвремя года.
#include <stdio.h>
#include <conio.h>
voidmain()
{
printf("Введитеномермесяца -");
int mes; scanf("%d",&mes);
switch(mes)
{
case 1,2,12:printf("зима"); break;
case 3,4,5:printf("весна"); break;
case 6,7,8:printf("лето"); break;
case 9,10,11:printf("осень"); break;
default:printf("некорректный ввод!!!");
}
getch();
}
3. Вычислить произведение ряда
#include<stdio.h>
#include <conio>
#include <math.h>
void main ()
{
float x,y=1; int n;
printf("x="); scanf("%f",&x);
for (n=2;n<=5;n++)// переменная I изменяется от 2 до 5 с шагом 1
y*=exp(-x)*log(x)*tan(x);
printf("%5.10f",y);
getch();
}
4. Вычислить таблицу значений функций для значений аргумента x, который изменяется от xn до xk с шагом dx
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
{
float xn,xk,dx,x,y;
printf("xn="); scanf("%f",&xn);
printf("xk="); scanf("%f",&xk);
printf("dx="); scanf("%f",&dx);
x=xn; //присваиваем переменной x начальное значение
while (x<=xk)
{
y=pow(tan(x/2),2)*exp(-2*x)*log(fabs(x));
printf("x=%1.1f y=%f\n",x,y);
x+=dx; //значение x возрастает на величину шага
}
getch();
}
5. Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон от -20 до 10, конец серии – ввод нуля). После окончания ввода программа должна вывести количество положительных и четных чисел.
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
{
int x,k;
do
{ printf("x="); scanf("%d",&x);
if (x<=10 && x>0 && x%2==0) k++;
}
while (x!=0);
printf("k=%d",k);
getch();
}
6. Сформировать одномерный массив, состоящий из N целочисленных элементов. После чего найти произведение всех элементов массива, удовлетворяющих условию c<a[I]<d
#include <stdio.h>
#include <conio.h>
void main()
{ const n=7;
int i,c,d,k=0,pr=1;
printf("c="); scanf("%d",&c);
printf("d="); scanf("%d",&d);
int a[n];
for(i=1;i<=n;i++)
{ printf("a[%d]=",i); scanf("%d",&a[i]);
if (a[i]>c && a[i]<d) {k++; pr*=a[i];}
}
if (k==0) printf("чисел, удовлетворяющих условию не было!");
else printf("pr=%d",pr);
getch();
}
7. Сформировать одномерный массив, состоящий из N целочисленных элементов. После чего: найти количество четных и количество нечетных элементов в массиве.
#include <stdio.h>
#include <conio.h>
void main()
{ const n=7;
int i,ch=0,nch=0;
int a[n];
for(i=1;i<=n;i++)
{ printf("a[%d]=",i); scanf("%d",&a[i]);
if (a[i]%2==0) ch++; else nch++;
}
printf("ch=%d nch=%d",ch,nch);
getch();
}
8. Сформировать двухмерный массив, состоящий из N x N элементов (заполнить случайными числами в диапазоне от 10 до 100). После чего: найти сумму элементов, лежащих выше главной диагонали.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{ const n=7;
int i,j,sum=0;
int a[n][n];
randomize();
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=10+random(91);
printf("%5d",a[i][j]);
}
printf("\n"); //переход на другую строку
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if (j>i) sum+=a[i][j];
printf("sum=%d",sum);
getch();
}
9. Сформировать двухмерный массив, состоящий из N x N элементов (заполнить случайными числами в диапазоне от 10 до 100). После чего: найти номер столбца, в котором расположен минимальный элемент матрицы.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{ const n=7;
int i,j,k=0,min;
int a[n][n];
randomize();
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=10+random(91);
printf("%5d",a[i][j]);
}
printf("\n"); //переход на другую строку
}
min=a[1][1];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if (min>a[i][j])
{min=a[i][j]; k=j;}
printf("min=%d k=%d\n",min,k);
getch();
}
Дисциплина «Системное программирование» Теоретические вопросы
Операционные системы: история
Первый период (1945 -1955)
В середине 40-х были созданы первые ламповые вычислительные устройства. Это была научно-исследовательская работа в области вычислительной техники, а не использование компьютеров в качестве инструмента решения каких-либо практических задач из других прикладных областей. Программирование осуществлялось исключительно на машинном языке.
Второй период (1955 - 1965).
С середины 50-х годов начался новый период в развитии вычислительной техники, связанный с появлением новой технической базы - полупроводниковых элементов. Компьютеры второго поколения стали более надежными, теперь они смогли непрерывно работать настолько долго, чтобы на них можно было возложить выполнение действительно практически важных задач.
Появились первые алгоритмические языки, первые системные программы - компиляторы. Появились первые системы пакетной обработки, которые просто автоматизировали запуск одной программ за другой и тем самым увеличивали коэффициент загрузки процессора. В ходе реализации систем пакетной обработки был разработан формализованный язык управления заданиями, с помощью которого программист сообщал системе и оператору, какую работу он хочет выполнить на вычислительной машине. Совокупность нескольких заданий получила название пакета заданий.
Третий период (1965 - 1980)
В 1965-1980 годам в технической базе произошел переход от отдельных полупроводниковых элементов типа транзисторов к интегральным микросхемам, что дало гораздо больше возможностей новому, третьему поколению компьютеров.
Первым семейством программно-совместимых машин, построенных на интегральных микросхемах, явилась серия машин IBM/360. Построенное в начале 60-х годов это семейство значительно превосходило машины второго поколения по критерию цена/производительность.
Программная совместимость требовала и совместимости операционных систем. Такие операционные системы должны были бы работать и на больших, и на малых вычислительных системах, с большим и с малым количеством разнообразной периферии - в коммерческой области и в области научных исследований. Несмотря на необозримые размеры и множество проблем, OS/360 и другие ей подобные операционные системы машин третьего поколения действительно удовлетворяли большинству требований потребителей. Важнейшим достижением ОС данного поколения явилась реализация мультипрограммирования. Мультипрограммирование - это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько программ.
Появился новый тип ОС - системы разделения времени. Вариант мультипрограммирования, применяемый в системах разделения времени, нацелен на создание для каждого отдельного пользователя иллюзии единоличного использования вычислительной машины.
Четвертый период (1980 - настоящее время)
Данный период в эволюции операционных систем связан с появлением больших интегральных схем (БИС). Произошло резкое возрастание степени интеграции и удешевление микросхем. Компьютер стал доступен отдельному человеку, и наступила эра персональных компьютеров.
На рынке операционных систем доминировали две системы: MS-DOS и UNIX. Однопрограммная однопользовательская ОС MS-DOS широко использовалась для компьютеров, построенных на базе микропроцессоров Intel 8088, а затем 80286, 80386 и 80486. Мультипрограммная многопользовательская ОС UNIX доминировала в среде "не-интеловских" компьютеров, особенно построенных на базе высокопроизводительных RISC-процессоров.
В середине 80-х стали бурно развиваться сети персональных компьютеров, работающие под управлением сетевых или распределенных ОС.
В сетевых ОС пользователи должны быть осведомлены о наличии других компьютеров и должны делать логический вход в другой компьютер, чтобы воспользоваться его ресурсами, преимущественно файлами. Каждая машина в сети выполняет свою собственную локальную операционную систему, отличающуюся от ОС автономного компьютера наличием дополнительных средств, позволяющих компьютеру работать в сети.