русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ПРОЦЕДУРА ПЕРЕМЕЩЕНИЯ ДАННЫХ MOVE


Дата добавления: 2014-11-27; просмотров: 519; Нарушение авторских прав


 

Процедура Move позволяет максимально быстро переместить в оперативной памяти блок данных заданного размера. Заголовок процедуры:

Move(Var Source,Dest; n:word),

где Source - имя исходного поля памяти (источник данных);

Dest - имя конечного поля памяти (приемник данных);

n - количество байтов перемещаемых данных.

 

Пример 1. Даны два однотипных массива. Присвоить элементам одного из этих массивов значения элементов другого массива.

 

 

TypeAr1 = array[1..1000] of real;

Var i : word;

A,B : Ar1;

Begin

A:=B;

 

Эту же работу можно выполнить процедурой Move(B,A,SizeOf(A)).

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

 

Пример 2. Элементам 101 .. 500 массива A присвоить значения элементов 401 .. 800 массива B.

Варианты решения:

a) Fori:=101 to500 do

a[i]:=b[i+300];

б) Move(B[401],A[101],400*SizeOf(real)).

Второй вариант более эффективен по сравнению с первым.

 

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

 

TypeAr1 = array[1..1000] of real;

Ar2 = array[1..1000] of real;

Var i : word;

A : Ar1; B : Ar2;

Begin

Варианты решения:

a) Fori:=1 to1000 do

a[i]:=b[i];

б) Move(B,A,SizeOf(A)).

 

Оператор присваивания A := B в данном случае недопустим, так как массивы A и B формально имеют различные имена типов.

 

Процедура Move эффективно работает также при сдвиге элементов массива.

 

Пример 4. Элементы массива A, начиная с , сдвинуть на две позиции влево.

TypeAr1 = array[1..1000] of real;

Vari : word;



A : Ar1;

Begin

a) For i:=101 to1000 do

a[i-2]:=a[i];

б) Move(a[101],a[99],900*SizeOf(real)).

 

Пример 5. То же, но на две позиции вправо.

a) Fori:=1000 downto103 do

a[i]:=a[i-2];

б) Move(a[101],a[103],888*SizeOf(real)).

 

 



<== предыдущая лекция | следующая лекция ==>
ПРОЦЕДУРА ЗАПОЛНЕНИЯ FillChar | УПРАВЛЕНИЕ ЭКРАНОМ В ТЕКСТОВОМ РЕЖИМЕ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.