Розробка демонстраційної моделі руху планет Сонячної системи у середовищі Turbo Pascal

Особливості Сонячної системи та космічних тіл в її межах. Роль площини земної орбіти — екліптики. Опис програми, яка демонструє приблизний рух планет. Блок-схеми алгоритмів та структури програми. Опис процедур та обробників. Інструкція користувача.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 17.03.2014
Размер файла 756,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

ВСТУП

Інколи виникає необхідність створити просте динамічне зображення, чи то для наведення прикладу можливості створення такого зображення у програмуванні, чи для якоїсь гри, чи для зображення тих чи інших природних явищ, які ми не маємо можливості спостерігати. Дана програма є простою, тут немає ніяких налаштувань, ніяких та полів введення, присутня лише одна кнопка для переходу до програми. Обмежившись одним файлом, після його запуску на екрані висвітлюється титульна сторінка програми, через деякий час на екрані висвітлюється запис для переходу до програми, для цього потрібно натиснути кнопку Enter. Після натискання кнопки Enter спостерігається перехід до програми, яка зображає рух планет навколо Сонця. Даною програмою зможе користуватися користувач - початківець, адже для цього потрібно тільки вміти запустити програму на виконання.

Для створення динамічного зображення я обрав мову програмування Turbo Pascal. Дана мова програмування дає можливості для створення та обробки динамічних зображень. Для керування програмою можна використовувати декілька способів (меню та комбінації клавіш) я вважаю що зручніше використовувати комбінації клавіш для керування програмою: Ctr-F9 - запуск програми, Alt-F9 - для перевірки програми на помилки... Також тут присутній рядок стану(внизу робочої області) де відображається номер стрічки, що дозволяє швидко знайти у програмному коді помилку.

1. ТЕОРЕТИЧНА ЧАСТИНА

Моє завдання на курсову роботу - це створення демонстраційної моделі руху планет навколо Сонця. Тому я вирішив розповісти про Сонячну систему.

Сонячна система -- планетна система навколо Сонця, до складу якої входить вісім великих планет і одної карликової із більш ніж 100 супутниками, понад 100 000 астероїдів, понад 1000 комет, а також незліченна кількість дрібних, так званих метеорних тіл.

Основна роль у Сонячній системі належить Сонцю. Його маса приблизно в 750 разів перевищує масу всіх інших тіл, що входять до системи. Гравітаційне тяжіння Сонця є визначною силою для руху всіх тіл Сонячної системи, які обертаються навколо нього. Середня відстань від Сонця до найдальшої від нього планети Нептун складає 30 а. о., тобто 4,5 млрд. км., що дуже мало в порівнянні з відстанями до найближчих зір. Тільки деякі комети віддаляються від Сонця на 1015 а. о. і можуть відчувати істотний вплив тяжіння інших зір.

Усі великі планети -- Меркурій, Венера, Земля, Марс, Юпітер, Сатурн, Уран і Нептун -- обертаються навколо Сонця в одному напрямку (в напрямку осьового обертання самого Сонця), майже круговими орбітами, площини яких мають невеликий нахил одна до одної.

Площину земної орбіти -- екліптику -- вважають основною площиною для відліку нахилу орбіт планет та інших тіл, що обертаються навколо Сонця. Відстані у сонячній системі зазвичай вимірюють у астрономічних одиницях -- середня відстань від Землі до Сонця, що приблизно дорівнює 150 млн. км.

Планети поділяються на дві групи, що відрізняються масою, хімічним складом, швидкістю обертання і кількості супутників. Чотири планети, найближчі до Сонця, планети земної групи, порівняно невеликі, складаються здебільшого із щільної кам'янистої речовини і металів. Планети-гіганти -- Юпітер, Сатурн, Уран і Нептун -- набагато масивніші, складаються здебільшого з легких речовин і тому, незважаючи на величезний тиск у їхніх надрах, мають малу густину. У Юпітера і Сатурна основну частку їхньої маси складають водень і гелій. Вони містять також до 20% кам'янистих речовин і легких сполук кисню, вуглецю й азоту, що за низьких температур конденсуються на лід. В Урана й Нептуна лід і кам'янисті речовини складають більшу частину їхньої маси.

Відстані планет від Сонця утворюють закономірну послідовність -- проміжки між сусідніми орбітами зростають із віддаленням від Сонця. Ці закономірності руху планет у поєднанні з розподілом їх на дві групи за фізичними властивостями вказують на те, що Сонячна система не є випадковим скупченням космічних тіл, а утворилася в єдиному процесі. Тому вивчення кожного з тіл Сонячної системи висвітлює походження всієї Сонячної системи, а разом з тим і походження, еволюцію та сучасну будову нашої Землі.

Завдяки майже круговій формі планетних орбіт і великим відстаням між ними виключена можливість тісних зближень між планетами, коли вони могли б істотно змінювати свій рух внаслідок взаємного тяжіння. Це забезпечує тривале та стійке існування сонячної системи.

Планети обертаються також навколо своїх осей, причому у всіх планет, крім Венери й Урана, обертання відбувається в прямому напрямку, тобто, в тому ж напрямку, що і їхнє обертання навколо Сонця. Надзвичайно повільне обертання Венери відбувається в зворотному напрямку, а Уран обертається, ніби лежачи на боці.

Сатурн, Юпітер і Уран крім кількох супутників помітних розмірів мають безліч дрібних супутників, що ніби зливаються в суцільні кільця. Ці супутники рухаються орбітами, настільки близько розташованими до планети, що припливні сили не дозволяють їм об'єднатися в єдине тіло.

2. ОПИС ПРОГРАМИ

2.1 Загальна характеристика

Багато виникає випадків, коли потрібно наочно продемонструвати рух планет Сонячної системи. За допомогою цієї програми це легко зробити. Дана програма демонструє приблизний рух планет навколо Сонця.

Дана програма створена на мові програмування TURBO PASCAL, а також за допомогою середовища програмування TURBO PASCAL або School pak.

Основна функція програми - продемонструвати рух планет навколо Сонця.

Вона може бути використана у різних закладах(навчальних чи будь-яких інших).

Також може бути використана під час лекцій чи в інших навчальних або пізнавальних процесах.

Програма складається з двох частин:

титульної сторінки;

програми, яка демонструє рух планет.

2.2 Необхідні технічні засоби

Для запуску програми користувачеві знадобляться такі технічні засоби:

1) комп'ютер з характеристиками, що забезпечать функціонування програми:

a) процесор 128 MHz;

б) оперативна пам'ять (ОЗУ) : не менше 64 Mb;

в) вільного місця на жорсткому диску у файловій системі NTFS : не менше ніж 20 мб;

г) Кольоровий графічний дисплей, роздільна здатність дисплею 1024x768 ;

д) мишка;

2) На комп'ютері повинна бути встановлена одна із операційних систем:

а) Windows Server 2003;

б) Windows XP;

в) Windows Vista;

г) Windows 7;

2.3 Блок-схеми основних алгоритмів та структури програми

2.4 Опис процедур та обробників

Створення титульної сторінки я організував так:

setbkcolor(0);

setcolor(15);

rectangle(6,6,634,474);

rectangle(20,20,620,460);

settextstyle(4,0,1);

outtextxy(170,30,' Міністерство освіти і науки України ');

outtextxy(70,55,' Кам'янець-Подільський коледж харчової промисловості НУХТ ');

settextstyle(4,0,4);

outtextxy(210,85,' Курсова робота ');

outtextxy(250,115,' на тему:');

outtextxy(50,140,' Розробка демонстраційної моделі руху ');

outtextxy(130,170,' планет Сонячної системи ');

settextstyle(4,0,1);

outtextxy(390,225,' Виконав:');

outtextxy(390,245,' Студент 931 групи ');

outtextxy(390,265,' спеціальності 5.05010101');

outtextxy(390,285,' Твердохліб В.А.');

outtextxy(390,335,' Керівник: ');

outtextxy(390,355,' Форкун В.П.');

outtextxy(300,425,'2013');

settextstyle(3,0,1);

delay(999);

outtextxy(390,415,' Натисніть ENTER');

outtextxy(390,435,' для переходу ');

readln;

Малювання мерехтливих зірок здійснюється за допомогою:

Randomize;

For i:=1 to 70 do

PutPixel(Random(640),Random (350),White);

Малювання орбіти здійснюється за допомогою:

For i := 1 to 100 do

PutPixel(320+Round(RadOrb * cos((i+VisualPage/5)*Pi/50+0.3)),

160+Round(RadOrb*Naklon*sin((i+VisualPage/5)*Pi/50-Pi/2)),15);

Малювання Сонця здійснюється процедурою:

PieSlice(310, 160, 0, 360, RadSun);

Малювання планети (її паралелей і меридіанів):

Ugol := Ugol+DUgol ; { кут повороту планети щодо Сонця }

Grad := Round(180*Ugol/Pi) mod 360;

ZemX := 320+Round(RadOrb*cos((Ugol+Pi/2+0.3))); { координати }

ZemY:=160+Round(RadOrb*Naklon*sin(Ugol)); {центра планети}

CompressZem := 2.5-cos(Ugol+0.3);

{ коефіцієнт врахування віддаленості планети від спостерігача }

ZemPix := Round(RadZem*CompressZem); { поточний радіус планети }

UgZem := UgZem+DUgZem; { кут повороту планети щодо своєї осі }

For i := 0 to 11 do { малювання меридіанів }

begin

UgMer := (UgZem+i*30) mod 360;

If (90<UgMer) and (UgMer<270) { установка початкового і кінцевого }

then begin StAngle := 90; EndAngle := 270 end { кутів дуги }

else begin StAngle := 270; EndAngle := 90 end; { еліпса меридіана }

Ua := (Grad+220) mod 360; Ub := (Grad+400) mod 360;

{ установка кольорів малювання затіненої і освітленої частин меридіана }

Color := LightBlue;

If Ua<=Ub then if (Ua<UgMer) and (UgMer<Ub) then Color := White;

If Ua >Ub then if (Ua<UgMer) or (UgMer<Ub) then Color := White;

SetColor(Color);

XRad := round((ZemPix*cos(UgMer*Pi/180)));

Ellipse(ZemX,ZemY,StAngle,EndAngle,abs(XRad),round(PressZem*ZemPix));

end;

For i := 2 to 7 do { малювання паралелей }

begin

XRad := abs(Round(ZemPix*sin(i*Pi/9)));

{ велика піввісь еліпса паралелі }

UpDown := Round(ZemPix*PressZem*cos(i*Pi/9));

{ висота паралелі над площиною екватора }

ParallelY := ZemY+UpDown; { координата Y центру еліпса паралелі }

SetColor(LightBlue);

Ellipse(ZemX, ParallelY, 0, 360, XRad, Round(Naklon*XRad));

{ затінена частина паралелі }

SetColor(White);

Ellipse(ZemX,ParallelY,Grad+220,Grad+400,XRad,Round(Naklon*XRad));

{ освітлена частина паралелі }

end;

Малювання протуберанців здійснюється процедурою:

RandSeed := VisualPage mod 12;

For i := 1 to 250 do

begin

Projection := (1-sqr(Random))*Pi/2;

XRad := RadSun+Round((20)*sin(Projection))-15;

PolUgol := 2 * Pi * Random+VisualPage/20;

PixelX := 310 + Round( XRad * cos(PolUgol));

PixelY := 160 + Round( Compress * XRad * sin(PolUgol));

PutPixel(PixelX, PixelY, LightRed)

end;

2.5 Інструкція користувача

Для запуску програми потрібно:

файл KURSOV2.PAS з програмою копіювати в папку “Мои документы”

відкрити середовище програмування TURBO PASCAL або School Pak. далі потрібно відкрити файл KURSOV2.PAS з програмою.

після того, коли програма вже відкрита, потрібно запустити її на виконання за допомогою клавіш Ctrl+F9 після цього ми спостерігаємо появу на моніторі титульної сторінки через деякий час з'являється напис для переходу на іншу сторінку.

після натискання кнопки Enter ми спостерігаємо самий процес обертання планет навколо Сонця.

для виходу с програми знову натискаємо кнопку Enter.

Таким чином, програму можна запускати необмежену кількість разів.

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

3. Результати роботи програми та контрольні приклади

На даному рисунку 3.1 зображена титульна сторінка до програми:

Рисунок 3.1 - Титульна сторінка

Виконання програми, яка демонструє рух планет навколо Сонця подано на рисунку 3.2

Рисунок 3.2 - Програма руху планет навколо Сонця

Висновки

Виконавши дану курсову роботу я отримав програму, що будує динамічне зображення: рух планет навколо Сонця. Оскільки програма виконана на мові програмування TURBO PASCAL це забезпечує їй широке коло використання. Програма не є вимогливою до ресурсів ПК, як технічних так і до програмного забезпечення. Програма служить для демонстрації руху планет Сонячної системи. Може бути використана в повсякденному житті, у навчанні, чи просто з пізнавальною метою.

Під час створення програми я вивчив багато нових процедур та обробників для створення анімації, графічних об'єктів.

На цій курсовій роботі я удосконалив свої вміння у роботі з TURBO PASCAL, а саме:

· удосконалив свої навички зі створення графічних об'єктів в TURBO PASCAL;

· удосконалив навички в роботі з текстом в TURBO PASCAL, його довільне розміщення на сторінці;

· працював з різними стилями написання, розміру та кольору тексту;

· удосконалив навички побудови блок-схем;

· закріпив навички в розробці алгоритмів і роботи з анімацією.

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

Перелік посилань

Немнюгин С.А. Turbo Pascal.- М.: Изд-во Питер, 2001.- 496с.

http://forcoder.ru/pascal/turbo-pascal-407

Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0.- М.: “Диалог-МИФИ”, 1995.- 288с.

Турбо Паскаль 7.0.- К.: Торгово-издательское бюро BHV, 1996.- 448с.

Марченко А.П. Программирование в среде Borland Pascal 7.0.- К.: “ВЕК”, К.: “ЮНИОР”, 1996.- 480с.

Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учеб. пособие.- М.: “Нолидж”, 200.- 576с. http://forcoder.ru/pascal/turbo-pascal-70-nachalnyj-kurs-585

Процедуры и функции модуля System библиотеки языка Turbo Pascal: Метод. рекомендации / Сост. О.А.Жульковский.- Днепродзержинск: ДГТУ, 1995.- 24с.

Turbo Pascal. Работа с модулем CRT: Метод. рекомендации / Сост. О.А. Жульковский.- Днепродзержинск: ДГТУ, 1996.- 12с.

Работа в среде программирования Borland Pascal 7.0: Метод. рекомендации / Сост. О.А. Жульковский, И.А. Жульковский.- Днепродзержинск: ДГТУ, 1996.- 22с.

Turbo Pascal. Процедуры и функции модуля Graph: Метод. рекомендации / Сост. О.А. Жульковский.- Днепродзержинск: ДГТУ, 1996.- 23с.

Turbo Pascal. Работа с модулем DOS: Метод. рекомендации / Сост. О.А. Жульковский.- Днепродзержинск: ДГТУ, 1996.- 17с.

Додатки

Код програми

Program Space;

Uses Crt, Graph;

Const

RadOrb = 250; RadSun = 70;

RadGal = 100; RadZem = 18;

Naklon = 0.2;

PressZem = 0.65;

Compress = 0.8;

Var

ZemX, ZemY, UgMer, PixelY, DUgZem , UpDown,

XRad, Grad, UgZem, PixelX, StAngle, Ua, Ub,

ParallelY , Color, ZemPix, EndAngle,

VisualPage, GrMode, GrError, GrDriver, i : Integer;

Ugol, CompressZem, Expansion,

DUgol, Projection, PolUgol : Real;

BEGIN

GrDriver := EGA; GrMode := EGAHi;

InitGraph(GrDriver, GrMode, 'C:\TP\BGI');

GrError := GraphResult; If GrError<>GrOk then Halt;

SetBkColor(Black);

SetFillStyle(1, Yellow);

Ugol := 0; DUgol := 2*Pi/180;

UgZem := 0; DUgZem := 14;

VisualPage := 1;

Repeat

SetVisualPage(1- (VisualPage mod 2));

VisualPage := VisualPage+1;

SetActivePage(1 - (VisualPage mod 2));

ClearDevice;

RandSeed:=1;

Expansion:=VisualPage/100;

For i:= 1 to VisualPage do

begin XRad := Trunc(Expansion*RadGal*Random);

PolUgol:= 2*Pi*Random-VisualPage/30;

PixelX := 370+Trunc(XRad*cos(PolUgol+1.8));

PixelY := 250+Trunc(XRad*0.5*sin(PolUgol));

PutPixel(PixelX, PixelY, White)

end;

Randomize;

For i:=1 to 70 do

PutPixel(Random(640),Random (350),White);

For i := 1 to 100 do

PutPixel(320+Round(RadOrb * cos((i+VisualPage/5)*Pi/50+0.3)),

160+Round(RadOrb*Naklon*sin((i+VisualPage/5)*Pi/50-Pi/2)),15);

PieSlice(310, 160, 0, 360, RadSun);

Ugol := Ugol+DUgol;

Grad := Round(180*Ugol/Pi) mod 360;

ZemX := 320+Round(RadOrb*cos((Ugol+Pi/2+0.3)));

ZemY:=160+Round(RadOrb*Naklon*sin(Ugol));

CompressZem := 2.5-cos(Ugol+0.3);

ZemPix := Round(RadZem*CompressZem);

UgZem := UgZem+DUgZem;

For i := 0 to 11 do

begin

UgMer := (UgZem+i*30) mod 360;

If (90<UgMer) and (UgMer<270)

then begin StAngle := 90; EndAngle := 270 end

else begin StAngle := 270; EndAngle := 90 end;

Ua := (Grad+220) mod 360; Ub := (Grad+400) mod 360;

Color := LightBlue;

If Ua<=Ub then if (Ua<UgMer) and (UgMer<Ub) then Color := White;

If Ua >Ub then if (Ua<UgMer) or (UgMer<Ub) then Color := White;

SetColor(Color);

XRad := round((ZemPix*cos(UgMer*Pi/180)));

Ellipse(ZemX,ZemY,StAngle,EndAngle,abs(XRad),round(PressZem*ZemPix));

end;

For i := 2 to 7 do

begin

XRad := abs(Round(ZemPix*sin(i*Pi/9)));

UpDown := Round(ZemPix*PressZem*cos(i*Pi/9));

ParallelY := ZemY+UpDown;

SetColor(LightBlue);

Ellipse(ZemX, ParallelY, 0, 360, XRad, Round(Naklon*XRad));

SetColor(White);

Ellipse(ZemX,ParallelY,Grad+220,Grad+400,XRad,Round(Naklon*XRad));

end;

If CompressZem<2 then PieSlice(310, 160, 0, 360, RadSun);

RandSeed := VisualPage mod 12;

For i := 1 to 250 do

begin

Projection := (1-sqr(Random))*Pi/2;

XRad := RadSun+Round((20)*sin(Projection))-15;

PolUgol := 2 * Pi * Random+VisualPage/20;

PixelX := 310 + Round( XRad * cos(PolUgol));

PixelY := 160 + Round( Compress * XRad * sin(PolUgol));

PutPixel(PixelX, PixelY, LightRed)

end;

until KeyPressed

END.

Размещено на Allbest.ru


Подобные документы

  • Головні особливості середовища Turbo Pascal. Властивості та вигляд системи лінійних алгебраїчних рівнянь. Опис схеми єдиного ділення (метод Гауса). Структура вхідної та вихідної інформації, текст програми, блок-схеми всіх процедур і головної програми.

    курсовая работа [276,1 K], добавлен 07.02.2011

  • Аналіз предметної області і постановка задачі на розробку програми для автоматизації роботи автопідприємства. Перелік та опис використаних компонентів та основних процедур програми. Опис структур та методів обробки даних. Інструкція для користувача.

    курсовая работа [2,3 M], добавлен 15.02.2012

  • Загальний опис алгоритмів головної програми та процедур запису і зчитування повідомлень на рівні блок-схем, детальний опис розробленої програми на рівні програмного коду. Характеристика процедури відображення стану регістрів. Опис екранних форм програми.

    курсовая работа [552,5 K], добавлен 09.06.2010

  • Написання програми для мобільного приладу, яка буде переводити числа з однієї системи числення в іншу. Розробка графічного інтерфейсу, яким зручно буде користуватись. Опис процедур, обробників та мови програмування. Дослідження логічних частин програми.

    курсовая работа [1,2 M], добавлен 27.08.2014

  • Розробка програми для вирішення графічної задачі. При вирішенні задачі необхідно cтворювати програму у середовищі програмування Turbo Pascal. Розробка алгоритму функціонування програми і надання блок-схеми алгоритму. Демонстрація роботи програми.

    курсовая работа [1,3 M], добавлен 23.06.2010

  • Побудування блок-схеми рішення завдання зі знайдення центра ваги однорідної усіченої призми. Розробка програми за допомогою язика програмування C++, опис змінних та функцій програми та загальної математичної моделі. Розробка інструкції користувача.

    курсовая работа [1,1 M], добавлен 04.01.2012

  • Розв’язання нелінійних алгебраїчних рівнянь методом хорд. Опис структури програмного проекту та алгоритмів розв’язання задачі. Розробка та виконання тестового прикладу. Інші математичні способи знаходження коренів рівнянь, та опис виконаної програми.

    курсовая работа [4,1 M], добавлен 28.09.2010

  • Опис методів і алгоритмів вирішення задачі в середовищі розробки Myeclipse. Основні функції програмного продукту, його структура. Розробка алгоритму та програми, інструкція користувачу. Результати тестування, лістинг основних блоків. Вікно головного меню.

    курсовая работа [1,8 M], добавлен 24.02.2014

  • Опис та схема процедури ініціалізації вимірювальної системи. Коефіцієнти апроксимуючого поліному. Опис та схема процедур перетворення статичного сигналу. Екранна форма програми. Опис процедури перетворення змінного сигналу. Блок-схема процедури Read_T.

    курсовая работа [187,3 K], добавлен 09.06.2010

  • Розробка програми GameBox, яка включає в себе дві гри, судоку та пятнашки. Опис структури даних та вимоги до них, процедур і функцій користувача, стандартних процедур і функцій, які використовувались в програмі, та файлів. Результати роботи програми.

    курсовая работа [5,3 M], добавлен 12.11.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.