Nick245
Это будет слишком просто.
vitaly_l
Как бы ничего не изменилось.
Найдено 24 результата
Re: массивы
Ну да, не более чем 2 byte индекс (2^16=65536), иначе ошибка: слишком большой диапазон у массива.
{$mode objfpc}
type
TA = array [low(word)..high(word)] of integer;
var
a: TA;
i: cardinal;
begin
for i:=low(a) to high(a) do write(a[i],#32);
readln;
end. ...
{$mode objfpc}
type
TA = array [low(word)..high(word)] of integer;
var
a: TA;
i: cardinal;
begin
for i:=low(a) to high(a) do write(a[i],#32);
readln;
end. ...
Re: массивы
Лекс Айрин
Выше я уже писал, что считаю явную инициализацию любых переменных правильным поведением и единственно верным.
Здесь и сейчас рассматривался код из первого поста и особенности его реализации.
vitaly_l
Компилятор вас не может обманывать.
Разработчики позиционируют FPC как максимально ...
Выше я уже писал, что считаю явную инициализацию любых переменных правильным поведением и единственно верным.
Здесь и сейчас рассматривался код из первого поста и особенности его реализации.
vitaly_l
Компилятор вас не может обманывать.
Разработчики позиционируют FPC как максимально ...
Re: массивы
Естественно, этот код в процедуре работать так же не будет, ибо переменные не будут глобальными.
Re: массивы
Как минимум на TP3 без явной инициализации в программном блоке в переменной был мусор.....
Про TP3 не скажу, а такая программа на TP7 выведет на экран нули
program arr;
type
TA = array [1..10] of integer;
var
i: integer;
a: TA;
begin
for i:=low(a) to high(a) do ...
Re: массивы
>> vitaly_l
Исходя из приведённого описания выходит, что "b" глобальная переменная и судя по поведению программы это подтверждается.
Насчёт инициализации переменных: я с этим полностью согласен. Лучше знать с чем имеешь дело, чем не знать.
Исходя из приведённого описания выходит, что "b" глобальная переменная и судя по поведению программы это подтверждается.
Насчёт инициализации переменных: я с этим полностью согласен. Лучше знать с чем имеешь дело, чем не знать.
Re: массивы
Если вы явно не инициализируете глобальную переменную, компилятор устанавливает для нее значение 0.
Это, я так понимаю, было изначально характерно для первых версий Pascal, а дальше, как это часто бывает, начинается песня о совместимости.
Re: массивы
Про настройки компиляции я конечно загнул.
Нашёл такой перевод документации Delphi. Так же это, видимо, справедливо и для Free Pascal Compiler.
Если вы явно не инициализируете глобальную переменную, компилятор устанавливает для нее значение 0. Данные из экземпляров объектов (поля) также ...
Нашёл такой перевод документации Delphi. Так же это, видимо, справедливо и для Free Pascal Compiler.
Если вы явно не инициализируете глобальную переменную, компилятор устанавливает для нее значение 0. Данные из экземпляров объектов (поля) также ...
Re: массивы
Имеется массив [1..10], при чём компилятор при создании этого массива обнуляет все элементы (зависит от настроек компиляции), т.е. если ввести первым 0, то программа скажет, что такое значение уже введено.
Re: массивы
Цикл, repeat ... until, выполнятся до тех пор, пока условие выхода ложно (false).
repeat
// Операторы
until false; // Бесконечный цикл, для выхода необходимо использовать break в теле цикла.
Цикл, repeat ... until - это цикл с пост проверкой условия выполнения (repeat <операторы> until ...
repeat
// Операторы
until false; // Бесконечный цикл, для выхода необходимо использовать break в теле цикла.
Цикл, repeat ... until - это цикл с пост проверкой условия выполнения (repeat <операторы> until ...
- 12.01.2017 19:50:44
- Форум: Книга "Песни о Паскале"
- Тема: Редактирование и вычитка книги
- Ответы: 383
- Просмотры: 571177
Re: Редактирование и вычитка книги
>> Oleg_D
Глава 61. стр.519 Задание Б)
Диапазон массива от 0 до 4096, т.е. 4097 элементов. Следовательно и размер массива в битах будет 65536+16.
Необходимо изменить диапазон [1..4096] или [0..4095].
Глава 61. стр.519 Задание Б)
Код: Выделить всё
TSetArray = array [0..4096] of word; { хранит 65536 бит (4096*16) }Диапазон массива от 0 до 4096, т.е. 4097 элементов. Следовательно и размер массива в битах будет 65536+16.
Необходимо изменить диапазон [1..4096] или [0..4095].
- 06.01.2017 17:23:10
- Форум: Книга "Песни о Паскале"
- Тема: Редактирование и вычитка книги
- Ответы: 383
- Просмотры: 571177
Re: Редактирование и вычитка книги
>> Oleg_D
Глава 57. стр.460
В тексте программы P_57_01 есть небольшой косячок.
procedure ReadData(var F: Text);
var C : Char;p, q : PNode;
begin
Reset(F);
while not Eof(F) do begin
if not Eoln(F) then begin { если строка не пуста }
Read(F, C); { читаем имя страны }
C:=UpCase(C ...
Глава 57. стр.460
В тексте программы P_57_01 есть небольшой косячок.
procedure ReadData(var F: Text);
var C : Char;p, q : PNode;
begin
Reset(F);
while not Eof(F) do begin
if not Eoln(F) then begin { если строка не пуста }
Read(F, C); { читаем имя страны }
C:=UpCase(C ...
- 05.01.2017 14:53:02
- Форум: Книга "Песни о Паскале"
- Тема: Редактирование и вычитка книги
- Ответы: 383
- Просмотры: 571177
Re: Редактирование и вычитка книги
>> Oleg_D
Глава 56. стр.449
А слабо?
А) В Паскале есть встроенная функция по имени MemAvail (от Memory —
«память», Available — «доступный»). Функция возвращает свободный на текущий
момент объем памяти в куче.
В FPC начиная со 2-ой версии MemAvail и MaxAvail отсутствуют (даже в {$mode tp} FPC пишет ...
Глава 56. стр.449
А слабо?
А) В Паскале есть встроенная функция по имени MemAvail (от Memory —
«память», Available — «доступный»). Функция возвращает свободный на текущий
момент объем памяти в куче.
В FPC начиная со 2-ой версии MemAvail и MaxAvail отсутствуют (даже в {$mode tp} FPC пишет ...
- 20.12.2016 22:50:50
- Форум: Книга "Песни о Паскале"
- Тема: Редактирование и вычитка книги
- Ответы: 383
- Просмотры: 571177
Re: Редактирование и вычитка книги
>> Oleg_D
Специально установил DosBox.
Запустил BTP 7.0
В справке от BTP7 присутствуют и low() и high().
Специально установил DosBox.
Запустил BTP 7.0
Код: Выделить всё
type TA = array [0..1] of integer;
var a: TA;
begin
writeln('size of elements: ',sizeof(a[low(a)]));
readln;
end.
В справке от BTP7 присутствуют и low() и high().
