это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
Ознакомительный фрагмент работы:
Міністерство освіти і науки України
Полтавський національний технічний університет
імені Юрія Кондратюка
Факультет інформаційних та телекомунікаційних технологій і систем
Кафедра комп’ютерних та інформаційних технологій і систем
Курсова робота
з дисципліни «Основи програмування та алгоритмічні мови»
КР ______
Розробив cтудент
групи 101-ТН
Керівник роботи
Полтава 2010
Зміст
Вступ
1. Постановка задачі
2. Розв’язання задачі
3. Алгоритм задачі
4. Реалізація програми 8
5. Демонстрація роботи програми
Висновок
Використана література
Щоб виконати дану роботу треба мати достатні знання мови програмування Турбо Паскаль, а також вміння складати алгоритми. Для коду даної програми я використав навики з виконання практичних робіт.
Гру «Життя» вперше створив Дж. Конвей. Це власне не гра, а проста модель еволюції групи живих організмів. Пасивне спостереження над сукупністю великої кількості поколінь цієї гри може дати якусь задоволення.
Ігровим полем(«житєвим простором») в цій грі являється двохвимірна поверхня, розділена на квадрати. В нас це поверхня тора, яка не має границь: наявність границь завжди зв’язано з проблемами. Кожна клітинка має 8 сосідів. Ячейка може бути заселена одним організмом, або бути порожньою.
Розробити програму для вирішення поставленої прикладної задачі. При вирішенні задачі необхідно:
- Створити програму у середовищі програмування TurboPascal
- Розробити алгоритм функціонування програми
- Надати блок-схему алгоритму
- Продемонструвати роботу програми
УМОВА ЗАДАЧІ
Гра моделює життя поколінь гіпотетичної колонії живих кліток,які виживають, розмножуються або гинуть у відповідності з наступними правилами.
Клітка виживає, якщо має двох або трьох сусідів з восьми можливих, якщо один або жодного то клітка гине в ізоляції. Якщо має чотири та більше, то гине від перенаселення.У будь-якій порожній позиції у якої рівно три сусіди у наступному поколінні з'являється нова клітка.
Hor – кількість кліток по горизонталі
Ver – кількість кліток по вертикалі
Cell_width, cell_height – ширина та висота клітки
Prob_factor – параметр, що визначає вірогідність заселення кліток про формуванні початкової популяції.
Процедура init_cells формує початкову популяцію, встановлюючи елементам масива new_gen значення 0 або 1 з використаним параметром вірогідності.
Процедура next_generationбудує в масиві new_gen будує наступну популяцію за правилами.
Процедура init_screen ініціалізує графічний режим та заповнює масиви графічних координат центрів кліток. Процедура displayвиконує основну роботу по побудові зображення робочого поля гри на прихованій активній сторінці та виводить на екран. Це уможливлюють процедури SetActivePage та SetVisualPage, викликані з параметром 0 або 1, визначаючим номер графічної сторінки. Перша процедура при викликанні встановлює активну сторінку, а друга візуальну.
a. Алгоритм задачі
А) Головний алгоритм
Б) Алгоритм процедури init_cells
В) Алгоритм процедуриnext_generation
Г) Алгоритм процедури init_screen
Д) Алгоритм процедури display
Е) Алгоритм процедури rule_plane
Реалізація програми
PROGRAM LIFE;
uses crt,dos,graph;
const
hor=100;
ver=70;
cell_width=8;
cell_height=6;
prob_factor=0.5;
var
old_gen,new_gen:array[0..ver,0..hor] of 0..1;
prob:real;
ch:char;
x_center:array[0..hor] of word;
y_center:array[0..hor] of word;
gen_count,radius,page:word;
ss:string[10];
procedure init_cells;
var
j,k:word;
begin
gen_count:=0;
for j:=0 to ver do
for k:=0 to hor do
begin
old_gen[j,k]:=0;
if random<=prob then
new_gen[j,k]:=1
else
new_gen[j,k]:=0;
end;
end;
procedure next_generation;
var
j,k,m,prev_j,next_j,prev_k,next_k:word;
begin
old_gen:=new_gen;
for j:=0 to ver do
begin
if j=0 then
prev_j:=ver
else
prev_j:=j-1;
if j=ver then
next_j:=0
else
next_j:=j+1;
for k:=0 to hor do
begin
if k=0 then
prev_k:=ver
else
prev_k:=k-1;
if k=hor then
next_k:=0
else
next_k:=k+1;
m:=old_gen[prev_j,prev_k]
+old_gen[prev_j,k]
+old_gen[prev_j,next_k]
+old_gen[j,prev_k]
+old_gen[j,next_k]
+old_gen[next_j,prev_k]
+old_gen[next_j,k]
+old_gen[next_j,next_k];
if (old_gen[j,k]=1) and ((m<=1) or (m>=4)) then
new_gen[j,k]:=0
else
if (old_gen[j,k]=0) and (m=3) then
new_gen[j,k]:=1
else
new_gen[j,k]:=old_gen[j,k];
end;
end;
end;
procedure init_screen;
var
graphdriver,graphmode:integer;
j,k:word;
begin
graphdriver:=vga;
graphmode:=vgamed;
page:=0;
initgraph(graphdriver,graphmode,'');
if graphresult<>grOk then
halt;
for k:=0 to hor do
x_center[k]:=k*cell_width+cell_width div 2;
for j:=0 to ver do
y_center[j]:=j*cell_height+cell_height div 2;
radius:=4;
end;
procedure display;
var
j,k:word;
procedure rule_plane;
var
j,k:word;
begin
setviewport(0,0,getmaxx,getmaxy,clipon);
setfillstyle(solidfill,blue);
bar(0,0,getmaxx,10);
setcolor(white);
outtext('Generation: ');
outtextxy(250,0,'Q: Quit');
outtextxy(450,0,'Any other key: renew');
str(gen_count,ss); outtext(ss);
setbkcolor(darkgray);
end;
begin
if gen_count<>0 then
next_generation;
inc(gen_count);
page:=1-page;
setactivepage(page);
cleardevice;
setcolor(yellow);
for j:=0 to ver do
for k:=0 to hor do
if new_gen[j,k]=1 then
circle(x_center[k],y_center[j],radius);
rule_plane;
setvisualpage(page);
end;
begin
init_screen;
repeat
randomize;
prob:=0.1+prob_factor*random;
outtextxy(0,0,'Game of life');
writeln;
outtextxy(0,15,'Live cells inserted at random,');
str(prob:3:3,ss);
outtextxy(0,30,'with probability '+ss);
outtextxy(0,60,'Press any key to start: ');
ch:=readkey;
cleardevice;
init_cells;
repeat
display;
if keypressed then
begin
ch:=readkey;
break;
end;
until false;
setviewport(0,0,getmaxx,getmaxy,clipon);
cleardevice;
setcolor(white);
if upcase(ch)='Q' then
break;
until false;
closegraph;
end.
b. Демонстрація роботи програми
Початкове вікно програми
Процес генерації 12 популяції
ВИСНОВОК
Розроблена програма дозволяє спостерігати життя, наприклад, колонії живих організмів. Я детальніше познайомився з принципами роботи в графічному режимі.
ВИКОРИСТАНА ЛІТЕРАТУРА
«Основи програмування»Т.В. Ковалюк
«TurboPascal» В.Фаронов
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников
Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
Выполнить 2 контрольные работы по Информационные технологии и сети в нефтегазовой отрасли. М-07765
Контрольная, Информационные технологии
Срок сдачи к 12 дек.
Архитектура и организация конфигурации памяти вычислительной системы
Лабораторная, Архитектура средств вычислительной техники
Срок сдачи к 12 дек.
Организации профилактики травматизма в спортивных секциях в общеобразовательной школе
Курсовая, профилактики травматизма, медицина
Срок сдачи к 5 дек.
краткая характеристика сбербанка анализ тарифов РКО
Отчет по практике, дистанционное банковское обслуживание
Срок сдачи к 5 дек.
Исследование методов получения случайных чисел с заданным законом распределения
Лабораторная, Моделирование, математика
Срок сдачи к 10 дек.
Проектирование заготовок, получаемых литьем в песчано-глинистые формы
Лабораторная, основы технологии машиностроения
Срок сдачи к 14 дек.
Вам необходимо выбрать модель медиастратегии
Другое, Медиапланирование, реклама, маркетинг
Срок сдачи к 7 дек.
Ответить на задания
Решение задач, Цифровизация процессов управления, информатика, программирование
Срок сдачи к 20 дек.
Написать реферат по Информационные технологии и сети в нефтегазовой отрасли. М-07764
Реферат, Информационные технологии
Срок сдачи к 11 дек.
Написать реферат по Информационные технологии и сети в нефтегазовой отрасли. М-07764
Реферат, Геология
Срок сдачи к 11 дек.
Разработка веб-информационной системы для автоматизации складских операций компании Hoff
Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления
Срок сдачи к 1 мар.
Нужно решить задание по информатике и математическому анализу (скрин...
Решение задач, Информатика
Срок сдачи к 5 дек.
Заполните форму и узнайте цену на индивидуальную работу!