- •Структура описания лабораторной работы
- •Выполнение работы
- •Форма отчета
- •Основные сведения
- •Установка и запуск системы
- •Интерфейс системы
- •Меню и команды
- •Пункт File
- •Пункт Edit
- •Пункт Search
- •Пункт Run
- •Пункт Compile
- •Пункт Debug
- •Пункт Options
- •Пункт Window
- •Пункт Help
- •Страница Compiler Options окна свойств проекта
- •Страница Directories окна свойств проекта
- •Страница Preferences окна свойств проекта
- •Файлы проекта
- •Основные приемы работы в СП Borland Pascal
- •Создание новой программы
- •Работа с уже созданной программой
- •Использование средств отладки
- •Пошаговое выполнение программы
- •Просмотр значений переменных
- •Использование точек останова
- •Порядок выполнения работы
- •Контрольные вопросы
- •Основные сведения
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Оператор варианта
- •Ввод данных с клавиатуры
- •Вывод данных на экран
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 3. Программы с циклами
- •Основные сведения
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с возрастающим параметром
- •Оператор цикла с убывающим параметром
- •Оператор прерывания цикла
- •Оператор продолжения цикла
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 4. Использование массивов
- •Основные сведения
- •Описание массива
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 5. Обработка символьных строк
- •Основные сведения
- •Описание строковых переменных
- •Операции над данными типа string :
- •Стандартные функции для обработки строк
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 6. Использование процедур
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 7. Использование функций
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 8. Работа с текстовыми файлами
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 10. Использование данных ссылочного типа
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 11. Создание и использование модулей
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Литература
– 15 –
8. Можно ли с помощью цикла repeat until реализовать цикл while?
Лабораторная работа 4. Использование массивов
Основные сведения
Описание массива
var имя_массивов: array [тип_индекса_1,тип_индекса_2...] of базовый_тип;
Тип индекса может быть boolean, char, перечислимый или ограниченный.
Обращение к элементу массива имя_массива[индекс_1,индекс_2...]
Элемент массива является переменной базового типа массива, и с ним можно производить любые операции, доступные для переменных этого типа.
Ввод и вывод массивов осуществляется только поэлементно.
Пример выполнения
Даны матрицы вещественных чисел A3x6 и B6x10. Вычислить матрицу C3x10 = A*B.
program PRIMER;
var A :array [1..3,1..6] of real;
B:array [1..6,1..10] of real;
C:array [1..3,1..10] of real; SUM :real;
i,j,k :integer;
begin
writeln('введите A'); for i:=1 to 3 do
for j:=1 to 6 do read(A[i,j]); writeln('введите B');
for i:=1 to 6 do for j:=1 to 10 do
read(B[i,j]); for i:=1 to 3 do
for j:=1 to 10 do begin SUM:=0;
for k:=1 to 6 do SUM:=SUM+A[i,k]*B[k,j];
C[i,j]:=SUM
end; writeln('матрица C:'); for i:=1 to 3 do begin
for j:=1 to 10 do write(C[i,j]:7);
writeln end
end.
Варианты заданий
1.Дана целочисленная матрица размером Nx3 и целые числа k,i, такие, что 1≤k≤N, 1≤i≤N. Преобразовать матрицу так, чтобы строка с исходным номером k непосредственно следовала за строкой с исходным номером i, сохранив порядок следования остальных строк.
2.Дана квадратная вещественная матрица A размером NxN и вектор B размером N. Найти
решение треугольной системы уравнений:
a1,1x1+ a1,2x2+... |
+ |
a1,NxN |
= b1, |
a2,2x2+... |
+ |
a2,NxN |
= b1, |
. . . . . |
|
|
|
– 16 –
aN,NxN = bN,
где коэффициенты ai,j – элементы матрицы A, а bi – элементы вектора B.
3. Дана вещественная матрица размером 7x7, все элементы которой различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом матрицы. Если произведение положительно, изменить у элементов четных строк исходной матрицы знаки на противоположные. Если произведение равно 1, обнулить все элементы, находящиеся выше главной диагонали. Если произведение отрицательно, поменять первый и последний столбцы матрицы местами.
4.Дана символьная матрица размером 13x18. Найти номер последнего по порядку столбца, в котором содержится наибольшее количество попарно различных символов.
5.Определить, является ли заданная целая квадратная матрица 5-го порядка магическим
квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы. Если матрица является магическим квадратом, то транспортировать ее относительно побочной диагонали. Если не является, то поменять местами строки по схеме: 1→2, 2→3...5→1.
6. Дана символьная квадратная матрица порядка N. Сформировать булевский вектор B из N элементов таким образом, чтобы B[i]=TRUE , когда в строке i исходной матрицы количество символов ? не меньше количества символов !. В остальных случаях B[i]=FALSE. Если в полученном векторе B значений TRUE больше, чем FALSE, то заменить пробелами все элементы исходной матрицы, находящиеся ниже главной диагонали. Если количество значений FALSE больше, чем TRUE, то поменять местами строки матрицы по схеме: 1↔2, 3↔4 и т.д. Если количество значений TRUE равно количеству значений FALSE , то транспонировать матрицу относительно побочной диагонали.
7. Таблица футбольного чемпионата задана квадратной матрицей порядка N, в которой все элементы главной диагонали не используются, а каждый элемент, не принадлежащий главной диагонали, равен количеству очков, набранных в игре командой, игравшей на своем поле: 2 – выигрыш, 1 – ничья, 0 – поражение. Для команды i (1≤i≤N) в строке i указано количество очков, полученных на своем поле, а в столбце i – количество очков, потерянных на чужом поле. Найти: количество и номера команд, имеющих больше побед, чем поражений, и номера команд, не имевших поражений в чемпионате.
8.Таблица футбольного чемпионата задана аналогично варианту 7. Найти номера команд, выигравших более половины игр. Сформировать список номеров команд, участвовавших в чемпионате, в порядке невозрастания количества набранных очков.
9.Таблица футбольного чемпионата задана аналогично варианту 7. Сформировать список номеров команд, имеющих больше побед на чужом поле, чем на своем. Определить номера двух команд, набравших меньше всего очков.
10.Таблица футбольного чемпионата задана аналогично варианту 7. Найти номера команд, занявших первые 3 места в чемпионате. Среди оставшихся команд найти набравшую больше всего очков в играх с командами, занявшими 3 первых места.
11.Таблица футбольного чемпионата задана аналогично варианту 7. Найти команду, набравшую больше всего очков на чужом поле. Вывести список номеров команд, у которых поражений больше, чем побед.
Контрольные вопросы
1.Описать переменную Y как переменную, принимающую только целочисленные значения в диапазоне от 20 до 35.
2.Можно ли задать переменную ограниченного типа, принимающую значения, ограниченные на отрезке [2,7; 5,7] ?
3.Какие из приведенных ниже описаний массивов являются неправильными и почему ?
а) var A: array[1..20] of real; б) type MAS=array[’A’..’D’];
var A: MAS;