Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Методика создания программ

Тип Реферат
Предмет Информатика и программирование
Просмотров
935
Размер файла
23 б
Поделиться

Ознакомительный фрагмент работы:

Методика создания программ

.

Здесь мы рассмотрим один из наиболее важных вопросов: как создавать программу?

До сих пор мы имели дело с относительно небольшими программами для решения несложных алгоритмических проблем. Мы познакомились с важностью и ролью спецификации программы, ясностью формулировки основных шагов алгоритма при обработке данных, трансляцией этих шагов в эффективные последовательности операторов программы на языке Pascal, комментировании программы, проверки ее правильности. Мы убедились, что проверять правильность программы надо, даже тогда, когда корректность использованного алгоритма была доказана. Причем, заметим, что внутренняя организация всех программ, которые мы написали до сих пор, может быть представлена в a’lePascal форме как на рис. 13.1.

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

Текст программы для решения большой проблемы занимает много больше места, чем одна страница.

Создание таких программ путем написания Pascal программы “с листа”практически невозможно.

Как правило, эта разработка предполагает систематический подход:

описание проблемы;

разработка алгоритма;

написание программы.

Созданная программа должна быть читабельной, эффективной и корректной.

Program Exmpl.

{{Q} Exmpl {R}}

{Описание используемых пременных в пред и пост условиях}

begin

{Ввод исходных данных}

{Проверка выполнения предусловия,

т.е. корректности исходных данных}

if {Данные корректны} then

{Q}

begin {Обработка данных}

{R}

{Вывод}

end

else {Сообщение об ошибке ввода}

end

Рис. 13.1. Типичная внутренняя организация программы.

Создание программы - это систематический процесс, состоящий из определённых этапов. В результате этого процесса мы получаем программу. Поскольку мы хотим получать программу

ясную для понимания, т.е. читабельную;

эффективную, т.е. экономно расходующую ресурсы исполнителя и выполняемую им быстро;

правильную, т.е. не содержащую ошибок;

то не любой процесс создания программы нам подходит.

Нам нужна методика создания ясных, правильных, эффективных программ.

Ясность означает, что любой, кто знаком с языком Pascal и прикладной областью, поймет алгоритм, читая текст программы, комментарии и спецификацию проблемы.

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

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

Под методикой создания какого-либо продукта мы будем понимать чётко определённую последовательность этапов, выполнив которую, мы получим желаемый продукт с нужными характеристиками.

Давайте напишем небольшую программу, сосредоточив теперь наше внимание именно на процессе её создания. Пусть к нам обратились с просьбой написать программу на Pascal, которая размещает компоненты вектора в возрастающем порядке. Пусть после общения с заказчиком нам удалось выяснить, что:

компонентами вектора могут быть только натуральные числа;

компонентов всегда 100;

все компоненты попарно различны.

Мы уже специфицировали исходные данные для этой задачи в лекции 7. Там исходные данные мы специфицировали так:

Q1 = "i : 1 £i £ 100 :viÎN Ù vi>0.

Теперь надо выразить тот факт, что все компоненты различны:

Q2 = "i : 1 £i £ 100 : Ø$j : 1 £ j £ 100 : vi = vj Ù i¹j.

Отсюда спецификация исходных данных выглядит так:

Q=Q1ÙQ2="i : 1 £i £ 100 : (viÎN Ù vi>0)ÙØ$j : 1 £ j £ 100 : vi = vj Ù i¹j .

Спецификация множества возможных результатов там была записана в следующей форме:

"i : 1 £i < 100 :(oiÎN Ù oi>0 Ù o100ÎN Ù o100>0 Ù oi<oi+1

"i : 1 £i £ 100 : $k : 1 £ k £ 100 : vi =ok .

Основные шаги нашего алгоритма представлены на рис. 13.1. Нам надо лишь детализировать шаг “Обработка данных”. Для упорядочения компонентов вектора по возрастанию мы воспользуемся известным алгоритмом сортировки, называемым линейный выбор.

Суть этого алгоритма состоит в том, что в цикле по числу компонентов вектора

выбираем наименьший;

размещаем его в первом свободном компоненте результирующего вектора;

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

Так мы действуем до тех пор, пока не заполним все компоненты вектора - результата. Это алгоритм правильно упорядочивает компоненты исходного вектора. Доказательство его корректности можно посмотреть в книге Г. Ларина “Сортировка и системы сосртировки” Наука 1984 г.

Мы адаптируем этот алгоритм применительно к нашим условиям, а именно:

числу компонентов в рассматриваемых векторах;

типам компонентов наших векторов;

именам наших переменных;

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

На рис. 13.2 представлена заготовка для программы, где прописан ввод исходных данных. После цикла единственное, что мы можем утверждать - это то, что все компоненты введённого вектора - целые числа. Поэтому, мы указываем после end спецификацию "i: 1 £i £ 100: viÎN .

Теперь, после ввода нам надо убедиться, что все они различны и больше нуля. Эта проверка исходных данных представлена на
рис. 13.3. Там, если условие errngtv=0Ùerreqvl=0 выполнено, мы можем утверждать, что состояние вычислительного процесса удовлетворяет условию Q. При этом вектор из 100 компонентов мы трактуем как 100 разных простых переменных.

Program Exmpl 10.X *) (input, output);

{ Программа Exmpl 10.X

Input:

Q "i: 1 £i £ 100: (viÎNÙvi>0)ÙØ$j: 1 £ j £ 100: vi = vj Ù i¹j .

Output:

R "i: 1 £i £ 100: оiÎN Ùоi>0 Ù$j : 1 £ j £ 100 : оi= vj Ù

"k : 1 £ k £ 100 : îkk+1

}

constM=100 ; {M - число компонентов в векторе}

var v : array [1 … M] of integer ;

0 : array [1 … M] of integer ;

t, i, errngtv, erreqvl : integer ; {errngtv, erreqvl - признакиошибоквисходныхданных;

t - вспомогательная переменная;

i - индекс цикла}

begin

{Ввод исходных данных}

for i:=1 to M do

beginwrite (‘Введите‘, i ,’-ую_компоненту =’);

readln (v[i])

end {"i: 1 £i £ 100: viÎN }

{Проверка исходных данных}

if {Данные корректны} then {Обработка данных};

end {Program}.

Рис. 13.2.

{Проверка исходных данных}

Q : 1. "i: 1 £ i £ 100 : v [i]ÎNÙ v [i]>0 ;

"i: 1 £ i £ 100 : Ø$j: 1 £ j £ 5: v[i] = v[j] Ù i¹j .

{Проверкаусловия Q1: "i: 1 £ i £ 100 : v[i]ÎNÙ v[i]>0}

errngtv:=0 ; for i:=1 to 100 do if v[i]<=0 then

begin errngtv:=i ;

writeln (i,‘-я компонента не

натуральное число’)

end

{Проверка условия Q2: "i: 1 £i£ 100 : Ø$j: 1 £j£ 100: v[i] = v[j] Ùi¹j}

erreqvl:=0 ; for i:=1 to 4 do

for j:=i+1 to M do if v[i]=v[j]

then begin erreqvl:=1;

writeln(‘Все компоненты исходного

вектора должны быть попарно

различны. В заданных

исходных данных _’, i,‘-я_

и_’, j,‘-я_компонента равны’)

end {for j; for i}

if errngtv =0 Ù erreqvl:=0 then {Q}

{Обработка исходных данных} {R}

Рис. 13.3. Фрагмент программы “Проверка исходных данных”.

{Данные корректны} Обработка исходных данных.

i:=1 ;

whilei <= Mdo {Цикл заполнения вектора-результата}

{P1: "i: 1 £i £ 100: "k : 1 £ k £ i : о[k]<о[k+1]}

begin

о[i] :=maxint ;

forj:=1 toMdo {Поиск очередного наименьшего

компонента в исходном массиве}

begin {P2: "j: 1 £ j < i: "k : 1 £ k £100: î[j]< v[k]

Ú v[k]=-1}

if (î[i]>v[j]) and (v[j]< >-1) then

begin î[i]:=v[j];

t:=j

end

end {for};

{î[i]=v[t] Ù P1[t]¹-1 Ù P2}

v[t]:=-1; {Заменяем в исходном массиве наименьший

компонент на -1, чтобы больше его не выбирать}

i:=i+1 ; {Переход к очередному свободному компоненту

вектора-результата}

end {while}

Рис. 13.4. Фрагмент программы “Обработка исходных данных”.

На рис. 13.4 представлена основная часть нашей программы - обработка данных. Она состоит из двух вложенных циклов. В цикле while мы последовательно заполняем компоненты вектора о. В цикле for мы выбираем наименьший компонент в исходном массиве v, размещаемего в массиве о, а найденный наименьший в массиве v “забиваем” -1, чтобы исключить из рассмотрения при последующих итерациях цикла while.

В качестве комментария к этим циклам мы указали их инварианты. Инвариант цикла for утверждает, что на любой итерации компоненты массива v либо больше уже заполненных компонентов массива о, либо = -1.

Условие

{о[i]=v[t] Ùv[t] ¹ -1ÙP2} ,

указанное после цикла for гарантирует нам что массив о в итоге будет содержать только компоненты массива v, т.е. будет его перестановкой. Инвариант цикла while утверждает, что на всех итерациях заполненная часть массива о упорядочена по возрастанию. Это гарантирует нам выполнение постусловия программы по окончании цикла while.

Детальное рассмотрение правильности мы пока отложим. Заметим лишь, что мы можем воспользоваться методом “компьютера с кнопкой”, который мы уже использовали в лекции 11-12.

Итак, подведём итог. Только что проделанный процесс можно разбить на следующие этапы:

Формирование и осознание проблемы. Назовём этот этап постановкой задачи.

Спецификация программы.

Разбиение проблемы на подпроблемы, до тех пор пока не подберём существующий алгоритм, либо не сможем “сходу” выписать свой.

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

Запись на языке Pascal программы со спецификациями промежуточных состояний.

Проверка правильности.

Оформление программы.


*) Заметим, что Exmpl 10.X не удовлетворяет определению имени в языке Pascal, т.к. здесь используется пробел и точка, которые не являются ни буквой, ни цифрой. Однако, в целях наглядности мы будем использовать такой способ именования примеров.


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Филиал государственного бюджетного образовательного учреждения высшего образования Московской област
Спасибо Елизавете за оперативность. Так как это было важно для нас! Замечаний особых не бы...
star star star star star
РУТ
Огромное спасибо за уважительное отношение к заказчикам, быстроту и качество работы
star star star star star
ТГПУ
спасибо за помощь, работа сделана в срок и без замечаний, в полном объеме!
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

решить 6 практических

Решение задач, Спортивные сооружения

Срок сдачи к 17 дек.

только что

Задание в microsoft project

Лабораторная, Программирование

Срок сдачи к 14 дек.

только что

Решить две задачи №13 и №23

Решение задач, Теоретические основы электротехники

Срок сдачи к 15 дек.

только что

Решить 4задачи

Решение задач, Прикладная механика

Срок сдачи к 31 дек.

только что

Выполнить 2 задачи

Контрольная, Конституционное право

Срок сдачи к 12 дек.

2 минуты назад

6 заданий

Контрольная, Ветеринарная вирусология и иммунология

Срок сдачи к 6 дек.

4 минуты назад

Требуется разобрать ст. 135 Налогового кодекса по составу напогового...

Решение задач, Налоговое право

Срок сдачи к 5 дек.

4 минуты назад

ТЭД, теории кислот и оснований

Решение задач, Химия

Срок сдачи к 5 дек.

5 минут назад

Решить задание в эксель

Решение задач, Эконометрика

Срок сдачи к 6 дек.

5 минут назад

Нужно проходить тесты на сайте

Тест дистанционно, Детская психология

Срок сдачи к 31 янв.

6 минут назад

Решить 7 лабораторных

Решение задач, визуализация данных в экономике

Срок сдачи к 6 дек.

7 минут назад

Вариационные ряды

Другое, Статистика

Срок сдачи к 9 дек.

8 минут назад

Школьный кабинет химии и его роль в химико-образовательном процессе

Курсовая, Методика преподавания химии

Срок сдачи к 26 дек.

8 минут назад

Вариант 9

Решение задач, Теоретическая механика

Срок сдачи к 7 дек.

8 минут назад

9 задач по тех меху ,к 16:20

Решение задач, Техническая механика

Срок сдачи к 5 дек.

9 минут назад
9 минут назад
10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно