Зміст
Вступ 4
1. Загальна постановка завдання для курсової роботи 5
2. Опис алгоритму розв’язання поставлених задач 7
3. Блок-схеми розв’язання задач. 8
4. Текст програми мовами програмування Паскаль та Сі. 13
5. Результати роботи програм і скріншоти виконання програм 20
5.1 В средовищі С 20
5.1 В средовищі Pascal 23
Висновки 27
Список джерел інформації 28
Вступ
Pascal — алгоритмічна мова програмування універсального призначення. Існують діалекти мови з підтримкою об'єктно-орієнтованого програмування. В 1990 році було затверджено стандарт ISO 7185:1990, «Pascal», та ISO 10206:1990 «Extended Pascal».
Turbo, а пізніше Borland Pascal— це одна з найвдаліших та найпоширеніших реалізацій мови Pascal, створена компанією Borland.Turbo Pascal — розширення американського стандарту (ANSI Pascal), яке враховує архітектурні особливості MS-DOS та MS Windows і постачається зі значними за обсягом і різноманітності пакетами стандартних процедур. Такі принципові нововведення, як апарат модулів і об'єктно-орієнтовані засоби полегшують конструювання великих програмних систем на основі технології модульного програмування.
Компілятор Turbo Pascal працює за однопрохідною схемою, реалізує функції редагування зв'язків, формуючи на виході готовий до виконання об'єктний код. Компілятор може здійснювати широкий набір локальних оптимізацій (згортання констант, виключення невикористовуваного коду і зайвих даних, оптимізація операцій і т. д.), що сприяє високій ефективності кінцевих програм.
C (англ. C) — універсальна, процедурна, імперативна мова програмування загального призначення, розроблена у 1972році Денісом Рітчі у Bell Telephone Laboratories з метою написання нею операційної системи UNIX.
Хоча С і було розроблено для написання системного програмного забезпечення, наразі вона досить часто використовується для написання прикладного програмного забезпечення.
С, ймовірно, є найпопулярнішою у світі мовою програмування за кількістю вже написаного нею програмного забезпечення, доступного під вільними ліцензіями коду та кількості програмістів, котрі її знають. Версії компіляторів для мови С існують для багатьох операційних систем та апаратних архітектур. C здійснила великий вплив на інші мови програмування, особливо на C++, яка спочатку проектувалася, як розширення для С, а також на Java та C#, які запозичили у С синтаксис.
1. Загальна постановка завдання для курсової роботи
Скласти програмні комплекси мовами програмування Pascal та С для розв’язання та виконання поставлених завдань, згідно індивідуального варіанту:
перший програмний комплекс складається мовою програмування Pascal та повинен містити графічний інтерфейс з варіантами вибору подальшої роботи:
Основне меню вибору:
Заголовок.
Завдання №1.
Завдання №2.
Вихід.
Причому кожен пункт основного меню повинен містити свої власні підпункти, згідно постановки кожного окремого завдання;
другий програмний комплекс складається мовою програмування С, але з використанням інтерфейсу в звичайному текстовому режимі;
пункт Заголовок повинен виводити на екран відомості про автора даної роботи, вид цієї роботи, її тему та номер індивідуального варіанта. Дана інформація виведення повинна бути оформлена у вигляді підпрограми;
пункт Завдання №1 має містити наступні підпункти:
умова завдання №1;
створення файлу з табуляцією функції; (табуляція полягає в тому, що створюється таблиця, яка має наступний вигляд:
Х
Y
…
…
Причому обчислення функції проводиться в окремій підпрограмі-функції з вказаним кроком);
виведення табуляції функції на екран;
графік функції (на екран виводиться графік відповідної функції в Декартовій системі координат);
пункт Завдання №2 має містити наступні підпункти:
умова завдання №2;
вміст файлу (виведення на екран вже існуючого файлу, в якому міститься інформація про вхідні дані для завдання №2);
виведення графічного малюнку (виведення малюнків згідно поставленого завдання);
кожен пункт меню передбачає повернення на основну сторінку. Вихід закриває всі вікна даної програми.
Курсова робота повинна задовольняти одному із рівнів виконання:
1 рівень – програми не містять графічного та текстового інтерфейсу. Кожне поставлене завдання виконується в окремій програмі відповідною мовою програмування.
2 рівень – програмні комплекси містять не графічний, а текстовий інтерфейс-меню вибору подальшої роботи, інші умови курсової роботи виконуються.
3 рівень – виконано всі поставлені до курсової роботи завдання.
Варіант 2
1. Виконати табуляцію параметрично заданої функції (Циклоїда), записати її у файл та вивести його на екран. Побудувати і вивести на екран монітора графік цієї функції:
;
a, b > 0; t ( (0; 2().
2. У двох файлах задано координати протилежних вершин прямокутників, сторони яких розташовані вертикально або горизонтально. Координати вершин тих прямокутників, периметр яких більше середнього значення периметрів, перемістити в інший файл. Вивести на екран прямокутник, периметр якого найближчий до суми двох найменших прямокутників.
2. Опис алгоритму розв’язання поставлених задач
Мітка «start»: Очищення екрану.
Виведення текстового меню.
Вибір пункту меню за допомогою введення потрібної цифри з клавіатури.
Якщо введено «1», то відбувається виведення інформації про розробника програми за допомогою підпрограми «zagolovok», перехід до мітки «start» відбувається при натисненні будь-якої клавіші.
Якщо введено «2», то відбуваються наступні дії:
а) очищення екрану;
б) відкриття файлу «kyrsov.txt» для запису;
в) виведення тексту завдання №1;
г) виведення тексту, який пропонує ввести значення кроку, сталих a та b.
д) виведення шапки таблиці;
е) запуск циклу з передумовою (t<2*π):
- обчислення значень x та y;
- запис файлу «kyrsov.txt»;
- збільшення змінної t на крок p;
- виведення таблиці значень;
- кінець циклу.
є) закриття файлу «kyrsov.txt»;
ж) виведення тексту;
з) при введенні клавіші «Введення» відбудеться очищення екрану.
и) підключення графічного режиму;
і) виведення осей Ox та Oy.
ї) запуск циклу з передумовою (t<2*π):
- обчислення значень x та y;
- виведення точки ;
- збільшення змінної t на крок 0,001;
- кінець циклу.
й) при натисненні будь-якої клавіші відбувається закриття графічного режиму та перехід до мітки «start».
Якщо введено «3», то відбуваються наступні дії:
а) очищення екрану;
б) виведення тексту завдання №1;
в) при введенні будь-якої клавіші відбудеться продовження дій;
г) відкриття файлу «kurs1.txt» для читання;
д) відкриття файлу «kurs2.txt» для читання;
е) присвоєння початкових значень деяким змінним;
є) запуск циклу з передумовою (не кінець файлу):
- зчитування значень x, y, m, n з файлів «ktrs1.txt» та «ktrs2.txt»;
- обчислення периметру;
- обчислення суми периметрів;
- обчислення суми прямокутників;
- якщо периметр менший за мінімальний периметр, то відбувається переприсвоєння значень двох найменших периметрів;
- кінець циклу.
ж) обчислення значення середнього периметру та суми двох найменших периметрів;
з) відкриття файлу «kurs3.txt» для запису;
и) запуск циклу з передумовою (не кінець файлу):
- зчитування значень x, y, m, n з файлів «kurs1.txt» та «kurs2.txt»;
- обчислення периметру;
- якщо периметр більший за середній периметр, то відбувається запис файлу «kurs3.txt»;
- обчислення відхилення значення периметру та значення суми двох найменших периметрів;
- якщо знайдене відхилення менше ніж попереднє, то відбувається запис нового відхилення та координат вершин прямокутника;
- кінець циклу.
і) закриття файлу «kurs1.txt»;
ї) закриття файлу «kurs2.txt»;
й) закриття файлу «kurs3.txt»;
к) підключення графічного режиму;
л) виведення прямокутника, периметр якого найближчий до суми двох периметрів найменших прямокутників;
м) при натисненні будь-якої клавіші відбувається закриття графічного режиму та перехід до мітки «start».
Якщо введено «4», то відбуваються вихід з програми.
3. Блок-схеми розв’язання задач.
4. Текст програми мовами програмування Паскаль та Сі.
Pascal
C
PROGRAM KP;
uses crt,graph;
type kyrsov=record
i:real;
j:real;
end;
label start;
var f:file of kyrsov; f1,f2,f3:file of real;
g:kyrsov; v,dg,dm,c,d,u,i,o,j:integer; p,a,b,t,x,y,m,n,Sp,S,pm,pmin,Sc,h,q,w,e,r,mo,ma:real;
procedure zagolovok(m:char);
begin
clrscr;
writeln('Kyrsova robota:');
writeln('Avtor: Boyko Olexandr Volodumerovuch, grupa SP-146');
writeln('Variant 2');
end;
Begin
start:
clrscr;
writeln('1.Zagolovok');
writeln('2.Zavdannya 1');
writeln('3.Zavdannya 2');
writeln('4.Vuhid');
readln(v);
case v of
1:
begin
zagolovok('1');
readln;
goto start;
end;
2:
begin
clrscr;
assign(f,'kyrsov.txt');rewrite(f);
writeln('Zavdannya 1:');
writeln('Vukonatu tabylyaciyu parametruchno zadanoi funcii');
writeln('(Cukloida), zapusatu ii y fail ta vuvestu yogo na ekran.');
writeln('Pobuduvatu i vuvestu na ekran monitora grafik ciei funcii:');
writeln('x=a*t-b*sin(t); y=a-b*cos(t); a,b>0; t e [0;2*pi].');
t:=0;
writeln('Vvedit krok p: '); readln(p);
writeln('VVedit znachennya a(a>0): '); readln(a);
writeln('VVedit znachennya b(b>0): '); readln(b);
writeln(' ___________________________________________');
writeln(' | | |');
writeln(' | X | Y |');
writeln(' |____________________|____________________|');
while (t<=2*3.14) do
begin
x:=a*t-b*sin(t);
g.i:=x;
y:=a-b*cos(t);
g.j:=y;
write(f,g);
t:=t+p;
if (x<10) then
begin
writeln(' | ',x:4:2,' | ',y:4:2,' |');
writeln(' |____________________|____________________|');
end else
if (y<10) then
begin
writeln(' | ',x:4:2,' | ',y:4:2,' |');
writeln(' |____________________|____________________|');
end else
begin
writeln(' | ',x:4:2,' | ',y:4:2,' |');
writeln(' |____________________|____________________|');
end;
end;
close(f);
writeln('Dlya vuvedennya grafika natusnit vvod');
readln;
clrscr;
dg:=detect;
initgraph(dg,dm,'');
Setcolor(9);
Line(0,240,640,240);
Line(320,0,320,480);
t:=0;
while (t<=2*3.14) do
begin
x:=a*t-b*sin(t);
y:=a-b*cos(t);
c:=trunc(x*5);
d:=trunc(y*5);
Putpixel(c+320,-d+240,15);
t:=t+0.001;
end;
readkey; closegraph;
goto start;
end;
3:
begin
clrscr;
writeln('Y dvoh failah zadano koordunatu protulegnuh vershun');
writeln('pryamokytnukiv, storonu yakuh roztashovani vertukalno abo');
writeln('horuzuntalno. Koordunatu vershun tuh pryamokytnukiv,');
writeln('perumetr yakuh bilshe serednogo znachennya perumetriv,');
writeln('peremistutu v inshuj fail. Vuvestu na ekran pryamokytnuk,');
writeln('perumetr yakogo najbluzhchuj do symu dvoh najmenshuh');
writeln('pryamokytnukiv');
readln;
assign(f1,'kurs1.txt');
reset(f1);
assign(f2,'kurs2.txt');
reset(f2); Sp:=0; pmin:=10000; pm:=10000; h:=0; mo:=20000;
while not eof(f1) do
begin
read(f1,x);
read(f1,y);
read(f2,m);
read(f2,n);
p:=2*(abs(m-x)+abs(n-y));
Sp:=Sp+p;
h:=h+1;
if (p<pmin) then
begin
pm:=pmin;
pmin:=p;
end;
end;
Sc:=Sp/h;
S:=pm+pmin;
assign(f3,'kurs3.txt');
reset(f1);
reset(f2);
rewrite(f3);
while not eof(f1) do
begin
read(f1,x);
read(f1,y);
read(f2,m);
read(f2,n);
p:=2*(abs(m-x)+abs(n-y));
if (p>Sc) then
begin
q:=x;
w:=y;
e:=m;
r:=n;
write(f3,q);
write(f3,w);
write(f3,e);
write(f3,r);
end;
ma:=abs(S-p);
if (mo>ma) then
begin
mo:=ma;
u:=trunc(x);
i:=trunc(y);
o:=trunc(m);
j:=trunc(n);
end;
end;
close(f1);
close(f2);
close(f3);
clrscr;
dg:=detect;
initgraph(dg,dm,'');
bar(u,i,o,j);
readln; closegraph;
goto start;
end;
4:end;
End.
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
void func(void);
void zagolovok(void)
{clrscr();
printf("\n Kursova robota:");
printf("\n Avtor: Boyko Olexandr Volodumerovuch, grupa SP-146");
printf("\n Variant 2");}
main ()
{int v,driver,mode,c,d,u,i,o,j;
float p,a,b,m,n,Sp,S,pm,pmin,Sc,h,q,w,e,r,mo,ma,x,y,t;
FILE *file,*f1,*f2,*f3;
start:
clrscr();
printf("\n 1.Zagolovok.");
printf("\n 2.Zavdannya 1.");
printf("\n 3.Zavdannya 2.");
printf("\n 4.Vuhid.\n");
scanf("%d",&v);
switch (v)
{case 1:
{zagolovok();
getch();
goto start;}break;
case 2:
{clrscr();
printf("\n Zavdannya 1:");
printf("\n Vukonatu tabylyaciyu parametruchno zadanoi funcii");
printf("\n (Cukloida), zapisatu ii y fail ta vuvestu yogo na ekran.");
printf("\n Pobuduvatu i vivestu na ekran monitora grafik ciei funcii:");
printf("\n x=a*t-b*sin(t); y=a-b*cos(t); a,b>0; t e [0;2*pi].\n");
t=0;
printf("\n Vvedit krok k: "); scanf("%f", &p);
printf("\n VVedit znachennya a(a>0): "); scanf("%f", &a);
printf("\n VVedit znachennya b(b>0): "); scanf("%f", &b);
printf("\t _________________________________________");
printf("\t | | |\n");
printf("\t | X | Y |\n");
printf("\t | | |\n");
printf("\t |____________________|____________________|\n");
file = fopen("kyrsov.txt","wt+");
while (t<6.28)
{x=a*t-b*sin(t);
y=a-b*cos(t);
fprintf(file,"%4.2f\t%4.2f\n",x,y);
t += p;
printf("\t | %10.4f | %10.4f |\n",x,y);
printf("\t |____________________|____________________|\n");}
fclose(file);
printf("Dlya vuvedennya grafika natusnit vvod");
getch();
clrscr();
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"C:\\TURBOC3\\BGI");
setfillstyle(1,10);
line(0,240,640,240);
line(320,0,320,480);
t=0;
while (t<6.28)
{x=a*t-b*sin(t);
y=a-b*cos(t);
c=floor(x*5)+320;
d=-floor(y*5)+240;
putpixel(c,d,15);
t+=0.01;}
getch();closegraph();
goto start;}
case 3:
{clrscr();
printf("Y dvoh failah zadano koordunatu protulegnuh vershun\n");
printf("pryamokytnukiv, storonu yakuh roztashovani vertukalno abo\n");
printf("horuzuntalno. Koordunatu vershun tuh pryamokytnukiv,\n");
printf("perumetr yakuh bilshe serednogo znachennya perumetriv,\n");
printf("peremistutu v inshuj fail. Vuvestu na ekran pryamokytnuk,\n");
printf("perumetr yakogo najbluzhchuj do symu dvoh najmenshuh\n");
printf("pryamokytnukiv\n");
f1 = fopen("kurs1.txt","r");
f2 = fopen("kurs2.txt","r");
Sp=0; pmin=10000; pm=10000; h=0; mo=20000;
while (!feof(f1))
{fscanf(f1,"%f\t%f\n",&x,&y);
fscanf(f2,"%f\t%f\n",&m,&n);
p=2*(abs(m-x)+abs(n-y));
Sp=Sp+p;
h=h+1;
if (p<pmin)
{pm=pmin;
pmin=p;}}
fclose(f1);
fclose(f2);
f1 = fopen("kurs1.txt","r");
f2 = fopen("kurs2.txt","r");
Sc=Sp/h;
S=pm+pmin;
f3 = fopen("kurs3.txt","w");
while (!feof(f1))
{fscanf(f1,"%f%f",&x,&y);
fscanf(f2,"%f%f",&m,&n);
p=2*(abs(m-x)+abs(n-y));
if (p>Sc)
{q=x;
w=y;
e=m;
r=n;
fprintf(f3,"%4.2f\t%4.2f\t%4.2f\t%4.2f\n",q,w,e,r);}
ma=abs(S-p);
if (mo>ma)
{mo=ma;
u=x;
i=y;
o=m;
j=n;}}
fclose(f1);
fclose(f2);
fclose(f3);
getch();
clrscr();
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"C:\\TURBOC3\\BGI");
bar(u,i,o,j);
getch(); closegraph();
goto start;}
case 4:break;
default:printf("nevirnuj vvod");}
return 0;}
5. Результати роботи програм і скріншоти виконання програм
5.1 Середовище С
Меню
Заголовок
Результати виконання завдання 1
а) опис завдання
б) табуляція
в) виведення графіка
Результати виконання завдання 2
а) опис завдання
в) виведення прямокутника
5.1 Середовище Pascal
Меню
Заголовок
Результати виконання завдання 1
а) опис завдання
б) табуляція
в) виведення графіка
Результати виконання завдання 2
а) опис завдання
в) виведення прямокутника
Висновки
При виконанні даної курсової роботи я використав свої знання з програмування для виконання завдань. При складанні алгоритму я задіяв свої навички створення алгоритму, які здобув вивчаючи курс програмування, а також при виконанні лабораторних робіт. Блок-схеми були побудовані спираючись на створений алгоритм, застосовуючи знання з будування блок-схем. Перед безпосереднім створенням програми я створив математичну модель, за якою вивів потрібні для виконання завдання формули. Після цього почав писати програмний код на компіляторі Turbo Pascal, після написання програми я скомпілював програму, при цьому компілятор вказав на помилки, які я мав виправити.
Виправивши всі помилки, програма скомпілювалась і я перевірив правильність виконання завдання. Потім почав писати програмний код на компіляторі Turbo С, після написання програми я скомпілював програму, при цьому компілятор вказав на помилки, які я мав виправити. Виправивши всі помилки, програма скомпілювалась і я перевірив правильність виконання завдання. Вдало виконавши обидві програми я зробив скріншоти кожного екрану програми.
Під час виконання курсової роботи в мене виникли деякі проблеми. Одною з таких проблем було неправильний запис зміни аргументу t при виведенні графіка циклоїди. Замість «=+» я поставив «+=» і в мене замість графіка виводилася одна точка і відбувалося зациклення. В цілому ж проблем з виконанням завдання не виникало.
Список джерел інформації
Ушаков Д.М., Юркова Т.А. – «Паскаль для школьников.» – СПб.: Питер, 2010. – 256 с.
Х. Дайтел, П. Дейлел – «Как програмировать на С».
Ю. Федоренко – «Алгоритмы и программы на Turbo Pascal. Учебный курс» – Питер, 2001. – 240 с.
Ю. А. Шпак – «Turbo Pascal 7.0 на примерах» – Юниор, 2003 – 496 с.
Стивен Прата – «Язык программирования C. Лекции и упражнения» – Вильямс, 2013 – 960 с.
Брайан Керниган, Деннис Ритчи – «Язык программирования C» – Вильямс,2009 – 304 с.
Герберт Шилдт – «C/C++. Справочник программиста» – Вильямс, 2003 – 432 с.