Типы алгоритмов — Гипермаркет знаний. Понятие алгоритма

Программирование - это записывание чего-то с использованием чужого малознакомого языка. С развитием этой области знания разработчики пошли еще дальше и научились записывать "что-то", даже не понимая, как оно звучит на русском языке. Новички учатся писать код сразу на C++ или php, используя множество библиотек, и толком даже не понимают, как то, что они создают, звучит на их родном языке. Алгоритмизация занимается разъяснением и доведением до понятного этого "что-то".

Алгоритмизация

Большинство примеров алгоритмов по информатике даже в вузах изучается на посредственном уровне. Общепринятой практикой является бесконечное написание все более сложного кода. Попытки неопытных программистов приступать к написанию программ сразу на языке программирования можно сравнить с работой журналиста, который, едва овладев основами иностранного языка, пишет статью для журнала. Избежать подобную проблему можно, если начать записывать свое произведение сначала на родном языке, отредактировать его, проверить на ошибки и в конце перевести на необходимый язык.

Преимущество такого подхода заключается главным образом в том, что переводом разработчик будет заниматься только 25 % времени, в то время как при написании программы на новом языке он потратит на работу с малознакомым языком все 100 %. При этом он окажется в стесненных условиях и не сможет провести хорошую проверку на ошибки и доработку проекта.

Алгоритмизация помогает при реализации проекта на компьютере описать процесс решения на родном и понятном языке в виде схемы взаимосвязанных алгоритмов, провести анализ идей и получить наиболее качественный и продуманный код, который будет устойчивее к ошибкам и эффективнее работать.

Понятие алгоритма

Компьютер не умеет решать задачи, он способен только выполнять простые действия в указанном порядке. "Как же калькулятор?" - спросите вы. Он тоже является плодом трудов программистов, которые создали программу, использующую определенные алгоритмы для получения необходимых результатов. Рассмотрим абстрактную ситуацию. Что следует сделать, если попросить найти корни квадратного трехчлена человека, который не знаком с методами решения уравнений?

Очевидно, что его необходимо обучить решать квадратные уравнения. Происходит это по следующей схеме:

  1. Выбрать способ решения.
  2. Изучить все детали выбранного способа.
  3. Объяснить первые два пункта будущему исполнителю на понятном ему языке.

Затем можно будет давать исполнителю задания на решение квадратного уравнения. И если первые два шага просты и понятны - все способы решения описаны в соответствующей литературе, то третий шаг представляет сложность.

Как можно гарантировать, что идеи, используемые при решении задачи, будут восприняты исполнителем так же, как это понимаете вы? Здесь мы вплотную подходим к понятию алгоритма. Практика показывает, что для правильного объяснения чего-то кому-то необходимо соблюдать следующие шаги:

  • определить исходные данные (переменная и коэффициенты квадратного уравнения);
  • разбить процесс решения на однозначно известные компоненты для исполнителя (формулы дискриминанта и нахождения корней);
  • указать порядок выполнения этапов (сначала вычислить дискриминант, затем корни);
  • установить условие, при котором решение считается завершенным (проверить найденные корни, подставив их в уравнение на место переменных);
  • обозначить, каким именно должен быть результат решения (корни принадлежат множеству действительных чисел).

Описанный набор шагов в общем смысле и являет собой алгоритм. Таким образом под алгоритмом можно понимать способ решения поставленной задачи, записанный при помощи определенных правил, позволяющих обеспечить однозначное понимание выполняемых действий и их порядка. Ниже будут подробнее рассмотрены алгоритмы и примеры задач.

Основные свойства алгоритма

Дискретность. Процесс решения задачи всегда состоит из строго отделенных друг от друга действий, называемых шагами, имеющими определенный порядок выполнения.

Определенность. Каждый шаг должен быть понятным и однозначным как по смыслу, так и в ключе действия, которое предстоит совершить.

Результативность. Алгоритм должен давать результат. При этом количество шагов может исчисляться тысячами или миллионами, но они всегда должны приводить к результату.

Массовость. Любой алгоритм, разработанный для решения какой-либо задачи, должен быть применим ко всем задачам этого типа для всех допустимых исходных данных.

Возможности компьютера

Для правильного создания алгоритмов под компьютеры важно понимать их возможности. Рассмотрим сначала величины, с которыми работает ЭВМ. В общем случае их можно разделить на числовые и текстовые, постоянные и переменные.

Под постоянными числами понимаются все числа: 3,15, 100, 105, их особенностью является неизменность в течение всей работы программы. Переменные величины меняют свое значение в ходе выполнения кода и обозначаются, как правило, буквами: x, y, max, min и т. д.

Текстовые переменные аналогично числовым бывают постоянными или переменными. В первом случае это просто текст: "хорошо", "a и b" и пр. Во втором - такое же символьное обозначение, как и числовых переменных: name, city и т. п. Отличие между ними заключается главным образом в выделяемой памяти компьютера под хранение такой переменной.

Операции, которые способен выполнять компьютер:

  1. Считывать данные с устройств ввода (клавиатура, мышь, файлы).
  2. Вычисление значений с использованием математические функции: сложение, вычитание, sin, cos, ln и т. д. - в каждом языке программирования свой набор встроенных функций.
  3. Вывод данных (на экран, на бумагу, в сетевой интерфейс).
  4. Переход между этапами выполнения программы.
  5. Сравнение двух величин (больше, меньше, равно).

Это основные операции, которые могут выполняться большинством языков программирования.

Способы описания алгоритмов

Словесный. Это самый простой способ. Его примером может служить кулинарный рецепт. Допускается использование простых математических формул.

Графический. Описание с помощью схем. Это особый способ записи алгоритмов с использованием своего рода общепринятого алгоритмического языка - фигур и блоков, имеющих определенное значение: прямоугольник - простой действие, наклонный параллелограмм - ввод/вывод, ромб - условие и т. д.

Использование алгоритмического языка. Аналогично графическому, это также особенный способ записи алгоритма. Существует множество алгоритмических языков. Их правила не являются строгими, иначе это был бы язык программирования. Рассмотрим пример алгоритма расчета заработной платы в зависимости от стажа, записанный при помощи алгоритмического языка.

Алг заработная плата (int ST, real ZP) арг ST рез ZP начало если ST

Алгоритмический язык можно назвать более строгой формой записи по сравнению со словесной. Используется ограниченный набор слов и их конструкций, а также оформление с отступами. Минусом словесной формы и алгоритмического языка является ухудшающаяся наглядность алгоритма при увеличении его размеров. Поэтому данные способы могут быть использованы только для передачи смысла небольших алгоритмов.

Виды алгоритмов

Существует огромное множество алгоритмов, созданных для решения самых разных задач. Например, любой учебник высшей математики содержит сотни алгоритмов: решение системы линейных уравнений, нахождение экстремумов функции, вычисление интеграла и т. д. Однако при детальном рассмотрении их структуры оказывается, что все алгоритмы можно разделить на несколько видов. Рассмотрим эти виды алгоритмов с примерами.

  • линейный (вычисление результата сложения или умножения, обмен значениями нескольких переменных);
  • разветвляющийся (определение наибольшего из нескольких чисел);
  • циклический (сортировка массива, вычисление факториала).

Это базовые виды. Стоит также отметить, что в ряде литературы выделяется еще и четвертый вид - рекурсивный. Но особого обозначения в схематической записи он не имеет и реализуется через базовые.

Подробнее о каждом алгоритме вычисления с примерами будет рассказано ниже.

Принципы алгоритмизации

  1. Определить исходные данные.
  2. Выбрать способ решения.
  3. Разбить выбранные способ на шаги исходя из возможностей компьютера (языка программирования).
  4. Выполнить алгоритм в виде схемы, определив четкий порядок шагов.
  5. Вывод результатов вычислений.
  6. Обозначить переход к выходу схемы.

Отладка алгоритма

Человек допускает ошибки, и это факт. Главным параметром любого алгоритма должна быть правильность его работы. Отладка - это процесс выявления и исправления ошибок алгоритма. Для этого берется определенный набор исходных данных, называемых тестовыми. Они представляют собой, как правило, всевозможные типы исходных данных. Например, если на ввод подается число, то алгоритм следует проверить на корректную работу с учетом: положительных, отрицательных, целых и вещественных чисел, нулевые значения и т. п.

Главным инструментом для проверки точности алгоритма остается человеческий мозг. Конечно, допустимо использование других компьютерных инструментов для автоматизации проверки, но так или иначе подготовкой тестов и анализом результатов занимается человек. В таком случае возникает вопрос, а зачем нужен алгоритм, если человек выполняет все сам? Затем, что главная задача алгоритма - многократное решение определенного типа задач.

Линейные алгоритмы

Линейным является алгоритм, в котором шаги идут последовательно друг за другом. Любой алгоритм, не содержащий ветвлений и циклов, является линейным. Рассмотрим пример алгоритма, решающего следующую задачу: в двух клетках сидят волк и заяц, нужно поменять их местами.

Ключом к решению данной задачи является дополнительная клетка temp, которую следует использовать, чтобы поменять местами животных.

Разветвляющиеся алгоритмы

Как и следует из названия, алгоритм имеет несколько ветвей. Суть работы заключается в выборе одного из возможных вариантов вычислительного процесса в зависимости от каких-либо условий. Схематическое ветвление изображается ромбовидным блоком, внутри которого указывается условие, а по сторонам от него располагаются ветви выбора в зависимости от того, истинно условие или ложно. Разветвляющийся алгоритм и примеры его применения можно найти повсеместно. В программировании это типичная конструкция if-else, которая есть почти в любом языке.


Приведем пример алгоритма для решения задачи о нахождении наибольшего среди трех чисел.


Циклический алгоритм

Циклическим является алгоритм, в котором происходит многократное повторение одних и тех же шагов, в которых меняться может только значение конкретной переменной, над которой производятся расчеты. Виды циклического алгоритма и пример будут рассмотрены ниже, а пока перечислим основные шаги для построения цикла.

  1. Присваивание начального значения переменных. Без выполнения этого условия цикл, скорее всего, не сможет работать или будет совершать ошибки.
  2. Блок вычисления результатов. Это основное тело цикла.
  3. Проверка условия окончания циклического процесса. Если забыть указать условие, при котором следует завершить цикл, алгоритм будет выполняться бесконечно.
  4. Изменение переменных. Этот блок вступает в силу после проверки условия окончания, если оно было ложным. Если забыть про этот блок, то цикл будет вечно выполнять одно действие и никогда не завершится. Поэтому важно, чтобы переменные претерпевали какие-либо изменения на каждой итерации цикла.

Существует несколько видов циклических алгоритмов: с постусловием, предусловием и параметром.


Построим циклический алгоритм на примере нахождения факториала числа N.

Другие типы алгоритмов

Существует еще ряд алгоритмов, которые отличаются по классификации или происхождению.

  • Механические алгоритмы. Например, работа двигателя внутреннего сгорания или сборочного конвейера.
  • Вероятностные алгоритмы. Их работа основана на теории вероятности и математической статистике.
  • Эвристические алгоритмы. Используют практические соображения в своей работе, без строгого математического обоснования.
  • Генетические алгоритмы. Применяют биологические идеи в своей работе.

Аннотация: Алгоритм является базовым понятием для тех, кто хочет начать программировать на любом языке программирования. Любая задача может быть формализована алгоритмически. Чтобы понять, с чего начать, рассмотрим основные виды алгоритмов. Цель данной лекции – ознакомить студентов с понятием алгоритма; показать, что такая абстрактная вещь как алгоритм окружает нас в повседневной жизни.

Пример псевдокода:

алг Нахождение частного двух чисел начало вывод ("задайте делимое и делитель") ввод (делимое, делитель) если делитель ≠ 0 то частное = делимое / делитель вывод(частное) иначе вывод("нет решения") кон алг Нахождение частного двух чисел

В данном примере используется три переменные: делимое, делитель и частное. Делимое и делитель задаются исполнителем произвольными числами. Частное считается лишь в том случае, если делитель не равен нулю.

Графическая реализация алгоритма представляет собой блок-схему. Блок-схема состоит из блоков определенной формы, соединенных стрелками. Ответ при этом получает человек, который выполняет команды согласно блок-схеме. Более подробно о блок-схемах будет рассказано в Лекции 2.

Программная реализация алгоритма – это компьютерная программа, написанная на каком-либо алгоритмическом языке программирования, например: С++, Pascal, Basic и т.д. Программа состоит из команд определенного языка программирования. Отметим, что одна и та же блок-схема может быть реализована на разных языках программирования. Ответ при этом получает ЭВМ, а не человек. Более подробно о составлении программ на языке программирования С++ смотреть Лекцию 3.

Различают три основных вида алгоритмов:

  1. линейный алгоритм,
  2. разветвляющийся алгоритм,
  3. циклический алгоритм.

Линейный алгоритм – это алгоритм, в котором действия выполняются однократно и строго последовательно.

Самый простой пример реализации линейного алгоритма – путь из университета домой.

Словесный способ записи данного алгоритма:

  1. выйти из университета на остановку;
  2. подождать нужный автобус;
  3. сесть на нужный автобус;
  4. оплатить проезд;
  5. выйти на требуемой остановке;
  6. дойти до дома.

Очевидно, что данный пример относится к линейному алгоритму, т.к. все действия следуют одно за другим, без условий и повторений.

Разветвляющийся алгоритм – это алгоритм, в котором в зависимости от условия выполняется либо одна, либо другая последовательность действий.

Самый простой пример реализации разветвляющегося алгоритма – если на улице идет дождь, то необходимо взять зонт, иначе не брать зонт с собой.

Приведенный выше пример псевдокода по нахождению частного двух чисел также относится к разветвляющемуся алгоритму.

Циклический алгоритм – это алгоритм, команды которого повторяются некое количество раз подряд.

Самый простой пример реализации циклического алгоритма – при чтении книги будут повторяться одни и те же действия: прочитать страницу, перелистнуть и т.д.

Более подробно о линейном, разветвляющемся и циклическом алгоритмах смотреть Лекцию 2.

  • Составьте алгоритм по нахождению корней квадратного уравнения через дискриминант. Используйте разветвляющийся алгоритм. Реализуйте его псевдокодом.
  • На практике наиболее распространены следующие формы представления алгоритмов:

    · словесная (записи на естественном языке);

    · графическая (изображения из графических символов);

    · псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);

    · программная (тексты на языках программирования).

    Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задается в произвольном изложении на естественном языке. Например. Записать алгоритм нахождения наибольшего общего делителя (НОД) двух натуральных чисел.

    Алгоритм может быть следующим:

    · задать два числа;

    · если числа равны, то взять любое из них в качестве ответа и остановиться, в

    противном случае продолжить выполнение алгоритма;

    · определить большее из чисел;

    · заменить большее из чисел разностью большего и меньшего из чисел;

    · повторить алгоритм с шага 2.

    Описанный алгоритм применим к любым натуральным числам и должен приводить к решению поставленной задачи.

    Словесный способ не имеет широкого распространения по следующим причинам:

    · такие описания строго не формализуемы;

    · страдают многословностью записей;

    · допускают неоднозначность толкования отдельных предписаний.

    Графический способ представления алгоритмов является более компактным и наглядным по сравнению со словесным.

    Такое графическое представление называется схемой алгоритма или блок-схемой.

    При графическом представлении алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий.

    В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий.

    1)Блок начало-конец

    Элемент отображает выход во внешнюю среду и вход из внешней среды (наиболее частое применение − начало и конец программы). Внутри фигуры записывается соответствующее действие.

    2) Блок действия

    Выполнение одной или нескольких операций, обработка данных любого вида (изменение значения данных, формы представления, расположения). Внутри фигуры записывают непосредственно сами операции, например, операцию присваивания: a = 10*b + c


    3) Логический блок

    Отображает решение или функцию переключательного типа с одним входом и двумя или более альтернативными выходами, из которых только один может быть выбран после вычисления условий, определенных внутри этого элемента. Вход в элемент обозначается линией, входящей обычно в верхнюю вершину элемента. Если выходов два или три, то обычно каждый выход обозначается линией, выходящей из оставшихся вершин (боковых и нижней). Если выходов больше трех, то их следует показывать одной линией, выходящей из вершины (чаще нижней) элемента, которая затем разветвляется. Соответствующие результаты вычислений могут записываться рядом с линиями, отображающими эти пути. Примеры решения: в общем случае − сравнение (три выхода: >, <, =); в программировании − условные операторы if (два выхода: true, false) и case (множество выходов).

    Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод). Данный символ не определяет носителя данных (для указания типа носителя данных используются специфические символы).

    Типы алгоритмов

    Разветвляющийся алгоритм - алгоритм, содержащий хотя бы одно условие, в результате проверки которого может осуществляться разделение на несколько параллельных ветвей алгоритма.

    Линейный алгоритм - набор команд (указаний), выполняемых последовательно во времени друг за другом.

    Циклический алгоритм - алгоритм, предусматривающий многократное повторение одного и того же действия (одних и тех же операций) над новыми исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов. Цикл программы - последовательность команд (серия, тело цикла), которая может выполняться многократно (для новых исходных данных) до удовлетворения некоторого условия.

    >> Типы алгоритмов

    В алгоритмах команды записываются друг за другом в определенном порядке. Выполняются они не обязательно в записанной последовательности: в зависимости от порядка выполнения команд можно выделить три типа алгоритмов:

    Линейные алгоритмы;
    алгоритмы с ветвлениями;
    алгоритмы с повторениями.

    Линейные алгоритмы

    В котором команды выполняются в порядке их записи, то есть последовательно друг за другом, называется линейным.

    Например, линейным является следующий алгоритм посадки дерева:

    1) выкопать в земле ямку;
    2) опустить в ямку саженец;
    3) засыпать ямку с саженцем землей;
    4) полить саженец водой.

    С помощью блок-схемы данный алгоритм можно изобразить так:

    Алгоритмы о ветвлениями

    Ситуации, когда заранее известна последовательность требуемых действий, встречаются крайне редко. В жизни часто приходится принимать решение в зависимости от сложившейся обстановки. Если идет дождь, мы берем зонт и надеваем плащ; если жарко, надеваем легкую одежду. Встречаются и более сложные условия выбора. В некоторых случаях от выбранного решения зависит дальнейшая судьба человека.

    Логику принятия решения можно описать так:

    ЕСЛИ <условие> ТО <действия 1> ИНАЧЕ <действия 2>

    Примеры:

    ЕСЛИ хочешь бытьздоров , ТО закаляйся, ИНАЧЕ валяйся весь день на диване;
    ЕСЛИ низко ласточки летают, ТО будет дождь, ИНАЧЕ дождя не будет;
    ЕСЛИ уроки выучены, ТО иди гулять, ИНАЧЕ учи уроки.

    В некоторых случаях <действия 2> могут отсутствовать;

    ЕСЛИ <условие> ТО <действия 1>

    Пример :

    ЕСЛИ назвался груздем, ТО полезай в кузов.

    Форма организации действий, при которой в зависимости от выполнения некоторого условия совершается одна или другая последовательность шагов, называется ветвлением.

    Изобразим в виде блок-схемы последовательность действий ученика 6 класса Мухина Васи, которую он представляет себе так: "Если Павлик дома, будем решать задачи по математике. В противном случае следует позвонить Марине и вместе готовить доклад по биологии. Если же Марины нет дома, то надо сесть за сочинение."

    А вот так, с помощью блок-схемы можно очень наглядно представить рассуждения при решении следующей задачи.

    Из трёх монет одинакового достоинства одна фальшивая (более легкая). Как ее найти с помощью одного взвешивания на чашечных весах без гирь?

    Алгоритмы с повторениями

    На практике часто встречаются задачи, в которых одно или несколько действий бывает необходимо повторить несколько раз, пока соблюдается некоторое заранее установленное условие.

    Алгоритм, содержащий циклы , называется циклическим алгоритмом или алгоритмом с повторениями.

    Ситуация, при которой выполнение цикла никогда не заканчивается, называется зацикливанием. Следует разрабатывать алгоритмы, не допускающие таких ситуаций.

    Рассмотрим пример из математики.

    Натуральное число называют простым, если оно имеет только два делителя: единицу и само это число1.

    2, 3, 5, 7 - простые числа; 4, 6, 8 - нет. В III веке до нашей эры греческий математик Эратосфен предложил следующий алгоритм для нахождения всех простых чисел, меньших заданного числа n:

    1) выписать все натуральные числа от 1 до n;
    2) вычеркнуть 1;
    3) подчеркнуть наименьшее из неотмеченных чисел;
    4) вычеркнуть все числа, кратные подчеркнутому на предыдущем шаге;
    5) если в списке имеются неотмеченные числа, то перейти к шагу 3, в противном случае все подчеркнутые числа - простые.

    Это циклический алгоритм. При его выполнении повторение шагов 3-5 происходит, пока в исходном списке остаются неотмеченные числа.

    Вот так выглядит блок-схема действий школьника, которому перед вечерней прогулкой следует выполнить домашнее задание по математике:

    Напомним, что число 1 не относят ни к составным (имеющим более двух делителей), ни к простым числам.

    Самое главное

    В зависимости от порядка выполнения команд можно выделить три типа алгоритмов:

    > линейные алгоритмы;
    > алгоритмы с ветвлениями;
    > алгоритмы с повторениями.

    Алгоритм, в котором команды выполняются в порядке их записи, то есть последовательно друг за другом, называется линейным.

    Форма организации действий, при которой в зависимости от выполнения некоторого условия совершается одна или другая последовательность шагов, называется ветвлением.

    Форма организации действий, при которой выполнение одной и той же последовательности команд повторяется, пока выполняется некоторое заранее установленное условие, называется циклом (повторением).

    Вопросы и задания

    1. Какие алгоритмы называют линейными?
    2. Приведите пример линейного алгоритма,
    3. Исполнитель «Вычислитель» умеет выполнять только две команды: умножать на 2 и прибавлять Придумайте для него наиболее короткий план получения из О числа 50.
    4. Какая форма организации действий называется ветвлением?
    5. Какие условия должна была выполнить героиня скази «Гуси-лебеди»?
    6. Приведите пример алгоритма, содержащего ветвление»
    7. Прочитайте отрывок из стихотворения Дж. Родари «Чем пахнут ремесла?»:

    У каждого дела запах особый:
    В булочной пахнет тестом и сдобой.
    Мимо столярной идешь мастерской -
    Стружкою пахнет и свежей доской.
    Пахнет маляр скипидаром и краской.
    Пахнет стекольщик оконной замазкой.
    Куртка шофера пахнет бензином,
    Блуза рабочего - маслом машинным.

    Перефразируйте
    о профессиях с помощью слов «ЕСЛИ... ТО»/

    8. Вспомните, герои каких русских народных сказок совершают выбор, определяющий их судьбу.
    9. Из 9 монет одинакового достоинства одна фальшивая (более легкая). За сколько взвешиваний на чашечных весах без гирь вы можете ее определить?
    10. Какая форма организации действий называется повторением?
    11. Приведите пример алгоритма, содержащего повторение.
    12. В каких известных вам литературных произведениях имеет место циклическая форма организации действий?
    13. Где окажется исполнитель, выполнивший 16 раз подряд следующую группу команд?

    пройти 10 метров вперед

    повернуть на 90° по часовой стрелке

    14. Какую группу действий и сколько раз следует повторить при решении следующей задачи?

    Сорок солдат подошли к реке, по которой на лодке катаются двое мальчиков. Как солдатам переправиться на другой берег, если лодка вмещает только одного солдата либо двух мальчиков, а солдата и мальчика уже не вмещает?

    15. Вспомните задачу о Вычислителе, умеющем только умножать на 2 и прибавлять 1. Разрабатывать для него рациональные алгоритмы будет значительно проще, если воспользоваться следующей блок-схемой:

    Используя эту блок-схему, разработайте рациональные алгоритмы получения из числа 0 чисел 1024 и 500.

    Босова Л. Л. Информатика: Учебник для 6 класса / Л. Л. Босова. - 3-е изд., испр. и доп. - М.: БИНОМ. Лаборатория знаний, 2005. - 208 с.: ил.

    Содержание урока конспект урока и опорный каркас презентация урока интерактивные технологии акселеративные методы обучения Практика тесты, тестирование онлайн задачи и упражнения домашние задания практикумы и тренинги вопросы для дискуссий в классе Иллюстрации видео- и аудиоматериалы фотографии, картинки графики, таблицы, схемы комиксы, притчи, поговорки, кроссворды, анекдоты, приколы, цитаты Дополнения рефераты шпаргалки фишки для любознательных статьи (МАН) литература основная и дополнительная словарь терминов Совершенствование учебников и уроков исправление ошибок в учебнике замена устаревших знаний новыми Только для учителей календарные планы учебные программы методические рекомендации