Алгоритмизация и программирование

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

ВВЕДЕНИЕ

алгоритм программирование геометрический тело

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

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

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

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

Вторая, более «прозрачная» цель — научиться программировать с помощью базовых операторов языка Turbo Pascal. Решение задачи определения площади и объема трехмерных фигур как нельзя лучше подходит для программирования. Одновременно, приобретаются навыки математического моделирования геометрических тел (описание формулами).

1. РЕФЕРАТ

1. 1 Логическое устройство ПК

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

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

Логический элемент И. На входы, А и В логического элемента последовательно подаются четыре пары сигналов различных значений, на выходе получается последовательность из четырех сигналов, значения которых определяются в соответствии с таблицей истинности операции логического умножения (рис. 1).

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

Логический элемент НЕ. На вход, А логического элемента последовательно подаются два сигнала, на выходе получается последовательность из двух сигналов, значения которых определяются в соответствии с таблицей истинности логического отрицания (рис. 1).

Рис. 1. Логические элементы.

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

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

Таблица 1.

Рис. 2. Одноразрядный двоичный полусумматор.

Триггер. Важнейшей структурной единицей оперативной памяти компьютера, а также внутренних регистров процессора является триггер (рис. 3). Это устройство позволяет запоминать, хранить и считывать информацию (каждый триггер может хранить 1 бит информации). Для построения триггера достаточно двух логических элементов «ИЛИ» и двух элементов «НЕ».

Рис. 3. Триггер

В обычном состоянии на входы триггера подан сигнал «О», и триггер хранит «О». Для записи «1» на вход S (установочный) подается сигнал «1». При последовательном рассмотрении прохождения сигнала по схеме видно, что триггер переходит в это состояние и будет устойчиво находиться в нем и после того, как сигнал на входе S исчезнет. Триггер запомнил «1», т. е. с выхода триггера Q можно считать «1».

Чтобы сбросить информацию и подготовиться к приему новой, на вход R (сброс) подается сигнал «1», после чего триггер возвратится к исходному «нулевому» состоянию.

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

1) МИКРОПРОЦЕССОР

Самым главным элементом в компьютере, его «мозгом», является микропроцессор — небольшая (в несколько сантиметров) электронная схема, выполняющая все вычисления и обработку информации. Микропроцессор умеет производить сотни различных операций и делает это со скоростью в несколько десятков или даже сотен миллионов операций в секунду. В компьютерах типа IBM PC используются микропроцессоры фирмы Intel, а также совместимые с ними микропроцессоры других фирм (AMD, Cyrix, IBM и др.).

2) СОПРОЦЕССОР

В тех случаях, когда на компьютере приходится выполнять много математических вычислений (например, в инженерных расчетах), к основному микропроцессору добавляют математический сопроцессор. Он помогает основному микропроцессору выполнять математические операции над вещественными числами. Новейшие микропроцессоры фирмы Intel (80 486 и Pentium) сами умеют выполнять операции над вещественными числами, так что для них сопроцессоры не требуются.

3) ОПЕРАТИВНАЯ ПАМЯТЬ

Следующим очень важным элементом компьютера является оперативная память. Именно из неё процессор и сопроцессор берут программы и исходные данные для обработки, в неё они записывают полученные результаты. Название «оперативная» эта память получила потому, что она работает очень быстро, так что процессору не приходится ждать при чтении данных из памяти или записи в память. Однако содержащиеся в ней данные сохраняются только пока компьютер включен, при выключении компьютера содержимое оперативной памяти стирается (за исключениями, о которых говорится ниже).

4) КОНТРОЛЛЕРЫ И ШИНА

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

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

1. Для каждого внешнего устройства в компьютере имеется электронная схема, которая им управляет. Эта схема называется контроллером, или адаптером. Некоторые контроллеры (например, контроллер дисков) могут управлять сразу несколькими устройствами.

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

5) ЭЛЕКТРОННЫЕ ПЛАТЫ

Для упрощения подключения устройств электронные схемы IBM PC состоят из нескольких модулей — электронных плат. На основной плате компьютера — системной, или материнской, плате — обычно располагаются основной микропроцессор, сопроцессор, оперативная память и шина. Схемы, управляющие внешними устройствами компьютера (контроллеры или адаптеры), находятся на отдельных платах, вставляющихся в унифицированные разъёмы (слоты) на материнской плате. Через эти разъёмы контроллеры устройств подключаются непосредственно к системной магистрали передачи данных в компьютере — шине. Таким образом, наличие свободных разъёмов шины обеспечивает возможность добавления к компьютеру новых устройств. Чтобы заменить одно устройство другим (например, устаревший адаптер монитора на новый), надо просто вынуть соответствующую плату из разъёма и вставить вместо неё другую. Несколько сложнее осуществляется замена самой материнской платы.

6) БЛОК — СХЕМА

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

7) КОНТРОЛЛЕРЫ ПОРТОВ ВВОДА ВЫВОДА. Одним из контроллеров, которые присутствуют почти в каждом компьютере, является контроллер портов ввода-вывода. Эти порты бывают следующих типов:

ь параллельные (обозначаемые LPT1-LPT4), к ним обыкновенно подключаются принтеры;

ь асинхронные последовательные (обозначаемые СОМ1-СОМ3). Через них обычно подсоединяются мышь, модем и т. д.

ь игровой порт для подключения джойстика.

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

1.2 Операторы ввода-вывода

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

Сначала операторы ввода (форматы операторов):

Read(< Список ввода>);

Readln(< Список ввода>);

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

Разница между работой процедур Read и Readln (от Read line) состоит в следующем: после выполнения Read значение следующего данного считывается с этой же строчки, а после выполнения Readln — с новой строки.

Для вывода информации в Паскале также есть две команды:

Write(< Список вывода>);

Writeln(< Список вывода>);

Такой формат использования Write и Writeln позволяет выводить на экран монитора данные из списка вывода. Элементами списка вывода могут являться имена переменных, выражения, константы. Элементы списка, также как и в операторах ввода, разделяются запятыми.

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

При выводе данных можно дополнительно задать формат вывода:

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

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

Таблица 2. Форматы вывода для различных типов данных

тип данных 11 111

значение a1a1111

оператор 11 111

результат11 111

целый

6

write (a: 5);

6

целый

50

write (a);

50

целый

10 564

write (a: 2);

10 564

символьный

s

write (a);

s

символьный

Ф

write (a: 5);

Ф

строковый

Паскаль

write (a);

Паскаль

строковый

Новый год

write (a: 15);

Новый год

строковый

Новый год

write (a: 1);

Новый год

вещественный

45. 5

write (a);

4. 5 500 000 000 0000E+0001

вещественный

511. 04

write (a: 10:4);

511. 0400

вещественный

-46. 78

write (a: 7:2);

-46. 78

вещественный

157. 35

write (a: 2);

1. 6E+0002

вещественный

157. 35

write (a: 10);

1. 6E+0002

вещественный

157. 35

write (a: 15);

1. 57 3500E+0002

вещественный

157. 35

write (a: 20);

1. 5 735 000 0000E+0002

логический

True

write (a);

True

логический

True

write (a: 10);

True

Примечание: Для удобства восприятия здесь и в дальнейшем символ означает пробел.

2. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

2.1 Задание на курсовое проектирование

Вариант № 11

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

Найти минимальное значение высоты шарового сегмента h (h изменяется от h1 до h2 с шагом k) и соответствующее ему значение радиуса основания шарового сегмента r1, для которых площадь поверхности шарового сегмента не меньше площади поверхности прямоугольного параллепипеда со сторонами a, b и c (сторона c изменяется от с1 до с2 с шагом m), r — радиус шара, из которого вырезан шаровой сегмент, остается неизменным.

Заданные параметры:

h1 = 12. 8; h2 = 0. 2; k = -0. 1; a = 5. 0; b = 7. 7; c1 = 1. 3; c2 = 4. 3; m = 0. 1; r = 12.9.

2. 2 Математический метод решения задачи

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

1

/

/

О поверхности шарового сегмента гласит одна из основных теорем стереометрии: Площадь сегментной поверхности равна произведению её высоты на окружность большого круга:

Sс. пов = 2Rh, где (1)

h = АМ (по рисунку) — высота шарового сегмента,

R — радиус шара. В работе также будет полезным использовать соотношение радиуса шара, высоты шарового сегмента и радиуса его основания r1 = МС (из треугольника ОСМ по теореме Пифагора):

(2)

Кроме того, понадобится понятие прямоугольного параллепипеда. Прямым параллелепипедом называется параллелепипед, боковые ребра которого перпендикулярны основаниям.

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

Рис. 5. Прямоугольный параллепипед.

Площадь его поверхности:

S = 2*(ab+ac+bc), (3)

где a, b, c — длина, ширина и высота параллепипеда.

2. 3 АЛГОРИТМ программы

Приведем текстовую интерпретацию алгоритма. Программа состоит из следующих шагов:

Шаг 1 — ввод исходных данных — параметров фигур.

Шаг 2 — открытие цикла с предусловием (WHILE) по высоте шарового сегмента.

Шаг 3 — вычисление площади поверхности шарового сегмента и радиуса его основания.

Шаг 4 — открытие второго, вложенного цикла также с предусловием по стороне параллепипеда с.

Шаг 5 — вычисление площади поверхности параллепипеда.

Шаг 6 — проверка условия, что если текущее значение высоты меньше минимального и одновременно (оператор AND) площадь поверхности шарового сегмента не меньше площади поверхности параллепипеда, то считать текущее значение высоты и радиуса основания сегмента минимальным (h_fine: =h; r_fine: =r1).

Шаг 7 — наращивание счетчика вложенного цикла (c: =c+m).

Шаг 8 — если параметр вложенного цикла не удовлетворяет условию c< =c2, то выход из цикла.

Шаг 9 — наращивание счетчика внешнего цикла (h: =h+k).

Шаг 10 — если параметр этого цикла не удовлетворяет условию h> =h2, то выход из цикла.

Шаг 11 — вывод на экран компьютера итоговых значений — минимальной высоты и радиуса основания шарового сегмента.

Шаг 12 — завершение работы программы.

Примечание: цикл с предусловием выполняется, пока условие верно.

Блок-схема программы

2. 4 АНАЛИЗ РЕЗУЛЬТАТОВ

Как правило, при проверке правильности работы программы, пользуются расчетом с помощью электронного калькулятора (если позволяет сложность математических методов). Однако расчет ведут не по всем значениям, а выборочно — по тем, которые, предположительно, должны бать близки к искомым.

Результат работы программы, который пользователь может наблюдать на экране (поскольку режим текстовый, результат — числовое представление):

h = 1. 40 r1 = 5. 84

При проверке результатов вручную, оказалось, что параметр h не должен опускаться ниже планки в 1.4 для выполнения заданного условия. При этом площадь поверхности сегмента составляет 113. 42, а нетрудно проверить, что наименьшая площадь параллепипеда составляет 110. 02. Значит, задача решена программными методами верно.

Оценка точности не входила в задачи работы, однако при необходимости нетрудно будет модифицировать уже существующую программу (файл Purd. pas).

ЗАКЛЮЧЕНИЕ

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

Турбо Паскаль — достаточно «старый» программный продукт. Следует заметить, однако, что Паскаль — это живой язык. Известны, используются или находятся в стадии разработки компиляторы и среды разработки программ на Паскале для различных операционных систем, в том числе и бурно развивающейся операционной системы Linux. Эти системы иногда частично, а иногда и в значительной мере совместимы с Турбо Паскалем, а следовательно, накопленный опыт может быть использован и для серьезной, профессиональной работы по разработке программ.

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

БИБЛИОГРАФИЯ

1. Ефимов О., Моисеев М., Шафрин Ю. Компьютерные технологии. — М., 2007

2. Марченко А. И., Марченко Л. И. Программирование в среде Turbo Pascal 7.0. — М., Бином Универсал, К.: Юниор, 2007.

3. В. С. Анфилатов, Л. А. Шелутко. Турбо Паскаль. Стандартные подпрограммы. — Санкт-Петербург, 2013

4. Н. Б. Культин. Программирование в Turbo Pascal 7.0 и Delphi. -СПб.: BHV — Санкт-Петербург, 2008

5. Задания для внеклассной работы по геомерии 8−11 классы. Василевский А. Б. — Минск: ИП «Экоперспектива», 2008.

ПРИЛОЖЕНИЕ I

ЛИСТИНГ ПРОГРАММЫ

program Purdishev;

uses crt;

const

r=12. 9; (*Радиус шара*)

var

h, h_fine, h1, h2,k, r1, r_fine, a, b, c, c1,c2,m, S_segm, S_par: real;

begin

clrscr;

(*Изменение высоты сегмента*)

h1: =12. 8;

h2: =0. 2;

k: =-0. 1;

(*Параметры параллепипеда*)

a: =5. 0;

b: =7. 7;

c1: =1. 3;

c2: =4. 3;

m: =0. 1;

h: =h1;

h_fine: =h;

while h> =h2 do

begin

c: =c1;

S_segm: =2*3. 14*r*h;

r1: =sqrt (h*(2*r-h));

while c< =c2 do

begin

S_par: =2*(a*b+a*c+b*c);

if (S_segm> =S_par) and (h< h_fine) then

begin

h_fine: =h;

r_fine: =r1;

end;

c: =c+m;

end;

h: =h+k;

end;

writeln ('h = ', h_fine: 2:2,' r1 = ', r_fine: 2:2);

readkey;

end.

ПоказатьСвернуть
Заполнить форму текущей работой