- •Лабораторная работа 1. Реализация линейных алгоритмов
- •Вариант 1
- •1. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное.
- •Вариант 2
- •1. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.
- •Вариант 3
- •1. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) — T2 ч. Определить путь S, пройденный лодкой.
- •Вариант 4
- •1. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга.
- •Лабораторная работа 2. Условный оператор
- •Лабораторная работа 3. Оператор варианта.
- •Лабораторная работа 4. Строки. Операторы цикла.
- •Программирование численных циклических алгоритмов. Циклы «до» и «пока»
- •Лабораторная работа 5. Подпрограммы
- •Лабораторная работа 6. Массивы
- •Лабораторная работа 7. Множества
- •Лабораторная работа 8. Комбинированный тип данных (Запись)
- •Лабораторная работа 9. Работа с файлами
- •Лабораторная работа 10. Процедуры и функции модуля GraphABC
- •Графические примитивы
- •Подпрограммы для работы с пером
- •Лабораторная работа 11. Создание собственных модулей.
- •Лабораторная работа 12. Решение простейших задач в Console Application
- •Лабораторная работа 13. Динамические массивы
- •Лабораторная работа 14. Тип данных Variant
- •Лабораторная работа 15. Тип TDateTime
- •Лабораторная работа 16. Простейшие задачи на форме
- •Лабораторная работа 17. Флажки и переключатели
- •Лабораторная работа 18. Работа с меню
- •Главное меню
- •КОНТЕКСТНОЕ МЕНЮ
- •Лабораторная работа 19. Работа со списками
- •СПИСКИ ВЫБОРА
- •ВЫПАДАЮЩИЕ СПИСКИ
- •Лабораторная работа 20. Таймер. Работа с календарем
- •Лабораторная работа 21. Таблица строк
- •Лабораторная работа 22. Графика в Delphi
- •Лабораторная работа 23. Калькулятор
- •Лабораторная работа 24. Моделирование движения. Пуля
- •Лабораторная работа 25. Моделирование движения по кругу
- •Лабораторная работа 26. Цветомузыка
- •Лабораторная работа 27. Проигрыватель
- •Лабораторная работа 28. Цветочная поляна
- •Лабораторная работа 29. QUEST
- •Лабораторная работа 30. Тир
- •Лабораторная работа 31. Компоненты Delphi для взаимодействия с серверами автоматизации MS Office
- •Лабораторная работа 32. Обмен данными между программами с помощью DDE
- •Лабораторная работа 33. Технология Drag & Drop
- •Лабораторная работа 34. Использование динамически подключаемых библиотек (DLL).
- •Лабораторная работа 35. Создание собственного класса
- •Лабораторная работа 36. Конструкторы и деструкторы
- •Лабораторная работа 37. Создание собственных компонентов
Лабораторная работа 6. Массивы
Массив – упорядоченный набор однотипных значений – компонент массива. Тип компонент называется базовым типом массива.
Описание массивов
VAR <имя переменной> : ARRAY [<индексы>] OF <type>;
<type> - базовый тип.
Примеры описания массивов
Var a : array[1..10] of integer; - последовательность целых чисел
Обращение к элементам массива
i := 1; A[i] – i-й элемент из массива А;
A[i+1] – следующий за i элемент массива А;
A[1] – первый элемент из массива А.
Приведем примеры:
1.
1 |
2 |
3 |
4 |
5 |
4 |
3 |
2 |
1 |
0 |
Var a : array [1..5] of integer;
A[2] = 3;
Рассмотрим пример программы, находящей среднее арифметическое элементов массива.
Program Primer;
Const n = 10;
Type mas = array [1..n] of integer;
Procedure In_Mas (var a : mas); var i : integer;
begin
for i := 1 to n do a[i] := random(10); end;
© ИМПИ ОГПУ
Procedure Out_Mas (a : mas); var i : integer;
begin
for i := 1 to n do write(a[i],’ ‘) end;
Procedure Main(a : mas; var sr : real); var i, s : integer;
begin
for i := 1 to n do s := s+a[i]; sr := s/n;
var m : mas; sr_ar : real; begin
In_Mas(m);
Out_Mas(m); Main(m, sr_ar);
end. Writeln(‘ответ=’, sr_ar)
Алгоритм «пузырьковой» сортировки линейного массива по возрастанию.
Алгоритм состоит в повторяющихся проходах по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает — массив отсортирован. При проходе алгоритма, элемент, стоящий не на своём месте, «всплывает» до нужной позиции как пузырёк в воде, отсюда и название алгоритма.
Procedure Sort_Mas (var a : mas); var i, j, temp : integer;
begin
for i:=1 to n do for j:=1 to n-i do
if a[j]>a[j+1] then begin
Temp := a[j]; a[j] := a[j+1];
a[j+1] := Temp; end;
end;
© ИМПИ ОГПУ
Двумерные массивы |
|
|
|
|
Приведем пример описания: |
|
|
|
|
|
1 |
2 |
3 |
4 |
1 |
3 |
2 |
1 |
0 |
2 |
-2 |
3 |
1 |
7 |
3 |
0 |
4 |
6 |
7 |
Var a : array [1..4, 1..4] of integer;
A[2,2] = 3;
Рассмотрим пример программы, находящей сумму наибольших чисел каждой строки.
Program Primer;
Const n = 3;
Type Matr = array [1..n, 1..n] of byte;
Procedure In_Matr(var x : Matr); var i, j : integer;
begin
for i := 1 to n do
end;for j := 1 to n do x[i,j] := random(10);
Procedure Out_Matr(x : Matr); var i, j : integer;
begin
for i := 1 to n do begin
for j := 1 to n do write(x[i,j],' ');
writeln; end;
end;
Procedure Summ_MaxEl(x : Matr; var sum : byte);
var i, j, max : integer; begin
max := x[1,1]; sum := 0; for i := 1 to n do
begin
for j := 1 to n do
if x[i,j]>max then max := x[i,j];
sum := sum+max; max := 0; end; end;
© ИМПИ ОГПУ
var a : Matr; summa : byte; begin
In_Matr(a); Out_Matr(a);
Summ_MaxEl(a, summa); writeln('ответ=', summa) end.
Задания для самостоятельной работы
Вариант 1.
1.Заполнить массив числами, введенными с клавиатуры, вывести этот массив, увеличить все элементы на 5 и снова вывести получившийся массив на экран.
2.Найти элементы массива равные 10 и вывести их индексы.
3.В двумерном массиве найти количество четных элементов.
4.Вывести массив следующего вида. Размерность произвольная.
1 1 1 1
1 0 0 1
1 0 … 1
1 1 1 1
Вариант 2.
1.Заполнить массив числами, введенными с клавиатуры, вывести этот массив, увеличить все элементы в два раза и снова вывести получившийся массив на экран.
2.Найти элементы массива меньшие 0 и вывести их индексы.
3.В двумерном массиве найти сумму нечетных элементов.
4.Вывести массив следующего вида. Размерность произвольная.
1 0 0 0
0 2 0 0
0 0 … 0
0 0 0 N
Вариант 3.
1.Заполнить массив случайными числами, вывести этот массив, уменьшить все элементы в два раза и снова вывести получившийся массив на экран.
©ИМПИ ОГПУ