Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмизация и программирование. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
1 Мб
Скачать
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]