01._Algoritmy_i_programmy.ppt
- Количество слайдов: 57
Программирование/Основы программирования Институт Информационных Технологий Чел. ГУ, 2011
Отличие компьютера от человека
Отличие компьютера от человека Не думает – делает только то, что ему “сказали” Все ситуации и действия должны быть заранее запрограммированы думает В разных ситуациях самостоятельно генерирует алгоритм действий
Взаимодействие компьютера и человека Язык программирования Компьютер очень сложно запрограммировать, что бы он понимал человеческую речь и мысль Человек может освоить любой язык, в том числе и компьютерный На компьютерном языке необходимо описать порядок выполнения действий компьютером
Понятие алгоритма Рецепт приготовления яичницы Разогреть сковороду Взять яйцо Разбить яйцо над сковородой Посолить Ждать 2 минуты Алгоритм - это точный набор инструкций, описывающих порядок действий исполнителя достижения результата решения задачи за конечное время.
Понятие алгоритма Замечание: Порядок действий и последовательность событий это разные вещи. Порядок действий Ход времени Последовательность событий Пример: Положим, будильник не прозвенел, Вы не проснулись вовремя, Вы опоздали на работу. Это последовательность событий. Однако, положим, ваше опоздание стало причиной разноса от начальства и нарушением графика питания. Эти три события никак не объединить в единую последовательность.
Неформализованный алгоритм Под неформализованным алгоритмом будем понимать алгоритм, изложенный в виде набора действий, описанных на русском языке. Задача: 1. Открыть справочник терминов Положим, Вы пришли в библиотеку и Вам нужно найти литературу по экономической теории. Вы рассчитываете получить необходимую литературу, пользуясь реестром книг библиотеки и помощью библиотекаря. Требуется описать алгоритм. 2. Выбрать книгу из реестра 3. Разобрать название книги 4. Если название неизвестно, обратиться к библиотекарю 5. Если название неизвестно, пропустить книгу 6. Если книга связана с темой, занести её в список литературы 7. Если просмотрены не все книги, вернуться к пункту 2 8. Попросить у библиотекаря выбранные книги
Формальный алгоритм - формальные математические записи алгоритма (Нормальные алгоритмы Маркова, Машина поста, Машина Тьюринга) -псевдо язык -Граф-схемы алгоритмов (Блок-схемы) - Программа
Формальный алгоритм Нормальный алгоритм Маркова Алфавит: Система подстановок: и аем н Не м апо з
Формальный алгоритм Псевдокод полуформализованные описания алгоритмов на ус ловном алгоритмическом языке, включающие в себя как элементы язы ка программирования, так и фразы естественного языка, общепринятые математические обозначения и др. ); алг название алгоритма (аргументы и результаты) дано условия применимости алгоритма надо цель выполнения алгоритма нач описание промежуточных величин последовательность команд (тело алгоритма) кон.
Формальный алгоритм Псевдокод алг (алгоритм) сим (символьный) дано для да арг (аргумент) лит (литерный) надо от нет рез (результат) лог (логический) если до при нач (начало) таб(таблица) то знач выбор кон (конец) нц (начало цикла) иначе и ввод цел (целый) кц (конец цикла) все или вывод вещ (вещественный) длин (длина) пока не утв Название структуры Псевдокод присваивание, ввод, вывод переменная = 0, ввод (переменная), вывод (переменная) ветвление если условие то (серия 1 иначе серия 2) цикл ПОКА пока условие нц серия кц
Формальный алгоритм Псевдокод Пример: алг HELLOWORLD нач вывод ('Hello, World') кон алг HELLOWORLD
Формальный алгоритм Псевдокод алг Сумма квадратов (арг цел n, рез цел S) дано | n > 0 надо | S = 1*1 + 2*2 + 3*3 +. . . + n*n нач цел i ввод n; S: =0 нц для i от 1 до n S: =S+i*i кц вывод "S = ", S кон
Формальный алгоритм Блок-схемы алгоритмов Графическая нотация алгоритма (порядка выполнения действий)
Блок-схемы алгоритмов Любой алгоритм имеет начало, конец и описание самого процесса.
Блок-схемы алгоритмов Алгоритмы Линейные Циклические Ветвления
Блок-схемы алгоритмов Линейный алгоритм
Блок-схемы алгоритмов Линейный алгоритм ПРИМЕР: Известны плотность и геометрические размеры цилиндрического слитка, полученного в металлургической лаборатории. Найти объем, массу и площадь основания слитка. Входные данные: R - радиус основания цилиндра, h - высота цилиндра, ρ- плотность материала слитка. Выходные данные: m - масса слитка, V - объем, S - площадь основания.
Блок-схемы алгоритмов Алгоритм с ветвлением Дорогой, если в магазине есть кефир, то купи кефир, иначе молоко и кукурузные хлопья.
Блок-схемы алгоритмов Логическое высказывание (смотреть курс Дискретная математика) Например: a==5 cost<100
Блок-схемы алгоритмов Алгоритм с ветвлением
Блок-схемы алгоритмов Алгоритм с ветвлением Блок-схема решения квадратного уравнения
Блок-схемы алгоритмов Циклический алгоритм
Блок-схемы алгоритмов Начало Если хлеб не закончился Отрезать кусок хлеба Конец Циклический алгоритм
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с предусловием Алгоритм циклической структуры с постусловием Алгоритм циклической структуры без условия Условный циклический алгоритм с известным числом повторений
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с предусловием Алгоритм циклической структуры с постусловием Алгоритм циклической структуры без условия Условный циклический алгоритм с известным числом повторений
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с предусловием
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с предусловием
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с предусловием Тело цикла может не выполняться, в принципе
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с предусловием ЗАДАЧА: Посчитаем количество цифр в числе Выполните ручную трассировку для числа 65 387 K 0 1 2 3 4 5 m 65387 6538 653 65 6 0
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с предусловием Количество цифр в числе неизвестно, поэтому необходимо использовать цикл с предусловием.
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с предусловием
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с предусловием Алгоритм циклической структуры с постусловием Алгоритм циклической структуры без условия Условный циклический алгоритм с известным числом повторений
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с постусловием
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с постусловием Хотя бы раз тело цикла выполнится
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с постусловием Пример задачи: Угадай число. Компьютер загадывает число от 0 до 10. Пользователь угадывает число и вводит его. Если введенное число меньше или больше загаданного, то компьютер выводит “загаданное число больше”, “загаданное число меньше” соответственно. Угадывание происходит до тех пор, пока пользователь точно не угадает число.
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с постусловием Пример задачи: Угадай число. – неформализованный алгоритм 1) 2) 3) 4) 5) 6) Компьютер загадывает число A Пользователь вводит число B(попытка угадать число) Если загаданное число А больше числа B, то выводим “БОЛЬШЕ” Если загаданное число А меньше числа B, то выводим “МЕНЬШЕ” Если у число не угадано, то переходим к п 2. Если число угадано, то выводим “ВЫ УГАДАЛИ ЧИСЛО”
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с постусловием Пример задачи: Угадай число. – неформализованный алгоритм 1) 2) 3) 4) 5) 6) Компьютер загадывает число A Пользователь вводит число B(попытка угадать число) Если загаданное число А больше числа B, то выводим “БОЛЬШЕ” Если загаданное число А меньше числа B, то выводим “МЕНЬШЕ” Если у число не угадано, то переходим к п 2. Если число угадано, то выводим “ВЫ УГАДАЛИ ЧИСЛО”
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с постусловием Пример задачи: Угадай число. – ГСА Какой тип цикла использовать? Если в задаче, пользователь хотя бы 1 раз (обязательно) должен ввести число
Начало К. загадывает А Пункт 1 Ввод B Пункт 2 А>B ДА НЕТ А>B БОЛЬШЕ НЕТ МЕНЬШЕ ДА Пункт 3 Пункт 4 А<>B Пункт 5 УГАДАЛИ Пункт 6 Конец
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с предусловием Алгоритм циклической структуры с постусловием Алгоритм циклической структуры без условия Условный циклический алгоритм с известным числом повторений
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры без условия Можно сказать, что условие выхода из цикла не зависит от тела цикла
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры без условия N! = 1 *2 *3 * … * (N 2) * (N 1) * N Вычисление факториала
Блок-схемы алгоритмов Циклический алгоритм Алгоритм циклической структуры с предусловием Алгоритм циклической структуры с постусловием Алгоритм циклической структуры без условия Условный циклический алгоритм с известным числом повторений
Блок-схемы алгоритмов Циклический алгоритм Условный циклический алгоритм с известным числом повторений Отметим, что переменную i называют параметром цикла, так как это переменная, которая изменяется внутри цикла по определенному закону и влияет на его окончание.
Блок-схемы алгоритмов Циклический алгоритм Вложенные циклы Составим таблицу умножения
Взаимозаменяемость циклов Критерий эквивалентности алгоритмов – что бы для различных наборов входных данных 2 алгоритма генерировали одинаковые входные последовательности данных Упрощенный критерий: 2 алгоритма при одних данных должны выполнять одни и те же действия и выдавать одинаковый результат.
Взаимозаменяемость циклов Цикл с пост условием всегда можно заменить с циклом с предусловием
Взаимозаменяемость циклов Начало К загадал число Попытка угадать число A<>B Конец Начало К загадал число Попытка 1 угадать число A<>B Попытка угадать число Конец
Взаимозаменяемость циклов Начало К загадал число Попытка угадать число A<>B Конец Начало К загадал число Попытка 1 угадать число A<>B Попытка угадать число Конец
Взаимозаменяемость циклов Итерационный цикл можно заменить циклом с пред условием
ИНТЕРЕСНЫЕ МОМЕНТЫ
Замена значений 2 -х переменных A B A B 2 1 C A B C 1) C = A 2) A = B 3) B = C 3 C C=5, B= 10 1) C = A C=A=5, B=10 2) A = B A=B=10, C=5 3) B = C B=C=5, A=10, B=5 C
Замена значений 2 -х переменных 1) A = A + B = Aнач + Bнач 2) B = A – B B = A - B = (Анач + Bнач) – Bнач = Анач 3) A = A – B B = A - B = (Анач + Bнач) – Анач = Внач
Замена условий!!! ДА Действие 1 условие НЕТ Действие 2 НЕТ Действие 1 против условие ДА Действие 2
Замена условий!!! ДА условие НЕТ ЕСЛИ условие ТО ПУСТО ИНАЧЕ Действие 2 Языки программирования не допускают пустоты в части ТО Действие 2 ЕСЛИ условие ТО А=А ИНАЧЕ Действие 2 Лишнее действие НЕТ отриц условие ДА Действие 2 ЕСЛИ отриц. условие ТО Действие 2 ИНАЧЕ Пусто ЕСЛИ отриц. условие ТО Действие 2
Замена условий!!! ДА A=B A B ДА A B ЕСЛИ A>=B ТО A B