Цифры числа. Работа с mod и div
презентация к уроку по информатике и икт (8 класс) на тему

Поленок Евгения Петровна

Конспект и презентация по работе с цифрами числа через функции mod и div. Презентации содержит большое количество анимации.

Скачать:

ВложениеРазмер
Microsoft Office document icon tsifry_chisla.doc84 КБ
Office presentation icon tsifry_chisla.ppt111 КБ

Предварительный просмотр:

10 класс                                               Направления: «физико-математический», «информатика»

ПЛАН-КОНСПЕКТ УРОКА ПО ТЕМЕ «ИСПОЛЬЗОВАНИЕ ОПЕРАТОРОВ MOD И DIV»

Цели урока:

 Обучающая: познакомить учащихся с операторами mod и div, особенностями их применения, познакомить учащихся с основами программирования консольных игр.

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

Развивающая: развитие логического мышления, навыков самоконтроля, умения составлять алгоритмы, конспектировать.

Прагматические: сформировать умение четко определять тип операндов и результата при работе с операторами mod и div; сформировать умение работать с переменными и умение применять к ним операторы mod и div.

Оборудование: мультимедийный проектор, компьютер, экран, компьютерный класс, программа MS Power Point и презентация «Цифры_числа», среда программирования Delphi 6.0 или Borland Pascal 7.0; доска, мел.

Вид урока:  урок изучения нового материала.

Методы: Объяснительно-иллюстративный, репродуктивный.

План урока.

1-й час

1.

Оргмомент.

1 мин

2.

Проверочная работа.

8 мин

3.

Актуализация знаний учащихся.

3 мин

4.

Изучение нового материала.

25 мин

5.

Закрепление.

3 мин

2-й час

1.

Оргмомент.

1 мин

2.

Актуализация знаний.

2 мин

3.

Самостоятельная работа.

30 мин

4.

Закрепление.

5 мин

5.

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

2 мин

Рассмотрим применение метода открытых программ (ОП) при изучении бинарных операторов с использованием ОП типа «Программа для изучения» с помощью следующего примера.

Урок №1.

Замечания.

Пример разработан для среды Delphi 6.0: консольное приложение. Аналогичный пример разработан в среде программирования Borland Pascal 7.0. Разница между этими программами в коде минимальна, но в среде Delphi работа с числами типа Integer реализована в большем диапазоне (для данного конкретного примера), в отличие от среды Pascal (рекомендуем работать с числами, не превышающими число 9999).

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

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

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

Д: Если остаток от этого числа деления на 2 равен 0, тогда число является четным, иначе – число нечетное.

У: Какие операции мы при этом используем?

Д: Операцию деления и взятия остатка.

У: Какие из эти операций мы знаем?

Д: Деление.

У: Разделите число 10 на 2. Что получилось?

Д: Получилось 5.

У: Разделите число 22,2 на 2. Что получилось?

Д: Получилось 11,1.

У: Как видно из примеров, результат операции деления имеет различный тип в зависимости от делимого и делителя. Это вы знаете из математики. В качестве операции деления в задаче о четности чисел будем использовать операцию целочисленного деления - DIV. Она отличается от операции деления тем, что операнды и результат – целые числа. Взятие остатка производится соответствующей операцией - MOD.

Учитель начинает показ презентации.

У: Рассмотрим следующую задачу. Дано натуральное число. Необходимо определить все ли цифры числа различны. (Условие задачи учащиеся записывают в тетрадь.) Как это сделать?

Учащиеся предлагают последовательно сравнить все цифры.

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

Изучают материал на слайде №2.

По слайду: Операция получения целой части обозначается ключевым словом div, операция взятия остатка от деления – ключевым словом mod.

Итак, нам удалось получить последнюю цифру числа. Как получить вторую цифру с конца? Какое число мы будем делить на 10? Какой остаток от деления получим? Какие операции при этом будем использовать?

(Схему внизу слайда учащиеся зарисовывают в тетрадях).

Изучают материал на слайде №3.

У: Операторы mod и div позволяют получать цифры числа. Попробуем для начала получить последовательно цифры трехзначного числа. (Учащиеся в тетрадях записывают условие подзадачи.) Составим алгоритм, который реализует эту задачу.

Последнюю цифру получить достаточно просто. Как это сделать?

Д: Применить к числу последовательно операторы div и mod.

У: Например, применим их к числу 645, которое записано в переменной nn. Какое число будет содержать переменная nn после этого?

Д: Число 64.

У: Применим к переменной nn последовательно операторы div и mod. Какое она будет иметь значение?

Д: 6.

У: Надо ли еще раз применять эти операторы к переменной nn, чтобы получить цифры исходного числа?

Д: Нет, не надо. Первая цифра числа уже содержится в переменной nn.

У: Обратите внимание на количество цифр исходном в числе – 3 цифры. Сколько раз мы применили последовательность операторов div и mod?

Д: Операторы применяли два раза,  третья цифра получается с помощью оператора mod. Оператор div даст 0.

У: Обратите внимание, в каком порядке были получены цифры числа: сначала получили последнюю цифру и только в конце – первую. Это главная особенность работы этой группы операторов.

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

Рассматривают еще раз алгоритм. Определяют его входные и выходные параметры. Проговаривают действия (по операторам), определяют порядок вывода цифр на экран.

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

Д: На экран будут выведены цифры числа.

У: А что надо получить для нашей задачи?

Д: Надо вывести сообщение о наличии совпадений цифр числа.

У: Что значит «совпадение цифр»? какую операцию надо использовать?

Д: Надо сравнить все цифры числа между собой.

У: Значит, строчки, где мы выводим цифры надо заменить какой последовательностью строк?

Д: Надо использовать оператор условия для сравнения цифр, а затем оператор вывода для отображения сообщения на экране о результатах сравнения.

Изучают материал на слайде №4.

У: Посмотрите на следующий алгоритм. Чем он отличается от предыдущего?

По слайду: Присутствует последовательность команд по определению цифр трехзначного числа. Затем при помощи условного оператора первая цифра сравнивается со второй и третьей, вторая цифра – с третьей. Если есть хотя бы одно совпадение, то s=1. Переменная s выступает в качестве флага: она равна 0, если нет совпадений, и 1, если совпадения есть. В начале алгоритма мы предполагаем, что совпадений нет.

(Алгоритм «сравнение цифр» учащиеся записывают в тетрадь.)

Замечание. Для сильного класса далее рассматриваем обобщенный алгоритм «сравнение цифр» и алгоритм программы. Исходный код программы приведен ниже. Для изучения можно использовать презентацию (слайды  5, 6), либо приведенный код (по комментариям), когда учащиеся:

  • связывают элемент <логическое выражение> в конструкции условного оператора с выражением kf_prom>0 в программе;
  • сопоставляют элемент <оператор 1> цикла while с выражением                 fl1:=kf mod 10.

При этом эффективным будет следующий прием: на третьем этапе (этап овладения логикой алгоритма) дать следующий набор чисел (1234, 1241, 7232), а на четвертом этапе выяснить у учащихся, какое из этих чисел приведет к выходу break из цикла while.

Пример: 

program Project1;

{$APPTYPE CONSOLE}

uses

  SysUtils;

var

 k, kf_prom, n1, num : Integer; {Опишем переменные для хранения

                                                значений числа и его цифр}

 flag : Boolean; {Флаг - он отвечает за наличие совпадающих цифр в числе}

{Процедура, которая отвечает за сравнение цифры n1 с цифрами числа num

В переменной flag хранится результат ее работы}

procedure sravnit (n1, num : Integer; var flag: Boolean);

var kf, fl1 : Integer; {Опишем вспомогательные переменные

                       для хранения текущего числа и цифры}

begin

flag:=false; {Считаем, что совпадений нет}

kf:=num; {Переменной kf присвоим значение текущего числа}

{Пока в числе есть цифры выполним их сравнение с цифрой n1}

while kf>0 do

 begin

 fl1:=kf mod 10; {В переменной fl1 хранится последняя цифра числа}

 if fl1=n1 then {Если полученная цифра fl1 совпала с исходной,

                т.е. есть совпадение, то}

   begin

   flag:=True; {присвоить переменной flag значение True}

   exit; {и выйти из процедуры}

   end;

 {Если же совпадения нет, то продолжить работу, изменив значение перемнной kf}

 kf:=kf div 10; {Переменной kf присваиваем значение,

                        хранившееся в ней до этого момента,

                но без последней цифры}

 end;

end;

begin

  { TODO -oUser -cConsole Main : Insert code here }

write('Input number k='); {Запрос на ввод числа,

                                     цифры которого будем сравнивать}

readln(k); {Присвоим переменной k значение введенное с клавиатуры}

kf_prom:=k; {Присвоим переменной kf_prom такое же значение.

            С этой переменной мы будем работать.}

{Логическая переменная flag отвечает за наличие совпадающих цифр в числе}

flag:=False; {Пусть число kf_prom не имеет совпадающих цифр}

{При помощи оператора цикла:

     while <логическое выражение> do

       begin

         <оператор 1>

         <оператор 2>

         ...

         <оператор n>

       end

проверяем цифры числа на наличие совпадений}

{  Пока в числе есть цифры выполнять следующие действия}

while (kf_prom>0) do

 begin

 n1:=kf_prom mod 10; {Переменной n1 присвоить значение

     последней цифры числа}

 num:=kf_prom div 10; {Переменной num присвоить значение числа,

                      хранящегося в kf_prom, но без последней цифры}

     {Вызываем процедуру sravnit, которая отвечает за

     сравнение цифры n1 с цифрами числа num}

 sravnit (n1,num,flag); {Проверим наличие цифры n1 в числе num}

 {При помощи условного оператора:

     if <логическое выражение> then <оператор 1>

 проверяем найдены совпадения или нет}

 if flag=True then break; {Если совпадения есть,то выходим из цикла}

 kf_prom:=kf_prom div 10; {Переменной kf_prom присваиваем значение,

                                          хранившееся в ней до этого момента,

                          но без последней цифры}

 end;

{Проверим есть ли совпадения или нет}

if flag=True {Если совпадения есть}

 then writeln('Number have tally!') {Выводим на экран сообщение

    "Совпадения есть!"}

 else writeln('Number have not tally.'); {Иначе сообщение "Совпадений нет."}

write('Press any key for exit ....');

readln; {Просмотрим полученный результат}

end.


Урок №2.

Известная игра «Быки и коровы». Условие игры: компьютер задумал 4-значное число, в котором все цифры различны. Игроку предоставляется определенное количество попыток, чтобы угадать число. После каждой попытки игроку сообщают число коров (сколько цифр угадано правильно и они не стоят на своем месте) и быков (сколько цифр числа угаданы правильно и стоят на своем месте).

Например. Требуется угадать число 1234. Пользователь ввел 3215. Тогда число коров - 2 , быков – 1. Ниже приведена таблица, по которой легко можно определить число коров и быков (совпадения выделены жирным шрифтом).

Число коров

Число быков

Компьютер

1

2

3

4

1

2

3

4

Игрок

3

2

1

5

3

2

1

5

Рассмотрим подробнее определение числа быков и коров. Пусть переменные i и j определяют место цифры в числе компьютера и пользователя, массивы cx и cy хранят цифры чисел (вместо массивов можно использовать переменные cx1..cx4, cy1..cy4 – тогда измените код программы там, где используются массивы).

Тогда условие для быков формулируется так: если совпадает место (индекс) и совпадают цифры, то это корова (увеличить число коров). Это условие надо проверить для всех цифр. Алгоритм имеет вид:

{подсчет  быков - совпадают и места и цифры}

 byk:=0; {До просмотра цифр количество быков равно 0}

 {За совпадение места отвечает индекс элемента массива, т.е. [i],

 а совпадение самой цифры - значение элемента, т.е. cx[i] и cy[i]}

 for i:=1 to 4 do

   if cx[i]=cy[i] then byk:=byk+1;

С коровами сложнее. Посмотрим на таблицу. Для цифры «1» (первая цифра числа компьютера) надо просмотреть все цифры числа пользователя (с 1-ой до 4-ой), если есть совпадения, то увеличить число коров. Для цифры «2» компьютерного числа сравнение производим со 2-ой по 4-ую цифры числа пользователя, для цифры «3» - сравнение с 3-ей и 4-ой цифрой, последнюю компьютерную цифру «4» - сравнить с 4-ой цифрой пользователя.

Значит, нам понадобится два цикла: первый отвечает за цифры пользователя (от 1 до 4), второй за цифры для сравнения. Причем сравнение производим с индекса (места), который имеет цифра пользователя,  до последнего (до 4). Циклическая конструкция  имеет вид:

{подсчет  коров - не совпадают места и совпадают цифры}

 kor:=0;

 for i:=1 to 4 do {Из числа компьютера берем i-ую цифру (i-ый элемент массива)}

   for j:=1 to 4 do {и сравниваем его со всеми цифрами из массива игрока}

     if (cx[i]=cy[j]) and (i<>j) {Если совпали цифры и не совпали места, т.е. индексы элементов,}

       then kor:=kor+1; {то увеличить число коров на 1.}

 writeln('Bykov=',byk,'   Korov=',kor); {Выводим результаты сравнения: количество коров и быков}

Вернемся к нашей игре. Компьютер придумал 4-значное число.…. Игрок пытается его угадать.

Главная задача: помочь компьютеру придумать 4-значное число, в котором все цифры будут различными. На прошлом уроке рассматривались смежные задачи (сравнение цифр числа). Как компьютер придумывает такое число?

Сначала придумать число, потом проверить его цифры на наличие совпадений. Отличие от предыдущего алгоритма (он записан в тетрадях) в том, что число четырехзначное. Значит, добавиться группа операторов div и mod. Этой подсказки достаточно для того, чтобы учащиеся самостоятельно записали алгоритм.

В зависимости от программы изучения программирования, учитель напоминает (или сообщает), что существует процедура, которая генерирует случайное число в диапазоне от 1 до N: random(N). Перед использование генератора чисел его необходимо инициализировать (запустить) командой randomize.

Ниже приведена основная часть программы (среда Delphi 6.0: консольное приложение).

begin

  { TODO -oUser -cConsole Main : Insert code here }

writeln('Computer think number. Try to call it.'); {Выводим условие игры}

writeln('Input 0 for exit.');

think_number(x); {компьютер придумывает число - х}

p:=0;{определяет число попыток для угадывания}

repeat

  write('Input number y='); {Это число - попытка пользователя угадать}

  readln(y); {Присвоим переменной y значение введенное с клавиатуры}

  if y=0 then begin

        writeln('You are surrender.');

        write('Press for exit...');

        readln; {просим нажать ВВОД для выхода}

        end

     else if x=y {Число угадано}

          then begin {Выводи сообщения о победе}

          writeln('You are WIN!');

          writeln('Count of trying p=',p);

          write('Press for exit...');

          readln; {просим нажать ВВОД для выхода}

          end

          else begin {Число не угадано - вычислим количество быков и коров}

          p:=p+1;  {Увеличим число попыток, сделанных игроком}

          writeln('You are wrong.');

          count_pass(x,y); {Вызов процедуры - Подсчет быков и коров}

          writeln('Let try again!');

          end;

until (x=y) or (y=0);  {Выход из игры - ели игрок угадал число или сдался (ввел 0)}

end.

Исходный код данной игры (с комментариями) можно найти в папке ИГРА.

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

В зависимости от класса вторую программу можно использовать как ОП. В этом случае целесообразно перед ее изучением рассмотреть следующую подзадачу: «Дано натуральное число. Требуется найти сумму цифр.»

Решение задачи «сумма цифр» на алгоритмическом языке:

алг сумма_цифр

(арг цел n, рез цел s)

нач цел nn, c

| nn:=n

| s:=0

|  нц пока nn>0

|  | c:=mod(nn,10)

|  | s:=s+c

|  | nn:=div(nn,10)

|  кц

кон

Особое внимание следует обратить на цикл «пока», в котором реализован просмотр всех цифр числа. Эту же циклическую конструкцию можно заменить линейной последовательностью операторов, например для 3-значного числа:

| c1:=mod(nn,10)

| nn:=div(nn,10)

| c2:=mod(nn,10)

| nn:=div(nn,10)

| c3:=mod(nn,10)

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

Конспект разработала студентка 5 курса 7 группы Поленок Е.П.                               2007 г.


Предварительный просмотр:


Подписи к слайдам:

Слайд 1

Задача: Дано натуральное число n . Проверить, будут ли все цифры этого числа различными. Для числа 12682 решить эту задачу вручную: а) проверить цифры, начиная со старшей (слева направо); б) начиная с младшей. Изучение нового материала Первая задача на использование функций mod и div . Тип: алгоритм с результатами. Для этого просим составить заголовок алгоритма. алг цифры_числа ( арг цел n , рез цел kod ) «1» сравнить последовательно с 2,6,8,2. Затем «2» сравниваем с 6,8,2. На последнем шаге выясняем, что 2=2 = > не все цифры числа различны. Рассмотрим задачу. Вывести цифры числа n экран.

Слайд 2

Вопрос: как получить последнюю цифру числа? Разделите число 12682 на 10 . Что получилось? Чему равна целая часть числа 1268,2 ? Чему равен остаток от деление 12682 на 10 ? С чем он совпадает? Как получить вторую с конца цифру числа 12682 ? Изучение нового материала 1268,2 1268 2 div mod

Слайд 3

Задача дано трехзначное число (645, 139). Вывести его цифры на экран. алг вывод_цифр ( арг цел n , рез цел s) нач цел nn, c 1, с2, с3 | nn:=n Изучение нового материала Остаток от деления числа nn на 10 младшая цифра целая часть числа nn/10 | c 1 :=mod(nn,10) | nn:=div(nn,10) | c 2 :=mod(nn,10) | nn:=div(nn,10) | c 3 :=mod(nn,10) | вывод с3,с2,с1 кон

Слайд 4

Задача дано трехзначное число (823, 555). Проверить: все ли цифры числа различны. алг сравнение ( арг цел n , рез цел s) нач цел nn, c 1, с2, с3 | nn:=n | s:=0 | цифры различны | c 1 :=mod(nn,10) | nn:=div(nn,10) | c 2 :=mod(nn,10) | nn:=div(nn,10) | c 3 :=mod(nn,10) | если c1 = c2 или c 1= c3 или c2 = c3 | | то s:=1 | есть совпадение | все кон Усвоение материала получение всех цифр трехзначного числа сравнение цифр

Слайд 5

Запись вспомогательного алгоритма: procedure sravnit (n1, num : Integer; var flag: Boolean); var kf, fl1 : Integer; begin kf:=num; while kf>0 do begin fl1:=kf mod 10; if fl1=n1 then begin flag:=True; exit; end; kf:=kf div 10; end; end; Закрепление материала цифра, с которой надо сравнить цифры для сравнения младшая цифра совпадения есть число без младшей цифры

Слайд 6

Запись алгоритма: pro gram chisla; uses Crt; v ar k, kf_prom, n1, num: Integer; flag: Boolean; begin write(‘Введите целое число k='); readln(k); kf_prom:=k; flag:=False; while kf_prom > 0 do begin n1:=kf_prom mod 10; num:=kf_prom div 10; sravnit (n1,num,flag); if flag=True then break; kf_prom:=kf_prom div 10; end; if flag=True then write ln ('Совпадения есть') else w rite ln ('Совпадений нет'); e nd . Закрепление материала


По теме: методические разработки, презентации и конспекты

Методическая разработка по английскому языку (11 класс) по теме "Цифры, числа, математические действия"

Тест для обучающихся 2 курса НПО, создан на основе материала учебника для контроля сформированности  знаний, умений и навыков по теме "Цифры, числа, математические действия". Время выполнени...

Открытый урок по математике 5 класс.ВиленкинН.Я.по теме:"Цифры.Числа.Обозначение натуральных чисел."

Урок составлен в соответствии с особеностями обучения математике в контексте содержания ФГОС по учебно-методическому пособию Е.Ю.Лукичевой.СПб 2013Содержание урока отвечает требованиям промежуточной а...

Конспект урока по математике для 5 класса по теме: "Степень числа" (работа на платформе Учи.ру)

Конспект урока по математике для 5 класса по теме: "Степень числа" (работа на платформе Учи.ру)...

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

Удовлетворённость родителей качеством образовательного процесса и условиями пребывания ребенка в образовательной организации (в том числе работа с родителями)2018-20192019-20202020-2021...

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

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

Использование языка программирования Python для решения задачи 5 ЕГЭ по информатике (Работа с цифрами числа)

В статье приводится пример решения задачи 5 ЕГЭ по информатике, которое успешно решается с помощью программы на языке программирования Python....