Выбери формат для чтения
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Лекция 1. Целые числа.
Для любого типа данных необходимо в лекции для учащихся отметить 5 свойств:
1. Описание типа данных
2. Длина занимаемой области памяти
3. Диапазон возможных значений
4. Операции над данными этого типа
5. Процедуры и функции работы с данными этого типа
Для языка Паскаль рассмотрим 2 типа: Integer и Longint.
Для нашей темы остальные типы большого значения не имеют и их можно опустить.
Для учащихся можно поступить таким же образом, так как рассмотрение сразу всех типов целых чисел загромождает лекцию и отвлекает от главного смысла целых чисел. Немного позже можно по мере необходимости добавить и другие типы целых чисел.
Рассмотрим 5 пунктов для типа Integer:
1. var k,n:integer;
2. 2 байта (16 разрядов)
3. От -32768 до 32767 – 1 разряд знаковый, поэтому для положительного числа можно записать разряды для максимального числа 0111 1111 1111 1111. Это число 2^15-1=32767
4. +, -,*, div, mod –(сложение, вычитание, умножение, частное от деления без остатка.va
Остаток от деления: 11 div 3 =3, 11 mod 3=2)
5. Var a:reeal; k:integer; - связь целых и действительных чисел.
Begin
a:=2.6;
k:=round(a);- результат k=6, округление
k:=trunс(a); - результат k=2, отбрасывание дробной части.
k:=5; a:=k; - результат а=5, вещественное число равное целому
Тип Longint.
1. var k:longint;
2. 4 байта (32 разряда)
3. Абсолютная величина числа примерно равна -2*10^9, 10 десятичных знаков.
Можно записать точнее, но для большинства задач важно знать, сколько в этом числе десятичных знаков.
Остальные два пункта совпадают.
Для языка Паскаль необычными являются операции div и mod.
Для их освоения можно рассмотреть разработку алгоритма поиска суммы делителей заданного числа. Реализация этого алгоритма довольно проста. Необходимо выполнить перебор всех чисел от 1 до половины рассматриваемого числа и сложить те, для которых остаток от деления этого числа равен 0. Программа:
Program summadel;
Var i,n,s:integer;
Begin
Writeln(‘Введите число:’);
Readln(n);
S:=0;
For i:=1 to n div 2 do
If n mod i =0 then s:=s+i;
Writelm(‘Сумма делителей=’,s);
Readln;
End.
Можно сформулировать следующую задачу. Найти совершенные числа в диапазоне от 2 до 10000. Совершенное число равно сумме своих делителей.
Можно записать программу, выполнив определение суммы делителей для заданного диапазона:
Program summadel;
Var i,n,s:integer;
Begin
For n:=2 to 10000 do
begin
S:=0;
For i:=1 to n div 2 do
If n mod i =0 then s:=s+i;
If s=n then Writelm(‘совершенное число=’,n);
End;
Readln;
End.
В этой задаче сумма делителей определяется во внешнем цикле. Большое значение имеет обнуление суммы s в начале внешнего цикла. Учащиеся часто здесь делают ошибки, так как изучение циклов и целых чисел приходится на начало изучения языка Паскаль.
Для этой задачи есть еще одно продолжение. Найти в этом же диапазоне от2 до 10000 дружественные числа. Дружественные числа равны сумме делителей друг друга. Пусть sdel(k) –сумма делителей числа k, тогда для дружественных чисел k и n: k=sdel(n) и n=sdel(k).
Это значит, что во второй программе нужно сумму делителей переменной s и затем выполнить сравнение.
Разработайте этот алгоритм самостоятельно и пришлите ответ в виде готовой программы.