1. В программе определяются цифры трехзначного числа. Можно ее использовать и для определения цифр двузначного числа, просто цифра сотен в этом случае равна нулю, и это делается проще.
Program Му3_1;
Var a, one, dec, hun, rez: Integer;
Begin
WriteLn('Введите число');
ReadLn(a);
one:=a Mod 10;
WriteLn ('Цифра единиц числа — ' , one);
dec: = (a Div 10) Mod 10;
WriteLn ('Цифра десятков числа — ' , dec) ;
hun:=a Div 100;
WriteLn ('Цифра сотен числа — ' , hun);
Rez: = hun * 100 + dec * 10 + one;
WriteLn ('А это тоже число — ' , rez);
Write(' Enter ') ;
ReadLn;
End.
Измените программу Му3_1 для нахождения цифр четырех значного числа. Сохраните ее под именем Prim3_2.pas.
2. Наберите следующую программу:
Program My4_3;
Uses Crt;
Var a:Integer; b:Word; r1:Integer; r2:Longint;
Begin
ClrScr; {Очистка экрана, процедура модуля Crt}
a:=32000; b:=64000;
rl:=a+b; WriteLn (r1);
r2:=a+b; WriteLn (r2);
ReadLn;
End.
После запуска Вы увидите, что значение переменной r1 равно 30464, а значение переменной r2 = 96000. Если изменить тип переменной r1 на Word, то результат не изменится. Используя информацию из таблицы, приведенной в начале занятия, измените программу так, чтобы проделать аналогичные эксперименты с другими целыми типами. Попробуйте найти логику получения результата компьютером.
3. Добавьте в программу Му3_3 перед оператором ReadLn сле- дующие два оператора:
Функция Longint преобразует переменную типа Integer в тип Longint. В первом случае преобразование осуществлялось после умножения, а во втором — перед умножением. В первом случае получен результат, далекий от истины, — отрицательное число - 11264, во втором правильный - 3200000.
Приведем основные правила, по которым в Паскале осуществляются операции с переменными целых типов:
1. Перед выполнением операций (бинарных) над двумя операндами оба операнда преобразуются к общему для них типу. Им является тип с наименьшим диапазоном, включающим все возможные значения обоих типов. Например, общим типом для Integer и Byte будет Integer, для Integer и Word — Longint. Результат будет общего типа.
2. Выражение в правой части оператора присваивания вычисляется независимо от размера или типа переменной в левой части. Перед выполнением любой арифметической операции любой операнд длиной в 1 байт преобразуется в промежуточный операнд длиной в 2 байта, который является совместимым как с Integer, так и с Word.