Составление алгоритма и программы для решения задачи.
В процессе алгоритмизации программист должен разбить решение на несколько этапов, приводящих к получению искомого результата. Затем необходимо детализировать каждый этап, то есть получить инструкцию, состоящую из определенной последовательности действий, следующих в строгом порядке. Алгоритм записывают в виде блок-схемы.
Алгоритмом называется конечная последовательность строго определенных действий, которые на основании исходных данных приводят к однозначному решению задачи.
Алгоритмы бывают следующих видов:
Линейной структуры
Разветвленной структуры
Циклической структуры
Доказано, что этих трех основных структур в различных комбинациях достаточно для реализации решения задачи любой сложности.
Рассмотрим подробно составление алгоритма линейной структуры для решения следующей задачи.
Задача 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.
- 230401 «Информационные системы»
- 230115 «Программирование в компьютерных системах»
- Лабораторная работа №1. Организация ввода-вывода информации
- Алфавит языка Turbo Pascal.
- Переменные и константы.
- Основные типы переменных.
- Структура программы.
- Оператор присваивания, операторы ввода с клавиатуры и вывода на экран.
- Процедуры управления выводом на экран.
- Компиляция и выполнение программы.
- Лабораторная работа №2. Арифметические выражения. Программирование алгоритмов линейной структуры.
- Арифметические выражения в языке Turbo Pascal.
- Стандартные арифметические функции.
- Генератор случайных чисел.
- Составление алгоритма и программы для решения задачи.
- Лабораторная работа № 3. Программирование алгоритмов разветвленной структуры. Оператор ветвления if … then … else
- Условный оператор if … then … else.
- Составной оператор.
- Лабораторная работа № 4. Программирование алгоритмов разветвленной структуры. Оператор ветвления case.
- Условный оператор Case.
- Лабораторная работа № 5. Программирование алгоритмов циклической структуры с известным числом повторений.
- Оператор циклаWhile.
- Оператор цикла repeat.
- Вложенные циклы
- Оператор перехода
- Лабораторная работа № 6. Обработка строк с использованием операторов цикла.
- Лабораторная работа № 7. Программирование алгоритмов циклической структуры с неизвестным числом повторений.
- Лабораторная работа № 8. Обработка одномерных числовых массивов.
- Лабораторная работа № 9. Обработка двумерных числовых массивов.
- Лабораторная работа № 10. Использование процедур и функций при обработке массивов.
- Лабораторная работа № 11. Тип запись. Массивы записей.
- Лабораторная работа № 12. Обработка информации из файлов последовательного доступа.
- Лабораторная работа № 13. Обработка информации из файлов прямого доступа.
- Лабораторная работа № 14. Модуль программиста. Многомодульный проект.
- Текст модуля программиста к задаче 14.