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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2018, 16:09   #1
Kamelok
Пользователь
 
Регистрация: 19.11.2017
Сообщений: 36
По умолчанию Константы. Pascal.

Можетe с делать пример с передачей const-параметров в процедуру (или функцию). И вопрос если её использовать в другой другой подпрограмме её можно изменить, если её не указывать как const. А можно тип данных не указывать?
Код:
procedure Name(const a:real);

Последний раз редактировалось Kamelok; 21.03.2018 в 16:19.
Kamelok вне форума Ответить с цитированием
Старый 21.03.2018, 16:16   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Цитата:
Сообщение от Kamelok Посмотреть сообщение
И вопрос если её использовать в другой другой подпрограмме её можно изменить, если её не указывать как const..
Можно.

Цитата:
Сообщение от Kamelok Посмотреть сообщение
А можно тип данных не указывать?
Real, Integer и т.п ? Нет, это надо указывать.
type_Oleg на форуме Ответить с цитированием
Старый 21.03.2018, 17:04   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от Kamelok Посмотреть сообщение
А можно тип данных не указывать?
Если тип не указан, то типом по умолчанию считается Pointer. Такие параметры передаются только по ссылке (var или const).
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.03.2018, 20:09   #4
Kamelok
Пользователь
 
Регистрация: 19.11.2017
Сообщений: 36
По умолчанию

Возникло пару вопросов можно только писать в функции const или процедурах тоже?
Код:
function One(const Max,Min:real):real;
Почему пишет при запуске процедуры FOUR (неправильный тип параметров подпрограммы) вроде переменные я указал верно, если убрать процедуры four и five всё работает. Что можно добавить для более подробного работы const в процедурах?

Код:
program Contant;

const
  Max = 100;

const
  Min = 50;

function One(const Max, Min: real): real;
begin
 { writeln('Процедура вывода начальных значений констант');}
  writeln(Max);
  writeln(min);
end;

procedure Two(Max, Min: real; var S: real);
begin
 { writeln('Процедура проверки на изменения значения константы');}
  S := 0;
  S := max - min;
  Write('Разность',s);
  writeln;
  Max := Max - 10;
    Write(Max);
    writeln;
  Min := Min + 10;
  write(Min);
  writeln;
end;

procedure three(Max, Min: real);
begin
  {writeln('Процедура проверки после изменения без var');}
  writeln(Max);
  writeln(min);
end;

procedure Four(var Max, Min: real);
begin
  {writeln('Процедура проверки после изменения');}
  Max := 30;
  Min := 10;
  writeln(Max);
  writeln(min);
end;

procedure five(Max, Min: real);
begin
   { writeln('Процедура проверки после изменения c var');}
  writeln(Max);
  writeln(min);
end;

procedure Input(s: real);
begin
  
  begin
    writeln('Процедура вывода начальных значений констант');
    One(Max, Min);
  end;
  begin
    writeln('Процедура проверки на изменения значения константы и вывода их');
    Two(Max, Min, s);
  end;
  begin
    writeln('Процедура проверки после измения в констант предыдущей подпрограмме без var');
    Three(Max, Min);
  end;
  begin
    writeln('Процедура переприсваивание с var');
    Four(Max, Min);
  end;
  begin
    writeln('Процедура проверки после изменения c var');
    Five(Max, Min);
  end;
  
end;


var
  s: real;

begin
  writeln('Что происходит с константами в процедурах');
  Input(s);
end.
Kamelok вне форума Ответить с цитированием
Старый 21.03.2018, 20:51   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

не путай константы и параметры-константы. Слова "const" и "var" в разных местах имеют разный смысл.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.03.2018, 21:39   #6
Kamelok
Пользователь
 
Регистрация: 19.11.2017
Сообщений: 36
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
не путай константы и параметры-константы. Слова "const" и "var" в разных местах имеют разный смысл.
Думаю так будет правильней
Код:
program Contant;

const
  Max = 100;

const
  Min = 50;

function One(const Max, Min: real): real;
begin
 { writeln('Процедура вывода начальных значений констант');}
  writeln(Max);
  writeln(min);
end;

procedure Two(Max, Min: real; var S: real);
begin
 { writeln('Процедура проверки на изменения значения константы');}
  S := 0;
  S := max - min;
  Write('Разность',s);
  writeln;
  Max := Max - 10;
    Write(Max);
    writeln;
  Min := Min + 10;
  write(Min);
  writeln;
end;

procedure Four( Max, Min: real);
begin
  {writeln('Процедура проверки после изменения');}
  Max := 30;
  Min := 10;
  writeln(Max);
  writeln(min);
end;

procedure five(var Max, Min: real);
begin
   { writeln('Процедура проверки после изменения c var');}
  writeln(Max);
  writeln(min);
end;

procedure three(Max, Min: real);
begin
  {writeln('Процедура проверки после изменения без var');}
  writeln(Max);
  writeln(min);
    begin
    writeln('Процедура переприсваивание с var');
    Four(Max, Min);
  end;
  begin
    writeln('Процедура проверки после изменения c var');
    Five(Max, Min);
  end;
end;


procedure Input(s: real);
begin
  
  begin
    writeln('Процедура вывода начальных значений констант');
    One(Max, Min);
  end;
  begin
    writeln('Процедура проверки на изменения значения константы и вывода их');
    Two(Max, Min, s);
  end;
  begin
    writeln('Процедура проверки после измения в констант предыдущей подпрограмме без var');
    Three(Max, Min);
  end;

  
end;


var
  s: real;

begin
  writeln('Что происходит с константами в процедурах');
  Input(s);
end.
Kamelok вне форума Ответить с цитированием
Старый 22.03.2018, 09:52   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Kamelok Посмотреть сообщение
Думаю так будет правильней
что будет правильней то?!

Вы задали КОНСТАНТЫ Min и Max.
Их изменить НЕЛЬЗЯ.
Всё.

что Вы пытаетесь проверить?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.03.2018, 18:16   #8
Kamelok
Пользователь
 
Регистрация: 19.11.2017
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение


Их изменить НЕЛЬЗЯ.
Всё.

что Вы пытаетесь проверить?
Да я хотел проверить можно ли обмануть компилятор, изменив константу в другой под подпрограмме и вызвать в третей. Но я ошибался. Спасибо, что ответили на вопрос.
Kamelok вне форума Ответить с цитированием
Старый 22.03.2018, 19:12   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от Kamelok Посмотреть сообщение
Да я хотел проверить можно ли обмануть компилятор, изменив константу в другой под подпрограмме и вызвать в третей. Но я ошибался. Спасибо, что ответили на вопрос.
А почитать пару страниц книжки?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Циклы и константы romanzi Общие вопросы Delphi 4 24.08.2011 11:36
Константы romantik2011 PHP 1 07.08.2011 06:12
С++ константы Filipa Помощь студентам 2 06.01.2011 00:27
Константы veter48 Общие вопросы C/C++ 10 14.09.2010 21:03
Константы с U, L и F Smarti Общие вопросы C/C++ 5 01.09.2010 23:38