
- •1. Информатика как дисциплина
- •2. Сигналы, данные, информация.
- •3. Информация. Свойства информации: объективность, полнота, достоверность.
- •4. Информация. Свойства информации: адекватность, доступность, актуальность.
- •5. Данные. Операции с данными.
- •6. Операционные системы: ms-dos, Windows, unix, Linux. Macintosh.
- •7. Системы счисления. Позиционные и не позиционные системы счисления.
- •8. Системы счисления. Десятичная, двоичная, восьмеричная. Шестнадцатеричная системы счисления. Правила записи чисел.
- •9. Системы счисления. Правила перевода из десятичной системы счисления в двоичную и обратно.
- •10. Системы счисления. Правила перевода из восьмеричной системы в двоичную и обратно.
- •11. Системы счисления. Правила перевода из шестнадцатеричной системы в двоичную и обратно.
- •12. Числа в двоичном коде. Прямой, обратный и дополнительный коды.
- •13. Операции над числами в двоичном коде. Логическое и арифметическое сложение.
- •14. Операции над числами в двоичном коде. Умножение.
- •15. Операции над числами в двоичном коде. Вычитание (сложение с обратным знаком).
- •16. Единицы измерения информации.
- •Единицы измерения количества информации - Применяются для измерения количества информации в объёме данных.
- •17. Алгоритмы. Виды алгоритмов.
- •18. Алгоритмы. Построение блок-схем алгоритмов.
- •20. Структура программы в языке FreePascal.
- •22. Типы данных, используемые в языке Free Pascal. Целочисленный и вещественный типы и возможные операции с ними.
- •24. Тины данных, используемый в языке Free Pascal. Логический и литерный типы и возможные операции с ними.
- •25. Типы данных, используемые в языке Free Pascal. Строковый типы и возможные операции для работы с литерной строкой.
- •Операции
- •26. Операторы ввода/вывода в языке FreePascal.
- •Оператор ввода read
- •Оператор вывода write
- •27. Оператор условия (ветвления). Его параметры, синтаксис.
- •[Править]Реализация [править]Algol, Pascal
- •28. Оператор выбора (case of). Его параметры, синтаксис.
- •Примеры использования
- •29. Циклы. Цикл с параметром (for). Параметры, синтаксис.
- •30. Циклы. Бесконечный цикл с предусловием (while). Параметры, синтаксис.
- •31. Циклы. Бесконечный цикл с послесловием (repeat until). Параметры, синтаксис
- •32. Массивы. Способы задания одномерных массивов.
- •33. Массивы Способы задания многомерных массивов.
- •Двумерные массивы. Матрицы.
- •Объявление и инициализация матрицы.
- •34. Понятие сортировки. Алгоритмы сортировки.
- •Пузырьковая сортировка
- •Сортировка выбором
- •Сортировка Шелла
- •Сортировка Хоора
- •Сортировка с помощью двоичного дерева
- •Сортировка с помощью массива индексов
- •Алгоритмы устойчивой сортировки
- •Алгоритмы неустойчивой сортировки
- •35. Понятое сортировки. Сортировка методом пузырька.
- •Сортировка простым обменом. Метод пузырька.
- •36. Понятие сортировки. Сортировка методом прямого выбора.
- •37. Генерация псевдослучайных чисел в языке Free Pascal. Функции inc. Dec. Odd.
- •Процедура Inc.
- •Процедура Dec.
- •Функция Odd.
- •38. Директивы компилятора.
- •39. Сортировка массивов методом пузырька.
- •40. Сортировка массивов методом прямого выбора.
- •41. Процедуры и функции. Сходства, отличия.
- •Описание и вызов процедур и функций
- •42. Процедуры и функции. Локальные и глобальные переменные.
- •43. Функции. Описание функций в программе.
- •Формат описания функции
- •Правила исполнения функции
- •Формат оператора return
- •Правило исполнения оператора return
- •44. Системные функции div. Mod.
- •45. Процедуры. Описание процедур в программе.
- •46. Модули. Описание модулей. Работа с модулями.
- •Interface – зарезервированное слово (интерфейс); начинает интерфейсную часть модуля;
- •Implementation – зарезервированное слово (выполнение); начинает исполняемую часть модуля;
32. Массивы. Способы задания одномерных массивов.
Для решения многих задач удобно сначала упорядочить данные по определенному признаку, так можно ускорить поиск некоторого объекта. Например, в преферансе игроки раскладывают карты по мастям и по значению. Так легче определить, каких карт не хватает. Или возьмем любой энциклопедический словарь - статьи в нем упорядочены в алфавитном порядке.
Перегруппирование заданного множества объектов в определенном порядке называют сортировкой.
Почему сортировке уделяется большое внимание? Вы это поймете, прочитав цитаты двух великих людей.
"Даже если бы сортировка была почти бесполезна, нашлась бы масса причин заняться ею! Изобретательные методы сортировки говорят о том, что она и сама по себе интересна как объект исследования." /Д. Кнут/
"Создается впечатление, что можно построить целый курс программирования, выбирая примеры только из задач сортировки." /Н. Вирт/
Отличительной особенностью сортировки является то обстоятельство, что эффективность алгоритмов, реализующих ее, прямо пропорциональна сложности понимания этого алгоритма. Другими словами, чем легче для понимания метод сортировки массива, тем ниже его эффективность.
Сегодня существует множество методов сортировки, но для понимания сути сортировки рассмотрим некоторые из них.
Но прежде чем перейти к рассмотрению конкретного алгоритма той или иной сортировки немного вспомним материал, который пригодится нам в дальнейшем.
Задача. Даны две целочисленные переменные х и y. Составить фрагмент программы, после выполнения которого значения этих переменных распределяются в порядке убывания.
Обмен значений переменных нужно производить лишь в том случае, если х<у. Для того чтобы не потерять начальное значение переменной х, введем дополнительную переменную t.
if x<y then begin t:=x; x:=y; y:=t; end; |
Задача. Составить фрагмент программы поиска максимального числа из трех введенных с клавиатуры чисел.
Пусть а, b, c - вводимые с клавиатуры числа, Max - максимальное из их значений. На первом шаге предположим , что а - максимальное из чисел и поэтому Max:=a. Затем сравним значение предполагаемого максимума со значениями переменных b и с. Если значение m окажется меньше, чем значение очередной переменной, то переопределим значение максимума.
. . . m:=a; if m<b then m:=b; if m<c then m:=c; . . . |
Задача. Дан массив а, состоящий из 10 элементов. Составить программу поиска максимального элемента массива.
Используем идею предыдущей задачи. Перед началом поиска выберем условно в качестве максимального первый элемент массива Max:=a[1]. Затем по очереди каждый элемент массива сравним со значением переменной m. Если он окажется больше, то изменим значение Max. После анализа всех элементов массива переменная Max содержит значение максимального элемента массива.
. . . Max:=a[1]; for i := 2 to 10 do if Max<a[i] then Max := a[i]; . . . |
До написания программ Вам необходимо выполнить некоторую подготовительную работу - написать шаблон программы следующего содержания:
Рrogram Sorting; Сonst n = ... ; {количество элементов в массиве} Type TArray = array [1..n] of integer; Procedure FillArray (Var a: TArray); Var i: integer; Begin for i: = 1 to n do a [i] := Random(100); End; {конец процедуры} Procedure PrintArray (a: TArray); Var i: integer; Begin for i: = 1 to n do write (a [i]: 3, ' '); writeln; End; Begin {Главная программа} writeln('Сортировка МЕТОДОМ . . .'); writeln('Заполняем исходный массив: '); FillArray (a); PrintArray (a); AnySort (a, b);{имя процедуры, реализующей данный метод} writeln('Отсортированный массив: '); PrintArray (b); End. |
Для реализации различных методов сортировки Вам необходимо подготовить несколько вспомогательных процедур и функций.
Функция, которая ищет минимальный элемент правее некоторого заданного и возвращает его номер в качестве результата. Аргументами функции являются номер элемента массива и обрабатываемый массив:
Большинство методов сортировок основаны на обмене двух чисел. Для этой цели предназначена процедура, которая в качестве параметров берет два числа и меняет их значения
Также Вам пригодится процедура, которая берет элемент с индексом i, перемещает его на место элемента с номером j. А все элементы, которые имеют индексы от j до i-1 сдвигает на одну позицию вправо.