powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / вопрос из области информатики старших классов
15 сообщений из 15, страница 1 из 1
вопрос из области информатики старших классов
    #39833717
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на сколько важно после объявления переменной её инициализировать

первый текст

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var 
 i:integer;
begin
//инициализация
 i:=0;
//далее текст
 if a=b then i:=15 else 
 if a=c then i:=25 else
  i:=0;
end;



или без инициализации

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
var 
 i:integer;
begin
//далее текст
 if a=b then i:=15 else 
 if a=c then i:=25 else
  i:=0;
end;



почему второй текст без инициализации плохой?
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833721
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы сказал, что оба текста одинаково плохи, и оптимизатор просто-напросто уберёт и переменную, и текст, и процедуру в целом. Что же касается варианта с инициализацией, то в современных тенденциях плох как раз он (компилятор напишет хинт о лишнем присваивании), но в старые времена дебилов тренировали писать такие начальные присваивания из-за того, что при последующем сопровождении "текст" может измениться и неинициализированное значение переменной пойдёт дальше, в текст2, текст3 итд.
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833723
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

в первом способе последний Else лишний. Так что вопрос о том, какой текст лучше: спорный
Для мелких процедур и функций пофиг.
А вот, где много кода, можно что-то упустить, и получить Exception.
Правда, имеет место быть следующее мнение: все что больше 30 строчек кода - это плохо и нужно дробить дальше...
Итого: первый метод лучше второго тем, что приучает всегда обезопасить свой код.
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833797
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerasimenkoпервый метод лучше второго тем, что приучает всегда обезопасить свой код.

согласен.

суть не про текст далее после инициализации и лишнего else, всё чуть сложнее, просто спор иногда случается среди разных поколений, мнение ваше интересно
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833799
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

Инициализировать переменные на стеке нужно в тех случаях, когда переменная не является управляемой компилятором.
например, строки, динамические массивы - их не надо инициализировать - это уже сделал компилятор за вас, вставив нужный код в начало процедуры.
А вот всякие там числа - надо.
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833836
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747Инициализировать переменные на стеке нужно в тех случаях, когда переменная не является управляемой компилятором.
например, строки, динамические массивы - их не надо инициализировать - это уже сделал компилятор за вас, вставив нужный код в начало процедуры.
А вот всякие там числа - надо.
Тут играем, тут не играем, тут рыбу заворачивали ... (с)

Давно пора бы уже было вставить в компилятор инициализацию всего, как полей объектов или глобальных переменных.
Какая-то детская экономия на производительности.
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833839
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747,

В данном конкретном случае - пофиг, инициирована переменная или нет - с тем, чему она там равна никаких операций не выполняется и от ее изначального значения ничего не зависит.
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833841
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисТут играем, тут не играем, тут рыбу заворачивали ... (с)

Давно пора бы уже было вставить в компилятор инициализацию всего, как полей объектов или глобальных переменных.
Какая-то детская экономия на производительности.Сделай запрос на quality.
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833843
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63мнение ваше интересноЯ не инициализирую. А присваиваю значение в том месте, где это нужно.

Исключение, когда одно значение присваивается несколько раз
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if a = b then begin
  if p = q then
    i := 1
  else
    i := 0;
end else if a > b then begin
  if x = y then
    i := 2
  else
    i := 0;
end else
  i := 0;

такой код я пишу так
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
i := 0;
if a = b then begin
  if p = q then
    i := 1;
end else if a > b then begin
  if x = y then
    i := 2
end;

ну и всегда смотрю на предупреждения компилятора
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833861
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно для тех, кто в танке. В Дельфях, если явно не присваивать переменную нулю, чему она будет равна?
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833862
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чему угодно
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833866
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIА можно для тех, кто в танке. В Дельфях, если явно не присваивать переменную нулю, чему она будет равна?
Смотря какая. Глобальная - нулю. Управляемого типа - пустому значению соответствующего типа. Локальная неуправляемая - мусору, который оказался в этой ячейке памяти.
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833893
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

в примере ТС это локальная неуправляемая? А по-научному как это - управляемая, неуправляемая?

ИМХО, язык должен сам инициализировать переменную в ноль, если другое не указано. Не важно глобальная, локальная, местная...
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833898
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIА по-научному как это - управляемая, неуправляемая?Managed Types
KreatorXXIИМХО, язык должен сам инициализировать переменную в нольБоль
...
Рейтинг: 0 / 0
вопрос из области информатики старших классов
    #39833920
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_KreatorXXIА по-научному как это - управляемая, неуправляемая?Managed Types
KreatorXXIИМХО, язык должен сам инициализировать переменную в нольБоль
Да уж. Ассемблеры придумали Дураки!
Переходишь по адресу, а там хрень инициализированная.
________
Из опыта работы с Pascal 2000 UW на IBM/370
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / вопрос из области информатики старших классов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]