Pull to refresh
14

Химик и программист.

32
Subscribers
Send message
Я же уже спросил:
А зачем такая избыточность — ведь понятно какой тип читает readInt?
Вот и я не понимаю почему Вы игнорируете хорошо известные факты? Что касается «базовых вещей» — иногда вещь только кажется базовой, особенно в такой конвенционной сфере как ЯП. Предвкушаю услышать откровение про «различие между инициализацией переменной и просто присвоением значений». Только потрудитесь дать ссылки на авторитетные источники, а то некоторые Ваши утверждения выше не убеждают.
Нет. Я про
int a = readInt(f);
Знаком. А чем Паскаль здесь плох?
Мне не лень, просто интересны причины такого решения.
Здесь первое упоминание, если я правильно понял, то по-Вашему это объявление. А если не правильно, объясните, pls.
А зачем такая избыточность — ведь понятно какой тип читает readInt?
Вызов процедуры на идеальном языке.
вы путаете с языками, где переменные можно использовать, не объявляя.

По моим наблюдениям здесь нет четкой грани. Например, является ли допустимым такое объявление:

myProc (x0,y0)
1) А если не написать int?:
a = readInt(f);


2) Обработка исключений — не самая простая для школьника тема.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.
«The Zen of Python»


В случае:

b = 1
...
b = 3.14


Явно жду:
1) сообщения, что целому типу нельзя присвоить вещественное значение;
2) что b = 3, т.е. автоматическое преобразование действительного в целый.

Но если каждый раз тип меняется, то при работе над программой такое запутанное получится!
Я не знаю, что такое «по факту», по факту вы не можете обратиться к переменной до того, как она объявлена, так что она нигде заранее не «объявится».


А разве в Питоне переменная не создается автоматически при первом упоминании? Насколько я понял могу написать:
b = 1

И вот объявится целочисленная переменная. А вот что будет, если была уже строка?:
b = 3.14

Ровно поэтому хороший в моём понимании язык не заставляет объявлять переменную до того, как в неё будут записаны данные из файла
А есть языки, которые только при удачном чтении из файла объявляют переменную? А если файл кончился, то не объявляют? (Я не знаю всех языков и в таких деталях).
К сожалению не всегда.
Я же написал:
var
   x1, y1 : real; {координаты 1-ой точки}
   x2, y2 : real; {координаты 2-ой точки}


Если в таком случае школьник обратится к x0 или к y0, то компилятор выдаст ошибку необъявленной переменной.
Выходов м.б. несколько, а еще исключения. В последнем случае при отладке полезно бывает знать, какой результат чуть не настал.
переменной не всегда можно присвоить нормальное разумное значение в начале функции
И не нужно. М.б. я из файла буду в эту переменную читать. Аналогично: результату функции не всегда можно присвоить нормальное разумное значение в начале функции. Почему это Вас не беспокоит?
Выше я уже привел пример:

школьник прочтет координаты первой точки в x1, y1 и координаты второй — в x2, y2. Потом найдет в мат. справочнике формулу, где расстояние дано для точек, координаты которых обозначены (x0, y0) и (x1, y1). Так и перепишет в программу


Остальное — вариации. В первых бейсиках подобные ошибки были очень частыми.
В таком случае остается стандартный сетевой вопрос: «Докажите, что Вы не робот».
Во многих учебниках есть параметры-переменные.

Information

Rating
Does not participate
Registered
Activity