- •Часть 1.
- •Оглавление
- •Введение
- •1.Стандартные типы данных
- •1.1.Структура программы
- •1.2.Описание стандартных типов данных
- •Целый тип
- •Вещественный тип
- •Символьный тип
- •Булевский тип
- •Описание используемых стандартных функций.
- •Программы № 15.А
- •Программы № 15.Б
- •Варианты заданий
- •2. Операторы языка.
- •2.1. Составной и пустой операторы.
- •2.2.Условный оператор.
- •2.3.Операторы повторений. Счетный оператор цикла (вариант 1):
- •Счетный оператор цикла (вариант 2):
- •Оператор цикла с предусловием:
- •Оператор цикла с постусловием:
- •2.4.Оператор выбора
- •2.5.Практические задания.
- •Распечатка исходных данных и результатов выполнения программы.
- •Варианты заданий
- •Лабораторная работа № 4. Организация циклов в программе.
- •Цель задания:
- •Образец выполнения задания.
- •3.Численные методы.
- •3.1.Метод итераций
- •3.2.Метод Ньютона
- •3.3. Метод половинного деления.
- •Теорема математического анализа метода половинного деления.
- •Лабораторная работа № 5
- •Описание и блок-схема метода решения: Описание метода итераций:
- •Текст программы.
- •Распечатка результатов работы программы в следующем виде:
- •Лабораторная работа № 5, вариант № 3. Решение нелинейных уравнений методом Ньютона. Постановка задачи для конкретного варианта и исходные данные:
- •Описание и блок-схема метода решения: Описание метода Ньютона:
- •Блок-схема метода Ньютона:
- •Текст программы.
- •Распечатка результатов работы программы в следующем виде:
- •Лабораторная работа № 5, вариант № 3. Решение нелинейных уравнений методом половинного деления. Постановка задачи для конкретного варианта и исходные данные:
- •Описание и блок-схема метода решения: Описание метода половинного деления:
- •Блок-схема метода половинного деления:
- •Текст программы.
- •Распечатка результатов работы программы в следующем виде:
- •Варианты заданий.
- •Случайные числа.
- •Метод Монте-Карло (метод статистических испытаний)
- •Результаты выполнения программы:
- •5. Массивы.
- •5.1. Процедуры и функции.
- •5.2. Одномерные массивы.
- •5.2.1. Описание массивов.
- •5.2.2. Классы задач по обработке массивов.
- •5.2.2.1. Однотипная обработка всех или указанных элементов массивов.
- •5.2.2.2. Задачи, в результате решения которых изменяется структура массива.
- •5.2.2.3. Обработка нескольких массивов одновременно.
- •5.2.2.4. Поисковые задачи для массивов.
- •5.2.2.5. Сортировка массивов.
- •5.2.2.5.1.Сортировка вставкой
- •Результат работы :
- •5.2.2.5.2. Сортировка выбором
- •Результат работы :
- •5.2.2.5.3. Сортировка обменом («пузырьковая сортировка»)
- •Результат работы:
- •5.2.2.5.4. Сортировка фон Неймана (слиянием)
- •Результаты работы:
- •5.2.2.5.5. Шейкер-сортировка
- •Результаты выполнения программы:
- •5.3. Двумерные массивы.
- •5.3.1. Описание двумерных массивов.
- •5.3.2. Сортировка двумерных массивов
- •Результаты работы:
- •Результаты работы:
- •Результаты работы:
- •Результаты работы:
- •Результаты работы:
- •Варианты заданий.
- •6. Обработка строк.
- •Var st1,st2:string[10];
- •6.1. Функции обработки строк.
- •6.2. Процедуры обработки строк.
- •Лабораторная работа № 7.
- •Результаты выполнения программы:
- •Варианты заданий.
- •7. Комбинированные типы. Оператор присоединения
- •7.1. Записи
- •7.2. Оператор присоединения
- •Лабораторная работа № 8. Работа с комбинированными типами данных. Цель задания:
- •Постановка задачи:
- •Содержание отчета:
- •Исходные данные:
- •Текст программы:
- •Результаты выполнения программы:
- •Варианты заданий.
- •8. Множественные типы данных.
- •8.1. Множества.
- •Лабораторная работа № 9.
- •Результаты работы:
- •Методические указания:
- •Варианты заданий.
- •Лабораторная работа № 10. Операции над множествами. Цель задания:
- •Постановка задачи:
- •Содержание отчета:
- •Варианты задания:
- •Текст программы:
- •Результаты программы:
- •Варианты заданий.
5.2.2.5. Сортировка массивов.
5.2.2.5.1.Сортировка вставкой
Массив разделяется на две части: отсортированную и неотсортированную. Элементы из неотсортированной части поочередно выбираются и вставляются в отсортированную часть так, чтобы не нарушить в ней упорядочность элементов.
В начале работы алгоритмы в качестве отсортированной части массива принимают только один первый элемент, а в качестве неотсортированной части – все остальные элементы.
Таким образом, алгоритм будет состоять из n – 1-го прохода (n – размерность массива), каждый из которых будет включать четыре действия:
Взятие очередного i-го неотсортированного элемента и сохранение его дополнительной переменной.
Поиск позиции j в отсортированной части массива, в которой присутствие взятого элемента не нарушит упорядоченности элементов.
Сдвиг элементов массива от i – 1-го до j-го вправо, чтобы освободить найденную позицию вставки.
Вставка взятого элемента в найденную j-ю позицию.
1шаг:
-
3
1
9
2
5
7
-
1
2шаг:
-
1
3
9
2
5
7
-
9
3шаг:
-
1
3
9
2
5
7
-
2
4шаг:
-
1
2
3
9
5
7
-
5
5шаг:
-
1
2
3
5
9
7
-
7
Результат:
-
1
2
3
5
7
9
БЛОК – СХЕМА
I = 2
1
J = 1 R = A(I) IR =
1
I = I + I
IR = 1
K = I - 1 J = J+1
1
A(J) = R IR = 2
A(K+1) = A(K) K = K - 1
Программа, реализующая рассмотренный алгоритм, будет иметь следующий вид.
Program Insertion Sort;
Uses Crt;
Const
n =10; {длина массива}
type
TVector = array 1…n of Real;
Var
Vector : TVector;
B : Real;
i, j, K : Integer;
Begin
ClrScr;
Writeln (‘Введите элементы массива:’);
For i:=1 to n do Read (Vector i); Readln;
{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
for i:=2 to n do
begin
B:=Vector i; {взятие неотсортированного элемента}
{цикл поиска позиции вставки}
j:=1
While (BVector j ) do
j:= j+1 {после окончания цикла индекс j фиксирует позицию}
{вставк} {цикл сдвига элемента для освобождения позиции вставки}
for K:= i-1 downto j do
Vector K+1: = Vector K;
{Вставка взятого элемента на найденную позицию}
Vector j: = B;
End;
{ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
Writein (‘Отсортированный массив:’);
For i: = 1 to n do write (‘vector [i] : 8 : 2);
Writeln;
End.