Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на гос. экзамен.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6.29 Mб
Скачать

БИЛЕТ 1

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

Процедурное программирование.

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

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

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

Возможные выгоды:

  • Возможность повторного использования одного и того же кода из нескольких мест программы без его копирования.

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

  • Возможность поддержки модульности и структурности.

Недостатки процедурного программирования:

  • Некоторые знания "плохо формализуются" с помощью алгоритмов.

  • Не все виды знаний можно представить программой.

  • Некоторые знания или запросы неопределены частично или полностью.

  • С увеличением размеров программы теряют гибкость

  • Программы не могут определять или доопределять понятия.

  • Программы выводят только запланированные результаты или ошибочные ситуации, -альтернативные решения не предусматриваются

  • Для конкретного применения важны объективность (ориентация на общие знания) и субъективность программ (ориентация на конкретную организацию).

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

Модульное программирование

Здесь основная идея заключалась в том, чтобы «спрятать» данные и процедуры внутри независимых программных единиц - модулей. Программный модуль - это любой фрагмент описания процесса, оформляемый как самостоятельный программный продукт, пригодный для использования в описаниях процесса. Это означает, что каждый программный модуль программируется, компилируется и отлаживается отдельно от других модулей программы, и тем самым, физически разделен с другими модулями программы. Более того, каждый разработанный программный модуль может включаться в состав разных программ, если выполнены условия его использования, декларированные в документации по этому модулю. Таким образом, программный модуль может рассматриваться и как средство борьбы со сложностью программ, и как средство борьбы с дублированием в программировании (т.е. как средство накопления и многократного использования программистских знаний).

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

Структурное программирование

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

Рис. 1. Основные управляющие конструкции структурного программирования.

Основными конструкциями структурного программирования являются: следование, разветвление и повторение (см. Рис. 1). Компонентами этих конструкций являются обобщенные операторы S, S1, S2 и условие (предикат) P. В качестве обобщенного оператора может быть либо простой оператор используемого языка программирования (операторы присваивания, ввода, вывода, обращения к процедуре), либо фрагмент программы, являющийся композицией основных управляющих конструкций структурного программирования. Существенно, что каждая из этих конструкций имеет по управлению только один вход и один выход. Тем самым, и обобщенный оператор имеет только один вход и один выход.

Пошаговая детализация и понятие о псевдокоде

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

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

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

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

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

Разработаем алгоритм суммирования всех элементов массива (в массиве не более 100 элементов) при помощи структурного подхода.

Описание алгоритма.

1. Проверяем что количество элементов не более 100 и менее 0, если нет – выход.

2. Определяем переменную для суммы и присваиваем ей 0.

3. Перебираем все элементы и добавляем их значения к сумме.

4. Возвращаем сумму.

5. Выход.

Составим блок-схему.

Чтобы не сильно много писать в элементах блок-схемы определим:

M- массив, поданный на вход,

N – количество элементов в массиве(тоже задается на вход),

S – переменная для подсчета суммы (определяется внутри алгоритма (процедуры)),

i – буферная переменная (определяется внутри алгоритма (процедуры)).

Опишем в псевдокоде.

Вход

ЕСЛИ количество элементов массива больше ста ВЫХОД

ЕСЛИ количество элементов массива меньше, либо равно нулю ВЫХОД

СУММЕ элементов массива присвоить НОЛЬ

ПОКА не перебрали все элементы массива ДЕЛАТЬ

Добавить значение элемента массива к СУММЕ

Вернуть СУММУ

Выход

Теперь напишем код процедуры на языке C++.

long SummaM (int* M, int N)

{

if (N <= 0 || N > 100) return 0;

long S = 0;

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

S += (long)M[i];

return S;}

Теперь можно использовать эту функцию.

void main()

{

int M[10] = {1,2,3,4,5,6,7,8,9,10};

long SM = SummaM(M, 10);

count << SM;

}

На экране получим сумму элементов массива M.

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

Методы измерения дальности.

  1. Частотный метод радиодальнометрии.

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

Частоту передатчика fпрд, естественно, нельзя неограниченно увеличивать или уменьшать. Ее изменяют по пилообразному или пилообразному (Рис.1) закону с частотой модуляции Fм=1/Тм. Девиацию, т.е. максимальное отклонение частоты, обозначим

Δfm=fmax-fmin.

Частота отраженного сигнала fотр повторяет частоту излученного сигнала fпрд с запаздыванием tд=2Д/с. Отсюда в один и тот же момент времени t разность частот прямого (fпрд) и отраженного (fотр) сигналов, т.е. частота биений

Fб=|νм|tд=2|νм|Д/с , (1)

где |νм| - скорость изменения частоты.

В один полупериод модуляции Тм/2 частота передатчика fпрд возрастает и скорость νм>0, а в другой полупериод – наоборот; вместе с тем частота Fд физически не может быть отрицательной величиной. Поэтому в формулу (1) введено абсолютное значение скорости

модуляции |νм|. При пилообразном законе эта скорость постоянная и равна частному от деления частоты Δfm на ее продолжительность Тм/2. Тогда формулу (1) можно представить в виде

Fб=2|νм|Д/с=4ΔfmД/сТм=4ΔfmFмД/с (2)

Величины Δfm, Fм и с – постоянные, а это значит, что в ЧМ дальномере измерение текущей дальности цели Д сводится к измерению разности частот Fб прямого и отраженного сигналов, причем Д и Fб связаны между собой прямо пропорциональной зависимостью. Отсюда происходит другое название величины Fб – частоты дальности.

Линейный закон изменения частоты Fб нарушается на участках протяженностью tд, в середине которых эта разностная частота проходит через нулевое значение. Однако, если максимальное запаздывание сигнала, которое фиксируется данной РЛС, значительно меньше периода модуляции

Временные диаграммы иллюстрирующие частотный метод измерения дальности

Рис.1

(tд max << Тм), то нарушением линейности можно пренебречь и считать формулу (2) справедливой для любого закона частотной модуляции. Соотношение tд max << Тм является также условием однозначного отсчета дальности.

2.Фазовые методы дальнометрии.

Общие сведения. Измерение дальности фазовыми методами заключается в измерении приращения фазы гармонического колебания масштабной частоты за время запаздывания отраженного сигнала:

Δφ=Ωмtд=2πFм·Д/с=4πД/λм (8)

Частота Fм и длина волны λм=с/Fм называются масштабными потому, что от них зависит масштаб шкалы дальности, т.е. коэффициент пропорциональности между измеряемым фазовым сдвигом Δφ и дальностью цели Д.

Через фазовые интервалы Δφ=2π гармоническое колебание, а с ним и показания фазометра повторяются. Отсюда согласно формуле (8) максимальный предел однозначно измеряемой дальности

Додн=λм/2 (9)

Наиболее простым по устройству был бы фазовый радиодальномер с излучением колебаний только одной – несущей частоты fо. Но тогда масштабная частота Fм=fо и длина волны λм=λо=с/fо, а так как РЛС обычно работают на УКВ, то это ограничило бы однозначно измеряемую дальность несколькими метрами (Додн= λм/2).

Вместе с тем масштабная частота влияет на точность определения дальности. Действительно, из формулы (9) дальность Д=сΔφ/4πFм=λмΔφ/4π, и если фазометр измеряет Δφ со среднеквадратической ошибкой σΔφ, то дальность определяется со среднеквадратической ошибкой

σд =сσΔφ/4πFм=λмσΔφ/4π (10)

Шумы препятствуют точному определению фазового сдвига и увеличением отношения сигнал/шум qо ошибка σΔφп уменьшается: σΔφп=1/ [рад]. С учетом этого из формулы (10) находим потенциальную среднеквадратическую ошибку измерения дальности фазовыми методами:

σдп=сσΔφп/4πFм=с/4πFм =λм/4π (11)

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

Временные диаграммы напряжений фазового дальномера

с модуляцией несущей

Рис.6

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

или последовательно с помощью грубой шкалы, соответствующей самой

низкой модулирующей частоте Fм1, и более точной шкалы, соответствующей масштабной частоте Fм2, которая кратна Fм1, и если требуется – по еще более точным шкалам, проградуированным для более высоких масштабных частот Fм= Fм3, Fм4, ….

Частоту Fм1 выбирают исходя из заданной максимально измеряемой дальности, а самую большую масштабную частоту – согласно требуемой точности измерений. При этом число шкал должно быть таким, чтобы при пересчете данной ошибки на ближайшую точную шкалу максимальная фазовая ошибка шкалы не превысила 2π.