Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора по ОСРВ.docx
Скачиваний:
2
Добавлен:
18.04.2019
Размер:
67.02 Кб
Скачать

35. Типовая структура программ, работающих в рв.

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

  2. Главный цикл работы программы, содержащий:

- вывод информации на ОУ

- ввод информации с ОУ (считывание информации с датчиков)

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

- решение задач, не требующих получение результата в текущем шаге цикла (так называемые фоновые задачи)

- решение импульсных задач (задачи, решаемые по необходимости)

- синхронизация выполнения цикла с РВ

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

while (1)

{

t1

………

}

while ((t2-t1)< T)

{

t2=считать время

}

  1. Завершение работы

36. Необходимость оптимизации программ.

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

Все приемы оптимизации можно условно разделить на 3 группы:

1) связанные с математическими алгоритмами

2) связанные с особенностями работы аппаратного обеспечения (процессора и т д)

3) связанные с особенностями компиляторов

Часто тот пример, который используется программистом, бывает трудно отнести к какой-либо конкретной группе.

Некоторые приемы оптимизации:

  1. Использование Ассемблера (могут ипользоваться ассемблерные вставки и внешние модули).

while (++i<100) while (i<100)

{ {

….. i++;

} …….. } - проще

Компилятор формирует исполняемый код по исходному тексту. Получаемый исполняемый код содержит много лишней информации (н-р, проверка соответствия типов и т д). Чтобы убрать лишний код, фрагменты программы м б написаны на Ассемблере. В этом случае программист сам формирует тот исполняемый код, который ему нужен.

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

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

  3. Замена операций умножения и деления на 2 в степени n на операции арифметического сдвига влево (умножение) или вправо (деление) на n разрядов.

640=128+512=2^7+2^9

а*640=а<<7 + а<<9 (сдвиг влево на 7 и 9 разрядов)

  1. Языковые конструкции в программе д б более простыми (пример из п.1)

Не рекомендуется использовать оператор goto (заменяется циклом). Нежелательны вложенные циклы. Если цикл повторяется ограниченное малое кол-во раз, то он разворачивается.

  1. Использование приближенных вычислений. Если в расчетах не требуется особая точность получения результата, то можно воспользоваться приближенными вычислениями.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]