• Преподавателю
  • Информатика
  • Урок информатики с использованием проблемно-модульной технологии Программирование алгоритмов с использованием условных операторов и операторов цикла

Урок информатики с использованием проблемно-модульной технологии Программирование алгоритмов с использованием условных операторов и операторов цикла

Раздел Информатика
Класс -
Тип Другие методич. материалы
Автор
Дата
Формат doc
Изображения Есть
For-Teacher.ru - все для учителя
Поделитесь с коллегами:

ГУО «Средняя школа №3 г. Новополоцка»

Программирование алгоритмов с использованием условных операторов и операторов цикла


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

Разработала учитель информатики высшей категории Клыго М. Е.

Программирование алгоритмов с использованием условных операторов и операторов цикла.

Цель урока: Обобщить и систематизировать знания учащихся по данной теме.

Задачи:

общеобразовательные:

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

  • показать взаимосвязь математики и информатики. Учить использовать знания, полученные на уроке математики при решении задач по информатике.


развивающие

  • развивать познавательный интерес, творческую активность, интеллект.

  • развивать логическое мышление, алгоритмическую культуру учащихся;

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

воспитательные

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

ХОД УРОКА:

Предлагается следующая задача для решения в классе:

Найти наибольшее число из трех заданных чисел.

На доске записываются несколько троек чисел: 128,540,324

Учащиеся называют максимальное число: 540.

Вопрос: Каким образом вы определили, что данное число максимальное?

Если учащиеся затрудняются ответить на этот вопрос надо помочь дополнительными вопросами, в поисках верного ответа:

- Мы сравнили числа друг с другом.

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

Вывод: Итак, максимальное число: 540

Проблема: А как компьютер сравнит три числа?

Машина может сравнивать только два числа!

Обозначим одно число буквой А, второе число буквой B, третье число - буквой С.

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

  • Нарисовать в тетради блок - схему для сравнения трех чисел.

  • Сравнить составленную ими схему с блок - схемой на доске.

  • Сделать анализ блок - схемы

  • Составить - программу. (Учащиеся самостоятельно составляют программу.)

  • Проверить правильность работы программы, ввести заданные числа и посмотрите результат.

Решение:

1. Находим наибольшее из первых двух данных чисел A и B, а затем - максимальное из полученного числа и третьего данного числа С.

Program MAX1;
Var A, B, C,Х: real;
begin
writeln ('Введите три числа A, B, C'); readln (A, B, С);
if A>B then Х:=A else Х:=b;
if C > Х then Х:=C;
writeln('Максимальное значение=',Х);
end.

Проблема: А может ли измениться исходное значение переменной?

-А в процессе работы программы?

- Да!

-А как? Ответ обоснуйте.

Вопрос: Как вы думаете, можно ли решить задачу другими способами? (Учащиеся получают задание на уроке и продолжают поиск решения задачи.)

Предполагаемые решения учащихся:

2 способ. Можно решить задачу, сравнивая попарно все числа .

Program MAX2;
var A, B, C, Х: real;
begin
Writeln('Введем три числа'); readln(A, B, C);
If (A>B) and (A>C) then Х:= A;
If (B>A) and (B>C) then Х:=B;
If (C>A) and (C>B) then Х:=C;
Writeln(Х:6:2);
end.

3 способ. При решении задачи можно проверить, является ли первое число A максимальным и если не является, то сравниваем второе и третье число B и C.

Program MAX3;
Var A, B, C, Х: real;
begin
writeln ('Введите три числа A, B, C');
readln (A, B, С);
If (A>B) and (A>C) then Х:=A else if B>C then Х:=B else Х :=C;
Writeln('Максимальное значение =', Х);
End;

При проверке правильности выполнения программы необходимо рассматривать все возможные варианты А>В>С, А>С>В, В>С>А, С>В>А, В>А>С, С>А>В.

Проблема: А можно написать программу, чтобы она выстраивала числа в порядке возрастания или убывания?

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

Варианты решения задачи:

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

Program MAX4;
Var A, B, C: real;
begin
Writeln('Введите три числа');
Readln(A, B, C);
If (A>B) and (A>C) and (B>C) then writeln (A, ' ',B,' ',C);
If (B>C) and (B>A) and (A>C) then writeln (B, ' ',A,' ',C);
If (C>A) and (C>B) and (A>B) then writeln (C, ' ',A,' ',B);
If (A>B) and (A>C) and (C>B) then writeln (A, ' ',C,' ',B);
If (B>C) and (B>A) and (C>A) then writeln (B, ' ',C,' ',A);
If (C>A) and (C>B) and (B>A) then writeln (C, ' ',B,' ',A);
End.

Программа печатает максимальное число, минимальное число и среднее число.

Program MAX5;
Var A, B, C, Max, Min, Sr : real;
begin
Writeln('Введите три числа');
Readln(A, B, C);
If A>B Then Max:=A else Max:=B;
If C> Max Then Max:=C;
If AIf C< Min Then Min:=C;
If (A>B) and (AIf (B>A) and (BIf (C>A) and (CIf (B
максимальное=', Max:6:2);
Writeln ('среднее=', Sr:6:2);
Writeln ('минимальное=', Min:6:2);
End.

Задача 2.

Даны три натуральных числа. Найти их наибольший общий делитель.

Вопрос: Какие существуют методы нахождения НОД?

1. разложения на простые сомножители,
2. алгоритм Евклида,
3. целочисленное деление.

Найти НОД чисел 48, 36, 24

Разложим на множители числа:

48 = 2 * 2 * 2 * 2 *3
36 = 2 * 2 * 3 * 3
24 = 2 * 2 * 2 * 3

Из множителей вычеркиваем те, которые не входят в разложение второго и третьего числа

- это числа 2 * 2 * 3 =12

Проблема: Какие же знания и умения необходимы для построения алгоритма нахождения НОД?

Для того чтобы построить алгоритм, необходимо уметь:

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

Второй метод решения -- алгоритм Евклида - это алгоритм нахождения наибольшего общего делителя (НОД) двух целых неотрицательных чисел.

НОД (х, у) вычисляется в соответствии со следующим правилом:

Урок информатики с использованием проблемно-модульной технологии Программирование алгоритмов с использованием условных операторов и операторов цикла.

Мы разбирали решение задачи для нахождения НОД двух чисел.

Для решения данной задачи воспользуемся циклом While

Program NOD;;

Var x,y: Integer;

Begin

Write(введите х,у');

Readln(х, y);

While x<>y do

If x>y Then x:=x-y Else y:=y-x;

Writeln('НОД=',x);

Readln;

End.

Третий метод решения - это целочисленное деление.

Пусть х и у - одновременно не равные нулю целые неотрицательные числа, и пусть хУрок информатики с использованием проблемно-модульной технологии Программирование алгоритмов с использованием условных операторов и операторов цикла.у. Если у = 0, то НОД (х, у) = х, а если уУрок информатики с использованием проблемно-модульной технологии Программирование алгоритмов с использованием условных операторов и операторов цикла.0, то для чисел х, у и r, где r остаток от деления х на у, выполняется равенство НОД (х, у) = НОД (у, r).

В соответствие со следующим правилом:

НОД(48, 18) = НОД(18, 12) = НОД(12, 6) = 6.

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

Запишем алгоритм решения задачи:

1. Ввод натуральных чисел х, у.

2. Найдем r - остаток от деления х нацело на у.

3. Если r = 0, то найдем значение у, иначе х:=у; у:= r.

4. Найдем r - остаток от деления х нацело на у.

  • Вычислить значение х

  • Порядок действий имеет большое значение. Результат выполнения операций x:=x; y:=r отличен от результата выполнения операций
    y: = r; x: =y.

Докажите правильность алгоритма (предложить выполнить это задание дома)

Решение задачи для нахождения НОД двух чисел.

Program NOD_1;
Var x, y:integer;
Begin
Writeln('Введите два числа');
Readln (x, y);
Repeat
If x > y then x:= x mod y else y:= y mod x;
Until (x = 0) or ( y = 0);
{до тех пор, пока одно из чисел не станет равно нулю}
Writeln ('НОД=', x + y);
{ Вывод НОД. Одно из чисел обязательно равно нулю}
Readln;
End.

Машина может находить НОД двух чисел!

Проблема:

Как составить программу для нахождения НОД трех?

Учащиеся:

Сначала находим НОД двух чисел, а затем находим НОД третьего числа.

НОД (a, b, c) = НОД (НОД(a, b), c).

Домашнее задание:

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

2) Доказать правильность алгоритма.

8

© 2010-2022