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

Алгоритмизация как обязательный этап разработки программы

Содержание:

Введение

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

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

1. Структура современных ЭВМ

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

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

Рис.2. Структурная схема ПЭВМ

На рис.2 изображена структурная схема ПЭВМ, которая содержит следующие основные компоненты:

1) ЦП - центральный процессор, который управляет работой ПЭВМ а и выполняет все вычисления;

2) ОЗУ - оперативное запоминающее устройство, в котором располагаются программы, выполняемые ПЭВМ, используемые программами данные.

3) ПЗУ - постоянное запоминающее устройство, в котором располагаются программы, выполняемые ПЭВМ при своём включении.

Схема содержит следующие компоненты, которые предназначены для связи ПЭВМ с внешними устройствами:

1) Контроллер дисплея - позволяет подключить процессор к видео контрольному устройству, обеспечивает передачу видеоинформации и переключение видеорежимов дисплея;

2) Контроллер клавиатуры - позволяет подключить процессор к устройству ручного ввода информации, обеспечивает опрос каждой клавиши и передаёт процессору код нажатой клавиши;

3) Порты ввода - вывода, через которые процессор обменивается данными с внешними устройствами, предназначены для подключения к ним внешних устройств, таких как принтер, динамик, внешние устройства памяти;

4) Контроллер накопителя на диске - связывает накопители внешней оперативной памяти с ОЗУ, обеспечивает приём, передачу информации от носителя;

На схеме показаны следующие внешние устройства ПЭВМ:

1) Дисплей - основное средство оперативного вывода информации, предназначен для вывода текстовой или графической информации на экран.

2) Клавиатура - стандартное устройство ввода информации, основное средство взаимодействия пользователя с ПЭВМ.

3) Принтер - устройство печати текстовой и графической информации.

Принтеры бывают 3х типов - матричные, струйные и лазерные.

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

5) Накопитель на жёстких магнитных дисках - устройство внешней памяти - служит для долговременного хранения информации - программ, архивных данных и т.д. Ёмкость носителя и скорость передачи данных высокая.

2. Математическая часть

На Рис.3 изображены геометрические фигуры: цилиндрическая труба и прямоугольный параллелепипед.

Рис.3. Геометрические фигуры

Вычисление значений требуемых величин производилось по формулам:

Формула (1) - объём прямоугольного параллелепипеда:

 (1)

где A, B, C - стороны прямоугольного параллелепипеда.

Формула (2) - объём цилиндрической трубы:

 (2)

где h - высота цилиндрической трубы;

R1 - внутренний диаметр цилиндрической трубы;

R2 - внешний диаметр цилиндрической трубы.

3. Описание алгоритма решения задачи

По условиям, заданным в задаче, значение внутреннего радиуса цилиндрической трубы R1 изменяется со значения L до N с шагом M.

Причём объём цилиндрической трубы не может быть меньше объёма прямоугольного параллелепипеда.

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

В соответствии с приведённым словесным описанием алгоритма решения поставленной задачи разработана схема решаемой задачи, которая изображена на рис.4.

В изображенном алгоритме блоки имеют описанное ниже назначение:

Блок 1. Начало программы;

Блок 2. Ввод L, N, M, R2, H, A, B, C с клавиатуры;

Блок 3. Вычисление объёма прямоугольного параллелепипеда;

Блок 4. Установка начального максимального значения внутреннего радиуса цилиндрической трубы;

Блок 5. Организация цикла переменной R1;

Блок 6. Вычисление объёма цилиндрической трубы;

Блок 7. Проверка условия Vc <= Vt, если оно выполняется, то переход на блок 8, если нет, то на блок 10;

Блок 8. Проверка условия MAX <R1, если оно выполняется, то переход на блок 9, если нет, то на блок 10;

Блок 9. Вычисление максимального значения внутреннего радиуса, объёма цилиндрической трубы;

Блок 10. Вывод значений объёма цилиндрической трубы, объёма прямоугольного параллелепипеда, максимального значения внутреннего радиуса;

Блок 11. Конец программы.

4. Анализ результатов вычислений

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

Введите L, N, M:

2.3 12.5 0.1

Введите R2, H:

12.6 2.3

Введите A, B, C:

2.4 3.7 10.4

Объем цилиндрической трубы=106.595131

Объем прямоугольного параллелепипеда=92.352005

Максимальное значение внутреннего радиуса=12.00001

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

Заключение

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

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

Список литературы

1. Бронштейн И.Н., Семендяев К.А. Справочник по высшей математике для инженеров и учащихся втузов. - М.: Наука, 1981. - 718 с.

2. Бьярн Страуструп. Язык программирования С++.в двух частях. Пер. с англ. Киев: "Диа Софт», 1993. -296 с.,ил.

3. Корриган Джон: С++ основы программирования: Пер с англ. -М.: Энтроп, 1995. - 352 с., ил.

ПРИЛОЖЕНИЕ 1

ТЕКСТ ПРОГРАММЫ

#include <conio.h>

#include <iostream.h>

#include <math.h>

void main () {

float L, N, M, R2, R1, H, A, B, C, MAX, VC, VT, V;

clrscr ();

cout<<"\n"<<" Введите L, N, M: "<<"\n";

cin>>L>>N>>M;

cout<<"\n"<<" Введите R2, H: "<<"\n";

cin>>R2>>H;

cout<<"\n"<<" Введите A, B, C: "<<"\n";

cin>>A>>B>>C;

VC=A*B*C;

MAX=-1E38;

for (R1=L; R1<=N; R1=R1+M)

{VT=H*3.14*(R2*R2-R1*R1);

if (VC<=VT) if (MAX<R1) {MAX=R1; V=VT;}}

cout <<"\n"<<"Объем цилиндрической трубы="<<V;

cout <<"\n"<<"Объем прямоугольного параллелепипеда="<<VC;

cout <<"\n"<<"Максимальное значение внутреннего радиуса="<<MAX;

getch ();

}

ПРИЛОЖЕНИЕ 2

РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ

Введите L, N, M:

2.3 12.5 0.1

Введите R2, H:

12.6 2.3

Введите A, B, C:

2.4 3.7 10.4

Объем цилиндрической трубы=106.595131

Объем прямоугольного параллелепипеда=92.352005

Максимальное значение внутреннего радиуса=12.00001

Алгоритмизация

Основным в процессе программирования является разработка алгоритма. Это один из наиболее сложных этапов решения задачи с использованием ЭВМ. В начале обучения программированию, на наш взгляд, целесообразно не привязываться сразу к какому-либо языку, разрабатывать алгоритмы без записи на ЯПВУ, а, например, с помощью блок-схем или иным аналогичным способом. После такой "чистой" алгоритмизации учащимся или студентам проще перейти к записи того же алгоритма на определённом языке программирования. В настоящей публикации продемонстрирован именно такой подход.

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

Ниже приведены графические обозначения (обозначения на блок-схемах) ОАС.


Структура “следование”


Полная развилка


Неполная развилка


Цикл с предусловие (цикл ПОКА)


Цикл с постусловием (цикл ДО)


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

На схемах СЕРИЯ обозначает один или несколько любых операторов; УСЛОВИЕ есть логическое выражение (ЛВ) (если его значение ИСТИНА, переход происходит по ветви ДА, иначе — по НЕТ). На схеме цикла с параметром использованы обозначения: ПЦ — параметр цикла, НЗ — начальное значение параметра цикла, КЗ — конечное значение параметра цикла, Ш — шаг изменения параметра цикла.

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

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

Линейные алгоритмы

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

Пример 1. Пешеход шел по пересеченной местности. Его скорость движения по равнине v1 км/ч, в гору — v2 км/ч и под гору — v3 км/ч. Время движения соответственно t1, t2 и t3 ч. Какой путь прошел пешеход?

1. Ввести v1, v2, v3, t1, t2, t3.

2. S1: = v1 * t1.

3. S2: = v2 * t2.

4. S3: = v3 * t3.

5. S: = S1 + S2 + S3.

6. Вывести значение S.

7. Конец.

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

Пример 2. Дано натуральное трехзначное число n, в записи которого нет нулей. Составить алгоритм, который возвращает значение ИСТИНА, если верно утверждение: "число n кратно каждой своей цифре", и ЛОЖЬ — в противном случае.

1. Ввести число n

2. A: = n mod 10 {разряд единиц}

3. B: = n div 100 {разряд сотен}

4. C: = n div 10 mod 10 {десятки}

5. L: = (n mod A=0) and (n mod B=0) and (n mod C=0)

6. Вывод L

7. Конец

На приведенной выше схеме DIV и MOD соответственно операции деления нацело и получения остатка от целочисленного деления. В фигурных скобках записаны пояснения (комментарии) к операторам.

Развилка

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

Пример 1. Вычислить значение функции

1. Ввести x.

2. Если x£–12, то y: =–x2

3. Если x <0, то y: =x4

4. y: = x–2

5. Вывести y

6. Конец

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

Пример 2. Дано натуральное число n. Если число нечётное и его удвоение не приведет к выходу за 32767 (двухбайтовое целое число со знаком), удвоить его, иначе — оставить без изменения.

Чтобы удовлетворить условию удвоения, число n должно быть нечетным и меньше 16384.

1. Ввести число n

2. Если число n нечетное и меньше 16384, то n: = n * 2

3. Вывод n

4. Конец

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

Циклы

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

Пример 1. Подсчитать количество нечетных цифр в записи натурального числа n.

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

1. Ввести число n

2. K: = 0 {подготавливаем счётчик}

3. Если n = 0, переход к п. 7

4. Если n mod 10 mod 2 = 1, то K: = K +1

5. n: = n div 10

6. Переход к п. 3

7. Вывод K

8. Конец

Задача решена двумя способами. Слева решение оформлено с использованием цикла с предусловием, справа — с постусловием.

Пример 2. Дана последовательность, общий член которой определяется формулой

Вычислить при n>2 сумму тех ее членов, которые больше заданного числа e.

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

1. Ввести e

2. S: = 0

3. A: = 1/4

4. n: = 3

5. Сравнить А с e. Если A> =e, переход к п. 10

6. S: = S + A

7. A: = (n-1)/(n*n)

8. n: = n + 1

9. Переход к п. 5

10. Вывод S

11. Конец

В рассмотренных выше примерах количество повторений заранее неизвестно. В первом оно зависит от количества цифр в записи натурального числа, во втором — от числа e.

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

Пример 3. Найти произведение первых k натуральных чисел, кратных трём.

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

1. Ввод k

2. P: = 1 {здесь накапливаем произведение}

3. T: = 0 {здесь будут числа, кратные 3}

4. I: = 1

5. Если I> k, переход к п. 10

6. T: = T + 3

7. P: = P * T

8. I: = I + 1

9. Перейти к п. 5

10. Вывод P

11. Конец

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

9. Программа, выполненная на языке Microsoft Visual Basic 6.0

Private Sub Command1_Click ()

Dim i, j, m, n As Integer

Dim s As Double

Dim c(1 To 50, 1 To 50) As Double

m = 3

n = 3

For i = 1 To m

For j = 1 To n

c(i, j) = 7 * i - j

Next

Next

s = 0

For i = 1 To m

For j = 1 To n

If m = n Then s = s + c(i, i) Else s = s + c(i, j)

Next

Next

Print s

End Sub

Private Sub Form_Load()

End Sub

Список литературы

  1. Информатика: Базовый курс. / С. В. Симонович и др. СПб.: Питер, 2005
  2. Острейковский В. А. Информатика: Учеб. для вузов. – М.: Высш. шк., 2000. – 511 с.: ил.
  3. Алексеев Е. В. и др. Вычислительная техника и программирование. Практикум по программированию: Практ. пособие / В. Е. Алексеев, А. С. Ваулин, Г. Б. Петрова; Под ред. А. В. Петрова. – М.: Высш. шк., 1991. – 400 с.: ил
  4. Глушаков С. В., Мельников И. В. Персональный компьютер: Учебный курс / Худож. оформитель А. С. Юхтман. – Харьков: Фолио; М.: ООО «Издательство АСТ», 2001. – 520 с. – (Домашняя б-ка).
  5. Леонтьев В. Новейшая энциклопедия персонального компьютера. – М.: ОЛМА-ПРЕСС, 1999. – 640 с.
  6. Козлов В.В., Можаева Н.А., Зуева Н.Г. Информатика. Алгоритмизация и программирование. Мет. Указания и задания к курсовой работе,2006. -32с

Задача 10.

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

mo,

кг

Vmax, км/ч

Kв

кг/м3

F,

м2

Ψv

nN

мин-1

Kv

ηтр

6000

100

0,62

3,9

0,021

3000

1,2

0,88

РЕШЕНИЕ.

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

, (1)

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

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

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

, (2)

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

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

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

, (3)

где m0 - масса тягача, кг;

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

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

ηтр – КПД трансмиссии;

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

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

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

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

(4)

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

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

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

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

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

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

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

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

Начало

mo, Vmax, Kв, F, Ψv, nN, Kv, ηтр

a=1, b=1, c=1

Nv, Nemax, Ne, Me, nv

Конец

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

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.

Решение этой же задачи было проведено в ЭТ Excel. Ниже представлен лист с решением и результатами.

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

Задача 11.

Вычислить функцию , для с шагом .

a

b

h

f(x)

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

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

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

9

-12

0

1

начало

X=-12

X<-7

X<=-3

f=

f, x

конец

f=

f=

X=X+1

x≤0

РЕШЕНИЕ

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

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

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

program lab21;

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 lab22;

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 lab23;

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.

Решение этой же задачи было проведено в Excel. При вычислении функции использовалась логическая функция ЕСЛИ. Лист с решением задачи размещен ниже.

Задача 12.

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

9

-3

0

РЕШЕНИЕ

Алгоритм метода половинного деления заключается в следующем:

  1. Выбрать нулевое приближение x0=(a+b)/2.
  2. Если f(x0) =0, то x0 очевидно является корнем уравнения.
  3. Если f(x0)≠0, то проверить условия f(x0)×f(a)<0 и f(x0)×f(b)<0 и выбрать тот из отрезков [a, х0], [х0, b], на границах которого выполнено одно из этих условий (т.е. функция f(х) имеет на концах отрезка противоположные знаки).
  4. Выбранный отрезок вновь разделить пополам и вычислить значение x1.
  5. Для х1 проверить условие f(х1) =0 и, если оно не выполняется, вернуться к п. 4.
  6. Процесс деления отрезков пополам продолжить до тех пор, пока длина отрезка, на концах которого функция имеет противоположные знаки, не будет меньше ε .
  7. Принять, что условие f(xk)= 0 выполнено, если

Ниже приведены блок-схема алгоритма и листинг программы на языке Паскаль.

истина

Ввод a, b, eps

x= (a + b)/2,i=0

F (x) =

F(x) =0

Abs (F(x))<eps

F(x)*F (a)>0

x: = b

x = (a + b)/2,i=i+1

конец

Печать x,i

x: = a

истина

истина

ложь

ложь

ложь

Program lab3;

function f1 (x: real): real;

begin

f1:=cos(0.2*x*x-2);

end;

var

x,a,b,e: real;

iteraz: integer;

begin

write ('Input a = '); readln (a);

write ('Input b = '); readln (b);

write ('Input e = '); readln (e);

iteraz:=0;

x:=(a+b)/2;

while (f1(x)<>0) and (abs(a-b)>e) do

begin

x:=(a+b)/2;

iteraz:=iteraz+1;

if (f1(a)*f1(x))<0 then b:=x

else a:=x;

writeln ('n=', iteraz,' x=', x:3:6,' f(x)=', f1(x):3:6);

end;

readln;

end.

Решение этой задаче было проведено и в MS Excel. Лист с решением задачи и ответом приведен ниже.

Задача 13.

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

, , , , с точностью .

Формула метода прямоугольников:

Формула метода трапеций: .

9

-3π

0

РЕШЕНИЕ

Алгоритм метода трапеций заключается в следующем:

  1. Отрезок [a, b] разбивается на n равных частей.
  2. Интеграл представляет собой площадь криволинейной трапеции, ограниченной осью OX, прямыми x=a и x=b и графиком функции. Очевидно, что интеграл от функции на отрезке равен сумме интегралов от этой же функции на каждом из маленьких отрезков, полученных в результате разбиения. Но на каждом из маленьких отрезков мы приближенно заменяем площадь криволинейной трапеции на площадь прямолинейной трапеции с основанием (высотой), равным длине маленького отрезка, и высотами (основаниями) f(xn) и f(xn+1), где xn – левая граница отрезка, xn+1 – правая граница отрезка. Основание (высота трапеции) равно
    (b-a)/n, и таким образом площадь трапеции равна
    (f(xn)+f(xn+1)) (b-a)/2n. У нас всего n трапеций, причем каждые две соседние трапеции имеют одинаковые высоты (основания). Таким образом, в сумму каждое из f(xn) кроме f(a) и f(b) войдет дважды, и таким образом весь интеграл вычисляется как , где .
  3. В методе трапеций не определен шаг (количество отрезков разбиения). Очевидно, что чем больше количество отрезков, тем более точным будет результат. Поэтому, задаем начальное значение n (например n=10) и вычисляем интеграл.
  4. После этого удваиваем n и снова вычисляем интеграл (п. 2). Сравнивая полученные результаты, делаем вывод, достигнута ли требуемая точность.
  5. Если результаты отличаются друг от друга меньше чем на ε, то требуемая точность достигнута. Если нет, то снова удваиваем n и вычисляем интеграл еще раз (возвращаемся к п. 4).

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

a=-3∙ pi,b=0,n=10,e=0.001

f(x)=

S:=0,h:=(b-a)/n,x:=a

i=1,n,1

S:=S+h* (f(x)+f(x+h))/2,x:=x+h

S1=S,n=2*n,x:=a,h:=(b-a)/n

i=1,n,1

S:=S+h* (f(x)+f(x+h))/2,x:=x+h

|S1-S|<e

ложь

истина

Печать S,n

program pr4;

uses crt;

var

h,a,b,S,dS,P,x,eps:real;

n,i:integer;

function f(x:real) : real;

begin

f:=0,1*sin(0.1*x+0.0025*x*x)/cos(0.1*x+0.0025*x*x);

end;

begin

clrscr;

writeln('input a,b,n,eps, please');

write('a');

readln(a);

write('b');

readln(b);

write('n');

readln(n);

write('eps');

readln(eps);

s:=0;

repeat P:=S;

h:=(b-a)/2;

S:=0;

x:=a;

for i:= 1 to n do

begin

x:=x+h;

S:=S+f(x);

end;

S := S*h;

write('n=',n:3,' h=',h:12:9);

n:=n*2;

until abs(P-S)/(s*100)<eps;

writeln;

writeln('Result S=',S:10:6,' dS=',dS:12:9);

writeln;

writeln('Process ended');

writeln('Press any key to exit');

repeat until keypressed;

end.

Данная задача была решена также в MS Excel. Лист с решением задачи приведен ниже. Требуемая точность была достигнута при n=10.

Задача 14.

Дана прямоугольная матрица Ci, j, размером . Если данная матрица является квадратной, найти сумму элементов главной диагонали, в противном случае найти сумму всех членов матрицы.

РЕШЕНИЕ

Составим схему алгоритма.

начало

m, n

i= 1 до m

j= 1 до n

C

m = n

«прямоугольная»

«квадратная»

S = 0

i = 1 до m

S = 0

i = 1 до m

j = 1 до n

j = i

S = S + C

S = S + C

S

конец

Program Lab_5;

uses crt;

var

i,j,m,n:integer;

b,a : array[1..10,1..10] of real;

s : real;

begin

clrscr;

write ('chislo stolbcov n='); Readln(n);

write ('chislo strok m='); readln (m);

begin

if m=n then

s:=0;

for i := 1 to n do

begin

for j := 1 to m do

begin

write('a[',i,',',j,']='); readln(a[i,j]);

end;

writeln;

end;

begin

if i=j then s:=s+a[i,j];

writeln(s:6:3);

end;

if i<>j then

begin

s:=0;

for i := 1 to n do

begin

for j := 1 to m do

begin

s:=s+a[i,j];

end;

writeln(s:6:3);

end;

end;

readln;

end;

end.

Данная задача была решена также в MS Excel. Лист с решением задачи приведен ниже.

Вывод

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

1) Разработка – должна осуществляться в соответствии с принципом структурного проектирования (пошаговая детализация) Структурное проектирование – это методология разработки алгоритма, представляющая их как совокупность модулей. Основные принципы структурного проектирования(СП):1. Принцип разделения. – алгоритм делится на модули, причём модуль — это простой независимый фрагмент алгоритма, физически и логически отделённый от других, реализующий одну часть задачи, допускающий независимую проверку. 2. Принцип пошаговой детализации алгоритма – задача разбивается на отельные подзадачи и у каждой подзадачи свой алгоритм, если подзадача отказывается сложной, она опять делиться на под-подзадачи, до тех пор, пока подзадачи не оказываться простыми для реализации.2) Обоснование предполагает доказательство того, что алгоритм эффективный.3) Представление – это запись алгоритма на конкретном языке программирования, либо в виде схемы. Существует 3 способа представления алгоритма.1. Словесное представление – описание алгоритма по пунктам.2. Алгоритмическое представление (на языке программирования).3. Структурная схема алгоритма.4) Анализ и тестирование – этот этап означает доказательство правильности алгоритма и его тестирование на различных наборах данных. Ошибки в алгоритмах бывают 2х типов:1. Синтаксические – неверная запись команды.2. Логические ошибки – для решения выбран неправильный путь. Тестирование алгоритма – процесс тестирование алгоритма с целью найти в нём баги. Задача тестирование – это найти компромиссное решение, тесть минимальный набор тестовых данных для нахождения максимального количества ошибок. Правило оформление схемы алгоритма описаны в ГОСТе 10.701-90 имеется 3 этапа символов.

1. Предопределённый 2. Пояснительный текст 3. Соединительные линии.

1) К предопределённы относятся основные символы (когда не известен вид или тип процесса, или носителя), и специфические, когда известен точный вид.

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

Список литературы

1. Для подготовки данной работы были использованы материалы с сайта http://www.comp-science.ru/

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

  1. Острейковский В. А. Информатика: Учеб. для вузов. – М.: Высш. шк., 2000. – 511 с.: ил.

4. Алексеев Е. В. и др. Вычислительная техника и программирование. Практикум по программированию: Практ. пособие / В. Е. Алексеев, А. С. Ваулин, Г. Б. Петрова; Под ред. А. В. Петрова. – М.: Высш. шк., 1991. – 400 с.: ил

5. Глушаков С. В., Мельников И. В. Персональный компьютер: Учебный курс / Худож. оформитель А. С. Юхтман. – Харьков: Фолио; М.: ООО «Издательство АСТ», 2001. – 520 с. – (Домашняя б-ка).

  1. Леонтьев В. Новейшая энциклопедия персонального компьютера. – М.: ОЛМА-ПРЕСС, 1999. – 640 с.

Козлов В.В., Можаева Н.А., Зуева Н.Г. Информатика. Алгоритмизация и программирование. Мет. Указания и задания к курсовой работе,2006. -32с