- •1. Системы счисления
- •Десятичная система счисления
- •Двоичная система счисления
- •Восьмеричная и шестнадцатеричная системы счисления
- •Перевод чисел из любой системы счисления в десятичную
- •Перевод чисел из десятичной системы счисления в любую другую
- •2. Алгебра логики
- •2.1. Логические операции
- •Инверсия
- •Конъюнкция
- •Дизъюнкция
- •Эквиваленция (равнозначность)
- •Импликация
- •Антиконъюнкция
- •Антидизъюнкция
- •2.2. Нормальные формы
- •Конъюнктивная нормальная форма
- •Дизъюнктивная нормальная форма
- •3. Применение средств алгебры логики для описания функционирования устройств компьютера
- •Логические схемы
- •Построение логических схем
- •4. Практическая работа 1. Системы счисления
- •Вопросы для самоконтроля
- •5. Практическая работа 2. Алгебра логики
- •Решение логических задач средствами алгебры логики
- •Индивидуальное задание к модулю 1. Построение логических схем по заданным булевым выражениям
- •Приложение 1. Практическое занятие 1 «Системы счисления»
- •Приложение 2. Практическое занятие 2 «Алгебра логики»
- •Приложение 3. Индивидуальное задание. Модуль №1
- •Приложение 4
- •6. Введение в алгоритмизацию
- •7. Знакомство со средой Турбо Паскаль
- •7.1. Общие сведения
- •7.2. Запуск Турбо-Паскаля на выполнение
- •7.4. Работа с текстовым редактором Турбо-Паскаля
- •Клавиши перемещения курсора
- •Работа с блоками текста
- •8. Основы алгоритмизации
- •8.1. Алгоритм
- •8.2. Алгоритмические структуры
- •Самоконтроль
- •9.1. Алфавит языка
- •9.2. Арифметические выражения и правила их записи
- •Знаки операций
- •Операции div и mod
- •9.3. Типы данных
- •Целые типы
- •Логический тип
- •Символьный тип
- •Строковый тип
- •Вещественный тип
- •9.4. Стандартные функции
- •9.5. Структура программы на языке Паскаль
- •9.6. Описательная часть программы
- •9.7. Исполнительная часть программы
- •9.8. Оператор присваивания
- •9.9. Операторы ввода-вывода
- •Оператор ввода
- •Оператор вывода
- •9.10. Комментарии в программе
- •Самоконтроль
- •Задание
- •Пример программы линейной структуры
- •Приложение 1. Таблица вариантов задания №2
- •10. Ветвления
- •10.1. Операторы условия и перехода
- •Логический оператор
- •Операции отношения
- •Логические операции
- •10.2. Оператор выбора
- •Самоконтроль
- •Задание
- •Пример программы разветвленной структуры
- •Приложение 1. Таблица вариантов задания 3
- •11.2. Оператор цикла с постусловием
- •11.3. Оператор цикла с предусловием
- •11.4. Вложенные циклы
- •11.5. Оператор прерывания цикла
- •Самоконтроль
- •Задание
- •Пример программы циклической структуры
- •Приложение 1. Таблица вариантов задания 4
- •12. Операции с индексированными переменными
- •12.1. Массивы одномерные
- •12.2. Описание массивов
- •Ввод элементов массива
- •Вывод элементов массива
- •12.3. Обработка одномерных массивов
- •Самоконтроль
- •Задание
- •Пример программы обработки одномерного массива
- •Приложение 1. Таблица вариантов задания 5
- •13. Двумерные массивы
- •13.1. Матрицы
- •13.2. Описание двумерного массива
- •Ввод элементов двумерного массива
- •Вывод элементов двумерного массива
- •13.3. Обработка двумерных массивов
- •Самоконтроль
- •Задание
- •Пример программы обработки двумерного массива
- •Приложение 1. Таблица вариантов задания 6
- •Структура программы, содержащей процедуру (функцию)
- •14.2. Процедуры
- •14.3. Вложенные процедуры
- •Директива forward
- •14.4. Функции
- •Самоконтроль
- •Задание
- •Пример программы с использованием подпрограмм
- •Приложение 1. Таблица вариантов задания 7
- •15. Обработка строк текста
- •15.1. Символьные переменные
- •Фрагмент таблицы ASCII-кодов букв латинского алфавита
- •Фрагмент таблицы ASCII-кодов букв русского алфавита
- •15.2. Функции обработки символьных переменных
- •15.3. Строковые переменные
- •15.4. Функции обработки строковых переменных
- •15.5. Процедуры обработки строковых переменных
- •15.6. Примеры обработки строковых переменных
- •Самоконтроль
- •16. Структурированные типы данных
- •Записи
- •Самоконтроль
- •Задание
- •Пример программы использования массива записей
- •Приложение 1
- •Приложение 2. Таблица вариантов ИДЗ 2
13.3. Обработка двумерных массивов
Рассмотрим типовые задачи обработки двумерных массивов с использованием вложенных циклов.
Задача.
Составить программу подсчета суммы и произведения элементов двумерного массива вещественных чисел.
Таблица идентификаторов
№ |
Наименование переменной |
Обозначения в программе |
1 |
Имя массива |
a |
|
|
|
2 |
Количество строк |
n |
|
|
|
3 |
Количество столбцов |
m |
|
|
|
4 |
Индексы массива |
I,j |
|
|
|
5 |
Сумма элементов |
s |
|
|
|
6 |
Произведение элементов |
p |
|
|
|
program matr; uses
crt; var
a:array [1...10, 1...10] of real; i, j, n, m: integer;
s,p :real; begin clrscr;
writeln(‘ Введите n<=10 , m<=10 ’); readln (n,m);
writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do
for j:=1 to m do readln(a[i, j]); s:=0; p:=1;
{ поиск суммы и произведения } for i:=1 to n do
for j:=1 to m do begin
s:=s + a[i,j]; p:=p * a[i,j]; end;
writeln(‘ Сумма элементов s=’,s:8:3); writeln(‘ Произведение элементов p=’,p:8:3); readln;
end.
81
Задача.
Задана квадратная матрица целых чисел. Составить программу подсчета суммы элементов, расположенных над главной диагональю.
Таблица идентификаторов
№ |
Наименование переменной |
Обозначения в программе |
1 |
Имя массива |
a |
2 |
Количество строк и столбцов |
n |
3 |
Индексы массива |
I,j |
4 |
Сумма элементов над главной |
s |
|
диагональю |
|
|
|
|
program matr_1; uses
crt; var
a:array [1...10, 1...10] of real; i, j, n, m: integer;
s,p :real; begin clrscr;
writeln(‘ Введите n<=10 , m<=10 ’); readln (n,m);
writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do
for j:=1 to m do readln(a[i,j]); for i:=1 to 3 do
for j:=i +1 to 3 do s:=s+a[i,j];
writeln('Сумма элементов s=', s); readln;
end.
Для ввода элементов массива используются вложенные циклы с указанием номера вводимого элемента.
Для поиска суммы элементов над главной диагональю во внутреннем цикле задан закон изменения параметра внутреннего цикла:
j:=i+1
Задача.
82
Задана целочисленная квадратная матрица. Определить является ли она симметричной относительно главной диагонали.
Таблица идентификаторов
№ |
Наименование переменной |
Обозначения в программе |
1 |
Имя массива |
a |
2 |
Количество строк и столбцов |
n |
3 |
Индексы массива |
I,j |
4 |
Флажок |
f |
program matr_2; uses
crt; var
a: array [1...10, 1...10] of integer; i, j, n, f : integer;
begin clrscr;
writeln(‘ Введите n<=10 ’); readln (n,m);
writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do
for j:=1 to n do readln(a[i,j]); f:=0
for i:=1 to n do for j:=i to n do
if a[i,j]<>a[j,i] then f:=1;
if f=0 then writeln(‘ матрица симметрична’) else writeln (‘матрица не симметрична’); readln;
end.
При решении этой задачи сравниваются элементы расположенные над главной диагональю ( a[ i,j ] ) с элементами, расположенными под главной диагональю ( a[ j,i ] ) .
Задача.
Задана матрица вещественных чисел. Образовать одномерный массив, где каждый j – й элемент равен произведению элементов j-ого столбца двумерного массива.
Таблица идентификаторов
№ |
Наименование переменной |
Обозначения в программе |
83
1 |
Имя двумерного массива |
a |
2 |
Имя одномерного массива |
b |
3 |
Количество строк |
n |
4 |
Количество столбцов |
m |
5 |
Индексы массива |
I,j |
program matr_3; uses crt;
var
a:array [1...10, 1...10] of integer;
b:array [ 1..10 ] of integer;
i, j, n, f : integer; begin
clrscr;
writeln(‘ Введите n<=10 , m<=10 ’); readln (n,m); writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do
for j:=1 to m do readln (a[i, j]);
writeln(‘ Исходная матрица ’); for i:=1 to n do
begin
for j:= 1 to n do write( a[I,j] , ‘ ‘); writeln;
end;
writeln(‘ Образованный одномерный массив ’); for j:=1 to m do
begin b[ j ]:=1;
{ накапливается произведение элементов j столбца } for i:=1 to n do
b[ j ]:= b[ j ] * a[ i, j ]; write( b[ j] , ‘ ‘);
end;
readln;
end.
Задача.
Задана целочисленная матрица a(m*n). Упорядочить элементы каждой строки по возрастанию.
Таблица идентификаторов
№ |
Наименование переменной |
Обозначения в программе |
1 |
Имя двумерного массива |
a |
|
|
|
2 |
Количество строк, столбцов |
n, m |
|
|
|
84
3 |
Индексы массива |
I,j |
4 |
Флажок |
f |
5 |
Дополнительная переменная для |
p |
|
обмена соседних элементов |
|
|
|
|
program mart_4; uses crt;
var
a: array[1...10, 1...10] of integer; i,j,n,f : integer;
begin clrscr;
writeln(‘ Введите n<=10 , m<=10 ’); readln (n,m); writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do
for j:=1 to m do readln(a[i, j]);
writeln(‘ Исходная матрица ’); for i:=1 to n do
begin
for j:=1 to n do write(a[I,j],‘ ‘); writeln;
end;
{переход от строки к строке } for i:=1 to n do
{сортировка i-ой строки } repeat
f:=0;
for j:=1to m-1 do
if a[i,j]>a[i,j+1] then
begin p:=a[i,j]; a[i,j]=a[i,j+1]; a[i,j+1]:=p; f:=1; end; until f=0;
writeln(‘ Преобразованная матрица ’); for i:=1 to n do
begin
for j:= 1 to n do write( a[I,j] , ‘ ‘); writeln;
end;
readln;
end.
f =0 - признак того, что все элементы данной строки упорядочены.
85