
- •Лабораторная работа № 1
- •Лабораторная работа № 4
- •Лабораторная работа № 10 Сортировка массивов методом «пузырька»
- •Var a :array [0..10] of integer ; {массив из 11элементов целого типа }
- •Var b : [-5..9] of real ; { массив из 15 элементов вещест. Типа }
- •1.Задание к лабораторной работе.
- •Контрольные вопросы
- •Контрольные вопросы
- •Построение простых графических изображений.
- •Варианты заданий:
1.Задание к лабораторной работе.
2.Схема алгоритма и программа на языке Паскаль.
3.Результаты расчета
Контрольные вопросы:
.Алгоритм обменной сортировки одномерного массива.
Алгоритм сортировки вставками.
Алгоритм сортировки выбором
Задание к лабораторной работе:
Отладить приведенные ниже программы, исправить ошибки и описать их причину возникновения.
1. Пример программы для заполнения массива из 20 элементов целыми случайными числами в диапазоне от 0 до 99. и сортировки элементов массива по возрастанию.
Const n= 20
Var m :array [1..n] of integer ;
I,j temp for i :=1 to n do :integer ;
Begin
Writeln (‘исходный массив:’);
For I:=1 to n do write (M[I]), ‘ ‘); Writeln;
A:=0;
For I:=2 to n do {сортировка «пузырьковым» методом по невозрастанию}
Begin
For J:=n downto I do
Begin
A:=A+1;
If M [J-1]<M[J] then {если элемент справа больше элемента слева, то «вытеснить» его влево- пузырек «всплывает»}
Begin
K:=M[J-1]; {обмен значениями этих элементов}
M[J-1]:=M[J];
M[J]:=K;
{печатать текущее состояние массива после каждой перестановки}
For L:=1 to n do Write (‘ ’, M[L]);
Writeln (‘Число итерации=’,A);
End;
End;
End; { завершение сортировки}
End.
Самостоятельная работа :
Дан одномерный массив целых чисел . Требуется отсортировать его так, чтобы его элементы были расположены в порядке неубывания ( а[i] <= a[i+1])
Написать программу, выполняющую сортировку введенного массива . Ввод содержимого массива осуществляется одним из 2 способов:
через датчик случайных чисел;
через типизированное описание массива в блоке CONST
ЛАБОРАТОРНАЯ РАБОТА № 12.
Обработки двумерных массивов.
Цель работы: Приобрести навыки использования операторов ввода-вывода при обработке двумерных массивов.
Литература : В.П. Попов TURBO PASСAL .для школьников. Версия 7.0.
Краткие теоретические сведения:
При подготовке к лабораторной работе следует повторить следующие вопросы: описание массивов, размещение массивов в памяти машины процедуры ввода - вывода массивов, алгоритм нахождения суммы, наибольшего, наименьшего значения элементов массива. В соответствии с заданием на лабораторную работу разработать схему алгоритма и составить программу на языке Паскаль. В программе предусмотреть вывод результатов в текстовой форме.
Кроме одномерных массивов ,рассмотренных выше ,в Паскале можно использовать многомерные массивы .двумерные массивы (матрицы )описываются следующим образом :
var <имя массива >: array {n1..n2,n3..n4 ]of <тип элементов >;
где n1..n2 - диапазон изменения первого индекса,n3..n4-диапазон изменения второго индекса .
Например :
var a : array [1..5,1..10] of integer ;
матрица из 50 элементов (5 строк ,10 столбцов ) целого типа . при обращении к элементам матрицы индексы указываются через запятую . например ,a[1,1] .
1. Пример программы для формирования и вывода матрицы 10x10 Aij=i.* j, и определения сумм ее диагоналей .
const n=10
var a: array [1..n,1..n] of integer ;
i,j,sl,s2 : integer ;
begin
for i :=1 to n do begin
for j : =1 to n do begin
a[i;j] : =i*j {формирование матрицы формулой}
write (a[i,j]:5); {вывод элементов матрицы на экран}
end;
writeln {перевод строки }
end;
sl:=0;s2:=0;
for i=1to n do begin
sl := sl +a[i,i] {сумма элементов главной диагонали}
s2 :=s2+a[i,n+1-i]; {сумма эл-тов побочной диагонали };
end;
writeln (‘sl=’,s2,’s2=’,s2);
end.
2. Пример программы для заполнения матрицы размером 5x7 случайными числами в диапазоне от -100 до 100 и определения количества отрицательных элементов в каждой строке .
const n1 =5 ;n2=7;
var m: array [1..n1,1..n2] of integer ;
n : array [1..n1] of integer ;
i;j : integer
begin
randomize ; {инициализация генератора случайных чисел}
for i : =1 to n1 do begin
for j := 1 to n2 do begin
a[i,j] : = random (201)-100 {формирование матрицы }
write (a[i,j]:5) { вывод элементов матрицы }
end
writeln; { перевод строки}
end ;
{определение количества отрицательных элементов в строках }
for i :=1 to n1 do begin
n[i]:=0;
for j :=1 to n2 do
if m[i,j]<0 then n[i]: =n[i] +1;
end;
for i: =1to n1 do
writeln (‘количество отриц. Элементов в ‘,i,’ строке =’,n[i]);
end.
Порядок выполнения работы:
Получить допуск к работе у преподавателя.
Ввести текст программы.
Провести отладку программы.
Выполнить программу, провести анализ результатов и, убедившись в правильности решения, предъявить их преподавателю.
Контрольные вопросы:
1.Понятие массива и способы его описания.
2.Организация ввода двумерных массивов на языке Паскаль.
3.Вывод текстовой информации на языке Паскаль.
4.Организация вывода двумерных массивов на языке Паскаль.
6.Алгоритм нахождения суммы и произведение элементов двумерного массива.
5.Алгоритм нахождения наибольшего значения элемента двумерного массива.
6. Алгоритм нахождения наименьшего значения элемента двумерного массива.
Задание к лабораторной работе:
Дана матрица размером 7*7. Составить программу для обработки исходной матрицы соответствии с индивидуальным заданием. В программе предусмотреть вывод на печать исходной и результирующей матриц в следующем виде:
Исходная матрица: МАТРИЦА ПО
СТРОКАМ
Результирующая
матрица: МАТРИЦА ПО
СТРОКАМ
Варианты заданий:
Вычисление количества элементов матрицы, больших 1 и меньших 5
Вычисление среднего арифметического отрицательных элементов матрицы
Вычисление суммы элементов нечетных строк матрицы
Вычисление количества положительных элементов в четных строках матрицы
Вычисление суммы элементов матрицы
Вычисление количества отрицательных элементов матрицы
Вычисление суммы положительных элементов матрицы
Вычисление суммы элементов нижнего левого треугольника матрицы
Вычисление суммы элементов верхнего правого треугольника матрицы
Вычисление суммы элементов четных строк матрицы
Вычисление суммы элементов нечетных строк матрицы
Вычисление количества отрицательных элементов четных строк матрицы
Вычисление количества элементов матрицы, кратных 5
Вычисление суммы элементов главной диагонали матрицы.
Определение минимального значения среди положительных элементов матрицы.
Лабораторная работа № 13
Подпрограммы- функции.
Цель работы: Приобрести навыки разработки простых рекурсивных и итерационных алгоритмов. Закрепление конструкций базовых структур циклов.
Литература : В.П. Попов TURBO PASСAL .для школьников. Версия 7.0.
Краткие теоретические сведения.
В языке Паскаль используется два вида подпрограмм- процедуры и функции. Программы, содержащие процедуры и функции называются модульными. Они более понятны и удобны. Процедуры и функции – это относительно самостоятельные фрагменты программы, оформленные специальным образом и снабженные именем. Имея один и тот же смысл и аналогичную структуру, процедуры и функции различаются назначением и способом их использования.
Процедуры и функции улучшают наглядность и читаемость программ. Использование имени процедуры в тексте программы приводит к активизации процедуры и называется ее вызовом. Сразу после активизации процедуры начинают выполняться входящие в неё операторы, и после выполнения последнего из них управление возвращается в основную программу, которая продолжает выполняться с оператора, стоящего непосредственно за оператором вызова процедуры. Для обмена информацией между основной программой и процедурой используются параметры, которые придают процедуре универсальность.
Функции (Function();) –это процедуры особого характера , результатом работы которой является некоторое значение , с именем функции связано ее значение .Функция определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово Funcion, идентификатор (имя) функции, заключенный в круглые скобки, необязательный список формальных параметров и тип возвращаемого функцией значения. Тело функции представляет собой блок, по структуре аналогичный программе:
Function <имя> (формальные параметры): <тип результата>;
Count….;
Type…;
Var…;
Begin
<операторы>
End;
В разделе операторов должен находиться, по крайней мере, один оператор, присваивающий имени функции значение. В точку вызова возвращается результат последнего присваивания.
Обращение к функции осуществляется по имени с необязательным указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам, указанным в заголовке, и иметь тот же тип. Например программа вычисления выражения Z=(A2+A-3)/2*AM, в которой возведение в степень выполняется функцией Step:
Порядок выполнения работы:
Получить допуск к работе у преподавателя.
Осуществить вызов системы TURBO PASCAL
Ввести текст программы.
Записать исходный модуль в файл на диске
Провести отладку программы. Выполнить программу, провести анализ результатов и, убедившись в правильности решения, предъявить их преподавателю для проверки.
Занести результаты расчета в отчет
Выйти из системы TURBO PASCAL.