Программа решения уравнений по информатике

Программирование на Паскале. Тема: «Решение квадратного уравнения с использованием конструкции IF–THEN–ELSE»

Цели урока:

  • Повторить с учащимися правила решения квадратных уравнений
  • Вспомнить алгоритмическую конструкцию IF-THEN-ELSE
  • Составить блок-схему программы и саму программу на языке Pascal
  • Проверить работоспособность программы на конкретных примерах
  • Расширить представления учащихся о применении языка Pascal
  • Воспитать у учащихся чувство аккуратности, внимательности, ответственности
  • Научить учащихся самостоятельно находить свои ошибки в программах
  • Оборудование:

  • Таблички с формулами
  • Плакат с блок-схемой алгоритма КВУР
  • Листочки с индивидуальными заданиями
  • Система программирования «Turbo Pascal 7.0»
  • До сих пор мы с вами говорили о каких-то отвлечённых задачах из области математики. Сегодня мы поговорим о конкретной задаче, которая встречается у вас почти на каждом уроке. Это решение квадратного уравнения. Я хочу, чтобы вы на примере этой задачи поняли, что программирование — это не просто прихоть учителя, это действительно раздел информатики, который может нам помочь, например, в решении конкретных математических задач. Нужно только уметь разбираться в этом.

    2. Математическое решение

    Давайте вспомним, что понимают под квадратным уравнением?

    Что из себя представляют числа a,b,c и как их называют?

    С чего начинают решение квадратного уравнения?

    Найдите вокруг себя формулу дискриминанта. (D=b 2 -4ac) (Приложение 3)

    Как мы решаем далее квадратное уравнение? (сравнение D с нулём)

    Какие выводы мы из этого делаем?

    (если D 0, то два корня)

    Как найти корни квадратного уравнения? Найдите формулы корней среди тех, что развешены повсюду.

    Если я случай наличия корней квадратного уравнения сведу к условию D0, то что я получу в случае D=0?

    (Два одинаковых корня)

    Давайте ещё раз подробно разберём нашу задачу:

    Итак, у нас есть квадратное уравнение ax 2 +bx+c=0.

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

    Найти дискриминант D=b 2 — 4ac.

    Сравнить его с нулём

    D=b 2 -4ac=10 2 -4*3*3=100 — 36 =64

    Х1=,

    X2 =

    3. Составление блок-схемы алгоритма.

    По заданному решению попробуем составить блок-схему алгоритма в тетради. Кто справится первым, прошу к доске.

    Подпишем основные элементы блок — схемы применительно к языку программирования.

    4. Составление программы по блок — схеме.

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

    А я раздам вам домашнее задание.

    Var a,b,c,d,x1,x1: real;

    Write(‘введите коэффициенты уравнения a,b,c’); readln(a,b,c);

    Else writeln(‘действительных корней нет’)

    1. Составить и набрать программу КВУР на компьютере.

    Загрузка среды Pascal- 2ЩЛКМ по значку Pascal, нажать ALT+ENTER.

    Запуск программы — ЩЛКМ по кнопке RUN выбрать RUN.

    2. Решить следующие квадратные уравнения и показать учителю их решения (если нет такой возможности, то занести их в маршрутный лист (Приложение 4)

    1,5х 2 -0,6х — 4,8 = 0

    3. Переделайте программу КВУР таким образом, чтобы в ней учитывался случай, когда D=0 и уравнение имеет один корень.

    4. Закрыть программу.

    Подсказка: Меню File — Exit или ALT+X.

    1. За простое воспроизведение (набор программы) без проверки оценка «3»

    2. За проверку работы программы на примерах, представленных учителем оценка «4»

    3. За решение всех заданий и дополнительное изменение программы для случая D=0, оценка «5»

    4. Закрыть программу.

    Подсказка: Меню File — Exit или ALT+X.

    Х1Х2
    13,2301390,1031947
    21,464102-5,464102
    31,106107-1,356107
    4Корней нет
    5Корней нет
    61,60
    72-1,6
    8Корней нет
    90,6872614-1,131706
    109,486833-9,486833

    Можно дать дополнительное задание:

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

    1) Напишите программу проверки пароля. Пусть пароль — некоторое число, зафиксированное в программе. Программа печатает приглашение «введите пароль» и вводит число. Если введённое число совпадает с фиксированным паролем, то программа выводит приветствие, если нет — сообщает о том, что пароль не угадан.

    7. Подведение итогов урока.

    Итак, ребята, сегодня мы с вами решали конкретные задачи из математики, применяя свои умения по программированию. Вы получили следующие оценки за свои знания. (Перечисление оценок) На следующем уроке нам предстоит познакомиться с новыми алгоритмами — Циклическими.

    На сегодня наш урок закончен. До свидания.

    Литература:

  • И. Семакин, Л. Залогова «Информатика. Базовый курс. 9 класс», М., БИНОМ, 2005г.
  • А.А. Чернов «Конспекты уроков информатики в 9-11 классах», Волгоград: Учитель, 2006г.
  • Л.И. Белоусова, С.А. Веприк «Сборник задач по курсу информатики», М., «Экзамен», 2007.
  • Построение таблицы истинности. СДНФ. СКНФ. Полином Жегалкина.

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

    Калькулятор таблицы истинности, СКНФ, СДНФ, полинома Жегалкина

    введите функцию или её вектор

    Построено таблиц, форм:

    Как пользоваться калькулятором

    1. Введите в поле логическую функцию (например, x1 ∨ x2) или её вектор (например, 10110101)
    2. Укажите действия, которые необходимо выполнить с помощью переключателей
    3. Укажите, требуется ли вывод решения переключателем «С решением»
    4. Нажмите на кнопку «Построить»

    Видеоинструкция к калькулятору

    Используемые символы

    В качестве переменных используются буквы латинского и русского алфавитов (большие и маленькие), а также цифры, написанные после буквы (индекс переменной). Таким образом, именами переменных будут: a , x , a1 , B , X , X1 , Y1 , A123 и так далее.

    Для записи логических операций можно использовать как обычные символы клавиатуры ( * , + , ! , ^ , -> , = ), так и символы, устоявшиеся в литературе ( ∧ , ∨ , ¬ , ⊕ , → , ≡ ). Если на вашей клавиатуре отсутствует нужный символ операции, то используйте клавиатуру калькулятора (если она не видна, нажмите «Показать клавиатуру»), в которой доступны как все логические операции, так и набор наиболее часто используемых переменных.

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

    Обозначения логических операций

    • И (AND): & • ∧ *
    • ИЛИ (OR): ∨ +
    • НЕ (NOT): ¬ !
    • Исключающее ИЛИ (XOR): ⊕ ^
    • Импликация: -> → =>
    • Эквивалентность: =

    Что умеет калькулятор

    • Строить таблицу истинности по функции
    • Строить таблицу истинности по двоичному вектору
    • Строить совершенную конъюнктивную нормальную форму (СКНФ)
    • Строить совершенную дизъюнктивную нормальную форму (СДНФ)
    • Строить полином Жегалкина (методами Паскаля, треугольника, неопределённых коэффициентов)
    • Определять принадлежность функции к каждому из пяти классов Поста
    • Строить карту Карно
    • Минимизировать ДНФ и КНФ
    • Искать фиктивные переменные

    Что такое булева функция

    Булева функция f(x1, x2, . xn) — это любая функция от n переменных x1, x2, . xn, в которой её аргументы принимают одно из двух значений: либо 0, либо 1, и сама функция принимает значения 0 или 1. То есть это правило, по которому произвольному набору нулей и единиц ставится в соответствие значение 0 или 1. Подробнее про булевы функции можно посмотреть на Википедии.

    Что такое таблица истинности?

    Таблица истинности — это таблица, описывающая логическую функцию, а именно отражающую все значения функции при всех возможных значениях её аргументов. Таблица состоит из n+1 столбцов и 2 n строк, где n — число используемых переменных. В первых n столбцах записываются всевозможные значения аргументов (переменных) функции, а в n+1-ом столбце записываются значения функции, которые она принимает на данном наборе аргументов.

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

    Логические операции

    Логическая операция — операция над высказываниями, позволяющая составлять новые высказывания путём соединения более простых. В качестве основных операций обычно называют конъюнкцию (∧ или &), дизъюнкцию (∨ или |), импликацию (→), отрицание (¬), эквивалентность (=), исключающее ИЛИ (⊕).

    Таблица истинности логических операций

    aba ∧ ba ∨ b¬a¬ba → ba = ba ⊕ b
    000011110
    010110101
    100101001
    111100110

    Как задать логическую функцию

    Есть множество способов задать булеву функцию:

    • таблица истинности
    • характеристические множества
    • вектор значений
    • матрица Грея
    • формулы

    Рассмотрим некоторые из них:

    Чтобы задать функцию через вектор значений необходимо записать вектор из 2 n нулей и единиц, где n — число аргументов, от которых зависит функция. Например, функцию двух аргументов можно задать так: 0001 (операция И), 0111 (операция ИЛИ).

    Чтобы задать функцию в виде формулы, необходимо записать математическое выражение, состоящее из аргументов функции и логических операций. Например, можно задать такую функцию: a∧b ∨ b∧c ∨ a∧c

    Способы представления булевой функции

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

    • Совершенная дизъюнктивная нормальная форма (СДНФ)
    • Совершенная конъюнктивная нормальная форма (СКНФ)
    • Алгебраическая нормальная форма (АНФ, полином Жегалкина)

    Совершенная дизъюнктивная нормальная форма (ДНФ)

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

    Например, ДНФ является функция ¬a bc ∨ ¬a ¬b c ∨ ac, но не является СДНФ, так как в последней конъюнкции отсутствует переменная b.

    Совершенная конъюнктивная нормальная форма (КНФ)

    Простая дизъюнкция — это дизъюнкция одной или нескольких переменных, или их отрицаний, причём каждая переменная входит в неё не более одного раза.
    Конъюнктивная нормальная форма (КНФ) — это конъюнкция простых дизъюнкций.
    Совершенная конъюнктивная нормальная форма (СКНФ) — КНФ относительно некоторого заданного конечного набора переменных, в каждую дизъюнкцию которой входят все переменные данного набора.

    Например, КНФ является функция (a ∨ b) ∧ (a ∨ b ∨ c), но не является СДНФ, так как в первой дизъюнкции отсутствует переменная с.

    Алгебраическая нормальная форма (АНФ, полином Жегалкина)

    Алгебраическая нормальная форма, полином Жегалкина — это форма представления логической функции в виде полинома с коэффициентами вида 0 и 1, в котором в качестве произведения используется операция конъюнкции, а в качестве сложения — исключающее ИЛИ.

    Примеры полиномов Жегалкина: 1, a, a⊕b, ab⊕a⊕b⊕1

    Алгоритм построения СДНФ для булевой функции

    1. Построить таблицу истинности для функции
    2. Найти все наборы аргументов, на которых функция принимает значение 1
    3. Выписать простые конъюнкции для каждого из наборов по следующему правилу: если в наборе переменная принимает значение 0, то она входит в конъюнкцию с отрицанием, а иначе без отрицания
    4. Объединить все простые конъюнкции с помощью дизъюнкции

    Алгоритм построения СКНФ для булевой функции

    1. Построить таблицу истинности для функции
    2. Найти все наборы аргументов, на которых функция принимает значение 0
    3. Выписать простые дизъюнкции для каждого из наборов по следующему правилу: если в наборе переменная принимает значение 1, то она входит в дизъюнкцию с отрицанием, а иначе без отрицания
    4. Объединить все простые дизъюнкции с помощью конъюнкции

    Алгоритм построения полинома Жегалкина булевой функции

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

    1. Построить таблицу истинности для функции
    2. Добавить новый столбец к таблице истинности и записать в 1, 3, 5. ячейки значения из тех же строк предыдущего столбца таблицы истинности, а к значениям в строках 2, 4, 6. прибавить по модулю два значения из соответственно 1, 3, 5. строк.
    3. Добавить новый столбец к таблице истинности и переписать в новый столбец значения 1, 2, 5, 6, 9, 10. строк, а к 3, 4, 7, 8, 11, 12. строкам аналогично предыдущему пункту прибавить переписанные значения.
    4. Повторить действия каждый раз увеличивая в два раза количество переносимых и складываемых элементов до тех пор, пока длина не станет равна числу строк таблицы.
    5. Выписать булевы наборы, на которых значение последнего столбца равно единице
    6. Записать вместо единиц в наборах имена переменных, соответствующие набору (для нулевого набора записать единицу) и объединить их с помощью операции исключающего ИЛИ.

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

    Построим совершенные дизъюнктивную и дизъюнктивную нормальные формы, а также полином Жегалкина для функции трёх переменных F = ¬a b∨ ¬b c∨ca

    1. Построим таблицу истинности для функции

    abc¬a¬a ∧b¬b¬b ∧c¬a ∧b∨ ¬b ∧cc∧a¬a ∧b∨ ¬b ∧c∨c∧a
    0001010000
    0011011101
    0101100101
    0111100101
    1000010000
    1010011111
    1100000000
    1110000011

    Построение совершенной дизъюнктивной нормальной формы:

    Найдём наборы, на которых функция принимает истинное значение: < 0, 0, 1 > < 0, 1, 0 > < 0, 1, 1 > < 1, 0, 1 >

    В соответствие найденным наборам поставим элементарные конъюнкции по всем переменным, причём если переменная в наборе принимает значение 0, то она будет записана с отрицанием:

    Объединим конъюнкции с помощью дизъюнкции и получим совершенную дизъюнктивную нормальную форму:

    Построение совершенной конъюнктивной нормальной формы:

    Найдём наборы, на которых функция принимает ложное значение: < 0, 0, 0 > < 1, 0, 0 >

    В соответствие найденным наборам поставим элементарные дизъюнкции по всем переменным, причём если переменная в наборе принимает значение 1, то она будет записана с отрицанием:

    Объединим дизъюнкции с помощью конъюнкции и получим совершенную конъюнктивную нормальную форму:

    Построение полинома Жегалкина:

    Добавим новый столбец к таблице истинности и запишем в 1, 3, 5 и 7 строки значения из тех же строк предыдущего столбца таблицы истинности, а значения в строках 2, 4, 6 и 8 сложим по модулю два со значениями из соответственно 1, 3, 5 и 7 строк:

    abcF1
    00000
    0011⊕ 01
    01011
    0111⊕ 10
    10000
    1011⊕ 01
    11000
    1111⊕ 01

    Добавим новый столбец к таблице истинности и запишем в 1 и 2, 5 и 6 строки значения из тех же строк предыдущего столбца таблицы истинности, а значения в строках 3 и 4, 7 и 8 сложим по модулю два со значениями из соответственно 1 и 2, 5 и 6 строк:

    abcF12
    000000
    001111
    01011⊕ 01
    01110⊕ 11
    100000
    101111
    11000⊕ 00
    11111⊕ 10

    Добавим новый столбец к таблице истинности и запишем в 1 2, 3 и 4 строки значения из тех же строк предыдущего столбца таблицы истинности, а значения в строках 5, 6, 7 и 8 сложим по модулю два со значениями из соответственно 1, 2, 3 и 4 строк:

    abcF123
    0000000
    0011111
    0101111
    0111011
    100000⊕ 00
    101111⊕ 10
    110000⊕ 11
    111110⊕ 11

    Окончательно получим такую таблицу:

    abcF123
    0000000
    0011111
    0101111
    0111011
    1000000
    1011110
    1100001
    1111101

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

    Объединяя полученные конъюнкции с помощью операции исключающего или, получим полином Жегалкина: c⊕b⊕bc⊕ab⊕abc

    Programforyou — это сообщество, в котором Вы можете подтянуть свои знания по программированию, узнать, как эффективно решать те или иные задачи, а также воспользоваться нашими онлайн сервисами.

    Решение квадратного уравнения

    Уравнение вида a⋅x 2 + b⋅x + c = 0квадратное уравнение.

    a, b, c — действительные числа, a ≠ 0.

    Для того чтобы вычислить корни квадратного уравнения, нужно сначала найти дискриминант.

    • если D 0, то уравнение имеет два действительных корня:
      • x1 = (-b + √D) / (2⋅a);
      • x2 = (-b + √D) / (2⋅a).

    Программа для решения квадратного уравнения на языке программирования Паскаль

    Функция sqr языка Pascal используется для возведения числа в квадрат.
    Функция sqrt используется для получения квадратного корня числа.
    В программе используется форматированный вывод вещественных чисел. variable:8:3 — означает, что для вывода переменной предусмотрено 8 символов, 5 из них под целую часть и 3 под дробную.


    источники:

    http://programforyou.ru/calculators/postroenie-tablitci-istinnosti-sknf-sdnf

    http://programm.top/pascal/programm/quadratic-equation/