IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Циклы в Graph
Player
сообщение 13.12.2005 23:18
Сообщение #1


Гость






Всем привет. Может кто поможет сделать, чтобы эти два цикла выполнялись одновременно.

Код
Program Anim;
Uses Crt,Graph;
Var I,J,Gd,Gm:Integer;
Begin
Clrscr;
Gd:=Detect;
Gm:=2;
InitGraph (Gd,Gm,'C:\BP\BGI');
SetBKColor (7);
ClearDevice;

SetColor (6);
For I:=200 To 300 Do Begin
Line (250,I,290,J);
Line (290,J,305,J);
Line (305,J,250,I);
ClearViewPort;
Delay(4000);
End;

For J:=110 To 210 Do Begin
Line (250,I,290,J);
Line (290,J,305,J);
Line (305,J,250,I);
ClearViewPort;
Delay(4000);
End;

CloseGraph;
End.
 К началу страницы 
+ Ответить 
volvo
сообщение 13.12.2005 23:39
Сообщение #2


Гость






Player, смысл программы в чем, скажи... А то не совсем понятно, что это такое мигает ... unsure.gif
 К началу страницы 
+ Ответить 
Alex7
сообщение 13.12.2005 23:43
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 85
Пол: Мужской

Репутация: -  0  +


Я уже давно мучаю, в прчмом смысле этот вопрос.
Ответ получил только что нужно переходить на 32 битный компилятор, так как в Паскале нету поддержки одновременных процессов, даже емуляцию я и то не понимаю как сделать! nea.gif norespect.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Romtek
сообщение 14.12.2005 0:37
Сообщение #4


Знаток
****

Группа: Пользователи
Сообщений: 303
Пол: Мужской
Реальное имя: Роман

Репутация: -  2  +


Player
Код
For I:=200 To 300 Do Begin
Line (250,I,290,J);
Line (290,J,305,J);
Line (305,J,250,I);
ClearViewPort;
Delay(4000);
End;

For J:=110 To 210 Do Begin
Line (250,I,290,J);
Line (290,J,305,J);
Line (305,J,250,I);
ClearViewPort;
Delay(4000);
End;

Тут что-то странное... Переменная J не инициализирована до первого цикла, а переменная I во втором цикле осталась той же, на какой закончился 1-й цикл. Ну и бред... mega_chok.gif

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

Alex7, не неси чушь. Нигде нет параллельного выполнения кода программ и даже 32-битный компилятор этого не делает.
То, что для нас считается одновременно - для компьютера оно последовательно, просто быстро выполняется и разницы ен видно.


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 14.12.2005 0:46
Сообщение #5


Гость






Alex7, "не путай теплое с мягким..." (С)

Практически одновременная отрисовка фигур еще не значит "многозадачность"... Вот тебе элементарный пример... Распакуй и запусти. Исходники не дам, только TPU файлы...
Прикрепленный файл  radars.rar ( 29.89 килобайт ) Кол-во скачиваний: 333


P.S. Настоящая многозадачность реализуема только на многопроцессорных системах...
 К началу страницы 
+ Ответить 
Alex7
сообщение 14.12.2005 8:33
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 85
Пол: Мужской

Репутация: -  0  +


Romtek,volvo
Помойму все об это давно знают, поэтому я так и выражаюсь- для простоты. Имею ввиду, что визуально процессы идут паралельно.
Но всетаки можно же организовать такую работу? ведь так?
Хоть кто то знает как правильно это сделать? wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 14.12.2005 9:13
Сообщение #7


Гость






Alex7, ты архив смотрел?

Я тебя иногда не понимаю... Тебе вроде надо, но когда тебе напишешь - ты не обращаешь внимания... dry.gif
 К началу страницы 
+ Ответить 
Alex7
сообщение 15.12.2005 19:26
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 85
Пол: Мужской

Репутация: -  0  +


Эм,......
М-да, я себя втаких случаях тоже иногда не понимаю wacko.gif
Я в упор не заметил, что ты это мне прикрепил данные! mega_chok.gif
однака... nea.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Alex7
сообщение 15.12.2005 20:01
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 85
Пол: Мужской

Репутация: -  0  +


Ну, посмотрел прогу.
Круто, красиво, наглядно.
НО зачем мне такой сложный пример, если мне нужно всего лишь ответ: КАК сделть процессы одновремеено?
Хотел, чтобы мне на примере моей проги показали, как это нужно сделать.
Если таки кто-то сможет(90% моего обращения это, конечно к Volvo=) ) То привожу свою прогу, в которой я хотел сделать "одновременное" выполнение подсчета nsk и выполнение процедуры point
Program NaimensheSpilneKratne(lab5);
Uses CRT;
Var a,b,c: integer;
dob,max: integer;
nsk: longint;
procedure SetCursorSize(cStart, cEnd: byte); assembler;
asm
mov ah, 1
mov ch, cStart
mov cl, cEnd
int 10h
end;
procedure SetNormalCursor;
var start_end: word;
begin
if LastMode > Font8x8 then start_end := $0507
else
if LastMode = Mono then start_end := $0b0c
else start_end := $0607;
SetCursorSize(hi(start_end), lo(start_end));
end;
procedure SetNoCursor;
begin
SetCursorSize(32, 0);
end;
Procedure point(p:byte);
Var i,j: byte;
Begin
While p=1 do
begin
For i:=1 to 3 do
begin
write('.'); for j:=1 to 4 do delay(9999);
end;
gotoxy(wherex-3,wherey); clreol; for j:=1 to 4 do delay(9999);
end;
End;
Begin
clrscr; textbackground(0);
textcolor(1); gotoxy(26,2); writeln('.::Џа®Ја ¬ ®ЎзЁб«Ґ­­п Ќ‘Љ::.');
Textcolor(yellow); For b:=1 to 4 do delay(9999);
Writeln('‚ўҐ¤iвм 3 жi«Ёе зЁб« ');
gotoxy(65,1);textcolor(1); Write('Ctrl+Pause=>exit'); gotoxy(1,4);
textcolor(15); readln(a,b,c);
{ЏҐаҐўiаЄ ­ ўҐ«ҐзЁ­г\begin}
if (a<2) or (a>9999) or (b<2) or (b>9999) or (c<2) or (c>9999) then
begin
repeat
textcolor(yellow);
writeln('ЌҐўiа­Ґ зЁб«®! ’ॡ г ¤i Ї §®­i- 2..9999 !');
textcolor(12{28});
gotoxy(30,wherey); write('-=‚ўҐ¤iвм § ­®ў®=-'); textcolor(15);
repeat until keypressed;
if keypressed then
begin
repeat
delline; gotoxy(1,wherey-1);
until wherey=4;
delline; readln(a,b,c);
end;
until (a>1) and (a<9999) and (b>1) and (b<9999) and (c>1) and (c<9999);
end;
{ЏҐаҐўiаЄ ­ ўҐ«ҐзЁ­г\end}
{ЏаЁбў®Ґ­­п §­ 祭м\begin}
if (a>=b) and (a>=c) then max:=a else
if (b>=a) and (b>=c) then max:=b else
max:=c;
{ЏаЁбў®Ґ­­п §­ 祭м\end}
textcolor(14); gotoxy(26,wherey); Write('‰¤Ґ ®ЎзЁб«Ґ­­п. ‡ 祪 ©вҐ.');
SetNoCursor;
point(0);
nsk:=0;
Repeat nsk:=nsk+max until (nsk mod a=0) and (nsk mod b=0) and (nsk mod c=0);
delline; gotoxy(1,wherey);
SetNormalCursor;
dob:=a*b*c;
sound(7000); delay(9999);delay(9999); nosound;
textcolor(green); writeln('max: ',max,#13,#10,'Ќ‘Љ жЁе зЁбҐ«= ',nsk);
if nsk<>dob then
writeln('i ­Ґ ¤®аiў­оу хе ¤®ЎгвЄг')
else
writeln('i ¤®аiў­оу хе ¤®ЎгвЄг');
For b:=1 to 9 do delay(9999);
gotoxy(58,1); clreol;
gotoxy(30,25); textcolor(8{24}); Write('Press any key to exit');
{Єгаб®а- ­i¬ жiп\begin}
repeat
For b:=50 downto 30 do
begin
For a:=1 to 3 do delay(9999); gotoxy(b,25); if keypressed then exit;
end;
For b:=31 to 50 do
begin
For a:=1 to 3 do delay(9999); gotoxy(b,25); if keypressed then exit;
end;
until keypressed;
{Єгаб®а- ­i¬ жiп\end}
End.
{Џ ¬'пвЄ }
{Ќ i¬Ґ­миҐ бЇi«м­Ґ Єа в­Ґ - ­ i¬Ґ­миҐ ¤®¤ в­у, пЄҐ ¤i«Ёвмбп ­ Є®¦­Ґ § жЁе зЁбҐ«.}

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Alex7
сообщение 17.12.2005 14:05
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 85
Пол: Мужской

Репутация: -  0  +


Плиз!
Объясните! ↑
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"