Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект_ лекций по Паскалю_ИиКТ.doc
Скачиваний:
12
Добавлен:
24.09.2019
Размер:
2.85 Mб
Скачать

Умножение матриц

Пусть даны матрица размерности n  m и матрица размерности m  k. Матрица размерности n  k равна произведению матриц A и B, если ее элементы определены по формуле

.

Рассмотрим пример умножения матрицы A размерности 2  3 на матрицу B размерности 3  4. Матрица C, равная произведению матриц A и B будет иметь размерность 2  4.

Блок-схема алгоритма умножения матриц A и B представлена на рис. 23.

Рис.23. Блок-схема алгоритма умножения матриц.

Программа.

program Umnozh_matrix;

Const

m=3;

n=2;

k=4;

Var

A : array[1..n,1..m] of integer;

B : array[1..m,1..k] of integer;

C : array[1..n,1..k] of integer;

i,j,l : Integer;

BEGIN

Writeln('Ввод матрицы A');

for i:= 1 to n do

begin

writeln('Cтрока',i:2);

for j := 1 to m do

begin

write('Столбец',j:2,'->');

readln(A[i,j])

end;

end;

Writeln('Ввод матрицы B');

for i:= 1 to m do

begin

writeln('Cтрока',i:2);

for j := 1 to k do

begin

write('Столбец',j:2,'->');

readln(B[i,j])

end;

end;

writeln('Матрица С - умножение матриц A и B') ;

for i:= 1 to n do begin

for j := 1 to k do begin

C[i,j] := 0 ;

for l := 1 to m do

C[i,j] := C[i,j] +A[i,l] * B[l,j] ;

write(C[i,j]:3)

end ;

writeln ;

end

End.

Символы и строки

Помимо числовой информации компьютер может обрабатывать символьную информацию. Паскаль оперирует с символьной информацией, которая может быть представлена отдельными символами или строками символов.

Символы

Для хранения и обработки отдельных символов используются переменные типа CHAR. Значением переменной типа CHAR может быть любой символ.

Переменная символьного типа должна быть объявлена в разделе описания переменных так:

Имя : CHAR ;

где Имя  имя переменной символьного типа; CHAR  ключевое слово обозначения символьного типа.

Примеры: otv : char ;

ch : char ;

Как и любая переменная программы, переменная типа CHAR может получить значение в результате выполнения инструкции присваивания или ввода (READ, READLN). Если переменная типа CHAR получает значение в результате выполнения операции присваивания, то справа от знака := должно стоять выражение типа CHAR, например, переменная типа CHAR или символьная константа символ, заключенный в двойные кавычки.

В результате выполнения программы

Var c1,c2,otvet : char ;

Begin

c1 := ‘*’ ;

c2 := c1 ;

write(‘Вы хотите научиться программированию ?’) ;

readln(otvet) ;

writeln(‘Ваш ответ :’, otvet)

End.

переменная c1 получает значение присваиванием значения константы, c2  присваиванием значения переменной c1, а значение переменной otvet вводится с клавиатуры.

Обратим внимание: переменная otvet объявлена как CHAR, т. е. один символ. Поэтому если в ответ на вопрос программы будет введено, например, слово “Да”, то переменная otvet получит значение ’Д’.

Переменную типа CHAR можно сравнить с другой переменной типа CHAR или с символьной константой. Сравнение основано на том, что каждому символу поставлено в соответствие число, причем символу ‘0’ соответствует число меньшее, чем символу ‘9’, символу ‘A’  меньшее, чем ‘B’, символу ‘Z’  меньшее, чем ‘a’. Таким образом можно записать

‘0’ < ‘1’ < . . . < ‘9’ < . . . < ‘A’ < ‘B’ < . . . <‘Z’ < ‘a’ < ‘b’ < . . . <‘z’.

Символам русского алфавита соответствуют числа большие, чем символам латинского алфавита, при этом справедливо следующее:

‘А’ < ‘Б’ < ‘В’ < . . . < ‘Ю’ < ‘Я’ < ‘а’ < ‘б’ < ‘в’ < . . . <‘э’ < ‘ ю’ < ‘я’.

Переменные и константы типа CHAR можно использовать при конструировании условий. В программе

Var otvet : char ;

begin

. . .

writeln(‘Продолжить вычисления ? (д / н) ‘ ) ;

readln(otvet) ;

if (otvet=‘Д’) or (otvet=‘д’) then begin

. . .

end ;

end.

переменная otvet используется для проверки ответа на запрос программы.

Обратим внимание: программа сравнивает ответ с двумя константами ‘д’ и ‘Д’, так как переменная otvet может получить ‘д’, если клавиша нажата <д> без <Shift>, или ‘Д’, если с <Shift>.

Каждый символ кодируется числом. Однако не все символы есть на клавиатуре. Например, на клавиатуре нет символов, с помощью которых рисуются рамки. Если в программе нужно ввести на экран символ, которого нет на клавиатуре, то можно воспользоваться функцией CHR, возвращающей в качестве значения символ, код которого указывается при обращении к функции. Например, в результате выполнения инструкции ch := Chr(218) ; значением переменной ch будет символ ‘‘ (переменная ch, естественно, должна быть объявлена как CHAR).

Следующая программа использует функцию CHR для оформления выводимого текста.

Program Example ;

VAR

tl,tr,bl,br,g,v : Char ;

i : Integer ;

BEGIN

tl :=chr(218) ;

tr := chr(191) ;

bl := chr(192) ;

br := chr(217) ;

g := chr(196) ;

v := chr(179) ;

write(tl) ;

for i := 1 to 34 do write(g) ;

writeln(tr) ;

writeln(v,' Пример использования функции CHR ',v) ;

writeln(v,' для рисования рамки. ',v) ;

write(bl) ;

for i := 1 to 34 do write(g) ;

writeln(br)

END.

Вот результат работы программы:

Пример использования функции CHR

для рисования рамки.