Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2014, 19:39   #1
tdsotm
 
Регистрация: 30.10.2014
Сообщений: 9
По умолчанию Помогите разобраться что такое процедура (pascal)

Пытаюсь разобраться что такое процедура, я написал программу для понимания, но она не работает, в чем ошибка?
Код:
procedure input;
var re1,im1,re2,im2:real;
begin
  writeln('vvedite re1 im1 re2 im2'); 
  readln(re1,im1,re2,im2);
end;

procedure output;
var re1,im1,re2,im2:real;
begin
  writeln(re1*2,im1,re2,im2); 
end;

var i:integer;
begin 
 input;
 output;
end.
tdsotm вне форума Ответить с цитированием
Старый 25.12.2014, 19:47   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

Программа не работает, так как переменным не заданы значения перед вычислением. var re1,im1,re2,im2:real; нужно вынести в глобальный блок, убрав из процедур, иначе значения в этих переменных после выхода из процедур не сохраняются, так как они действительно только во время исполнения процедуры.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 25.12.2014, 19:52   #3
tdsotm
 
Регистрация: 30.10.2014
Сообщений: 9
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
Программа не работает, так как переменным не заданы значения перед вычислением. var re1,im1,re2,im2:real; нужно вынести в глобальный блок, убрав из процедур, иначе значения в этих переменных после выхода из процедур не сохраняются, так как они действительно только во время исполнения процедуры.
Можете написать правильный вариант?
tdsotm вне форума Ответить с цитированием
Старый 25.12.2014, 20:32   #4
studen
Пользователь
 
Регистрация: 21.05.2012
Сообщений: 88
По умолчанию

Код:
var re1,im1,re2,im2:real;

procedure input;
begin
  writeln('vvedite re1 im1 re2 im2'); 
  readln(re1,im1,re2,im2);
end;

procedure output;
begin
  writeln(re1*2,im1,re2,im2); 
end;

begin 
 input;
 output;
end.
studen вне форума Ответить с цитированием
Старый 25.12.2014, 20:32   #5
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

Примерно так
Код:
var re1,im1,re2,im2:real;

procedure input;
begin
  writeln('vvedite re1 im1 re2 im2'); 
  readln(re1,im1,re2,im2);
end;

procedure output;
begin
  writeln(re1*2,im1,re2,im2); 
end;

var i:integer;
begin 
 input;
 output;
end.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 26.12.2014, 21:30   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,380
По умолчанию

tdsotm
Цитата:
Пытаюсь разобраться что такое процедура, я написал программу для понимания, но она не работает, в чем ошибка?
Предложенное решение, на мой взгляд, наихудшее с точки зрения поднятого вопроса, да и вообще ...
Код:
var re1,im1,re2,im2:real;

procedure input(var in1, in2, in3, in4 : real);
begin
  writeln('vvedite re1 im1 re2 im2'); 
  readln(in1, in2, in3, in4);
end;

procedure output(out1, out2, out3, out4 : real);
begin
  writeln(out1*2, out2, out3, out4); 
end;

var i:integer;
begin 
 input(re1, im1, re2, im2);
 output(re1, im1, re2, im2);
end.
Вот теперь можно и подумать, почему так лучше, почему использовано волшебное слово var в описании процедуры input и почему его нет в описании второй процедуры, ...
Почему исходный код не работал, почему предложенное выше решение работает, но это не хороший вариант, ...


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo pascal работа с файлами (все сделано, надо разобраться что и где) _4Alex4_ Помощь студентам 4 30.01.2012 00:01
Что такое хорошо, а что такое плохо... EL_MoC Microsoft Office Word 6 14.04.2011 18:49
Задачка на Pascal, объясните, пожалуйста, я тут что -то не могу разобраться. Girlo4ka Помощь студентам 6 28.12.2008 15:02
то такое мастерство в программировании, что такое мастер программист и что он может? Cezar Свободное общение 29 02.06.2007 23:48