Практическая работа №13
Примеры построения алгоритмов с использованием конструкций проверки условий, циклов и способов описания структур данных
Цель работы:
усвоить понятия: алгоритм как фундаментальное понятие информатики, способы описания, основные типы алгоритмов, освоить принципы решения задач с использованием основных алгоритмических конструкций.
Оборудование:
персональный компьютер, Паскаль
Общие теоретические сведения
Решение любой задачи на ЭВМ можно разбить на следующие этапы: разработка алгоритма решения задачи, составление программы решения задачи на алгоритмическом языке, ввод программы в ЭВМ, отладка программы (исправление ошибок), выполнение программы на ПК, анализ полученных результатов.
Первый этап решения задачи состоит в разработке алгоритма.
Алгоритм – это точная конечная система правил, определяющая содержание и порядок действий исполнителя над некоторыми объектами (исходными и промежуточными данными) для получения после конечного числа шагов искомого результата.
Алгоритм может быть описан одним из трех способов:
· словесным (пример в начале раздела);
· графическим (виде специальной блок-схемы);
· с помощью специальных языков программирования.
Блок-схема – распространенный тип схем, описывающий алгоритмы или процессы, изображая шаги в виде блоков различной формы, соединенных между собой стрелками.
1. Линейный алгоритм – это такой алгоритм, в котором все операции выполняются последовательно одна за другой.
2. Алгоритмы разветвленной структуры применяются, когда в зависимости от некоторого условия необходимо выполнить либо одно, либо другое действие.
3. Алгоритмы циклической структуры.
Циклом называют повторение одних и тех же действий (шагов). Последовательность действий, которые повторяются в цикле, называют телом цикла.
Циклические алгоритмы подразделяют на алгоритмы с предусловием, постусловием и алгоритмы с конечным числом повторов. В алгоритмах с предусловием сначала выполняется проверка условия окончания цикла и затем, в зависимости от результата проверки, выполняется (или не выполняется) так называемое тело цикла.
Задание 1.
Определить площадь трапеции по введенным значениям оснований (a и b) и высоты (h).
Запись алгоритма в виде блок-схемы (рис. 1):
|

Рисунок 1. Блок-схема линейного алгоритма
Задание 2. Определить среднее арифметическое двух чисел, если a положительное и частное (a/b) в противном случае.
Запись алгоритма в виде блок-схемы (рис. 2):
|
|

Рисунок 2. Блок-схема алгоритма с ветвлением
Задание 3. Составить алгоритм нахождения суммы целых чисел в диапазоне от 1 до 10.
Запись алгоритма в виде блок-схемы (рис. 3):
Рисунок 3. Циклический алгоритм с предусловием
В алгоритме с постусловием сначала выполняется тело цикла, а затем проверяется условие окончания цикла.
Запись алгоритма в виде блок-схемы (рис. 4):
Рисунок 4. Циклический алгоритм с постусловием
Порядок выполнения работы
Прочитать условия задач, составить алгоритм и блок – схему к задаче.
Задача 1.
Составить схему алгоритма вычисления значения: x=a+b при a>b, x=a*b, при a<=b.
Задача 2.
Составить схему алгоритма вычисления значения:
Для начала для построения блок –схемы алгоритма опишем последовательностьдействий, необходимых для решения данной задачи:
S0=0
S1=S+12
S2=S+22
…
S20=S+202
Задача 3.
Составить программу для вычисления значения периметра треугольника со сторонами А, В и С.
begin
var (a,b,c):=ReadReal3('Введите 3 стороны треугольника через пробел:');
write('периметр: P=',a+b+c);
end.
Задача 4.
Составить программу для вычисления значения площади прямоугольника со сторонами А и В.
program название;
var p, a, b: real;
begin
writeln(a), readln(a);
writeln(b), readln(b);
p:=(a+b)*2;
writeln(p);
end.
Задача5.
Составить программу для вычисления значения площади и периметра квадрата со стороной А.
var
a:longint;
begin
readln(a);
writeln(a*4);
end.
Задача 6.
Составить программу для нахождения большего из двух чисел.
Var a,b:integer;
begin
readln(a,b);
if a>b then
writeln(a)
else
writeln(b);
end.
Задача 7.
Составить программу для нахождения меньшего из двух чисел.
procedure min (a,b: integer; var c: integer);
begin
c:=a*ord(a<=b)+b*ord(b<a);
end;
Задача 8.
Составить программу для нахождения количества решений уравнения ах2+bx+c=0.
TP:
var a, b, c, d, x1, x2: real;
begin
write('a = '); readln(a);
write('b = '); readln(b);
write('c = '); readln(c);
d:= b*b + 4*a*c;
if d=0 then
begin
x1:= b / (2 * a)
writeln (x1:3:3);
end
else
if d>0 then
begin
x1:= (- b + sqrt()) / (2 * a);
x2:= (- b - sqrt()) / (2 * a);
writeln (x1:3:3, ' ', x2:3:3);
end
else
writeln ('Нет решения');
end.
Задача 9.
Составить программу для вычисления произведения чисел от 1 до 10 с шагом 1.
program factorial;
var x1,fak:integer;
begin
fak:=1;
for x1:=1 to 10 do fak:=fak*x1;
writeln(fak);
end.
Задача 10.
Составить программу для вычисления суммы чисел от 1 до 100 с шагом 1.
program factorial;
var x1,fak:integer;
begin
fak:=1;
for x1:=1 to 100 do fak:=fak*x1;
writeln(fak);
end.
Задача 11.
Составить программу для вычисления среднего арифметического для чисел от 1 до 10.
Сделать выводы о проделанной работе.