Форматированный ввод результатов.
При использовании оператора ввода после имени переменной арифметического выражения или константа через двоеточие, указывается количество позиций, отводимых для ввода данного значения. Затем ещё одно двоеточие указывает, сколько десятичных цифр следует сохранить справа от десятичной точки.
Пример 1. Чтобы ввести на печать результат величин
V = 12152.675 нужно записать
write (V : 9 : 3)
Пример 2. Запись текста программы на Паскале для вычисления
объема шара V=4/3*pi * R3 при R=0.2
program SHAR (input, output);
const pi=3.14;
var
R: real;
V: real;
begin
R:=0.2;
V:= 4*pi *R*R*R/3;
writeln (‘Объём шара =’, V: 8: 3);
end.
,где V : 8 : 3 означает количество позиций, отведенных для целых знаков числа и число позиций для десятичных знаков.
Пример 3.Составить программу вычисления площади трапеции.
program prim2 (input, output)
var
b: real; (*длина верхнего основания*)
a: real ; (* длина верхнего основания*)
h : real; (* высота трапеции*)
s: real; (* площадь трапеции*)
begin
writeln (‘ введите значения b, a, h: ‘);
read(b,a,h);
s:= (b+a)*h /2;
writeln;
write(‘ площадь трапеции= ‘ , s :7: 2)
end.
Вопросы. Найдите ошибки в тексте следующих программ:
а) i: integer;
begin
write (‘ Задайте целое число.’);
readln (i)
write (i);
end.
var
i: real;
begin
i=1;
writeln (‘ i =’, j);
end
Ответы. а) Отсутствует слово var в начале раздела описания переменных; после оператора readln не стоит символ «точки с запятой»ж в операторе write используется имя необъявленной переменной j;
б) вместо writeln набрано wirteln ; нет точки после слова end в конце текста программы.
Упражнения. Составьте программы:
а) вычисления расстояния по известным значениям
скорости.
б) вычислить объем параллелепипеда
в) вычислить площадь круга
Условный оператор
Часто возникает необходимость выполнять различные команды в зависимости от выполнения какого-то условия (например надо найти наибольшее из двух чисел и вывести на экран).
Для таких целей в Паскале введен условный оператор:
if условие then
begin
операторы, выполняемые, если условие истинно
end
begin
операторы, выполняемые, если условие ложно
end
оператор 1, else оператор 2
Пример 1. Рассмотрим задачу о нахождении наибольшего из двух чисел. Программа должна выполнять следующие действия:
- ввести с клавиатуры два числа
- сравнить два значения
вывести на экран наибольшее из них
ПРОГРАММА
program SR (input, output);
var
a ,b : real;
begin
writeln ( ‘введите первое число’ );
readln ( a );
writeln (‘введите второе число’ );
readln (b );
if a < b then
writeln ( ‘наименьшим является первое число’ )
else
if a = b then
writeln ( ‘введенные значения равны’ )
else
writeln ( ‘наименьшим является второе число’ )
end.
На дом: Составить программу решения линейного уравнения
ах2 + в = 0.
Напомним, что если а 0, то х = -b / a
а если а = 0, то просто проверить значение в.
при в = 0, решением является любое число,
а при в 0 уравнение не имеет решения.
Program linear equation;
var
a, b : real;
begin
write ( ‘введите коэффициенты а и в ‘);
readln ( a, b);
if
a < > 0 . 0 then
write (‘x =’ , - b/a)
else
if b = 0.0 then
write (‘корень любое число’ )
else write (‘ корней нет’)
end.
Пример 3 Решим задачу на определение Палидрома.
Определение Палидром -это когда число или слово читается одинаково слева направо или справа налево
121
282
шалаш,
наган
Задача. Требуется определить, является ли заданное трехзначное число палидромом .
Для решения такой задачи можно использовать простое условие - первая цифра должна равняться последней.
ПРОГРАММА
program palidrom (input, output );
var
x : integer;
begin
write ( ‘ введите целое число:’);
readln ( x );
if x mod 10 = x div 100 then
write ( ‘ введенное число является палидромом’ )
else
write ( ‘ введенное число не является палидромом ‘)
end.
В этой программе используется стандартная операция mod , которая дает остаток от деления нацело ( деление по модулю). Например:
если х = 128 то х mod 10 будет число 8, т.к. 128/10=12 в остатке 8
Другая стандартная операция div - делит нацело ( отбрасывается дробная часть ).
Например:
если х=128 то div 100 будет число 1 , т.к. 128/100=1,28 а дробная часть отбрасывается.
Пример 4. Следующая программа должна проверять, делиться ли введенное с клавиатуры число нацело на 4. Числа а и b делятся нацело, если остаток от деления a / b = 0
ПРОГРАММА
program divide ( input, output );
var
m : integer;
begin
write ( ‘ введите целое число ‘);
readln ( m );
if m mod 4 = 0 then
write ( ‘ введенное число делится на 4’ )
else
write ( ‘ введенное число не делится на 4’ )
end.
Попробуем решить сложную задачу.
Задача: Дано трехзначное число х = а b с (а, b, с - его цифры ). Требуется получить число, записанное теми же цифрами, но в обратном порядке.
То есть, если дано число 128, то получить надо 821. Перед нами встает задача нахождения цифр числа а, b и с. Выстроить эти цифры в обратном порядке легко - результат будет равен
х = 100 с + 10 b + а.
Проще найти цифру единиц с - она будет равна остатку от деления числа х на 10 ( например, если х = 128 то х mod 10 будет 8. )
Итак с : = х mod 10
Чтобы найти В поступим следующим образом:
сначала найдём ав, равное х , делённому нацело на 101 (для 128 это будет 12),
а затем уже определим у-цифру единиц получившегося числа:
в : = х div 10 mod 10.
Найти а - просто - это результат деления х нацело на 100:
а: = x div 100
Теперь запишем программу prodram naoborot (input, output);
var
x, a, b, c : integer;
begin
write ( ‘x = = >’);
readln (x);
c: = x mod 10;
b: = x div 10 mod 10;
a: = x div 100;
write (100 * c + 10 + b + a );
end.
Пример 5. Как определить, является ли указанный год високосным?
Напомним, что год високосный, если его номер делится на 4, кроме тех, что делятся на 100.
Ход решения задачи:
Проверим, кратен ли номер года 400, если да , то год високосный, если нет, проверим номер года на кратность 100.Если окажется, что он кратен 100, то год не високосный, если нет, то проверяем на кратность 4.
Программа.
Program Februaru _ 29 (input, ontput);
var
a: integer
begin
write (‘ Введите год : ’);
readln (a);
if a mod 400 = 0 then
write (a, - ‘ високосный год ’)
else
if a mod 100 = 0 then
write (a, ’ - не високосный год’)
else
if a mod 4 = 0 then
write (a, ‘ - високосный год’)
else
write (a, ’ - не високосный год’)
end.