user <назв модуля>;
а дальше то как ? напишите пожалуйста, в faq, статьях и уроках вроде нету если пропустил ткните носом
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
SeRGuSii |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Репутация: ![]() ![]() ![]() |
Забыл как описывать свои модули, помню, что вроде надо так
Код user <назв модуля>; а дальше то как ? напишите пожалуйста, в faq, статьях и уроках вроде нету если пропустил ткните носом |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
unit <имя_модуля>;
interface
...
{ описание процедур, функций и объектов, которые
должны быть доступны в вызывающем модуле/программе }
implementation
...
{ реализация процедур, функций и объектов }
{ инициализирующая часть модуля:
выполняется при подключении модуля к программе }
begin { begin может отсутствовать, если модулю не нужна инициализация }
end.
|
klem4 |
![]()
Сообщение
#3
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
И еще не забудь, что имя файла, в котором находится модуль, должно совпадать с именем в программе(то что после слова
unit <тут>;
)Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
SeRGuSii |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Репутация: ![]() ![]() ![]() |
примного благодарен
![]() |
SeRGuSii |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Репутация: ![]() ![]() ![]() |
Что нужно сделать, чтобы заработал модуль GRAPH, а то паскаль выдает ошибку:
ERROR 15: file not found (graph.tpu)
Хотя в папке units он присутствует. |
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
try:
зайди в Option->Directories-> и пропиши пути к папке units в там где unit directories Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
:yes: Или брось Graph.TPU в текущую папку (я всегда так делаю...)
|
SeRGuSii |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Репутация: ![]() ![]() ![]() |
to klem4, делал не помогло.
volvo спасибо, теперь работает. ---------- Посмотрите задачку что-то упустил в создании модуля, не инициализируется. Модуль включает подпрограмму обработки массива: ввод массива, вывод массива в графическом режиме, проверка упоряд на возрастание, на убывание, сортировка массива, поиск заданного элемента.
unit obrmasiv;
interface
const
n=5;
type
TElem = integer;
mass = array[1..n] of TElem;
implementation
uses crt,Graph;
procedure inputmas (a:mass);
var i:integer;
begin
for i:=1 to n do begin
write('a[',i,']= ');
read(a[i]);
end;
end;
procedure outputmas (a:mass);
var i:integer;
begin
for i:=1 to n do begin
write(a[i],' ')
end;
end;
function yp(a:mass): boolean;
var i:integer;
p:boolean; p1:boolean;
begin
p:=true;
p1:=true;
for i:=1 to n-1 do
begin
p:=p and (a[i] > a[i+1]);
p1:=p1 and (a[i] < a[i+1]);
end;
yp:=p or p1;
end;
end.
procedure sort(a:mass);
var c:integer;
begin
for i:=2 to n do
begin
c:=a[i-1];a[i-1]:=a[i];a[i]:=c;
end
end;
uses obrmasiv;
const n=5;
var a: array [1..n] of integer;
i:integer;
begin
inputmas(a);
if yp then writeln('yp') else writeln('neyp');
sort(a);
outputmas(a);
end.
и какбы по красивее её вывести в графическом режиме |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Смотри, что происходит:
1. Ты определил реализацию функций и процедур в модуле, но не описАл их как внешние, то есть вызывающая программа о них не знает... 2. Процедура sort описана после завершающей точки - это запрещено. Компилятор просто не знает о ее существовании... ( плюс к этому в sort была небольшая ошибка - не описана переменная i ) 3. Более опасное: в модуле у тебя определен тип Type
TElem = integer;
mass = array[1..n] of TElem;
{ и затем : }
procedure inputmas (a:mass);
ты попытался описАть переменную такого же типа в основной программе и передать ее как параметр в процедуру... Нет !!! Нельзя этого делать. По правилу совместимости типов эти 2 типа будут считаться разными, и естественно вылетит ошибка. Нужно использовать ранее определенный в модуле тип... Вот правильный вариант 2-х файлов (работоспособность не проверял, но компиляцию проходят ![]() obrmasiv.pas unit obrmasiv;
interface
const
n=5;
type
TElem = integer;
mass = array[1..n] of TElem;
procedure inputmas (a:mass);
procedure outputmas (a:mass);
function yp(a:mass): boolean;
procedure sort(a:mass);
implementation
uses crt,Graph;
procedure inputmas (a:mass);
var i:integer;
begin
for i:=1 to n do begin
write('a[',i,']= ');
read(a[i]);
end;
end;
procedure outputmas (a:mass);
var i:integer;
begin
for i:=1 to n do begin
write(a[i],' ')
end;
end;
function yp(a:mass): boolean;
var
i:integer;
p:boolean; p1:boolean;
begin
p:=true;
p1:=true;
for i:=1 to n-1 do begin
p:=p and (a[i] > a[i+1]);
p1:=p1 and (a[i] < a[i+1]);
end;
yp:=p or p1;
end;
procedure sort(a:mass);
var
c:integer;
i:integer;
begin
for i:=2 to n do begin
c:=a[i-1];a[i-1]:=a[i];a[i]:=c;
end
end;
end.
Файл main.pas uses obrmasiv;
var
a: mass;
i:integer;
begin
inputmas(a);
if yp(a) then writeln('yp') else writeln('neyp');
sort(a);
outputmas(a);
end.
Кстати, зачем тебе Graph, он же нигде не используется? Или ты хочешь перенести это в графику? Я бы не советовал, смысл какой? Разными цветами можно и в текстовом режиме вывести... ![]() |
SeRGuSii |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, не всеравно не стартует, а graph был нужен чтобы красиво вывести массив
|
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Распакуй архив, открой main.pas и в меню компилятора выбери НЕ Compile (Alt+F9) а Make (F9)... Я программы без проверки не выкладываю... Раз я сказал, что компилируется, значит она компилируется и запускается... (По крайней мере первый шаг в пошаговом режиме делается)...
Прикрепленные файлы ![]() |
SeRGuSii |
![]()
Сообщение
#12
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да ты прав она запускается, это я с путями намудрил. Правда еще проблемы остались массив вводит, но элементы не запоминает, выводит нулевой массив
|
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Цитата(SeRGuSii @ 1.06.05 11:59) еще проблемы остались массив вводит, но элементы не запоминает, выводит нулевой массив Правильно... У тебя в модуле процедура ввода массива как определена? Вот так: procedure inputmas (a:mass);
а это значит что результаты работы процедуры в вызывающую программу не вернутся... Поменяй на procedure inputmas (var a:mass);
(только не забудь, и в секции Interface и в Implementation) То же самое - в сортировке (ты там вообще чего-то намудрил, я поменял то что было на простейший алгоритм "пузырька"): procedure sort(var a:mass);
var
T:integer;
i, j:integer;
begin
For i := 1 To n Do
For j := n DownTo i+1 Do
If a[j - 1] > a[j] Then Begin
T := a[j - 1]; a[j - 1] := a[j]; a[j] := T
End
end;
не забудь про Var... |
SeRGuSii |
![]()
Сообщение
#14
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Репутация: ![]() ![]() ![]() |
ок, еще раз СПАСИБО !
|
![]() ![]() |
![]() |
Текстовая версия | 22.04.2025 19:57 |