- •Вопрос 1 Алфавит языка Паскаль. Правила построения идентификаторов.
- •Вопрос 2 Структура Паскаль-программы. Прокомментировать назначения разделов.
- •Вопрос 3 Логические переменные в Паскале. Основные операции над ними. Логические выражения. Правила записи и вычсления сложных логических выражений. Логические переменные
- •Логические выражения
- •Вопрос 4 Правила записи и вычисления арифметических и строковых выражений. Операции mod и div.
- •Арифметические выражения
- •Вопрос 5 Формат и правила выполнения оператора присваивания. Оператор присваивания
- •Вопрос 6 Понятие и применение составного оператора.
- •Вопрос 7
- •Вопрос 8
- •Вопрос 9
- •Var X: real; {аргумент }
- •Вопрос 10
- •Вопрос 11,12,13
- •Вопрос 14, 15
- •5.9 Процедуры вывода данных.
- •Вопрос 16
- •Вопрос 17
- •Вопрос 18
- •Одномерные массивы. Работа с элементами
- •Способы задания одномерных массивов
- •Работа с элементами массива (разбор на примерах)
- •Вопрос 19
- •Методы сортировки массивов
- •Метод "пузырька"
- •Сортировка вставками
- •Сортировка посредством выбора
- •Вопрос 20
- •Двумерные массивы Паскаля – матрицы
- •Описание двумерного массива Паскаля.
- •Основные действия с двумерными массивами Паскаля
- •Ввод двумерного массива Паскаля.
- •Вывод двумерного массива Паскаля на экран.
- •Представление двумерного массива Паскаля в памяти
- •Сколько памяти выделяется для массива?
- •Примеры решения задач с двумерными массивами Паскаля
- •Вопрос 21, 22
- •Строки Строковый тип данных
- •Процедуры и функции для работы со строками
- •Вопрос 23
- •Стандартные процедуры и функции.
- •5.1 Математические функции.
- •Вопрос 30
- •Нетипизированные параметры
- •Вопрос 31
- •Вопрос 32
Сортировка посредством выбора
Идея сортировки с помощью выбора не сложнее двух предыдущих. На j-ом этапе выбирается элемент наименьший среди M[j], M[j+1],. . ., M[N](см. процедуру FindMin) и меняется местами с элементом M[j]. В результате после j-го этапа все элементы M[j], M[j+1],. . ., M[N]будут упорядочены.
Сказанное можно описать следующим образом:
нц для j от 1 до N-1 выбрать среди M[j],. . ., M[N] наименьший элемент и поменять его местами с M[j] кц
Более точно:
begin for j:=1 to N-1 do begin FindMin(j, i); swap(M[j],M[i]) end end; |
В программе, как уже было сказано, используется процедура FindMin, вычисляющая индекс lowindex элемента, наименьшего среди элементов массива с индексами не меньше, чемstartindex:
procedure FindMin(startindex: integer; var lowindex: integer); var lowelem: ...; u: integer; begin lowindex := startindex; lowelem := M[startindex]; for u:=startindex+1 to N do if M[u] < lowelem then begin lowelem := M[u]; lowindex := u end end; |
Оценивая эффективность применения , учтите что в демонстрации сортировки выбором отсутствует пошаговое выполнение этой процедуры.
Вопрос 20
Двумерный массив: понятие, варианты объявления, настройка на фактическое число строк и столбцов массива. Организация в программе вывода двумерного массива в матричной форме.
Двумерные массивы Паскаля – матрицы
Двумерный массив в Паскале трактуется как одномерный массив, тип элементов которого также является массивом (массив массивов). Положение элементов в двумерных массивах Паскаля описывается двумя индексами. Их можно представить в виде прямоугольной таблицы или матрицы.
Рассмотрим двумерный массив Паскаля размерностью 3*3, то есть в ней будет три строки, а в каждой строке по три элемента:
Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел – номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца. Например, a 21 – это элемент, стоящий во второй строке и в первом столбце.
Описание двумерного массива Паскаля.
Существует несколько способов объявления двумерного массива Паскаля.
Мы уже умеем описывать одномерные массивы, элементы которых могут иметь любой тип, а, следовательно, и сами элементы могут быть массивами. Рассмотрим следующее описание типов и переменных:
Пример описания двумерного массива Паскаля
Type
Vector = array [1..5] of <тип_элементов>;
Matrix= array [1..10] of vector;
Var m: matrix;
Мы объявили двумерный массив Паскаля m, состоящий из 10 строк, в каждой из которых 5 столбцов. При этом к каждой i -й строке можно обращаться m [ i ], а каждому j -му элементу внутри i -й строки – m [ i , j ].
Определение типов для двумерных массивов Паскаля можно задавать и в одной строке:
Type
Matrix= array [1..5] of array [1..10] of < тип элементов >;
или еще проще:
type
matrix = array [1..5, 1..10] of <тип элементов>;
Обращение к элементам двумерного массива имеет вид: M [ i , j ]. Это означает, что мы хотим получить элемент, расположенный в i -й строке и j -м столбце. Тут главное не перепутать строки со столбцами, а то мы можем снова получить обращение к несуществующему элементу. Например, обращение к элементу M [10, 5] имеет правильную форму записи, но может вызвать ошибку в работе программы.