Обучение
November 20, 2022

Школьники и типы

Когда учить школьников типам данных? Тем, что указываются явно?

В ряде языков явного описания типов нет вообще. В Python например:

a = 1
b = 2.0
c = True 

Помимо автоматического выведения типов в Python - динамическая типизация: переменной можно присвоить значение любого типа, и ее тип поменяется.

Языки со статической типизацией, где тип определяется при описании переменной, существенно более эффективны. Однако автовыведение типа также очень удобно для начинающих:

var a := 1;
var b := 2.0;
var c := True; 

и первые занятия основам алгоритмизации так и проходят: переменные описываются только так: без явных типов.

И вот наступает момент сказать правду :) У переменных можно указывать типы явно! В какой момент это сделать.

На наш взгляд - наиболее уместный момент для этого - рассмотрение логического типа boolean:

var a: integer;
var b: real;
var c: boolean;

И здесь сразу необходимо говорить, что тип у переменной - это навсегда - как группа крови. И переменным одного типа обычно нельзя присвоить значения другого типа. Всё это - нельзя:

a := b;
a := c;
b := c;
c := a;
c := b;

И только в одном случае можно:

b := a

Почему так строго? Чтобы исключить в дальнейшем ошибки во время выполнения - те, которые так часто проявляются в Python-программах.

Зачем нужно описание переменных с явным типом в PascalABC.NET? В первую очередь для лучшего понимания кода программы. Во вторую очередь - есть ряд ситуаций, когда без явного описания типа не обойтись:

var (a,b) := ReadInteger2;
var min: integer;
if a<b then
  min := a
else min := b;

Или вот здесь:

var x: integer;
repeat
  x := ReadInteger;
until x = 0;

Заключение. Явные типы для начинающих необязательно вводить сразу. Можно даже достаточно долго обходиться без них. Но наступает момент когда это необходимо. На наш взгляд, этот момент - введение типа данных boolean.