- •Ответы на устные вопросы экзамена по программированию 3 «г».
- •Вопрос 1. Язык программирования t. P.
- •Вопрос 2. Типы данных в t. P. Основные функции и выражения.
- •Вопрос 3. Структура программы на языке программирования t. P.
- •Вопрос 4. Оператор присваивания. Команда ввода информации.
- •Вопрос 5. Команда вывода информации.
- •Вопрос 6. Организация программ линейной структуры в t. P.
- •Вопрос 7. Разветвляющиеся вычислительные процессы. Операторы условного перехода.
- •2. Формат записи не полного условного оператора (краткая форма):
- •Вопрос 8. Разветвляющиеся вычислительные процессы. Вложенный условный оператор.
- •Вопрос 9. Оператор выбора в t. P.
- •Вопрос 10. Циклические вычислительные процессы и операторы цикла в t. P..
- •Вопрос 11. Оператор цикла с параметром.
- •Вопрос 12. Оператор цикла с предусловием.
- •Вопрос 13. Оператор цикла с постусловием.
- •Вопрос 14. Вложенные циклы в t. P.
- •Вопрос 15. Одномерные массивы. Объявление одномерного массива в программе.
- •Вопрос 16. Многомерные массивы. Работа с многомерными массивами.
- •Вопрос 17. Сортировка элементов массива. Алгоритмы пузырьковой сортировки.
- •Вопрос 18. Подпрограммы. Процедуры.
- •Вопрос 19. Подпрограммы. Функции в t. P.
- •Вопрос 20. Глобальные и локальные, фактические и формальные параметры.
- •Вопрос 21. Символьные величины. Операции над символьными величинами.
- •Вопрос 22. Процедуры для работы с символьными величинами.
- •Вопрос 23. Понятие «множество». Описание множеств в программе.
- •Вопрос 24. Основные процедуры для работы с множествами.
- •Вопрос 25. Записи. Описание записей в программе.
- •Вопрос 26. Операторы для работы с записями в программе.
- •Вопрос 27. Файлы. Виды файлов в t. P.
- •Вопрос 28. Процедуры для работы с файлами в t. P. Стандартные процедуры для работы с типизированными файлами.
- •Вопрос 29. Текстовые файлы в t. P. Процедуры для работы с текстовыми файлами.
- •Вопрос 30. Работа с диагональными элементами в квадратной матрице.
- •Вопрос 31. Задачи перестановок и вставки элементов в массиве.
- •Вопрос 32. Работа над множествами в программе.
- •Вопрос 33. Задачи поиска максимального и минимального элементов массива.
- •Вопрос 34. Основные функции для работы с символьными величинами.
Вопрос 16. Многомерные массивы. Работа с многомерными массивами.
В Паскале можно определять массивы различной размерности. В зависимости от того, как трактовать реальный объект – матрицу, можно использовать различные формы описания двумерного массива.
1). Матрица рассматривается как двумерная таблица. Пусть tl –тип индекса
1, t2 – тип индекса 2, t3 – тип компонента.
Формат записи двумерного массива (матрицы).
type
<имя типа> = array [tl, t2] of t3;
var
<имя массива> : <имя типа>;
b) var
<имя массива> : array [tl, t2] of t3;
2). Матрица рассматривается как вектор, элементы которой –векторы. Для удобства введем обозначения: tl и t2 – имена типов. А – имя двумерного массива, В – имя одномерного массива.
Формат записи двумерного массива.
1) type
М = array [tl] of array [t2] of t3;
var
A:M;
или
2). Var
A : array [tl] of array [t2] of t3;
Последнее описание дает большое удобство в работе. Мы можем обрабатывать матрицу, вызывая ее строки.
Работа с диагональными элементами массива.
При работе с диагональными элементами удобно использовать квадратный массив, то есть массив, у которого количество строк равно количеству столбцов. Для квадратного двухмерного массива введем два определения: главная диагональ двухмерного массива и побочная диагональ двухмерного массива. Главная диагональ — образуется элементами, расположенными между элементом в верхнем левом и элементом в нижнем правом углах массива,
включая сами эти элементы.
Индексы элементов главной диагонали всегда совпадают друг с другом.
Чтобы обратиться к элементам главной диагонали, необходимо:
For i:=l to n do
Writeln a[i, i];
Побочную диагональ квадратного двухмерного массива образуют элементы, расположенные между элементов в верхнем правом и нижнем левом углах массива, включая сами эти элементы.
Взаимосвязь индексов элемента побочной диагонали, стоящего на пересечении i-й строки и j-ro столбца, выражается соотношением i+j = n+1. Чтобы обратиться к элементам побочной диагонали необходимо:
b:=n;
For i:=l to n do begin
Writeln a[i, b];
b:=b-l; end;
Вопрос 17. Сортировка элементов массива. Алгоритмы пузырьковой сортировки.
Сортировка информации - это одна из стандартных процедур, возникающих в процессе решения задач самого различного характера.
В программировании под сортировкой обычно понимают процесс размещения элементов заданного множества объектов в некотором определенном порядке, как правило, в порядке возрастания или убывания.
Под сортировкой данных в самом широком смысле слова можно понимать процесс изменения порядка элементов в некоторой информационной совокупности таким образом, чтобы обеспечить возрастание (неубывание) или убывание (невозрастание) числового значения элемента данных или определенного числового параметра, связанного с каждым элементом данных (ключа), при переходе от предыдущего элемента к последующему.
С отсортированными данными работать легче, чем с произвольно расположенными. Когда элементы отсортированы, их проще найти (как в телефонном справочнике или в словаре), проще производить с ними различные операции. В отсортированных данных легче определить, имеются ли пропущенные элементы; найти общие элементы двух множеств, если оба они отсортированы.
При решении задач сортировки обычно выдвигается требование минимального использования дополнительной памяти, из которого вытекает недопустимость применения дополнительных массивов.
Для оценки быстродействия алгоритмов различных методов сортировки, обычно используются два показателя:
количество сравнений;
количество присваиваний.
Все методы сортировки можно разделить на две большие группы:
прямые методы сортировки
улучшенные методы сортировки.
В настоящее время известно большое число методов сортировки. Назовем некоторые из них:
1) сортировка выбором;
сортировка обменом;
сортировка вставками.
Алгоритм сортировки обменами (алгоритм "пузырька").
Метод "пузырька" является, пожалуй, самым простым из всех известных методов внутренней сортировки. Суть этого алгоритма состоит в последовательном просмотре массива от начала к концу и сравнении каждой пары элементов между собой. При этом если взаиморасположение не соответствует условию упорядоченности, то это устраняется путем перестановки элементов (обмена значениями). После такого прохода на последней n - ой позиции массива будет стоять максимальный элемент («всплыл» первый пузырек). Поскольку максимальный элемент уже стоит на своей последней позиции, то второй проход обменов выполняется до n-1 -го элемента. И так далее. Всего потребуется n-1 проход.
Рассмотрим этот процесс на примере. Пусть исходный массив М состоит из 5 элементов и имеет вид:
Процесс сортировки может быть представлен на схеме:
Во время первого прохода произойдут три перестановки: 9-3, 9-6 и 9-1. На втором проходе будут переставлены 5 и 3, а затем 6 и 1. Третий и четвертый проход даст только по одной перестановке соответственно — 5 и 1, 3 и 1. Одна из возможных версий программы, реализующей алгоритм "пузырька", представлена на языке программирования Паскаль в следующем виде:
Program SortJBull; {сортировка методом "пузырька"}
uses Crt;
const п=10; {длина массива}
type Mas = array[1..n] of real;
var
M : mas;
В :real ;
i,j : integer; {счетчики}
begin
ClrScr,
writeln('Введите элементы массива');
for i :=1 To n do
Read(M{ i j); Readln;
{начало сортировки}
for i:=n downto 2 do {всплывание очередного максимального элемента на i позицию } for j : =1 to i-1 do
if M[j] > M[j + l ] then {обмен содержимым ячеек}
begin В := M[j +1]; M[j+l]:=M[j]; M[j]:=B; end;
{печать отсортированного массива}
for i : = 1 to n do
Write (M[i]:8:2); Writeln End.
Приведенный пример программы иллюстрирует сортировку массива по возрастанию с использованием метода «пузырька».