Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритмизация и программирование. Учебное пособие
.pdf
11
Текст программы.
Program MyProgram1;
BEGIN
Writeln('Ответ: ', Sqrt((Exp(4)- Sin(30)-15))/Abs(Ln(15)-Cos(25)));
END.
Задание. Найти значение функции f(x) при x, введённом пользова-
телем
Текст программы.
Program MyProgram2;
Var x, f :real;
BEGIN
Write('Введите x ');
Readln(x);
f:=Sqr(x-1.25)*Ln(exp(-2))/(Arctan(180)+x);
Writeln('f(', x ,')=', f);
END.
Задание. Найти сумму цифр трёхзначного числа.
Текст программы.
Program MyProgram3;
Var abc,a,b,c :integer;
BEGIN
Write('Введите трёхзначное число ');
Readln(abc);
a:=abc div 100; // находим цифру сотен
b:=(abc - a *100) div 10; // находим цифру десятков
c:=abc mod 10; // находим цифру единиц
Writeln('Сумма цифр равна ', a+b+c);
END.
Задания для самостоятельной работы
1. Найти значение выражения
2. Найти значение выражения
.
.

12
3. Найти значение выражения
4. Найти значение выражения
5. Найти значение выражения
.
.
.
6. Найти значение функции f(x) для x, введённого пользователем
.
7. Найти значение функции f(x) для x, введённого пользователем
.
8. Найти значение функции f(x) для x, введённого пользователем
.
9. Найти значение функции f(x) для x, введённого пользователем
.
10. Найти значение функции f(x) для x, введённого пользователем
.
11. Написать программу для расчёта объёма пирамиды, высота и площадь
основания которой вводятся с клавиатуры.
12. Написать программу для расчёта площади трапеции, длины оснований
и высота которой вводятся с клавиатуры.
13. Написать программу для расчёта площади параллелограмма. Длина
стороны параллелограмма и высоты, опущенной на неё, вводятся с клавиатуры.
14. Написать программу для расчёта длины гипотенузы прямоугольного
треугольника, длины катетов вводятся с клавиатуры.
15. Написать программу для расчёта объёма цилиндра, радиус основания
и высота которого вводятся с клавиатуры.
3. ЛОГИЧЕСКИЙ ТИП ДАННЫХ
Логический тип данных boolean состоит всего из двух значений
True – истина и False – ложь. Для работы с данными логического типа в
Паскале используют знаки отношений:
“>” – больше;
“<” – меньше;
“=” – равно;

13
a b not a
a and b
a or b
a xor b
false
false
true
false
false
false
true
false
false
false
true
true
false
true
true
false
true
true
true
true
false
true
true
false
“>=” – больше или равно;
“<=” – меньше или равно;
“<>” – не равно.
Логическое выражение – это выражение, содержащее переменные
логического типа, знаки отношений, а также знаки логических операций.
Результат логического выражения всегда будет типа boolean.
Пример:
7>8 - false,
2>=2 - true,
‘кошка’= ‘мышка’ – false,
(7<=3) = (‘кошка’= ‘мышка’) – true,
(5<>5) = true – false.
Более сложные логические выражения можно составлять, используя
логических операции:
not (не) - отрицание;
and (и) - логическое умножение;
or (или) - логическое сложение;
xor - исключающее или.
Результаты применения данных операций для переменных логического типа a и b представлены в Таблице 4:
Таблица 4.
Результаты применения логических операций.
Как можно заметить, операция not меняет значение переменной на
противоположное. Операция and возвращает значение “истина”, когда оба
параметра истины, or - когда хотя бы один параметр истинный, xor - когда
значения параметров различаются.
Пример:
not (false) – true,
(4<5) and (7=5) – false,
(4<5) or (7=5) – true,
(4<5) xor (7=5) – true.

14
Оператор условия
В процессе разработки алгоритма программы часто требуется предусмотреть возможность его реализации по одному из нескольких, заранее
предусмотренных направлений, в зависимости от некоторого условия.
Если возможных направлений всего два, такой алгоритм реализуется с
помощью оператора if. Оператор имеет следующую схему записи.
if условие then оператор1 else оператор2;
Условие – это некоторое логическое выражение. Оператор if проверяет его значение, если оно истинно, то выполняется оператор1, в противном случае – выполняется оператор2.
Пример:
if a>d then s:=a+d else s:=a-d;
Ветвь else использовать необязательно.
Пример:
if a<=d then a:=a+1;
Если в зависимости от значения логического выражения необходимо выполнить не один, а группу операторов, то в этом случае используют
составной оператор begin – end. Все операторы, помещённые между begin
и end, рассматриваются компилятором как один оператор.
Пример:
if a=d then
begin
a:=a+2;
b:=2-f;
end else Writeln(’условие не выполняется’);
Задание. Подсчитать количество чётных чисел среди трёх введённых.
Решение. Для решения программ на подсчёт количества вводят числовую переменную “счётчик” и присваивают ей значение 0. Затем все
объекты анализируются и каждый раз, когда объект удовлетворяет
условию (в нашем случае является чётным), значение счётчика увеличивают на единицу.

15
Текст программы.
Var a,b,c,s : integer;
BEGIN
Write('Введите первое число ');
Readln(a);
Write('Введите второе число ');
Readln(b);
Write('Введите третье число ');
Readln(c);
s:=0; //обнуляем счётчик
if (a mod 2 = 0) then s:=s+1; //если a делится на 2 без остатка, то
// увеличиваем счётчик на единицу
if (b mod 2 = 0) then s:=s+1; //если b делится на 2 без остатка, то
// увеличиваем счётчик на единицу
if (c mod 2 = 0) then s:=s+1; //если c делится на 2 без остатка, то
// увеличиваем счётчик на единицу}
Writeln(' Чётных чисел ', s); // выводим значение счётчика
END.
Задание. Подсчитать количество чётных чисел среди трёх введённых. Найти наибольшее из трёх чисел.
Решение. Для решения можно ввести переменную, хранящую предполагаемое максимальное значение (max). Изначально ей присваивается
первое значение, затем max сравнивается с остальными значениями. Если
обнаруживается число больше max, то оно становится предполагаемым
максимальным.
Текст программы.
Var a,b,c,max : integer;
BEGIN
Write('Введите первое число');
Readln(a);
Write('Введите второе число');
Readln(b);
Write('Введите третье число');
Readln(c);
max:=a; //Предположим, что a наибольшее
if b>max then max:=b; //если b больше предполагаемого
//максимального, то b считаем наибольшим
if c>max then max:=c; //если c больше предполагаемого
//максимального, то c считаем наибольшим
Writeln(' наибольшее число= ', max);
END.

16
Задание. Найти значение функции f(x) для x, введённого с клавиатуры.
Текст программы.
Var x,f : real;
BEGIN
Write('Введите x'); Readln(x);
if (0<x) and (x<=2) then f:=x*x;
if (-2<x) and (x<=0) then f:= abs(x+4);
if (x<-2) or (x>2) then f:=0;
Writeln('f(' ,x ,')=',f);
END.
Задания для самостоятельной работы
1. Написать программу, проверяющую, удовлетворяет ли введённое число
следующему условию: является нечётным или отрицательным (например,
число -2 - удовлетворяет, число 2 – не удовлетворяет).
2. Написать программу, проверяющую, удовлетворяет ли введённое число
следующему условию: является кратным 3, но не кратным 9 (например,
число 12 - удовлетворяет, число 9 – не удовлетворяет).
3. Написать программу, проверяющую, является ли введённое число дву-
значным.
4. Написать программу, проверяющую, удовлетворяет ли введённое число
следующему условию: является отрицательным или чётным (например,
число -7 - удовлетворяет, число 9 – не удовлетворяет).
5. Написать программу, проверяющую, удовлетворяет ли введённое число
следующему условию нечётное, но не равно 7 (например, число 25 - является, число 7 – не является).
6. Подсчитать общее количество отрицательных чисел и чисел кратных
семи среди трёх введённых (например, для чисел 5; -1; 7 ответ 2).
7. Подсчитать общее количество чисел 7 и чисел некратных семи среди
трёх введённых (например, для чисел 14; -1; 7 ответ 2).
8. Подсчитать общее количество чисел не равных 3 или кратных 6 среди
трёх введённых (например, для чисел 3; -12; 7 ответ 2).
9. Подсчитать общее количество чисел 7 и чётных чисел среди трёх вве-
дённых (например, для чисел -6; -1; 7 ответ 2).
10. Подсчитать общее отрицательных чисел больше -5 среди трёх введён-
ных (например, для чисел -6; -1; -7 ответ 1).

17
11. Найти значение функции f(x) для x, введённого с клавиатуры.
12. Найти значение функции f(x) для x, введённого с клавиатуры.
13. Найти значение функции f(x) для x, введённого с клавиатуры.
14. Найти значение функции f(x) для x, введённого с клавиатуры.
15. Найти значение функции f(x) для x, введённого с клавиатуры.

18
4. ПОРЯДКОВЫЕ ТИПЫ ДАННЫХ
Среди типов Паскаля выделяют особую группу, называемую “поряд-
ковые типы”. Порядковый тип – это тип, для каждого значения которого
можно определить предшествующее и последующее значение. К порядковым типам относят все целые типы, булевский тип, тип char др. Вещественные типы не являются порядковыми. Например, “соседями” целого
числа 5 будут 4 и 6, для вещественного числа 2,5 “соседей” определить невозможно.
Над данными порядковых типов определены следующие операции:
Ord(x) - возвращает порядок (номер) элемента.
Inc(x) - увеличивает х до следующего элемента.
Inc(x, n) - увеличивает х на n элементов.
Dec(x) - уменьшает x до предыдущего элемента.
Dec(x) - уменьшает х на n элементов.
Succ(x) - возвращает элемент типа, следующий за x.
Pred (x) - возвращает элемент типа, предшествующий x.
Оператор множественного ветвления CASE
Рассмотренный ранее оператор if используется в случае, когда
требуется выполнить какое-то действие в зависимости от одного из двух
возможных значений выражения. Если выражение может принимать более двух значений, то использование оператора if оказывается неудобным. Более рационально в данном случае использовать оператор выбора
Case, выполняющий оператор или группу операторов в зависимости от
нескольких (более двух) значений выражения. Он имеет следующую
схему записи:
Case выражение of
список-условий 1 : действие1;
список-условий2 : действие2;
………………………
список-условий п : действие n;
else действие n+1;
end;
Выражение должно быть порядкового типа. Список условий может
содержать произвольные выражения, состоящие из констант, имеющих
подходящий тип. В этом списке допускается использовать также диапазоны значений (например, 2..10 - все целые числа от 2 до 10). Результат вы-

19
ражения будет поочередно сравниваться с каждым из значений в списках.
При первом совпадении выполняется соответствующее действие, после чего оператор прекращает свою работу. В случае, когда ни одного совпадения результата выражения с заданными значениями не произошло, выполняется действие, указанное за словом else (если оно имеется), или не выполняется ничего, если слово else внутри оператора выбора отсутствует.
Оператор всегда заканчивается словом end.
Задание. Написать программу, которая выполняет математические действия с двумя введёнными числами. Знак действия также вводится.
Текст программы.
Var znak: char;
a,b: real;
BEGIN
Writeln('Введите а '); Readln(a);
Writeln('Введите в'); Readln(b);
Writeln('Введите знак'); Readln(znak);
Write(a,znak,b,'=');
Case znak of
'+': Write(a+b);
'-': Write(a-b);
'*': Write(a*b);
'/': Write(a/b);
else Write('Ошибка!');
end;
END.
Жёсткий цикл For
Циклом называется фрагмент программы, который может повторяться несколько раз. Количество оборотов цикла зависит от некоторого логического условия. Жёсткий цикл – это цикл, число оборотов которого заранее определяется программистом. В Паскале жёсткий цикл реализуется
оператором for, имеющем следующую форму записи:
for переменная := значение1 to значение2 do оператор;
Переменная должна иметь порядковый тип, её называют “управляющим параметром цикла”. При первом обороте цикла управляющий параметр принимает значение, равное значению 1, затем выполняется опера-

20
тор. После этого начинается второй оборот цикла. Управляющий параметр
принимает значение, следующее после значения 1. Последний оборот цикла произойдёт тогда, когда управляющий параметр примет значение, равное значению 2.
Пример.
for i:=1 to 100 do Writeln(i); - на экран выведутся числа от 1 до 100.
for k:=5 to 10 do Writeln(‘Привет!’); - 6 раз выведется “Привет!”.
Если входе работы цикла необходимо, чтобы управляющий параметр
изменялся от большего к меньшему, вместо to используют downto.
Пример.
for r:=’z’ downto ‘a’ do Writeln(r); - На экран выведется английский
алфавит в обратном порядке.
Если предполагается циклическое повторение не одного, а группы
операторов, то их объединяют в составной оператор begin – end. Данная
группа операторов называется телом цикла.
Пример.
for k:=2 to 15 do
begin
r:=t+1;
s:=r*r;
Writeln(s);
end;
Задание. Вывести на экран все числа кратные 7 из промежутка от
1 до 100.
Текст программы.
Var i: integer;
Begin
// перебираем все числа от 1 до 100, если
//число делится на 7 без остатка, то выводим его на экран
for i:= 1 to 100 do if i mod 7=0 then writeln (i);
End.
Задание. Найти общее количество чисел кратных 7 в промежутке
от 1 до 100
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
