- •Информатика
- •Введение
- •Алгоритм и программа
- •Интегрированная инструментальная среда turbo pascal 7.0.
- •Начало работы
- •Клавиатура
- •Диалоговые окна
- •Подготовка текста программы Начало работы
- •Ввод текста и внесение изменений в текст программы
- •Компиляция
- •Пробный запуск программы на выполнение
- •Буфер промежуточного хранения
- •Использование справочной системы
- •Сохранение текста программы в файле
- •Отладка программы
- •Завершение работы
- •Алфавит языка
- •Символы, используемые в идентификаторах
- •Разделители
- •Специальные символы
- •Знаки пунктуации
- •Основные типы данных
- •Описание переменных
- •Инструкция присваивания
- •Выражение
- •Тип выражения
- •Выполнение инструкции присваивания
- •Константы
- •Целые константы
- •Вещественные константы
- •Строковые и символьные константы
- •Константные выражения
- •Типизированные константы
- •Стандартные функции
- •Арифметические функции
- •Функции преобразования типа
- •Функции для величин порядкого типа
- •Ввод и вывод информации
- •Инструкции write и writeln
- •Инструкции read и readln
- •Общая структура программы
- •Раздел объявлений и соглашений
- •Заголовок
- •Глобальные директивы компилятора
- •Оператор uses
- •Объявления глобальных меток, констант, типов и переменных
- •Процедуры и функции
- •Заголовок процедуры или функции
- •Объявления локальных меток, констант, типов и переменных
- •Тело процедуры/функции
- •Основной блок программы
- •Управляющие структуры
- •Условие
- •Условный оператор if
- •Условный оператор case
- •Оператор цикла for
- •Оператор цикла repeat
- •Оператор цикла while
- •Оператор безусловного перехода goto
- •Пустой оператор
- •Составной оператор
- •Массивы
- •Объявление массива
- •Некоторые типичные действия с массивами
- •Вывод массива
- •Ввод массива
- •Сортировка массива
- •Сортировка методом прямого выбора
- •Сортировка методом прямого обмена
- •Поиск в массиве
- •Поиск минимального (максимального) элемента массива
- •Операции с матрицами
- •Сложение матриц
- •Транспонирование матрицы
- •Умножение матриц
- •Символы и строки
- •Символы
- •Массив символов
- •Функция length
- •Процедура delete
- •Функция pos
- •Функция copy
- •Процедуры и функции
- •Процедура
- •Функции
- •Параметры-процедуры и параметры-функции.
- •Процедура exit
- •Директивы подпрограмм
- •Директива forward
- •Директивы far и near
- •Директива external
- •Директива assembler
- •Директива inline
- •Директива interupt
- •Рекурсия Понятие рекурсии
- •Пример программы: поиск пути
- •Вывод в файл
- •Объявление файла
- •Назначение файла
- •Инструкции вывода в файл
- •Открытие файла для вывода
- •Ошибки открытия файла
- •Закрытие файла
- •Ввод из файла
- •Открытие файла
- •Чтение из файла
- •Конец файла и конец строки
- •Введение в структурное программирование
- •Рекомендательный библиографический список Основной:
- •Дополнительный:
Умножение матриц
Пусть даны матрица размерности 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
для
рисования рамки.