Первые уроки программирования по теме «Целые числа» в основной школе (Среда Turbo Pascal)
учебно-методический материал по информатике и икт (9 класс) по теме

Серебренникова Галина Ивановна

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

Скачать:

ВложениеРазмер
Microsoft Office document icon celye_chisla_serebr.doc66.5 КБ

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

Первые уроки программирования по теме «Целые числа» в основной школе (Среда Turbo Pascal)

 Учитель информатики МОУ  «Гимназия г. Алдан» Серебренникова Г.И.

        Перед  каждым учителем информатики стоит задача: «чему учить в информатике и как учить». В настоящее время появилось большое количество литературы, определенных сайтов по программированию, где предлагается  стандартный набор задач по основным разделам. Я думаю, никто не сомневается, что за основу обучения программированию, следует взять методику, с максимальным использованием компьютера на занятиях, и при этом должен формироваться определенный стиль мышления. Мне бы хотелось остановиться на разделе решения задач по теме «Целые числа». Как показывает практика работы с учащимися, ученик воспринимает целое число, как единое целое, а не набор цифр, с которыми можно совершать различные операции. На мой взгляд, имея набор таких задач можно раскрыть отдельные темы программирования достаточно качественно. Особенно это помогает при подготовке учащихся к олимпиадам. Преимуществом такого подхода является конструирование задач из минимального количества инструкций.  В процессе занятий необходимо достичь такого уровня их понимания, чтобы работа программы учеником воспринималась в динамике. Ни для кого не секрет, что, имея по программе два недельных часа нельзя качественно обучить основам программирования, чтобы студент первокурсник не «ломал» голову над задачами в институте, которые он как бы видел в школе на уроках информатики. Я пропущу разделы предшествующие вводным урокам знакомства с языком, а постараюсь раскрыть те разделы тематического планирования в 8-9 классах, которые дают, на мой взгляд, ощутимый результат  в качественном понимании материала учеником.

        План занятий:

  1. Обсуждение темы урока;
  2. Разбор программ решения отдельных задач;
  3. Эксперименты с программой;
  4. Выполнение самостоятельной работы.

Занятие по теме «Целый тип данных»

Обсуждение темы. Существует пять целых типов: Shortint, Integer, Longint, Byte, Word. Они отличаются диапазоном значений, размером памяти, отводимой для их представления.

Тип

Диапазон значений

Объем памяти

Shortint

-128… 127

1 байт, со знаком

Integer

-32768… 32767

2 байта, со знаком

Longint

-2147483648…2147483647

4 байта, со знаком

Byte

0…. 255

1 байт, без знака

Word

0… 65535

2 байта, без знака

 

Операции с величинами целого типа: сложение (+), вычитание (-), умножение (*), нахождение целой части деления (Div), нахождение остатка от деления (Mod), а также стандартные функции: Ord, Succ, Pred. Так как с функциями Div и Mod ученик не встречается на уроках математики, то есть необходимость решить несколько упражнений на их применение.

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

Program task_1;

 Var a, One, Dec, Han: Integer;

         Begin

Writeln(‘Введи число’);

Readln(a);

One:= a Mod 10;

Writeln(‘Единиц:’,One);

Han:=a div 100;

Writeln(‘Сотен:’,Han)

Dec:= (a-Han*100) div 10;

Writeln(‘Десятков:’,Dec);

End.

Program task_2;{Изменить задачу для вывода числа , с приписанной 1 слева. Например: 2341234}

 Var a, One, Dec, Han, Rez: Integer;

         Begin

Writeln(‘Введи число’);

Readln(a);

One:= a Mod 10;

Writeln (‘Единиц:’,One);

Han:=a div 100;

Writeln (‘Сотен:’,Han);

Dec:= (a-Han*100) div 10;

Writeln (‘Десятков:’,Dec);

Rez:=1*1000+Han*100+Dec*10+One;

Writeln (‘Rez=’, Rez);

End.

Задачи для самостоятельного решения.

  1. Изменить задачу для нахождения цифр двузначного (четырехзначного) числа.
  2. Определить сумму и произведение цифр числа (двузначного, трехзначного, четырехзначного). Определить число, образованное перестановкой цифр десятков и единиц.
  3. Определить число, полученное перестановкой цифр десятков и единиц, цифр сотен и единиц.
  4. Получить четырехзначное число, полученное из двузначного, приписыванием цифры единицы, в качестве цифры тысяч (например, из числа 321 необходимо получить число 1321).

Занятие по теме «Составной оператор и оператор ветвления»

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

                  Полный условный оператор

        If <условие>Then<оператор 1>Else<оператор 2>

        If <условие> Then <оператор>

Разбор темы начинаем со стандартных задач нахождения наибольшего из двух (трех) данных чисел.

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

Дано двузначное (трехзначное) число. Написать программу определения:

  1. Является ли сумма его цифр двузначным числом;
  2. Больше ли числа M сумма его цифр, число M вводится с клавиатуры;
  3. Кратна ли 5  сумма его цифр;
  4. Что больше, цифра десятков или цифра единиц, цифра сотен или цифра десятков (единиц);
  5. Оканчивается ли число цифрой K,цифра K вводится с клавиатуры;
  6. Входит ли цифра 5 в данное число;
  7. Входят ли цифры 5,3,8 в данное число;

Задача. Дано трехзначное число. Написать программу определения, является ли число палиндромом (перевертышем), то есть числом, десятичная запись которого читается слева направо и справа налево.

Program task_1;

 Var a, One, Dec, Han: Integer;

         Begin

Writeln(‘Введи число’);

Readln(a);

One:= a Mod 10;

Han:=a div 100;

Dec:= (a-Han*100) div 10;

   If ((Han*100+Dec*10+One)=(One*100+Dec*10+Han) Then Writeln (‘Yes’)

         else Writeln(‘No’);

End.

  Занятие по теме: «Оператор повторения  For»

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

 Задача. Найти все двузначные числа, в которых есть цифра  N и само число делится на N
Program task_1;

   Var n:Integer;
a1,a2,i: Byte;
         Begin
 Writeln('Введи цифру');

  Readln(n);

  For I:=10 to 99 do begin

  a1:=I mod 10; a2:=I div 10;
  If ((n=a1) or (n=a2)) and (I mod n=0) then

        Writeln('I= ',I);
                                 end;
  End.

   Задача. Определить количество натуральных трехзначных чисел, сумма цифр которых равна заданному числу
 Program task_3;

         Var n,s,i:Integer;
    a1,a2,a3,k:Byte;
         Begin
 Writeln('Введи число');
 Readln(n);

  s:=0;  k:=0;

  For I:=100 to 999 do begin

  a1:=I mod 10;a3:=I div 100;a2:=(i-a3*100) div 10;

  If (a1+a2+a3=n) Then begin Writeln('I= ',I);k:=k+1; end;

  end;

  Writeln('количество цифр=',k);

   End.

  Задача. Написать программу поиска двузначных чисел, таких, что если к сумме цифр этого  числа прибавить квадрат этой суммы, то получится это число.
 Program task_4;

         Var n,i:integer;

a1,a2:byte;

          Begin

   For I:=10 to 99 do begin

     a1:=I mod 10;a2:=I div 10;
      If (a1+a2+(a1+a2)*(a1+a2))=I Then Writeln('I= ',I);
      end;

    End.

  Задача. Квадрат трехзначного числа оканчивается тремя цифрами, которые как раз составляют это число. Написать программу поиска таких чисел.
  Program task_5;

  Var n,i:Longint;
    a1,a2,a3:integer;

          Begin

    For I:=100 to 999 do begin

     a1:=(I*I) mod 10;a2:=(I*I) div 10 mod 10;
    a3:=(I*I) mod 1000 div 100;

      If (a3*100+a2*10+a1)=I Then

        Writeln('I= ',I,’Квадрат числа=',I*I);
   end;
   End.  

  Задача. Найти сумму целых положительных чисел из промежутка от А до В,  кратных 4(значения А и В вводятся с клавиатуры)

 Program task_5;

         Var S:Integer;
     A,B, I: Integer;
      Begin

  Writeln('Введи промежутки А,В');

  Readln(A,B);
 S:=0;

  For I:=A to B do
  If (I mod 4=0)  then begin s:=s+i; Writeln('I= ',I,'s=',s);

  end;

   End.
Задача. В трехзначном числе зачеркнули первую цифру слева, когда полученное  двухзначное число умножили на 7, то получили данное число.
 Program task_6;

   Var i,a1:Integer;
     Begin

  For I:=100 to 999 do begin
   a1:=I mod 100;

     If (a1*7=I) Then Writeln('I= ',i,'a1*7=',a1*7);

        end;

    End.

  Задача. Среди четырехзначных чисел подсчитайте количество чисел, у которых все цифры не равны.
 Program task_7;

     Var m:Integer;
       a1,a2,a3,a4,i,k:Integer;
       Begin

    For I:=1000 to 9999 do begin

         m:=I;

      a4:=m mod 10;m:=m div 10;a3:=m mod 10;m:=m div 10;

      a2:=m mod 10;a1:=m div 10;

        If (a1<>a2) and(a1<>a3) and (a1<>a4)  and (a2<>a3)             and(a2<>a4)

           and (a3<>a4) Then begin k:=k+1;write('I= ',I);end;
         end;

  Writeln('k=',k);

    End.
 

Занятие по теме оператор While

Решая предыдущие задачи, логично возникает вопрос, как определить количество цифр для любого числа, в том числе для длинного? Данная задача хорошо решается с использованием оператора цикла с предусловием While<условие> do<инструкция>. Такой цикл многократно выполняет одни и те же действия при истинности условия, которое изменяется обычно внутри цикла. Истинность условия обычно проверяется перед выполнением инструкций. Таким образом, если бы условие сразу оказалось ложным, то инструкция не будет выполняться не разу. Если в цикле необходимо выполнить несколько инструкций, то они объединяются после оператора Do операторными скобками Begin    End.
Задача. Подсчитать количество цифр данного натурального числа.
Program task_1;
Var m,n:Longint;

  k:Integer;

   Begin

   Writeln(' Введи целое число');

   Readln(n);

   m:=n;k:=0;

    While m<>0 do begin
    inc(k);m:=m Div 10;end;

    Writeln('В числе',n,' цифр',k);

        End.

  Задача: Определить, является ли число палиндромом. Но диапазон данной задачи должен быть расширен, т.е. число  может выходить за пределы типа Integer. Пусть дано число А<=99999. Например: 44444; 12321.

   

Program task_1;

 Var d,n,m:Longint;

  k:Integer;

   Begin

   Writeln(' Введи целое число');

   Readln(n);

   d:=0; m:=n;

    While m<>0 do begin

     d:=d*10+m mod 10;

     m:=m Div 10;

     end;

     If d=n Then Writeln('Перевертыш:',d)
      Else writeln('не перевертыш');

        End.

Задачи для самостоятельного решения.

  1. Найти сумму цифр числа;
    Найти первую цифру числа, например, для числа 123456 цифра 1;
    Поменять порядок цифр числа, например, было 1234, стало 4321;
    Найти количество четных (нечетных) цифр числа;
    Найти самую большую (маленькую) цифру числа;
  1. Найти цифры кратные заданному числу M;
  2. Сколько раз данная цифра встречается в числе?;
  3. Приписать по 1 в начало числа и в конец;
  4. Поменять местами первую и последнюю цифру числа, например, из числа 1234 должно быть получено 4231;
  5. Приписать к исходному числу такое же число, например из числа 1234 получить 12341234;
  6.  Определить, является ли заданное число степенью 3 (2…),
    выяснить, сколько раз встречается максимальная цифра.

    Program task; {Сколько раз встречается максимальная и минимальная цифра?}
     Var n,m,v:Longint;
         k,g,f,max,min,i:Integer;
    Begin
    Readln(n);

 m:=n;v:=n;{запоминаем число, т.к n будет изменено }
   max:=n mod 10;k:=1;
   min:=n mod 10;

      While n<>0 do begin
        m:=n mod 10; inc(k);

        If m>=max Then  max:=m;
       If m        n:=n div 10;
           end;
      Writeln('max=',max);
      Writeln('min=',min); g:=0;f:=0;
    For I:=1 to k-1 do begin
      If v mod 10=max then inc(g);
      If v mod 10=min then inc(f);
        v:=v div 10;

          end;
      Writeln('g=',g,'f=',f);
      Readln
      End.

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


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

Реализация циклического алгоритма в среде Turbo Pascal. Оператор цикла с параметром

Урок по предметной области “Информатика” для 9-10 класса Данный материал  представляет разработку урокапо теме “Реализация циклического алгоритма в среде TurboPascal. Оператор цикла с парам...

Разработка урока по математике в 6 классе по теме "Целые числа"

Это урок закрепления изученного материала в 6 классе по теме :"Целые числа". На уроке систематизируются и обобщаются знания  о положительных и отрицательных числах , повторяются правила сравнения...

Работа с файлами в среде Turbo Pascal 7.0

В системе Turbo Pascal  7.0  связь с внешними источниками , приемниками  и носителями информации  осуществляется только с помощью файлов....

Построение модульной программы в среде Turbo Pascal 7.0

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

Тест по программированию в среде Turbo Pascal. 9 класс

Тестироваиние по теме "Тест по  программированию в среде Turbo Pascal" 9 класс...

Практическая работа программирование в среде TURBO PASCAL. Управление экраном.

Практическая работа апрграммирование в среде TURBO PASCAL. Управление экраном.  9 класс.Работе состоит из двух частей - теоретической и практичекой.  В теоретической части представлены некот...

Карта изучения темы и конспект урока по теме: "Целые числа"

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