Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / вопрос из области информатики старших классов / 15 сообщений из 15, страница 1 из 1
04.07.2019, 10:43
    #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
04.07.2019, 10:50
    #39833721
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос из области информатики старших классов
Я бы сказал, что оба текста одинаково плохи, и оптимизатор просто-напросто уберёт и переменную, и текст, и процедуру в целом. Что же касается варианта с инициализацией, то в современных тенденциях плох как раз он (компилятор напишет хинт о лишнем присваивании), но в старые времена дебилов тренировали писать такие начальные присваивания из-за того, что при последующем сопровождении "текст" может измениться и неинициализированное значение переменной пойдёт дальше, в текст2, текст3 итд.
...
Рейтинг: 0 / 0
04.07.2019, 10:54
    #39833723
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос из области информатики старших классов
yemets63,

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

согласен.

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

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

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

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

Давно пора бы уже было вставить в компилятор инициализацию всего, как полей объектов или глобальных переменных.
Какая-то детская экономия на производительности.Сделай запрос на quality.
...
Рейтинг: 0 / 0
04.07.2019, 14:08
    #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
04.07.2019, 14:32
    #39833861
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос из области информатики старших классов
А можно для тех, кто в танке. В Дельфях, если явно не присваивать переменную нулю, чему она будет равна?
...
Рейтинг: 0 / 0
04.07.2019, 14:32
    #39833862
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос из области информатики старших классов
чему угодно
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.07.2019, 14:48
    #39833866
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос из области информатики старших классов
KreatorXXIА можно для тех, кто в танке. В Дельфях, если явно не присваивать переменную нулю, чему она будет равна?
Смотря какая. Глобальная - нулю. Управляемого типа - пустому значению соответствующего типа. Локальная неуправляемая - мусору, который оказался в этой ячейке памяти.
...
Рейтинг: 0 / 0
04.07.2019, 15:53
    #39833893
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос из области информатики старших классов
softwarer,

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

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


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