Пример 1. Определение недельной учебной нагрузки с помощью программы, в которой применяется перечислимый тип данных
type week_day= (mon, tue, wed, thu, fri, sat, sun) ;
var day:week_day ;
S,k:byte;
begin
S:=0;
for day:=mon to sun do
begin
case day of
mon,wed: k:=6;
tue,fri:k:=8;
thu,sat:k:=4
else
k:=0;
end;
S:=S+k;
end;
writeln('s=',S);
Readln
end.
Пример 2. Поменять значения переменных местами.
Решение задачи без использования дополнительной переменной:
var x,y:integer;
begin
writeln(‘введите x y’);
Readln(x,y);
x:=x+y ;
y:=x-y;
x:=x-y;
writeln('x=',x);
writeln('y=',y);
end.
Пример 3. В двух строках текстового файла находится по два действительного числа. Найти сумму этих чисел. Результат вывести на экран.
Текст программы:
Program one;
Var a,b,c,d,S: real;
F: text;
Begin
Assign(F, 'c:\temp\abc.txt');
Reset(F);
Readln(F, a, b);
Readln(F, c, d);
S:=a+b+c+d;
writeln('сумма=',S) ;
Close(F);
end.
При содержимом файла:
-1.5 3.5
6.5 4
Результат программы:
сумма=12.5
Для контроля прочитанных из файла значений желательно добавлять в программу следующую команду: writeln(‘из файла прочитаны значения: a=’, a,’ b=’,b, ‘ c=’,c, ‘ d=’ , d).
Пример 4. Примечание: в данной задаче для выделения дробной части необходимо использовать целочисленные операции, а не функцию frac(x), так как в результате вызова функции возвращается приближённое значение, например,
Frac(338.169)=0.168999999999983.
program n18;
var t,h,m,s:integer;
f:Text;
begin
Assign(f,’18.txt’);
Reset(f);
Readln(f,t);
Close(f);
writeln(‘введено время в секундах’,t);
h:= t div 3600;
m:= t mod 3600 div 60;
s:=t mod 60;
writeln('часы h=',h);
writeln('минуты m=',m);
writeln('секунды s=',s);
end.
Задание №19:
program n19;
var number1, number2,dr:real;
c:integer;
f:Text;
begin
Assign(f,’19.txt’);
Reset(f);
Readln(f, number1);
Close(f);
writeln('исходное число', number1);
c:=trunc(number1); {целая часть числа}
dr:=trunc(number1*1000) mod 1000 ;{дробная часть числа, записанная как целое 3-хзначное число}
number2:=dr+ c/1000;
writeln('число 1= ',number1,'число 2= ', number2);
end.
Задание №21:
Пояснения к решению:
Для решения данной задачи требуется провести ряд выкладок:
Окружность составляет 360○, это значение – 12 часов. Следовательно, в 1 часе 360/12=30○.
в 1 часе (30○)– 60 минут. Следовательно, одному градусу соответствует 2 минуты.
Если будет введено число, содержащее дробную часть, то округление должно производиться по правилам математики, например, число 90.5 будет производиться в большую сторону, так как 0.5○ соответствует 1 мин.
program n21;
var y:real;
yc:integer;
h,m:0..60;
f:Text;
begin
Assign(f,’19.txt’);
Reset(f);
Readln(f,y);
Close(f);
writeln(‘угол составляет’, y,’градусов’);
yc:=round(y); {преобразовали вещественное число к целому}
h:=yc div 30; {полное количество часов}
m:= yc mod 30 *2 ;{целое количество минут}
writeln(число полных часов',h, 'прошло минут ',m)
end.
Вывод данных
Program n18;
var t,h,m,s:integer;
Fi, Fo:Text;
begin
Assign(Fi,’18.txt’);
Assign(Fo,’Result_18.txt’);
Reset(Fi);
Readln(Fi,t);
Close(Fi);
Rewrite(Fo);
writeln(Fo,‘введено время в секундах’,t);
h:= t div 3600;
m:= t mod 3600 div 60;
s:=t mod 60;
writeln(Fo,'часы h=',h);
writeln(Fo,'минуты m=',m);
writeln(Fo,'секунды s=',s);
Close(Fo)
end.
Рассмотрим решение задачи №28 из практической работы 3.1 (Вывести результат логического выражения: Среди первых трёх цифр из дробной части вещественного числа есть нуль).
program N28;
var
Dr:real;
cd:integer;
a,b,c:0..9;
begin
Writeln('введите вещественное число');
Readln(Dr);
cd:=Trunc(frac(Dr)*1000); {выделение из дробной части числа трёх первых цифр, результат – целое трёхзначное число}
a:=cd div 100;
b:=cd div 10 mod 10;
c:=cd mod 10;
writeln((a=0) or (b=0) or (c=0));
end.
Домашнее задание
Задание 1. Один из вариантов задания №29 из Практической работы 3.1. Данные должны вводиться из файла, результаты выводиться в файл. Разработать тесты к программе и проверить их.
Задание 2. Задание из №30-36 из Практической работы 3.1. Данные должны вводиться из файла, результаты выводиться в файл. Разработать тесты к программе и проверить их.
Домашнее задание. §2.2.5, №3,4 после параграфа (блок-схемы в тетради, программы в электронном виде).
Практикум к главе 2 «Методы программирования»
Раздел 3. Структурное программирование
Работа 3.1. Программирование линейных алгоритмов на Паскале (к § 2.2.4)
Для каждой вычислительной задачи составить два варианта программы: 1) с вводом исходных данных с клавиатуры и выводом на экран; 2) с вводом исходных данных из текстового файла и выводом результатов в другой текстовый файл.
Для каждой задачи на составление логических выражений составить программу, выводящую значение TRUE, если указанное высказывание является истинным, и FALSE в противном случае (нельзя использовать условный оператор)
Уровень 1
Вычислительные задачи
1. Вычислить длину окружности и площадь круга одного и того же заданного радиуса R.
2. Вычислить расстояние между двумя точками с данными координатами на плоскости (х1, y1) и (х2, y2).
3. Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба.
4. Три сопротивления R1, R2, R3 соединены параллельно. Найдите сопротивление всей цепи.
5. Найти сумму членов арифметической прогрессии, если известны ее первый член, разность и число членов прогрессии.
6. Вычислить корни квадратного уравнения ax2+bx+с = 0 с заданными коэффициентами а, b и с (предполагается, что а ≠ 0 и что дискриминант уравнения неотрицателен).
7. Найти площадь равнобедренной трапеции с основаниями а и b и углом α при большем основании а.
Задачи на составление логических выражений
8. Треугольник со сторонами a, b, c является равносторонним
9. Целое число N является четным двузначным числом.
10. Треугольник со сторонами a, b, c является равнобедренным.
11. Среди чисел a, b, c есть хотя бы одна пара взаимно противоположных чисел.
12. Данные числа x, y являются координатами точки, лежащей в первой координатной четверти.
13. Данные числа c и d являются соответственно квадратом и кубом числа a.
14. Заданное натуральное число N является двузначным и кратно K.
Уровень 2
Вычислительные задачи
15. Заданы координаты трех вершин треугольника (х1, y1), (х2, y2), (х3, y3). Найти его периметр и площадь.
16. Найти произведение всех цифр заданного четырехзначного числа.
17. Вычислить площадь и периметр правильного N-угольника, описанного около окружности радиуса R (рассмотреть N – целого типа, R –вещественного типа).
18. Дано натуральное число T, которое представляет длительность прошедшего времени в секундах. Вывести данное значение длительности в часах, минутах и секундах в следующей форме: НН ч ММ мин SS с.
19. Дано действительное число R вида nnn. ddd (три цифровых разряда в дробной и целой частях). Поменять местами дробную и целую части числа и вывести полученное значение числа.
20. Составить программу перевода радианной меры угла в градусы, минуты и секунды.
21. С начала суток часовая стрелка повернулась на y градусов (0 ≤ y <360, y — вещественное число). Определить число полных часов и полных минут, прошедших с начала суток. Сформулировать и решить обратную задачу.
Задачи на составление логических выражений
22. (x1, y1) и (x2, y2) — координаты левой верхней и правой нижней вершин прямоугольника. Точка A(x, y) принадлежит прямоугольнику.
23. Данное четырехзначное число читается одинаково слева направо и справа налево.
24. В заданном натуральном трехзначном числе N имеется четная цифра.
25. Сумма каких-либо двух цифр заданного трехзначного натурального числа N равна третьей цифре.
26. Сумма цифр заданного четырёхзначного числа N превосходит произведение цифр этого же числа на 1.
27. Сумма двух последних цифр заданного трёхзначного числа N меньше заданного K, а первая цифра больше 5.
28. Среди первых трёх цифр из дробной части вещественного числа есть нуль.
Уровень 3
Вычислительные задачи
29. Дан произвольный треугольник ABC, для которого определен следующий набор характерных параметров: a, b, c — стороны треугольника; a, b, - углы (в градусах); h — высота, опущенная на сторону с; S — площадь; P — периметр треугольника. По трем заданным параметрам вычислить все остальные. Различные сочетания параметров определяют варианты заданий. Замечание: входные (исходные) и выходные значения углов должны представляться в градусной мере.
|
|||
1) a, b, c; |
2) a, b, ; |
3) c, , ; |
|
4) h, c, b; |
5) h, c, ; |
6) S, h, b; |
|
7) S, h, ; |
8) a, b, h; |
9) a, b, S; |
|
10) a, b, P; |
11) a, h, ; |
12) a, h, ; |
|
13) S, c, ; |
14) h, , ; |
15) h, , . |
|
Задачи на составление логических выражений
30. Целая и дробная части заданного вещественного числа одинаковы.
31. Заданы координаты трёх точек плоскости. Эти точки не лежат на одной
прямой.
32. Первые две цифры в дробной части заданного вещественного числа совпадают с записью целой части этого числа.
33. Точка с координатами (x, y) принадлежит части плоскости, лежащей между прямыми y = m, y = n (m < n).
34. Среди первых трёх цифр из дробной части положительного вещественного числа есть нуль.
35. Шахматный король за один ход может переместиться с одного заданного поля на другое (каждое поле задано двумя координатами — целыми числами от 1 до 8).
36. Шахматный ферзь за один ход может переместиться с одного заданного поля на другое (каждое поле задано двумя координатами — целыми числами от 1 до 8).
Работа 1.2. Программирование ветвящихся алгоритмов на Паскале
(к § 2.2.6)
Вычислительные задачи