Программирование линейных алгоритмов
Для изучения темы "Программирование линейных алгоритмов" скачайте презентацию с "Учительского портала" http://www.uchportal.ru/load/18-1-0-29477
Программы с линейной структурой состоят из операторов присваивания, ввода и вывода и особых проблем, как правило, не вызывают. На первом этапе идет отработка алгоритма:
ВВОД ИСХОДНЫХ ДАННЫХ ДЛЯ ВЫЧИСЛЕНИЯ =>ВЫЧИСЛЕНИЕ => ВЫВОД ПОЛУЧЕННЫХ ДАННЫХ НА ЭКРАН.
Задание А. Даны стороны прямоугольника a и b. Найти его площадь S=a*b и периметр P=(a+b)*2.
Program n1;
Uses Crt;
Var a,b,s,p:Real;
begin
ClrScr;
Write('ВВеди сторону А = '); Readln(a);
Write('ВВеди сторону B = '); Readln(b);
S:=a*b;
P:=2*(a+b);
Writeln(' S = ',S: 10: 5);
Writeln(' P = ',P: 10: 5);
end.
В этой задаче формулы для вычислений заданы. Требуется определить, что дано, что будет результатом и перевести формулу в строчную запись. В какой последовательности будут вычисляться площадь и периметр значения не имеет, так как формулы друг от друга не зависят. Еще необходимо доказать, что задача решена правильно. Для этого необходимо при определенных значениях вводимых данных произвести вычисления в ручную и сравнить с результатом, полученным при вычислении на компьютере.
Задание В. Составьте программу вычисления площади треугольника по формуле Герона
, где полупериметр вычисляется по формуле , если даны длины сторон треугольника.
Program n2;
Uses Crt;
Var a,b,c,s,p:Real;
begin
ClrScr;
Write('ВВеди сторону А = '); Readln(a);
Write('ВВеди сторону B = '); Readln(b);
Write('ВВеди сторону C = '); Readln(c);
P:=(a+b+c)/2;
S:=sqrt(p*(p-a)*(p-b)*(p-c));
Writeln(' S = ',S: 10: 5);
end.
В этой задаче формулы также указаны, хотя и более сложные. Здесь очень важно, определить последовательность действий при вычислении площади. В условии задачи сначала указывается формула для вычисления площади, а затем полупериметр, а в программе будет наоборот первоначально нужно вычислить полупериметр, а затем площадь, так как значение полупериметра входит в формулу вычисления площади. Эта тонкость очень важна для понимания как выполняется программа.
Задание С. Дано число а. Не используя никаких операций, кроме умножения, и никаких функций получите а8 за три операции и а10 за четыре операции.
Эта задача не содержит готовых формул для вычислений, их предлагается составить самому. Для решения этой задачи необходимо хорошо понимать, что такое переменная и операция присваивания. Ну и обладать элементарными математическими знаниями о работе со степенями.
Решать эти задачи можно лишь изучив досконально тему алгебры 7 класса "Степень с натуральным показателем". В учебнике Н.Ю.Макарычева это глава 3 параграф 7. Что нам потребуется для решения задач? Понимание что такое степень числа (собственно ее определение) и некоторые формулы. Напомню их:
1) an =a·a·a·...·a (n раз) 3) a n : a m = a n-m
2) a n · a m = a n + m 4) (a n)m = a n m
Составим математическую модель:
1) a2 = a · a
2)а4 = а2 · а2
3)a8 =a4 · a4 Итого три действия
4) а10 = а8 · а2 Итого четвертое действие. Все осталось это превратить в программу. Различные переменные будут хранить значение а в разных степенях
Program n3;
Uses Crt;
var a,c,b,d,m:integer;
Begin
ClrScr;
Write('ВВеди А = '); Readln(a);
c:=a*a;// вторая степень
b:=c*c;// четвертая степень
d:=b*b;// восьмая степень
writeln('А в 8 степени = ',d:8);
m:=d*c; // 10 степень
writeln('А в 10 степени = ',m:8);
end.
Задачи для самостоятельного решения:
1) Дано число А. Получить:
а6 за три операции
а7 за четыре операции
а9 за четыре операции
а13 за пять операций
а15 за пять операций
а21 за шесть операций
а28 за шесть операций
а64 за шесть операций
а3 и а10 за четыре операции
а4 и а20 за пять операций
а5 и а13 за пять операций
а5 и а19 за пять операций
а2, а5 и а 17 за шесть операций
а4, а12 и а28 за шесть операций