Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с Паскалем (маленький вопрос)
 
 автор: Ziq   (24.11.2006 в 01:22)   письмо автору
 
 

Вот код приложения (учебный)

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S-,T-,V+,X+}

program test;
  var i:integer;

  procedure ss;
    var pp:integer;
  begin
    writeln(pp);
  end;

begin
ss;
readln(i);
end.

Результат выполнения 340
Если убрать

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S-,T-,V+,X+}

то результат 4941.

Откуда эти цифры взялись? Как исправить помогите, пожалуйста!

   
 
 автор: Trianon   (24.11.2006 в 09:50)   письмо автору
 
   для: Ziq   (24.11.2006 в 01:22)
 

Поскольку переменной pp не присвоено никакого значения, Вы выводите мусор, находящийся в памяти. Стоит ли удивляться непредсказуемости результатов?

   
 
 автор: Ziq   (24.11.2006 в 10:15)   письмо автору
 
   для: Trianon   (24.11.2006 в 09:50)
 

1. Почему в основной программе все ок, при тех же условиях?
2. Если процедура будет рекруссивной, то как сделать так, чтобы переменная скидывала свое значение в 0 только в начале программы. Хотя бы алгоритм, без кода. Можно конечно передавать дополнительный параметр первый это запуск или нет, и там все обнулять. Но хотелось бы узнать как делать правильно.

Заранее ОГРОМНОЕ спасибо.

   
 
 автор: Trianon   (24.11.2006 в 10:22)   письмо автору
 
   для: Ziq   (24.11.2006 в 10:15)
 

1. Почему в основной программе все ок, при тех же условиях?
Что именно OK?

2. У рекурсивной процедуры, у каждого вызванного экземпляра своя копия переменных. Собственно, в паскале - у нерекурсивной - тоже. И инициализируют их в большинстве случаев именно руководствуясь входными параметрами.

   
 
 автор: Ziq   (24.11.2006 в 18:10)   письмо автору
 
   для: Trianon   (24.11.2006 в 10:22)
 

> Что именно OK?
Переменная равна нулю, если ей ничего не присваивалось.

Спасибо, вроде разобрался...

Тут еще одна проблема возникла, что если строка будет длиннее 255 символов? Как организовать прием данных из файла? Можно что-то попробовать с массивами сделать... но это что-то больно громоздко. Я думаю в Паскале что-то придумано для этого...

Заранее крайне благодарен всем ответившим. Пишите все, что знаете или догадываетесь... Времени на понимание паскаля - 1 день.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования