
Камаева алгоритмизация.ppt
- Количество слайдов: 56
Основы алгоритмизации и программирования
Алгоритмы • Алгоритм- правило или точное предписание, которое нужно выполнить над исходными данными и промежуточными величинами для получения конечного результата. Свойства алгоритмов: • Массовость-способность алгоритма быть применимым ни к одному исходному данному, а к целому классу таковых. • Детерминированность- способность алгоритма быть чётка и ясно сформулированным. • Результативность- способность алгоритма приводить к результату • Дискретность- способность алгоритма быть разбитым на конечное число шагов. • Конечность- способность каждого шага алгоритма быть завершённым.
Способы записи алгоритмов: • Словесный • Графический в виде блок-схем, выполненных в соответствии с ГОСТом. • Структурно- стилизованный • Языки программирования
Типы алгоритмов Существует три типа алгоритмов: • Линейные • Разветвляющиеся • Циклические Линейный алгоритм- алгоритм, который предполагает последовательное выполнение команд, приводящих к результату. Разветвляющийся алгоритм- алгоритм, который предполагает выбор одного из нескольких путей решения задачи. да Серия команд 1 Условие нет Серия команд 2
Циклический алгоритм- алгоритм, который предполагает многократное повторение одних и тех же действий. Цикл с предусловием-цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Условие Тело цикла Цикл с постусловием- цикл, в котором условие проверяется после выполнения тела цикла. Тело цикла Условие Цикл со счётчиком- цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом. Счётчик Тело цикла
Задача 1 • В 1 минуту лиса выбрасывала 1 рыбу, в 2 -2, в 3 -4, 4 -8. Сколько всего рыбок выбросит лиса за 10 минут. MS Excel Алгоритм 1. Ячейки А 1 и В 1 назовём номер клетки и количество рыбок. 2. В ячейки А 2 и В 2 введём 1 3. В ячейку А 3 введём формулу =A 2+1 Начало n 4. В ячейку В 3 введём формулу =В 2*2 n: =1 Для i: =1 до 10 S: =n*2 S Конец 5. Протянем ячейки с А 3 до А 11 6. Протянем ячейки с В 3 до В 11
Задача 2 • Первый сын взял ½ изумрудов, второй ½ того, что осталось, третий ½ того, что осталось и т. д. Седьмой сын увидел в мешке 2 изумруда. Сколько всего было изумрудов MS Excel 1. Ячейки А 1 и В 1 назовём дети и количество Алгоритм изумрудов. 2. В ячейки А 2 и В 2 введём 1 и 2 3. В ячейку А 3 введём формулу =A 2+1 Начало S, n S: =0 4. В ячейку В 3 введём формулу =В 2*2+В 2 n: =2 Для i: =1 до 7 S: =n*2+S S Конец 5. Протянем ячейки с А 3 до А 8 6. Протянем ячейки с В 3 до В 8
Задача 3 • На шахматной доске 64 клетки. На первую клетку положили зерно, на вторую-2, на третью-3 и так далее. Сколько всего зёрен на доске и сколько весят эти зёрна, если 15 зёрен-1 гр. MS Excel Алгоритм 1. Ячейки А 1 и В 1 назовём дети и количество зёрен. 2. В ячейки А 2 и В 2 введём 1 3. В ячейку А 3 введём формулу =A 2+1 Начало 4. В ячейку В 3 введём формулу =В 2+1 S, n, m, M S: =0 5. Протянем ячейки с А 3 до А 65 6. Протянем ячейки с В 3 до В 65 7. Посчитаем сумму Зёрен, введём в ячейку В 66 формулу =СУММ(В 2: В 65) n: =1 Для i: =1 до 64 m: =S/15 8. Рассчитаем массу. Введём в ячейку В 67 формулу =В 66/15000 S: =n+1 М: =m/1000 Конец
Задача 4 • Первый друг взял из мешка 1/5 всех орехов, второй 1/5 того, что осталось и так далее. Пятый друг обнаружил, что осталось 256 орехов. Сколько всего было орехов? MS Excel Алгоритм 1. Ячейки А 1 и В 1 назовём дети и количество орехов. 2. В ячейки А 2 и В 2 введём 1 и 256 3. В ячейку А 3 введём формулу =A 2+1 Начало S, n 4. В ячейку В 3 введём формулу =В 2/5+В 2 S: =0 n: =256 Для i: =1 до 5 5. Протянем ячейки с А 3 до А 6 6. Протянем ячейки с В 3 до В 6 S S: =n/5+S Конец
Задача 5 • Первая девочка досыпала в корзину в 3 раза больше абрикосов, чем увидела, вторая-в 3 раза больше, чем увидела и так далее. Пятая девочка увидела в корзине 2560 абрикосов. Сколько изначально было абрикосов. MS Excel Алгоритм 1. Ячейки А 1 и В 1 назовём дети и количество абрикосов. 2. В ячейки А 2 и В 2 введём 1 и 2560 3. В ячейку А 3 введём формулу =A 2+1 Начало S, n n: =2560 4. В ячейку В 3 введём формулу =В 2/3 Для i: =1 до 5 S: =n/3 S Конец 5. Протянем ячейки с А 3 до А 6 6. Протянем ячейки с В 3 до В 6
Практическая работа. • С клавиатуры вводятся числа. Подсчитать количество положительных, отрицательных и нулевых элементов и найти их сумму. Начало n S 1: =0; S 2: =0; k 1: =0; k 2: =0; k 3: =0 Для i: =1 до n Введите х S 1; S 2; k 1; k 2; k 3 Х>0 Конец S 1: =S 1+x Х=0 k 1: =k 1+1 k 3: =k 3+1 k 2: =k 2+1 S 2: =S 2+x
Практическая работа • С клавиатуры вводится n чисел, найти максимальное и минимальное Начало n Max: =x 1; min: =x 1 Для i: =1 до n х Max; min Х>max Конец Max: =x Х
Pascal
Практическая работа. Задача 1 • С клавиатуры вводятся числа. Подсчитать количество положительных, отрицательных и нулевых элементов и найти их сумму.
Практическая работа. Задача 2 • С клавиатуры вводится n чисел, найти максимальное и минимальное
Практическая работа. Задача 3 • С клавиатуры вводится четырёхзначное число. Найти сумму их чисел и определить является ли она чётной.
Практическая работа. Задача 4 • Составить программу, которая печатает ИСТИНА, если указанное число является чётным, и ЛОЖЬ в противном случае
Практическая работа. Задача 5 • Является ли число средним арифметическим
Практическая работа. Задача 6 • Определить тройку Пифагора
Практическая работа. Задача 7 • Определить является ли число палиндромом
Реализация задач в Turbo Pascal • Написать программу, которая будет вводить числа до тех пор, пора не будет введен 0. посчитать количество отрицательных и положительных чисел.
Реализация задач в Turbo Pascal • Написать программу, вычисляющую факториал числа, вводимого с клавиатуры.
Реализация задач в Turbo Pascal • Каждая бактерия в течение одной минуты делится на 2. изначально была 1 бактерия. • Написать программу, вычисляющую количество бактерий за введенное количество минут, тремя способами.
Реализация задач в Turbo Pascal • Написать программу, вычисляющую для заданного числа n сумму S=1+1/2+1/3+…+1/n, тремя способами.
Реализация задач в Turbo Pascal • Написать программу, которая выводит таблицу степеней двойки от 0 до 10.
Операторы графики в ТР • Выберем Броуновское движение
Практика. Реализация в Pascal
Практика. Реализация задачи в Excel • На отрезке [1; 2] с шагом 0, 1 протабулировать функцию: COS(2/x)-2*SIN(1/x)+1/x
Практика. Реализация в Pascal
Домашняя работа. Определить cos и sin x
Домашняя работа Cos x
Домашняя работа Sin x
Структурированные типы данных Массивы • • • Массив – это упорядоченная совокупность данных, обозначаемых одним именем, доступ к элементам массива осуществляется по их номерам (индексам). Элементами массива могут быть данные любого типа, включая структурированные, но в одном массиве могут храниться данные только одного типа (real, integer, string, char и пр. ). Нужно четко понимать, что индекс ячейки массива не является ее содержимым. Содержимым являются хранимые в ячейках данные, а индексы только указывают на них. Действия в программе над массивом осуществляются путем использования имени переменной, связанной с областью данных, отведенной под массив. Все элементы определенного массива имеют один и тот же тип. У разных массивов типы данных могут различаться. Например, один массив может состоять из чисел типа integer, а другой – из чисел типаreal.
Одномерные массивы • • 1. 2. 2. 3. 3. 4. Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным, одномерным или вектором. Описать одномерный массив можно несколькими способами: В разделе переменных Var имя массива : Array [тип индекса] of тип элементов В разделе описания типов Type имя типа = Array [тип индекса] of тип элементов ; Var имя массива : имя типа ; В разделе констант Const имя массива : Array [тип индекса] of тип элементов = (список элементов);
Ввод массива в разделе переменных
Ввод массива в разделе переменных
Ввод массива в разделе переменных
Вывод данных в одномерном массиве • Вывод массива в Паскале осуществляется также поэлементно, в цикле, где параметром выступает индекс массива, принимая последовательно все значения от первого до последнего. 1. 2. 3. 4. 4. 5. 5. For i: =1 to n do write (a[i]: 6: 2); For i: =1 to n do write (a[i]: 6: 2, ’ ‘); Writeln (‘Massiv A’); For i: =1 to n do write (a[i]: 6: 2); Writeln (‘Massiv A’) For i: =1 to n do write (‘a[‘, i, ’]=‘, a[i]: 6: 2, ’ ‘); For i: =1 to n do writeln (‘a[‘, i, ’]=‘, a[i]: 6: 2);
Вывод данных в одномерном массиве 1. For i: =1 to n do write (a[i]: 6: 2);
Вывод данных в одномерном массиве 2. For i: =1 to n do write (a[i]: 6: 2, ’ ‘);
Вывод данных в одномерном массиве 3. Writeln (‘Massiv A’); For i: =1 to n do write (a[i]: 6: 2);
Вывод данных в одномерном массиве 4. Writeln (‘Massiv A’); For i: =1 to n do write (‘a[‘, i, ’]=‘, a[i]: 6: 2, ’ ‘);
Вывод данных в одномерном массиве 5. For i: =1 to n do writeln (‘a[‘, i, ’]=‘, a[i]: 6: 2);
Практическая работа 1 Дан массив из вещественных чисел. Найти сумму элементов, произведение, max и min, количество нулевых, отрицательных и положительных чисел
Практическая работа 2 Дан массив из вещественных чисел. Найти сумму массивов
Практическая работа 3 Дан массив, заданный случайным образом. Поменять местами 1 и последний элемент.
Практическая работа 4 Дан массив, заданный случайным образом. Поменять местами элементы чётных и нечётных номеров
Сортировка элементов массива • Сортировка представляет собой процесс упорядочения элементов в массиве в порядке возрастания или убывания их значений. Например, массив X из n элементов будет отсортирован в порядке возрастания значений его элементов, если X 1 ≤ X 2 ≤. . . ≤ Xn, и в порядке убывания, если X 1 ≥ X 2 ≥. . . ≥ Xn. • Существует большое количество алгоритмов сортировки, но все они базируются на трех основных: • сортировка обменом; • сортировка выбором; • сортировка вставкой. • Представим, что нам необходимо разложить по порядку карты в колоде. Для сортировки карт обменом можно разложить карты на столе лицевой стороной вверх и менять местами те карты, которые расположены в неправильном порядке, делая это до тех пор, пока колода карт не станет упорядоченной. • Для сортировки выбором из разложенных на столе карт выбирают самую младшую (старшую) карту и держат ее в руках. Затем из оставшихся карт вновь выбрать наименьшую (наибольшую) по значению карту и помещают ее позади той карты, которая была выбрана первой. Этот процесс повторяется до тех пор, пока вся колода не окажется в руках. Поскольку каждый раз выбирается наименьшая (наибольшая) по значению карта из оставшихся на столе карт, по завершению такого процесса карты будут отсортированы по возрастанию (убыванию). • Для сортировки вставкой из колоды берут две карты и располагают их в необходимом порядке по отношению друг к другу. Каждая следующая карта, взятая из колоды, должна быть установлена на соответствующее место по отношению к уже упорядоченным картам.
Метод пузырька • • Сортировка пузырьковым методом является наиболее известной. Ее популярность объясняется запоминающимся названием, которое происходит из-за подобия процессу движения пузырьков в резервуаре с водой, когда каждый пузырек находит свой собственный уровень, и простотой алгоритма. Сортировка методом "пузырька" использует метод обменной сортировки и основана на выполнении в цикле операций сравнения и при необходимости обмена соседних элементов. Рассмотрим алгоритм пузырьковой сортировки более подробно. Сравним первый элемент массива со вторым, если первый окажется больше второго, то поменяем их местами. Те же действия выполним для второго и третьего, третьего и четвертого, i-го и (i+1)-го, (n-1)-го и n-го элементов. В результате этих действий самый большой элемент станет на последнее n-е место. Теперь повторим данный алгоритм сначала, но последний n-й элемент, рассматривать не будем, так как он уже занял свое место. После проведения данной операции самый большой элемент оставшегося массива станет на (n-1)-е место. Так повторяем до тех пор, пока не упорядочим весь массив. В табл. 3. 2 подробно расписан процесс упорядочивания элементов в массиве. Нетрудно заметить, что для преобразования массива, состоящего из n элементов, необходимо просмотреть его n-1 раз, каждый раз уменьшая диапазон просмотра на один элемент. Блок-схема описанного алгоритма приведена на рис. 3. 8. Обратите внимание на то, что для перестановки элементов (блок 4) используется буферная переменная b, в которой временно хранится значение элемента, подлежащего замене.
Метод выбора • Алгоритм сортировки выбором приведен в виде блок-схемы на рис. 3. 9. Найдем в массиве самый большой элемент (блоки 3 -7) и поменяем его местами с последним элементом (блок 8). Повторим алгоритм поиска максимального элемента, уменьшив количество просматриваемых элементов на единицу (блок 9), и поменяем его местами с предпоследним элементом (блоки 3 -7). Описанную выше операцию поиска проводим до полного упорядочивания элементов в массиве. Так как в блоке 9 происходит изменение переменной n, то в начале алгоритма ее значение необходимо сохранить (блок 1).
Метод вставки • • Сортировка вставкой заключается в том, что сначала упорядочиваются два элемента массива. Затем делается вставка третьего элемента в соответствующее место по отношению к первым двум элементам. Четвертый элемент помещают в список из уже упорядоченных трех элементов. Этот процесс повторяется до тех пор, пока все элементы не будут упорядочены. Прежде чем приступить к составлению блок-схемы рассмотрим следующий пример. Пусть известно, что в массиве из восьми элементов первые шесть уже упорядочены, а седьмой элемент нужно вставить между вторым и четвертым. Сохраним седьмой элемент во вспомогательной переменной, так как показано на рисунке 3. 10, а на его место запишем шестой. Далее пятый переместим на место шестого, четвертый на место пятого, а третий на место четвертого, тем самым, выполнив сдвиг элементов массива на одну позицию вправо. Записав содержимое вспомогательной переменной в третью позицию, достигнем нужного результата.
Практическая работа № 5(Метод пузырька) Сформировать массив из положительных, отрицательных и нулевых чисел. Отсортировать их в порядке возрастания. (без randomize и с)
Практическая работа Составить программу, формирующую одномерный массив случайных чисел и вычисляет значение среднего арифметического его элементов >20
Практическая работа Дан массив из 10 случайных чисел. С клавиатуры вводится любое число, определить является ли оно случайным числом
Файлы в ТР
Практическая работа