Алгоритмизация и программирование. 2
Министерство образования Российской Федерации
Пензенский
Государственный Университет
Кафедра
________________МОиПЭВМ_______
Зав. Кафедрой _________________
________________________
________________________
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ
Пояснительная записка
к курсовой
работе
ПГУ 151001-2ДП-10ММ1-3-ПЗ
(обозначение
документа)
Автор работы
(подпись, инициалы, фамилия)
Группа____10ММ1_______________
Руководитель Работы ____________А.Н. Ракова__________________
Работа защищена
«_____»_______2011г. Оценка________________________
Члены комиссии:
________________________
________________________
2011
Реферат
Пояснительная записка содержит 16 листов, 2 рисунка, структуру ЭВМ, схему алгоритма, программу, результаты расчетов.
В
данной курсовой работе приведено задание,
требующее для решения
Содержание
Введение…………………………………………………………
1 Теоретическая часть
1.1 Современное направление
1.2 Определение цикла в Turbo Paskal…………………………………….7
2 Определение
двух параметров
2.1 Математическая часть………………………………………………….12
2.2 Описание алгоритма решения задачи…………………………………13
2.3 Анализ результатов вычисления…
Заключение……………………………………………………
Список используемых источников…………………………………………….18
Приложение. Текст
программы и распечатка с ЭВМ……………………….
Введение
Составление программ для ЭВМ и их эксплуатация – весьма сложное и трудоемкое занятие. Оно требует больших затрат умственного труда и времени. Поэтому разработчики новых алгоритмических языков стремятся к тому, чтобы программирование было как можно более простым и доступным широкому кругу людей, работающих в различных отраслях промышленности.
Язык Паскаль, утвержденный в качестве стандартного в 1979 г., является наиболее совершенным по сравнению с такими универсальными языками программирования, как Алгол, Фортрант, Бейсик и др.
Благодаря
своей эффективности, простоте и
логичности, он быстро получил широкое
распространение во всем мире. В
настоящее время почти все вычислительные
машины и особенно микроЭВМ, могут работать
на этом языке. Тексты программ легко проверяются
на правильность, так как смысл их прост
и очевиден. И наконец язык Паскаль подходит
для обучения начинающих программистов
стилю программирования.
1 Теоретическая часть
1.1 Современное направление
развития внутренней
памяти ЭВМ
Одним из основных направлений элементов компьютера, позволяющим ему нормально функционировать, является память. Внутренняя память компьютера (оперативная и кэш- память) - это место хранения информации, с которой он работает. Она является временным рабочим пространством. Информация во внутренней памяти не сохраняется при выключении питания, на диске же или дискете может храниться годами без потребления питания. В постоянной памяти (ROM) персонального компьютера записан набор программ базовой системы ввода-вывода (BIOS). Эта память энергозависима и BIOS всегда готова к чтению при включении питания компьютера.
Основная (оперативная) память (RAM- Random Access Memory – память с произвольным доступом) компьютера отличается от прочих устройств памяти, прежде всего тем, что к любому ее месту можно обратиться одинаково быстро, даже если делать это в случайном (произвольном) порядке(random аccess).
Большинство старых программ, работающих под управлением DOS, укладываются в сотни Кбайт – ведь DOS адресует только 640 Кбайт. Современные операционные системы многозадачные. Они позволяют нескольким программам действовать одновременно, а главное, взаимодействовать между собой. Поэтому для их работы требуется значительный объем оперативной памяти, например, для операционной системы Windows МЕ = 64 Мбайт, для Windows ХР = 128 Мбайт. Причем эти требования минимальны. Для приемлемой скорости работы с наиболее часто используемыми комбинациями программ эти цифры надо хотя бы удвоить или учетверить.
Физически оперативная память устанавливается в виде модулей SIMM(Single In-line Memory Modules) или DIMM (Double In-line Memory Modules) в специальные гнезда на материнской плате.
На системной
материнской плате модули памяти
организуются в банки памяти. В
компьютерах последних лет
1.2 Операторы цикла в Турбо Паскале
В большинстве задач, встречающихся на практике, необходимо производить многократное выполнение некоторого действия. Такой многократно повторяющийся участок вычислительного процесса называется циклом.
Если заранее известно количество необходимых повторений, то цикл называется арифметическим. Если же количество повторений заранее неизвестно, то говорят об итерационном цикле.
В итерационных циклах производится проверка некоторого условия, и в зависимости от результата этой проверки происходит либо выход из цикла, либо повторение выполнения тела цикла. Если проверка условия производится перед выполнением блока операторов, то такой итерационный цикл называется циклом с предусловием (цикл "пока"), а если проверка производится после выполнения тела цикла, то это цикл с постусловием (цикл "до").
Особенность этих циклов заключается в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, а тело цикла с предусловием может ни разу не выполниться. В зависимости от решаемой задачи необходимо использовать тот или иной вид итерационных циклов.
Арифметические циклы
Синтаксис:
for переменная := значение 1 to значение 2 do оператор
или
for переменная := значение 1 downto значение 2 do оператор
Оператор for вызывает оператор, находящийся после слова do, по одному разу для каждого значения в диапазоне от значения 1 до значения 2.
Переменная цикла, начальное и конечное значения должны иметь порядковый тип. Со словом to, значение переменной цикла увеличивается на 1 при каждой итерации цикла. Со словом downto, значение переменной цикла уменьшается на 1 при каждой итерации цикла. Не следует самостоятельно изменять значение управляющей переменной внутри цикла.
Как и в случае использования оператора условного прехода, следует помнить, что синтаксис языка допускает запись только одного оператора после ключевого слова do, поэтому, если вы хотите в цикле выполнить группу операторов, обязательно надо объединить их в составной оператор (окаймить операторными скобками begin ... end). В противном случае будет сделана логическая ошибка программы.
Пример 1. Квадраты чисел от 2-х до 10-и.
for x:=2 to 10 do WriteLn(x*x);
Пример 2. Латинский алфавит.
for ch:='A' to 'Z' do Writeln(ch);
Пример 3. Использование цикла с downto.
for i:=10 downto 1 do WriteLn(i);
Пример 4. Использование составного оператора.
for x:=1 to 10 do begin
y:=2*x+3;
WriteLn('f(',x,')=',y);
end;
Итерационные циклы с предусловием
Синтаксис:
while выражение do оператор
Оператор после do будет выполняться до тех пор, пока логическое выражение принимает истинное значение (True). Логическое выражение является условием возобновления цикла. Его истинность проверяется каждый раз перед очередным повторением оператора цикла, который будет выполняться лишь до тех пор, пока логическое выражение истинно. Как только логическое выражение принимает значение ложь (False), осуществляется переход к оператору, следующему за while.
Выражение оценивается до выполнения оператора, так что если оно с самого начала было ложным (False), то оператор не будет выполнен ни разу.
Здесь также следует помнить, что позволяется использовать только один оператор после ключевого слова do. Если необходимо выполнить группу операторов, то стоит использовать составной оператор.
Пример.
eps:=0.001;
while x > eps do x:=x/2;
Итерационные циклы с постусловием
Синтаксис:
repeat
оператор;
оператор;
...
оператор
until выражение
Операторы между словами repeat и until повторяются, пока логическое выражение является ложным (False). Как только логическое выражение становится истинным (True), происходит выход из цикла.
Так как выражение оценивается после выполнения операторов, то в любом случае операторы выполнятся хотя бы один раз.
Пример.
repeat
WriteLn('Введите
ReadLn(x);
until x>0;
Операторы завершения цикла
Для всех операторов цикла выход из цикла осуществляется как вследствие естественного окончания оператора цикла, так и с помощью операторов перехода и выхода.
В версии Турбо Паскаль 7.0 определены стандартные процедуры:
Break
Continue
Процедура Break выполняет безусловный выход из цикла. Процедура Continue обеспечивает переход к началу новой итерации цикла.
Заметим,
что хотя и существует возможность
выхода из цикла с помощью оператора
безусловного перехода goto, делать этого
не желательно. Во всех случаях можно
воспользоваться специально предназначенными
для этого процедурами Break и Continue.
2 Определение двух параметров геометрической фигуры
2.1
Математическая часть
Рисунок
1 – Геометрические фигуры
Объем цилиндрической трубы вычисляется по формуле (1):
(1)
где h – высота цилиндрической трубы, r1 и r 2 – внутренний и внешний радиусы цилиндрической трубы.
Объем шара находим по следующей формуле (2):
(2)
где r3 – радиус
шара.
Для решения
поставленной задачи надо найти минимальное
значение высоты цилиндрической трубы.
- Описание алгоритма решения задачи
Функции:
- Vtr
вход
Vtr:=
pi*h1*(sqr(r2)-sqr(r1))
выход
- Vchar
вход
Vshar:=(4*pi*r3*r3*r3)/3
выход
Программа:
начало
r2, r3, r4, r5, k
цикл 1
h1:=h1+m
r3:=r3+k
vtrub:=Vtr(h1,r1,r2)
vsh:=Vchar(r3)
vtrub<=vsh
h1<h2
r3>r5
r3:=r3-k
vtr(h1,r1,r2), Vchar(r3),h1,r3
h1:=h1+m
r3:=r3+k
vtr(h1,r1,r2), Vchar(r3),h1,r3
h1:=h1-2*m
r3:=r3-2*k
vtr(h1,r1,r2), Vchar(r3),h1,r3
конец
По условию задачи цилиндрической трубы изменяется от h1 до h2 с шагом m и вычисляем объем цилиндрической трубы по формуле (1).
Задаем условие, что объем цилиндической трубы не меньше объема шара радиуса r3 (радиус r3 изменяется от r4 до r5 с шагом k одновременно с h), который вычисляется по формуле (2).
Если условие выполняется, то значение высоты цилиндрической трубы и значение радиуса шара изменяются на один шаг.
Как только условие выполнится, будет произведен вывод рассчитанных значений.
В изображенном алгоритме блоки имеют описанное ниже значение:
1. Начало программы.
2. Ввод данных.
3. Начало цикла.
4. Увеличиваем значение высоты цилиндрической трубы.
5. Увеличиваем значение радиуса шара.
6. Расчет объема цилиндрической трубы.
7. Расчет объема шара.
8.
Выход из цикла 1 при условии,
что объем цилиндрической
9.
Уменьшаем значение высоты
10. Уменьшаем значение радиуса шара.
11. Вывод рассчитанных данных.
12. Увеличиваем значение высоты цилиндрической трубы.
13. Увеличиваем значение радиуса шара.
14. Вывод рассчитанных данных.
15.Уменьшаем
значение высоты
16.Уменьшаем значение радиуса шара на два шага.
17. вывод рассчитанных данных.
18. Конец
программы.
2.3 Анализ результатов вычисления
Расчеты, произведенные в программе, позволили получить результаты, приведенные в таблице 1:
| H1 | 16,1 |
| h2 | 0,8 |
| m | -0.1 |
| r4 | 1,8 |
| r5 | 5,5 |
| k | 0,1 |
| r1 | 6,6 |
| r2 | 9,3 |
| Объем Цилиндрической трубы | 1429,607 |
| Объем шара | 696,910 |
| Минимальное значение высоты | 10,6 |
| Максимальное значение радиуса шара | 5,5 |
Таблица
1 – Результаты работы программы
Заключение
При разработке данной курсовой работы была составлена схема алгоритма. По данной схеме разработана программа. Она составлена на языке программирования высокого уровня Турбо Паскаль. Были описаны характеристики технических средств и используемой операционной системы, алгоритма, программы. Ошибки при отладке программы были исправлены и проанализированы. При выполнении программы получены результаты поставленной задачи. Следовательно, поставленная цель – достигнута.
Список
используемых источников
- В.Ф. Шаньгин, П.М. Поддубная – «Прогаммирование на языке «Паскаль».
- Александр Левин «Турбо Паскаль 7.0» изд. «Питер».
Приложение А.
Текст программы и распечатка с ЭВМ
program kursovaya;
uses crt;
var
h1, h2, m, r1, r2, r3, r4, r5, k, vsh, vtrub:real;
function Vtr(h1,h2,r2:real):real;
begin
Vtr:= pi*h1*(sqr(r2)-sqr(r1));
end;
function Vshar(r3: real):real;
begin
Vshar:=(4*pi*r3*r3*r3)/3;
end;
begin
clrscr;
writeln('Vvod dannih:');
write('nachalnoe znacheni visoti h1:');
readln(h1);
write('konechnoe znachenie visotih2:');
readln(h2);
write('prirachenie visoti m:');
readln(m);
write('vnutrennii radius zilindricheskoi trubi r1:');
readln(r1);
write('vnechnii radius zilindricheskoi trubi r2:');
readln(r2);
write('nachlnoe znacenie radiusa chara r4:');
readln(r4);
write('konechnoe znachenie radiusa chara r5:');
readln(r5);
write('prirachenie radiusa k:');
readln(k);
repeat
h1:=h1+m;
r3:=r3+k;
vtrub:=Vtr(h1,r1,r2);
vsh:=Vshar(r3);
until(vtrub<=vsh) or (h1<h2) or (r3>r5);
h1:=h1-m;
r3:=r3-k;
writeln('rezultati vichesleni:');
writeln('obiem zilindricheskoi trubi:', vtr(h1,r1,r2):8:3);
writeln('obiem chara:', Vshar(r3):8:3);
writeln('minimalnoe znachenie visoti:', h1:8:3);
writeln('maksimalnoe znachenie radiusa chara:',r3:8:3);
h1:=h1+m;
r3:=r3+k;
writeln('rezultat vicheslenii predidychii chag:');
writeln('obiem zilindricheskoi trubi:', vtr(h1,r1,r2):8:3);
writeln('obiem chara:', Vshar(r3):8:3);
writeln('minimalnoe znacenie visoti:',h1:8:3);
writeln('maksimalnoe znachenie radiusa chara:', r3:8:3);
h1:=h1-2*m;
r3:=r3-2*k;
writeln('rezultati vichslenii posledujuchi chag:');
writeln('obiem zilindricheskoi trubi:', vtr(h1,r1,r2):8:3);
writeln('obiem chara:', Vshar(r3):8:3);
writeln('minimalnoe znacheni visoti:', h1:8:3);
writeln('maksimalnoe znachenie radiusa chara:',r3:8:3);
readkey;
end.
Рисунок
2 – Результат вычислений

- Алгоритмизация и программирование
- Алгоритмизация и программирование процессов обработки данных в среде Visual Basic 6
- Алгоритмизация и программирование процессов обработки данных в среде СУБД типа Fox
- Алгоритмизация. Понятие алгоритма и алгоритмической системы. Свойства алгоритма. Проектирование алгоритмов. Блок-схема алгоритма. Основн
- Алгоритмизация процедуры исследования и подготовки исходных данных для постановки и решения задачи оценки земельного участка
- Алгоритм интерфейстері
- Алгоритм и программа решения задачи поиска экстремума функции градиентным методом
- Алгоритм заполнения первичных документов в 1С: Бухгалтерия
- Алгоритм зведення рівняння поверхні другого порядку до канонічного вигляду
- Алгоритм и алгоритмы сортировки
- Алгоритм и его свойства. Способы записи алгоритма
- Алгоритмизация вычислительных процессов
- Алгоритмизация геоинформационных технологий в задачах, связанных с картопостроением
- Алгоритмизация и основы программирования