petria742
?>

Чем отличается динамическая типизация от строгой? если можно, то объясните на простом языке.

Информатика

Ответы

Vladimir
Динамическая типизация означает, что во время выполнения программы переменные могут принимать различные значения, например, сначала быть целочисленной, потом строковой, потом натуральной переменной. В языках со строгой типизацией такого сделать нельзя. Программа с самого начала выделяет некоторую область памяти под хранение значения и определяет, что это будет, строка, целое значение или натуральное.

Например, python - это язык с динамической типизацией. В одной программе можно сделать один за другим такие присваивания:
а=256
а="кукареку", то есть программа сначала будет хранить в переменной целое число 256, а потом поменяем его на строку "кукареку".

Pascal же язык со строгой типизацией. Для хранения чисел там надо выделить одни переменные, а для хранения строк - другие:
var
a, b : integer;
c : string;
begin
a:=256;
b:=12;
c:="hello"

Вот так.
Alekseevna1811

Так как язык не указан, приведу пример на SWI-Prolog.

Код:

read_int(Int) :- read(Int), integer(Int).split_int_by_numbers(0, []) :- !.split_int_by_numbers(N, [Number|Ints]) :- Number is mod(N, 10), RestN is div(N, 10), split_int_by_numbers(RestN, Ints).test_to_div(_, []).test_to_div(N, [Number|Ints]) :- mod(N, Number) =:= 0, test_to_div(N, Ints). test(Int) :- split_int_by_numbers(Int, Numbers), test_to_div(Int, Numbers), write(Int), write(" - Yes!"), nl.test(Int) :- write(Int), write(" - No!"), nl.?- read_int(Int), test(Int).
Напишите программу: С клавиатуры вводится трёхзначное число (число десятков и число единиц не равна
Напишите программу: С клавиатуры вводится трёхзначное число (число десятков и число единиц не равна
Напишите программу: С клавиатуры вводится трёхзначное число (число десятков и число единиц не равна
ehrik-ch
1. В "реальном мире" это решается примерно так:

// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
begin
  var a:=ArrRandom(ReadInteger('n='),0,2); a.Println;
  a.Sorted.Println
end.

Тестовое решение:
n= 15
1 2 0 2 2 0 2 0 2 0 0 1 0 0 2
0 0 0 0 0 0 0 1 1 2 2 2 2 2 2

2. Но, поскольку считается, что школьникам больше заняться нечем, их заставляют писать примерно в таком стиле (и время займет, и ощибок понаделают):

// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
const
  nn=100;
var
  i,j,n,t:integer;
  a:array[1..nn] of integer;
begin
  Write('n='); Read(n);
  Randomize;
  for i:=1 to n do begin
    a[i]:=Random(3);
    Write(a[i],' ')
    end;
  Writeln;
  for i:=1 to n-1 do
    for j:=1 to n-1 do
      if a[j]>a[j+1] then begin
        t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t
        end;
  for i:=1 to n do Write(a[i],' ');
  Writeln;
end.

Тестовое решение:
n=15
0 1 1 0 2 1 0 2 1 2 1 0 0 2 0
0 0 0 0 0 0 1 1 1 1 1 2 2 2 2

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Чем отличается динамическая типизация от строгой? если можно, то объясните на простом языке.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

borisowaew
petr2077
vasinam
dmitriyb1
sredova71121
Носов Тоноян
Алексеевна
gulnaradjhumabaeva123
Vladimirovna1370
Feyruz90
Railyan
Девяткина_Арсений
musaevartur
Египтян2004
Хохлов