Transcript Презентация
Основы алгоритмизации и объектно-ориентированного программирования К учебнику «Информатика и ИКТ» для 9 класса © Н. Д. Угринович, 2009, © БИНОМ. Лаборатория знаний, 2009 © А.В. Атанова, 2010-2011 Основы алгоритмизации • • • • • Урок №1. Алгоритм. Свойства алгоритма. Урок №2. Блок – схемы. Линейные алгоритмы, ветвление. Урок №3* Урок одной задачи – поиск НОД двух чисел. Урок №4. Алгоритмическая структура «цикл». Алгоритм. Свойства алгоритма. Урок №1 © А.В. Атанова, 2010-2011 Повседневные задачи " Мы редко до конца понимаем, чего мы в действительности хотим" 1. Приготовление завтрака Франсуа де Ларошфуко 2. Решение квадратного уравнения 3. Определение рода существительного Определение 1 • Алгоритм – это предписание исполнителю выполнить последовательность команд, приводящую от исходных данных к искомому результату. Первый алгоритм • ЕВКЛИД (расцвет деятельности около 300 до н.э.), также Эвклид, древнегреческий математик, известный прежде всего как автор «Начал», самого знаменитого учебника в истории. Происхождение слова «алгоритм» В IX веке жил Ал-Хорезми — сын зороастрийского жреца, прозванный за это ал-Маджуси (маг). Заведовал библиотекой «Дома мудрости», изучал индийские и греческие знания. Ал-Хорезми написал книгу «Об индийском счёте», способствовавшую популяризации позиционной системы во всём Халифате, вплоть до Испании. В XII веке эта книга переводится на латинский, от имени её автора происходит наше слово «алгоритм» Верно ли, что… 1. 2. 3. 4. 5. 6. 7. Налить воду в чайник Открыть кран газовой горелки Поставить чайник на плиту Ждать, пока вода не закипит Поднести спичку к горелке Зажечь спичку Выключить газ Верно, что… 1. 2. 3. 4. 5. 6. 7. Налить воду в чайник Поставить чайник на плиту Зажечь спичку Открыть кран газовой горелки Поднести спичку к горелке Ждать, пока вода не закипит Выключить газ Свойства алгоритма • дискретность: состоит из отдельных шагов (команд) • результативность: применение алгоритма обязательно приводит к конечному результату за конечное число шагов • массовость: может применяться многократно при различных исходных данных • детерминированность: выполнение команд в строго определенной последовательности • понятность: должен включать только команды, известные исполнителю (входящие в СКИ) • определенность: при одинаковых исходных данных всегда выдает один и тот же результат • корректность: дает верное решение при любых допустимых исходных данных Определение 2 • Алгоритм – это конечная последовательность указаний, адресованных исполнителю, четко и однозначно задающая процесс решения задач какого-либо типа во всех деталях и позволяющая получить за конечное число шагов результат, однозначно определяемый исходными данными. Задача 1 Старик должен переправить на лодке через реку волка, козу и капусту. Лодка может выдержать только старика и одного “пассажира”. В каком порядке старик перевезет пассажиров? Не забудь, что волк может съесть козу, а коза – капусту. Найди 2 варианта решения. Решение Левый берег Способ действия Правый берег Исходное состояние Старик, Волк, Коза, Капуста 1 шаг Волк, Капуста → Старик, Коза 2 шаг Волк, Капуста ← Старик Коза 3 шаг Капуста → Старик, Волк Коза 4 шаг Капуста ← Старик, Коза Волк 5 шаг Коза → Старик, Капуста Волк 6 шаг Коза ← Старик Волк, Капуста → Старик, Коза Волк, Капуста 7 шаг Результат Старик, Волк, Коза, Капуста Исполнитель алгоритма • Исполнитель алгоритма – это человек, животное или устройство способные выполнять определенный набор команд. • Набор команд – СКИ (Система Команд Исполнителя). • Алгоритм составляют с ориентацией на определенного исполнителя: …формального или неформального? Задача №2 • Выполните предложенные действия. 1. Задумайте целое число от 1 до 20. 2. Прибавьте к нему 2. 3. Результат умножьте на 2. 4. К полученному произведению прибавьте 3. 5. От суммы отнимите задуманное число. 6. К разности прибавьте 5. 7. От суммы отнимите задуманное число. 8. Сообщите ответ. Ответ: 12; мы выступали в роли формального исполнителя Задача №3 • Какому исполнителю под силу решить такую задачу: «Отгадай пословицу, обойдя поле ходом шахматного коня»? 1 Н А Е 2 3 И Л Г 4 Ответ: 5 Не игла шьёт, а руки 6 Неформальный исполнитель Ь И Ё Т Р 7 8 Ш А К У A B C D E F G H Задача №4* Имеется Исполнитель алгоритма, который может передвигаться по числовой оси. Система команд Исполнителя алгоритма: 1. «Вперед N» 2. «Назад M» Переменные N и M могут принимать любые целые положительные значения. Известно, что Исполнитель алгоритма выполнил программу из 50 команд, в которой команд «Назад 2» на 12 больше, чем команд «Вперед 3». Других команд в программе не было. Какой одной командой можно заменить эту программу, чтобы Исполнитель алгоритма оказался в той же точке, что и после выполнения программы? Решение: 1. Найдем сколько было команд: пусть х – количество команд «Вперед», тогда х+(х+12)=50; х=19; 19+12=31 – количество команд «Назад» 2. Будем вести отсчет от начала числовой оси: 19*3=57 – после выполнения «Вперед 3» 19 раз; 31*2=62 – после выполнения «Назад 2» 31 раз; 57-62=-5 – оказался на отметке -5. 3. Все эти команды можно заменить одной – «Назад 5» Задача №5** Леонардо Пизанский, известный, как Фибоначчи, был первым из великих математиков Европы позднего Средневековья. Числовой ряд, который назван его именем, получился в результате решения задачи о кроликах, которую Фибоначчи изложил в своей «Книге Абака»(1202 год). Он выглядит так: 1,1,2,3,5,8,13,21,34,55,89,144… В этом ряду каждое следующее число, начиная с третьего, равно сумме двух предыдущих. Составьте словесный алгоритм проверки принадлежности введенного числа n ряду Фибоначчи. Решение: 1. Ввести число N. 2. Установить значение первых трех чисел Фибоначчи: 1,1,2. 3. Пока введенное число N больше очередного числа Фибоначчи, взять два последних числа Фибоначчи и получить из них новое число Фибоначчи. 3. Если число Фибоначчи равно введенному N или было введено число N=1, значит, что было введено число Фибоначчи, в противном случае – введенное число не является числом Фибоначчи. Способы записи алгоритмов • Словесный – на естественном языке; • На языке блок – схем; • На языке программирования. Блок-схема – это графическое изображение алгоритма в виде определенным образом связанных между собой нескольких типов блоков. Язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. Блок- схемы алгоритмов. Урок №2 © А.В. Атанова, 2010-2011 Основные элементы блок-схемы Элемент блок-схемы Обозначение начала и конца алгоритма Начало Описание ввода или вывода данных, имеет один вход - сверху и один выход - снизу. Данные Описание линейной последовательности команд, имеет один вход – сверху и один выход – снизу. Последовательность команд Да Нет Условие Объявление переменных Назначение элемента Обозначение условий в структурах «ветвление» и «выбор», имеет один вход – сверху и два выхода – налево, направо Применяется для объявления переменных или ввода комментариев Линейный алгоритм • Линейный алгоритм – это набор команд, выполняемых последовательно во времени, друг за другом. Задача №1 Зная длины трех сторон треугольника, вычислить площадь и периметр треугольника. Решение: • Входные данные: a, b, c. • Выходные данные: S, P. • Решение по формуле Герона Внимание!!! В знак "=" означает не математическое равенство, а операцию присваивания. Переменной, стоящей слева от оператора, присваивается значение, указанное справа. Причем это значение может быть уже определено или его необходимо вычислить с помощью выражения. Задача №2 • Придумайте текст задачи, воспользовавшись предложенным алгоритмом, назовите входные и выходные данные: Решение: Известны плотность и геометрические размеры цилиндрического слитка, полученного в металлургической лаборатории. Найти объем, массу и площадь основания слитка. Входные данные: R - радиус основания цилиндра, h - высота цилиндра, ρплотность материала слитка. Выходные данные: m - масса слитка, V объем, S - площадь основания. Алгоритмическая структура «ветвление» • Алгоритм, содержащий хотя бы одно условие, в результате которого обеспечивается переход на один из двух возможных шагов, называется разветвляющимся. Задача №3 • Кровяное давление у старшеклассников считается нормальным, если верхняя его граница H≤100, а нижняя h≥60 и H-h≥30. Составьте алгоритм, который в зависимости от измеренных значений H и h выдает одно из Да следующих значений: Да «нормальное», H-h≥30 «повышенное», нормальное «пониженное». Воспользуйтесь шаблоном. Начало H, h Да h≥60 Нет Нет H≤100 Нет пониженное не норма Результат Конец повышенное Задача №4 • Заполните шаблон блоксхемы алгоритма исследования квадратного уравнения ax²+bx+c=0 (a≠0) Да Корней нет Начало a, b, c D=b²-4*a*c Нет D<0 Да Х= - b/2*a Х Нет D=0 X1= (- b+√D)/2*a X2= (- b-√D)/2*a X1, X2 Конец Задача №5 • Какое значение получит переменная Z в результате выполнения следующего алгоритма? А) Х=1, Y=1 Б) X=1, Y=-1 Z=1 X,Y Z:=0 Да Да Z=2 Z:=1 В) X=-1, Y=1 Z=0 Начало Нет X>0 Y>0 Нет Z:=2 Z Конец Урок одной задачи. Поиск НОД двух чисел.* Урок №3 © А.В. Атанова, 2010-2011 Первый алгоритм Как-то раз древнегреческого геометра Евклида спросили: - Что бы ты предпочел - два целых яблока или четыре половинки? Конечно, четыре половинки. - А почему? Это ведь одно и то же. Отнюдь. Выбирая два целых яблока, как я узнаю, червивые они или нет? Алгоритм Евклида – это алгоритм нахождения НОД двух целых положительных чисел Методы решения: Существуют различные методы нахождения НОД двух натуральных чисел: 1. Разложение на простые сомножители; 2. Алгоритм Евклида; 3. Целочисленное деление. Разложение на простые множители • Порядок действий: 1. Разложить число m на простые множители. 2. Разложить число n на простые множители. 3. Выбрать все одинаковые НОД (5390; 2310) = множители чисел m и n. = 2*5*7*11=770; 4. Перемножить выбранные множители – полученное значение и будет НОД (m;n). Рекурсивный метод – алгоритм Евклида В соответствии с этим методом НОД(m,n) вычисляется по следующему правилу: НОД(m-n,n), если m>n, НОД(m,n) = НОД(m,n-m), если n>m, m, если m=n. т.е. если d является НОД(m,n), то это же число d будет являться НОД меньшего числа из этой пары и их разности. Блок схема алгоритма 1. Ввести натуральные M и N. 2. Если M≠N, то перейти к шагу 3, иначе перейти к шагу 8. 3. Если M>N, то перейти к шагу 4, иначе перейти к шагу 6. 4. Вычислить M=M-N. 5. Перейти к шагу 2. M=238 6. Вычислить N=N-M. N=544 7. Перейти к шагу 2. 8. Сообщить M. Применим алгоритм для нахождения НОД(238,544) = НОД(238, 306) = =НОД(238,68) = НОД(170,68)= НОД(102,68)= НОД(34,68)= НОД(34,34) = 34 Метод целочисленного деления • Первое число делим нацело на второе. Очевидно, что остаток целочисленного деления меньше второго числа. Если остаток равен нулю, то это значит, что первое число нацело делится на второе, и в этом случае второе число и будем считать НОД этих чисел. Если остаток не равен нулю, то заменим первое число на второе, а второе на остаток, и будем повторять действия до тех пор, пока остаток не станет равным нулю. Алгоритм Ввод M,N 1. Ввод натуральных чисел M, N. 2. Найдем R – остаток от деления M нацело на N. 3. Если R=0, то перейдем к шагу 6, иначе перейти к шагу 4. 4. Положим M:=N; N:=R. 5. Перейти к шагу 2. 6. Сообщить значение N. M=238 N=544 Вычислить R – остаток от деления M на N R=0 M:= N N:= R Вывод N Пошаговое исполнение алгоритма • M:=238 • • • • N:=544 [238/544]=0 (ост. 238), заменяем: M:=544, N:=238 [544/238]=2 (ост. 68), заменяем: M:=238, N:=68 [238/68]=3 (ост. 34), заменяем: M:=68, N:=34 [68/34]=2 (ост. 0), закончили процесс деления. • НОД(238, 544)=34 Сравним количество операций M=238,N=544 Почти одинаковое количество операций? M=32000, N=2 Операции Метод 2 Метод 3 Операции замены 0 6 Операции сложения/вычитания 6 0 Операции умножения/деления 0 4 Операции сравнения 13 4 Операции Метод 2 Метод 3 Операции замены 0 2 Операции сложения/вычитания 15999 0 Операции умножения/деления 0 1 Операции сравнения 31999 1 Задание по группам: По словесным описаниям методов поиска наибольшего из трех чисел постройте их блок-схемы и напишите пошаговый алгоритм. • Метод 1: Даны три числа. Находим наибольшее из первых двух чисел, а затем сравниваем его с третьим числом. • Метод 2: Определяем, является ли первое число наибольшим; если нет, то находим наибольшее из второго и третьего чисел. • Метод 3: Попарно сравниваем все три числа, чтобы найти наибольшее. Алгоритмическая структура «цикл» Урок №4 © А.В. Атанова, 2010-2011 Алгоритмические структуры Какие алгоритмические структуры изображены на рисунках? Вставьте пропущенные слова: 1. Алгоритм – это последовательность… 2. Алгоритм, в котором команды выполняются последовательно друг за другом, называется… 3. Алгоритмическая структура выполняющая выбор при истинности или ложности условия называется … Задачи ГИА №1. Какая алгоритмическая структура используется А.С. Пушкиным в следующих отрывках из его произведений? «Уж небо осенью дышало, «Приходите в половине двенадцатого. Ступайте Уж реже солнышко блистало, прямо на лестницу. Коли вы найдете кого в передней, то спросите, дома ли графиня. Вам Короче становился день, скажут нет, - делать нечего. Вы должны будете Лесов таинственная сень воротиться. Но, вероятно, вы не встретите С печальным никого… Из переднейшумом ступайтеобнажалась…» налево, идите все прямо до графининой спальни. В спальне за ширмами увидите две двери: справа в кабинет;… слева в коридор, и тут же узенькая витая лестница, она ведет в мою комнату.» Задачи ГИА №2. На рисунке представлена блок-схема алгоритма. Какое значение будет иметь переменная Х после выполнения алгоритма при начальном значении переменных Y=5, Z=-3; Начало Y=3, Z= 4. Ввод Y,Z ДА НЕТ Y:=Y+Z Y<5 Y:=Y+Z Ответ: Y1= -1; Y2= 3. Конец Y:=Y-Z Игра «Ежиные тропы» Задачи ГИА №3. К какому результату приведет исполнение представленного в виде блок-схемы алгоритма? Ответ: I= 12 ДА Сколько раз выполнится вывод текста в алгоритме? Вывод: Ответ: 6 раз Изменим условие: I:=I*2 Сколько раз выполнится вывод текста в алгоритме? «ПРИВЕТ!» » I:=I+2 I:=I*2 Начало I:=0 I<=10 НЕТ Вывод: I Конец Ответ: бесконечно. Произойдет "зацикливание" алгоритма, т.е. не будет выполняться основное свойство алгоритма — результативность. Алгоритмическая структура «цикл» В алгоритмической структуре «цикл» серия команд (тело цикла) выполняется многократно. Такая последовательность команд называется «телом цикла». Циклические алгоритмические структуры бывают двух типов: 1. Цикл со счетчиком, в котором тело цикла выполняется определенное количество раз; 2. Цикл с условием, в котором тело цикла выполняется пока истинно условие. Задачи ГИА №3. Какая алгоритмическая структура используется А.С. Пушкиным в следующих отрывках из его произведений? «Жил старик со своею старухой У самого синего моря; … Вот пошел он к синему морю; Видит, — море слегка разыгралось. Стал он кликать золотую рыбку, Приплыла к нему рыбка и спросила: «Чего тебе надобно, старче?» … Вот пошел он к синему морю, (Помутилося синее море.) Стал он кликать золотую рыбку, Приплыла к нему рыбка, спросила: «Чего тебе надобно, старче?» Самостоятельная работа Определите значение переменных X и Y после выполнения фрагмента алгоритма. I вариант Х=13; Y=20 II вариант Х=30; Y=20 Игра «Циклические ёжики»