Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Алгоритмизация как обязательный этап разработки программы (Основные алгоритмические конструкции. Понятие компьютерной программы)

Содержание:

Введение

В современном мире понятие «алгоритм» имеет огромное значение во многих научных и хозяйственных отраслях. Сейчас уже трудно представить себе человека и уж тем более специалиста не знакомого с этим словом. С развитием информационных технологий и все большего их внедрение в повседневную жизнь алгоритмы только укрепляют свою значимость.

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

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

Теория алгоритмов оказывает непосредственное влияние на

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

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

Глава 1. Алгоритмизация и алгоритмы

1.1 Понятие алгоритмизации и алгоритмов

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

Разработка алгоритма является наиболее важной ступенью в процессе программирования. Это один из наиболее сложных этапов решения задачи с использованием ЭВМ.

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

Термин «алгоритм» - транскрипция имени великого узбекского математика Мухаммеда аль-Хорезми (Мухаммеда из Хорезма, область в нынешней республике Узбекистан). Мухаммед аль-Хорезми еще в IX веке разработал правила вычета четырех действий арифметики. Многие годы понятие «алгоритм» использовалось математиками для описания правил решения математических задач. Например, существует алгоритм вычисления квадратного корня положительного числа, алгоритм нахождения наибольшего общего делителя двух чисел и многие другие. Однако не следует считать алгоритм чисто математическим понятием.

Каждый из нас с раннего детства, даже не замечая этого, ежедневно решает задачи, для описания которых использует тот или иной алгоритм, сформулированный в виде конечной последовательности однозначных предписаний. Входя в кабину телефона-автомата, вы видите на стене четкий алгоритм, однозначно описывающий ваши действия, цель которых - разговор с другом: снять трубку, опустить монету, набрать номер и т.д. Носителями алгоритмов являются фоторецепторные справочники, инструкции по использованию бытовой аппаратуры (от телевизора до стиральной машины), медицинские рекомендации и описания гимнастических упражнений, даже емкости и упаковки с продуктами (например, приготовленная чашка кофе - готовый результат выполнения алгоритма). Все алгоритмы создаются конкретным автором (человеком или группой людей) в результате обобщения прошлого опыта или технологических разработок и рассчитан на конкретного исполнителя. Алгоритмы «бытовой сферы» всегда предполагают конкретный уровень предварительной подготовки исполнителя и потому излагаются без перечисления ряда промежуточных операций, метод выполнения которых (тоже алгоритм!) избирается самим исполнителем. Автор кулинарного рецепта предполагает, что хозяйка умеет включать и выключать газовую или электроплиту, регулировать нагрев; в инструкции декоративной шпатлевки не описан метод вскрытия упаковки (разрезать бумагу острым предметом или вскрыть металлическую банку консервным ножом…) и т.д.

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

1) создание укрупненного алгоритма (требования к исходным данным и результатам, постановка задачи, описание точной схемы решения с указанием всех особых ситуаций);

2) составление программы задания (задачи).

При таком подходе необходимо:

1) создать строгую систему условных обозначений для записи команд в понятной для человека форме (язык программ);

2) создать программу-посредника, которая переводила бы такие команды на язык, понятный машине.

Рассмотрим пример алгоритма для нахождения середины отрезка при помощи циркуля и линейки.

Алгоритм деления отрезка АВ пополам:

1) поставить ножку циркуля в точку А;

2) установить раствор циркуля равным длине отрезка АВ;

3) провести окружность;

4) поставить ножку циркуля в точку В;

5) провести окружность;

6) через точки пересечения окружностей провести прямую;

7) отметить точку пересечения этой прямой с отрезком АВ.

Анализ примеров различных алгоритмов показывает, что запись алгоритма распадается на отдельные указания исполнителю выполнить некоторое законченное действие. Каждое такое указание называется командой. Команды алгоритма выполняются одна за другой. После каждого шага исполнения алгоритма точно известно, какая команда должна выполнятся следующей. Совокупность команд, которые могут быть выполнены исполнителем, называется системой команд исполнителя.[1]

1.2 Основные свойства алгоритма

1.2.1 Массовость

Алгоритм имеет некоторое число входных величин — аргументов, задаваемых до начала исполнения. Цель выполнения алгоритма — получение результата (результатов), имеющего вполне определенное отношение к исходным данным. Алгоритм указывает последовательность действий по переработке исходных данных в результаты. Для алгоритма можно выбирать различные наборы входных данных из множества допустимых для этого процесса данных, т.е. можно применять алгоритм для решения целого класса задач одного типа, различающихся исходными данными. Это свойство алгоритма обычно называют массовостью. Однако существуют алгоритмы, применимые только к единственному набору данных. Можно сказать, что для каждого алгоритма существует свой класс объектов, допустимых в качестве исходных данных. Тогда свойствомассовости означает применимость алгоритма ко всем объектам этого класса.

1.2.2.Понятность

Чтобы алгоритм можно было выполнить, он должен быть понятен исполнителю. Понятность алгоритмаозначает знание исполнителя о том, что надо делать для исполнения этого алгоритма.

Дискретность.

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

1.2.3 Конечность

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

1.2.4 Определенность

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

1.2.5 Эффективность

Каждый шаг алгоритма должен быть выполнен точно и за конечное время. В этом смысле говорят, что алгоритм должен быть эффективным, т.е. действия исполнителя на каждом шаге исполнения алгоритма должны быть достаточно простыми, чтобы их можно было выполнить точно и за конечное время. Обычно отдельные указания исполнителю, содержащиеся в каждом шаге алгоритма, называют командами. Таким образом, эффективность алгоритма связана с возможностью выполнения каждой команды за конечное время.[2]

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

Приведенные выше комментарии поясняют интуитивное понятие алгоритма, но само это понятие не становится от этого более четким и строгим. Тем не менее, в математике долгое время использовали это понятие. Лишь с выявлением алгоритмически неразрешимых задач, т.е. задач, для решения которых невозможно построить алгоритм, появилась настоятельная потребность в построении формального определения алгоритма, соответствующего известному интуитивному понятию. Интуитивное понятие алгоритма в силу своей неопределенности не может быть объектом математического изучения, поэтому для доказательства существования или не существования алгоритма решения задачи было необходимо строгое формальное определение алгоритма.

Построение такого формального определения было начато с формализации объектов (операндов) алгоритма, так как в интуитивном понятии алгоритма его объекты могут иметь произвольную природу. Ими могут быть, например, числа, показания датчиков, фиксирующих параметры производственного процесса, шахматные фигуры и позиции и т.п. Однако предполагая, что алгоритм имеет дело не с самими реальными объектами, а с их изображениями, можно считать, что операнды алгоритма— слова в произвольном алфавите. Тогда получается, что алгоритм преобразует слова в произвольном алфавите в слова того же алфавита. Дальнейшая формализация понятия алгоритма связана с формализацией действий над операндами и порядка этих действий. Одна из таких формализаций была предложена в 1936 году английским математиком А. Тьюрингом, который формально описал конструкцию некоторой абстрактной машины (машины Тьюринга) как исполнителя алгоритма и высказал основной тезис о том, что всякий алгоритм может быть реализован соответствующей машиной Тьюринга. Примерно в это же время американским математиком Э. Постом была предложена другая алгоритмическая схема —машина Поста, а в 1954 году советским математиком А. А. Марковым была разработана теория классов алгоритмов, названных им нормальными алгорифмами, и высказан основной тезис о том, что всякий алгоритм нормализуем.

1.3 Алгоритмические схемы эквиваленты

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

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

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

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

Для записи алгоритмов используют самые разнообразные средства. Выбор средства определяется типом исполняемого алгоритма. Выделяют следующие основные способы записи алгоритмов:

■ вербальный – алгоритм описывается на человеческом языке;

■ символьный – алгоритм описывается с помощью набора символов;

■ графический – алгоритм описывается с помощью набора графических изображений.

Общепринятыми способами записи алгоритма являются графическая запись с помощью схем алгоритмов (блок-схем) и символьная запись с помощью какого-либо алгоритмического языка.

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

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

Начало и конец алгоритма обозначают с помощью одноименных символов (рис. 1.1).

Шаг алгоритма, связанный с присвоением нового значения некоторой переменной, преобразованием некоторого значения с целью получения другого значения, изображается символом "процесс" (рис. 1.2).

Выбор направления выполнения алгоритма в зависимости от некоторых переменных условий изображается символом "решение" (рис. 1.3).

Здесь Р означает предикат (условное выражение, условие). Если условие выполнено (предикат принимает значение ИСТИНА), то выполняется переход к одному шагу алгоритма, а если не выполнено, то к другому.

Имеются примитивы для операций ввода и вывода данных, а также другие графические символы. В настоящий момент они определены стандартом ГОСТ 19.701–90 (ИСО 5807–85) "Единая система программной документации. Схемы алгоритмов, программ данных и систем. Условные обозначения и правила выполнения". Всего сборник ЕСПД содержит 28 документов.

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

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

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

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

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

В этом случае одно повторение цикла называется итерацией.

1.4 Основные алгоритмические конструкции

Линейной называют алгоритмическую конструкцию, реализованную в виде последовательности действий (шагов), в которой каждое действие (шаг) алгоритма выполняется ровно один раз, причем после каждого i-го действия (шага) выполняется (i +1)-е действие (шаг), если i -е действие - не конец алгоритма. (рис.2.1)

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

Неполное ветвление предполагает наличие некоторых действий алгоритма только на одной ветви (то), вторая ветвь отсутствует, т.е. для одного из результатов проверки никаких действий выполнять не надо, управление сразу переходит к точке слияния (рис).2.3

Алгоритмическая конструкция «Цикл»

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

Рассмотрим три типа циклических алгоритмов: цикл с параметром (который называют арифметическим циклом), цикл с предусловием и цикл с постусловием (их называют итерационными).

Арифметический цикл

В арифметическом цикле число его шагов (повторений) однозначно определяется правилом изменения параметра, которое задается с помощью начального (N) и конечного (К) значении параметра и шагом (h) его изменения. Т.е., на первом шаге цикла значение параметра равно N, на втором N+h, на третьем – N+2h и т.д. На последнем шаге цикла значение параметра не больше К, но такое, что дальнейшее его изменение приведет к значению, большему, чем К.

Пример: Вывести 10 раз слово «Привет!».

Параметр цикла обозначим i, он будет отвечать за количество выведенных слов. При i = 1 будет выведено первое слово, при i = 2 будет выведено второе слова и т.д. Так как требуется вывести 10 слов, то последнее значение параметра i = 10. В заданном примере требуется 10 раз повторить одно и то же действие: вывести слово «Привет!».

Составим алгоритм, используя арифметический цикл, в котором правило изменения параметра i – 1, 10, 1. То есть начальное значение параметра i = 1; конечное значение i =10; шаг изменения h = 1. На рисунке представлена блок-схема алгоритма решения данной задачи. (Рис. 2.4 )

Вывод к главе 1.

Для каждой задачи может существовать множество алгоритмов, приводящих к цели. Увеличение эффективности алгоритмов составляет одну из задач современной информатики.

Алгоритм может быть представлен различными способами:

  • на разговорном естественном язык;
  • на языке блок-схем;
  • на языке программирования.

Выбор и разработка алгоритма и численного метода решения задачи

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

Глава 2. Программирование

2.1 Понятие программирование

Процесс работы компьютера заключается в выполнении программы, то есть набора вполне определённых команд во вполне определённом порядке. Машинный двоичный код использующий в своей структуре всего два символа «нуль» и «единица», при определенной последовательности может задать бесконечное количество команд «мозгу» современного компьютера – процессору (конечно же процессор сам по себе не может воспринять последовательность чисел как определенную команду. Данный код переводится в понятной процессору язык, а именно последовательность коротко-срочных электрических импульсов). Значит, чтобы задать компьютеру последовательность действий, которые он должен выполнить, нужно задать последовательность двоичных кодов соответствующих команд. Программы в машинных кодах состоят из тысячи команд. Писать такие программы - занятие сложное и утомительное. Программист должен помнить комбинацию нулей и единиц двоичного кода каждой программы, а также двоичные коды адресов данных, используемых при её выполнении. Гораздо проще написать программу на каком-нибудь языке, более близком к естественному человеческому языку, а работу по переводу этой программы в машинные коды поручить компьютеру. Так возникли языки, предназначенные специально для написания программ, - языки программирования.

Язык программирования - это специальный язык, на котором пишут команды для управления компьютером. Языки программирования созданы для того, чтобы людям было проще читать и писать для компьютера, но они затем должны транслироваться (транслятором или интерпретатором) в машинный код, который только и может исполняться компьютером. Языки программирования можно разделить на языки высокого уровня и языки низкого уровня.[3]

Язык низкого уровня - это язык программирования, предназначенный для определенного типа компьютера и отражающий его внутренний машинный код; языки низкого уровня часто называют машинно-ориентированными языками. Их сложно конвертировать для использования на компьютерах с разными центральными процессорами, а также довольно сложно изучать, поскольку для этого требуется хорошо знать принципы внутренней работы компьютера.[4]

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

Создатели языков по-разному толкуют понятие язык программирования. Среди общин мест, признаваемых большинством разработчиков, находятся следующие:

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

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

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

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

Но создать язык, удобный для написания программ, недостаточно. Для каждого языка нужен свой переводчик. Такими переводчиками являются специальные программы-трансляторы.

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

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

Компилятор создаёт законченный результат - программу в машинных кодах. Затем эта программа выполняется. Откомпилированный вариант исходной программы можно сохранить на диске. Для повторного выполнения исходной программы компилятор уже не нужен. Достаточно загрузить с диска в память компьютера откомпилированный в предыдущий раз вариант и выполнить его.

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

Интерпретатор - это программа, предназначенная для построчных трансляции и выполнения исходной программы. Такой процесс называется интерпретацией.

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

Интерпретатор сообщает о найденных им ошибках после трансляции каждой строки программы. Это значительно облегчает процесс поиска и исправления ошибок в программе, однако существенно увеличивает время трансляции. Компилятор транслирует программу намного быстрее, чем интерпретатор, но сообщает о найденных им ошибках после завершения компиляции всей программы. Найти и исправить ошибки в этом случае труднее. Поэтому интерпретаторы рассчитаны, в основном, на языки, предназначенные для обучения программированию, и используются начинающими программистами. Большинство современных языков предназначены для разработки сложных пакетов программ и рассчитаны на компиляцию.

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

2.2 Понятие компьютерной программы

Компьютерная программа -- это набор инструкций для выполнения на вычислительной технике. Как правило, программы могут быть представлены в виде исходного кода и объектного (бинарного) кода.

С точки зрения пользователя компьютера важным отличием является характер программы:

· системные программы -- программы, обеспечивающие взаимодействие пользователя с компьютером и создающие среду для выполнения прикладных программ. К таким программам, например, относятся «операционные системы» и «драйвера».

· прикладные программы -- программы, с которыми взаимодействует непосредственно пользователь. Сюда можно отнести «браузер», «текстовые редакторы», «игры», «web-сайты».

Информация, хранящаяся на вашем компьютере, условно подразделяется на две большие группы:

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

Данные - информация, которую программы обрабатывают или создают, документы.

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

Во время создания и работы программы мы всегда видим три стороны, участвующие в этом процессе:

Пользователь - постановщик задачи. Сам пользователь написать программу не может, но зато он знает, какую именно задачу он должен решить.

Вывод к главе 2.

Сколько существует различных задач, столько существует и различных

алгоритмов для их решения. Тем не менее есть большая вероятность того

что задача которую вы пытаетесь решить в некотором смысле похожа на

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

Глава 3. Практическая часть

Задача 1

Необходимо выполнить расчет максимальной мощности двигателя автомобиля, а также расчет внешней характеристики двигателя при следующих начальных условиях:

mo ,

кг

Vmax , км/ч

Kв

кг/м3

F,

м2

Ψv

nN

мин-1

Kv

nmp

6000

100

0,62

3,9

0,021

3000

1,2

0,88

Решение.

Максимальная мощность двигателя у тягача по условию обеспечения максимальной скорости будет рассчитываться по формуле (1):

https://www.bestreferat.ru/images/paper/95/98/8489895.png, (1)

Где Nemax это искомая максимальная мощность, KBm;

Nv – это мощность на режиме максимальной скорости, kBm;

Kv – это отношение частоты вращения коленчатого вала двигателя при максимальной скорости движения тягача к номинальной частоте вращения (2):

https://www.bestreferat.ru/images/paper/96/98/8489896.png,(2)

nN – это частота вращения коленчатого вала двигателя на режиме максимальной мощности ( номинальная), мин-1

nv – это частота вращения коленчатого вала двигателя при максимальной скорости автомобиля, мин-1.

Мощность на режиме максимальной скорости определяется по данной формуле (3):

https://www.bestreferat.ru/images/paper/97/98/8489897.png, (3)

Где m0 – это масса тягача, кг;

Ψvсуммарный коэффициент сопротивления дороги;

Vmax – это заданная максимальная скорость тягача;

nmp – это КПД трансмиссии;

Kв – коэффициент сопротивления воздуха, кг/м3.

F – это лобовая площадь тягача, м3.

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

При известном значении максимальной мощности Nemax мощность в любой другой точке характеристики может быть найдена по формуле Лейдермана (4):

https://www.bestreferat.ru/images/paper/98/98/8489898.png, (4)

где Ne мощность двигателя при произвольном значении частоты вращения коленчатого вала, кВт ;

Nemax максимальная мощность двигателя, кВт;

n - заданная частота вращения коленчатого вала, мин-1 ;

nN частота вращения коленчатого вала на режиме максимальной мощности, мин-1 ;

a,b,c коэффициенты, принимаемые для бензиновых двигателей, равны 1.

Крутящий момент в любой точке характеристики будет определяться по формуле (5):

Me =9549 ( Ne / n ), (5)

Составим схему алгоритма. В алгоритме будет три блока: ввод исходных данных, расчет по формулам(1)-(5) и вывод результата.

https://www.bestreferat.ru/images/paper/99/98/8489899.png

По приведенной блок-схеме была составлена программа, листинг которой приведен ниже.

program lab1;

var m0,vmax,Ke,F,Fv,nN,Ky,n_tr:real; {peremennye - ishodnye dannye}

Nv,Ne_max,n_v,Ne,Me:real; {peremennye - rezultaty}

BEGIN

{-----------VVOD ISHODNYH DANNYH-----}

writeln ('Vvedite ishodnye dannye:');

write ('m0=');readln(m0);

write ('Vmax=');readln(Vmax);

write ('Ke=');readln(Ke);

write ('F=');readln(F);

write ('Fv=');readln(Fv);

write ('nN=');readln(nN);

write ('Ky=');readln(Ky);

write ('n_tr=');readln(n_tr);

{----------RASCHET-------------------}

Nv:=2.725E-03*m0*Fv*Vmax/n_tr+2.14e-05*Ke*F*sqr(Vmax)*Vmax/n_tr;

Ne_max:=Nv/(Ky*(1+Ky*(1+Ky)));

n_v:=Ky*nN;

Ne:=Ne_max*(n_v/nN+sqr(n_v/nN)-sqr(n_v/nN)*n_v/nN);

Me:=9549*(Ne/n_v);

{----------VIVOD REZULTATA-----------}

writeln('Nv=',Nv);

writeln('Ne_max=',Ne_max);

writeln('n_v=',n_v);

writeln('Ne=',Ne);

writeln('Me=',Me);

End.

Программу написанную на языке Паскаль копирую и вставляю в проект, затем исправляю существенные различия.

Задача 2.

Вычислить функцию https://www.bestreferat.ru/images/paper/02/99/8489902.png, для https://www.bestreferat.ru/images/paper/03/99/8489903.png с шагом https://www.bestreferat.ru/images/paper/04/99/8489904.png.

a

b

h

f(x)

Начало отрезка

Конец отрезка

Шаг по отрезку

9

-12

0

1

https://www.bestreferat.ru/images/paper/05/99/8489905.png

РЕШЕНИЕ

Выполним схему алгоритма.

https://www.bestreferat.ru/images/paper/05/99/8489905.png

Эта схема была реализована на языке Паскаль в трех вариантах: были задействованы циклы с предусловием, с постусловием и с параметром. Листинги программ приведены ниже.

а) Цикл с постусловием

program lab 21;

var x,f:real;

begin

x:=-12;

repeat

if x<-7 then f:=sin((3.14/12)*x)

else

if x<=-3 then f:=2*cos((3.14/6)*x+(3.14/12))

else

f:=5* sin((3.14/12)*x);

writeln('f(',x:3:1,')=',f:6:2);

x:=x+1;

until x>0;

readln;

end.

б) Цикл с предусловием

program lab 22;

var x,y:real;

begin

x:=-12;

while x<=0 do

begin

if x<-7 then y:= sin((3.14/12)*x)

else

if x<=-3 then y:= 2*cos((3.14/6)*x+(3.14/12))

else

y:= 5* sin((3.14/12)*x);

writeln('f(',x:3:1,')=',y:6:2);

x:=x+1;

end;

readln;

end.

в) Цикл с параметром

program lab 23;

var

x,y,a,b,h,n1: real;

n ,i : integer;

begin

x:=-12;

a:=-12;b:=0;h:= 1;

n1:=(b-a)/h; n:=round(n1);

for i:=0 to n do

begin

if x<-7 then y:= sin((3.14/12)*x)

else

if x<=-3 then y:= 2*cos((3.14/6)*x+(3.14/12))

else

y:= 5* sin((3.14/12)*x);

writeln('f(',x:3:1,')=',y:6:2);

x:=x+1;

end;

readln;

end.

https://www.bestreferat.ru/images/paper/07/99/8489907.png
Решение этой же задачи было проведено в Excel. При вычислении функции использовалась логическая функция ЕСЛИ. Лист с решением задачи размещен ниже.

Программу написанную на языке Паскаль копирую и вставляю в проект, затем исправляю существенные различия.

Заключение

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

Приложение

Рис. 1.1 Начало и конец алгоритма

Рис. 1.2 Шаг алгоритма, связанный с присвоением нового значения некоторой переменной, символ "процесс"

Рис. 1.3 Выбор направления выполнения алгоритма, символ "решение".

Рис. 2.1 Линейная алгоритмическая конструкция.

http://ok-t.ru/studopedia/baza7/1364486711765.files/image014.jpg

Рис. 2.2 Разветвляющаяся (или ветвящейся) алгоритмическая конструкция.

http://ok-t.ru/studopedia/baza7/1364486711765.files/image014.jpg

Рис. 2.3 Неполное ветвление.

http://latnatbron.ucoz.net/_pu/0/93830429.png

Рис. 2.4 Блок – схема.

Библиография

1 Соболь Б.В. Информатика и программирование: учеб. Пособие для вузов/. Б.В. Соболь- 3-е изд; испр.- Ростов н/Д: Феникс, 2006 – 354 с.

2. Симонович С.В. Информатика. Базовый курс./ С.В Симонович.. - СПб.: Питер, 2001-640с.

3. О.А. Акулов, Н.В. Медведев. Информатика: базовый курс: учебник для студентов вузов/ О.А. Акулов, Н.В. Медведев. 6-е изд., испр. и доп.-М.: Издательство «Омега-Л», 2009.-574 с.

4. В.А. Каймин Информатика: Учебник для вузов. - М.: Высшее образование, 1998.-272с.

5. В.А. Кайми., Б.С. Касаев Информатика.: Практикум на ЭВМ. Учебное пособие.2000-216с.

6. Культин Н.Б. Программирование в TurboPascal 7.0 и Delphi.- 2-е издание, перераб. и доп.- Спб.: БХВ-Петербург,2002.-416 с.;ил.

7. Турбо Паскаль 7.0. Самоучитель. – СПб.: Питер; К.: Издательская группа BHV, 2002.-576 с.

8. Ван, Тассел Д. Стиль, разработка, эффективность, отладка и испытания программ / Ван Тассел Д.. - М.: Мир, 2017. - 332 c.

9.Лужецкий, М. Г. Автоматизация аналитической работы кредитной организации / М.Г. Лужецкий. - М.: Университет, 2015. - 555 c.

10.Попов, И. И. Использование семантических подходов в экономических моделях / И.И. Попов. - М.: Университет, 2016. - 646 c.

11.Постовалов 1С: Предприятие 7.7. Уроки программирования / Постовалов, Постовалова Сергей; , Анастасия. - М.: СПб: BHV, 2018. - 320 c.

12. Стивенс, У. UNIX: разработка сетевых приложений / У. Стивенс. - М.: СПб: Питер, 2015. - 400 c

13. Фролов, А.В. Локальные сети персональных компьютеров. Работа с сервером Novell NetWare / А.В. Фролов, Г.В. Фролов. - М.: Диалог-Мифи, 2017. - 168 c.

14. Семакин И.Г., Шестаков А.П Основы алгоритмизации и программирования: учеб. Пособие для вузов/ И.Г. Семаки., А.П. Шестаков – М.:Академия, 2016- 304с.

15. Воскобойников, Ю.Е. Основы вычислений и программирования в пакете MathCAD PRIME: Учебное пособие / Ю.Е. Воскобойников и др. - СПб.: Лань, 2016. - 224 c.

16. Черпаков, И.В. Основы программирования: Учебник и практикум для СПО / И.В. Черпаков. - Люберцы: Юрайт, 2016. - 219 c

17. Семакин, И.Г. Основы алгоритмизации и программирования. Практикум: Учебное пос. для студ. учреждений сред. проф. образования / И.Г. Семакин, А.П. Шестаков . - М.: ИЦ Академия, 2013. - 144 c.

18. Фридман, А.Л. Основы объектно-ориентированного программирования на языке Си++ / А.Л. Фридман. - М.: Гор. линия-Телеком, 2012. - 234 c.

19. Архангельский, А.Я. Язык Pascal и основы программирования в Delphi / А.Я. Архангельский. - М.: Бином-Пресс, 2008. - 496 c.

20. Алехин, В.А. Микроконтроллеры PIC: основы программирования и моделирования в интерактивных средах MPLAB IDE, mikroC, TINA, Proteus. Практикум / В.А. Алехин. - М.: ГЛТ , 2016. - 248 c.

  1. Семакин, И.Г. Основы алгоритмизации и программирования. Практикум: Учебное пос. для студ. учреждений сред. проф. образования / И.Г. Семакин, А.П. Шестаков . - М.: ИЦ Академия, 2013. - 144 c.

  2. Семакин И.Г., Шестаков А.П Основы алгоритмизации и программирования: учеб. Пособие для вузов/ И.Г. Семаки., А.П. Шестаков – М.:Академия, 2016- 304с.

  3. Культин Н.Б. Программирование в TurboPascal 7.0 и Delphi.- 2-е издание, перераб. и доп.- Спб.: БХВ-Петербург,2002.-416 с.;ил.

  4. Семакин, И.Г. Основы алгоритмизации и программирования. Практикум: Учебное пос. для студ. учреждений сред. проф. образования / И.Г. Семакин, А.П. Шестаков . - М.: ИЦ Академия, 2013. - 144 c.