Применение рекурсии в алгоритмах с возвратом. Файловый тип. Ввод/вывод
Состав работы
|
|
|
|
Работа представляет собой zip архив с файлами (распаковать онлайн), которые открываются в программах:
- Microsoft Word
Описание
Есть широкий спектр алгоритмов когда вычисления идут не по фиксированным правилам, а методом проб и ошибок. Примером таких алгоритмов могут служить алгоритм игры чет-нечет; алгоритм поиска пути в лабиринте в задаче об Ариадне и Тезее. Теперь рассмотрим применение рекурсии для решения таких задач.
Применение рекурсии рассматривается на примере задачи обхода шахматной доски ходом коня. Наряду с демонстрацией применения рекурсии еще раз демонcтрируется пошаговая, структурная разработка программы.
procedure попытка следующего хода;
begin
repeat
if ход приемлем? then
begin
if доска не заполнена? then
begin
if неудача? then стирание предыдущего хода;
end
end
until (ход был удачным?) or (нет других возможных ходов)
end.
В итоге выписывается полный текст программы на Pascal.
program ChessHorse;
const Dim = 5;
PathLen = Dim*Dim;
var Field :Array[1..Dim,1..Dim] of integer; { h[x, y]=i => на клетку
(x, y) конь попал после i-того хода }
n :integer; { Текущая длина пути }
x, y :integer;
function TryMove (i, j :integer) :Boolean;
begin
if n>PathLen then TryMove := true { Путь найден }
else
begin
TryMove := false;
if (i>=1) AND (i<=Dim) AND (j>=1) AND (j<=Dim) AND (Field[i, j]=0) then
begin
Field[i, j] := n;
n := n+1;
if TryMove(i+1, j+2)=true then TryMove := true
else if TryMove(i+1, j-2)=true then TryMove := true
else if TryMove(i-1, j+2)=true then TryMove := true
else if TryMove(i-1, j-2)=true then TryMove := true
else if TryMove(i+2, j+1)=true then TryMove := true
else if TryMove(i+2, j-1)=true then TryMove := true
else if TryMove(i-2, j+1)=true then TryMove := true
else if TryMove(i-2, j-1)=true then TryMove := true;
Field[i, j] := 0;
n := n-1;
end;
end;
end;
Begin
for x:=1 to Dim do
for y:=1 to Dim do
Field[x, y]:=0;
WriteLn ('Поле ', Dim, 'x', Dim);
WriteLn ('Введите координаты коня.');
Write ('X='); ReadLn (x);
Write ('Y='); ReadLn (y);
if (x<1) OR (x>Dim) OR (y<1) OR (y>Dim) then
WriteLn ('Неправильный ответ. System halted...');
else
begin
n := 1;
WriteLn ('Поиск путей длины ', PathLen, ' ...');
case TryMove (x, y) of
true: WriteLn ('Нашел путь :-)');
false: WriteLn ('Нет путей :-(');
end;
end;
End.
Файловый тип. Ввод/вывод.
Все рассмотренные ранее типы данных обладали одним общим свойством - число их компонентов конечно и заранее фиксировано. Однако, существует достаточно широкий класс задач, когда количество компонент данных заранее не известно. Пример - задача кодирования текста поступающего на вход в реальном времени, ввод текста, длина которого заранее не известна и т.п.
В Pascal существует тип данных, множество элементов которого есть последовательности однотипных элементов, длина этих последовательностей не фиксируется заранее. Важной характеристикой этого типа, называемого файловым, является то, что доступ к его компонентам строго последовательный. Это означает, чтобы получить доступ к i-му компоненту, необходимо пройти i-1-ый.
Файловый тип - это единственный тип, обладающий тем свойством, что данные этого типа могут иметь время жизни более времени выполнения программы ! Поэтому этот тип часто используют, чтобы сохранить результаты работы программы для последующей обработки; либо ввести данные извне. Примеры файлового типа, с которыми мы уже много раз встречались много раз - input и output.
Применение рекурсии рассматривается на примере задачи обхода шахматной доски ходом коня. Наряду с демонстрацией применения рекурсии еще раз демонcтрируется пошаговая, структурная разработка программы.
procedure попытка следующего хода;
begin
repeat
if ход приемлем? then
begin
if доска не заполнена? then
begin
if неудача? then стирание предыдущего хода;
end
end
until (ход был удачным?) or (нет других возможных ходов)
end.
В итоге выписывается полный текст программы на Pascal.
program ChessHorse;
const Dim = 5;
PathLen = Dim*Dim;
var Field :Array[1..Dim,1..Dim] of integer; { h[x, y]=i => на клетку
(x, y) конь попал после i-того хода }
n :integer; { Текущая длина пути }
x, y :integer;
function TryMove (i, j :integer) :Boolean;
begin
if n>PathLen then TryMove := true { Путь найден }
else
begin
TryMove := false;
if (i>=1) AND (i<=Dim) AND (j>=1) AND (j<=Dim) AND (Field[i, j]=0) then
begin
Field[i, j] := n;
n := n+1;
if TryMove(i+1, j+2)=true then TryMove := true
else if TryMove(i+1, j-2)=true then TryMove := true
else if TryMove(i-1, j+2)=true then TryMove := true
else if TryMove(i-1, j-2)=true then TryMove := true
else if TryMove(i+2, j+1)=true then TryMove := true
else if TryMove(i+2, j-1)=true then TryMove := true
else if TryMove(i-2, j+1)=true then TryMove := true
else if TryMove(i-2, j-1)=true then TryMove := true;
Field[i, j] := 0;
n := n-1;
end;
end;
end;
Begin
for x:=1 to Dim do
for y:=1 to Dim do
Field[x, y]:=0;
WriteLn ('Поле ', Dim, 'x', Dim);
WriteLn ('Введите координаты коня.');
Write ('X='); ReadLn (x);
Write ('Y='); ReadLn (y);
if (x<1) OR (x>Dim) OR (y<1) OR (y>Dim) then
WriteLn ('Неправильный ответ. System halted...');
else
begin
n := 1;
WriteLn ('Поиск путей длины ', PathLen, ' ...');
case TryMove (x, y) of
true: WriteLn ('Нашел путь :-)');
false: WriteLn ('Нет путей :-(');
end;
end;
End.
Файловый тип. Ввод/вывод.
Все рассмотренные ранее типы данных обладали одним общим свойством - число их компонентов конечно и заранее фиксировано. Однако, существует достаточно широкий класс задач, когда количество компонент данных заранее не известно. Пример - задача кодирования текста поступающего на вход в реальном времени, ввод текста, длина которого заранее не известна и т.п.
В Pascal существует тип данных, множество элементов которого есть последовательности однотипных элементов, длина этих последовательностей не фиксируется заранее. Важной характеристикой этого типа, называемого файловым, является то, что доступ к его компонентам строго последовательный. Это означает, чтобы получить доступ к i-му компоненту, необходимо пройти i-1-ый.
Файловый тип - это единственный тип, обладающий тем свойством, что данные этого типа могут иметь время жизни более времени выполнения программы ! Поэтому этот тип часто используют, чтобы сохранить результаты работы программы для последующей обработки; либо ввести данные извне. Примеры файлового типа, с которыми мы уже много раз встречались много раз - input и output.
Похожие материалы
Ввод/вывод данных
Lokard
: 21 мая 2013
Функции преобразования строк
Ввод данных
Вывод строки
Вывод числовых данных
Логические переменные
Логические операции
Таблицы истинности
Условный оператор IF
Вычисление функции
IF THEN
Составной оператор
CASE OF
Циклические алгоритмы
FOR
Вычисление сумм и произведений
Вывод алфавита в обратном порядке
Поиск максимального положительного числа из Memo
Break, Continue
Безусловной переход
Поиск частного
Случайные числа
Символьный тип
Структурные типы данных
5 руб.
Управление вводом-выводом
OstVER
: 10 ноября 2012
Одной из главных функций ОС является управление всеми устройствами ввода-вывода компьютера. ОС должна передавать устройствам команды, перехватывать прерывания и обрабатывать ошибки; она также должна обеспечивать интерфейс между устройствами и остальной частью системы. В целях развития интерфейс должен быть одинаковым для всех типов устройств (независимость от устройств).
Физическая организация устройств ввода-вывода
Устройства ввода-вывода делятся на два типа: блок-ориентированные устройства и б
5 руб.
Средства ввода-вывода в Си++
Lokard
: 6 октября 2013
Введение. 2
Общие положения. 3
Потоковый ввод-вывод 9
Форматный ввод-вывод. 13
Форматный ввод из входного потока. 15
Литература 17
Введение.
В стандарте языка Си отсутствуют средства ввода-вывода. Все операции ввода-вывода реализуются с помощью функций, находящихся в библиотеке языка Си, поставляемой в составе конкретной системы программирования Си. Во время работы с файлами данные могут передаваться или в своем внутреннем двоичном представлении или в текстовом формате, то есть в бол
10 руб.
Ассемблер. ВВОД-ВЫВОД ЧИСЕЛ
a-cool-a
: 4 мая 2012
В процессе выполнения работы решается практически важная задача вывода чисел на экран и их ввода с клавиатуры. Данная задача решается в следующей последовательности. Во-первых, рассматривается вывод на экран двоичного числа в виде последовательности единиц и нулей. Во-вторых, решается задача вывода на экран шестнадцатеричных чисел. В-третьих, рассматривается ввод шестнадцатеричных чисел с клавиатуры.
В ходе работы производится знакомство с очень важными понятиями флагов состояния, стека и пр
100 руб.
Адресное пространство. Подсистемы ввода-вывода
alfFRED
: 3 октября 2013
Процессоры
Типы процессоров:
1. с регистрами общего назначения (РОН);
2. аккумуляторные;
3. стековые.
Процессоры с РОН
Любой регистр как операнд может участвовать в любой команде. Работа с операндами осуществляется только через регистры. Среди всех регистров выделяются два:
SP - указатель стека
PC - счетчик команд
Нет команд push и pop, всегда используется mov:
mov (SP)+,R0 вместо pop R0
mov R0,-(SP) вместо push R0
Вместо непосредстве
10 руб.
Организация ввода-вывода. Обработка массивов. Структурированные данные
Elfa254
: 8 октября 2013
СОДЕРЖАНИЕ
Введение
1. ОРГАНИЗАЦИЯ ВВОДА-ВЫВОДА
1.1 Процедуры ввода
1.2 Процедуры вывода
1.3 Бесформатный вывод
1.4 Форматный вывод
1.5 Описание одномерных массивов
1.6 Ввод – вывод одномерных массивов
1.7 Описание двумерных массивов
1.8 Ввод – вывод двумерных массивов
2. ОБРАБОТКА МАССИВОВ. СТРУКТУРИРОВАННЫЕ ДАННЫЕ
2.1 Строки. Описание строки
2.2 Операции над строками
2.3 Процедуры и функции обработки строк
2.4 Комбинированный тип данных - записи. Описание записей
2.4.1 Записи с
10 руб.
Лабораторная работа № 1 «Порты ввода/вывода» Вариант №3
antoniopim231111
: 27 февраля 2023
Цель работы: изучение простейших команд языка С, портов ввода/вывода и отладка прикладных программ для микроконтроллера AVR семейства MEGA с помощью персонального компьютера и программного пакета Atmel Studio.
800 руб.
Системы ввода и вывода данных
Aronitue9
: 12 мая 2012
Введение 3
Периферийные устройства ввода информации 3
Клавиатура 3
Манипуляторы 4
Мышь. 4
Джойстик 5
Трекбол. 5
Сенсорные устройства ввода 6
Световое перо. 6
Дигитайзер (графический планшет). 6
Сканеры 6
Цифровая видеокамера 7
Микрофон 8
Периферийные устройства вывода информации 8
Монитор 8
Принтеры 9
Плоттеры 10
Наушники или головные телефоны 10
Колонки, 10
Видеокамера 10
Заключение 11
Список использованной литературы 11
Персональный компьютер (ПК) – это не один электронный аппарат, а небольшой
20 руб.
Другие работы
Бизнес-план организации собственного дела по выращиванию и откорму телят
Elfa254
: 7 ноября 2013
Название проекта: Выращивание и откорм телят
Дата регистрации: декабрь 2010 г.
Организационно-правовая форма: Индивидуальный предприниматель
Адрес: х. Калинин, Савельевская, 6
Основной вид деятельности: Выращивание и откорм телят
Режим налогообложения: Единый сельскохозяйственный налог
Объект налогообложения: доходы, уменьшенные на величину расходов
Ставка налога: 6%
Общая стоимость проекта 75 100 руб.
из них: 58800 – средства в сумме 12-тикратного пособия по безработице
16300 – собств
10 руб.
Сущность аудиторской деятельности в России
Slolka
: 2 марта 2014
Содержание
Введение…………………………………………………………………………………...3
1 Основные характеристики развития аудита в России ………..….…………………..5
1.1 Правовое регулирование аудиторской деятельности …………..………..………..5
1.2 Федеральные правила (стандарты) аудиторской деятельности…………………..7
2 Понятие аудита, его цели, задачи и функции……………………………….………10
2.1 Понятие и цели аудита и аудиторской деятельности…………………………….10
2.2 Задачи и функции аудита и аудиторской деятельности.………………................13
2.3 Виды аудита…………………………
10 руб.
Проектирование котельной
1112
: 24 апреля 2009
Проектирование котельной
2 Основные вопросы сварки 2
3 Сварка. Понятие, сущность процесса 3
4 Классификация электрической дуговой сварки 4
5 Ручная дуговая сварка и оборудование для неё 6
6 Технология ручной дуговой сварки 7
7 Техника сварки 8
8 Сущность газовой сварки 11
9 Техника газовой сварки 11
10 Автоматическая дуговая сварка под флюсом 12
11 Электрошлаковая сварка и приплав 13
12 Сварка в среде защитных газов 14
13 Контактная сварка 14
14 Стыковая сварка 15
15 Точечная сварка 15
16 Шовн
Основы мультисервисных сетей (ДВ 6.2). Экзамен. Билет №75
SibGUTI2
: 8 декабря 2018
Билет №75
Оптические мультисервисные сети (ПК-1)
1 Что указывается на схеме организации связи проектируемой оптической мультисервисной транспортной сети?
2 Какие функции выполняет мукспондер в оптической сети связи ?
3 Для чего в составе оборудования оптической транспортной сети предусмотрены двойные интерфейсы пользователей и агрегатные интерфейсы?
Задача
Составить схему и обоснованно предложить технологию мультиплексирования для организации связи кольцевой оптической транспортной сети с
600 руб.