7


  • Учителю
  • Конспект урока информатики в 11 классе «Решение задач по программированию»

Конспект урока информатики в 11 классе «Решение задач по программированию»

Автор публикации:
Дата публикации:
Краткое описание: Общая характеристика урока:В соответствии с календарно-тематическим планированием и предварительному замыслу и плану тема данного урока «Решение задач по программированию» из раздела «Повторение пройденного по теме «Алгоритмизация и программирование»» На раздел да
предварительный просмотр материала

План-конспект урока в 11 «б» классе по информатике

"Решение задач по программированию", 13.03.2013

Цель урока: комплексное применение полученных знаний по программированию в среде Паскаль при решении задач.

Задачи урока:

Обучающие:

  • закрепить знания о структуре программы в среде Turbo Pascal и основных операторов программы

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

  • формировать умения комплексного применения знаний по программированию в среде Turbo Pascal при решении задач

Развивающие:

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

  • формирование умений анализировать, сравнивать, выделять главное;

  • развитие навыков самостоятельной работы.

Воспитательные:

  • воспитание творческого подхода к работе, умения экспериментировать;

  • формирование целеустремленности, аккуратности при работе на компьютере, информационной культуры.

Практические - развитие навыков написания программ на компьютере с помощью языка Паскаль

Тип урока: закрепление материала с применением современных компьютерных технологий.

Вид урока: комбинированный.

Требования к знаниям и умениям:

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

Методы: исследование, частично поисковый, индивидуальный практикум с дифференцированным подходом.

Формы организации учебной деятельности: индивидуально-фронтальная.

Программно-дидактическое обеспечение:

  • Оборудование: ПК, проектор, интерактивная доска.

  • Программное обеспечение: Turbo Pascal, Power Point.

  • Презентация по данной теме: Задачи по программированию

  • Практическая работа: программы на языке Паскаль и задания в тетрадях

План урока:

  1. Организационный момент (1 мин)

  2. Повторение (3 мин) + устная проверочная (4 мин)

  3. Совместное решение задач (9 мин)

  4. Физминутка (1 мин)

  5. Практическая работа (20 мин)

  6. Подведение итогов (1 мин)

Ход урока


  1. Орг. момент. Тема, цель, эпиграф урока«Решение задач - специфическое достижение разума, разум же особый дар, которым наделен человек» (Дж. Пойа).

2. Повторение: (см.слайды)+ устная проверочная (4 мин)

Учитель задает вопросы:

1). Из каких разделов состоит программа на ? (Раздел заголовка, раздел описаний, раздел операторов).

2). С какого служебного слова начинается программа? (Program)

3). Как описываются переменные? (Var список переменных: тип переменных).

4). С чего начинается основная программа? (Begin)

5). Как записывается вывода? (Writeln ('текст', список переменных))

6). Как записывается оператор ввода? (Readln(список переменных))

7). Как записывается оператор присваивания? (имя переменной := арифм. выражение)

8). Чем заканчивается программа? (End.)

  1. Совместное решение задач (9 мин)



1.Задача. Даны три числа. Найти произведение этих чисел. (Найти сумму этих чисел)

2.Задача. Даны три числа. Найти произведение четных из них

3.Задача. Даны три числа. Найти сумму нечетных из них

4. задача.Определить какое из трех, введенных пользователем, чисел максимальное и вывести его на экран.

Описание переменных:

В программе будет три переменные для чисел, вводимых пользователем: n1, n2, n3. Также для упрощения алгоритма введем четвертую переменную, в которую по ходу выполнения кода будет помещено максимальное значение: max.

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

  1. Сравнить первое и второе число (n1 и n2). Переменной max присвоить значение переменной, содержащей большее значение.

  2. Сравнить значение переменной max с третьим числом, введенным пользователем (n3). Если значение n3 окажется больше, чем max, то присвоить max значение третьего числа. Если же значение max окажется больше, то ничего не делать.

Программа на языке Паскаль:

var

a1, a2, a3, max: integer;

begin

write ('Введите три числа: ');

readln (a1, a2, a3);

if a1 >= a2 then

max := a1

else

max := a2;

if a3 > max then

max := a3;

writeln ('Максимальное из них: ', max);

readln

end.

Примечания:

Три числа не обязательно могут быть разными. Достаточно предусмотреть вариант равенства значений только в первом операторе if.

4.Физминутка

5. Практическая работа

I группа - за компьютеры - набрать и провести отладку программы 4 задачи

II группа - решение задач по программированию типов С1 ,В2, В5, ЕГЭ по информатике

С1 Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х - действительное число) и определяется принадлежность этой точки одному из выделенных отрезков В и D (включая границы). Программист торопился и написал программу неправильно.

var x: real;

begin

readln(x) ;

if x>l then

if x>=7 then

if x>13 then

write('не принадлежит')

else

write('принадлежит')

end.

Последовательно выполните следующее.

1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Границы (точки -5, 1, 7 и 13) принадлежат заштрихованным областям.

Область

Условие 1

(x>1)

Условие 2

(х>=7)

Условие 3

(х>13)

Программа выведет

Область обрабатывается верно

А


В


С


D


Е


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

2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)



Решение: Сразу замечаем, что в программе else относится к последнему оператору if. Обратите внимание, что второе условие проверяется в приведенной программе только тогда, когда истинно первое, а третье - только тогда, когда истинны первые два. В остальных ячейках (если условие не проверяется) нужно ставить прочерк:

Область

Условие 1

(x>1)

Условие 2

(х>=7)

Условие 3

(х>13)

Программа выведет

Область
обрабатывается
верно

А

нет

-

-



В

нет

-

-



С

да

нет

-



D

да

да

нет



Е

да

да

да



Программы выводит какой-то ответ только тогда когда истинны первые два условия; в этом случае ответ зависит от истинности третьего условия:

Область

Условие 1

(x>1)

Условие 2

(х>=7)

Условие 3

(х>13)

Программа выведет

Область
обрабатывается
верно

А

нет

-

-

-

нет

В

нет

-

-

-

нет

С

да

нет

-

-

нет

D

да

да

нет

принадлежит

да

Е

да

да

да

не принадлежит

да

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

-5 <= x <= 1 и 7 <= x <= 13

Поскольку в Паскале двойные неравенства использовать нельзя (а в некоторых языках, например, в школьном алгоритмическом языке системы КуМир - можно!), заменяем их на сложные условия с логической операцией «И» (and):

(-5 <= x) and (x <= 1)

(7 <= x) and (x <= 13)

Для объединения областей два эти условия нужно объединить с помощью логической операции «ИЛИ» (or). Таким образом, получаем такое решение:

if (-5 <= x) and (x <= 1) or

(7 <= x) and (x <= 13) then

write('принадлежит')

else write('не принадлежит');

Здесь учтено, что логическая операция «ИЛИ» имеет более низкий приоритет, чем «И», и поэтому выполняется последней.

В2. (базовый уровень, время - 2 мин) (Тема: Оператор присваивания в языке программирования)

Определите значение переменной c после выполнения следующего фрагмента программы.

a := 5;

a := a + 6;

b := -a;

c := a - 2*b;

Решение:

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

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

  3. здесь используются три переменные: a, b, c; до выполнения программы их значения нам неизвестны, поэтому ставим в таблице знаки вопроса:


    a

    b

    c


    ?

    ?

    ?

  4. после выполнения оператора a := 5; изменяется значение переменной a:


    a

    b

    c


    ?

    ?

    ?

    a := 5;

    5



  5. оператор a := a + 6; означает «вычислить значение выражения a + 6 используя текущее значение a (равное 5), и записать результат обратно в переменную a»; таким образом, новое значение равно 5 + 6 = 11:


    a

    b

    c


    ?

    ?

    ?

    a := 5;

    5



    a := a + 6;

    11



  6. следующий оператор, b := -a; изменяет значение переменной b, записывая в нее -a; учитывая, что в a записано число 11, находим, что b будет равно -11:


    a

    b

    c


    ?

    ?

    ?

    a := 5;

    5



    a := a + 6;

    11



    b := -a;


    -11


  7. последняя команда, c := a - 2*b, изменяет значение переменной c; при текущих значениях a = 11 и b = -11 результат выражения равен 11 - 2*(-11) = 33, это число и будет записано в переменную c:


    a

    b

    c


    ?

    ?

    ?

    a := 5;

    5



    a := a + 6;

    11



    b := -a;


    -11


    c := a - 2*b;



    33

  8. таким образом, правильный ответ - 33.

Возможные ловушки и проблемы:

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

B5 (базовый уровень, время - 2 мин) (Тема: Анализ программы.)

Определите, что будет напечатано в результате работы следующего фрагмента программы:

var k, s: integer;

begin

s:=0;

k:=0;

while s < 1024 do begin

s:=s+10;

k:=k+1;

end;

write(k);

end.

Решение:

  1. из программы видно, что начальные значения переменных k и s равны нулю

  2. цикл заканчивается, когда нарушается условие s < 1024, то есть количество шагов цикла определяется изменением переменной s

  3. после окончания цикла выводится значение переменной k

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

  5. с каждым шагом цикла значение s увеличивается на 10, а значение k - на единицу, так что фактически k - это счётчик шагов цикла

  6. поскольку s увеличивается на 10, конечное значение s должно быть кратно 10, то есть это 1030 > 1024

  7. для достижения этого значения переменную s нужно 103 раза увеличить на 10, поэтому цикл выполнится 103 раза

  8. так как k - это счётчик шагов цикла, конечное значение k будет равно 103

  9. Ответ: 103.

Возможные ловушки и проблемы:

  • можно перепутать переменную, которая выводится на экран (внимательно смотрим на оператор вывода)

B6 (базовый уровень, время - 2 мин)

Тема: рекурсивные алгоритмы.

Что нужно знать:

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

  • чтобы определить рекурсию, нужно задать

    • условие остановки рекурсии (базовый случай или несколько базовых случаев)

    • рекуррентную формулу

  • любую рекурсивную процедуру можно запрограммировать с помощью цикла

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

  • существуют языки программирования, в которых рекурсия используется как один из основных приемов обработки данных (Lisp, Haskell)

Пример задания:

Алгоритм вычисления значения функции F(n), где n - натуральное число,

задан следующими соотношениями:

F(1) = 1

F(n) = F(n-1) * n, при n > 1

Чему равно значение функции F(5)?

В ответе запишите только натуральное число.

Решение:

  1. используя заданную рекуррентную формулу, находим, что

F(5) = F(4) * 5

  1. применив формулу еще несколько раз, получаем

F(5) = F(3) * 4 * 5 = F(2) * 3 * 4 * 5 = F(1) * 2 * 3 * 4 * 5

  1. мы дошли до базового случая, который останавливает рекурсию, так как определяет значение F(1) = 1

  2. окончательно F(5) = 1 * 2 * 3 * 4 * 5 = 120

  3. ответ: 120.

6.Подведение итогов

Использованные материалы:

Сайт учителя информатики Константина Полякова: преподавание, наука и жизнь

Автор/создатель: Поляков К.Ю.

Сайт учителя информатики Дмитрия Тарасова

;

Подготовка к ЕГЭ по информатике в режиме online

Образовательный портал «РЕШУ ЕГЭ» Дмитрия Гущина



8




 
 
X

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

После этого кнопка ЗАГРУЗКИ станет активной!

Кнопки рекомендации:

загрузить материал