Вы находитесь на странице: 1из 52

ПРОГРАММИРОВАНИЕ.

Практика
Тема 6. Матрицы

ФЕДОТЕНКО
Мария Александровна
ma.fedotenko@mpgu.su
marusyafm
ЧАСТЬ 1. Числовые
разряды
Вспомним школу
«Передвижение» по разрядам
В программировании числовые разряды анализируются «с конца»
числа.

Для «передвижения» по разрядам используются 2 операции:


• деление на 10 (х/10)
• получение остатка от деления на 10 (х%10)
%10 и /10
Деление на 10
Получение остатка от деления на 10
«Передвижение» по разрядам
ИТОГО:

• Деление на 10 (х/10) – «отсекает» последнюю цифру числа


• Получение остатка от деления на 10 (х%10) – «запоминает»
последнюю цифру числа
Пример. Сумма цифр числа
Сумма цифр числа (разбор)
Пример. Наименьшая цифра числа
Пример. Количество нечетных цифр числа
Работа с последовательностью
чисел
ЗАДАЧА:
Напишите программу, организующую пользовательский ввод
последовательности целых чисел. 0 – конец ввода (то есть, если
пользователь ввел 0 – программа должна заканчивать свое
выполнение). Для каждого числа последовательности определить
сумму его цифр.
Работа с последовательностью чисел
чисел
ЧАСТЬ 2. Операторы
перехода
Операторы перехода в С++

goto
(не использовать!)

return

break

continue

Оператор перехода выполняет немедленную локальную передачу контроля


Оператор goto

Оператор goto безусловно передает управление оператору,


помеченному указанным идентификатором (метке).

Оператор, метка которого задана для оператора goto, должен


находиться в текущей функции.
Оператор goto. Пример
Оператор return

Оператор return завершает выполнение функции и возвращает


значение.

Примечание:
Со всеми возможностями этого оператора мы познакомимся при
изучении темы «Функции».
На данный же момент, пока мы пишем программы, состоящие из
одной функции,
использование оператора return завершает выполнение всей
программы.
Оператор return. Пример
Оператор break

Оператор break завершает выполнение включающего цикла или


условного оператора, в котором он отображается.
Управление передается следующему оператору, при его наличии.

Используется только в циклах (всех видов) и условных операторах


if и switch.

Использование в switch – стандартизировано и правомерно,


во всех остальных случаях – правильное проектирование
позволяет обходиться без него!
Оператор break. Пример
Оператор continue

Используется в циклах для принудительного перехода к


следующей итерации цикла.

Используется в циклах всех видов: с предусловием,


с постусловием, с параметром.
Оператор continue. Пример
break и continue. Разница
ЧАСТЬ 3. Жаргон
программиста
«Спагетти код»
Слабо структурированный, запутанный, трудный для чтения и
понимания.
Чаще всего содержит большое количество операторов перехода.
По «извилистости» и «запутанности» напоминает тарелку спагетти.
Управление программой может перескакивать с одного места в
другое, нельзя с уверенностью сказать в каком состоянии находится
программа при выполнении конкретного участка кода.
«Баг»
Ошибка в программе (ошибка любого вида).
Несоответствие результата выполнения программы результату
ожидаемому.

Bug – жук
«Фича»
Новая функция программного обеспечения, которая не
упоминалась на этапе проектирования, а была реализована уже
на этапе разработки.
Не нарушает работу программы, являя собой дополнительный
функционал (не всегда необходимый).
Чаще всего возникает как результат устранения багов.
«Не баг, а фича»

Такая идея работает далеко не всегда!


«Велосипед»
Самостоятельное написание кода вместо использования уже готовых
и проверенных решений (например, стандартных библиотек).

P.s. На начальных этапах обучения «велосипеды» просто необходимы для


формирования алгоритмического мышления (например, сортировка
массивов вручную вместо использования стандартной функции sort), но в
дальнейшем, при решении прикладных задач, их лучше не использовать.
Мы будем избавляться от них по мере освоения материала.
«Костыль»
Код, написанный для срочного устранения ошибок в программе,
не соответствующий ее логике/стандарту/здравому смыслу.
Обходной прием, временное решение, мешающее дальнейшему
развитию программы.

Быстрое превращение не работающего кода в не вполне


корректный, но «хоть как-то работающий».
Не делайте так!
ЧАСТЬ 4. Двумерные
массивы (матрицы)
Массивы
Массивы

«Массив» «Матрица»
Матрица

Матрица— двумерный массив, каждый элемент которого имеет два


индекса: номер строки и номер столбца.
Примеры матриц
Объявление матрицы
Для использования матрицы ее нужно объявить.
При объявлении матрицы указывается:
• Тип данных элементов матрицы
• Имя матрицы
• Размерность матрицы – число строк и столбцов
Заполнение матрицы
Матрица заполняется поэлементно, двойным циклом.
Пример заполнения (псевдо)рандомными числами:
Вывод матрицы
Матрица выводится также поэлементно, двойным циклом.
Пример:
Обращение к элементам матрицы
Осуществляется по индексам i и j элемента.
ЧАСТЬ 5. Диагонали
матрицы
Диагонали матрицы
Если номер строки элемента совпадает с номером столбца (i = j)
– элемент лежит на главной диагонали матрицы
Если номер строки больше номера столбца (i > j) – элемент лежит
ниже главной диагонали
Если номер строки меньше номера столбца (i < j) – элемент
лежит выше главной диагонали
Диагонали матрицы
Пример вывода всех элементов, лежащих на главной диагонали
матрицы:
Матрицы. Пример. Задание
Написать программу для вычисления суммы элементов
матрицы, лежащих на главной диагонали.
Размерность матрицы вводит пользователь с клавиатуры.
Заполнение матрицы – (псевдо)рандомными числами.
Матрицы. Пример. Решение (1)
Матрицы. Пример. Решение (2)
ЧАСТЬ 5. Операции с
матрицами
Поиск максимума/минимума
Сложение матриц
Как и в математике. Каждый элемент одной матрицы
складывается с элементом с теми индексами из другой
матрицы и помещается в элемент с теми же индексами третьей
матрицы.

То есть в том же двойном цикле:


с[i][j]=a[i][j]+b[i][j];
Благодарю за внимание!