logo search
2012_METODICh_POSOBIE_PASCAL

Составление алгоритма и программы для решения задачи.

В процессе алгоритмизации программист должен разбить решение на несколько этапов, приводящих к получению искомого результата. Затем необходимо детализировать каждый этап, то есть получить инструкцию, состоящую из определенной последовательности действий, следующих в строгом порядке. Алгоритм записывают в виде блок-схемы.

Алгоритмом называется конечная последовательность строго определенных действий, которые на основании исходных данных приводят к однозначному решению задачи.

Алгоритмы бывают следующих видов:

Доказано, что этих трех основных структур в различных комбинациях достаточно для реализации решения задачи любой сложности.

Рассмотрим подробно составление алгоритма линейной структуры для решения следующей задачи.

Задача 2.

Задано трехзначное число. Найти разность (по абсолютной величине) между этим числом и числом, записанным теми же цифрами в обратном порядке.

Математическая формулировка задачи:

Чтобы получить число, записанным теми же цифрами в обратном порядке, нужно разбить исходное число на разряды, то есть получить цифры числа, а затем собрать число в обратном порядке, умножив каждую цифру на 100, 10, 1, и результаты сложив.

Пусть имеется некоторое трехзначное число х. Разложим его в виде суммы разрядных слагаемых:

Х=100*a+10*b+c где a, b, c цифры исходного числа х.

Тогда число, записанное теми же цифрами в обратном порядке, будет:

Y=100*c+10*b+a

Цифры трехзначного числа можно получить по формулам:

a=X div 100

b=(X-a*100) div 10

c= X-a*100-b*10

Таким образом, решение задачи может быть представлено следующими этапами:

Алгоритм решения задачи 2: Текст программы к задаче 2:

Program Ex_2;

Uses Crt;

Var

X: integer; { трехзначное число }

a, b, c: integer; { цифры числа }

Y: integer; { число в обратном порядке}

R: integer; { модуль разности }

Begin

ClrScr;

Writeln(‘Ведите трехзначное число ’);

Readln(x);

a:=X div 100;

b:=(X-a*100) div 10;

c:=X-a*100-b*10;

Y:=100*c+10*b+a;

R:=Abs(X-Y);

Writeln(‘Число в обратном порядке ’, );

Writeln(‘Модуль разности ’, R);

Readln;

End.