Idea Transcript
МОСКОВСКИЙ АВТОМОБИЛЬНО-ДОРОЖНЫЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ (МАДИ)
Кафедра автоматизированных систем управления
Утверждаю Зав. кафедрой прбф^ессор '^.Николаев
2011 г.
А.С. КОРОТКОВ
ИНФОРМАТИКА
- основы
алгоритмов
Часть 3
Методические
указания
к выполнению лабораторных работ
РК 1ИШ01ЕКИ
МОСКВА 2011
32.973-018
6БК
004.43
УДК
ВВЕДЕНИЕ
К687
При изучении темы «Процедуры и функции» некоторые типовые
алгоритмы на языке Паскаль оформляют в виде процедур и
функций. Их можно использовать не только в той программе, частью которой они являются, В
данных
подпрограмм, находятся
в
приведенные
методических
которые
[1,2],
указаниях
оформлены
отдельном в
файле.
написаны
в
виде
рассматривается библиотечного
Программы
на
реализуют
алгоритмическом
комплекс
модуля
и
алгоритмы,
языке
высокого
Поэтому
как
проще
но и во многих других
использовать
эти
были разработаны и ранее отлажены?
программах.
подпрограммы,
Разумеется
ровать тексты подпрограмм из одной программы
которые
, можно копи-
в другую, поль-
и неудобными в отладке.
данного модуля.
которое количество процедур и функций, становятся громоздкими
лабораторных работ. Приведены примеры обращения к подпрограммам
зуясь буфером обмена. Кроме того,
уровня
ПАСКАЛЬ
и
могут
быть
использованы
при
выполнении
В
Паскале
имеется
способ
программы, содержащие не-
преодолеть
эти
неудобства,
ис-
пользуя библиотечные модули. В данных граммы,
методических
которые
указаниях рассматриваются
реализуют
Программы написаны на ня Паскаль
алгоритмы,
приведенные
подпров
[1,2]
.
алгоритмическом языке высокого уров-
и оформлены в виде библиотечного
модуля, в даль-
нейшем будем просто употреблять слово модуль. Данный модуль может быть использован при выполнении лабораторных
работ.
1. ПОНЯТИЕ МОДУЛЯ
В Паскале под модулем понимается торый
находится в
отдельном файле
комплекс и
может
подпрограмм, ко-
быть
использован
другими программами. Модуль состоит из заголовка, интерфейсной части,
исполни-
тельной части и секции инициализации. Заголовок модуля похож на заголовок сто слова
ргодгат
дуль должен
ставится
находиться
программы,
зарезервированное
в файле,
однако
слово
вме-
игл! . Мо-
имя которого совпадает
с име-
нем в заголовке, файл должен иметь расширение .раз.
32.973-018
ББК
004.43
УДК
Интерфейсная часть служит для взаимодействия основной программы с модулем. Она начинается с зарезервированного слова т1егТасе. В ней должны быть указаны константы, типы данных, менные, процедуры и функции, которые может
использовать
новная программа, вызывающая этот модуль. Если модуль
переос-
исполь-
зует еще какие-то модули, то они должны быть указаны в интерфейсной части следующим образом: пишется зарезервированное © Московский автомобильно-дорожный государственный технический университет (МАДИ), 2011
слово изез, затем что
перечисляются необходимые модули ( заметим,
так же обозначаются и модули в разделе описаний основной
программы).
Процедуры
и функции тоже
объявляются в интерфейсной части
модуля, но при этом разрешено перечислить предварительному
объявлению
их заголовки
модуля.
Здесь
подобно
при
локальных
могут быть
слова
констант,
все процедуры и
также и локальные
1тр1етеп1а1юп, далее типов
данных
описание процедур и функций,
вызове
которая
Ьедт
модуля
выглядит,
и епс!
и но
типы,
следуют
переменных, с
ргосес!иге рз( УЭГ п,пл:1п1едег); { процедура ввода размерности
матрицы,
где п,т -входной параметр типа 1п1едег,
с директивой Топмап!
В исполнительной части модуля содержатся функции
а
размерность матрицы.}
кон-
станты, метки или переменные. Исполнительная часть начинается с зарезервированного ния
обычное
кращенных заголовков, т.е. без указания в них
описазатем
использованием со-
ргосео'иге р1 (гтпп1едег;уаг а:11);
{процедура ввода массива х
как обычное
тело
с точкой находятся
устано-
программы:
операторы.
никаких подобных действий
где т
-входной параметр типа 1п1едег, размерность массива,
ргосес1иге ру1(уаг гшп1едег;уага:12);
{ процедура ввода массива х
}
{процедура ввода одномерного массива, где т
-входной параметр типа 'ш1едег,размерность массива,
а - выходной
параметр - массив типа геа!.}
Если
производить
не
ргосесЮге ру(т:1п1едег;уаг Ь:11); {процедура ввода одномерного массива,
нужно, то секция инициализации состоит лишь из слова епс!
Чтобы использовать
}
{процедура ввода одномерного массива,
а - выходной параметр массив типа 1п1едег.}
параметров.
Иногда при вызове модуля следует произвести некоторые действия, например, инициализировать какие-либо переманные,
вить какие-либо связи и т.д. Все эти действия указываются в секции инициализации, между словами
где т
кой.
с точ-
-входной параметр типа югёдег.размерность массива,
Ь - выходной параметр - массив типа 11.}
процедуры, функции и другие объекты мо-
дуля в основной программе, необходимо написать зарезервированное слово изез
ргосес!иге ресг1У(п:1п1едег;с:11);
затем имя модуля. После этого объекты модуля
можно использовать так, как если бы они были описаны в основной
{процедура печати массива
}
{процедура вывода одномерного массива,
с - выходной параметр - массив типа т1едег.}
процедуры и функции, которые, как предполагается, часто нужны
где п -входной параметр типа 1п1едег,размерность массива,
программе. В качестве
примера
приведем
модуль Ыр. где описаны,
студенту при выполнении лабораторных работ, но они отсутствуют в ргосес!иге ресНу1(п:1п{едег;с:12);
стандартной библиотеке Паскаля.
{процедура печати массива
{процедура ввода одномерного 2. БИБЛИОТЕКА ТИПОВЫХ
ПРОГРАММ
(МОДУЛЬ
}
массива,
где п -входной параметр типа 1п1едег,размерность массива,
ВТР)
с - выходной параметр - массив типа геа!.} Ниже приведен
листинг
рый содержит 38 типовых
модуля, написанный
на Паскале, кото-
программ. Оформлены они в виде
проце-
дур и функций.
ргосейиге рпт5д(п:1п{едег; УЗГ
з:т1едег);
{процедура вычисления суммы элементов одномерного массива, где п -входной параметр типа 1п1едег,размерность массива,
11М1Т Ыр;{библиотека типовых
программ
}
з - выходной параметр типа
1п1едег, сумма элементов
массива.}
1МТЕКРАСЕ изез сг1;
ргосео'иге рпт6п(п:т{едеп УЭГ за:геа1);
1уре 1=аггау[1 ..10,1 ..10] о^ Медег;
{процедура вычисления
И=аггау[1..ЮО] оПгтседег;
нечетных номеров элементов одномер-
ного массива, где п -входной параметр типа 1п1едег,размерность массива, за - выходной параметр типа
геа!,среднее арифметическое зна-
чение.} г***
**,}
ргосес!иге рпт7^л:1п1едег; уаг р:геа1);
{ процедура вычисления произведения элементов одномерного массива, где п -входной параметр типа 1п1едег,размерность массива, р - выходной параметр типа
1п*едег, произведение
элементов
7 {процедура печати матрицы, где п,т -входные параметры типа 1п(едег,размерность матрицы, с - выходная матрица типа 1п1едег.} ^«**«*****м.«,*****,********«******.*.,***»«*****,*****«**^ ргосебиге рпт13_а(п,т:1п1едег; уаг с:1);
массива.}
{ процедура вычисления произведения
двух
матриц,
где п,т -входные параметры типа т^едег.размерность матрицы,
Типсйоп (аК(п:1п1едег )Медег; {функция вычисления факториала п!, где п
- входной параметр.}
с - выходная матрица типа 1п1едег.} ^************.*******...*.****************«**********.*********^ ргосес!иге рпт13_Ь(а,Ь:1;п,т:1п1едег;уаг с:1);
ргосейиге рпт101:(п:т1едег; уаг с:1п1едег;); {процедура вычисления
произведения двух одномерных масси-
{процедура умножения матриц, где п,т -входные параметры типа 1п1едег,размерность матрицы,
вов, где п -входной параметр типа 1п{едег,размерность массива, с - выходной параметр типа мерных
1п1едег, произведение двух одно-
а,Ь - матрицы типа 4, с - выходная матрица типа 1}
массивов.} ргосейиге рпт14_а(уаг { процедура вычисления
ргосейиге рпт11_а(п,т:!п1едег; маг э:\ {процедура ввода
п,т:!п1едег; уаг с:11 ); произведения матрицы на вектор,
где п,т -входные параметры
матрицы,
где п,т -входные параметры типа 1п1едег,размерность матрицы, с - выходная матрица типа 1п1едег.}
типа 1п1едег,размерность матрицы,
с - выходной вектор типа !п1едег.} 1*****«,.*,**,*********.«**.,*,***»*****,.***.***.**.*.«*«**„**^ ргосейиге рпт14_Ь(уаг п,т:т1едег;уаг а:1;уаг Ь:11 ;уаг с:11 ); { процедура вычисления
ргосейиге ра(п,т:1п1едег;уаг а:{);
произведения матрицы на вектор,
где п,т -входные параметры типа 1п1едег,размерность
{процедура ввода матрицы а, где п,т -входные параметры типа 1п1едег,размерность матрицы,
матрицы,
а - матрица, с - выходной вектор типа 1} ^***********«*************************,*******««*,**,**«*»«^
а - выходная матрица типа 1}
ргосес!иге рлт15_а(уаг п:'щ{едег; уаг е:11 );
ргосео'иге рЬ(п,т:1п1едег;уаг Ь:1);
{ процедура вычисления единичной матрицы,
{процедура ввода матрицы Ь, где п,гп -входные параметры типа 1п1едег,размерность матрицы,
где п,п -входные параметры типа мт1едег,размерность матрицы, е - выходная
Ь - выходная матрица типа 1}
матрица типа 1п1едег.}
ргосес!иге рпгл15_Ь(уаг пмп1едег;уаг е:1);
ргосесШге рпт12_а(п,т:1п1едег; уаг с:1);
{ процедура вычисления
{процедура сложения матриц, где п,т -входные
параметры типа 1п1едег,размерность матрицы,
единичной матрицы,
где п,п -входные параметры типа 1п1едег,размерность матрицы, е - выходная матрица типа 1п1едег.}
с - выходная матрица типа 1п1едег.}
ргосео!иге рпт16_а(уаг п,т:1п{едег; уаг а,а4:1);
ргосес!иге рпт12_Ь(а,Ь:{;п,т:т1едег;уаг с:1);
{процедура транспонирования
{процедура сложения матриц,
матрицы,
типа 1л1едег,
а,Ь - матрицы типа I,
где п,т -входные параметры типа !п4едег,размерность матрицы а
где п,т -входные параметры типа Медег,размерность матрицы,
а1 - выходная матрица типа 1п1едег.}
с - выходная матрица типа 1}
ргосейиге рпт16_Ь(п,гп:т1едег;уаг а,а1:1);
ргосейиге респ(п,гшп1едег;уаг с:1);
{процедура транспонирования матрицы, где п,т -входные параметры типа 1п1едег,размерность матрицы а типа 1п1едег, а! - выходная матрица типа 1п1едег.}
ргосес!иге рпт19_а(уаг п:1п1едег;уаг х:12); {процедура сортировки элементов одномерного массива в порядке возрастания, где п -входной параметр типа 1гЛедег,размерность массива,
ргосес!иге рпт17_а(уаг п:т1едег; уаг х1п:11
);
х - выходной параметр - отсортированный массив типа |,,***«**.**.**«**«***********.**.*******«*********.*********.^
геа!.}
{процедура инверсии элементов одномерного массива, где п -входной параметр типа 1п1едег, размерность массива, хт
- выходной параметр - инвертированный массив типа
!п{едег.}
ргосео'иге рпт19_с(уаг п:1п1едег;уаг х:12); {процедура сортировки
элементов одномерного
массива
в порядке
возрастания, ргосео'иге рпт17_Ь(уаг
где п -входной параметр типа т^едег,размерность массива,
т:т1едег; уаг х,х!п:11);
{процедура инверсии элементов одномерного
х - выходной параметр - отсортированный
массива,
массив типа
геа!.}
где п -входной параметр типа 1п1едег,размерность массива х, х
ргосейиге рпт19_Ь(уаг п:1п1едег;уаг х:12);
- массив,
х'т - выходной параметр - инвертированный массив типа
И.}
{процедура сортировки
элементов одномерного
массива
в порядке
убывания, где п -входной параметр типа т*едег,размерность массива,
ргосео'иге рпт18_а(п:т1едег;уаг хт:1п1едег); { процедура поиска минимального
элемента
одномерного
где п -входной параметр типа 1п1едег, размерность хт
- выходной
параметр - минимальный
массива,
х - выходной параметр - отсортированный
массив типа
геа!.}
массива,
элемент массива типа
ргосейиге рпт19_с1(уаг п:1п{едег,уагх:12); {процедура сортировки элементов одномерного массива в порядке
1п1едег.}
убывания, где п -входной параметр типа 1гЛедег,размерность массива,
ргосес!иге рпт18_с(п:1п1едег;х:11 ;уаг хт:т4едег); {процедура поиска минимального элемента одномерного массива,
х - выходной параметр - отсортированный
массив типа
геа!.}
где п -входной параметр типа 1п4едег,размерность массива, х
ргосес!иге рпгп20_а(уаг г:геа1);
- массив типа 11,
хт
- выходной параметр - минимальный элемент массива
типа
{ процедура вычисления
суммы бесконечного ряда с заданной точ-
ностью,
1п1едег.}
где 2 -выходной параметр - сумма ряда типа
геа!.}
ргосес)иге рпт18_Ь(п:1п1едег, х:11; уаг хт:т1едег); {процедура поиска максимального элемента одномерного массива, где п -входной параметр типа 1п1едег,размерность хт
- выходной параметр - максимальный
массива,
элемент массива
типа
Яшсйоп с!едгее(х:геа1;п:Ьу1е):геа1; {функция возведения
числа в положительную
степень,
входные параметры х - типа геа! -число, возводимое в степень,
1п1едег.}
п - типа Ьу1е - основание степени, функция возвращает результат типа геа!
ргосес!иге рпт18_о'(п:т1едег;х:11 ;уаг хгггМедег);
}
{процедура поиска максимального элемента одномерного массива, ргоседиге рпт21_Ь(уаг п,т:т{едег;а:1;уаг Ь:1;К:1п{едег);
где п -входной параметр типа 1п1едег,размерность массива, хт
- выходной параметр - максимальный элемент массива типа
{ процедура умножения числа на матрицу а, где п,т -входные
1п1едег.}
параметры типа 1п1едег,размерность матрицы а,
Ь - матрица, умноженная
*}
Г*"""*'
на число К,
К - число типа 1п1едег.}
10 ргосебиге респу;
1МР1ЕМЕМТАТЮМ
{**** начало ргосебиге рз(уаг п,т:1п1едег) процедуры **********}
Ьедт
{ процедура печати массива
}
{ раздел операторов процедуры }
1:ог]::=1 1о п йо
{
цикл по
]}
ууп1е!п(с[)]); { конец цикла по ] }
ргосес)иге рз;
епб; { конец процедуры }
Ьедт т'Ле ('Введите количество строк и столбцов матрицы — > ');
{**** конец ресг1У(п:1п!едег;с:11) процедуры ************
геаб1п(п,т);
***}
епо1; {**** конец ргосес!иге рз(уаг п,т:'т1едег)
процедуры ************}
{**** начало ргосес!иге р1(т:1п1едег;уаг а:11) процедуры ********}
{**** начало респу1(уаг п:т1едег;уаг с:12) процедуры
ргосебиге респу1; уаг ]:1п1едег;
ргосебиге р1 ;
{ процедура ввода массива х
}
епб;
{ раздел операторов процедуры }
йэг 1:=1 1о п с!о
{
цикл по
Ьед!п (ог ]:=1 Ь п бо №гИе1п(сО]:6:1)
уаг 1:т1едег; Ьед!п
{******* конец респу1 (уаг п:!п{едег;уаг с:12) процедуры
I }
геаб(а[1]); { конец цикла по \ епй; { конец процедуры
{**** начало рпт5д(п:1п1едег;уаг з:1п1едег) процедуры
}
**
{**** конец ргосебиге р1(т:(п1едег,уаг а:11) процедуры **********} ^*«***««****.*********.****.**.**********.********************^
ргосебиге рптбд; |**********«****************«*************.********************|
{**** начало ргосес!иге ру(т:1п{едег;уаг Ь:11) процедуры
********}
р****.*.***«**************.**.****«*******.**.**.************|
1уре 1=аггау[1 .,100] о^ 1п1едег; уаг
ргосебиге ру;
{ Раздел типов
{ Раздел описания переменных
х:*;
Ьедт
}
}
{ х переменная типа I }
ап1едег;
*гИе ('Введите размерность вектора — > ');
{
1
переменная целого типа
}
геас11п(т); \л/п1е!п(' Введите
вектор ');
ргосебиге р1(п:1п{едег;уагх:1);
р1(т,Ь);
{ процедура ввода массива х
}
уаг 1:1п1едег;
епй;
Ьедт
{**** конец ргосес)иге ру(пг.1п1едег;уаг а:11) процедуры **********}
{ Раздел операторов процедуры
1Ъг 1:=1 1о п бо
{
цикл по
}
1}
геаб(х[1]); { конец цикла по 1 } {**** начало ру1(уаг т:'т1едег;уаг а:12) процедуры
*}
ргосейиге ру1;
1ог 1:=1 1о т
епб; { конец процедуры
ВЕ61М
уаг 1:1п1едег;
}
{ раздел операторов основной программы }
р1(п,х); {обращение к процедуре р1, передается п, получаем
Ьедт
массив х
с!о геас1(а[1]);
}
з:=0;
епс); {**** конец ру1(уаг т:1п(едег;уаг а:12) процедуры ***************}
{**** начало респу(п:'т!едег;с:{1) процедуры
*******************}
Тог 1:=1 1о п бо
{ цикл повторяется п раз), сразу после бо
вы-
полняется суммирование з:=5+х[1]} з:=з+х[1]; ЕМО;
{
конец процедуры рптбд }
12
{******* конец рпт5д(п:т1едег;уаг 8:1п1едег) процедуры ********} (**.......*.,*.**.*....*.*.,*.„,.*..**.*..*,„......*..,. .„*.•*....} {**** начало рпт6п(п:т1едег;уаг за:геа!) процедуры
Ьед1п
13
{ раздел операторов процедуры }
йэп:=1 1о п с!о
***********}
{цикл п о ! }
геас!(х[|]); ело1;
{конец цикла по 1
{ конец процедуры
}
}
ргосейиге рптбп; 1аЬе11; 1уре 1=аггау[1..100] о? т1едег; уаг
{ Раздел типов
{Раздел описания переменных х;{;
{
х
1,з:!п1едег; г:геа1;
{г
переменная {
(,з
}
ВЕС1М
}
р1(п,х);
типа 1 }
{ раздел операторов основной программы {вызов процедуры ввода массива х
}
вещественного типа
}
!ог !:=1 1о п о!о { цикл по I} }
р:=р*х[1]; ЕШ; {
{ процедура ввода масжива х
{конец цикла по 1
}
конец процедуры рпт7Т}
} {******* конец рпт7((п:1п4едег;уаг р:геа!) процедуры ***********}
уаг 1:1п1едег; {раздел операторов процедуры
}
, {**** начало
{ цикл по 1}
геас!(х[|]);
1ипс1!оп ^аК(п:1п1едег):1П{едег функции
} уаг
{вызов процедуры ввода, параметры - массив
**********}
{конец цикла по I}
{ конец процедуры
{ раздел операторов основной программы
X
}
{ раздел описания переменных
ВЕС1М
, п -размерность
}
{
1^
переменные
{ цикл
по
1}
}
целого типа
}
{ раздел операторов основной программы
}
г.=1;
(:=П;
Ьед1п
}
р:=1;
переменные целого типа
переменная
ргосейиге р1(п:!п4едег;уаг х:1);
Ьед1п
йэг 1:=1 1о п с!о
епо!;
!Д:т1едег; ВЕ01Ы р1(п,х); массива,
(ог 1:=1 1о п йо { цикл
з:=0; йэг !:=1 1о п 6о
по I }
{конец цикла по \
ГаК:=г,
{ начало цикла по I}
ЕМО;
{
конец функции
}
К I той 2 =01пеп до1о 1; {******* конец
з:=5+х[1]; 1:епо!;
Шпсйоп ^аК(п:1п{едег):1п1едег функции *********}
{ конец цикла по I} {**** начало рптЮ^(п:1п*едег;уаг с:1п1едег) процедуры
К \й 2 =0 1пеп г:=п/2 е!зе г:=1гипс(п/2)+1;
********}
за:=з/г; ЕЫО; {
ргосейиге рптЮт;
конец процедуры рп'тбп }
{уре 1= аггау[1 ..100] о^ 1п1едег; {*"**** конец рптбп(п:1п1едег;уаг ба:геа!) процедуры **********}
уаг
р«*«»«**.*,***«.««**,*********»***«*«**«*****«.,****^ рпт7^(п:1п1едег;уаг р:геа!)процедуры
************}
{ раздел типов
{ раздел описания переменных
а, Ь,с):{; {**** начало
{ а,Ь,с!
(:1п1едег;
^«***.*****,*.*****«.**«.*«*«,****,..*,„****.***,«***.,.*,|
{
I
переменные
типа
}
} I }
переменная целого типа
}
ргосейиге рг!т7Т; 1уре {=аггау[1..ЮО] о^ т(едег; уаг
{ Раздел типов
{ раздел описания переменных
х:(;
ргосейиге р1(уагс!:1);
}
{
Ьед!п
I переменная целого типа
{процедура ввода массива 6
}
уаг 1:т1едег;
}
{ переменная х типа I } г;
{ раздел операторов процедуры
йэг 1:=1 {о п с!о
}
{ цикл
геас!(с1[|]); ргосейиге р1(п:1п{едег; уагх:1);
{ процедура ввода массива х
}
епй;
}
по I}
{конец цикла по I
{ конец процедуры
}
}
ВЕС1М
14
ргосейиге респ(с:4); {раздел операторов основной программы
{вызов процедуры
р2(Ь);
{вызов процедуры ввода в массив
р1(а);
ввода в массив
}
{
15
процедура печати матрицы с
}
уаг |',рп1едег; Ьед1п
а}
{ Раздел операторов процедуры }
1Ъг 1:=1 1о п йо {цикл
Ь}
по I}
Ьедт { Начало цикла по I }
с:=0; 1Ъг 1:=1 !о п йо с:=с+а[|]*Ь[!]; ЕЫО; {
ууг.йе!п;
{ цикл по I } {конец цикла по I
конец процедуры рпт10?
{ Переход на другую строку
1Ъг ]:=1 *о т
}
}
с!о { цикл по ] }
\л/п1е(ср,]]:4); { печать элементов матрицы, конец цикла по]
}
}
епс1; { Конец цикла по 1 } {******* конец рпт101:(п:1п1едег;уаг с:т1едег) процедуры *******}
{**** начало рпт11_а(п,т:1п1едег;уаг а:4) процедуры
***********}
уаг
{Раздел описания переменных {
1,1
переменные
епй;
{ Конец процедуры
}
*******}
}
целого типа
ргосейиге рпт12_а;
}
{ Раздел операторов основной программы
Гог ]:=1 1о т
{
*}
{******* конец респ(п,т:1п1едег;уаг с:1) процедуры
{**** начало рпт12_а(уаг п,т:1п4едег;уаг с:() процедуры
ргосейиге рп'т11_а^
1,рп1едег; ВЕС1М
}
уаг
{ раздел описания переменных |',]:!п{едег;
1ог 1:=1 1о п йо {цикл по 1}
а,Ь:1;
с!о {цикл по Д
геай(а[!,]]); ЕШ;
{
I,]
переменные
целого типа
}
}
{ а,Ь переменные типа I }
{ конец цикла по I, ]}
конец процедуры рпт11_а
ВЕС1М
}
{ раздел операторов основной программы
}
дап{е(' Введите количество строк и столбцов матрицы — > '); {******* конец рпт11_а(п,гтп1едег;уага:1) процедуры
**********}
{».*,********«*******,..****..**««»***,*,,,******»****»«,*****»1
геасЯп(п,т); \лг|{е1п('Введите матрицу а ( ',п,'х',т,')','
{**** начало ргосейиге ра(п,гтл{едег;уаг а:1) процедуры
********}
ргосейиге ра;
построкам
');
рп'т1 1_а(п,т,а); { вызов процедуры для ввода матрицы а
№п{е!п('Введите матрицу Ь ( ',п,'х',т,')',' по строкам
Ьедт
}
');
рпгл1 1_а(п,т,Ь); { вызов процедуры для ввода матрицы Ь
}
уугКеЦ' Введите матрицу аС.п.'х'.т,')',' по строкам'); рпт11_а(п,пга);
Ьг 1:=1 {о п йо { цикл
епй;
("ог ]:=1 1о т
{**** конец ргосейиге ра(п,т:т1едег;уаг а:1)
процедуры *********}
йо
1 }
{ цикл
с[1,]]:=а[|,]]+Ь[|',]]; ЕМО; {
2}
{ конец цикла 1 ,2
}
конец процедуры рпт12_а }
{**** начало ргосейиге рЬ(п,т:1п{едег;уаг Ь:() процедуры ********} {******* конец рпт12_а(уаг п,тмп*едег;уаг с:1) процедуры
******}
ргосейиге рЬ; {**** начало рпт12_Ь(а,Ь:1;п,т:1п1едег;уаг с:1) процедуры
Ьед1п
*****}
\лгп{е!п(' Введите матрицу Ь(',п,'х',т,')',' по строкам'); ргосейиге рпт12_Ь;
рпт11_а(п,т,Ь);
уаг
епй; {**** конец ргосейиге рЬ(уаг п,т:1п{едег;уаг а:{)
Ц:т{едег;
процедуры ****}
ВЕ01Ы {**** начало респ(п,гтп1едег;уаг с:1) процедуры
***************}
16
1 1о т
17 уаг
1:=1 1о п с!о
|,],к,з:1п1едег;
с!о
ВЕС1М {Перемножение матриц}
ЕШ; {"***** конец рпт12_Ь(а,ЬЛ;п,т:)гйвдвг;уаг с:1) процедуры ****}
йэг К:=1 1о п йо Ьедт
*}
С
{**** начало рпт13_а(уаг п,т:т{едег;уаг с:1) процедуры
1Ъг 1:=1 1о п до
*******}
Ьед!п
з:=0;
ргосео'иге рпт13_а; уаг
{Раздел описания переменных
У,к,5,п1,т1:'1п1едег;
{
1,],к,5,п1,т1
Й5Г ]:=1 1о т
}
переменные
целого типа
с[к,1]:=з;
епо1; епо1;
{ раздел операторов основной программы }
Введите количество строк и столбцов матрицы
,'"
'
{вывод матрицы С }
А —> ');
\л/п1е!п('матрица С = А х В1); по строкам
ЕШ;
');
рпт11_а(п,т,а); {Вызов процедуры для ввода матрицы а
{******* конец рпт13_Ь(а,Ь:1;п,т:т{едег;уаг с:1) процедуры ****}
}
В —> '); {**** начало рпт14_а(уагп,т:1п1едег;уагс:11 ) процедуры
геао!1п(п1,т1);
Ьедш
',п,'х',т,')',' по строкам
****}
ргосебиге рпт14_а;
');
уаг
}
{Раздел описания переменных
}
{а,Ь переменные типа 1,11 соответственно
д:т1едег;
{цикл 1 }
{
У
переменные
целого типа
}
}
{начало цикла 1 } ВЕС1М
{цикл 2 }
{ начало
{ Раздел операторов основной программы}
\л/п'1е(' Введите количество строк и столбцов матрицы
цикла 2 }
з:=0;
—> ');
геас!1п(п,т); \лт1е1п('Введите матрицу а (',п,'х',т,')','
йо
по строкам
');
рпт11_а(п,т,а); { Вызов процедуры для ввода матрицы а
8-з+ардГВД;
}
\лт!е(' Введите размерность вектора —> ');
{ конец цикла 2
{конец цикла 1
{
с!о
з:=5+а[к,]]*Ь[(,|];
}
а:1;Ь:1;{ а,Ь переменные типа I } {***«*******..*****************.***»**} ВЕС1Ы шЛе('
геас!!п(п,т); \лт1е1п('Введите матрицу а (',п,'х',т,')','
\мг!1е(' Введите количество строк и столбцов матрицы
\л/гйе1п('Введите матрицу Ь (
рпт11_а(п1 ,т1 ,Ь); { Вызов процедуры для ввода матрицы Ь
а:1;Ь:11;
{перемножение матриц} 1Ъг к:=1 1о п бо
(ог 1:=1 1о п о"о Ьедт
1"ог]:=1 1о т
с[К,1]:=з; епо1; епй;
}
геас11п(т);
}
\лт1е!п(' Введите
{вывод матрицы С } \л/п1е!п('матрица ЕЫО;
р1(т,Ь);
С = А х В');
вектор
}
Ьед!п
');
{Вызов процедуры ввода массива
Ьп:=1 1опс1о
конец процедуры рпт13_а
{цикл
с}
1}
{ начало цикла 1 }
сй~0; {******* конец рпт13_а(уаг п,т:1п1едег;уаг с:*) процедуры ******} ^.*************.«**,*********,***м«**********************»*,******,***,^
!ог]:=Нотс!о
{цикл 2}
с[|]:=с[|]+ар,Д*Ь[|]; {**** начало рпт13_Ь(а,Ь:1;п,т:1п{едег;уаг с:() процедуры ^**«.,**«.*.*.*.***«**„*.«*.********«»,.*****«***»*****«*^
*****}
епо!;
{ конец цикла
{конец цикла 2} 1 }
\л/п1е!п('матрица С = А х В'); ргосейиге рпт13_Ь;
респу(п.с);
{Вызов процедуры печати вектора
с}
ЕШ; {
18
конец процедуры рпт14_а}
{**** конец рпт14_а(уаг п,т:т{едег;уаг с:11 ) процедуры *******}
19
]:=1 ю п с)о
\\п е[! Л:=1 е1зе е[1,Д:=0;
р.*****************..****.*.**.*********.**********************} {**** начало рпт14_Ь(уаг п,т:1п1едег;уаг а:{;уаг Ь:11 ;уаг с:11 )процеду~
„«Д**.».-'
Р
.... • • < . . , * . - . - . , . . . .
.....,.,-,,,^,...,
ЕМО; {******* конец рг!т15_Ь(уаг п:1п1едег;уаг е:1) процедуры
"'
I
{**** начало
'.................'......'......"":"".....™—
рпт16_а(уаг п,т:1Шедег; уаг а,а1:1) процедуры ***}
ргосейиге рпт14_Ь;
уаг ргосес)иге рпт16_а;
1,рп1едег;
уаг
ВЕС1Ы
{Раздел описания переменных ЬргЛедег;
Тог 1:=1 1о п о!о
{
\,\е целого типа
}
}
Ьедт с[1]:=0;
ВЕ61Ы
й>г]:=1 1о т
о!о
{Раздел операторов основной программы}
№пЧе(' Введите количество
строк и столбцов матрицы
—> ');
с[1]:=с[|]+а[иг Ь[{1}]]; геасйп(п,т);
епс1;
\л/пЧе!п('Введите матрицу а (',п,'х',т,')','
ЕМО;
*}
{
1,]
'); }
с!о {цикл 1}
Топ:=1 1о п бо
*********}
а1[1,]]:=аО,1];
{ Раздел описания переменных 1,рп{едег;
по строкам
рпт11_а(п,т,а); {Вызов процедуры для ввода матрицы а
{**** конец рпт14_Ь(уаг п,т:1п{едег;а:{;Ь:{11;уаг с:11 ) процедуры ***}
1Ъп:=1 1о т Г
{**** начало рпт15_а(уаг п:'т1едег;уаг е:1) процедуры
{ цикл 2} {конец цикла 1,2}
\мгКе1п('матрица транспонированная АТ);
ргосейиге рпт15_а; маг
переменные
ЕШ; {
}
целого типа
конец процедуры рпт16_а
}
{******* конец рпт16_а(уаг п,пп:1п1едег; уаг а,а1:1) процедуры **}
}
« « . . . . . . * . . . . « « « « . „ « « . „ п
г
ВЕС1Ы
{******* начало рпт16_Ь(п,т:т1едег;уаг а,а1:1) процедуры
{ раздел операторов основной программы }
\мИе(' Введите количество строк и столбцов матрицы
*****}
р.*******«*.*.******.****************************.****.**.*,*^
—> '); ргосебиге рпт16_Ь;
геао'1п(п,п); Топ:=1 1о п с!о
{ цикл
Ьг]:=1 1о п с!о
уаг
1}
{ цикл
{Раздел описания переменных г;
2}
I? 1=] 1пеп е[|,]]:=1 е!зе е[!,]]:=0; ЕЫО; {
{
!,]
}
переменные целого типа
}
{ конец цикла 1,2}
конец процедуры рпт15_а
} ВЕ01Ы
{ Раздел операторов основной программы}
йэп:=1 *о т
{*"**** конец рпт15_а(уаг п:1п1едег;уаг е:1) процедуры ********}
бо { цикл 1}
1гог]:-Но п с)о
Г {**** начало рпт15_Ь(уаг п:1п!едег;уаг е:1) процедуры
афЛ:=аО,1];
** ЕМО; {
{ цикл 2}
•
-
{конец цикла 1,2}
конец процедуры рпт1б_а
}
{******* конец рпт16_Ь(п,т:1п{едег; УЗГ а,а1:4) процедуры ******}
ргосео'иге рг1т15_Ь;
уаг
^ {**** начало рпт17_а(уаг п:!п{едег; уаг х1п:11) процедуры
1,рп1едег;
*****}
ВЕ^1N ргосебиге рпт17_а;
геас!1п(п,п);}
уаг
Тог 1:=1 1о п с!о
{ Раздел описания переменных
}
х:11;
{х
20
переменная типа 11 }
1,т:1п{едег; { ело1;
I
переменная целого типа
{ Конец процедуры
}
хт:=х[1]; Ьг \:=2 1о п с!о
{цикл }
1т хт > х[1] 1пеп хгп:=х[1];
}
ЕШ. { ВЕС1Ы
{ Раздел операторов основной программы }
{конец цикла по
конец процедуры рпт18_а
1}
}
{***** конец рпт18_а(п:1п(едег;х:1;уаг хт:т1едег) процедуры ********}
\л/п1е(' Введите размерность вектора — > '); {**** начало рпт18_с(п:т{едег;уаг х:11 ;хт:1п1едег) процедуры
геасЛп(т); \л/п1е!п(' Введите р1(гп,х);
{
вектор
******}
');
обращение к процедуре р1
1Ъг 1:=1 1о п с!о
}
{цикл по 1 }
хт[|]:=х[п+1ч]; {конец цикла
ргосесШге рпт18_с; уаг
{ Раздел описания переменных
1:1п1едег;
по!}
{
1
}
переменная целого типа
}
\л/п1е!п; \лт1е1п('Перестановка массива в обратном порядке - '); респу(т,хт); ЕШ; {
{, обращение
к процедуре респу
конец процедуры рпт17_а
ВЕС1Ы хт:=х[1];
}
Ьг \:=2 {о п о!о
}
!т хт
{******* конец рпт17_а(уаг п:1п1едег; уаг х!п:11) процедуры ******}
ЕШ. { {"** начало рпт17_Ь(уаг п:т1едег; уаг х,х!п:{1) процедуры
*****}
{цикл }
> х[|] Шеп хт:=х[!];
. {конец цикла по
конец процедуры рпт18_с
I}
}
{******* конец рпт18_с(п:1п1едег;уаг х:11;хт:1п1едег) процедуры *****} Г
ргосебиге рпт17_Ь;
г
уаг
ргосейиге рпт18_Ь;
пп(едег; {
ВЕ61М
I переменная целого типа
}
уаг
{ Раздел описания переменных
х:11;
{ Раздел операторов основной программы }
•Тог 1:=1 1о п с!о
{х
тп'едег;
{цикл по \
хт[|]:=х[п+1-|];
{конец цикла
конец процедуры рпт17_Ь
переменная типа 11 {
I
}
}
переменная целого типа
}
по!} ВЕС1М
ЕШ; {
{ Раздел операторов основной
программы }
' Введите размерность массива —> ');
}
геай1п(п); ^п1е1п(' Введите
{******* конец рпт17_Ь(уаг п:т!едег; уаг х,х!п:{1) процедуры ****}
р1(п,х): {**** начало рпт18_а(п:т1едег;уаг х:1; хт:1п!едег) процедуры
{
массив
}
{цикл }
1тхт < х[1] Шеп хт:=х[1];
{ Раздел описания переменных {х
');
обращение к процедуре р1
хт:=х[1];
**}
1ог \:=2 1о п о'о П ! ! ! ! ! ! ! ! ^ ^
{конец цикла по
1}
\лт1е1п('Максимальный элемент - ',хт);
ргосейиге рпт18_а; уаг
{
1:т1едег;
переменная типа 11
х:11 ;
\я целого типа
ЕНО. {
}
}
конец процедуры рпт18_Ь
}
Г
*}
{**** начало рпт18_с1(п:1п(едег;х:{1;уаг хт:т1едег) процедуры
}
******}
р******».,***..,***,*,******.******.*} ВЕС1М
ргоседиге рпт18_с1{(п:1п{едег;х:{1 ;уаг хт:1п{едег)};
{ Раздел операторов основной программы }
уаг
мп1е(' Введите размерность массива — > ');
{ Раздел описания переменных
х:11;
геасПп(п); \л/п1е1п(' Введите р1(п,х);
{
массив
{х
кт1едег;
');
обращение к процедуре р1
переменная {
I
типа И
}
}
переменная целого типа
}
}
ВЕС1М
23
{Раздел операторов основной программы }
хт:=х[1]; 1Ъг 1:=2 1о п с!о
{цикл }
1тхт < х[1] 1пеп хт:=х[1]; ЕМО. {
{конец цикла по
конец процедуры рпт18_Ь
1 {**** начало рпт19_Ь(уаг п:1п!едег;уаг х:(2) процедуры
********}
1} ргосео'иге рпт19_Ь;
}
уаг
{ Раздел описания переменных
г:геа!;
{******* конец рпт18_о!(п:1п1едег;х:11;уаг хт:т{едег) ^*«*«***«**.*.*««*.*.*****«***********««**********«„,„««
{
}
г переменная вещественного типа }
1,рп1едег; { (,] переменные целого типа .«„««.«.«.„.«„.«„.«„п
}
г
{**** начало рпт19_а(уаг п:(п{едег;уаг х:12) процедуры
***'
^**.**.«***«*******,*****.««*.««**»*****.***.«**.**«***^
ВЕС1Ы
ргосео'иге рпт19_а; уаг
с1гзсг;
{ Раздел описания переменных
г:геа!;
{
{ Раздел операторов основной программы } {Очистка экрана дисплея цветом фона
}
\лм1'1е(' Введите размерность массива —> ');
}
геас)1п(п);
г переменная вещественного типа }
1,]:(п1едег; { \,\е целого типа « . „ . * . . ™ ™ * ™ ™ . }
(' Введите
}
г
ВЕС1Ы тЛе('
ру1(п,х);
{
массив
');
обращение к процедуре ру1
эг 1:=1 (о п -1 с!о
{Раздел операторов основной программы }
1 *о п
Введите размерность массива —> ');
{цикл
йо
}
1}
{цикл
2}
');
рп'т17_а(п,хт); {обращение к процедуре инверсии
геасПп(п);
элементов одномерного массива }
р1(п,х); {обращение к процедуре ввода одномерного массива } рп'т18_с(п,х,хт); {обращение к процедуре поиска минимального элемента
ргодгат рЫр7Ь; { Перестановка массива в обр. порядке - вариант 2 } изез сгт,,Ыр; {подключение модуля
сг1 и Ыр
одномерного массива
}
«гКе!п('Минимальный элемент - ',хт);
}
ЕШ.
уаг т,пп1едег; Ь,хт:11; ВЕС1Ы
массива
рпт17_Ь(т,Ь,хт); {обращение к процедуре инверсии
3.8. Программа
ру(т,Ь); {обращение к процедуре ввода одномерного массива }
поиска максимального
элемента
одномерного
элементов одномерного массива } «т1е1п('Перестановка вектора в обратном порядке - ');
Контрольный пример:
респу(т,х1п); {обращение к процедуре печати одномерного масси(
ва}
3
4
5
2
1 )->5
ЕЫО. ргодгат рЫр8Ь;{ Максимальный элемент - вариант изез сг1,Ь{р; {подключение модуля 3.7. Программа
поиска минимального
элемента
сг1 и Ыр
1}
}
уаг п,хгшп1едег;
одномерного
массива
х:Л; ВЕС1М
Контрольный пример:
рпт18_Ь(п,х,хт); {обращение к процедуре поиска максимального элемента одномерного массива
(
2
3
4
5
1 )->!
}
\л/гНе1п('Максимальный элемент - ',хт); V
ЕШ.
ргодгат рЫр8а;{ Минимальный элемент - вариант 1} изее сп:,Ыр; {подключение модуля
сг1 и Ыр
} ргодгат рЫр8Ы\{ Максимальный элемент -
уаг п,хт:1п1едег;
изез сгЩр; {подключение модуля
вариант 2 }
сП и Ыр }
уаг п,хт:1п1:едег;
32
х:П;
33
ЕМО.
ВЕ61М ш1е ('Введите размерность массива —> '); геао'1п{п);
3.10. Программа в порядке
сортировки элементов
одномерного массива
убывания
р1(п,х);{обращение к процедуре ввода одномерного массива } рпт18_с!(п,х,хт); {обращение к процедуре поиска максимального элемента одномерного
массива
Контрольный пример:
}
\л/п1е1п('Максимальный элемент - ',хт);
(
2
1
3
5
4
)->-(
5
4
3
2
1 )
ЕШ. ргодгат рЫр9Ь;{ Сортировка в порядке убывания изез сг1,Ыр; {подключение модуля 3.9. Программа
сортировки
элементов
одномерного
массива
сг{ и Ыр
вариант 1}
}
уаг п,хт:1п1едег;
в порядке возрастания
х:12; ВЕС1Ы
Контрольный
пример:
рпт19_Ь(п,х);{обращение к процедуре сортировки
массива
в порядке убывания} (
5
3
4
1
2
)->(
1
2
3
4
5 )
ЕШ.
ргодгат рЫр9а;{ Сортировка в порядке возрастания - вариант изез сг1,Ыр; {подключение модуля
сг1 и Ыр
1}
ргодгат рЫр9Ьо!;{ Сортировка в порядке убывания - вариант 2}
}
изез сг1,Ыр; {подключение модуля
уаг п,хт:1п4едег;
сг1 и Ыр
}
уаг п,хт:т{едег;
х:12;
х:12;
ВЕС1М рпт19_а(п,х); {обращение к процедуре сортировки
массива
ВЕС1М
в порядке возрастания}
\лт*е ('Введите размерность массива —> ');
ЕШ.
геас11п(п); ру1(п,х); {обращение к процедуре ввода одномерного
ргодгат рЫр9ас;{ Сортировка
в порядке возрастания - длинный ва-
рпт19_с1(п,х); {обращение к процедуре сортировки
риант}
массива} массива
в порядке убывания}
изез сг1,Ыр; {подключение модуля
сг1 и Ыр
}
\от!{е!п('Сортировка в порядке убывания проведена');
уаг п,хт:1п1едег;
респу1(п,х);{обращение к процедуре печати одномерного
х:12;
масси-
ва} ЕШ.
ВЕС1М ш'Ае ('Введите размерность массива —> '); геао!1п(п);
3.11. Программа
ру1(п,х); {обращение к процедуре ввода одномерного
умножения матрицы на число
массива}
рпт19_с(п,х); {обращение к процедуре сортировки массива
Контрольный
пример:
в порядке возрастания} \л/п1е1п('Сортировка в порядке возрастания проведена'); респу1(п,х);{обращение к процедуре печати одномерного
масси-
ва}
2
2
2
2
2
2
34
35
ресгш1(п,х);
2
\лт'1е1п(' Элементы массива возведены в куб ');
2
1ог 1:=1 1о п йо
2
Ьед'ш у:=с!едгее(х['|],3); ш1е(у:9:3); ргодгат рЫр11Ь; изез сг!,Ыр;
{умножение числа на матрицу
{подключение модуля
сп: и Ыр
-
вариант 2
}
епс1;
} ЕШ.
уаг п.т.кМедег; а,Ь,с:{;
ЛИТЕРАТУРА
ВЕС1М с!г8сг; {очистка экрана дисплея цветом фона \мгйе('Введите число —>
}
1.
');
Короткое, А.С. ИНФОРМАТИКА тодические
геасИпОО;
указания к
- основы алгоритмов, ч.1: ме-
лабораторным
работам / А.С. Корот-
кое - М., М АД И, 2009.
рз(п,т); {обращение к процедуре ввода размерности
матрицы а}
2.
ра(п,т,а); {обращение к процедуре ввода матрицы а }
Короткое, А.С. ИНФОРМАТИКА тодические
рпт21_Ь(п,т, а, Ь,к); {обращение к процедуре
указания к
- основы алгоритмов,
лабораторным
ч.2: ме-
работам / А.С. Корот-
кое-М., МАДИ, 2010.
умножения числа на матрицу} \л/пЧе1п('Матрица, умноженная на число : '); респ(п,т,Ь);{обращение к процедуре печати матрицы }
ЕШ.
3.12. Программа возведения в степень
4
2. Библиотека типовых программ (модуль ВТР)
3
1. Понятие модуля
3
Введение
3. Примеры использования модуля Контрольный
(1.2
2.1
пример:
3.4
4.3
5.2
25
3.1. Программа сложения матриц
6.3
)->( 1.728
9.261
39.304
25
28
3.4. Программа вычисления единичной матрицы
27
3.3. Программа вычисления произведения матрицы на вектор
26
3.2. Программа произведения двух матриц
3.5. Программа транспонирования матриц 79.507
140.608
250.047 )
Имеется массив чисел
3.6. Программа инверсии элементов
{ 5.2 , 4.3, 6.3, 2.1, 3.4, 1.2 }. Провести сорти-
ровку массива в порядке возрастания, затем каждый
элемент
от-
сортированного массива возвести в куб.
3.7. Программа
поиска минимального
одномерного 3.8. Программа
Ниже приведен пример программы для данной задачи.
29
одномерного массива
30
элемента
массива
30
поиска максимального
одномерного 3.9. Программа
ргодгат рЫр1;
элемента
массива
31
сортировки элементов одномерного массива
в порядке возрастания
изез сг1,Ыр;
3.10. Программа
уаг п,1:т1едег;
х:12;
32
сортировки элементов одномерного массива
в порядке убывания
"
/
3.11. Программа
у:геа1;
33
умножения матрицы на число
33
3.12. Программа возведения в степень
34
ВЕС1Ы рпт19_а(п,х);
Литература
35