Учащиеся должны четко представлять, что такое алгоритм, что такое программа, как она исполняется компьютером, какие виды языков программирования существуют.
Алгоритм — это последовательность действий, выполнение которой в указанном порядке приводит к решению задачи независимо от воли исполнителя.
Алгоритм — это основа программы, исполнитель программы — компьютер. На стадии отладки программы в роли исполнителя часто выступает сам программист.
Алгоритм должен соответствовать следующим свойствам
- понятность — исполнитель должен знать как выполняются все используемые в алгоритме команды;
- дискретность — представление алгоритма в виде последовательности шагов;
- определенность — каждая команда алгоритма должна быть четкой и не оставлять исполнителю места для самостоятельных решений;
- результативность — алгоритм должен приводить к решению задачи за конечное число шагов;
- массовость — применимость алгоритма к некоторому множеству исходных данных;
- однозначность — при повторном исполнении алгоритма к тем же исходным набором данных, должен быть получен тот же результат.
Алгоритм может быть записан с помощью блок-схемы, текстовым предписанием, с помощью рисунков, таблично или на специальном алгоритмическом языке. Наиболее популярны блок-схемы и предписания. Преимущество блок-схем — в наглядности.
Как БЫСТРО изучить АЛГОРИТМЫ и научиться решать задачи? Книги, сайты, инструменты
Блок-схема обычно содержит записи внутри блоков, эти записи содержат необходимую информацию для выполнения очередных действий.
Методика разработки алгоритмов
Разработке алгоритма предшествуют такие этапы, как формализация и моделирование. Формализация предполагает замену словесной формулировки решаемой задачи краткими символьными обозначениями, близкими к обозначениям в языках программирования или к математическим. Моделирование задачи является важнейшим этапом, целью которого является поиск алгоритма решения. При разработке алгоритма основным является метод пошаговой детализации. Этот принцип предполагает первоначальную разработку алгоритма в виде укрупненных блоков (разбиение задачи на подзадачи) и их постепенную детализацию.
Алгоритм следует записывать аккуратно и разборчиво. Аккуратность записи есть аккуратность мысли программиста. Аккуратно записанный и детализированный алгоритм упрощает его программирование.
Программа — это описание алгоритма средствами языка программирования.
Исполнителем программы является компьютер. Программы создаются с помощью языков программирования, которые по синтаксису и семантике приближены к естественному человеческому языку. Это снижает трудоемкость программирования. Однако, текст программы, записанный с помощью языка программирования, должен быть преобразован в машинный код. Эта операция выполняется автоматически с помощью специальной служебной программы, называемой транслятором.
Трансляторы делятся на два типа: интерпретаторы и компиляторы.
Интерпретатор переводит в машинный код и выполняет очередной оператор (команду) программы. Если команда повторяется, то интерпретатор рассматривает ее как встреченную впервые.
Компилятор переводит в машинный код исходный текст программы целиком. Поэтому достоинство компиляторов — быстродействие и автономность получаемых программ. Достоинство интерпретаторов — их компактность, возможность остановить в любой момент выполнение программы, выполнить различные преобразования данных и продолжить работу программы.
Этапы решения задачи
Обобщим рассмотренные выше принципы разработки алгоритмов и выделим главные этапы решения задач.
- Постановка задачи. Основное требование к постановке задачи – достаточное количество информации для решения задачи. Очень часто постановка задачи выполняется не программистом, а некоторым Заказчиком. Программист является Исполнителем заказа. Он должен уметь добиться от Заказчика полной информации о решаемой задаче.
- Моделирование и формализация задачи. Цели этого этапа уже обсуждались выше в разделе методики разработки алгоритма. При моделировании важно иметь опыт программирования, знать возможности компьютера и языка программирования и выдвигать гипотезы с учетом этих возможностей. К разработке алгоритма следует приступать только после принятия гипотезы решения задачи.
- Программирование алгоритма. Программирование является формальной записью алгоритма средствами языка программирования.
- Тестирование программы. Тестирование выполняется путем вывода промежуточных результатов работы программы и сравнения их с контрольным примером. Для этого либо используют специальные средства отладки программ, имеющиеся в интегрированной среде языка программирования, либо временно добавляют в программу команды вывода промежуточных значений. Уменьшить трудоемкость поиска ошибок в программе можно более тщательным проектированием алгоритма и планированием процесса тестирования на ранних стадиях разработки программы.
- Эксплуатация программы и интерпретация результатов. В сложных программах может быть недостаточно тестирования для устранения всех ошибок. Очень часто они обнаруживаются на стадии эксплуатации Заказчиком.
Рассмотрим задачу с достаточно сложным алгоритмом решения для того, чтобы, во-первых, более ярко продемонстрировать этапы решения задачи, во-вторых, принцип поэтапной детализации алгоритма.
Постановка задачи. По кругу стоят m человек. Каждый из них имеет порядковый номер. Отсчет ведется по кругу в порядке следования номеров. Каждый n – й выходит из круга. Так продолжается до тех пор, пока не останется один человек.
Определите его порядковый номер.
Разработка алгоритма решения задачи
Изобразим укрупненный алгоритм решения поставленной задачи. На рисунке показаны основные шаги поэтапной детализации основного алгоритма.
Первый и последний элементы никаких трудностей не представляют. Второй и четвертый тоже. Достаточно решить, откуда брать исходные данные (с клавиатуры или из файла) и куда выводить результаты (на экран или в файл).
Но третий блок требует детальной проработки. Необходимо решить главную проблему: как этот отсчет организовать?
После долгих поисков возникла идея использования двух вспомогательных файлов, в которых будут храниться промежуточные состояния отсчета. Один из этих файлов будет хранить текущее состояние расстановки, а в другом будет формироваться ее следующее состояние. В программе эти файлы связаны с файловыми переменными h и l. Этот процесс можно описать словесно:
- В файл h записать m единиц, которые будут символизировать m человек;
- Считывая элементы файла h, перепишем их в файл l, но если этот элемент оказывается n-м, то вместо него запишем нуль, который будет символизировать выход человека из круга;
- Увеличим значение счетчика замен 1;
- По достижении конца файла h, закроем его и вновь откроем для записи.
- Перепишем в него файл l (разумеется, технично решив все вопросы с закрытием и открытием его, когда это необходимо);
- Опять закроем и снова откроем файл h, но уже для чтения и продолжим процесс с пункта 2;
- Повторяить до тех пор, пока не случится (m-1) замена 1 на 0.
Разработанный алгоритм желательно проверить в “ручном режиме” хотя бы для одного частного случая. Предположим, что по кругу стоят 5 человек и из круга выходить каждый третий. Продемонстрируем процесс решения с помощью таблицы состояния файлов h и l после выполнения пунктов 2 — 7:
Запомним, что при таких исходных данных последним из круга выйдет участник под № 4. Это нам пригодится при тестировании программы.
Теперь остается техническая сторона решения задачи. То есть, требуется написать программу.
Приведем текст программы с пояснениями
Описание переменных: f – входной файл, g – выходной файл, файлы h и l – вспомогательные. Остальные переменные необходимы для организации считывания, подсчета и сравнения.
Перед испытанием программы ее следует сохранить (на всякий случай). В рабочей папке надо создать входящий файл с именем in.txt. Исходящий файл out.txt создавать не обязательно. Он будет создан в процессе исполнения программы.
Чтобы убедиться в том, что программа работает правильно, ее следует хорошенько “погонять”. Для ускорения процесса лучше создать компилированный файл программы.
Вы уже знаете о суперспособностях современного учителя?
![]()
Тратить минимум сил на подготовку и проведение уроков.
![]()
Быстро и объективно проверять знания учащихся.
![]()
Сделать изучение нового материала максимально понятным.
![]()
Избавить себя от подбора заданий и их проверки после уроков.
![]()
Наладить дисциплину на своих уроках.
![]()
Получить возможность работать творчески.
Просмотр содержимого документа
«Решение задач программированияя »
Методы решения задач программирования
Учащиеся должны четко представлять, что такое алгоритм, что такое программа, как она исполняется компьютером, какие виды языков программирования существуют.
Алгоритм — это последовательность действий, выполнение которой в указанном порядке приводит к решению задачи независимо от воли исполнителя.
Алгоритм — это основа программы, исполнитель программы — компьютер. На стадии отладки программы в роли исполнителя часто выступает сам программист.
Алгоритм должен соответствовать следующим свойствам
- понятность — исполнитель должен знать как выполняются все используемые в алгоритме команды;
- дискретность — представление алгоритма в виде последовательности шагов;
- определенность — каждая команда алгоритма должна быть четкой и не оставлять исполнителю места для самостоятельных решений;
- результативность — алгоритм должен приводить к решению задачи за конечное число шагов;
- массовость — применимость алгоритма к некоторому множеству исходных данных;
- однозначность — при повторном исполнении алгоритма к тем же исходным набором данных, должен быть получен тот же результат.

Помимо идеи решения задачи, результатами этого этапа должны быть формализованная постановка задачи типа «дано-найти» и достаточное количество контрольных примеров для последующего тестирования программы. К категории «Дано:» обычно относятся данные, вводимые в начале работы программы и обеспечивающие массовость алгоритма. К категории «Найти:» относятся данные, получаемые в результате работы программы.
- Программирование алгоритма. Программирование является формальной записью алгоритма средствами языка программирования.
- Тестирование программы. Тестирование выполняется путем вывода промежуточных результатов работы программы и сравнения их с контрольным примером. Для этого либо используют специальные средства отладки программ, имеющиеся в интегрированной среде языка программирования, либо временно добавляют в программу команды вывода промежуточных значений. Уменьшить трудоемкость поиска ошибок в программе можно более тщательным проектированием алгоритма и планированием процесса тестирования на ранних стадиях разработки программы.
- Эксплуатация программы и интерпретация результатов. В сложных программах может быть недостаточно тестирования для устранения всех ошибок. Очень часто они обнаруживаются на стадии эксплуатации Заказчиком.
Рассмотрим задачу с достаточно сложным алгоритмом решения для того, чтобы, во-первых, более ярко продемонстрировать этапы решения задачи, во-вторых, принцип поэтапной детализации алгоритма. Постановка задачи. По кругу стоят m человек. Каждый из них имеет порядковый номер. Отсчет ведется по кругу в порядке следования номеров. Каждый n – й выходит из круга. Так продолжается до тех пор, пока не останется один человек. Определите его порядковый номер. Разработка алгоритма решения задачи Изобразим укрупненный алгоритм решения поставленной задачи. На рисунке показаны основные шаги поэтапной детализации основного алгоритма.
Первый и последний элементы никаких трудностей не представляют. Второй и четвертый тоже. Достаточно решить откуда брать исходные данные (с клавиатуры или из файла) и куда выводить результаты (на экран или, опять же в файл). Но третий блок требует детальной проработки. И прежде всего, возникает самый главный вопрос: как этот отсчет организовать?
После долгих поисков возникла идея использования двух вспомогательных файлов, в которых будут храниться промежуточные состояния отсчета. Один из этих файлов будет хранить текущее состояние расстановки, а в другом будет формироваться ее следующее состояние. Назовем эти файлы условно h и l. Этот процесс можно описать словесно:
- В файл h записать m единиц, которые будут символизировать m человек;
- Считывая элементы файла h, перепишем их в файл l, но если этот элемент оказывается n-м, то вместо него запишем нуль, который будет символизировать выход человека из круга;
- Увеличим значение счетчика замен 1;
- По достижении конца файла h, закроем его и вновь откроем для записи.
- Перепишем в него файл l (разумеется, технично решив все вопросы с закрытием и открытием его, когда это необходимо);
- Опять закроем и снова откроем файл h, но уже для чтения и продолжим процесс с пункта 2;
- Этот процесс следует продолжать до тех пор, пока не случится (m-1) замена 1 на 0;
Запомним, что при таких исходных данных последним из круга выйдет участник под № 4. Это нам пригодится при тестировании программы. Теперь остается техническая сторона решения задачи. То есть, требуется написать программу.

Приведем текст программы с пояснениями program krug; var f,g,h,l:text; d,i,j,k,p:integer; m:char;
begin
assign(f,’in.txt’);assign(g,’out.txt’); assign(h,’n1.txt’);assign(l,’n2.txt’); reset(f);read(f,k,p);rewrite(h); for j:=1 to k do write(h,1); close(h);close(f); reset(h);rewrite(l); while d begin while not eof(h) do begin read(h,m);
if m=’1′ then j:=j+1; if j=p then begin write(l,’0′);j:=0;d:=d+1; end else write(l,m); end; close(h);close(l);
reset(l);rewrite(h); for i:=1 to k do begin read(l,m);write(h,m);end; close(h);close(l);reset(h);rewrite(l); end; erase(l);close(h); reset(h);j:=0;rewrite(g); while m=’0′ do 
Перед испытанием программы ее следует сохранить (на всякий непредвиденный случай). В рабочей папке надо создать входящий файл с именем in.txt. Исходящий файл out.txt создавать не обязательно. Он будет создан в процессе исполнения программы.
Чтобы убедиться в том, что программа работает правильно ее следует хорошенько “погонять”. Для ускорения процесса лучше создать компилированный файл программы.
Источник: kopilkaurokov.ru
Разработка алгоритма решения задачи
Вся работа с программой сводится к работе с главной формой и соответствует функциональному назначению программного средства.
· Создание модуля стартовой заставки;
Заставка запускается одновременно с главной формой, по истечении времени отображения (4 секунды) или при нажатии на неё кнопкой мыши скрывается. Возможно также перейти к работе с главной формой, кликнув на её рабочей области.
· Создание модуля информации о программе;
· Создание процедур, требуемых для взаимодействия модулей;
Все созданные процедуры осуществляют работу с базой данных в соответствии с требованиями к программному средству.
3.3 Реализация функционального назначения программного средства
При запуске программного средства «Библиотека» вывод на дисплей монитора главной формы происходит параллельно с выводом стартовой формы, содержащей краткие сведения о названии информационной системы, фамилию и инициалы автора.
На главной форме отображаются элементы, позволяющие просматривать записи БД, производить выборку из БД по указанному признаку, редактировать записи БД, получать дополнительные сведения по выбранной записи, сведения о программе.
При нажатии на кнопку «Выборка» или выборе соответствующего пункта меню становится видимым блок выборки из БД и невидимой — кнопка «Выборка». В этом блоке отображаются элементы, позволяющие при выборе первой буквы и нажатии на соответствующую кнопку выполнить выборку из БД по автору или заглавию издания. Также при вводе фрагмента заглавия издания, сведений, относящихся к заглавию, области литературы, жанра в поле ввода и нажатии на кнопку «По фрагменту» — произвести выборку записей, содержащих этот фрагмент. При нажатии на кнопку «Готово» блок выборки скрывается, становится видимой кнопка «Выборка».
При нажатии на кнопку «Редактирование БД» или выборе соответствующего пункта меню становится видимым блок редактирования БД, невидимой — кнопка «Редактирование БД» и включается кнопка «Библиотека». В этом блоке отображаются элементы, позволяющие добавлять, редактировать удалять записи БД. Управление БД производится с помощью навигатора. Поля «УДК», «Автор» и «Заглавие» являются обязательными к заполнению при добавлении записи. При нажатии на кнопку «Готово» блок редактирования скрывается, становится видимой кнопка «Редактирование БД», кнопка «Библиотека» выключается.
При нажатии на кнопку «Библиотека» или выборе соответствующего пункта меню в блоке «Редактирование БД» становится видимым блок управления библиотекой, кнопка «Библиотека» становится невидимой. В этом блоке отображается элемент, позволяющий обозначить факт выдачи/возврата выбранного издания в фонд библиотеки. При нажатии на кнопку «Готово» блок скрывается, становится видимой кнопка «Библиотека».
При нажатии на кнопку «Дополнительно» или выборе соответствующего пункта меню становится видимым блок «Дополнительная информация об издании», кнопка «Дополнительно» становится невидимой. В этом блоке отображаются все имеющиеся в БД сведения для выбранного издания.
При просмотре записей таблиц БД используются как навигаторы этих таблиц, так и навигатор в блоке редактирования БД.
При выборе меню «О программе» запускается форма «О программе», содержащая название программы, сведения о разработчике и руководителе разработки. При нажатии кнопки «ОК» форма закрывается.
При нажатии на кнопку «Выход» или выборе соответствующего пункта меню происходит выход из программы.
Схема работы программы «Библиотека»

3.4 Разработка интерфейса ПС
Интерфейс определяет набор функций и процедур, которые могут быть использованы для взаимодействия программы с объектом.
В данной разработке создан процедурно-ориентированный интерфейс со свободной навигацией, с меню на главной форме. Пользовательский интерфейс представляет средство взаимодействия пользователя с программой. При разработке пользовательского интерфейса следует учитывать потребности, опыт и способности пользователя. В силу большого разнообразия пользователей и видов программных средств существует множество различных стилей пользовательских интерфейсов, при разработке которых могут использоваться разные принципы и подходы. Основные принципы:
· пользовательский интерфейс должен базироваться на терминах и понятиях, знакомых пользователю;
· пользовательский интерфейс должен быть единообразным;
· пользовательский интерфейс должен позволять пользователю исправлять собственные ошибки.
4.1 Выбор среды разработки
Delphi – это объектно-ориентированная среда для визуального проектирования Windows-приложений с развитыми механизмами повторного использования программного кода.
Существенной чертой Delphi является компонентная модель разработки программных продуктов. Суть модели заключается в поддержке системой постоянно расширяемого набора объектных компонентов, из которых и строится программа. Компоненты в Delphi просты для использования и развития, как результат сокрытия значительной части той структуры программы, которая близка к взаимодействию с операционной системой.
Для создания в Delphi несложных программных продуктов совершенно необязательно понимать внутреннюю структуру Windows-приложения, получаемого после разработки в Delphi. Достаточно просто уметь работать с некоторыми компонентами, поставляемыми вместе со средой разработчика. При этом начать работу со средой можно практически без предварительного ознакомления, а написание первого приложения не потребует углубления в особенности системы. Этому отчасти способствует удобный интерфейс среды разработчика, не перегруженный излишними вопросами к разработчику.
Программирование в Delphi состоит из двух основных этапов:
1. Визуальное построение программы на основе объектных компонентов и настройка их свойств, в результате чего можно быстро сформировать пользовательский интерфейс и обеспечить значительную долю функциональности приложения.
2. Написание программного кода на языке Object Pascal для обеспечения особой функциональности приложения, которую невозможно достичь использованием визуального построения.
4.2 Характеристика языка программирования
Object Pascal — полностью объектно-ориентированный диалект языка Pascal, разработанный фирмой Borland. Начиная с Delphi 7 фирма Borland начала официально называть свой язык Delphi. Однако Object Pascal поддерживается и развивается другими разработчиками. Наиболее серьёзные реализации Object Pascal, кроме Delphi — это TMT Pascal, Virtual Pascal и Free Pascal.
Многие современные языки специально созданы для облегчения объектно-ориентированного программирования. Однако следует отметить, что можно применять техники ООП и для не-объектно-ориентированного языка и наоборот, применение объектно-ориентированного языка вовсе не означает, что код автоматически становится объектно-ориентированным.
Современный объектно-ориентированный язык предлагает, как правило, следующий обязательный набор синтаксических средств:
· Объявление классов с полями (данными — членами класса) и методами (функциями — членами класса).
· Механизм расширения класса (наследования) — порождение нового класса от существующего с автоматическим включением всех особенностей реализации класса-предка в состав класса-потомка. Большинство ООП-языков поддерживают только единичное наследование.
· Средства защиты внутренней структуры классов от несанкционированного использования извне. Обычно это модификаторы доступа к полям и методам, типа public, private, обычно также protected, иногда некоторые другие.
· Полиморфные переменные и параметры функций (методов), позволяющие присваивать одной и той же переменной экземпляры различных классов.
· Полиморфное поведение экземпляров классов за счёт использования виртуальных методов. В некоторых ООП-языках все методы классов являются виртуальными.
Видимо, минимальным традиционным объектно-ориентированным языком можно считать язык Оберон, который не содержит никаких других объектных средств, кроме вышеперечисленных (в исходном Обероне даже нет отдельного ключевого слова для объявления класса, а также отсутствуют явно описываемые методы, их заменяют поля процедурного типа). Но большинство языков добавляют к указанному минимальному набору те или иные дополнительные средства. В их числе:
· Конструкторы, деструкторы, финализаторы.
· Интерфейсы — как альтернатива множественному наследованию.
· Переопределение операторов для классов.
Часть языков (иногда называемых «чисто объектными») целиком построена вокруг объектных средств — в них любые данные (возможно, за небольшим числом исключений в виде встроенных скалярных типов данных) являются объектами, любой код — методом какого-либо класса и невозможно написать программу, в которой не использовались бы объекты. Примеры подобных языков — Java или Ruby. Другие языки (иногда используется термин «гибридные») включают ООП-подсистему в исходно процедурный язык. В них существует возможность программировать, не обращаясь к объектным средствам. Классические примеры — C++ и Delphi Pascal.
Источник: kazedu.com
Разработка алгоритма и программы решения технических задач
Целью данной работы является закрепление, углубление и обобщение знаний, полученных во время обучения, и выработка умений самостоятельно применять эти знания для решения конкретных технических задач.
Основной задачей этой работы является овладение практической методикой самостоятельной подготовки и решения задач на персональном компьютере (ПК), расширение и углубление знаний в области алгоритмизации, применения языков программирования высокого уровня, развитие практических навыков владения ПК и пакетами прикладных программ (ППП).
В ходе выполнения курсовой работы был проведен анализ поставленных задач, выбран метод, разработан алгоритм и составлена программа решения задачи на языке программирования turbo Pascal, программа была протестирована для различных вариантов исходных данных.
Интегрированная инструментальная система Turbo Pascal предназначена для создания, редактирования и выполнения программ. Она представляет собой инструментальную программную оболочку, объединяющую основные компоненты системы программирования: текстовый редактор, компилятор, компоновщик, загрузчик, отладчик, файловую систему, системную библиотеку, справочную систему. Возможность управления всеми компонентами системы программирования из интегрированной среды значительно облегчает процесс создания программ и повышает эффективность работы.
1. Вычисление суммы ряда
1.1. Постановка задачи
Вычислить сумму бесконечно сходящегося ряда
при с точностью е=0,0001.
1.2. Описание метода решения задачи
Особенностью решения данной задачи является то, что число суммируемых членов ряда заранее является неизвестным. Условием окончания цикла по накоплению суммы является достижение заданной точности е. Значение текущего члена ряда зависит от параметра х и от порядкового номера n. Если член ряда по абсолютной величине становится меньше заданной точности е, то производится выход из цикла.
Для вычисления общего члена ряда целесообразно каждый член ряда представить в виде двух сомножителей:
Значение сомножителя B вычисляем, подставляя нужное значение n.
Сомножитель Н будем вычислять по рекуррентной формуле. Для получения рекуррентной формулы необходимо вычислить отношение текущего члена ряда к предыдущему:
3 стр., 1250 слов
Принципы разработки алгоритмов и программ для решения прикладных задач
. подлежащая решению задача разбивается на ряд подзадач, подчиненных по своему содержанию главной задаче. Такое . работ. Моделирование, вычисления, программирование на С/С++ и МАТLAB, виртуализация, образцы лучших студенческих курсовых работ: . достижением структурного подхода к разработке алгоритмов является нисходящее проектирование программ, . было сохранение совместимости с C. Тем не менее, C++ не .
где H справа от знака «=» – предыдущее значение Н,
Н слева от знака «=» – текущее значение.
При накоплении произведения начальное значение .
1.3. Блок-схема алгоритма решения задачи
При составлении блок-схемы мы использовали основные блоки и базовые алгоритмические конструкции. Блок-схема вычисления суммы ряда представлена на рис. 1.
Рис. 1. Блок-схема вычисления суммы ряда
1.4. Характеристика данных и их условные обозначения
Характеристики данных и их условные обозначения, используемые для решения задачи, приведены в табл. 1.
Физический смысл переменной
Ограничения на исходные данные
Источник: inzhpro.ru