Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 1-2.doc
Скачиваний:
2
Добавлен:
10.11.2019
Размер:
73.22 Кб
Скачать

Форматированный ввод результатов.

При использовании оператора ввода после имени переменной арифметического выражения или константа через двоеточие, указывается количество позиций, отводимых для ввода данного значения. Затем ещё одно двоеточие указывает, сколько десятичных цифр следует сохранить справа от десятичной точки.

Пример 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.

  1. 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. Рассмотрим задачу о нахождении наибольшего из двух чисел. Программа должна выполнять следующие действия:

- ввести с клавиатуры два числа

- сравнить два значения

  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.