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

Lll. Задачи

1.Алгоритм поиска элементов в одномерном массиве по заданному критерию.

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

Пусть в отсортированном массиве требуется найти элемент со значением x, или указать, что такого элемента там нет. Выберем средний элемент. Для этого элемента относительно значения x возможны три случая:

  1. элемент равен x (поиск завершен);

  2. элемент больше x (поиск необходимо продолжить в левой части массива);

  3. элемент меньше x (поиск необходимо продолжить в правой части массива).

В случаях 2-3 поиск (если это ещё возможно) продолжается. Для этого в выделенной части массива вновь выбирается средний элемент и проводятся аналогичные рассуждения. И т.д., до тех пор, пока поиск не будет завершен.

Поиск завершается в одном из двух случаев:

  1. элемент найден;

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

2. Алгоритм упорядочивания элементов одномерного массива.

Существует большое количество алгоритмов по упорядочиванию элементов массива, например, «пузырьковая» сортировка, метод Шелла, пирамидальная сортировка, быстрая сортировка Хоара и т.д. Для упорядочивания небольших массивов подойдёт любой метод (та же «пузырьковая» сортировка), если же массивы огромны, то требуется более эффективные методы. Одним из лучших по скорости работы считается метод быстрой сортировки Хоара.

Здесь разберём один из наиболее простых методов («пузырьковая» сортировка), а в теме «Рекурсия» можно посмотреть метод быстрой сортировки Хоара.

Идея метода. В цикле просматриваем весь массив и сопоставляем попарно xi и xi+1 элементы. Если xi>xi+1, то делаем перестановку. Когда массив пройден до конца, то нужно решить, что делать дальше. Если при просмотре массива были перестановки, то процесс повторяем вновь, если перестановок не было, значит массив упорядочен и сортировку нужно прекратить.

3. Структура программы. Операторы ввода/вывода. Оператор присваивания. Форматированный вывод.

Программа, написанная на языке паскаль состоит из четырех частей:

  1. заголовк программы

  2. раздел описания данных

  3. раздел операторов

  4. конец программы

Операторы ввода :Read(<Список ввода>); Readln(<Список ввода>);     

Операторы вывода: Write(<Список вывода>); Writeln(<Список вывода>);

  Оператор присваивания. В Паскале знак присваивания выглядит как :=. Оператор присваивания записывается в соответствии с общим правилом: Х:=А, где X — идентификатор переменной, А — выражение. 

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

5. Функции DIV и MOD.

Целочисленное деление div (от division, деление) отличается от обычной операции деления

тем, что возвращает целую часть частного, а дробная часть отбрасывается — 13 div 3 = 4, а

не 4,(3). Результат div всегда равен нулю, если делимое меньше делителя.

Например:

11 div 5 = 2

10 div 3 = 3

2 div 3 = 0

123 div 4 = 30

17 div -5 = -3

-17 div 5 = -3

-17 div -5 = 3

Взятие остатка от деления mod (от modulus, мера) вычисляет остаток, полученный при

выполнении целочисленного деления.

Например:

10 mod 5 = 0

11 mod 5 = 1

10 mod 3 = 1

14 mod 5 = 4

17 mod - 5 = 2

-17 mod 5 = -2

-17 mod -5 = -2

Аргументы операций div и mod — целые числа. Взаимосвязь между операциями div и mod проста.

Для а>0 и b>0 справедливо:

A mod b = a – (a div b)*b

(a div b)*b + (a mod b) = a

Обратите внимание — операцию mod можно использовать, чтобы узнать, кратно ли целое а целому

b. А именно, а кратно b тогда и только тогда,когда а mod b = 0

6. Оператор IF, общая форма, фрагмент блок-схемы.

Условный оператор IF

if — это оператор условного перехода. Он направляет выполнение программы по двум разным маршрутам.

IF<условие> then <оператор 1>

else <оператор 2>;

cos^2x 0<x^2<2

Вычисляем y(x)=фигурная скобка

1-cos^2 иначе

Var x,y: real;

begin

write('x=');

read(x);

if (x>0) and (x<2) then y:=(str(cos(x))

else y:+1-cos(sgr(x));

writeln('y(x)= ', y:8:2);

end.

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